/*
 * Copyright (C) 2015 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include "SdkConstants.h"

#include <algorithm>
#include <string>
#include <unordered_map>
#include <vector>

namespace aapt {

static const char* sDevelopmentSdkCodeName = "O";
static int sDevelopmentSdkLevel = 26;

static const std::vector<std::pair<uint16_t, size_t>> sAttrIdMap = {
    { 0x021c, 1 },
    { 0x021d, 2 },
    { 0x0269, SDK_CUPCAKE },
    { 0x028d, SDK_DONUT },
    { 0x02ad, SDK_ECLAIR },
    { 0x02b3, SDK_ECLAIR_0_1 },
    { 0x02b5, SDK_ECLAIR_MR1 },
    { 0x02bd, SDK_FROYO },
    { 0x02cb, SDK_GINGERBREAD },
    { 0x0361, SDK_HONEYCOMB },
    { 0x0363, SDK_HONEYCOMB_MR1 },
    { 0x0366, SDK_HONEYCOMB_MR2 },
    { 0x03a6, SDK_ICE_CREAM_SANDWICH },
    { 0x03ae, SDK_JELLY_BEAN },
    { 0x03cc, SDK_JELLY_BEAN_MR1 },
    { 0x03da, SDK_JELLY_BEAN_MR2 },
    { 0x03f1, SDK_KITKAT },
    { 0x03f6, SDK_KITKAT_WATCH },
    { 0x04ce, SDK_LOLLIPOP },
};

static bool lessEntryId(const std::pair<uint16_t, size_t>& p, uint16_t entryId) {
    return p.first < entryId;
}

size_t findAttributeSdkLevel(const ResourceId& id) {
    if (id.packageId() != 0x01 && id.typeId() != 0x01) {
        return 0;
    }
    auto iter = std::lower_bound(sAttrIdMap.begin(), sAttrIdMap.end(), id.entryId(), lessEntryId);
    if (iter == sAttrIdMap.end()) {
        return SDK_LOLLIPOP_MR1;
    }
    return iter->second;
}

static const std::unordered_map<std::string, size_t> sAttrMap = {
    { "marqueeRepeatLimit", 2 },
    { "windowNoDisplay", 3 },
    { "backgroundDimEnabled", 3 },
    { "inputType", 3 },
    { "isDefault", 3 },
    { "windowDisablePreview", 3 },
    { "privateImeOptions", 3 },
    { "editorExtras", 3 },
    { "settingsActivity", 3 },
    { "fastScrollEnabled", 3 },
    { "reqTouchScreen", 3 },
    { "reqKeyboardType", 3 },
    { "reqHardKeyboard", 3 },
    { "reqNavigation", 3 },
    { "windowSoftInputMode", 3 },
    { "imeFullscreenBackground", 3 },
    { "noHistory", 3 },
    { "headerDividersEnabled", 3 },
    { "footerDividersEnabled", 3 },
    { "candidatesTextStyleSpans", 3 },
    { "smoothScrollbar", 3 },
    { "reqFiveWayNav", 3 },
    { "keyBackground", 3 },
    { "keyTextSize", 3 },
    { "labelTextSize", 3 },
    { "keyTextColor", 3 },
    { "keyPreviewLayout", 3 },
    { "keyPreviewOffset", 3 },
    { "keyPreviewHeight", 3 },
    { "verticalCorrection", 3 },
    { "popupLayout", 3 },
    { "state_long_pressable", 3 },
    { "keyWidth", 3 },
    { "keyHeight", 3 },
    { "horizontalGap", 3 },
    { "verticalGap", 3 },
    { "rowEdgeFlags", 3 },
    { "codes", 3 },
    { "popupKeyboard", 3 },
    { "popupCharacters", 3 },
    { "keyEdgeFlags", 3 },
    { "isModifier", 3 },
    { "isSticky", 3 },
    { "isRepeatable", 3 },
    { "iconPreview", 3 },
    { "keyOutputText", 3 },
    { "keyLabel", 3 },
    { "keyIcon", 3 },
    { "keyboardMode", 3 },
    { "isScrollContainer", 3 },
    { "fillEnabled", 3 },
    { "updatePeriodMillis", 3 },
    { "initialLayout", 3 },
    { "voiceSearchMode", 3 },
    { "voiceLanguageModel", 3 },
    { "voicePromptText", 3 },
    { "voiceLanguage", 3 },
    { "voiceMaxResults", 3 },
    { "bottomOffset", 3 },
    { "topOffset", 3 },
    { "allowSingleTap", 3 },
    { "handle", 3 },
    { "content", 3 },
    { "animateOnClick", 3 },
    { "configure", 3 },
    { "hapticFeedbackEnabled", 3 },
    { "innerRadius", 3 },
    { "thickness", 3 },
    { "sharedUserLabel", 3 },
    { "dropDownWidth", 3 },
    { "dropDownAnchor", 3 },
    { "imeOptions", 3 },
    { "imeActionLabel", 3 },
    { "imeActionId", 3 },
    { "imeExtractEnterAnimation", 3 },
    { "imeExtractExitAnimation", 3 },
    { "tension", 4 },
    { "extraTension", 4 },
    { "anyDensity", 4 },
    { "searchSuggestThreshold", 4 },
    { "includeInGlobalSearch", 4 },
    { "onClick", 4 },
    { "targetSdkVersion", 4 },
    { "maxSdkVersion", 4 },
    { "testOnly", 4 },
    { "contentDescription", 4 },
    { "gestureStrokeWidth", 4 },
    { "gestureColor", 4 },
    { "uncertainGestureColor", 4 },
    { "fadeOffset", 4 },
    { "fadeDuration", 4 },
    { "gestureStrokeType", 4 },
    { "gestureStrokeLengthThreshold", 4 },
    { "gestureStrokeSquarenessThreshold", 4 },
    { "gestureStrokeAngleThreshold", 4 },
    { "eventsInterceptionEnabled", 4 },
    { "fadeEnabled", 4 },
    { "backupAgent", 4 },
    { "allowBackup", 4 },
    { "glEsVersion", 4 },
    { "queryAfterZeroResults", 4 },
    { "dropDownHeight", 4 },
    { "smallScreens", 4 },
    { "normalScreens", 4 },
    { "largeScreens", 4 },
    { "progressBarStyleInverse", 4 },
    { "progressBarStyleSmallInverse", 4 },
    { "progressBarStyleLargeInverse", 4 },
    { "searchSettingsDescription", 4 },
    { "textColorPrimaryInverseDisableOnly", 4 },
    { "autoUrlDetect", 4 },
    { "resizeable", 4 },
    { "required", 5 },
    { "accountType", 5 },
    { "contentAuthority", 5 },
    { "userVisible", 5 },
    { "windowShowWallpaper", 5 },
    { "wallpaperOpenEnterAnimation", 5 },
    { "wallpaperOpenExitAnimation", 5 },
    { "wallpaperCloseEnterAnimation", 5 },
    { "wallpaperCloseExitAnimation", 5 },
    { "wallpaperIntraOpenEnterAnimation", 5 },
    { "wallpaperIntraOpenExitAnimation", 5 },
    { "wallpaperIntraCloseEnterAnimation", 5 },
    { "wallpaperIntraCloseExitAnimation", 5 },
    { "supportsUploading", 5 },
    { "killAfterRestore", 5 },
    { "restoreNeedsApplication", 5 },
    { "smallIcon", 5 },
    { "accountPreferences", 5 },
    { "textAppearanceSearchResultSubtitle", 5 },
    { "textAppearanceSearchResultTitle", 5 },
    { "summaryColumn", 5 },
    { "detailColumn", 5 },
    { "detailSocialSummary", 5 },
    { "thumbnail", 5 },
    { "detachWallpaper", 5 },
    { "finishOnCloseSystemDialogs", 5 },
    { "scrollbarFadeDuration", 5 },
    { "scrollbarDefaultDelayBeforeFade", 5 },
    { "fadeScrollbars", 5 },
    { "colorBackgroundCacheHint", 5 },
    { "dropDownHorizontalOffset", 5 },
    { "dropDownVerticalOffset", 5 },
    { "quickContactBadgeStyleWindowSmall", 6 },
    { "quickContactBadgeStyleWindowMedium", 6 },
    { "quickContactBadgeStyleWindowLarge", 6 },
    { "quickContactBadgeStyleSmallWindowSmall", 6 },
    { "quickContactBadgeStyleSmallWindowMedium", 6 },
    { "quickContactBadgeStyleSmallWindowLarge", 6 },
    { "author", 7 },
    { "autoStart", 7 },
    { "expandableListViewWhiteStyle", 8 },
    { "installLocation", 8 },
    { "vmSafeMode", 8 },
    { "webTextViewStyle", 8 },
    { "restoreAnyVersion", 8 },
    { "tabStripLeft", 8 },
    { "tabStripRight", 8 },
    { "tabStripEnabled", 8 },
    { "logo", 9 },
    { "xlargeScreens", 9 },
    { "immersive", 9 },
    { "overScrollMode", 9 },
    { "overScrollHeader", 9 },
    { "overScrollFooter", 9 },
    { "filterTouchesWhenObscured", 9 },
    { "textSelectHandleLeft", 9 },
    { "textSelectHandleRight", 9 },
    { "textSelectHandle", 9 },
    { "textSelectHandleWindowStyle", 9 },
    { "popupAnimationStyle", 9 },
    { "screenSize", 9 },
    { "screenDensity", 9 },
    { "allContactsName", 11 },
    { "windowActionBar", 11 },
    { "actionBarStyle", 11 },
    { "navigationMode", 11 },
    { "displayOptions", 11 },
    { "subtitle", 11 },
    { "customNavigationLayout", 11 },
    { "hardwareAccelerated", 11 },
    { "measureWithLargestChild", 11 },
    { "animateFirstView", 11 },
    { "dropDownSpinnerStyle", 11 },
    { "actionDropDownStyle", 11 },
    { "actionButtonStyle", 11 },
    { "showAsAction", 11 },
    { "previewImage", 11 },
    { "actionModeBackground", 11 },
    { "actionModeCloseDrawable", 11 },
    { "windowActionModeOverlay", 11 },
    { "valueFrom", 11 },
    { "valueTo", 11 },
    { "valueType", 11 },
    { "propertyName", 11 },
    { "ordering", 11 },
    { "fragment", 11 },
    { "windowActionBarOverlay", 11 },
    { "fragmentOpenEnterAnimation", 11 },
    { "fragmentOpenExitAnimation", 11 },
    { "fragmentCloseEnterAnimation", 11 },
    { "fragmentCloseExitAnimation", 11 },
    { "fragmentFadeEnterAnimation", 11 },
    { "fragmentFadeExitAnimation", 11 },
    { "actionBarSize", 11 },
    { "imeSubtypeLocale", 11 },
    { "imeSubtypeMode", 11 },
    { "imeSubtypeExtraValue", 11 },
    { "splitMotionEvents", 11 },
    { "listChoiceBackgroundIndicator", 11 },
    { "spinnerMode", 11 },
    { "animateLayoutChanges", 11 },
    { "actionBarTabStyle", 11 },
    { "actionBarTabBarStyle", 11 },
    { "actionBarTabTextStyle", 11 },
    { "actionOverflowButtonStyle", 11 },
    { "actionModeCloseButtonStyle", 11 },
    { "titleTextStyle", 11 },
    { "subtitleTextStyle", 11 },
    { "iconifiedByDefault", 11 },
    { "actionLayout", 11 },
    { "actionViewClass", 11 },
    { "activatedBackgroundIndicator", 11 },
    { "state_activated", 11 },
    { "listPopupWindowStyle", 11 },
    { "popupMenuStyle", 11 },
    { "textAppearanceLargePopupMen", 11 },
    { "textAppearanceSmallPopupMen", 11 },
    { "breadCrumbTitle", 11 },
    { "breadCrumbShortTitle", 11 },
    { "listDividerAlertDialog", 11 },
    { "textColorAlertDialogListItem", 11 },
    { "loopViews", 11 },
    { "dialogTheme", 11 },
    { "alertDialogTheme", 11 },
    { "dividerVertical", 11 },
    { "homeAsUpIndicator", 11 },
    { "enterFadeDuration", 11 },
    { "exitFadeDuration", 11 },
    { "selectableItemBackground", 11 },
    { "autoAdvanceViewId", 11 },
    { "useIntrinsicSizeAsMinimum", 11 },
    { "actionModeCutDrawable", 11 },
    { "actionModeCopyDrawable", 11 },
    { "actionModePasteDrawable", 11 },
    { "textEditPasteWindowLayout", 11 },
    { "textEditNoPasteWindowLayout", 11 },
    { "textIsSelectable", 11 },
    { "windowEnableSplitTouch", 11 },
    { "indeterminateProgressStyle", 11 },
    { "progressBarPadding", 11 },
    { "animationResolution", 11 },
    { "state_accelerated", 11 },
    { "baseline", 11 },
    { "homeLayout", 11 },
    { "opacity", 11 },
    { "alpha", 11 },
    { "transformPivotX", 11 },
    { "transformPivotY", 11 },
    { "translationX", 11 },
    { "translationY", 11 },
    { "scaleX", 11 },
    { "scaleY", 11 },
    { "rotation", 11 },
    { "rotationX", 11 },
    { "rotationY", 11 },
    { "showDividers", 11 },
    { "dividerPadding", 11 },
    { "borderlessButtonStyle", 11 },
    { "dividerHorizontal", 11 },
    { "itemPadding", 11 },
    { "buttonBarStyle", 11 },
    { "buttonBarButtonStyle", 11 },
    { "segmentedButtonStyle", 11 },
    { "staticWallpaperPreview", 11 },
    { "allowParallelSyncs", 11 },
    { "isAlwaysSyncable", 11 },
    { "verticalScrollbarPosition", 11 },
    { "fastScrollAlwaysVisible", 11 },
    { "fastScrollThumbDrawable", 11 },
    { "fastScrollPreviewBackgroundLeft", 11 },
    { "fastScrollPreviewBackgroundRight", 11 },
    { "fastScrollTrackDrawable", 11 },
    { "fastScrollOverlayPosition", 11 },
    { "customTokens", 11 },
    { "nextFocusForward", 11 },
    { "firstDayOfWeek", 11 },
    { "showWeekNumber", 11 },
    { "minDate", 11 },
    { "maxDate", 11 },
    { "shownWeekCount", 11 },
    { "selectedWeekBackgroundColor", 11 },
    { "focusedMonthDateColor", 11 },
    { "unfocusedMonthDateColor", 11 },
    { "weekNumberColor", 11 },
    { "weekSeparatorLineColor", 11 },
    { "selectedDateVerticalBar", 11 },
    { "weekDayTextAppearance", 11 },
    { "dateTextAppearance", 11 },
    { "solidColor", 11 },
    { "spinnersShown", 11 },
    { "calendarViewShown", 11 },
    { "state_multiline", 11 },
    { "detailsElementBackground", 11 },
    { "textColorHighlightInverse", 11 },
    { "textColorLinkInverse", 11 },
    { "editTextColor", 11 },
    { "editTextBackground", 11 },
    { "horizontalScrollViewStyle", 11 },
    { "layerType", 11 },
    { "alertDialogIcon", 11 },
    { "windowMinWidthMajor", 11 },
    { "windowMinWidthMinor", 11 },
    { "queryHint", 11 },
    { "fastScrollTextColor", 11 },
    { "largeHeap", 11 },
    { "windowCloseOnTouchOutside", 11 },
    { "datePickerStyle", 11 },
    { "calendarViewStyle", 11 },
    { "textEditSidePasteWindowLayout", 11 },
    { "textEditSideNoPasteWindowLayout", 11 },
    { "actionMenuTextAppearance", 11 },
    { "actionMenuTextColor", 11 },
    { "textCursorDrawable", 12 },
    { "resizeMode", 12 },
    { "requiresSmallestWidthDp", 12 },
    { "compatibleWidthLimitDp", 12 },
    { "largestWidthLimitDp", 12 },
    { "state_hovered", 13 },
    { "state_drag_can_accept", 13 },
    { "state_drag_hovered", 13 },
    { "stopWithTask", 13 },
    { "switchTextOn", 13 },
    { "switchTextOff", 13 },
    { "switchPreferenceStyle", 13 },
    { "switchTextAppearance", 13 },
    { "track", 13 },
    { "switchMinWidth", 13 },
    { "switchPadding", 13 },
    { "thumbTextPadding", 13 },
    { "textSuggestionsWindowStyle", 13 },
    { "textEditSuggestionItemLayout", 13 },
    { "rowCount", 13 },
    { "rowOrderPreserved", 13 },
    { "columnCount", 13 },
    { "columnOrderPreserved", 13 },
    { "useDefaultMargins", 13 },
    { "alignmentMode", 13 },
    { "layout_row", 13 },
    { "layout_rowSpan", 13 },
    { "layout_columnSpan", 13 },
    { "actionModeSelectAllDrawable", 13 },
    { "isAuxiliary", 13 },
    { "accessibilityEventTypes", 13 },
    { "packageNames", 13 },
    { "accessibilityFeedbackType", 13 },
    { "notificationTimeout", 13 },
    { "accessibilityFlags", 13 },
    { "canRetrieveWindowContent", 13 },
    { "listPreferredItemHeightLarge", 13 },
    { "listPreferredItemHeightSmall", 13 },
    { "actionBarSplitStyle", 13 },
    { "actionProviderClass", 13 },
    { "backgroundStacked", 13 },
    { "backgroundSplit", 13 },
    { "textAllCaps", 13 },
    { "colorPressedHighlight", 13 },
    { "colorLongPressedHighlight", 13 },
    { "colorFocusedHighlight", 13 },
    { "colorActivatedHighlight", 13 },
    { "colorMultiSelectHighlight", 13 },
    { "drawableStart", 13 },
    { "drawableEnd", 13 },
    { "actionModeStyle", 13 },
    { "minResizeWidth", 13 },
    { "minResizeHeight", 13 },
    { "actionBarWidgetTheme", 13 },
    { "uiOptions", 13 },
    { "subtypeLocale", 13 },
    { "subtypeExtraValue", 13 },
    { "actionBarDivider", 13 },
    { "actionBarItemBackground", 13 },
    { "actionModeSplitBackground", 13 },
    { "textAppearanceListItem", 13 },
    { "textAppearanceListItemSmall", 13 },
    { "targetDescriptions", 13 },
    { "directionDescriptions", 13 },
    { "overridesImplicitlyEnabledSubtype", 13 },
    { "listPreferredItemPaddingLeft", 13 },
    { "listPreferredItemPaddingRight", 13 },
    { "requiresFadingEdge", 13 },
    { "publicKey", 13 },
    { "parentActivityName", 16 },
    { "isolatedProcess", 16 },
    { "importantForAccessibility", 16 },
    { "keyboardLayout", 16 },
    { "fontFamily", 16 },
    { "mediaRouteButtonStyle", 16 },
    { "mediaRouteTypes", 16 },
    { "supportsRtl", 17 },
    { "textDirection", 17 },
    { "textAlignment", 17 },
    { "layoutDirection", 17 },
    { "paddingStart", 17 },
    { "paddingEnd", 17 },
    { "layout_marginStart", 17 },
    { "layout_marginEnd", 17 },
    { "layout_toStartOf", 17 },
    { "layout_toEndOf", 17 },
    { "layout_alignStart", 17 },
    { "layout_alignEnd", 17 },
    { "layout_alignParentStart", 17 },
    { "layout_alignParentEnd", 17 },
    { "listPreferredItemPaddingStart", 17 },
    { "listPreferredItemPaddingEnd", 17 },
    { "singleUser", 17 },
    { "presentationTheme", 17 },
    { "subtypeId", 17 },
    { "initialKeyguardLayout", 17 },
    { "widgetCategory", 17 },
    { "permissionGroupFlags", 17 },
    { "labelFor", 17 },
    { "permissionFlags", 17 },
    { "checkedTextViewStyle", 17 },
    { "showOnLockScreen", 17 },
    { "format12Hour", 17 },
    { "format24Hour", 17 },
    { "timeZone", 17 },
    { "mipMap", 18 },
    { "mirrorForRtl", 18 },
    { "windowOverscan", 18 },
    { "requiredForAllUsers", 18 },
    { "indicatorStart", 18 },
    { "indicatorEnd", 18 },
    { "childIndicatorStart", 18 },
    { "childIndicatorEnd", 18 },
    { "restrictedAccountType", 18 },
    { "requiredAccountType", 18 },
    { "canRequestTouchExplorationMode", 18 },
    { "canRequestEnhancedWebAccessibility", 18 },
    { "canRequestFilterKeyEvents", 18 },
    { "layoutMode", 18 },
    { "keySet", 19 },
    { "targetId", 19 },
    { "fromScene", 19 },
    { "toScene", 19 },
    { "transition", 19 },
    { "transitionOrdering", 19 },
    { "fadingMode", 19 },
    { "startDelay", 19 },
    { "ssp", 19 },
    { "sspPrefix", 19 },
    { "sspPattern", 19 },
    { "addPrintersActivity", 19 },
    { "vendor", 19 },
    { "category", 19 },
    { "isAsciiCapable", 19 },
    { "autoMirrored", 19 },
    { "supportsSwitchingToNextInputMethod", 19 },
    { "requireDeviceUnlock", 19 },
    { "apduServiceBanner", 19 },
    { "accessibilityLiveRegion", 19 },
    { "windowTranslucentStatus", 19 },
    { "windowTranslucentNavigation", 19 },
    { "advancedPrintOptionsActivity", 19 },
    { "banner", 20 },
    { "windowSwipeToDismiss", 20 },
    { "isGame", 20 },
    { "allowEmbedded", 20 },
    { "setupActivity", 20 },
    { "fastScrollStyle", 21 },
    { "windowContentTransitions", 21 },
    { "windowContentTransitionManager", 21 },
    { "translationZ", 21 },
    { "tintMode", 21 },
    { "controlX1", 21 },
    { "controlY1", 21 },
    { "controlX2", 21 },
    { "controlY2", 21 },
    { "transitionName", 21 },
    { "transitionGroup", 21 },
    { "viewportWidth", 21 },
    { "viewportHeight", 21 },
    { "fillColor", 21 },
    { "pathData", 21 },
    { "strokeColor", 21 },
    { "strokeWidth", 21 },
    { "trimPathStart", 21 },
    { "trimPathEnd", 21 },
    { "trimPathOffset", 21 },
    { "strokeLineCap", 21 },
    { "strokeLineJoin", 21 },
    { "strokeMiterLimit", 21 },
    { "colorControlNormal", 21 },
    { "colorControlActivated", 21 },
    { "colorButtonNormal", 21 },
    { "colorControlHighlight", 21 },
    { "persistableMode", 21 },
    { "titleTextAppearance", 21 },
    { "subtitleTextAppearance", 21 },
    { "slideEdge", 21 },
    { "actionBarTheme", 21 },
    { "textAppearanceListItemSecondary", 21 },
    { "colorPrimary", 21 },
    { "colorPrimaryDark", 21 },
    { "colorAccent", 21 },
    { "nestedScrollingEnabled", 21 },
    { "windowEnterTransition", 21 },
    { "windowExitTransition", 21 },
    { "windowSharedElementEnterTransition", 21 },
    { "windowSharedElementExitTransition", 21 },
    { "windowAllowReturnTransitionOverlap", 21 },
    { "windowAllowEnterTransitionOverlap", 21 },
    { "sessionService", 21 },
    { "stackViewStyle", 21 },
    { "switchStyle", 21 },
    { "elevation", 21 },
    { "excludeId", 21 },
    { "excludeClass", 21 },
    { "hideOnContentScroll", 21 },
    { "actionOverflowMenuStyle", 21 },
    { "documentLaunchMode", 21 },
    { "maxRecents", 21 },
    { "autoRemoveFromRecents", 21 },
    { "stateListAnimator", 21 },
    { "toId", 21 },
    { "fromId", 21 },
    { "reversible", 21 },
    { "splitTrack", 21 },
    { "targetName", 21 },
    { "excludeName", 21 },
    { "matchOrder", 21 },
    { "windowDrawsSystemBarBackgrounds", 21 },
    { "statusBarColor", 21 },
    { "navigationBarColor", 21 },
    { "contentInsetStart", 21 },
    { "contentInsetEnd", 21 },
    { "contentInsetLeft", 21 },
    { "contentInsetRight", 21 },
    { "paddingMode", 21 },
    { "layout_rowWeight", 21 },
    { "layout_columnWeight", 21 },
    { "translateX", 21 },
    { "translateY", 21 },
    { "selectableItemBackgroundBorderless", 21 },
    { "elegantTextHeight", 21 },
    { "searchKeyphraseId", 21 },
    { "searchKeyphrase", 21 },
    { "searchKeyphraseSupportedLocales", 21 },
    { "windowTransitionBackgroundFadeDuration", 21 },
    { "overlapAnchor", 21 },
    { "progressTint", 21 },
    { "progressTintMode", 21 },
    { "progressBackgroundTint", 21 },
    { "progressBackgroundTintMode", 21 },
    { "secondaryProgressTint", 21 },
    { "secondaryProgressTintMode", 21 },
    { "indeterminateTint", 21 },
    { "indeterminateTintMode", 21 },
    { "backgroundTint", 21 },
    { "backgroundTintMode", 21 },
    { "foregroundTint", 21 },
    { "foregroundTintMode", 21 },
    { "buttonTint", 21 },
    { "buttonTintMode", 21 },
    { "thumbTint", 21 },
    { "thumbTintMode", 21 },
    { "fullBackupOnly", 21 },
    { "propertyXName", 21 },
    { "propertyYName", 21 },
    { "relinquishTaskIdentity", 21 },
    { "tileModeX", 21 },
    { "tileModeY", 21 },
    { "actionModeShareDrawable", 21 },
    { "actionModeFindDrawable", 21 },
    { "actionModeWebSearchDrawable", 21 },
    { "transitionVisibilityMode", 21 },
    { "minimumHorizontalAngle", 21 },
    { "minimumVerticalAngle", 21 },
    { "maximumAngle", 21 },
    { "searchViewStyle", 21 },
    { "closeIcon", 21 },
    { "goIcon", 21 },
    { "searchIcon", 21 },
    { "voiceIcon", 21 },
    { "commitIcon", 21 },
    { "suggestionRowLayout", 21 },
    { "queryBackground", 21 },
    { "submitBackground", 21 },
    { "buttonBarPositiveButtonStyle", 21 },
    { "buttonBarNeutralButtonStyle", 21 },
    { "buttonBarNegativeButtonStyle", 21 },
    { "popupElevation", 21 },
    { "actionBarPopupTheme", 21 },
    { "multiArch", 21 },
    { "touchscreenBlocksFocus", 21 },
    { "windowElevation", 21 },
    { "launchTaskBehindTargetAnimation", 21 },
    { "launchTaskBehindSourceAnimation", 21 },
    { "restrictionType", 21 },
    { "dayOfWeekBackground", 21 },
    { "dayOfWeekTextAppearance", 21 },
    { "headerMonthTextAppearance", 21 },
    { "headerDayOfMonthTextAppearance", 21 },
    { "headerYearTextAppearance", 21 },
    { "yearListItemTextAppearance", 21 },
    { "yearListSelectorColor", 21 },
    { "calendarTextColor", 21 },
    { "recognitionService", 21 },
    { "timePickerStyle", 21 },
    { "timePickerDialogTheme", 21 },
    { "headerTimeTextAppearance", 21 },
    { "headerAmPmTextAppearance", 21 },
    { "numbersTextColor", 21 },
    { "numbersBackgroundColor", 21 },
    { "numbersSelectorColor", 21 },
    { "amPmTextColor", 21 },
    { "amPmBackgroundColor", 21 },
    { "searchKeyphraseRecognitionFlags", 21 },
    { "checkMarkTint", 21 },
    { "checkMarkTintMode", 21 },
    { "popupTheme", 21 },
    { "toolbarStyle", 21 },
    { "windowClipToOutline", 21 },
    { "datePickerDialogTheme", 21 },
    { "showText", 21 },
    { "windowReturnTransition", 21 },
    { "windowReenterTransition", 21 },
    { "windowSharedElementReturnTransition", 21 },
    { "windowSharedElementReenterTransition", 21 },
    { "resumeWhilePausing", 21 },
    { "datePickerMode", 21 },
    { "timePickerMode", 21 },
    { "inset", 21 },
    { "letterSpacing", 21 },
    { "fontFeatureSettings", 21 },
    { "outlineProvider", 21 },
    { "contentAgeHint", 21 },
    { "country", 21 },
    { "windowSharedElementsUseOverlay", 21 },
    { "reparent", 21 },
    { "reparentWithOverlay", 21 },
    { "ambientShadowAlpha", 21 },
    { "spotShadowAlpha", 21 },
    { "navigationIcon", 21 },
    { "navigationContentDescription", 21 },
    { "fragmentExitTransition", 21 },
    { "fragmentEnterTransition", 21 },
    { "fragmentSharedElementEnterTransition", 21 },
    { "fragmentReturnTransition", 21 },
    { "fragmentSharedElementReturnTransition", 21 },
    { "fragmentReenterTransition", 21 },
    { "fragmentAllowEnterTransitionOverlap", 21 },
    { "fragmentAllowReturnTransitionOverlap", 21 },
    { "patternPathData", 21 },
    { "strokeAlpha", 21 },
    { "fillAlpha", 21 },
    { "windowActivityTransitions", 21 },
    { "colorEdgeEffect", 21 }
};

size_t findAttributeSdkLevel(const ResourceName& name) {
    if (name.package != "android" && name.type != ResourceType::kAttr) {
        return 0;
    }

    auto iter = sAttrMap.find(name.entry);
    if (iter != sAttrMap.end()) {
        return iter->second;
    }
    return SDK_LOLLIPOP_MR1;
}

std::pair<StringPiece, int> getDevelopmentSdkCodeNameAndVersion() {
    return std::make_pair(StringPiece(sDevelopmentSdkCodeName), sDevelopmentSdkLevel);
}

} // namespace aapt
