Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ReferenceError Cannot access 'xxx' before initialization #8878

Closed
catamphetamine opened this issue Apr 21, 2024 · 5 comments
Closed

ReferenceError Cannot access 'xxx' before initialization #8878

catamphetamine opened this issue Apr 21, 2024 · 5 comments
Labels

Comments

@catamphetamine
Copy link

catamphetamine commented Apr 21, 2024

Describe the bug

Is reproduced in @swc/core@^1.3.105 and 1.4.x.
Is not reproduced in @swc/core@1.3.104.

The issue seems to be used by such code:

export default function ChannelsListBase() {
  ...
}

export const channelShape = {
  ...
}

ChannelsListBase.propTypes = {
  ... channelShape ...
}

Source code:
https://github.com/catamphetamine/anychan/blob/662d897b50ac4905ea6dc68b7c3b6b02af50a2cf/src/components/ChannelsList/ChannelsListBase.js#L164

Compiled:

__webpack_require__.d(__webpack_exports__, {
    /* harmony export */
    channelShape: ()=>(/* binding */
    channelShape), // <--------------- THE ERROR IS HERE ---------------
    /* harmony export */
    "default": ()=>(/* binding */
    ChannelsListBase)/* harmony export */
});

image

image

Input code

https://github.com/catamphetamine/anychan/blob/662d897b50ac4905ea6dc68b7c3b6b02af50a2cf/src/components/ChannelsList/ChannelsListBase.js#L164

Config

{
  "env": {
    "targets": "> 0.25%, not dead",
    "mode": "usage",
    "coreJs": "3.22"
  },
  "jsc": {
    "parser": {
      "jsx": true,
      "syntax": "ecmascript",
      "importAssertions": true
    },
    "transform": {
      "react": {
        "refresh": true,
        "runtime": "automatic"
      }
    }
  }
}

Playground link (or link to the minimal reproduction)

https://github.com/catamphetamine/anychan/blob/662d897b50ac4905ea6dc68b7c3b6b02af50a2cf/src/components/ChannelsList/ChannelsListBase.js#L164

SWC Info output

No response

Expected behavior

No error

Actual behavior

Error

Version

1.3.105

Additional context

I didn't add a "playground" because the issue was reproduced in a real app. See for yourself if you'd like to investigate it or not. I'm fine with not updating to 1.4.x if the bug is not fixed there.

@catamphetamine
Copy link
Author

catamphetamine commented Apr 21, 2024

Additional details:

The reason seems to be that before 1.3.105 it compiled the source code as var channelShape = ... but starting with 1.3.105 it started compiling the same code as const channelShape = ... and there's a difference between const and var in that a variable declared with var can be used before it is declared whereas a variable declared with const cannot.

https://stackoverflow.com/questions/48507803/es6-modules-why-can-i-use-a-const-before-it-is-declared
https://stackoverflow.com/questions/20220862/in-javascript-can-i-use-a-variable-before-it-is-declared

Here's the whole file when it's compiled with a newer version of @swc/core which doesn't work:

var C_dev_anychan_node_modules_react_refresh_runtime_js__WEBPACK_IMPORTED_MODULE_0___namespace_cache;
__webpack_require__.r(__webpack_exports__);
/* harmony export */
__webpack_require__.d(__webpack_exports__, {
    /* harmony export */
    channelShape: ()=>(/* binding */
    channelShape),
    /* harmony export */
    "default": ()=>(/* binding */
    ChannelsListBase)/* harmony export */
});
/* harmony import */
var C_dev_anychan_node_modules_react_refresh_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */
"./node_modules/react-refresh/runtime.js");
/* harmony import */
var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */
"./node_modules/core-js/modules/web.dom-collections.iterator.js");
/* harmony import */
var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */
"./node_modules/react/jsx-runtime.js");
/* harmony import */
var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */
"./node_modules/react/index.js");
/* harmony import */
var prop_types__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! prop-types */
"./node_modules/prop-types/index.js");
/* harmony import */
var react_pages__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! react-pages */
"./node_modules/react-pages/lib/redux/Link.js");
/* harmony import */
var react_redux__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! react-redux */
"./node_modules/react-redux/dist/react-redux.mjs");
/* harmony import */
var react_responsive_ui__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! react-responsive-ui */
"./node_modules/react-responsive-ui/modules/Button.js");
/* harmony import */
var classnames__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! classnames */
"./node_modules/classnames/index.js");
/* harmony import */
var _redux_settings_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../redux/settings.js */
"./src/redux/settings.js");
/* harmony import */
var _redux_data_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../redux/data.js */
"./src/redux/data.js");
/* harmony import */
var _hooks_useMessages_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../hooks/useMessages.js */
"./src/hooks/useMessages.js");
/* harmony import */
var _hooks_useSettings_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../hooks/useSettings.js */
"./src/hooks/useSettings.js");
/* harmony import */
var _hooks_useDataSource_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../hooks/useDataSource.js */
"./src/hooks/useDataSource.js");
/* harmony import */
var _hooks_useMultiDataSource_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../hooks/useMultiDataSource.js */
"./src/hooks/useMultiDataSource.js");
/* harmony import */
var _ChannelsListSearch_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./ChannelsListSearch.js */
"./src/components/ChannelsList/ChannelsListSearch.js");
/* harmony import */
var _ChannelsListViewSwitcher_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./ChannelsListViewSwitcher.js */
"./src/components/ChannelsList/ChannelsListViewSwitcher.js");
/* harmony import */
var _ChannelsListBase_css__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./ChannelsListBase.css */
"./src/components/ChannelsList/ChannelsListBase.css");
/* provided dependency */
var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */
"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js");
/* provided dependency */
var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */
"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js");

__webpack_require__.$Refresh$.runtime = /*#__PURE__*/
(C_dev_anychan_node_modules_react_refresh_runtime_js__WEBPACK_IMPORTED_MODULE_0___namespace_cache || (C_dev_anychan_node_modules_react_refresh_runtime_js__WEBPACK_IMPORTED_MODULE_0___namespace_cache = __webpack_require__.t(C_dev_anychan_node_modules_react_refresh_runtime_js__WEBPACK_IMPORTED_MODULE_0__, 2)));

// `<Channels/>` are used in `pages/Channels.js`.
function ChannelsListBase(param) {
    let {views, channels, channelsByPopularity, channelsByCategory, channelsView: channelsViewSetting, shouldSaveChannelsView, showAllChannels, showAllChannelsLink, listComponent: ListComponent, selectedChannel, highlightSelectedChannel, hasMoreChannels, className} = param;
    const dispatch = (0,
    react_redux__WEBPACK_IMPORTED_MODULE_14__.useDispatch)();
    const messages = (0,
    _hooks_useMessages_js__WEBPACK_IMPORTED_MODULE_7__["default"])();
    const userSettings = (0,
    _hooks_useSettings_js__WEBPACK_IMPORTED_MODULE_8__["default"])();
    const dataSource = (0,
    _hooks_useDataSource_js__WEBPACK_IMPORTED_MODULE_9__["default"])();
    const multiDataSource = (0,
    _hooks_useMultiDataSource_js__WEBPACK_IMPORTED_MODULE_10__["default"])();
    const [filteredChannels,setFilteredChannels] = (0,
    react__WEBPACK_IMPORTED_MODULE_3__.useState)();
    const [view,setView] = (0,
    react__WEBPACK_IMPORTED_MODULE_3__.useState)();
    const defaultChannelsView = getChannelsView(channelsViewSetting, {
        canViewByCategory: Boolean(channelsByCategory) && views && views.includes("by-category"),
        canViewByPopularity: Boolean(channelsByPopularity)
    });
    const channelsView = view || defaultChannelsView;
    const onViewChange = (0,
    react__WEBPACK_IMPORTED_MODULE_3__.useCallback)((view)=>{
        setView(view);
        if (shouldSaveChannelsView) {
            dispatch((0,
            _redux_settings_js__WEBPACK_IMPORTED_MODULE_5__.saveChannelsView)({
                channelsView: view,
                userSettings
            }));
        }
    }
    , [dispatch]);
    const isChannelSelected = (0,
    react__WEBPACK_IMPORTED_MODULE_3__.useCallback)((channel)=>{
        return highlightSelectedChannel && selectedChannel && channel.id === selectedChannel.id;
    }
    , [highlightSelectedChannel, selectedChannel]);
    const getChannelsListItems = (0,
    react__WEBPACK_IMPORTED_MODULE_3__.useCallback)(()=>{
        switch (channelsView) {
        case "by-category":
            return channelsByCategory.reduce((all,category,i)=>{
                return all.concat([{
                    key: category.category || "—",
                    category: category.category,
                    first: i === 0
                }]).concat(category.channels.map((channel)=>({
                    key: channel.id,
                    channel,
                    selected: isChannelSelected(channel)
                })));
            }
            , []);
        case "list":
            return (filteredChannels || channelsByPopularity || channels).filter((channel)=>showAllChannels || !channel.isHidden).map((channel)=>({
                key: channel.id,
                channel,
                selected: isChannelSelected(channel)
            }));
        default:
            // Unsupported `channelsView`.
            return [];
        }
    }
    , [channelsView, channels, channelsByPopularity, channelsByCategory, filteredChannels, isChannelSelected, showAllChannels]);
    const loadChannelsList = (0,
    react__WEBPACK_IMPORTED_MODULE_3__.useCallback)(async()=>{
        await dispatch((0,
        _redux_data_js__WEBPACK_IMPORTED_MODULE_6__.getChannels)({
            userSettings,
            dataSource,
            multiDataSource,
            messages
        }));
    }
    , [dispatch, userSettings, dataSource, multiDataSource, messages]);
    if (!channels) {
        return /*#__PURE__*/
        (0,
        react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)("p", {
            className: "Channels-error",
            children: [/*#__PURE__*/
            (0,
            react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("span", {
                className: "Channels-errorText",
                children: messages.boards.error
            }), /*#__PURE__*/
            (0,
            react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("br", {}), /*#__PURE__*/
            (0,
            react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(react_responsive_ui__WEBPACK_IMPORTED_MODULE_15__["default"], {
                className: "Channels-errorRetry",
                onClick: loadChannelsList,
                children: messages.actions.retry
            })]
        });
    }
    return /*#__PURE__*/
    (0,
    react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)("nav", {
        className: "Channels",
        children: [views && views.includes("list") && channelsByPopularity && channelsByCategory && views.includes("by-category") && /*#__PURE__*/
        (0,
        react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_ChannelsListViewSwitcher_js__WEBPACK_IMPORTED_MODULE_12__["default"], {
            view: channelsView,
            onViewChange: onViewChange
        }), showAllChannels && channelsView === "list" && /*#__PURE__*/
        (0,
        react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_ChannelsListSearch_js__WEBPACK_IMPORTED_MODULE_11__["default"], {
            channels: channels || channelsByPopularity,
            setSearchResults: setFilteredChannels
        }), /*#__PURE__*/
        (0,
        react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(ListComponent, {
            className: classnames__WEBPACK_IMPORTED_MODULE_4__("Channels-list", {
                // 'Channels-list--list': channelsView === 'list',
                "Channels-list--by-category": channelsView === "by-category"
            }),
            children: getChannelsListItems()
        }), !showAllChannels && showAllChannelsLink && (hasMoreChannels || dataSource.contentCategoryUnspecified) && /*#__PURE__*/
        (0,
        react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("div", {
            className: "Channels-showAllWrapper",
            children: /*#__PURE__*/
            (0,
            react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(react_pages__WEBPACK_IMPORTED_MODULE_16__["default"], {
                to: "/channels",
                className: "Channels-showAll",
                children: messages.boards.showAll
            })
        })]
    });
}
const channelShape = {
    id: prop_types__WEBPACK_IMPORTED_MODULE_17__.string.isRequired,
    title: prop_types__WEBPACK_IMPORTED_MODULE_17__.string.isRequired,
    description: prop_types__WEBPACK_IMPORTED_MODULE_17__.string,
    commentsPerHour: prop_types__WEBPACK_IMPORTED_MODULE_17__.number
};
ChannelsListBase.propTypes = {
    views: prop_types__WEBPACK_IMPORTED_MODULE_17__.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_17__.oneOf(["list", "by-category"])),
    channels: prop_types__WEBPACK_IMPORTED_MODULE_17__.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_17__.shape(channelShape)),
    channelsByPopularity: prop_types__WEBPACK_IMPORTED_MODULE_17__.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_17__.shape(channelShape)),
    channelsByCategory: prop_types__WEBPACK_IMPORTED_MODULE_17__.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_17__.shape({
        category: prop_types__WEBPACK_IMPORTED_MODULE_17__.string.isRequired,
        channels: prop_types__WEBPACK_IMPORTED_MODULE_17__.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_17__.shape(channelShape)).isRequired
    })),
    channelsView: prop_types__WEBPACK_IMPORTED_MODULE_17__.string,
    shouldSaveChannelsView: prop_types__WEBPACK_IMPORTED_MODULE_17__.bool,
    showAllChannels: prop_types__WEBPACK_IMPORTED_MODULE_17__.bool,
    showAllChannelsLink: prop_types__WEBPACK_IMPORTED_MODULE_17__.bool,
    selectedChannel: prop_types__WEBPACK_IMPORTED_MODULE_17__.shape(channelShape),
    highlightSelectedChannel: prop_types__WEBPACK_IMPORTED_MODULE_17__.bool,
    // isChannelOrThreadLocation: PropTypes.bool,
    hasMoreChannels: prop_types__WEBPACK_IMPORTED_MODULE_17__.bool,
    // dispatch: PropTypes.func,
    listComponent: prop_types__WEBPACK_IMPORTED_MODULE_17__.elementType.isRequired,
    className: prop_types__WEBPACK_IMPORTED_MODULE_17__.string
};
function getChannelsView(channelsView, param) {
    let {canViewByCategory, canViewByPopularity} = param;
    switch (channelsView) {
    case "by-category":
        if (canViewByCategory) {
            return channelsView;
        }
    case "list":
        return channelsView;
    }
    if (canViewByPopularity) {
        return "list";
    }
    if (canViewByCategory) {
        return "by-category";
    }
    return "list";
}

const $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;
const $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports($ReactRefreshModuleId$);

function $ReactRefreshModuleRuntime$(exports) {
    if (true) {
        let errorOverlay;
        if (typeof __react_refresh_error_overlay__ !== 'undefined') {
            errorOverlay = __react_refresh_error_overlay__;
        }
        let testMode;
        if (typeof __react_refresh_test__ !== 'undefined') {
            testMode = __react_refresh_test__;
        }
        return __react_refresh_utils__.executeRuntime(exports, $ReactRefreshModuleId$, __webpack_module__.hot, errorOverlay, testMode);
    }
}

if (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {
    $ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);
} else {
    $ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvY29tcG9uZW50cy9DaGFubmVsc0xpc3QvQ2hhbm5lbHNMaXN0QmFzZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYW55Y2hhbi8uL3NyYy9jb21wb25lbnRzL0NoYW5uZWxzTGlzdC9DaGFubmVsc0xpc3RCYXNlLmpzP2IyYTMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgX19yZWFjdF9yZWZyZXNoX3J1bnRpbWVfXyBmcm9tICdDOi9kZXYvYW55Y2hhbi9ub2RlX21vZHVsZXMvcmVhY3QtcmVmcmVzaC9ydW50aW1lLmpzJztcbl9fd2VicGFja19yZXF1aXJlX18uJFJlZnJlc2gkLnJ1bnRpbWUgPSBfX3JlYWN0X3JlZnJlc2hfcnVudGltZV9fO1xuXG5pbXBvcnQgXCJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5pdGVyYXRvci5qc1wiO1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2sgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IExpbmsgfSBmcm9tIFwicmVhY3QtcGFnZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwicmVhY3QtcmVzcG9uc2l2ZS11aVwiO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIjtcbmltcG9ydCB7IHNhdmVDaGFubmVsc1ZpZXcgfSBmcm9tIFwiLi4vLi4vcmVkdXgvc2V0dGluZ3MuanNcIjtcbmltcG9ydCB7IGdldENoYW5uZWxzIH0gZnJvbSBcIi4uLy4uL3JlZHV4L2RhdGEuanNcIjtcbmltcG9ydCB1c2VNZXNzYWdlcyBmcm9tIFwiLi4vLi4vaG9va3MvdXNlTWVzc2FnZXMuanNcIjtcbmltcG9ydCB1c2VTZXR0aW5ncyBmcm9tIFwiLi4vLi4vaG9va3MvdXNlU2V0dGluZ3MuanNcIjtcbmltcG9ydCB1c2VEYXRhU291cmNlIGZyb20gXCIuLi8uLi9ob29rcy91c2VEYXRhU291cmNlLmpzXCI7XG5pbXBvcnQgdXNlTXVsdGlEYXRhU291cmNlIGZyb20gXCIuLi8uLi9ob29rcy91c2VNdWx0aURhdGFTb3VyY2UuanNcIjtcbmltcG9ydCBDaGFubmVsc0xpc3RTZWFyY2ggZnJvbSBcIi4vQ2hhbm5lbHNMaXN0U2VhcmNoLmpzXCI7XG5pbXBvcnQgQ2hhbm5lbHNMaXN0Vmlld1N3aXRjaGVyIGZyb20gXCIuL0NoYW5uZWxzTGlzdFZpZXdTd2l0Y2hlci5qc1wiO1xuaW1wb3J0IFwiLi9DaGFubmVsc0xpc3RCYXNlLmNzc1wiO1xuLy8gYDxDaGFubmVscy8+YCBhcmUgdXNlZCBpbiBgcGFnZXMvQ2hhbm5lbHMuanNgLlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ2hhbm5lbHNMaXN0QmFzZShwYXJhbSkge1xuICAgIGxldCB7IHZpZXdzLCBjaGFubmVscywgY2hhbm5lbHNCeVBvcHVsYXJpdHksIGNoYW5uZWxzQnlDYXRlZ29yeSwgY2hhbm5lbHNWaWV3OiBjaGFubmVsc1ZpZXdTZXR0aW5nLCBzaG91bGRTYXZlQ2hhbm5lbHNWaWV3LCBzaG93QWxsQ2hhbm5lbHMsIHNob3dBbGxDaGFubmVsc0xpbmssIGxpc3RDb21wb25lbnQ6IExpc3RDb21wb25lbnQsIHNlbGVjdGVkQ2hhbm5lbCwgaGlnaGxpZ2h0U2VsZWN0ZWRDaGFubmVsLCBoYXNNb3JlQ2hhbm5lbHMsIGNsYXNzTmFtZSB9ID0gcGFyYW07XG4gICAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICAgIGNvbnN0IG1lc3NhZ2VzID0gdXNlTWVzc2FnZXMoKTtcbiAgICBjb25zdCB1c2VyU2V0dGluZ3MgPSB1c2VTZXR0aW5ncygpO1xuICAgIGNvbnN0IGRhdGFTb3VyY2UgPSB1c2VEYXRhU291cmNlKCk7XG4gICAgY29uc3QgbXVsdGlEYXRhU291cmNlID0gdXNlTXVsdGlEYXRhU291cmNlKCk7XG4gICAgY29uc3QgW2ZpbHRlcmVkQ2hhbm5lbHMsIHNldEZpbHRlcmVkQ2hhbm5lbHNdID0gdXNlU3RhdGUoKTtcbiAgICBjb25zdCBbdmlldywgc2V0Vmlld10gPSB1c2VTdGF0ZSgpO1xuICAgIGNvbnN0IGRlZmF1bHRDaGFubmVsc1ZpZXcgPSBnZXRDaGFubmVsc1ZpZXcoY2hhbm5lbHNWaWV3U2V0dGluZywge1xuICAgICAgICBjYW5WaWV3QnlDYXRlZ29yeTogQm9vbGVhbihjaGFubmVsc0J5Q2F0ZWdvcnkpICYmIHZpZXdzICYmIHZpZXdzLmluY2x1ZGVzKFwiYnktY2F0ZWdvcnlcIiksXG4gICAgICAgIGNhblZpZXdCeVBvcHVsYXJpdHk6IEJvb2xlYW4oY2hhbm5lbHNCeVBvcHVsYXJpdHkpXG4gICAgfSk7XG4gICAgY29uc3QgY2hhbm5lbHNWaWV3ID0gdmlldyB8fCBkZWZhdWx0Q2hhbm5lbHNWaWV3O1xuICAgIGNvbnN0IG9uVmlld0NoYW5nZSA9IHVzZUNhbGxiYWNrKCh2aWV3KT0+e1xuICAgICAgICBzZXRWaWV3KHZpZXcpO1xuICAgICAgICBpZiAoc2hvdWxkU2F2ZUNoYW5uZWxzVmlldykge1xuICAgICAgICAgICAgZGlzcGF0Y2goc2F2ZUNoYW5uZWxzVmlldyh7XG4gICAgICAgICAgICAgICAgY2hhbm5lbHNWaWV3OiB2aWV3LFxuICAgICAgICAgICAgICAgIHVzZXJTZXR0aW5nc1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBkaXNwYXRjaFxuICAgIF0pO1xuICAgIGNvbnN0IGlzQ2hhbm5lbFNlbGVjdGVkID0gdXNlQ2FsbGJhY2soKGNoYW5uZWwpPT57XG4gICAgICAgIHJldHVybiBoaWdobGlnaHRTZWxlY3RlZENoYW5uZWwgJiYgc2VsZWN0ZWRDaGFubmVsICYmIGNoYW5uZWwuaWQgPT09IHNlbGVjdGVkQ2hhbm5lbC5pZDtcbiAgICB9LCBbXG4gICAgICAgIGhpZ2hsaWdodFNlbGVjdGVkQ2hhbm5lbCxcbiAgICAgICAgc2VsZWN0ZWRDaGFubmVsXG4gICAgXSk7XG4gICAgY29uc3QgZ2V0Q2hhbm5lbHNMaXN0SXRlbXMgPSB1c2VDYWxsYmFjaygoKT0+e1xuICAgICAgICBzd2l0Y2goY2hhbm5lbHNWaWV3KXtcbiAgICAgICAgICAgIGNhc2UgXCJieS1jYXRlZ29yeVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBjaGFubmVsc0J5Q2F0ZWdvcnkucmVkdWNlKChhbGwsIGNhdGVnb3J5LCBpKT0+e1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWxsLmNvbmNhdChbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBjYXRlZ29yeS5jYXRlZ29yeSB8fCBcIuKAlFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5OiBjYXRlZ29yeS5jYXRlZ29yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdDogaSA9PT0gMFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdKS5jb25jYXQoY2F0ZWdvcnkuY2hhbm5lbHMubWFwKChjaGFubmVsKT0+KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoYW5uZWwuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogaXNDaGFubmVsU2VsZWN0ZWQoY2hhbm5lbClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSk7XG4gICAgICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgY2FzZSBcImxpc3RcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gKGZpbHRlcmVkQ2hhbm5lbHMgfHwgY2hhbm5lbHNCeVBvcHVsYXJpdHkgfHwgY2hhbm5lbHMpLmZpbHRlcigoY2hhbm5lbCk9PnNob3dBbGxDaGFubmVscyB8fCAhY2hhbm5lbC5pc0hpZGRlbikubWFwKChjaGFubmVsKT0+KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY2hhbm5lbC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogaXNDaGFubmVsU2VsZWN0ZWQoY2hhbm5lbClcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAvLyBVbnN1cHBvcnRlZCBgY2hhbm5lbHNWaWV3YC5cbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGNoYW5uZWxzVmlldyxcbiAgICAgICAgY2hhbm5lbHMsXG4gICAgICAgIGNoYW5uZWxzQnlQb3B1bGFyaXR5LFxuICAgICAgICBjaGFubmVsc0J5Q2F0ZWdvcnksXG4gICAgICAgIGZpbHRlcmVkQ2hhbm5lbHMsXG4gICAgICAgIGlzQ2hhbm5lbFNlbGVjdGVkLFxuICAgICAgICBzaG93QWxsQ2hhbm5lbHNcbiAgICBdKTtcbiAgICBjb25zdCBsb2FkQ2hhbm5lbHNMaXN0ID0gdXNlQ2FsbGJhY2soYXN5bmMgKCk9PntcbiAgICAgICAgYXdhaXQgZGlzcGF0Y2goZ2V0Q2hhbm5lbHMoe1xuICAgICAgICAgICAgdXNlclNldHRpbmdzLFxuICAgICAgICAgICAgZGF0YVNvdXJjZSxcbiAgICAgICAgICAgIG11bHRpRGF0YVNvdXJjZSxcbiAgICAgICAgICAgIG1lc3NhZ2VzXG4gICAgICAgIH0pKTtcbiAgICB9LCBbXG4gICAgICAgIGRpc3BhdGNoLFxuICAgICAgICB1c2VyU2V0dGluZ3MsXG4gICAgICAgIGRhdGFTb3VyY2UsXG4gICAgICAgIG11bHRpRGF0YVNvdXJjZSxcbiAgICAgICAgbWVzc2FnZXNcbiAgICBdKTtcbiAgICBpZiAoIWNoYW5uZWxzKSB7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovIF9qc3hzKFwicFwiLCB7XG4gICAgICAgICAgICBjbGFzc05hbWU6IFwiQ2hhbm5lbHMtZXJyb3JcIixcbiAgICAgICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgICAgLyojX19QVVJFX18qLyBfanN4KFwic3BhblwiLCB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJDaGFubmVscy1lcnJvclRleHRcIixcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IG1lc3NhZ2VzLmJvYXJkcy5lcnJvclxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIC8qI19fUFVSRV9fKi8gX2pzeChcImJyXCIsIHt9KSxcbiAgICAgICAgICAgICAgICAvKiNfX1BVUkVfXyovIF9qc3goQnV0dG9uLCB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJDaGFubmVscy1lcnJvclJldHJ5XCIsXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IGxvYWRDaGFubmVsc0xpc3QsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBtZXNzYWdlcy5hY3Rpb25zLnJldHJ5XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiAvKiNfX1BVUkVfXyovIF9qc3hzKFwibmF2XCIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcIkNoYW5uZWxzXCIsXG4gICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICB2aWV3cyAmJiB2aWV3cy5pbmNsdWRlcyhcImxpc3RcIikgJiYgY2hhbm5lbHNCeVBvcHVsYXJpdHkgJiYgY2hhbm5lbHNCeUNhdGVnb3J5ICYmIHZpZXdzLmluY2x1ZGVzKFwiYnktY2F0ZWdvcnlcIikgJiYgLyojX19QVVJFX18qLyBfanN4KENoYW5uZWxzTGlzdFZpZXdTd2l0Y2hlciwge1xuICAgICAgICAgICAgICAgIHZpZXc6IGNoYW5uZWxzVmlldyxcbiAgICAgICAgICAgICAgICBvblZpZXdDaGFuZ2U6IG9uVmlld0NoYW5nZVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBzaG93QWxsQ2hhbm5lbHMgJiYgY2hhbm5lbHNWaWV3ID09PSBcImxpc3RcIiAmJiAvKiNfX1BVUkVfXyovIF9qc3goQ2hhbm5lbHNMaXN0U2VhcmNoLCB7XG4gICAgICAgICAgICAgICAgY2hhbm5lbHM6IGNoYW5uZWxzIHx8IGNoYW5uZWxzQnlQb3B1bGFyaXR5LFxuICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdHM6IHNldEZpbHRlcmVkQ2hhbm5lbHNcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgLyojX19QVVJFX18qLyBfanN4KExpc3RDb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoXCJDaGFubmVscy1saXN0XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gJ0NoYW5uZWxzLWxpc3QtLWxpc3QnOiBjaGFubmVsc1ZpZXcgPT09ICdsaXN0JyxcbiAgICAgICAgICAgICAgICAgICAgXCJDaGFubmVscy1saXN0LS1ieS1jYXRlZ29yeVwiOiBjaGFubmVsc1ZpZXcgPT09IFwiYnktY2F0ZWdvcnlcIlxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBnZXRDaGFubmVsc0xpc3RJdGVtcygpXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICFzaG93QWxsQ2hhbm5lbHMgJiYgc2hvd0FsbENoYW5uZWxzTGluayAmJiAoaGFzTW9yZUNoYW5uZWxzIHx8IGRhdGFTb3VyY2UuY29udGVudENhdGVnb3J5VW5zcGVjaWZpZWQpICYmIC8qI19fUFVSRV9fKi8gX2pzeChcImRpdlwiLCB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBcIkNoYW5uZWxzLXNob3dBbGxXcmFwcGVyXCIsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi8gX2pzeChMaW5rLCB7XG4gICAgICAgICAgICAgICAgICAgIHRvOiBcIi9jaGFubmVsc1wiLFxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IFwiQ2hhbm5lbHMtc2hvd0FsbFwiLFxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogbWVzc2FnZXMuYm9hcmRzLnNob3dBbGxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgXVxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IGNoYW5uZWxTaGFwZSA9IHtcbiAgICBpZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgZGVzY3JpcHRpb246IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY29tbWVudHNQZXJIb3VyOiBQcm9wVHlwZXMubnVtYmVyXG59O1xuQ2hhbm5lbHNMaXN0QmFzZS5wcm9wVHlwZXMgPSB7XG4gICAgdmlld3M6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZihbXG4gICAgICAgIFwibGlzdFwiLFxuICAgICAgICBcImJ5LWNhdGVnb3J5XCJcbiAgICBdKSksXG4gICAgY2hhbm5lbHM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5zaGFwZShjaGFubmVsU2hhcGUpKSxcbiAgICBjaGFubmVsc0J5UG9wdWxhcml0eTogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLnNoYXBlKGNoYW5uZWxTaGFwZSkpLFxuICAgIGNoYW5uZWxzQnlDYXRlZ29yeTogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgICAgY2F0ZWdvcnk6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgICAgY2hhbm5lbHM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5zaGFwZShjaGFubmVsU2hhcGUpKS5pc1JlcXVpcmVkXG4gICAgfSkpLFxuICAgIGNoYW5uZWxzVmlldzogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBzaG91bGRTYXZlQ2hhbm5lbHNWaWV3OiBQcm9wVHlwZXMuYm9vbCxcbiAgICBzaG93QWxsQ2hhbm5lbHM6IFByb3BUeXBlcy5ib29sLFxuICAgIHNob3dBbGxDaGFubmVsc0xpbms6IFByb3BUeXBlcy5ib29sLFxuICAgIHNlbGVjdGVkQ2hhbm5lbDogUHJvcFR5cGVzLnNoYXBlKGNoYW5uZWxTaGFwZSksXG4gICAgaGlnaGxpZ2h0U2VsZWN0ZWRDaGFubmVsOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAvLyBpc0NoYW5uZWxPclRocmVhZExvY2F0aW9uOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBoYXNNb3JlQ2hhbm5lbHM6IFByb3BUeXBlcy5ib29sLFxuICAgIC8vIGRpc3BhdGNoOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBsaXN0Q29tcG9uZW50OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUuaXNSZXF1aXJlZCxcbiAgICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5mdW5jdGlvbiBnZXRDaGFubmVsc1ZpZXcoY2hhbm5lbHNWaWV3LCBwYXJhbSkge1xuICAgIGxldCB7IGNhblZpZXdCeUNhdGVnb3J5LCBjYW5WaWV3QnlQb3B1bGFyaXR5IH0gPSBwYXJhbTtcbiAgICBzd2l0Y2goY2hhbm5lbHNWaWV3KXtcbiAgICAgICAgY2FzZSBcImJ5LWNhdGVnb3J5XCI6XG4gICAgICAgICAgICBpZiAoY2FuVmlld0J5Q2F0ZWdvcnkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2hhbm5lbHNWaWV3O1xuICAgICAgICAgICAgfVxuICAgICAgICBjYXNlIFwibGlzdFwiOlxuICAgICAgICAgICAgcmV0dXJuIGNoYW5uZWxzVmlldztcbiAgICB9XG4gICAgaWYgKGNhblZpZXdCeVBvcHVsYXJpdHkpIHtcbiAgICAgICAgcmV0dXJuIFwibGlzdFwiO1xuICAgIH1cbiAgICBpZiAoY2FuVmlld0J5Q2F0ZWdvcnkpIHtcbiAgICAgICAgcmV0dXJuIFwiYnktY2F0ZWdvcnlcIjtcbiAgICB9XG4gICAgcmV0dXJuIFwibGlzdFwiO1xufVxuXG5cbmNvbnN0ICRSZWFjdFJlZnJlc2hNb2R1bGVJZCQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLiRSZWZyZXNoJC5tb2R1bGVJZDtcbmNvbnN0ICRSZWFjdFJlZnJlc2hDdXJyZW50RXhwb3J0cyQgPSBfX3JlYWN0X3JlZnJlc2hfdXRpbHNfXy5nZXRNb2R1bGVFeHBvcnRzKFxuXHQkUmVhY3RSZWZyZXNoTW9kdWxlSWQkXG4pO1xuXG5mdW5jdGlvbiAkUmVhY3RSZWZyZXNoTW9kdWxlUnVudGltZSQoZXhwb3J0cykge1xuXHRpZiAoaW1wb3J0Lm1ldGEud2VicGFja0hvdCkge1xuXHRcdGxldCBlcnJvck92ZXJsYXk7XG5cdFx0aWYgKHR5cGVvZiBfX3JlYWN0X3JlZnJlc2hfZXJyb3Jfb3ZlcmxheV9fICE9PSAndW5kZWZpbmVkJykge1xuXHRcdFx0ZXJyb3JPdmVybGF5ID0gX19yZWFjdF9yZWZyZXNoX2Vycm9yX292ZXJsYXlfXztcblx0XHR9XG5cdFx0bGV0IHRlc3RNb2RlO1xuXHRcdGlmICh0eXBlb2YgX19yZWFjdF9yZWZyZXNoX3Rlc3RfXyAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0XHRcdHRlc3RNb2RlID0gX19yZWFjdF9yZWZyZXNoX3Rlc3RfXztcblx0XHR9XG5cdFx0cmV0dXJuIF9fcmVhY3RfcmVmcmVzaF91dGlsc19fLmV4ZWN1dGVSdW50aW1lKFxuXHRcdFx0ZXhwb3J0cyxcblx0XHRcdCRSZWFjdFJlZnJlc2hNb2R1bGVJZCQsXG5cdFx0XHRpbXBvcnQubWV0YS53ZWJwYWNrSG90LFxuXHRcdFx0ZXJyb3JPdmVybGF5LFxuXHRcdFx0dGVzdE1vZGVcblx0XHQpO1xuXHR9XG59XG5cbmlmICh0eXBlb2YgUHJvbWlzZSAhPT0gJ3VuZGVmaW5lZCcgJiYgJFJlYWN0UmVmcmVzaEN1cnJlbnRFeHBvcnRzJCBpbnN0YW5jZW9mIFByb21pc2UpIHtcblx0JFJlYWN0UmVmcmVzaEN1cnJlbnRFeHBvcnRzJC50aGVuKCRSZWFjdFJlZnJlc2hNb2R1bGVSdW50aW1lJCk7XG59IGVsc2Uge1xuXHQkUmVhY3RSZWZyZXNoTW9kdWxlUnVudGltZSQoJFJlYWN0UmVmcmVzaEN1cnJlbnRFeHBvcnRzJCk7XG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9
//# sourceURL=webpack-internal:///./src/components/ChannelsList/ChannelsListBase.js

Here's the whole file when it's compiled with an older version of @swc/core which doeswork:

var C_dev_anychan_node_modules_react_refresh_runtime_js__WEBPACK_IMPORTED_MODULE_0___namespace_cache;
__webpack_require__.r(__webpack_exports__);
/* harmony export */
__webpack_require__.d(__webpack_exports__, {
    /* harmony export */
    channelShape: ()=>(/* binding */
    channelShape),
    /* harmony export */
    "default": ()=>(/* binding */
    ChannelsListBase)/* harmony export */
});
/* harmony import */
var C_dev_anychan_node_modules_react_refresh_runtime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */
"./node_modules/react-refresh/runtime.js");
/* harmony import */
var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */
"./node_modules/core-js/modules/es.array.includes.js");
/* harmony import */
var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */
"./node_modules/core-js/modules/es.string.includes.js");
/* harmony import */
var core_js_modules_es_array_reduce_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.reduce.js */
"./node_modules/core-js/modules/es.array.reduce.js");
/* harmony import */
var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */
"./node_modules/core-js/modules/es.object.to-string.js");
/* harmony import */
var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */
"./node_modules/core-js/modules/es.array.concat.js");
/* harmony import */
var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.map.js */
"./node_modules/core-js/modules/es.array.map.js");
/* harmony import */
var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */
"./node_modules/core-js/modules/es.array.filter.js");
/* harmony import */
var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react/jsx-runtime */
"./node_modules/react/jsx-runtime.js");
/* harmony import */
var react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react */
"./node_modules/react/index.js");
/* harmony import */
var prop_types__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! prop-types */
"./node_modules/prop-types/index.js");
/* harmony import */
var react_pages__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! react-pages */
"./node_modules/react-pages/lib/redux/Link.js");
/* harmony import */
var react_redux__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! react-redux */
"./node_modules/react-redux/dist/react-redux.mjs");
/* harmony import */
var react_responsive_ui__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! react-responsive-ui */
"./node_modules/react-responsive-ui/modules/Button.js");
/* harmony import */
var classnames__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! classnames */
"./node_modules/classnames/index.js");
/* harmony import */
var _redux_settings_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../redux/settings.js */
"./src/redux/settings.js");
/* harmony import */
var _redux_data_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../redux/data.js */
"./src/redux/data.js");
/* harmony import */
var _hooks_useMessages_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../hooks/useMessages.js */
"./src/hooks/useMessages.js");
/* harmony import */
var _hooks_useSettings_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../hooks/useSettings.js */
"./src/hooks/useSettings.js");
/* harmony import */
var _hooks_useDataSource_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../hooks/useDataSource.js */
"./src/hooks/useDataSource.js");
/* harmony import */
var _hooks_useMultiDataSource_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../hooks/useMultiDataSource.js */
"./src/hooks/useMultiDataSource.js");
/* harmony import */
var _ChannelsListSearch_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./ChannelsListSearch.js */
"./src/components/ChannelsList/ChannelsListSearch.js");
/* harmony import */
var _ChannelsListViewSwitcher_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./ChannelsListViewSwitcher.js */
"./src/components/ChannelsList/ChannelsListViewSwitcher.js");
/* harmony import */
var _ChannelsListBase_css__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./ChannelsListBase.css */
"./src/components/ChannelsList/ChannelsListBase.css");
/* provided dependency */
var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */
"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js");
/* provided dependency */
var __react_refresh_error_overlay__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */
"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js");

__webpack_require__.$Refresh$.runtime = /*#__PURE__*/
(C_dev_anychan_node_modules_react_refresh_runtime_js__WEBPACK_IMPORTED_MODULE_0___namespace_cache || (C_dev_anychan_node_modules_react_refresh_runtime_js__WEBPACK_IMPORTED_MODULE_0___namespace_cache = __webpack_require__.t(C_dev_anychan_node_modules_react_refresh_runtime_js__WEBPACK_IMPORTED_MODULE_0__, 2)));

function _array_like_to_array(arr, len) {
    if (len == null || len > arr.length)
        len = arr.length;
    for (var i = 0, arr2 = new Array(len); i < len; i++)
        arr2[i] = arr[i];
    return arr2;
}
function _array_with_holes(arr) {
    if (Array.isArray(arr))
        return arr;
}
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
    try {
        var info = gen[key](arg);
        var value = info.value;
    } catch (error) {
        reject(error);
        return;
    }
    if (info.done) {
        resolve(value);
    } else {
        Promise.resolve(value).then(_next, _throw);
    }
}
function _async_to_generator(fn) {
    return function() {
        var self = this
          , args = arguments;
        return new Promise(function(resolve, reject) {
            var gen = fn.apply(self, args);
            function _next(value) {
                asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
            }
            function _throw(err) {
                asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
            }
            _next(undefined);
        }
        );
    }
    ;
}
function _iterable_to_array_limit(arr, i) {
    var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
    if (_i == null)
        return;
    var _arr = [];
    var _n = true;
    var _d = false;
    var _s, _e;
    try {
        for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
            _arr.push(_s.value);
            if (i && _arr.length === i)
                break;
        }
    } catch (err) {
        _d = true;
        _e = err;
    } finally {
        try {
            if (!_n && _i["return"] != null)
                _i["return"]();
        } finally {
            if (_d)
                throw _e;
        }
    }
    return _arr;
}
function _non_iterable_rest() {
    throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function _sliced_to_array(arr, i) {
    return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
}
function _unsupported_iterable_to_array(o, minLen) {
    if (!o)
        return;
    if (typeof o === "string")
        return _array_like_to_array(o, minLen);
    var n = Object.prototype.toString.call(o).slice(8, -1);
    if (n === "Object" && o.constructor)
        n = o.constructor.name;
    if (n === "Map" || n === "Set")
        return Array.from(n);
    if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
        return _array_like_to_array(o, minLen);
}
function _ts_generator(thisArg, body) {
    var f, y, t, g, _ = {
        label: 0,
        sent: function() {
            if (t[0] & 1)
                throw t[1];
            return t[1];
        },
        trys: [],
        ops: []
    };
    return g = {
        next: verb(0),
        "throw": verb(1),
        "return": verb(2)
    },
    typeof Symbol === "function" && (g[Symbol.iterator] = function() {
        return this;
    }
    ),
    g;
    function verb(n) {
        return function(v) {
            return step([n, v]);
        }
        ;
    }
    function step(op) {
        if (f)
            throw new TypeError("Generator is already executing.");
        while (_)
            try {
                if (f = 1,
                y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y),
                0) : y.next) && !(t = t.call(y, op[1])).done)
                    return t;
                if (y = 0,
                t)
                    op = [op[0] & 2, t.value];
                switch (op[0]) {
                case 0:
                case 1:
                    t = op;
                    break;
                case 4:
                    _.label++;
                    return {
                        value: op[1],
                        done: false
                    };
                case 5:
                    _.label++;
                    y = op[1];
                    op = [0];
                    continue;
                case 7:
                    op = _.ops.pop();
                    _.trys.pop();
                    continue;
                default:
                    if (!(t = _.trys,
                    t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
                        _ = 0;
                        continue;
                    }
                    if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
                        _.label = op[1];
                        break;
                    }
                    if (op[0] === 6 && _.label < t[1]) {
                        _.label = t[1];
                        t = op;
                        break;
                    }
                    if (t && _.label < t[2]) {
                        _.label = t[2];
                        _.ops.push(op);
                        break;
                    }
                    if (t[2])
                        _.ops.pop();
                    _.trys.pop();
                    continue;
                }
                op = body.call(thisArg, _);
            } catch (e) {
                op = [6, e];
                y = 0;
            } finally {
                f = t = 0;
            }
        if (op[0] & 5)
            throw op[1];
        return {
            value: op[0] ? op[1] : void 0,
            done: true
        };
    }
}

// `<Channels/>` are used in `pages/Channels.js`.
function ChannelsListBase(param) {
    var views = param.views
      , channels = param.channels
      , channelsByPopularity = param.channelsByPopularity
      , channelsByCategory = param.channelsByCategory
      , channelsViewSetting = param.channelsView
      , shouldSaveChannelsView = param.shouldSaveChannelsView
      , showAllChannels = param.showAllChannels
      , showAllChannelsLink = param.showAllChannelsLink
      , ListComponent = param.listComponent
      , selectedChannel = param.selectedChannel
      , highlightSelectedChannel = param.highlightSelectedChannel
      , hasMoreChannels = param.hasMoreChannels
      , className = param.className;
    var dispatch = (0,
    react_redux__WEBPACK_IMPORTED_MODULE_20__.useDispatch)();
    var messages = (0,
    _hooks_useMessages_js__WEBPACK_IMPORTED_MODULE_13__["default"])();
    var userSettings = (0,
    _hooks_useSettings_js__WEBPACK_IMPORTED_MODULE_14__["default"])();
    var dataSource = (0,
    _hooks_useDataSource_js__WEBPACK_IMPORTED_MODULE_15__["default"])();
    var multiDataSource = (0,
    _hooks_useMultiDataSource_js__WEBPACK_IMPORTED_MODULE_16__["default"])();
    var _useState = _sliced_to_array((0,
    react__WEBPACK_IMPORTED_MODULE_9__.useState)(), 2)
      , filteredChannels = _useState[0]
      , setFilteredChannels = _useState[1];
    var _useState1 = _sliced_to_array((0,
    react__WEBPACK_IMPORTED_MODULE_9__.useState)(), 2)
      , view = _useState1[0]
      , setView = _useState1[1];
    var defaultChannelsView = getChannelsView(channelsViewSetting, {
        canViewByCategory: Boolean(channelsByCategory) && views && views.includes("by-category"),
        canViewByPopularity: Boolean(channelsByPopularity)
    });
    var channelsView = view || defaultChannelsView;
    var onViewChange = (0,
    react__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function(view) {
        setView(view);
        if (shouldSaveChannelsView) {
            dispatch((0,
            _redux_settings_js__WEBPACK_IMPORTED_MODULE_11__.saveChannelsView)({
                channelsView: view,
                userSettings: userSettings
            }));
        }
    }, [dispatch]);
    var isChannelSelected = (0,
    react__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function(channel) {
        return highlightSelectedChannel && selectedChannel && channel.id === selectedChannel.id;
    }, [highlightSelectedChannel, selectedChannel]);
    var getChannelsListItems = (0,
    react__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function() {
        switch (channelsView) {
        case "by-category":
            return channelsByCategory.reduce(function(all, category, i) {
                return all.concat([{
                    key: category.category || "—",
                    category: category.category,
                    first: i === 0
                }]).concat(category.channels.map(function(channel) {
                    return {
                        key: channel.id,
                        channel: channel,
                        selected: isChannelSelected(channel)
                    };
                }));
            }, []);
        case "list":
            return (filteredChannels || channelsByPopularity || channels).filter(function(channel) {
                return showAllChannels || !channel.isHidden;
            }).map(function(channel) {
                return {
                    key: channel.id,
                    channel: channel,
                    selected: isChannelSelected(channel)
                };
            });
        default:
            // Unsupported `channelsView`.
            return [];
        }
    }, [channelsView, channels, channelsByPopularity, channelsByCategory, filteredChannels, isChannelSelected, showAllChannels]);
    var loadChannelsList = (0,
    react__WEBPACK_IMPORTED_MODULE_9__.useCallback)(/*#__PURE__*/
    _async_to_generator(function() {
        return _ts_generator(this, function(_state) {
            switch (_state.label) {
            case 0:
                return [4, dispatch((0,
                _redux_data_js__WEBPACK_IMPORTED_MODULE_12__.getChannels)({
                    userSettings: userSettings,
                    dataSource: dataSource,
                    multiDataSource: multiDataSource,
                    messages: messages
                }))];
            case 1:
                _state.sent();
                return [2];
            }
        });
    }), [dispatch, userSettings, dataSource, multiDataSource, messages]);
    if (!channels) {
        return /*#__PURE__*/
        (0,
        react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)("p", {
            className: "Channels-error",
            children: [/*#__PURE__*/
            (0,
            react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)("span", {
                className: "Channels-errorText",
                children: messages.boards.error
            }), /*#__PURE__*/
            (0,
            react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)("br", {}), /*#__PURE__*/
            (0,
            react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(react_responsive_ui__WEBPACK_IMPORTED_MODULE_21__["default"], {
                className: "Channels-errorRetry",
                onClick: loadChannelsList,
                children: messages.actions.retry
            })]
        });
    }
    return /*#__PURE__*/
    (0,
    react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)("nav", {
        className: "Channels",
        children: [views && views.includes("list") && channelsByPopularity && channelsByCategory && views.includes("by-category") && /*#__PURE__*/
        (0,
        react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_ChannelsListViewSwitcher_js__WEBPACK_IMPORTED_MODULE_18__["default"], {
            view: channelsView,
            onViewChange: onViewChange
        }), showAllChannels && channelsView === "list" && /*#__PURE__*/
        (0,
        react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_ChannelsListSearch_js__WEBPACK_IMPORTED_MODULE_17__["default"], {
            channels: channels || channelsByPopularity,
            setSearchResults: setFilteredChannels
        }), /*#__PURE__*/
        (0,
        react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(ListComponent, {
            className: classnames__WEBPACK_IMPORTED_MODULE_10__("Channels-list", {
                // 'Channels-list--list': channelsView === 'list',
                "Channels-list--by-category": channelsView === "by-category"
            }),
            children: getChannelsListItems()
        }), !showAllChannels && showAllChannelsLink && (hasMoreChannels || dataSource.contentCategoryUnspecified) && /*#__PURE__*/
        (0,
        react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)("div", {
            className: "Channels-showAllWrapper",
            children: /*#__PURE__*/
            (0,
            react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(react_pages__WEBPACK_IMPORTED_MODULE_22__["default"], {
                to: "/channels",
                className: "Channels-showAll",
                children: messages.boards.showAll
            })
        })]
    });
}
var channelShape = {
    id: prop_types__WEBPACK_IMPORTED_MODULE_23__.string.isRequired,
    title: prop_types__WEBPACK_IMPORTED_MODULE_23__.string.isRequired,
    description: prop_types__WEBPACK_IMPORTED_MODULE_23__.string,
    commentsPerHour: prop_types__WEBPACK_IMPORTED_MODULE_23__.number
};
ChannelsListBase.propTypes = {
    views: prop_types__WEBPACK_IMPORTED_MODULE_23__.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_23__.oneOf(["list", "by-category"])),
    channels: prop_types__WEBPACK_IMPORTED_MODULE_23__.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_23__.shape(channelShape)),
    channelsByPopularity: prop_types__WEBPACK_IMPORTED_MODULE_23__.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_23__.shape(channelShape)),
    channelsByCategory: prop_types__WEBPACK_IMPORTED_MODULE_23__.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_23__.shape({
        category: prop_types__WEBPACK_IMPORTED_MODULE_23__.string.isRequired,
        channels: prop_types__WEBPACK_IMPORTED_MODULE_23__.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_23__.shape(channelShape)).isRequired
    })),
    channelsView: prop_types__WEBPACK_IMPORTED_MODULE_23__.string,
    shouldSaveChannelsView: prop_types__WEBPACK_IMPORTED_MODULE_23__.bool,
    showAllChannels: prop_types__WEBPACK_IMPORTED_MODULE_23__.bool,
    showAllChannelsLink: prop_types__WEBPACK_IMPORTED_MODULE_23__.bool,
    selectedChannel: prop_types__WEBPACK_IMPORTED_MODULE_23__.shape(channelShape),
    highlightSelectedChannel: prop_types__WEBPACK_IMPORTED_MODULE_23__.bool,
    // isChannelOrThreadLocation: PropTypes.bool,
    hasMoreChannels: prop_types__WEBPACK_IMPORTED_MODULE_23__.bool,
    // dispatch: PropTypes.func,
    listComponent: prop_types__WEBPACK_IMPORTED_MODULE_23__.elementType.isRequired,
    className: prop_types__WEBPACK_IMPORTED_MODULE_23__.string
};
function getChannelsView(channelsView, param) {
    var canViewByCategory = param.canViewByCategory
      , canViewByPopularity = param.canViewByPopularity;
    switch (channelsView) {
    case "by-category":
        if (canViewByCategory) {
            return channelsView;
        }
    case "list":
        return channelsView;
    }
    if (canViewByPopularity) {
        return "list";
    }
    if (canViewByCategory) {
        return "by-category";
    }
    return "list";
}

const $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;
const $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports($ReactRefreshModuleId$);

function $ReactRefreshModuleRuntime$(exports) {
    if (true) {
        let errorOverlay;
        if (typeof __react_refresh_error_overlay__ !== 'undefined') {
            errorOverlay = __react_refresh_error_overlay__;
        }
        let testMode;
        if (typeof __react_refresh_test__ !== 'undefined') {
            testMode = __react_refresh_test__;
        }
        return __react_refresh_utils__.executeRuntime(exports, $ReactRefreshModuleId$, __webpack_module__.hot, errorOverlay, testMode);
    }
}

if (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {
    $ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);
} else {
    $ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvY29tcG9uZW50cy9DaGFubmVsc0xpc3QvQ2hhbm5lbHNMaXN0QmFzZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYW55Y2hhbi8uL3NyYy9jb21wb25lbnRzL0NoYW5uZWxzTGlzdC9DaGFubmVsc0xpc3RCYXNlLmpzP2IyYTMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgX19yZWFjdF9yZWZyZXNoX3J1bnRpbWVfXyBmcm9tICdDOi9kZXYvYW55Y2hhbi9ub2RlX21vZHVsZXMvcmVhY3QtcmVmcmVzaC9ydW50aW1lLmpzJztcbl9fd2VicGFja19yZXF1aXJlX18uJFJlZnJlc2gkLnJ1bnRpbWUgPSBfX3JlYWN0X3JlZnJlc2hfcnVudGltZV9fO1xuXG5mdW5jdGlvbiBfYXJyYXlfbGlrZV90b19hcnJheShhcnIsIGxlbikge1xuICAgIGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoO1xuICAgIGZvcih2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKWFycjJbaV0gPSBhcnJbaV07XG4gICAgcmV0dXJuIGFycjI7XG59XG5mdW5jdGlvbiBfYXJyYXlfd2l0aF9ob2xlcyhhcnIpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyO1xufVxuZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBrZXksIGFyZykge1xuICAgIHRyeSB7XG4gICAgICAgIHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTtcbiAgICAgICAgdmFyIHZhbHVlID0gaW5mby52YWx1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpbmZvLmRvbmUpIHtcbiAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKF9uZXh0LCBfdGhyb3cpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIF9hc3luY190b19nZW5lcmF0b3IoZm4pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBzZWxmID0gdGhpcywgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgdmFyIGdlbiA9IGZuLmFwcGx5KHNlbGYsIGFyZ3MpO1xuICAgICAgICAgICAgZnVuY3Rpb24gX25leHQodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwibmV4dFwiLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBfdGhyb3coZXJyKSB7XG4gICAgICAgICAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcInRocm93XCIsIGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBfbmV4dCh1bmRlZmluZWQpO1xuICAgICAgICB9KTtcbiAgICB9O1xufVxuZnVuY3Rpb24gX2l0ZXJhYmxlX3RvX2FycmF5X2xpbWl0KGFyciwgaSkge1xuICAgIHZhciBfaSA9IGFyciA9PSBudWxsID8gbnVsbCA6IHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgYXJyW1N5bWJvbC5pdGVyYXRvcl0gfHwgYXJyW1wiQEBpdGVyYXRvclwiXTtcbiAgICBpZiAoX2kgPT0gbnVsbCkgcmV0dXJuO1xuICAgIHZhciBfYXJyID0gW107XG4gICAgdmFyIF9uID0gdHJ1ZTtcbiAgICB2YXIgX2QgPSBmYWxzZTtcbiAgICB2YXIgX3MsIF9lO1xuICAgIHRyeSB7XG4gICAgICAgIGZvcihfaSA9IF9pLmNhbGwoYXJyKTsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSl7XG4gICAgICAgICAgICBfYXJyLnB1c2goX3MudmFsdWUpO1xuICAgICAgICAgICAgaWYgKGkgJiYgX2Fyci5sZW5ndGggPT09IGkpIGJyZWFrO1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIF9kID0gdHJ1ZTtcbiAgICAgICAgX2UgPSBlcnI7XG4gICAgfSBmaW5hbGx5e1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSAhPSBudWxsKSBfaVtcInJldHVyblwiXSgpO1xuICAgICAgICB9IGZpbmFsbHl7XG4gICAgICAgICAgICBpZiAoX2QpIHRocm93IF9lO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBfYXJyO1xufVxuZnVuY3Rpb24gX25vbl9pdGVyYWJsZV9yZXN0KCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn1cbmZ1bmN0aW9uIF9zbGljZWRfdG9fYXJyYXkoYXJyLCBpKSB7XG4gICAgcmV0dXJuIF9hcnJheV93aXRoX2hvbGVzKGFycikgfHwgX2l0ZXJhYmxlX3RvX2FycmF5X2xpbWl0KGFyciwgaSkgfHwgX3Vuc3VwcG9ydGVkX2l0ZXJhYmxlX3RvX2FycmF5KGFyciwgaSkgfHwgX25vbl9pdGVyYWJsZV9yZXN0KCk7XG59XG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRfaXRlcmFibGVfdG9fYXJyYXkobywgbWluTGVuKSB7XG4gICAgaWYgKCFvKSByZXR1cm47XG4gICAgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5X2xpa2VfdG9fYXJyYXkobywgbWluTGVuKTtcbiAgICB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7XG4gICAgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTtcbiAgICBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShuKTtcbiAgICBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheV9saWtlX3RvX2FycmF5KG8sIG1pbkxlbik7XG59XG5mdW5jdGlvbiBfdHNfZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgZiwgeSwgdCwgZywgXyA9IHtcbiAgICAgICAgbGFiZWw6IDAsXG4gICAgICAgIHNlbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdO1xuICAgICAgICAgICAgcmV0dXJuIHRbMV07XG4gICAgICAgIH0sXG4gICAgICAgIHRyeXM6IFtdLFxuICAgICAgICBvcHM6IFtdXG4gICAgfTtcbiAgICByZXR1cm4gZyA9IHtcbiAgICAgICAgbmV4dDogdmVyYigwKSxcbiAgICAgICAgXCJ0aHJvd1wiOiB2ZXJiKDEpLFxuICAgICAgICBcInJldHVyblwiOiB2ZXJiKDIpXG4gICAgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbih2KSB7XG4gICAgICAgICAgICByZXR1cm4gc3RlcChbXG4gICAgICAgICAgICAgICAgbixcbiAgICAgICAgICAgICAgICB2XG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlKF8pdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbXG4gICAgICAgICAgICAgICAgb3BbMF0gJiAyLFxuICAgICAgICAgICAgICAgIHQudmFsdWVcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBzd2l0Y2gob3BbMF0pe1xuICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIHQgPSBvcDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBfLmxhYmVsKys7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogb3BbMV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBkb25lOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgXy5sYWJlbCsrO1xuICAgICAgICAgICAgICAgICAgICB5ID0gb3BbMV07XG4gICAgICAgICAgICAgICAgICAgIG9wID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICAgICAgICAgIG9wID0gXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF8gPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCBvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgXy5sYWJlbCA9IG9wWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfLmxhYmVsID0gdFsxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBvcDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfLmxhYmVsID0gdFsyXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF8ub3BzLnB1c2gob3ApO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIG9wID0gW1xuICAgICAgICAgICAgICAgIDYsXG4gICAgICAgICAgICAgICAgZVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHkgPSAwO1xuICAgICAgICB9IGZpbmFsbHl7XG4gICAgICAgICAgICBmID0gdCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCxcbiAgICAgICAgICAgIGRvbmU6IHRydWVcbiAgICAgICAgfTtcbiAgICB9XG59XG5pbXBvcnQgXCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuaW5jbHVkZXMuanNcIjtcbmltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuaW5jbHVkZXMuanNcIjtcbmltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5yZWR1Y2UuanNcIjtcbmltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzXCI7XG5pbXBvcnQgXCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuY29uY2F0LmpzXCI7XG5pbXBvcnQgXCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkubWFwLmpzXCI7XG5pbXBvcnQgXCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmlsdGVyLmpzXCI7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VDYWxsYmFjayB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgTGluayB9IGZyb20gXCJyZWFjdC1wYWdlc1wiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJyZWFjdC1yZXNwb25zaXZlLXVpXCI7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xuaW1wb3J0IHsgc2F2ZUNoYW5uZWxzVmlldyB9IGZyb20gXCIuLi8uLi9yZWR1eC9zZXR0aW5ncy5qc1wiO1xuaW1wb3J0IHsgZ2V0Q2hhbm5lbHMgfSBmcm9tIFwiLi4vLi4vcmVkdXgvZGF0YS5qc1wiO1xuaW1wb3J0IHVzZU1lc3NhZ2VzIGZyb20gXCIuLi8uLi9ob29rcy91c2VNZXNzYWdlcy5qc1wiO1xuaW1wb3J0IHVzZVNldHRpbmdzIGZyb20gXCIuLi8uLi9ob29rcy91c2VTZXR0aW5ncy5qc1wiO1xuaW1wb3J0IHVzZURhdGFTb3VyY2UgZnJvbSBcIi4uLy4uL2hvb2tzL3VzZURhdGFTb3VyY2UuanNcIjtcbmltcG9ydCB1c2VNdWx0aURhdGFTb3VyY2UgZnJvbSBcIi4uLy4uL2hvb2tzL3VzZU11bHRpRGF0YVNvdXJjZS5qc1wiO1xuaW1wb3J0IENoYW5uZWxzTGlzdFNlYXJjaCBmcm9tIFwiLi9DaGFubmVsc0xpc3RTZWFyY2guanNcIjtcbmltcG9ydCBDaGFubmVsc0xpc3RWaWV3U3dpdGNoZXIgZnJvbSBcIi4vQ2hhbm5lbHNMaXN0Vmlld1N3aXRjaGVyLmpzXCI7XG5pbXBvcnQgXCIuL0NoYW5uZWxzTGlzdEJhc2UuY3NzXCI7XG4vLyBgPENoYW5uZWxzLz5gIGFyZSB1c2VkIGluIGBwYWdlcy9DaGFubmVscy5qc2AuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDaGFubmVsc0xpc3RCYXNlKHBhcmFtKSB7XG4gICAgdmFyIHZpZXdzID0gcGFyYW0udmlld3MsIGNoYW5uZWxzID0gcGFyYW0uY2hhbm5lbHMsIGNoYW5uZWxzQnlQb3B1bGFyaXR5ID0gcGFyYW0uY2hhbm5lbHNCeVBvcHVsYXJpdHksIGNoYW5uZWxzQnlDYXRlZ29yeSA9IHBhcmFtLmNoYW5uZWxzQnlDYXRlZ29yeSwgY2hhbm5lbHNWaWV3U2V0dGluZyA9IHBhcmFtLmNoYW5uZWxzVmlldywgc2hvdWxkU2F2ZUNoYW5uZWxzVmlldyA9IHBhcmFtLnNob3VsZFNhdmVDaGFubmVsc1ZpZXcsIHNob3dBbGxDaGFubmVscyA9IHBhcmFtLnNob3dBbGxDaGFubmVscywgc2hvd0FsbENoYW5uZWxzTGluayA9IHBhcmFtLnNob3dBbGxDaGFubmVsc0xpbmssIExpc3RDb21wb25lbnQgPSBwYXJhbS5saXN0Q29tcG9uZW50LCBzZWxlY3RlZENoYW5uZWwgPSBwYXJhbS5zZWxlY3RlZENoYW5uZWwsIGhpZ2hsaWdodFNlbGVjdGVkQ2hhbm5lbCA9IHBhcmFtLmhpZ2hsaWdodFNlbGVjdGVkQ2hhbm5lbCwgaGFzTW9yZUNoYW5uZWxzID0gcGFyYW0uaGFzTW9yZUNoYW5uZWxzLCBjbGFzc05hbWUgPSBwYXJhbS5jbGFzc05hbWU7XG4gICAgdmFyIGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgICB2YXIgbWVzc2FnZXMgPSB1c2VNZXNzYWdlcygpO1xuICAgIHZhciB1c2VyU2V0dGluZ3MgPSB1c2VTZXR0aW5ncygpO1xuICAgIHZhciBkYXRhU291cmNlID0gdXNlRGF0YVNvdXJjZSgpO1xuICAgIHZhciBtdWx0aURhdGFTb3VyY2UgPSB1c2VNdWx0aURhdGFTb3VyY2UoKTtcbiAgICB2YXIgX3VzZVN0YXRlID0gX3NsaWNlZF90b19hcnJheSh1c2VTdGF0ZSgpLCAyKSwgZmlsdGVyZWRDaGFubmVscyA9IF91c2VTdGF0ZVswXSwgc2V0RmlsdGVyZWRDaGFubmVscyA9IF91c2VTdGF0ZVsxXTtcbiAgICB2YXIgX3VzZVN0YXRlMSA9IF9zbGljZWRfdG9fYXJyYXkodXNlU3RhdGUoKSwgMiksIHZpZXcgPSBfdXNlU3RhdGUxWzBdLCBzZXRWaWV3ID0gX3VzZVN0YXRlMVsxXTtcbiAgICB2YXIgZGVmYXVsdENoYW5uZWxzVmlldyA9IGdldENoYW5uZWxzVmlldyhjaGFubmVsc1ZpZXdTZXR0aW5nLCB7XG4gICAgICAgIGNhblZpZXdCeUNhdGVnb3J5OiBCb29sZWFuKGNoYW5uZWxzQnlDYXRlZ29yeSkgJiYgdmlld3MgJiYgdmlld3MuaW5jbHVkZXMoXCJieS1jYXRlZ29yeVwiKSxcbiAgICAgICAgY2FuVmlld0J5UG9wdWxhcml0eTogQm9vbGVhbihjaGFubmVsc0J5UG9wdWxhcml0eSlcbiAgICB9KTtcbiAgICB2YXIgY2hhbm5lbHNWaWV3ID0gdmlldyB8fCBkZWZhdWx0Q2hhbm5lbHNWaWV3O1xuICAgIHZhciBvblZpZXdDaGFuZ2UgPSB1c2VDYWxsYmFjayhmdW5jdGlvbih2aWV3KSB7XG4gICAgICAgIHNldFZpZXcodmlldyk7XG4gICAgICAgIGlmIChzaG91bGRTYXZlQ2hhbm5lbHNWaWV3KSB7XG4gICAgICAgICAgICBkaXNwYXRjaChzYXZlQ2hhbm5lbHNWaWV3KHtcbiAgICAgICAgICAgICAgICBjaGFubmVsc1ZpZXc6IHZpZXcsXG4gICAgICAgICAgICAgICAgdXNlclNldHRpbmdzOiB1c2VyU2V0dGluZ3NcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgZGlzcGF0Y2hcbiAgICBdKTtcbiAgICB2YXIgaXNDaGFubmVsU2VsZWN0ZWQgPSB1c2VDYWxsYmFjayhmdW5jdGlvbihjaGFubmVsKSB7XG4gICAgICAgIHJldHVybiBoaWdobGlnaHRTZWxlY3RlZENoYW5uZWwgJiYgc2VsZWN0ZWRDaGFubmVsICYmIGNoYW5uZWwuaWQgPT09IHNlbGVjdGVkQ2hhbm5lbC5pZDtcbiAgICB9LCBbXG4gICAgICAgIGhpZ2hsaWdodFNlbGVjdGVkQ2hhbm5lbCxcbiAgICAgICAgc2VsZWN0ZWRDaGFubmVsXG4gICAgXSk7XG4gICAgdmFyIGdldENoYW5uZWxzTGlzdEl0ZW1zID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24oKSB7XG4gICAgICAgIHN3aXRjaChjaGFubmVsc1ZpZXcpe1xuICAgICAgICAgICAgY2FzZSBcImJ5LWNhdGVnb3J5XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoYW5uZWxzQnlDYXRlZ29yeS5yZWR1Y2UoZnVuY3Rpb24oYWxsLCBjYXRlZ29yeSwgaSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWxsLmNvbmNhdChbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBjYXRlZ29yeS5jYXRlZ29yeSB8fCBcIuKAlFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5OiBjYXRlZ29yeS5jYXRlZ29yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdDogaSA9PT0gMFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdKS5jb25jYXQoY2F0ZWdvcnkuY2hhbm5lbHMubWFwKGZ1bmN0aW9uKGNoYW5uZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBjaGFubmVsLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWw6IGNoYW5uZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGlzQ2hhbm5lbFNlbGVjdGVkKGNoYW5uZWwpXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgY2FzZSBcImxpc3RcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gKGZpbHRlcmVkQ2hhbm5lbHMgfHwgY2hhbm5lbHNCeVBvcHVsYXJpdHkgfHwgY2hhbm5lbHMpLmZpbHRlcihmdW5jdGlvbihjaGFubmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzaG93QWxsQ2hhbm5lbHMgfHwgIWNoYW5uZWwuaXNIaWRkZW47XG4gICAgICAgICAgICAgICAgfSkubWFwKGZ1bmN0aW9uKGNoYW5uZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY2hhbm5lbC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWw6IGNoYW5uZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogaXNDaGFubmVsU2VsZWN0ZWQoY2hhbm5lbClcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgLy8gVW5zdXBwb3J0ZWQgYGNoYW5uZWxzVmlld2AuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBjaGFubmVsc1ZpZXcsXG4gICAgICAgIGNoYW5uZWxzLFxuICAgICAgICBjaGFubmVsc0J5UG9wdWxhcml0eSxcbiAgICAgICAgY2hhbm5lbHNCeUNhdGVnb3J5LFxuICAgICAgICBmaWx0ZXJlZENoYW5uZWxzLFxuICAgICAgICBpc0NoYW5uZWxTZWxlY3RlZCxcbiAgICAgICAgc2hvd0FsbENoYW5uZWxzXG4gICAgXSk7XG4gICAgdmFyIGxvYWRDaGFubmVsc0xpc3QgPSB1c2VDYWxsYmFjaygvKiNfX1BVUkVfXyovIF9hc3luY190b19nZW5lcmF0b3IoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfdHNfZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uKF9zdGF0ZSkge1xuICAgICAgICAgICAgc3dpdGNoKF9zdGF0ZS5sYWJlbCl7XG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKGdldENoYW5uZWxzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyU2V0dGluZ3M6IHVzZXJTZXR0aW5ncyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlOiBkYXRhU291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpRGF0YVNvdXJjZTogbXVsdGlEYXRhU291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VzOiBtZXNzYWdlc1xuICAgICAgICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBfc3RhdGUuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KSwgW1xuICAgICAgICBkaXNwYXRjaCxcbiAgICAgICAgdXNlclNldHRpbmdzLFxuICAgICAgICBkYXRhU291cmNlLFxuICAgICAgICBtdWx0aURhdGFTb3VyY2UsXG4gICAgICAgIG1lc3NhZ2VzXG4gICAgXSk7XG4gICAgaWYgKCFjaGFubmVscykge1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyBfanN4cyhcInBcIiwge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiBcIkNoYW5uZWxzLWVycm9yXCIsXG4gICAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgICAgIC8qI19fUFVSRV9fKi8gX2pzeChcInNwYW5cIiwge1xuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IFwiQ2hhbm5lbHMtZXJyb3JUZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBtZXNzYWdlcy5ib2FyZHMuZXJyb3JcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAvKiNfX1BVUkVfXyovIF9qc3goXCJiclwiLCB7fSksXG4gICAgICAgICAgICAgICAgLyojX19QVVJFX18qLyBfanN4KEJ1dHRvbiwge1xuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IFwiQ2hhbm5lbHMtZXJyb3JSZXRyeVwiLFxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiBsb2FkQ2hhbm5lbHNMaXN0LFxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogbWVzc2FnZXMuYWN0aW9ucy5yZXRyeVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBdXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gLyojX19QVVJFX18qLyBfanN4cyhcIm5hdlwiLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJDaGFubmVsc1wiLFxuICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgdmlld3MgJiYgdmlld3MuaW5jbHVkZXMoXCJsaXN0XCIpICYmIGNoYW5uZWxzQnlQb3B1bGFyaXR5ICYmIGNoYW5uZWxzQnlDYXRlZ29yeSAmJiB2aWV3cy5pbmNsdWRlcyhcImJ5LWNhdGVnb3J5XCIpICYmIC8qI19fUFVSRV9fKi8gX2pzeChDaGFubmVsc0xpc3RWaWV3U3dpdGNoZXIsIHtcbiAgICAgICAgICAgICAgICB2aWV3OiBjaGFubmVsc1ZpZXcsXG4gICAgICAgICAgICAgICAgb25WaWV3Q2hhbmdlOiBvblZpZXdDaGFuZ2VcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc2hvd0FsbENoYW5uZWxzICYmIGNoYW5uZWxzVmlldyA9PT0gXCJsaXN0XCIgJiYgLyojX19QVVJFX18qLyBfanN4KENoYW5uZWxzTGlzdFNlYXJjaCwge1xuICAgICAgICAgICAgICAgIGNoYW5uZWxzOiBjaGFubmVscyB8fCBjaGFubmVsc0J5UG9wdWxhcml0eSxcbiAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRzOiBzZXRGaWx0ZXJlZENoYW5uZWxzXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIC8qI19fUFVSRV9fKi8gX2pzeChMaXN0Q29tcG9uZW50LCB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKFwiQ2hhbm5lbHMtbGlzdFwiLCB7XG4gICAgICAgICAgICAgICAgICAgIC8vICdDaGFubmVscy1saXN0LS1saXN0JzogY2hhbm5lbHNWaWV3ID09PSAnbGlzdCcsXG4gICAgICAgICAgICAgICAgICAgIFwiQ2hhbm5lbHMtbGlzdC0tYnktY2F0ZWdvcnlcIjogY2hhbm5lbHNWaWV3ID09PSBcImJ5LWNhdGVnb3J5XCJcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogZ2V0Q2hhbm5lbHNMaXN0SXRlbXMoKVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAhc2hvd0FsbENoYW5uZWxzICYmIHNob3dBbGxDaGFubmVsc0xpbmsgJiYgKGhhc01vcmVDaGFubmVscyB8fCBkYXRhU291cmNlLmNvbnRlbnRDYXRlZ29yeVVuc3BlY2lmaWVkKSAmJiAvKiNfX1BVUkVfXyovIF9qc3goXCJkaXZcIiwge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJDaGFubmVscy1zaG93QWxsV3JhcHBlclwiLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovIF9qc3goTGluaywge1xuICAgICAgICAgICAgICAgICAgICB0bzogXCIvY2hhbm5lbHNcIixcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBcIkNoYW5uZWxzLXNob3dBbGxcIixcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IG1lc3NhZ2VzLmJvYXJkcy5zaG93QWxsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICB9KTtcbn1cbmV4cG9ydCB2YXIgY2hhbm5lbFNoYXBlID0ge1xuICAgIGlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICBkZXNjcmlwdGlvbjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBjb21tZW50c1BlckhvdXI6IFByb3BUeXBlcy5udW1iZXJcbn07XG5DaGFubmVsc0xpc3RCYXNlLnByb3BUeXBlcyA9IHtcbiAgICB2aWV3czogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mKFtcbiAgICAgICAgXCJsaXN0XCIsXG4gICAgICAgIFwiYnktY2F0ZWdvcnlcIlxuICAgIF0pKSxcbiAgICBjaGFubmVsczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLnNoYXBlKGNoYW5uZWxTaGFwZSkpLFxuICAgIGNoYW5uZWxzQnlQb3B1bGFyaXR5OiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuc2hhcGUoY2hhbm5lbFNoYXBlKSksXG4gICAgY2hhbm5lbHNCeUNhdGVnb3J5OiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgICBjYXRlZ29yeTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgICAgICBjaGFubmVsczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLnNoYXBlKGNoYW5uZWxTaGFwZSkpLmlzUmVxdWlyZWRcbiAgICB9KSksXG4gICAgY2hhbm5lbHNWaWV3OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHNob3VsZFNhdmVDaGFubmVsc1ZpZXc6IFByb3BUeXBlcy5ib29sLFxuICAgIHNob3dBbGxDaGFubmVsczogUHJvcFR5cGVzLmJvb2wsXG4gICAgc2hvd0FsbENoYW5uZWxzTGluazogUHJvcFR5cGVzLmJvb2wsXG4gICAgc2VsZWN0ZWRDaGFubmVsOiBQcm9wVHlwZXMuc2hhcGUoY2hhbm5lbFNoYXBlKSxcbiAgICBoaWdobGlnaHRTZWxlY3RlZENoYW5uZWw6IFByb3BUeXBlcy5ib29sLFxuICAgIC8vIGlzQ2hhbm5lbE9yVGhyZWFkTG9jYXRpb246IFByb3BUeXBlcy5ib29sLFxuICAgIGhhc01vcmVDaGFubmVsczogUHJvcFR5cGVzLmJvb2wsXG4gICAgLy8gZGlzcGF0Y2g6IFByb3BUeXBlcy5mdW5jLFxuICAgIGxpc3RDb21wb25lbnQ6IFByb3BUeXBlcy5lbGVtZW50VHlwZS5pc1JlcXVpcmVkLFxuICAgIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZ1xufTtcbmZ1bmN0aW9uIGdldENoYW5uZWxzVmlldyhjaGFubmVsc1ZpZXcsIHBhcmFtKSB7XG4gICAgdmFyIGNhblZpZXdCeUNhdGVnb3J5ID0gcGFyYW0uY2FuVmlld0J5Q2F0ZWdvcnksIGNhblZpZXdCeVBvcHVsYXJpdHkgPSBwYXJhbS5jYW5WaWV3QnlQb3B1bGFyaXR5O1xuICAgIHN3aXRjaChjaGFubmVsc1ZpZXcpe1xuICAgICAgICBjYXNlIFwiYnktY2F0ZWdvcnlcIjpcbiAgICAgICAgICAgIGlmIChjYW5WaWV3QnlDYXRlZ29yeSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjaGFubmVsc1ZpZXc7XG4gICAgICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJsaXN0XCI6XG4gICAgICAgICAgICByZXR1cm4gY2hhbm5lbHNWaWV3O1xuICAgIH1cbiAgICBpZiAoY2FuVmlld0J5UG9wdWxhcml0eSkge1xuICAgICAgICByZXR1cm4gXCJsaXN0XCI7XG4gICAgfVxuICAgIGlmIChjYW5WaWV3QnlDYXRlZ29yeSkge1xuICAgICAgICByZXR1cm4gXCJieS1jYXRlZ29yeVwiO1xuICAgIH1cbiAgICByZXR1cm4gXCJsaXN0XCI7XG59XG5cblxuY29uc3QgJFJlYWN0UmVmcmVzaE1vZHVsZUlkJCA9IF9fd2VicGFja19yZXF1aXJlX18uJFJlZnJlc2gkLm1vZHVsZUlkO1xuY29uc3QgJFJlYWN0UmVmcmVzaEN1cnJlbnRFeHBvcnRzJCA9IF9fcmVhY3RfcmVmcmVzaF91dGlsc19fLmdldE1vZHVsZUV4cG9ydHMoXG5cdCRSZWFjdFJlZnJlc2hNb2R1bGVJZCRcbik7XG5cbmZ1bmN0aW9uICRSZWFjdFJlZnJlc2hNb2R1bGVSdW50aW1lJChleHBvcnRzKSB7XG5cdGlmIChpbXBvcnQubWV0YS53ZWJwYWNrSG90KSB7XG5cdFx0bGV0IGVycm9yT3ZlcmxheTtcblx0XHRpZiAodHlwZW9mIF9fcmVhY3RfcmVmcmVzaF9lcnJvcl9vdmVybGF5X18gIT09ICd1bmRlZmluZWQnKSB7XG5cdFx0XHRlcnJvck92ZXJsYXkgPSBfX3JlYWN0X3JlZnJlc2hfZXJyb3Jfb3ZlcmxheV9fO1xuXHRcdH1cblx0XHRsZXQgdGVzdE1vZGU7XG5cdFx0aWYgKHR5cGVvZiBfX3JlYWN0X3JlZnJlc2hfdGVzdF9fICE9PSAndW5kZWZpbmVkJykge1xuXHRcdFx0dGVzdE1vZGUgPSBfX3JlYWN0X3JlZnJlc2hfdGVzdF9fO1xuXHRcdH1cblx0XHRyZXR1cm4gX19yZWFjdF9yZWZyZXNoX3V0aWxzX18uZXhlY3V0ZVJ1bnRpbWUoXG5cdFx0XHRleHBvcnRzLFxuXHRcdFx0JFJlYWN0UmVmcmVzaE1vZHVsZUlkJCxcblx0XHRcdGltcG9ydC5tZXRhLndlYnBhY2tIb3QsXG5cdFx0XHRlcnJvck92ZXJsYXksXG5cdFx0XHR0ZXN0TW9kZVxuXHRcdCk7XG5cdH1cbn1cblxuaWYgKHR5cGVvZiBQcm9taXNlICE9PSAndW5kZWZpbmVkJyAmJiAkUmVhY3RSZWZyZXNoQ3VycmVudEV4cG9ydHMkIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuXHQkUmVhY3RSZWZyZXNoQ3VycmVudEV4cG9ydHMkLnRoZW4oJFJlYWN0UmVmcmVzaE1vZHVsZVJ1bnRpbWUkKTtcbn0gZWxzZSB7XG5cdCRSZWFjdFJlZnJlc2hNb2R1bGVSdW50aW1lJCgkUmVhY3RSZWZyZXNoQ3VycmVudEV4cG9ydHMkKTtcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
//# sourceURL=webpack-internal:///./src/components/ChannelsList/ChannelsListBase.js

@kdy1
Copy link
Member

kdy1 commented Apr 21, 2024

#7435

@kdy1 kdy1 closed this as not planned Won't fix, can't repro, duplicate, stale Apr 21, 2024
@catamphetamine
Copy link
Author

@kdy1 FYI: the issue you've linked doesn't seem to describe this case.

In any case, here're the final thoughts:

The reason seems to be that before 1.3.105 it compiled the source code as var channelShape = ... but starting with 1.3.105 it started compiling the same code as const channelShape = ... and there's a difference between const and var in that a variable declared with var can be used before it is declared whereas a variable declared with const cannot.

@catamphetamine
Copy link
Author

@kdy1 Ah, ok, you meant "circular dependency". Ok, I'll see if there's one, thanks. Looks like I've potentially found one.

This man seems to have been having the same issue: #8787

@swc-bot
Copy link
Collaborator

swc-bot commented May 21, 2024

This closed issue has been automatically locked because it had no new activity for a month. If you are running into a similar issue, please create a new issue with the steps to reproduce. Thank you.

@swc-project swc-project locked as resolved and limited conversation to collaborators May 21, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Development

No branches or pull requests

3 participants