@operato/menu 10.29.31 → 10.29.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,23 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ### [10.29.36](https://github.com/hatiolab/operato/compare/v10.29.35...v10.29.36) (2026-10-17)
7
+
8
+ **Note:** Version bump only for package @operato/menu
9
+
10
+
11
+
12
+
13
+
14
+ ### [10.29.35](https://github.com/hatiolab/operato/compare/v10.29.34...v10.29.35) (2026-10-16)
15
+
16
+
17
+ ### :rocket: New Features
18
+
19
+ * **menu:** a page can fold the rail while it is open ([00800f5](https://github.com/hatiolab/operato/commit/00800f56530e1d945b417533507fd9baa063ce64))
20
+
21
+
22
+
6
23
  ### [10.29.31](https://github.com/hatiolab/operato/compare/v10.29.30...v10.29.31) (2026-10-14)
7
24
 
8
25
  **Note:** Version bump only for package @operato/menu
@@ -33,9 +33,14 @@ export type Where = {
33
33
  page: string;
34
34
  /** 그 화면 안의 자리. 없을 수 있다. */
35
35
  resourceId?: string;
36
- /** 화면이 스스로 「나는 이 메뉴에 딸렸다」고 말한 것. */
36
+ /**
37
+ * 화면이 스스로 「나는 이 메뉴에 딸렸다」고 말한 것.
38
+ *
39
+ * `rail` is the page's word on the rail while it is open (see `railCollapsed` in `menu-mode.ts`).
40
+ */
37
41
  context?: {
38
42
  menu?: string;
43
+ rail?: string;
39
44
  };
40
45
  };
41
46
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"menu-active.js","sourceRoot":"","sources":["../../src/menu-active.ts"],"names":[],"mappings":"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","sourcesContent":["import { Menu } from './types.js'\n\n/**\n * 지금 보고 있는 자리에 해당하는 메뉴를 찾는다.\n *\n * ## 왜 순수 함수로 꺼냈나\n *\n * 이 규칙이 컴포넌트의 `willUpdate` 안에 있었고, 두 번 조용히 깨졌다.\n *\n * ```\n * 최상위가 하위의 표시를 삼켰다 최상위마다 하위 하나가 표시를 못 받았다\n * 손으로 여닫은 것이 되돌려졌다 매 렌더마다 주소로 다시 계산되니까\n * ```\n *\n * 둘 다 화면을 눈으로 보고서야 알았다. 순수 함수면 시험으로 못박을 수 있다\n * (§`test/menu-active.test.ts`).\n *\n * ## 두 값을 낸다\n *\n * ```\n * top 하위가 펼쳐질 묶음\n * menu 지금 보고 있는 그 줄 — 강조를 받는 자리\n * ```\n *\n * 최상위가 그 자리일 수도 있고(하위가 없는 묶음) 하위가 그 자리일 수도 있다.\n */\nexport type ActiveMenus = { top?: Menu; menu?: Menu }\n\n/** 지금 어디를 보고 있나. 라우터가 주는 것을 그대로 받는다. */\nexport type Where = {\n /** 화면 이름. 라우터가 주소를 두 토막으로 자른 앞쪽이다. */\n page: string\n /** 그 화면 안의 자리. 없을 수 있다. */\n resourceId?: string\n /** 화면이 스스로 「나는 이 메뉴에 딸렸다」고 말한 것. */\n context?: { menu?: string }\n}\n\n/**\n * 사용자가 손으로 정한 펼침.\n *\n * ```\n * undefined 정한 적 없다 — 주소가 가리키는 것을 쓴다\n * null 닫았다\n * Menu 그 묶음을 열었다\n * ```\n *\n * 두 값(열었다·닫았다)을 다 담아야 한다. 한때 「닫았다」만 기억했는데, 그러면 화살표로 다른\n * 묶음을 열 수 없었다 — 그 방향도 주소가 되돌린다.\n */\nexport type UserOpened = Menu | null | undefined\n\n/** 메뉴가 선언한 경로. 쿼리는 떼고 본다. */\nfunction declaredPath(menu: Menu) {\n return menu.path?.split('?')[0]\n}\n\n/**\n * 주소를 한 문자열로 잇는다.\n *\n * 라우터는 주소를 두 토막으로 자른다. 메뉴는 화면을 가리키지만 주소는 그 화면 안의 자리까지\n * 담을 수 있다.\n *\n * ```\n * /approval-pending-list/reference 결재함의 참조 묶음\n * /quality-list/disposition 품질 화면의 부적합 처분\n * ```\n */\nexport function joinedPath(where: Where) {\n return where.resourceId ? `${where.page}/${where.resourceId}` : where.page\n}\n\n/** 메뉴가 **바로 그 자리**를 가리키는가. 주소가 `a/b` 이고 메뉴도 `a/b` 인 경우다. */\nfunction pointsAtSamePlace(menu: Menu, path: string) {\n return declaredPath(menu) === path\n}\n\n/**\n * 메뉴가 **같은 화면**을 가리키는가.\n *\n * 메뉴가 `a/b` 를 선언했다면 여기서는 안 맞는다(`a/b` ≠ `a`). 그 경우는 위의 자리 비교가 잡는다.\n */\nfunction pointsAtSamePage(menu: Menu, page: string) {\n return declaredPath(menu) === page\n}\n\n/**\n * 화면이 스스로 「나는 이 메뉴에 딸렸다」고 말하는가.\n *\n * 목록에서 줄을 눌러 들어가는 상세 화면은 메뉴에 아예 없다. 그러면 왼쪽 메뉴에 아무 표시가 없고,\n * 들어간 사람이 자기가 어디에 있는지 잃는다.\n *\n * 어느 목록에서 열리는지는 **그 화면이 가장 잘 안다** — 메뉴 쪽에 상세 화면 목록을 나열해 두면\n * 화면이 늘 때마다 그 목록을 같이 고쳐야 하고, 빠뜨린 화면만 조용히 표시를 잃는다.\n */\nfunction pageSaysItBelongsHere(menu: Menu, context?: { menu?: string }) {\n const belongsTo = context?.menu\n return !!belongsTo && declaredPath(menu) === belongsTo\n}\n\n/** 앱이 직접 판정을 주는 경우. 선언한 경로보다 뒤에 본다 — 적어 둔 경로가 더 분명한 뜻이다. */\nfunction saysItIsActive(menu: Menu, path: string, page: string) {\n return !!(menu.active && typeof menu.active === 'function' && menu.active.call(menu, { path, page } as any))\n}\n\n/**\n * 최상위와 그 안의 메뉴를 훑어 처음 맞는 것을 찾는다.\n *\n * ── 하위를 먼저 본다 ────────────────────────────────────────────────────────\n * **최상위의 주소는 대개 자기 하위 하나의 주소다.** 그 최상위를 눌렀을 때 갈 곳이 필요하고,\n * 그 자리를 하위 하나가 맡는다.\n *\n * ```\n * { name: 'my-work', path: 'todo-list', menus: [{ name: 'todo', path: 'todo-list' }, …] }\n * ```\n *\n * 최상위를 먼저 보면 주소 `todo-list` 에서 **최상위가 매치를 삼킨다.** 그러면 「할 일」이 표시를\n * 못 받고, 최상위마다 하위 하나가 그렇게 된다.\n *\n * 하위가 **더 구체적인 답**이다. 최상위는 묶음이고 그 주소는 하위로 가는 지름길이다.\n */\nfunction lookup(menus: Menu[], matches: (menu: Menu) => boolean): ActiveMenus | undefined {\n for (const top of menus) {\n const inner = top.menus?.find(matches)\n if (inner) {\n return { top, menu: inner }\n }\n\n if (matches(top)) {\n return { top, menu: top }\n }\n }\n\n return undefined\n}\n\n/**\n * 주소가 가리키는 메뉴.\n *\n * ── 여러 번 훑는 이유 — 순서가 뜻을 갖는다 ──────────────────────────────────\n * `a` 와 `a/b` 두 메뉴가 함께 있고 주소가 `a/b` 이면 **`a/b` 가 이겨야 한다.** 한 번에 훑으면서\n * 조건을 OR 로 묶으면 목록에서 먼저 나온 `a` 가 이기고, 실제로 보고 있는 자리를 가리키는 메뉴가\n * 표시를 못 받는다.\n *\n * 분명한 것부터 본다 — 바로 그 자리 · 화면이 말한 것 · 같은 화면 · 앱이 준 판정.\n */\nexport function menuForRoute(menus: Menu[], where: Where): ActiveMenus {\n const path = joinedPath(where)\n const page = where.page\n\n const found =\n lookup(menus, menu => pointsAtSamePlace(menu, path)) ||\n lookup(menus, menu => pageSaysItBelongsHere(menu, where.context)) ||\n lookup(menus, menu => pointsAtSamePage(menu, page) || saysItIsActive(menu, path, page))\n\n return { top: found?.top, menu: found?.menu || found?.top }\n}\n\n/**\n * 화면에 그릴 두 값을 정한다.\n *\n * ── 무엇이 무엇을 이기나 ────────────────────────────────────────────────────\n * ```\n * top 손으로 정한 것이 있으면 그것. 없으면 주소가 가리키는 것\n * menu 늘 주소에서 온다\n * ```\n *\n * `menu` 를 손으로 정한 것에 맡기지 않는 이유는, **다른 묶음을 열어 놓고 둘러보는 동안에도\n * 자기가 어느 화면에 있는지는 알아야** 하기 때문이다.\n */\nexport function resolveActive(menus: Menu[], where: Where, userOpened: UserOpened): ActiveMenus {\n const byRoute = menuForRoute(menus, where)\n\n return {\n top: userOpened === undefined ? byRoute.top : (userOpened ?? undefined),\n menu: byRoute.menu\n }\n}\n"]}
1
+ {"version":3,"file":"menu-active.js","sourceRoot":"","sources":["../../src/menu-active.ts"],"names":[],"mappings":"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","sourcesContent":["import { Menu } from './types.js'\n\n/**\n * 지금 보고 있는 자리에 해당하는 메뉴를 찾는다.\n *\n * ## 왜 순수 함수로 꺼냈나\n *\n * 이 규칙이 컴포넌트의 `willUpdate` 안에 있었고, 두 번 조용히 깨졌다.\n *\n * ```\n * 최상위가 하위의 표시를 삼켰다 최상위마다 하위 하나가 표시를 못 받았다\n * 손으로 여닫은 것이 되돌려졌다 매 렌더마다 주소로 다시 계산되니까\n * ```\n *\n * 둘 다 화면을 눈으로 보고서야 알았다. 순수 함수면 시험으로 못박을 수 있다\n * (§`test/menu-active.test.ts`).\n *\n * ## 두 값을 낸다\n *\n * ```\n * top 하위가 펼쳐질 묶음\n * menu 지금 보고 있는 그 줄 — 강조를 받는 자리\n * ```\n *\n * 최상위가 그 자리일 수도 있고(하위가 없는 묶음) 하위가 그 자리일 수도 있다.\n */\nexport type ActiveMenus = { top?: Menu; menu?: Menu }\n\n/** 지금 어디를 보고 있나. 라우터가 주는 것을 그대로 받는다. */\nexport type Where = {\n /** 화면 이름. 라우터가 주소를 두 토막으로 자른 앞쪽이다. */\n page: string\n /** 그 화면 안의 자리. 없을 수 있다. */\n resourceId?: string\n /**\n * 화면이 스스로 「나는 이 메뉴에 딸렸다」고 말한 것.\n *\n * `rail` is the page's word on the rail while it is open (see `railCollapsed` in `menu-mode.ts`).\n */\n context?: { menu?: string; rail?: string }\n}\n\n/**\n * 사용자가 손으로 정한 펼침.\n *\n * ```\n * undefined 정한 적 없다 — 주소가 가리키는 것을 쓴다\n * null 닫았다\n * Menu 그 묶음을 열었다\n * ```\n *\n * 두 값(열었다·닫았다)을 다 담아야 한다. 한때 「닫았다」만 기억했는데, 그러면 화살표로 다른\n * 묶음을 열 수 없었다 — 그 방향도 주소가 되돌린다.\n */\nexport type UserOpened = Menu | null | undefined\n\n/** 메뉴가 선언한 경로. 쿼리는 떼고 본다. */\nfunction declaredPath(menu: Menu) {\n return menu.path?.split('?')[0]\n}\n\n/**\n * 주소를 한 문자열로 잇는다.\n *\n * 라우터는 주소를 두 토막으로 자른다. 메뉴는 화면을 가리키지만 주소는 그 화면 안의 자리까지\n * 담을 수 있다.\n *\n * ```\n * /approval-pending-list/reference 결재함의 참조 묶음\n * /quality-list/disposition 품질 화면의 부적합 처분\n * ```\n */\nexport function joinedPath(where: Where) {\n return where.resourceId ? `${where.page}/${where.resourceId}` : where.page\n}\n\n/** 메뉴가 **바로 그 자리**를 가리키는가. 주소가 `a/b` 이고 메뉴도 `a/b` 인 경우다. */\nfunction pointsAtSamePlace(menu: Menu, path: string) {\n return declaredPath(menu) === path\n}\n\n/**\n * 메뉴가 **같은 화면**을 가리키는가.\n *\n * 메뉴가 `a/b` 를 선언했다면 여기서는 안 맞는다(`a/b` ≠ `a`). 그 경우는 위의 자리 비교가 잡는다.\n */\nfunction pointsAtSamePage(menu: Menu, page: string) {\n return declaredPath(menu) === page\n}\n\n/**\n * 화면이 스스로 「나는 이 메뉴에 딸렸다」고 말하는가.\n *\n * 목록에서 줄을 눌러 들어가는 상세 화면은 메뉴에 아예 없다. 그러면 왼쪽 메뉴에 아무 표시가 없고,\n * 들어간 사람이 자기가 어디에 있는지 잃는다.\n *\n * 어느 목록에서 열리는지는 **그 화면이 가장 잘 안다** — 메뉴 쪽에 상세 화면 목록을 나열해 두면\n * 화면이 늘 때마다 그 목록을 같이 고쳐야 하고, 빠뜨린 화면만 조용히 표시를 잃는다.\n */\nfunction pageSaysItBelongsHere(menu: Menu, context?: { menu?: string }) {\n const belongsTo = context?.menu\n return !!belongsTo && declaredPath(menu) === belongsTo\n}\n\n/** 앱이 직접 판정을 주는 경우. 선언한 경로보다 뒤에 본다 — 적어 둔 경로가 더 분명한 뜻이다. */\nfunction saysItIsActive(menu: Menu, path: string, page: string) {\n return !!(menu.active && typeof menu.active === 'function' && menu.active.call(menu, { path, page } as any))\n}\n\n/**\n * 최상위와 그 안의 메뉴를 훑어 처음 맞는 것을 찾는다.\n *\n * ── 하위를 먼저 본다 ────────────────────────────────────────────────────────\n * **최상위의 주소는 대개 자기 하위 하나의 주소다.** 그 최상위를 눌렀을 때 갈 곳이 필요하고,\n * 그 자리를 하위 하나가 맡는다.\n *\n * ```\n * { name: 'my-work', path: 'todo-list', menus: [{ name: 'todo', path: 'todo-list' }, …] }\n * ```\n *\n * 최상위를 먼저 보면 주소 `todo-list` 에서 **최상위가 매치를 삼킨다.** 그러면 「할 일」이 표시를\n * 못 받고, 최상위마다 하위 하나가 그렇게 된다.\n *\n * 하위가 **더 구체적인 답**이다. 최상위는 묶음이고 그 주소는 하위로 가는 지름길이다.\n */\nfunction lookup(menus: Menu[], matches: (menu: Menu) => boolean): ActiveMenus | undefined {\n for (const top of menus) {\n const inner = top.menus?.find(matches)\n if (inner) {\n return { top, menu: inner }\n }\n\n if (matches(top)) {\n return { top, menu: top }\n }\n }\n\n return undefined\n}\n\n/**\n * 주소가 가리키는 메뉴.\n *\n * ── 여러 번 훑는 이유 — 순서가 뜻을 갖는다 ──────────────────────────────────\n * `a` 와 `a/b` 두 메뉴가 함께 있고 주소가 `a/b` 이면 **`a/b` 가 이겨야 한다.** 한 번에 훑으면서\n * 조건을 OR 로 묶으면 목록에서 먼저 나온 `a` 가 이기고, 실제로 보고 있는 자리를 가리키는 메뉴가\n * 표시를 못 받는다.\n *\n * 분명한 것부터 본다 — 바로 그 자리 · 화면이 말한 것 · 같은 화면 · 앱이 준 판정.\n */\nexport function menuForRoute(menus: Menu[], where: Where): ActiveMenus {\n const path = joinedPath(where)\n const page = where.page\n\n const found =\n lookup(menus, menu => pointsAtSamePlace(menu, path)) ||\n lookup(menus, menu => pageSaysItBelongsHere(menu, where.context)) ||\n lookup(menus, menu => pointsAtSamePage(menu, page) || saysItIsActive(menu, path, page))\n\n return { top: found?.top, menu: found?.menu || found?.top }\n}\n\n/**\n * 화면에 그릴 두 값을 정한다.\n *\n * ── 무엇이 무엇을 이기나 ────────────────────────────────────────────────────\n * ```\n * top 손으로 정한 것이 있으면 그것. 없으면 주소가 가리키는 것\n * menu 늘 주소에서 온다\n * ```\n *\n * `menu` 를 손으로 정한 것에 맡기지 않는 이유는, **다른 묶음을 열어 놓고 둘러보는 동안에도\n * 자기가 어느 화면에 있는지는 알아야** 하기 때문이다.\n */\nexport function resolveActive(menus: Menu[], where: Where, userOpened: UserOpened): ActiveMenus {\n const byRoute = menuForRoute(menus, where)\n\n return {\n top: userOpened === undefined ? byRoute.top : (userOpened ?? undefined),\n menu: byRoute.menu\n }\n}\n"]}
@@ -96,3 +96,37 @@ export declare function shouldAutoCollapse(width: number, flags: {
96
96
  rail?: boolean;
97
97
  collapsed?: boolean;
98
98
  }): boolean;
99
+ /**
100
+ * What a page may say about the rail while it is open.
101
+ *
102
+ * ```
103
+ * collapsed fold the rail while this page is open
104
+ * ```
105
+ *
106
+ * A canvas page (the Figure modeller) needs the width; a list page does not. The page knows which it is, so it says
107
+ * it in its `context` the same way it says which menu it belongs to (`context.menu`).
108
+ */
109
+ export type PageRail = 'collapsed';
110
+ /** Does the page ask for the rail to fold? Anything other than the one declared value is no request. */
111
+ export declare function pageAsksRailCollapsed(context?: {
112
+ rail?: string;
113
+ } | null): boolean;
114
+ /**
115
+ * Is the rail collapsed right now.
116
+ *
117
+ * ```
118
+ * stored what the person chose (kept in the browser)
119
+ * pageAsks the open page asked for the rail to fold
120
+ * onPage what the person chose on that page, if they toggled there
121
+ * ```
122
+ *
123
+ * ── The person's own choice is never overwritten ─────────────────────────────
124
+ * A page that asks only folds the rail while it is open. Leaving it brings back the stored state, and a toggle on
125
+ * that page lasts while the page is open and is not stored. Otherwise opening the modeller once would fold the rail
126
+ * in every other app screen from then on.
127
+ */
128
+ export declare function railCollapsed(state: {
129
+ stored: boolean;
130
+ pageAsks: boolean;
131
+ onPage?: boolean;
132
+ }): boolean;
@@ -97,4 +97,29 @@ export function shouldAutoCollapse(width, flags) {
97
97
  }
98
98
  return width > 0 && width <= AUTO_COLLAPSE_UNDER;
99
99
  }
100
+ /** Does the page ask for the rail to fold? Anything other than the one declared value is no request. */
101
+ export function pageAsksRailCollapsed(context) {
102
+ return (context === null || context === void 0 ? void 0 : context.rail) === 'collapsed';
103
+ }
104
+ /**
105
+ * Is the rail collapsed right now.
106
+ *
107
+ * ```
108
+ * stored what the person chose (kept in the browser)
109
+ * pageAsks the open page asked for the rail to fold
110
+ * onPage what the person chose on that page, if they toggled there
111
+ * ```
112
+ *
113
+ * ── The person's own choice is never overwritten ─────────────────────────────
114
+ * A page that asks only folds the rail while it is open. Leaving it brings back the stored state, and a toggle on
115
+ * that page lasts while the page is open and is not stored. Otherwise opening the modeller once would fold the rail
116
+ * in every other app screen from then on.
117
+ */
118
+ export function railCollapsed(state) {
119
+ var _a;
120
+ if (!state.pageAsks) {
121
+ return state.stored;
122
+ }
123
+ return (_a = state.onPage) !== null && _a !== void 0 ? _a : true;
124
+ }
100
125
  //# sourceMappingURL=menu-mode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"menu-mode.js","sourceRoot":"","sources":["../../src/menu-mode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAcH;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAgE;IACvF,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAChB,OAAO,MAAM,CAAA;IACf,CAAC;IAED,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAA;AACpD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,IAAc;IAC3C,OAAO,IAAI,KAAK,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAA;AACvD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAAC,IAAc;IACzC,OAAO,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,CAAA;AAC3C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,IAAc;IACxC,OAAO,IAAI,KAAK,gBAAgB,CAAA;AAClC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAA;AAEtC;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAa,EAAE,KAA8C;IAC9F,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACnC,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,mBAAmB,CAAA;AAClD,CAAC","sourcesContent":["/**\n * 왼쪽 메뉴가 지금 **어떤 모양으로 서 있나**, 그리고 그 모양에서 무엇이 달라지나.\n *\n * ## 왜 이 파일이 있나\n *\n * 이 규칙들이 컴포넌트 안에 흩어져 있었고, 한 자리를 고치면 다른 자리가 조용히 깨졌다.\n * 실제로 났던 것들이다.\n *\n * ```\n * 합계 배지 감추기 레일 스타일에 두었다 → 감추기 모드에서 그 기능만 빠졌다\n * 시스템 자리 레일 가지에만 두었다 → 감추기 모드에서 한 줄이 사라졌다\n * 팝업 · 노브 레일에만 걸었다 → 레일 밖에서 꾸밈 없이 떴다\n * 서랍 판정 속성만 만들고 넘기지 않았다 → 아무 일도 안 일어났다\n * ```\n *\n * 공통점은 **모양에 따라 달라지는 것과 달라지지 않는 것을 그때그때 판단한 것**이다. 그래서\n * 물음을 두 개로 줄이고 답을 한 자리에 모은다. 여기 있는 것은 순수 함수라 시험으로 못박을 수\n * 있다(§`test/menu-mode.test.ts`).\n *\n * ## 물음은 둘뿐이다\n *\n * ```\n * 하위를 어디에 여나 제자리 · 팝업\n * 최상위를 누르면 이동하나 한다 · 펼치기만\n * ```\n *\n * 나머지(이름을 보이나, 배지를 어디에 두나)는 CSS 가 모양 하나로 답한다.\n */\n\n/**\n * 메뉴의 모양.\n *\n * ```\n * list 늘 보이는 기존 메뉴. 폭이 고정이다\n * rail 늘 보이고 접을 수 있다\n * rail-collapsed 접힌 레일 — 아이콘만\n * drawer 숨어 있다가 화면 위에 겹쳐 뜬다(감추기 설정 · 휴대폰)\n * ```\n */\nexport type MenuMode = 'list' | 'rail' | 'rail-collapsed' | 'drawer'\n\n/**\n * 세 플래그에서 모양 하나를 정한다.\n *\n * **서랍이 가장 세다.** 숨어 있는 것을 접을 수는 없고, 화면 위에 뜬 것의 폭을 줄일 이유도 없다.\n * 그래서 서랍이면 레일·접힘을 보지 않는다.\n */\nexport function menuMode(flags: { rail?: boolean; collapsed?: boolean; drawer?: boolean }): MenuMode {\n if (flags.drawer) {\n return 'drawer'\n }\n\n if (!flags.rail) {\n return 'list'\n }\n\n return flags.collapsed ? 'rail-collapsed' : 'rail'\n}\n\n/**\n * 하위 메뉴를 어디에 여나.\n *\n * **접힌 레일에서만 팝업이다.** 56px 안에 들여쓴 목록이 들어가지 않는다.\n *\n * 서랍에서는 팝업이 아니다 — 화면 위에 뜬 서랍 옆에 고정 팝업이 설 자리가 없고, 서랍은 대개\n * 휴대폰에서 쓴다.\n */\nexport function childrenOpenAs(mode: MenuMode): 'inline' | 'popup' {\n return mode === 'rail-collapsed' ? 'popup' : 'inline'\n}\n\n/**\n * 최상위를 누르면 그 대표 화면으로 이동하나.\n *\n * 최상위 항목은 자기 대표 화면의 주소를 갖는다(대개 하위 하나의 주소다). 늘 보이는 메뉴에서는\n * 그것이 도움이 된다 — 누르면 어디든 도착한다.\n *\n * **서랍에서는 아니다.** 누르는 순간 서랍이 닫히므로 그 묶음의 나머지 하위를 볼 기회가 없다.\n * 휴대폰에서 「작업」을 누르면 작업지시로 튀고 나머지 다섯은 못 본다.\n *\n * 접힌 레일에서도 아니다 — 그때는 팝업을 열어 고르게 한다.\n */\nexport function topNavigates(mode: MenuMode): boolean {\n return mode === 'list' || mode === 'rail'\n}\n\n/**\n * 최상위 항목의 이름이 보이나.\n *\n * 접힌 레일만 아이콘뿐이다. 이 답은 CSS 가 쓰지만, 표를 한자리에서 읽게 하려고 여기 둔다.\n */\nexport function showsLabels(mode: MenuMode): boolean {\n return mode !== 'rail-collapsed'\n}\n\n/**\n * 이 폭 아래로 좁아지면 스스로 접는다.\n *\n * 208px 에서 이름이 다 들어간다. 140px 밑으로 가면 「기준정보」가 「기준…」이 되고 이름이 이름\n * 노릇을 못 한다. **그 상태로 두는 것보다 아이콘 줄이 낫다** — 아이콘은 좁아도 그대로 읽히고,\n * 하위는 팝업으로 열린다.\n */\nexport const AUTO_COLLAPSE_UNDER = 140\n\n/**\n * 지금 폭에서 스스로 접어야 하나.\n *\n * ── 되풀이를 막는 두 조건 ───────────────────────────────────────────────────\n * 접으면 폭이 56px 이 되어 이 판정에 다시 걸린다. 그래서 **이미 접혔으면 보지 않는다.**\n *\n * 그리고 폭이 0 일 때는 판단하지 않는다 — 처음 붙는 순간이나 감춰진 순간이라, 그때 접으면\n * 사용자가 고른 적 없는 상태가 남는다.\n */\nexport function shouldAutoCollapse(width: number, flags: { rail?: boolean; collapsed?: boolean }): boolean {\n if (!flags.rail || flags.collapsed) {\n return false\n }\n\n return width > 0 && width <= AUTO_COLLAPSE_UNDER\n}\n"]}
1
+ {"version":3,"file":"menu-mode.js","sourceRoot":"","sources":["../../src/menu-mode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAcH;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAgE;IACvF,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAChB,OAAO,MAAM,CAAA;IACf,CAAC;IAED,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAA;AACpD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,IAAc;IAC3C,OAAO,IAAI,KAAK,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAA;AACvD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAAC,IAAc;IACzC,OAAO,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,CAAA;AAC3C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,IAAc;IACxC,OAAO,IAAI,KAAK,gBAAgB,CAAA;AAClC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAA;AAEtC;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAa,EAAE,KAA8C;IAC9F,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACnC,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,mBAAmB,CAAA;AAClD,CAAC;AAcD,wGAAwG;AACxG,MAAM,UAAU,qBAAqB,CAAC,OAAkC;IACtE,OAAO,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,MAAK,WAAW,CAAA;AACtC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,aAAa,CAAC,KAA+D;;IAC3F,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC,MAAM,CAAA;IACrB,CAAC;IAED,OAAO,MAAA,KAAK,CAAC,MAAM,mCAAI,IAAI,CAAA;AAC7B,CAAC","sourcesContent":["/**\n * 왼쪽 메뉴가 지금 **어떤 모양으로 서 있나**, 그리고 그 모양에서 무엇이 달라지나.\n *\n * ## 왜 이 파일이 있나\n *\n * 이 규칙들이 컴포넌트 안에 흩어져 있었고, 한 자리를 고치면 다른 자리가 조용히 깨졌다.\n * 실제로 났던 것들이다.\n *\n * ```\n * 합계 배지 감추기 레일 스타일에 두었다 → 감추기 모드에서 그 기능만 빠졌다\n * 시스템 자리 레일 가지에만 두었다 → 감추기 모드에서 한 줄이 사라졌다\n * 팝업 · 노브 레일에만 걸었다 → 레일 밖에서 꾸밈 없이 떴다\n * 서랍 판정 속성만 만들고 넘기지 않았다 → 아무 일도 안 일어났다\n * ```\n *\n * 공통점은 **모양에 따라 달라지는 것과 달라지지 않는 것을 그때그때 판단한 것**이다. 그래서\n * 물음을 두 개로 줄이고 답을 한 자리에 모은다. 여기 있는 것은 순수 함수라 시험으로 못박을 수\n * 있다(§`test/menu-mode.test.ts`).\n *\n * ## 물음은 둘뿐이다\n *\n * ```\n * 하위를 어디에 여나 제자리 · 팝업\n * 최상위를 누르면 이동하나 한다 · 펼치기만\n * ```\n *\n * 나머지(이름을 보이나, 배지를 어디에 두나)는 CSS 가 모양 하나로 답한다.\n */\n\n/**\n * 메뉴의 모양.\n *\n * ```\n * list 늘 보이는 기존 메뉴. 폭이 고정이다\n * rail 늘 보이고 접을 수 있다\n * rail-collapsed 접힌 레일 — 아이콘만\n * drawer 숨어 있다가 화면 위에 겹쳐 뜬다(감추기 설정 · 휴대폰)\n * ```\n */\nexport type MenuMode = 'list' | 'rail' | 'rail-collapsed' | 'drawer'\n\n/**\n * 세 플래그에서 모양 하나를 정한다.\n *\n * **서랍이 가장 세다.** 숨어 있는 것을 접을 수는 없고, 화면 위에 뜬 것의 폭을 줄일 이유도 없다.\n * 그래서 서랍이면 레일·접힘을 보지 않는다.\n */\nexport function menuMode(flags: { rail?: boolean; collapsed?: boolean; drawer?: boolean }): MenuMode {\n if (flags.drawer) {\n return 'drawer'\n }\n\n if (!flags.rail) {\n return 'list'\n }\n\n return flags.collapsed ? 'rail-collapsed' : 'rail'\n}\n\n/**\n * 하위 메뉴를 어디에 여나.\n *\n * **접힌 레일에서만 팝업이다.** 56px 안에 들여쓴 목록이 들어가지 않는다.\n *\n * 서랍에서는 팝업이 아니다 — 화면 위에 뜬 서랍 옆에 고정 팝업이 설 자리가 없고, 서랍은 대개\n * 휴대폰에서 쓴다.\n */\nexport function childrenOpenAs(mode: MenuMode): 'inline' | 'popup' {\n return mode === 'rail-collapsed' ? 'popup' : 'inline'\n}\n\n/**\n * 최상위를 누르면 그 대표 화면으로 이동하나.\n *\n * 최상위 항목은 자기 대표 화면의 주소를 갖는다(대개 하위 하나의 주소다). 늘 보이는 메뉴에서는\n * 그것이 도움이 된다 — 누르면 어디든 도착한다.\n *\n * **서랍에서는 아니다.** 누르는 순간 서랍이 닫히므로 그 묶음의 나머지 하위를 볼 기회가 없다.\n * 휴대폰에서 「작업」을 누르면 작업지시로 튀고 나머지 다섯은 못 본다.\n *\n * 접힌 레일에서도 아니다 — 그때는 팝업을 열어 고르게 한다.\n */\nexport function topNavigates(mode: MenuMode): boolean {\n return mode === 'list' || mode === 'rail'\n}\n\n/**\n * 최상위 항목의 이름이 보이나.\n *\n * 접힌 레일만 아이콘뿐이다. 이 답은 CSS 가 쓰지만, 표를 한자리에서 읽게 하려고 여기 둔다.\n */\nexport function showsLabels(mode: MenuMode): boolean {\n return mode !== 'rail-collapsed'\n}\n\n/**\n * 이 폭 아래로 좁아지면 스스로 접는다.\n *\n * 208px 에서 이름이 다 들어간다. 140px 밑으로 가면 「기준정보」가 「기준…」이 되고 이름이 이름\n * 노릇을 못 한다. **그 상태로 두는 것보다 아이콘 줄이 낫다** — 아이콘은 좁아도 그대로 읽히고,\n * 하위는 팝업으로 열린다.\n */\nexport const AUTO_COLLAPSE_UNDER = 140\n\n/**\n * 지금 폭에서 스스로 접어야 하나.\n *\n * ── 되풀이를 막는 두 조건 ───────────────────────────────────────────────────\n * 접으면 폭이 56px 이 되어 이 판정에 다시 걸린다. 그래서 **이미 접혔으면 보지 않는다.**\n *\n * 그리고 폭이 0 일 때는 판단하지 않는다 — 처음 붙는 순간이나 감춰진 순간이라, 그때 접으면\n * 사용자가 고른 적 없는 상태가 남는다.\n */\nexport function shouldAutoCollapse(width: number, flags: { rail?: boolean; collapsed?: boolean }): boolean {\n if (!flags.rail || flags.collapsed) {\n return false\n }\n\n return width > 0 && width <= AUTO_COLLAPSE_UNDER\n}\n\n/**\n * What a page may say about the rail while it is open.\n *\n * ```\n * collapsed fold the rail while this page is open\n * ```\n *\n * A canvas page (the Figure modeller) needs the width; a list page does not. The page knows which it is, so it says\n * it in its `context` the same way it says which menu it belongs to (`context.menu`).\n */\nexport type PageRail = 'collapsed'\n\n/** Does the page ask for the rail to fold? Anything other than the one declared value is no request. */\nexport function pageAsksRailCollapsed(context?: { rail?: string } | null): boolean {\n return context?.rail === 'collapsed'\n}\n\n/**\n * Is the rail collapsed right now.\n *\n * ```\n * stored what the person chose (kept in the browser)\n * pageAsks the open page asked for the rail to fold\n * onPage what the person chose on that page, if they toggled there\n * ```\n *\n * ── The person's own choice is never overwritten ─────────────────────────────\n * A page that asks only folds the rail while it is open. Leaving it brings back the stored state, and a toggle on\n * that page lasts while the page is open and is not stored. Otherwise opening the modeller once would fold the rail\n * in every other app screen from then on.\n */\nexport function railCollapsed(state: { stored: boolean; pageAsks: boolean; onPage?: boolean }): boolean {\n if (!state.pageAsks) {\n return state.stored\n }\n\n return state.onPage ?? true\n}\n"]}
@@ -19,8 +19,21 @@ export declare class OxMenuPart extends LitElement {
19
19
  * 가로 메뉴(`landscape`)에는 뜻이 없다 — 접을 축이 다르다. 그때는 무시한다.
20
20
  */
21
21
  rail: boolean;
22
- /** 접힘 — 아이콘만. 사용자가 고른 것은 브라우저에 남긴다. */
22
+ /**
23
+ * 접힘 — 아이콘만. 사용자가 고른 것은 브라우저에 남긴다.
24
+ *
25
+ * This is the state the rail stands in now. What the person chose is `_storedCollapsed`; a page that asks for the
26
+ * rail to fold changes this value only while it is open (`railCollapsed`).
27
+ */
23
28
  collapsed: boolean;
29
+ /** What the person chose, kept in the browser. A page's request never writes here. */
30
+ private _storedCollapsed;
31
+ /** The open page asked for the rail to fold (`context.rail`). */
32
+ private _pageAsks;
33
+ /** What the person chose on the page that asked, while it is open. Forgotten when the page changes. */
34
+ private _onPage?;
35
+ /** The page the two values above were read on. */
36
+ private _railPage?;
24
37
  /**
25
38
  * 이 메뉴가 **서랍**인가 — 화면 위에 겹쳐 떴다가 닫히는 상태.
26
39
  *
@@ -71,7 +84,7 @@ export declare class OxMenuPart extends LitElement {
71
84
  * 치우고 있으므로, 그 짝을 같은 자리에 둔다.
72
85
  */
73
86
  private syncSplitter;
74
- protected updated(): void;
87
+ protected updated(changed: Map<PropertyKey, unknown>): void;
75
88
  /**
76
89
  * 접기/펼치기.
77
90
  *
@@ -79,7 +92,12 @@ export declare class OxMenuPart extends LitElement {
79
92
  * `twin-nav-rail` 이 같은 자리에서 같은 일을 한다.
80
93
  */
81
94
  private toggleCollapsed;
82
- /** 접힘을 정하고 남긴다. 스스로 접을 때와 손으로 접을 때가 이 뒷부분을 함께 쓴다. */
95
+ /**
96
+ * 접힘을 정하고 남긴다. 스스로 접을 때와 손으로 접을 때가 이 뒷부분을 함께 쓴다.
97
+ *
98
+ * On a page that asked for the rail to fold, the choice lasts while that page is open and is not stored -- leaving
99
+ * brings back what the person chose before. The resize event goes out from `updated`.
100
+ */
83
101
  private setCollapsed;
84
102
  _activeTopLevel?: Menu;
85
103
  _activeMenu?: Menu;
@@ -118,4 +136,11 @@ export declare class OxMenuPart extends LitElement {
118
136
  * 것을 넘기고 결과를 상태에 넣는 일만 한다.
119
137
  */
120
138
  private findActivePage;
139
+ /**
140
+ * Fold the rail while the open page asks for it, and bring back the person's choice when it no longer does.
141
+ *
142
+ * The rule is `railCollapsed` in `menu-mode.ts`. A toggle made on the asking page is forgotten when the page
143
+ * changes, so the next visit folds again.
144
+ */
145
+ private applyPageRail;
121
146
  }
@@ -8,7 +8,7 @@ import { customElement, property, state } from 'lit/decorators.js';
8
8
  import { RouteController, MenuController } from '@operato/shell';
9
9
  import { ScrollbarStyles } from '@operato/styles';
10
10
  import { resolveActive, joinedPath } from './menu-active.js';
11
- import { shouldAutoCollapse } from './menu-mode.js';
11
+ import { pageAsksRailCollapsed, railCollapsed, shouldAutoCollapse } from './menu-mode.js';
12
12
  let OxMenuPart = OxMenuPart_1 = class OxMenuPart extends LitElement {
13
13
  constructor() {
14
14
  super(...arguments);
@@ -25,8 +25,17 @@ let OxMenuPart = OxMenuPart_1 = class OxMenuPart extends LitElement {
25
25
  * 가로 메뉴(`landscape`)에는 뜻이 없다 — 접을 축이 다르다. 그때는 무시한다.
26
26
  */
27
27
  this.rail = false;
28
- /** 접힘 — 아이콘만. 사용자가 고른 것은 브라우저에 남긴다. */
28
+ /**
29
+ * 접힘 — 아이콘만. 사용자가 고른 것은 브라우저에 남긴다.
30
+ *
31
+ * This is the state the rail stands in now. What the person chose is `_storedCollapsed`; a page that asks for the
32
+ * rail to fold changes this value only while it is open (`railCollapsed`).
33
+ */
29
34
  this.collapsed = false;
35
+ /** What the person chose, kept in the browser. A page's request never writes here. */
36
+ this._storedCollapsed = false;
37
+ /** The open page asked for the rail to fold (`context.rail`). */
38
+ this._pageAsks = false;
30
39
  /**
31
40
  * 이 메뉴가 **서랍**인가 — 화면 위에 겹쳐 떴다가 닫히는 상태.
32
41
  *
@@ -55,7 +64,8 @@ let OxMenuPart = OxMenuPart_1 = class OxMenuPart extends LitElement {
55
64
  connectedCallback() {
56
65
  super.connectedCallback();
57
66
  try {
58
- this.collapsed = localStorage.getItem(OxMenuPart_1.LS_KEY) === '1';
67
+ this._storedCollapsed = localStorage.getItem(OxMenuPart_1.LS_KEY) === '1';
68
+ this.collapsed = this._storedCollapsed;
59
69
  }
60
70
  catch (_a) {
61
71
  /* 막힐 수 있다(사생활 보호 모드). 펼쳐진 상태가 안전한 기본이다. */
@@ -135,8 +145,15 @@ let OxMenuPart = OxMenuPart_1 = class OxMenuPart extends LitElement {
135
145
  splitter.hidden = this.collapsed;
136
146
  }
137
147
  }
138
- updated() {
148
+ updated(changed) {
139
149
  this.syncSplitter();
150
+ /*
151
+ * A page's request changes the width without a click, so the canvas has to measure again the same way it does
152
+ * after a toggle. The first render is not a change -- `changed` then holds the initial `undefined`.
153
+ */
154
+ if (changed.has('collapsed') && changed.get('collapsed') !== undefined) {
155
+ window.dispatchEvent(new Event('resize'));
156
+ }
140
157
  }
141
158
  /**
142
159
  * 접기/펼치기.
@@ -158,16 +175,26 @@ let OxMenuPart = OxMenuPart_1 = class OxMenuPart extends LitElement {
158
175
  }
159
176
  this.setCollapsed(next);
160
177
  }
161
- /** 접힘을 정하고 남긴다. 스스로 접을 때와 손으로 접을 때가 이 뒷부분을 함께 쓴다. */
178
+ /**
179
+ * 접힘을 정하고 남긴다. 스스로 접을 때와 손으로 접을 때가 이 뒷부분을 함께 쓴다.
180
+ *
181
+ * On a page that asked for the rail to fold, the choice lasts while that page is open and is not stored -- leaving
182
+ * brings back what the person chose before. The resize event goes out from `updated`.
183
+ */
162
184
  setCollapsed(next) {
163
- this.collapsed = next;
164
- try {
165
- localStorage.setItem(OxMenuPart_1.LS_KEY, next ? '1' : '0');
185
+ if (this._pageAsks) {
186
+ this._onPage = next;
166
187
  }
167
- catch (_a) {
168
- /* 못 남기면 다음에 펼쳐진 채로 뜬다. 기능은 그대로다. */
188
+ else {
189
+ this._storedCollapsed = next;
190
+ try {
191
+ localStorage.setItem(OxMenuPart_1.LS_KEY, next ? '1' : '0');
192
+ }
193
+ catch (_a) {
194
+ /* 못 남기면 다음에 펼쳐진 채로 뜬다. 기능은 그대로다. */
195
+ }
169
196
  }
170
- window.dispatchEvent(new Event('resize'));
197
+ this.collapsed = next;
171
198
  }
172
199
  render() {
173
200
  const menus = this._menu.menus;
@@ -244,6 +271,35 @@ let OxMenuPart = OxMenuPart_1 = class OxMenuPart extends LitElement {
244
271
  this._path = path;
245
272
  this._activeTopLevel = top;
246
273
  this._activeMenu = menu;
274
+ this.applyPageRail(page, context);
275
+ }
276
+ /**
277
+ * Fold the rail while the open page asks for it, and bring back the person's choice when it no longer does.
278
+ *
279
+ * The rule is `railCollapsed` in `menu-mode.ts`. A toggle made on the asking page is forgotten when the page
280
+ * changes, so the next visit folds again.
281
+ */
282
+ applyPageRail(page, context) {
283
+ const pageAsks = this.rail && pageAsksRailCollapsed(context);
284
+ if (page !== this._railPage || pageAsks !== this._pageAsks) {
285
+ this._onPage = undefined;
286
+ }
287
+ this._railPage = page;
288
+ this._pageAsks = pageAsks;
289
+ const next = railCollapsed({ stored: this._storedCollapsed, pageAsks, onPage: this._onPage });
290
+ if (next === this.collapsed) {
291
+ return;
292
+ }
293
+ /* Folding clears a width dragged with the handle, the same as a toggle; unfolding gives it back. */
294
+ if (next && this.style.width) {
295
+ this._draggedWidth = this.style.width;
296
+ this.style.width = '';
297
+ }
298
+ else if (!next && this._draggedWidth) {
299
+ this.style.width = this._draggedWidth;
300
+ this._draggedWidth = null;
301
+ }
302
+ this.collapsed = next;
247
303
  }
248
304
  };
249
305
  OxMenuPart.styles = [
@@ -1 +1 @@
1
- {"version":3,"file":"ox-menu-part.js","sourceRoot":"","sources":["../../src/ox-menu-part.ts"],"names":[],"mappings":";;AAAA,OAAO,4BAA4B,CAAA;AACnC,OAAO,uBAAuB,CAAA;AAC9B,OAAO,wBAAwB,CAAA;AAE/B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAGjD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAmB,MAAM,kBAAkB,CAAA;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAG5C,IAAM,UAAU,kBAAhB,MAAM,UAAW,SAAQ,UAAU;IAAnC;;QAgDG,WAAM,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAA;QAClC,UAAK,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAA;QAIxC;;;;;;;;;WASG;QACyC,SAAI,GAAG,KAAK,CAAA;QAExD,uCAAuC;QACK,cAAS,GAAG,KAAK,CAAA;QAE7D;;;;;;;;;;;;;WAaG;QACyC,WAAM,GAAG,KAAK,CAAA;QAI1D;;;;;;;WAOG;QACK,kBAAa,GAAkB,IAAI,CAAA;IA2P7C,CAAC;IAvPC,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAA;QAEzB,IAAI,CAAC;YACH,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,YAAU,CAAC,MAAM,CAAC,KAAK,GAAG,CAAA;QAClE,CAAC;QAAC,WAAM,CAAC;YACP,2CAA2C;QAC7C,CAAC;QAED;;;;;WAKG;QACH,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE,CAAC;YAC1C,IAAI,CAAC,WAAW,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAA;YACvE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAChC,CAAC;IACH,CAAC;IAED,oBAAoB;;QAClB,KAAK,CAAC,oBAAoB,EAAE,CAAA;QAC5B,MAAA,IAAI,CAAC,WAAW,0CAAE,UAAU,EAAE,CAAA;IAChC,CAAC;IAED;;;;;;OAMG;IACK,mBAAmB;QACzB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,OAAM;QACR,CAAC;QAED;;;;;;;WAOG;QACH,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACrB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAA;YACvB,CAAC;YAED,OAAM;QACR,CAAC;QAED,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YAC5E,OAAM;QACR,CAAC;QAED;;;WAGG;QACH,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;QACzB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAA;QACrB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAED;;;;;;;;;;;;OAYG;IACK,YAAY;;QAClB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,OAAM;QACR,CAAC;QAED,MAAM,QAAQ,GAAG,MAAA,IAAI,CAAC,aAAa,0CAAE,kBAA6C,CAAA;QAElF,IAAI,CAAA,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,0CAAE,WAAW,EAAE,MAAK,oBAAoB,EAAE,CAAC;YAC9D,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAA;QAClC,CAAC;IACH,CAAC;IAES,OAAO;QACf,IAAI,CAAC,YAAY,EAAE,CAAA;IACrB,CAAC;IAED;;;;;OAKG;IACK,eAAe;QACrB,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAA;QAE5B,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACrB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAA;gBACrC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAA;YACvB,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAA;YACrC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;QAC3B,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAED,qDAAqD;IAC7C,YAAY,CAAC,IAAa;QAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QAErB,IAAI,CAAC;YACH,YAAY,CAAC,OAAO,CAAC,YAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QAC3D,CAAC;QAAC,WAAM,CAAC;YACP,oCAAoC;QACtC,CAAC;QAED,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC3C,CAAC;IA+BD,MAAM;QACJ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAA;QAE9B,OAAO,IAAI,CAAA;;QAEP,IAAI,CAAC,WAAW,KAAK,WAAW;YAChC,CAAC,CAAC,IAAI,CAAA;qBACO,KAAK;8BACI,IAAI,CAAC,eAAe;0BACxB,IAAI,CAAC,WAAW;oBACtB,IAAI,CAAC,KAAK;oBACV,IAAI,CAAC,IAAI;yBACJ,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS;sBAC9B,IAAI,CAAC,MAAM;+BACF;YACvB,CAAC,CAAC,IAAI,CAAA;qBACO,KAAK;8BACI,IAAI,CAAC,eAAe;0BACxB,IAAI,CAAC,WAAW;oBACtB,IAAI,CAAC,KAAK;gCACE;;KAE3B,CAAA;IACH,CAAC;IAED,YAAY;QACV,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,CAAQ,EAAE,EAAE;YAC/D,CAAC,CAAC,eAAe,EAAE,CAAA;YACnB,CAAC,CAAC,cAAc,EAAE,CAAA;YAElB;;;;;;eAMG;YACH,MAAM,IAAI,GAAI,CAAiB,CAAC,MAAM,IAAI,SAAS,CAAA;YAEnD,iDAAiD;YACjD,IAAI,CAAC,WAAW,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,IAAI,CAAA;YAC/B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAC7B,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,CAAQ,EAAE,EAAE;YAC/D,CAAC,CAAC,eAAe,EAAE,CAAA;YACnB,IAAI,CAAC,eAAe,EAAE,CAAA;QACxB,CAAC,CAAC,CAAA;IACJ,CAAC;IAES,UAAU;QAClB,IAAI,CAAC,cAAc,EAAE,CAAA;QAErB,IAAI,IAAI,CAAC,WAAW,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAA;QACnC,CAAC;aAAM,IAAI,IAAI,CAAC,WAAW,IAAI,WAAW,EAAE,CAAC;YAC3C,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;QACpC,CAAC;QAED,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QACnC,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;QAClD,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,cAAc;QACpB,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAA;QACjD,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,CAAA;QAC3C,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;QAE9B,2DAA2D;QAC3D,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;YACpD,IAAI,CAAC,WAAW,GAAG,SAAS,CAAA;QAC9B,CAAC;QAED,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;QAEpF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,IAAI,CAAC,eAAe,GAAG,GAAG,CAAA;QAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;IACzB,CAAC;;AAvVM,iBAAM,GAAG;IACd,eAAe;IACf,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA0CF;CACF,AA7CY,CA6CZ;AAsCuB,iBAAM,GAAG,mBAAmB,AAAtB,CAAsB;AAjCxB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;+CAAuC;AAYtB;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;wCAAa;AAGZ;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;6CAAkB;AAgBjB;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;0CAAe;AAmJjD;IAAR,KAAK,EAAE;mDAAuB;AACtB;IAAR,KAAK,EAAE;+CAAmB;AAClB;IAAR,KAAK,EAAE;yCAAe;AAvOZ,UAAU;IADtB,aAAa,CAAC,cAAc,CAAC;GACjB,UAAU,CAyVtB","sourcesContent":["import '@material/web/icon/icon.js'\nimport './ox-menu-portrait.js'\nimport './ox-menu-landscape.js'\n\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { RouteController, MenuController } from '@operato/shell'\nimport { ScrollbarStyles } from '@operato/styles'\n\nimport { Menu } from './types.js'\nimport { resolveActive, joinedPath, type UserOpened } from './menu-active.js'\nimport { shouldAutoCollapse } from './menu-mode.js'\n\n@customElement('ox-menu-part')\nexport class OxMenuPart extends LitElement {\n static styles = [\n ScrollbarStyles,\n css`\n :host {\n display: flex;\n overflow-y: auto;\n flex-direction: column;\n height: 100%;\n min-width: 200px;\n background-color: var(--md-sys-color-surface);\n }\n\n :host([landscape]) {\n overflow-x: auto;\n flex-direction: row;\n width: 100%;\n min-height: 20px;\n }\n\n /*\n * 레일 모드 — 폭의 주인이 여기다.\n *\n * min-width: 200px 이 접힘을 막는다. 안쪽(ox-menu-portrait)만 줄여도 겉이 200px 로 남아\n * 아이콘 옆이 빈 칸이 된다. 그래서 접힘 상태를 이 요소가 갖는다 — 셸이 크기를 재는 요소도\n * 이것이고, 리사이즈 손잡이가 인라인 폭을 쓰는 요소도 이것이다.\n *\n * 가로만 감춘다. overflow: hidden 으로 두면 **긴 메뉴의 아래쪽에 갈 수 없다** — 이 앱의\n * 메뉴는 최상위가 일곱이고 그 아래가 더 있다.\n */\n :host([rail]) {\n min-width: 0;\n width: var(--menu-rail-width, 208px);\n overflow-x: hidden;\n overflow-y: auto;\n }\n\n :host([rail][collapsed]) {\n width: var(--menu-rail-width-collapsed, 56px);\n }\n\n ox-menu-portrait,\n ox-menu-landscape {\n flex: 1;\n }\n `\n ]\n\n private _route = new RouteController(this)\n private _menu = new MenuController(this)\n\n @property({ type: String }) orientation?: 'landscape' | 'portrait'\n\n /**\n * 레일 모드 — 접을 수 있고, 접히면 하위가 팝업으로 뜬다.\n *\n * **옵트인이다.** 켜지 않은 앱(dataset · ecs · gangsters · pms)은 지금과 한 글자도 다르지 않다.\n *\n * 모양이 함께 바뀌는 것은 취향이 아니라 요건이다. 기존 모양은 줄마다 폭 전체를 쓰는 밑줄이 있고\n * 왼쪽 여백이 16px 이라 56px 에서 무너진다(§`menu-rail-styles.ts`).\n *\n * 가로 메뉴(`landscape`)에는 뜻이 없다 — 접을 축이 다르다. 그때는 무시한다.\n */\n @property({ type: Boolean, reflect: true }) rail = false\n\n /** 접힘 — 아이콘만. 사용자가 고른 것은 브라우저에 남긴다. */\n @property({ type: Boolean, reflect: true }) collapsed = false\n\n /**\n * 이 메뉴가 **서랍**인가 — 화면 위에 겹쳐 떴다가 닫히는 상태.\n *\n * 메뉴를 감추는 설정을 켰거나 휴대폰이면 그렇다(`lite-menu` 가 판단해 준다).\n *\n * ── 왜 알아야 하나 ──────────────────────────────────────────────────────\n * 최상위 항목은 자기 대표 화면의 주소를 갖는다. 늘 보이는 메뉴에서는 그것이 도움이 된다 —\n * 누르면 어디든 도착한다.\n *\n * 그런데 서랍에서는 **누르는 순간 서랍이 닫힌다.** 그러면 그 묶음의 나머지 하위를 볼 기회가\n * 없다. 휴대폰에서 「작업」을 누르면 작업지시로 튀고 나머지 다섯은 못 본다.\n *\n * 그래서 서랍에서는 최상위가 **펼치기만** 한다. 하위를 눌러야 이동한다.\n */\n @property({ type: Boolean, reflect: true }) drawer = false\n\n private static readonly LS_KEY = 'ox-menu.collapsed'\n\n /**\n * 손잡이가 박아 둔 인라인 폭.\n *\n * `ox-nav-bar` 의 리사이즈 손잡이는 `div[navbar]` 의 **자식에 직접** `style.width` 를 쓴다\n * (`ox-nav-bar.ts` 의 `resizeDrag`). 인라인 값은 이 컴포넌트의 `:host([collapsed])` 규칙을\n * 이기므로, **한 번이라도 폭을 끌어 놓은 사용자는 접어도 폭이 그대로다.** 접을 때 치우고 펼칠 때\n * 되돌린다.\n */\n private _draggedWidth: string | null = null\n\n private _watchWidth?: ResizeObserver\n\n connectedCallback() {\n super.connectedCallback()\n\n try {\n this.collapsed = localStorage.getItem(OxMenuPart.LS_KEY) === '1'\n } catch {\n /* 막힐 수 있다(사생활 보호 모드). 펼쳐진 상태가 안전한 기본이다. */\n }\n\n /*\n * 손잡이로 좁게 끌면 스스로 접는다.\n *\n * 폭을 재는 자리는 여기다 — 손잡이는 이 요소에 인라인 폭을 쓴다. 판정은\n * `shouldAutoCollapse` 가 하고(시험으로 못박혀 있다) 여기서는 폭을 넘기고 결과를 따른다.\n */\n if (typeof ResizeObserver !== 'undefined') {\n this._watchWidth = new ResizeObserver(() => this.collapseIfTooNarrow())\n this._watchWidth.observe(this)\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n this._watchWidth?.disconnect()\n }\n\n /**\n * 너무 좁아졌으면 접는다.\n *\n * ── 끌어 놓은 폭을 기억하지 않는다 ──────────────────────────────────────\n * 손으로 접을 때는 그 폭을 적어 두고 펼칠 때 되돌린다. 그런데 **스스로 접은 경우에는 그\n * 폭이 「너무 좁은 폭」이다.** 되돌리면 펼치는 순간 다시 접혀 아무리 눌러도 펼쳐지지 않는다.\n */\n private collapseIfTooNarrow() {\n if (!this.rail) {\n return\n }\n\n /*\n * ── 접힌 뒤에는 손잡이가 더 써도 듣지 않는다 ──────────────────────────\n * 손잡이는 **끄는 동안 매 이동마다** 인라인 폭을 쓴다(`ox-nav-bar` 의 `resizeDrag`). 그래서\n * 접으면서 그 폭을 한 번 치워도 다음 이동이 곧바로 다시 쓴다 — 접힌 채로 폭이 계속 따라와\n * 「접혔는데 안 접힌」 상태가 된다.\n *\n * 들어오는 대로 치운다. 사용자가 손을 떼지 않아도 그 자리에서 멈춘다.\n */\n if (this.collapsed) {\n if (this.style.width) {\n this.style.width = ''\n }\n\n return\n }\n\n if (!shouldAutoCollapse(this.offsetWidth, { rail: true, collapsed: false })) {\n return\n }\n\n /*\n * 스스로 접을 때는 끌어 놓은 폭을 **기억하지 않는다.** 그 폭이 「너무 좁은 폭」이므로,\n * 되돌리면 펼치는 순간 다시 접혀 아무리 눌러도 펼쳐지지 않는다.\n */\n this._draggedWidth = null\n this.style.width = ''\n this.setCollapsed(true)\n }\n\n /**\n * 접혔으면 폭 손잡이를 감춘다.\n *\n * ── 왜 감추나 ──────────────────────────────────────────────────────────\n * 아이콘만 남은 레일의 폭을 바꿀 이유가 없다. 그리고 **끌면 실제로 망가진다** — 손잡이는\n * 인라인 `style.width` 를 쓰고(`ox-nav-bar` 의 `resizeDrag`), 인라인은 이 컴포넌트의\n * `:host([collapsed])` 규칙을 이긴다. 그래서 접힌 레일을 300px 로 늘려 빈 칸을 만들 수 있다.\n *\n * ── 왜 남의 요소를 건드리나 ────────────────────────────────────────────\n * 손잡이는 `ox-nav-bar` 가 `div[navbar]` 의 **형제**로 그린다. 그 층은 안에 무엇이 들었는지\n * 모르므로 접힘을 알 수 없다. 접힘을 아는 쪽은 여기다. 이미 손잡이가 쓴 인라인 폭을 여기서\n * 치우고 있으므로, 그 짝을 같은 자리에 둔다.\n */\n private syncSplitter() {\n if (!this.rail) {\n return\n }\n\n const splitter = this.parentElement?.nextElementSibling as HTMLElement | undefined\n\n if (splitter?.tagName?.toLowerCase() === 'ox-resize-splitter') {\n splitter.hidden = this.collapsed\n }\n }\n\n protected updated() {\n this.syncSplitter()\n }\n\n /**\n * 접기/펼치기.\n *\n * 폭이 바뀌면 캔버스(씬)와 그리스트가 자기 크기를 다시 재야 하므로 `resize` 를 낸다.\n * `twin-nav-rail` 이 같은 자리에서 같은 일을 한다.\n */\n private toggleCollapsed() {\n const next = !this.collapsed\n\n if (next) {\n if (this.style.width) {\n this._draggedWidth = this.style.width\n this.style.width = ''\n }\n } else if (this._draggedWidth) {\n this.style.width = this._draggedWidth\n this._draggedWidth = null\n }\n\n this.setCollapsed(next)\n }\n\n /** 접힘을 정하고 남긴다. 스스로 접을 때와 손으로 접을 때가 이 뒷부분을 함께 쓴다. */\n private setCollapsed(next: boolean) {\n this.collapsed = next\n\n try {\n localStorage.setItem(OxMenuPart.LS_KEY, next ? '1' : '0')\n } catch {\n /* 못 남기면 다음에 펼쳐진 채로 뜬다. 기능은 그대로다. */\n }\n\n window.dispatchEvent(new Event('resize'))\n }\n\n @state() _activeTopLevel?: Menu\n @state() _activeMenu?: Menu\n @state() _path?: string\n\n /**\n * 사용자가 손으로 정한 펼침.\n *\n * ```\n * undefined 정한 적 없다 — 주소가 가리키는 것을 쓴다\n * null 닫았다\n * Menu 그 묶음을 열었다\n * ```\n *\n * ── 왜 이 값이 필요한가 ─────────────────────────────────────────────────\n * 펼침 상태는 **주소에서 계산된다** — `willUpdate` 가 매 렌더마다 `findActivePage()` 를 불러\n * `_activeTopLevel` 을 주소가 가리키는 메뉴로 다시 넣는다. 그래서 손으로 무엇을 열거나 닫아도\n * **그리기 전에 되돌아왔다.** 여닫는 코드는 처음부터 있었는데 한 번도 살아 있지 못했다.\n *\n * 다른 최상위를 누를 때 열리는 것처럼 보였던 것은 여닫힘이 아니라 **이동**이었다. 링크가 주소를\n * 바꾸고, 바뀐 주소로 다른 메뉴가 계산된 것이다. 그래서 화살표만 눌러 이동 없이 열려고 하면\n * 아무 일도 안 일어났다.\n *\n * 한때 「닫았다」만 기억했다. 그러면 접기는 되지만 **다른 묶음을 열 수는 없었다** — 그 방향도\n * 같은 이유로 되돌려진다. 세 값으로 두면 두 방향이 다 산다.\n *\n * **주소가 바뀌면 잊는다** — 새 자리에서는 그 자리의 메뉴가 열려 있어야 한다.\n */\n private _userOpened: UserOpened\n\n render() {\n const menus = this._menu.menus\n\n return html`\n <slot name=\"head\"></slot>\n ${this.orientation !== 'landscape'\n ? html`<ox-menu-portrait\n .menus=${menus}\n .activeTopLevel=${this._activeTopLevel}\n .activeMenu=${this._activeMenu}\n .path=${this._path}\n ?rail=${this.rail}\n ?collapsed=${this.rail && this.collapsed}\n ?drawer=${this.drawer}\n ></ox-menu-portrait>`\n : html`<ox-menu-landscape\n .menus=${menus}\n .activeTopLevel=${this._activeTopLevel}\n .activeMenu=${this._activeMenu}\n .path=${this._path}\n ></ox-menu-landscape>`}\n <slot name=\"tail\"></slot>\n `\n }\n\n firstUpdated() {\n this.renderRoot.addEventListener('active-toplevel', (e: Event) => {\n e.stopPropagation()\n e.preventDefault()\n\n /*\n * **`detail: undefined` 는 `null` 로 도착한다.**\n *\n * `CustomEvent` 의 `detail` 은 기본값이 `null` 이라, 보내는 쪽이 `undefined` 를 넣어도 받는\n * 쪽에서는 `null` 이다. 그래서 `next === undefined` 로 「접겠다는 뜻」을 가리면 한 번도 맞지\n * 않는다 — 값이 있나 없나로 가른다.\n */\n const next = (e as CustomEvent).detail || undefined\n\n /* 열었든 닫았든 손으로 정한 것을 적어 둔다 — 안 적으면 주소가 곧 되돌린다. */\n this._userOpened = next ?? null\n this._activeTopLevel = next\n })\n\n this.renderRoot.addEventListener('collapse-toggle', (e: Event) => {\n e.stopPropagation()\n this.toggleCollapsed()\n })\n }\n\n protected willUpdate() {\n this.findActivePage()\n\n if (this.orientation == 'portrait') {\n this.removeAttribute('landscape')\n } else if (this.orientation == 'landscape') {\n this.setAttribute('landscape', '')\n }\n\n const { slotTemplate } = this._menu\n if (slotTemplate) {\n this.replaceChild(slotTemplate, this.renderRoot)\n }\n }\n\n /**\n * 지금 자리의 메뉴를 다시 정한다.\n *\n * 규칙은 `menu-active.ts` 에 있다 — 순수 함수라 시험으로 못박혀 있다. 여기서는 라우터가 준\n * 것을 넘기고 결과를 상태에 넣는 일만 한다.\n */\n private findActivePage() {\n const { page, resourceId, context } = this._route\n const where = { page, resourceId, context }\n const path = joinedPath(where)\n\n /* 자리를 옮겼으면 손으로 정한 것을 잊는다 — 새 자리에서는 그 자리의 메뉴가 열려 있어야 한다. */\n if (this._path !== undefined && path !== this._path) {\n this._userOpened = undefined\n }\n\n const { top, menu } = resolveActive(this._menu.menus || [], where, this._userOpened)\n\n this._path = path\n this._activeTopLevel = top\n this._activeMenu = menu\n }\n}\n"]}
1
+ {"version":3,"file":"ox-menu-part.js","sourceRoot":"","sources":["../../src/ox-menu-part.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport './ox-menu-portrait.js'\nimport './ox-menu-landscape.js'\n\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { RouteController, MenuController } from '@operato/shell'\nimport { ScrollbarStyles } from '@operato/styles'\n\nimport { Menu } from './types.js'\nimport { resolveActive, joinedPath, type UserOpened } from './menu-active.js'\nimport { pageAsksRailCollapsed, railCollapsed, shouldAutoCollapse } from './menu-mode.js'\n\n@customElement('ox-menu-part')\nexport class OxMenuPart extends LitElement {\n static styles = [\n ScrollbarStyles,\n css`\n :host {\n display: flex;\n overflow-y: auto;\n flex-direction: column;\n height: 100%;\n min-width: 200px;\n background-color: var(--md-sys-color-surface);\n }\n\n :host([landscape]) {\n overflow-x: auto;\n flex-direction: row;\n width: 100%;\n min-height: 20px;\n }\n\n /*\n * 레일 모드 — 폭의 주인이 여기다.\n *\n * min-width: 200px 이 접힘을 막는다. 안쪽(ox-menu-portrait)만 줄여도 겉이 200px 로 남아\n * 아이콘 옆이 빈 칸이 된다. 그래서 접힘 상태를 이 요소가 갖는다 — 셸이 크기를 재는 요소도\n * 이것이고, 리사이즈 손잡이가 인라인 폭을 쓰는 요소도 이것이다.\n *\n * 가로만 감춘다. overflow: hidden 으로 두면 **긴 메뉴의 아래쪽에 갈 수 없다** — 이 앱의\n * 메뉴는 최상위가 일곱이고 그 아래가 더 있다.\n */\n :host([rail]) {\n min-width: 0;\n width: var(--menu-rail-width, 208px);\n overflow-x: hidden;\n overflow-y: auto;\n }\n\n :host([rail][collapsed]) {\n width: var(--menu-rail-width-collapsed, 56px);\n }\n\n ox-menu-portrait,\n ox-menu-landscape {\n flex: 1;\n }\n `\n ]\n\n private _route = new RouteController(this)\n private _menu = new MenuController(this)\n\n @property({ type: String }) orientation?: 'landscape' | 'portrait'\n\n /**\n * 레일 모드 — 접을 수 있고, 접히면 하위가 팝업으로 뜬다.\n *\n * **옵트인이다.** 켜지 않은 앱(dataset · ecs · gangsters · pms)은 지금과 한 글자도 다르지 않다.\n *\n * 모양이 함께 바뀌는 것은 취향이 아니라 요건이다. 기존 모양은 줄마다 폭 전체를 쓰는 밑줄이 있고\n * 왼쪽 여백이 16px 이라 56px 에서 무너진다(§`menu-rail-styles.ts`).\n *\n * 가로 메뉴(`landscape`)에는 뜻이 없다 — 접을 축이 다르다. 그때는 무시한다.\n */\n @property({ type: Boolean, reflect: true }) rail = false\n\n /**\n * 접힘 — 아이콘만. 사용자가 고른 것은 브라우저에 남긴다.\n *\n * This is the state the rail stands in now. What the person chose is `_storedCollapsed`; a page that asks for the\n * rail to fold changes this value only while it is open (`railCollapsed`).\n */\n @property({ type: Boolean, reflect: true }) collapsed = false\n\n /** What the person chose, kept in the browser. A page's request never writes here. */\n private _storedCollapsed = false\n\n /** The open page asked for the rail to fold (`context.rail`). */\n private _pageAsks = false\n\n /** What the person chose on the page that asked, while it is open. Forgotten when the page changes. */\n private _onPage?: boolean\n\n /** The page the two values above were read on. */\n private _railPage?: string\n\n /**\n * 이 메뉴가 **서랍**인가 — 화면 위에 겹쳐 떴다가 닫히는 상태.\n *\n * 메뉴를 감추는 설정을 켰거나 휴대폰이면 그렇다(`lite-menu` 가 판단해 준다).\n *\n * ── 왜 알아야 하나 ──────────────────────────────────────────────────────\n * 최상위 항목은 자기 대표 화면의 주소를 갖는다. 늘 보이는 메뉴에서는 그것이 도움이 된다 —\n * 누르면 어디든 도착한다.\n *\n * 그런데 서랍에서는 **누르는 순간 서랍이 닫힌다.** 그러면 그 묶음의 나머지 하위를 볼 기회가\n * 없다. 휴대폰에서 「작업」을 누르면 작업지시로 튀고 나머지 다섯은 못 본다.\n *\n * 그래서 서랍에서는 최상위가 **펼치기만** 한다. 하위를 눌러야 이동한다.\n */\n @property({ type: Boolean, reflect: true }) drawer = false\n\n private static readonly LS_KEY = 'ox-menu.collapsed'\n\n /**\n * 손잡이가 박아 둔 인라인 폭.\n *\n * `ox-nav-bar` 의 리사이즈 손잡이는 `div[navbar]` 의 **자식에 직접** `style.width` 를 쓴다\n * (`ox-nav-bar.ts` 의 `resizeDrag`). 인라인 값은 이 컴포넌트의 `:host([collapsed])` 규칙을\n * 이기므로, **한 번이라도 폭을 끌어 놓은 사용자는 접어도 폭이 그대로다.** 접을 때 치우고 펼칠 때\n * 되돌린다.\n */\n private _draggedWidth: string | null = null\n\n private _watchWidth?: ResizeObserver\n\n connectedCallback() {\n super.connectedCallback()\n\n try {\n this._storedCollapsed = localStorage.getItem(OxMenuPart.LS_KEY) === '1'\n this.collapsed = this._storedCollapsed\n } catch {\n /* 막힐 수 있다(사생활 보호 모드). 펼쳐진 상태가 안전한 기본이다. */\n }\n\n /*\n * 손잡이로 좁게 끌면 스스로 접는다.\n *\n * 폭을 재는 자리는 여기다 — 손잡이는 이 요소에 인라인 폭을 쓴다. 판정은\n * `shouldAutoCollapse` 가 하고(시험으로 못박혀 있다) 여기서는 폭을 넘기고 결과를 따른다.\n */\n if (typeof ResizeObserver !== 'undefined') {\n this._watchWidth = new ResizeObserver(() => this.collapseIfTooNarrow())\n this._watchWidth.observe(this)\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n this._watchWidth?.disconnect()\n }\n\n /**\n * 너무 좁아졌으면 접는다.\n *\n * ── 끌어 놓은 폭을 기억하지 않는다 ──────────────────────────────────────\n * 손으로 접을 때는 그 폭을 적어 두고 펼칠 때 되돌린다. 그런데 **스스로 접은 경우에는 그\n * 폭이 「너무 좁은 폭」이다.** 되돌리면 펼치는 순간 다시 접혀 아무리 눌러도 펼쳐지지 않는다.\n */\n private collapseIfTooNarrow() {\n if (!this.rail) {\n return\n }\n\n /*\n * ── 접힌 뒤에는 손잡이가 더 써도 듣지 않는다 ──────────────────────────\n * 손잡이는 **끄는 동안 매 이동마다** 인라인 폭을 쓴다(`ox-nav-bar` 의 `resizeDrag`). 그래서\n * 접으면서 그 폭을 한 번 치워도 다음 이동이 곧바로 다시 쓴다 — 접힌 채로 폭이 계속 따라와\n * 「접혔는데 안 접힌」 상태가 된다.\n *\n * 들어오는 대로 치운다. 사용자가 손을 떼지 않아도 그 자리에서 멈춘다.\n */\n if (this.collapsed) {\n if (this.style.width) {\n this.style.width = ''\n }\n\n return\n }\n\n if (!shouldAutoCollapse(this.offsetWidth, { rail: true, collapsed: false })) {\n return\n }\n\n /*\n * 스스로 접을 때는 끌어 놓은 폭을 **기억하지 않는다.** 그 폭이 「너무 좁은 폭」이므로,\n * 되돌리면 펼치는 순간 다시 접혀 아무리 눌러도 펼쳐지지 않는다.\n */\n this._draggedWidth = null\n this.style.width = ''\n this.setCollapsed(true)\n }\n\n /**\n * 접혔으면 폭 손잡이를 감춘다.\n *\n * ── 왜 감추나 ──────────────────────────────────────────────────────────\n * 아이콘만 남은 레일의 폭을 바꿀 이유가 없다. 그리고 **끌면 실제로 망가진다** — 손잡이는\n * 인라인 `style.width` 를 쓰고(`ox-nav-bar` 의 `resizeDrag`), 인라인은 이 컴포넌트의\n * `:host([collapsed])` 규칙을 이긴다. 그래서 접힌 레일을 300px 로 늘려 빈 칸을 만들 수 있다.\n *\n * ── 왜 남의 요소를 건드리나 ────────────────────────────────────────────\n * 손잡이는 `ox-nav-bar` 가 `div[navbar]` 의 **형제**로 그린다. 그 층은 안에 무엇이 들었는지\n * 모르므로 접힘을 알 수 없다. 접힘을 아는 쪽은 여기다. 이미 손잡이가 쓴 인라인 폭을 여기서\n * 치우고 있으므로, 그 짝을 같은 자리에 둔다.\n */\n private syncSplitter() {\n if (!this.rail) {\n return\n }\n\n const splitter = this.parentElement?.nextElementSibling as HTMLElement | undefined\n\n if (splitter?.tagName?.toLowerCase() === 'ox-resize-splitter') {\n splitter.hidden = this.collapsed\n }\n }\n\n protected updated(changed: Map<PropertyKey, unknown>) {\n this.syncSplitter()\n\n /*\n * A page's request changes the width without a click, so the canvas has to measure again the same way it does\n * after a toggle. The first render is not a change -- `changed` then holds the initial `undefined`.\n */\n if (changed.has('collapsed') && changed.get('collapsed') !== undefined) {\n window.dispatchEvent(new Event('resize'))\n }\n }\n\n /**\n * 접기/펼치기.\n *\n * 폭이 바뀌면 캔버스(씬)와 그리스트가 자기 크기를 다시 재야 하므로 `resize` 를 낸다.\n * `twin-nav-rail` 이 같은 자리에서 같은 일을 한다.\n */\n private toggleCollapsed() {\n const next = !this.collapsed\n\n if (next) {\n if (this.style.width) {\n this._draggedWidth = this.style.width\n this.style.width = ''\n }\n } else if (this._draggedWidth) {\n this.style.width = this._draggedWidth\n this._draggedWidth = null\n }\n\n this.setCollapsed(next)\n }\n\n /**\n * 접힘을 정하고 남긴다. 스스로 접을 때와 손으로 접을 때가 이 뒷부분을 함께 쓴다.\n *\n * On a page that asked for the rail to fold, the choice lasts while that page is open and is not stored -- leaving\n * brings back what the person chose before. The resize event goes out from `updated`.\n */\n private setCollapsed(next: boolean) {\n if (this._pageAsks) {\n this._onPage = next\n } else {\n this._storedCollapsed = next\n\n try {\n localStorage.setItem(OxMenuPart.LS_KEY, next ? '1' : '0')\n } catch {\n /* 못 남기면 다음에 펼쳐진 채로 뜬다. 기능은 그대로다. */\n }\n }\n\n this.collapsed = next\n }\n\n @state() _activeTopLevel?: Menu\n @state() _activeMenu?: Menu\n @state() _path?: string\n\n /**\n * 사용자가 손으로 정한 펼침.\n *\n * ```\n * undefined 정한 적 없다 — 주소가 가리키는 것을 쓴다\n * null 닫았다\n * Menu 그 묶음을 열었다\n * ```\n *\n * ── 왜 이 값이 필요한가 ─────────────────────────────────────────────────\n * 펼침 상태는 **주소에서 계산된다** — `willUpdate` 가 매 렌더마다 `findActivePage()` 를 불러\n * `_activeTopLevel` 을 주소가 가리키는 메뉴로 다시 넣는다. 그래서 손으로 무엇을 열거나 닫아도\n * **그리기 전에 되돌아왔다.** 여닫는 코드는 처음부터 있었는데 한 번도 살아 있지 못했다.\n *\n * 다른 최상위를 누를 때 열리는 것처럼 보였던 것은 여닫힘이 아니라 **이동**이었다. 링크가 주소를\n * 바꾸고, 바뀐 주소로 다른 메뉴가 계산된 것이다. 그래서 화살표만 눌러 이동 없이 열려고 하면\n * 아무 일도 안 일어났다.\n *\n * 한때 「닫았다」만 기억했다. 그러면 접기는 되지만 **다른 묶음을 열 수는 없었다** — 그 방향도\n * 같은 이유로 되돌려진다. 세 값으로 두면 두 방향이 다 산다.\n *\n * **주소가 바뀌면 잊는다** — 새 자리에서는 그 자리의 메뉴가 열려 있어야 한다.\n */\n private _userOpened: UserOpened\n\n render() {\n const menus = this._menu.menus\n\n return html`\n <slot name=\"head\"></slot>\n ${this.orientation !== 'landscape'\n ? html`<ox-menu-portrait\n .menus=${menus}\n .activeTopLevel=${this._activeTopLevel}\n .activeMenu=${this._activeMenu}\n .path=${this._path}\n ?rail=${this.rail}\n ?collapsed=${this.rail && this.collapsed}\n ?drawer=${this.drawer}\n ></ox-menu-portrait>`\n : html`<ox-menu-landscape\n .menus=${menus}\n .activeTopLevel=${this._activeTopLevel}\n .activeMenu=${this._activeMenu}\n .path=${this._path}\n ></ox-menu-landscape>`}\n <slot name=\"tail\"></slot>\n `\n }\n\n firstUpdated() {\n this.renderRoot.addEventListener('active-toplevel', (e: Event) => {\n e.stopPropagation()\n e.preventDefault()\n\n /*\n * **`detail: undefined` 는 `null` 로 도착한다.**\n *\n * `CustomEvent` 의 `detail` 은 기본값이 `null` 이라, 보내는 쪽이 `undefined` 를 넣어도 받는\n * 쪽에서는 `null` 이다. 그래서 `next === undefined` 로 「접겠다는 뜻」을 가리면 한 번도 맞지\n * 않는다 — 값이 있나 없나로 가른다.\n */\n const next = (e as CustomEvent).detail || undefined\n\n /* 열었든 닫았든 손으로 정한 것을 적어 둔다 — 안 적으면 주소가 곧 되돌린다. */\n this._userOpened = next ?? null\n this._activeTopLevel = next\n })\n\n this.renderRoot.addEventListener('collapse-toggle', (e: Event) => {\n e.stopPropagation()\n this.toggleCollapsed()\n })\n }\n\n protected willUpdate() {\n this.findActivePage()\n\n if (this.orientation == 'portrait') {\n this.removeAttribute('landscape')\n } else if (this.orientation == 'landscape') {\n this.setAttribute('landscape', '')\n }\n\n const { slotTemplate } = this._menu\n if (slotTemplate) {\n this.replaceChild(slotTemplate, this.renderRoot)\n }\n }\n\n /**\n * 지금 자리의 메뉴를 다시 정한다.\n *\n * 규칙은 `menu-active.ts` 에 있다 — 순수 함수라 시험으로 못박혀 있다. 여기서는 라우터가 준\n * 것을 넘기고 결과를 상태에 넣는 일만 한다.\n */\n private findActivePage() {\n const { page, resourceId, context } = this._route\n const where = { page, resourceId, context }\n const path = joinedPath(where)\n\n /* 자리를 옮겼으면 손으로 정한 것을 잊는다 — 새 자리에서는 그 자리의 메뉴가 열려 있어야 한다. */\n if (this._path !== undefined && path !== this._path) {\n this._userOpened = undefined\n }\n\n const { top, menu } = resolveActive(this._menu.menus || [], where, this._userOpened)\n\n this._path = path\n this._activeTopLevel = top\n this._activeMenu = menu\n\n this.applyPageRail(page, context)\n }\n\n /**\n * Fold the rail while the open page asks for it, and bring back the person's choice when it no longer does.\n *\n * The rule is `railCollapsed` in `menu-mode.ts`. A toggle made on the asking page is forgotten when the page\n * changes, so the next visit folds again.\n */\n private applyPageRail(page: string, context?: { rail?: string } | null) {\n const pageAsks = this.rail && pageAsksRailCollapsed(context)\n\n if (page !== this._railPage || pageAsks !== this._pageAsks) {\n this._onPage = undefined\n }\n\n this._railPage = page\n this._pageAsks = pageAsks\n\n const next = railCollapsed({ stored: this._storedCollapsed, pageAsks, onPage: this._onPage })\n\n if (next === this.collapsed) {\n return\n }\n\n /* Folding clears a width dragged with the handle, the same as a toggle; unfolding gives it back. */\n if (next && this.style.width) {\n this._draggedWidth = this.style.width\n this.style.width = ''\n } else if (!next && this._draggedWidth) {\n this.style.width = this._draggedWidth\n this._draggedWidth = null\n }\n\n this.collapsed = next\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ import '../src/ox-menu-part.js';
@@ -0,0 +1,99 @@
1
+ import { html } from 'lit';
2
+ import { fixture, expect, nextFrame } from '@open-wc/testing';
3
+ import { store, UPDATE_PAGE, UPDATE_CONTEXT } from '@operato/shell';
4
+ import '../src/ox-menu-part.js';
5
+ import { pageAsksRailCollapsed, railCollapsed } from '../src/menu-mode.js';
6
+ /**
7
+ * A page can fold the rail while it is open (`context.rail: 'collapsed'`) and the person's own choice comes back
8
+ * when it closes. The pure rule is checked first, then the wiring in `ox-menu-part`.
9
+ */
10
+ describe('a page folds the rail while it is open', () => {
11
+ describe('the rule', () => {
12
+ it('without a request the stored choice stands', () => {
13
+ expect(railCollapsed({ stored: false, pageAsks: false })).to.equal(false);
14
+ expect(railCollapsed({ stored: true, pageAsks: false })).to.equal(true);
15
+ });
16
+ it('a request folds the rail whatever was stored', () => {
17
+ expect(railCollapsed({ stored: false, pageAsks: true })).to.equal(true);
18
+ expect(railCollapsed({ stored: true, pageAsks: true })).to.equal(true);
19
+ });
20
+ it('a toggle on the asking page wins while that page is open', () => {
21
+ expect(railCollapsed({ stored: false, pageAsks: true, onPage: false })).to.equal(false);
22
+ });
23
+ it('a toggle on the page is ignored once the page no longer asks', () => {
24
+ expect(railCollapsed({ stored: false, pageAsks: false, onPage: true })).to.equal(false);
25
+ });
26
+ it('only the declared value is a request', () => {
27
+ expect(pageAsksRailCollapsed({ rail: 'collapsed' })).to.equal(true);
28
+ expect(pageAsksRailCollapsed({ rail: 'open' })).to.equal(false);
29
+ expect(pageAsksRailCollapsed({})).to.equal(false);
30
+ expect(pageAsksRailCollapsed(undefined)).to.equal(false);
31
+ expect(pageAsksRailCollapsed(null)).to.equal(false);
32
+ });
33
+ });
34
+ describe('ox-menu-part', () => {
35
+ const KEY = 'ox-menu.collapsed';
36
+ function go(page, context) {
37
+ store.dispatch({ type: UPDATE_PAGE, page, resourceId: '', params: {} });
38
+ store.dispatch({ type: UPDATE_CONTEXT, context });
39
+ }
40
+ async function settle(el) {
41
+ await el.updateComplete;
42
+ await nextFrame();
43
+ await el.updateComplete;
44
+ }
45
+ async function mount(stored) {
46
+ localStorage.setItem(KEY, stored);
47
+ go('list-page', { title: 'list' });
48
+ const el = (await fixture(html `<ox-menu-part rail></ox-menu-part>`));
49
+ await settle(el);
50
+ return el;
51
+ }
52
+ afterEach(() => {
53
+ localStorage.removeItem(KEY);
54
+ go('list-page', { title: 'list' });
55
+ });
56
+ it('folds on the asking page and opens again on leaving, without touching the stored choice', async () => {
57
+ const el = await mount('0');
58
+ expect(el.collapsed).to.equal(false);
59
+ go('modeller-page', { title: 'modeller', rail: 'collapsed' });
60
+ await settle(el);
61
+ expect(el.collapsed).to.equal(true);
62
+ expect(el.hasAttribute('collapsed')).to.equal(true);
63
+ expect(localStorage.getItem(KEY)).to.equal('0');
64
+ go('list-page', { title: 'list' });
65
+ await settle(el);
66
+ expect(el.collapsed).to.equal(false);
67
+ });
68
+ it('a rail the person folded stays folded after leaving the asking page', async () => {
69
+ const el = await mount('1');
70
+ go('modeller-page', { title: 'modeller', rail: 'collapsed' });
71
+ await settle(el);
72
+ go('list-page', { title: 'list' });
73
+ await settle(el);
74
+ expect(el.collapsed).to.equal(true);
75
+ });
76
+ it('opening it by hand on the asking page is not stored and the next visit folds again', async () => {
77
+ const el = await mount('0');
78
+ go('modeller-page', { title: 'modeller', rail: 'collapsed' });
79
+ await settle(el);
80
+ el.renderRoot.querySelector('ox-menu-portrait').dispatchEvent(new CustomEvent('collapse-toggle', { bubbles: true, composed: true }));
81
+ await settle(el);
82
+ expect(el.collapsed).to.equal(false);
83
+ expect(localStorage.getItem(KEY)).to.equal('0');
84
+ go('list-page', { title: 'list' });
85
+ await settle(el);
86
+ go('modeller-page', { title: 'modeller', rail: 'collapsed' });
87
+ await settle(el);
88
+ expect(el.collapsed).to.equal(true);
89
+ });
90
+ it('a menu without the rail does not fold for the request', async () => {
91
+ localStorage.setItem(KEY, '0');
92
+ const el = (await fixture(html `<ox-menu-part></ox-menu-part>`));
93
+ go('modeller-page', { title: 'modeller', rail: 'collapsed' });
94
+ await settle(el);
95
+ expect(el.hasAttribute('collapsed')).to.equal(false);
96
+ });
97
+ });
98
+ });
99
+ //# sourceMappingURL=menu-rail-page.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu-rail-page.test.js","sourceRoot":"","sources":["../../test/menu-rail-page.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { html } from 'lit'\nimport { fixture, expect, nextFrame } from '@open-wc/testing'\nimport { store, UPDATE_PAGE, UPDATE_CONTEXT } from '@operato/shell'\n\nimport '../src/ox-menu-part.js'\nimport { OxMenuPart } from '../src/ox-menu-part.js'\nimport { pageAsksRailCollapsed, railCollapsed } from '../src/menu-mode.js'\n\n/**\n * A page can fold the rail while it is open (`context.rail: 'collapsed'`) and the person's own choice comes back\n * when it closes. The pure rule is checked first, then the wiring in `ox-menu-part`.\n */\ndescribe('a page folds the rail while it is open', () => {\n describe('the rule', () => {\n it('without a request the stored choice stands', () => {\n expect(railCollapsed({ stored: false, pageAsks: false })).to.equal(false)\n expect(railCollapsed({ stored: true, pageAsks: false })).to.equal(true)\n })\n\n it('a request folds the rail whatever was stored', () => {\n expect(railCollapsed({ stored: false, pageAsks: true })).to.equal(true)\n expect(railCollapsed({ stored: true, pageAsks: true })).to.equal(true)\n })\n\n it('a toggle on the asking page wins while that page is open', () => {\n expect(railCollapsed({ stored: false, pageAsks: true, onPage: false })).to.equal(false)\n })\n\n it('a toggle on the page is ignored once the page no longer asks', () => {\n expect(railCollapsed({ stored: false, pageAsks: false, onPage: true })).to.equal(false)\n })\n\n it('only the declared value is a request', () => {\n expect(pageAsksRailCollapsed({ rail: 'collapsed' })).to.equal(true)\n expect(pageAsksRailCollapsed({ rail: 'open' })).to.equal(false)\n expect(pageAsksRailCollapsed({})).to.equal(false)\n expect(pageAsksRailCollapsed(undefined)).to.equal(false)\n expect(pageAsksRailCollapsed(null)).to.equal(false)\n })\n })\n\n describe('ox-menu-part', () => {\n const KEY = 'ox-menu.collapsed'\n\n function go(page: string, context: any) {\n store.dispatch({ type: UPDATE_PAGE, page, resourceId: '', params: {} } as any)\n store.dispatch({ type: UPDATE_CONTEXT, context } as any)\n }\n\n async function settle(el: OxMenuPart) {\n await el.updateComplete\n await nextFrame()\n await el.updateComplete\n }\n\n async function mount(stored: '0' | '1') {\n localStorage.setItem(KEY, stored)\n go('list-page', { title: 'list' })\n const el = (await fixture(html`<ox-menu-part rail></ox-menu-part>`)) as OxMenuPart\n await settle(el)\n return el\n }\n\n afterEach(() => {\n localStorage.removeItem(KEY)\n go('list-page', { title: 'list' })\n })\n\n it('folds on the asking page and opens again on leaving, without touching the stored choice', async () => {\n const el = await mount('0')\n expect(el.collapsed).to.equal(false)\n\n go('modeller-page', { title: 'modeller', rail: 'collapsed' })\n await settle(el)\n expect(el.collapsed).to.equal(true)\n expect(el.hasAttribute('collapsed')).to.equal(true)\n expect(localStorage.getItem(KEY)).to.equal('0')\n\n go('list-page', { title: 'list' })\n await settle(el)\n expect(el.collapsed).to.equal(false)\n })\n\n it('a rail the person folded stays folded after leaving the asking page', async () => {\n const el = await mount('1')\n\n go('modeller-page', { title: 'modeller', rail: 'collapsed' })\n await settle(el)\n go('list-page', { title: 'list' })\n await settle(el)\n\n expect(el.collapsed).to.equal(true)\n })\n\n it('opening it by hand on the asking page is not stored and the next visit folds again', async () => {\n const el = await mount('0')\n\n go('modeller-page', { title: 'modeller', rail: 'collapsed' })\n await settle(el)\n el.renderRoot.querySelector('ox-menu-portrait')!.dispatchEvent(\n new CustomEvent('collapse-toggle', { bubbles: true, composed: true })\n )\n await settle(el)\n expect(el.collapsed).to.equal(false)\n expect(localStorage.getItem(KEY)).to.equal('0')\n\n go('list-page', { title: 'list' })\n await settle(el)\n go('modeller-page', { title: 'modeller', rail: 'collapsed' })\n await settle(el)\n expect(el.collapsed).to.equal(true)\n })\n\n it('a menu without the rail does not fold for the request', async () => {\n localStorage.setItem(KEY, '0')\n const el = (await fixture(html`<ox-menu-part></ox-menu-part>`)) as OxMenuPart\n go('modeller-page', { title: 'modeller', rail: 'collapsed' })\n await settle(el)\n\n expect(el.hasAttribute('collapsed')).to.equal(false)\n })\n })\n})\n"]}
@@ -1 +1 @@
1
- {"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/typescript/lib/lib.esnext.float16.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/tslib/tslib.d.ts","../../../node_modules/tslib/modules/index.d.ts","../src/types.ts","../src/menu-mode.ts","../src/menu-active.ts","../src/menu-privilege.ts","../src/index.ts","../../../node_modules/@lit/reactive-element/development/css-tag.d.ts","../../../node_modules/@lit/reactive-element/development/reactive-controller.d.ts","../../../node_modules/@lit/reactive-element/development/reactive-element.d.ts","../../../node_modules/lit-html/development/directive.d.ts","../../../node_modules/@types/trusted-types/lib/index.d.ts","../../../node_modules/lit-html/development/lit-html.d.ts","../../../node_modules/lit-element/development/lit-element.d.ts","../../../node_modules/lit-html/development/is-server.d.ts","../../../node_modules/lit/development/index.d.ts","../src/menu-landscape-styles.ts","../src/menu-portrait-styles.ts","../../../node_modules/@material/web/icon/internal/icon.d.ts","../../../node_modules/@material/web/icon/icon.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/base.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/custom-element.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/property.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/state.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/event-options.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/query.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/query-all.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/query-async.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/query-assigned-nodes.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/query-assigned-elements.d.ts","../../../node_modules/lit/development/decorators.d.ts","../../shell/dist/src/types/domain.d.ts","../../shell/dist/src/types/user.d.ts","../../shell/dist/src/types/role.d.ts","../../shell/dist/src/types/privilege.d.ts","../../shell/dist/src/types/types.d.ts","../../shell/dist/src/types/index.d.ts","../../../node_modules/redux/index.d.ts","../../shell/dist/src/lazy-reducer-enhancer.d.ts","../../shell/dist/src/store.d.ts","../../shell/dist/src/actions/app.d.ts","../../shell/dist/src/actions/route.d.ts","../../shell/dist/src/actions/busy.d.ts","../../shell/dist/src/actions/const.d.ts","../../shell/dist/src/actions/index.d.ts","../../shell/dist/src/app/pages/page-view.d.ts","../../shell/dist/src/object-store.d.ts","../../shell/dist/src/custom-alert.d.ts","../../shell/dist/src/connect-mixin.d.ts","../../shell/dist/src/controllers/app-controller.d.ts","../../shell/dist/src/controllers/context-controller.d.ts","../../shell/dist/src/controllers/font-controller.d.ts","../../shell/dist/src/controllers/layout-controller.d.ts","../../shell/dist/src/controllers/menu-controller.d.ts","../../shell/dist/src/controllers/route-controller.d.ts","../../shell/dist/src/controllers/snackbar-controller.d.ts","../../shell/dist/src/controllers/index.d.ts","../../shell/dist/src/require-custom-element.d.ts","../../shell/dist/src/drafts/draft-store.d.ts","../../shell/dist/src/drafts/unsaved-draft-controller.d.ts","../../shell/dist/src/index.d.ts","../../styles/dist/src/headroom-styles.d.ts","../../styles/dist/src/scrollbar-styles.d.ts","../../styles/dist/src/spinner-styles.d.ts","../../styles/dist/src/common-button-styles.d.ts","../../styles/dist/src/form-field-styles.d.ts","../../styles/dist/src/common-grist-styles.d.ts","../../styles/dist/src/button-container-styles.d.ts","../../styles/dist/src/button-styles.d.ts","../../styles/dist/src/common-header-styles.d.ts","../../styles/dist/src/common-popup-styles.d.ts","../../styles/dist/src/popup-body-styles.d.ts","../../styles/dist/src/box-padding-editor-styles.d.ts","../../styles/dist/src/gradient-direction-styles.d.ts","../../styles/dist/src/property-grid-styles.d.ts","../../styles/dist/src/table-event-styles.d.ts","../../styles/dist/src/inspector-styles.d.ts","../../styles/dist/src/line-styles.d.ts","../../styles/dist/src/action-heights.d.ts","../../styles/dist/src/form-element-heights.d.ts","../../styles/dist/src/page-frame-styles.d.ts","../../styles/dist/src/fab-styles.d.ts","../../styles/dist/src/card-catalog-styles.d.ts","../../styles/dist/src/index.d.ts","../src/ox-menu-landscape.ts","../../../node_modules/lit-html/development/async-directive.d.ts","../../../node_modules/lit-html/development/directives/async-replace.d.ts","../../../node_modules/lit/development/directives/async-replace.d.ts","../../../node_modules/lit-html/development/directives/if-defined.d.ts","../../../node_modules/lit/development/directives/if-defined.d.ts","../../../node_modules/i18next/typescript/helpers.d.ts","../../../node_modules/i18next/typescript/options.d.ts","../../../node_modules/i18next/typescript/t.d.ts","../../../node_modules/i18next/index.d.ts","../../../node_modules/i18next/index.d.mts","../../i18n/dist/src/config.d.ts","../../i18n/dist/src/localize.d.ts","../../i18n/dist/src/ox-i18n.d.ts","../../i18n/dist/src/ox-i18n-selector.d.ts","../../i18n/dist/src/index.d.ts","../src/ox-menu-portrait.ts","../src/ox-menu-part.ts","../../layout/dist/src/initializer.d.ts","../../popup/dist/src/ox-popup.d.ts","../../popup/dist/src/ox-popup-list.d.ts","../../popup/dist/src/ox-popup-menu.d.ts","../../popup/dist/src/ox-popup-menuitem.d.ts","../../../node_modules/@material/web/elevation/internal/elevation.d.ts","../../../node_modules/@material/web/elevation/elevation.d.ts","../../../node_modules/@material/web/internal/controller/attachable-controller.d.ts","../../../node_modules/@material/web/focus/internal/focus-ring.d.ts","../../../node_modules/@material/web/focus/md-focus-ring.d.ts","../../../node_modules/@material/web/ripple/internal/ripple.d.ts","../../../node_modules/@material/web/ripple/ripple.d.ts","../../../node_modules/@material/web/labs/behaviors/mixin.d.ts","../../../node_modules/@material/web/labs/behaviors/element-internals.d.ts","../../../node_modules/@material/web/labs/behaviors/form-associated.d.ts","../../../node_modules/@material/web/labs/behaviors/form-submitter.d.ts","../../../node_modules/@material/web/button/internal/button.d.ts","../../../node_modules/@material/web/button/internal/filled-button.d.ts","../../../node_modules/@material/web/button/filled-button.d.ts","../../../node_modules/@material/web/button/internal/text-button.d.ts","../../../node_modules/@material/web/button/text-button.d.ts","../../popup/dist/src/ox-popup-actions.d.ts","../../popup/dist/src/ox-prompt.d.ts","../../popup/dist/src/ox-floating-overlay.d.ts","../../popup/dist/src/open-popup.d.ts","../../popup/dist/src/index.d.ts","../../layout/dist/src/layouts/ox-snack-bar.d.ts","../../layout/dist/src/components/ox-resize-splitter.d.ts","../../layout/dist/src/layouts/ox-header-bar.d.ts","../../layout/dist/src/layouts/ox-nav-bar.d.ts","../../layout/dist/src/layouts/ox-aside-bar.d.ts","../../layout/dist/src/layouts/ox-footer-bar.d.ts","../../layout/dist/src/layouts/ox-page-header-bar.d.ts","../../layout/dist/src/layouts/ox-page-footer-bar.d.ts","../../layout/dist/src/actions/layout.d.ts","../../layout/dist/src/actions/snackbar.d.ts","../../layout/dist/src/components/ox-split-pane.d.ts","../../layout/dist/src/components/ox-entity360-dock.d.ts","../../layout/dist/src/components/ox-three-pane.d.ts","../../layout/dist/src/components/ox-canvas-bar.d.ts","../../layout/dist/src/components/ox-url-tabs.d.ts","../../layout/dist/src/actions/entity360.d.ts","../../layout/dist/src/actions/entity360-registry.d.ts","../../layout/dist/src/actions/entity360-door.d.ts","../../layout/dist/src/actions/entity360-name.d.ts","../../layout/dist/src/components/ox-entity360-section.d.ts","../../layout/dist/src/index.d.ts","../src/ox-top-menu-bar.ts","../stories/ox-menu-container.ts","../stories/test-menus.ts","../stories/ox-menu-portrait.stories.ts","../../../node_modules/@types/chai/index.d.ts","../../../node_modules/@open-wc/semantic-dom-diff/get-diffable-html.d.ts","../../../node_modules/@open-wc/semantic-dom-diff/chai-dom-diff-plugin.d.ts","../../../node_modules/@open-wc/semantic-dom-diff/chai-dom-diff.d.ts","../../../node_modules/@open-wc/semantic-dom-diff/index.d.ts","../../../node_modules/chai-a11y-axe/chai-a11y-axe-plugin.d.ts","../../../node_modules/chai-a11y-axe/src/accessible.d.ts","../../../node_modules/chai-a11y-axe/index.d.ts","../../../node_modules/@types/chai-dom/index.d.ts","../../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../../node_modules/@types/sinon/index.d.ts","../../../node_modules/@types/sinon-chai/index.d.ts","../../../node_modules/@open-wc/testing/register-chai-plugins.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/elementupdated.d.ts","../../../node_modules/lit-html/development/static.d.ts","../../../node_modules/lit/development/static-html.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/renderable.d.ts","../../../node_modules/@open-wc/testing-helpers/node_modules/@open-wc/dedupe-mixin/index.d.ts","../../../node_modules/@open-wc/testing-helpers/node_modules/@open-wc/scoped-elements/dist-types/types.d.ts","../../../node_modules/@open-wc/testing-helpers/node_modules/@open-wc/scoped-elements/dist-types/html-element.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/fixture-no-side-effect.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/fixture.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/fixturewrapper.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/helpers.d.ts","../../../node_modules/lit/development/html.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/scopedelementswrapper.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/litfixture.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/stringfixture.d.ts","../../../node_modules/@open-wc/testing-helpers/types/index.d.ts","../../../node_modules/@open-wc/testing/index.d.ts","../test/menu-active.test.ts","../test/menu-badge-contrast.test.ts","../test/menu-mode.test.ts","../test/menu-privilege.test.ts","../test/ox-menu-portrait.test.ts","../../../node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/@types/node/web-globals/blob.d.ts","../../../node_modules/@types/node/web-globals/console.d.ts","../../../node_modules/@types/node/web-globals/crypto.d.ts","../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/@types/node/web-globals/encoding.d.ts","../../../node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/undici-types/utility.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client-stats.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/round-robin-pool.d.ts","../../../node_modules/undici-types/h2c-client.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/dispatcher1-wrapper.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/snapshot-agent.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/socks5-proxy-agent.d.ts","../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/undici-types/retry-handler.d.ts","../../../node_modules/undici-types/retry-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/util.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/eventsource.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/@types/node/web-globals/importmeta.d.ts","../../../node_modules/@types/node/web-globals/messaging.d.ts","../../../node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/@types/node/web-globals/performance.d.ts","../../../node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/@types/node/web-globals/timers.d.ts","../../../node_modules/@types/node/web-globals/url.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/ffi.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/@types/node/inspector/promises.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/buffer/index.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/path/posix.d.ts","../../../node_modules/@types/node/path/win32.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/quic.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/sqlite.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/iter.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/test/reporters.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/util/types.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vfs.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/zlib/iter.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/mocha/index.d.ts"],"fileIdsList":[[238,303,311,316,319,321,322,323,336],[69,238,303,311,316,319,321,322,323,336],[58,69,238,303,311,316,319,321,322,323,336],[58,69,77,238,303,311,316,319,321,322,323,336],[71,238,303,311,316,319,321,322,323,336],[56,57,238,303,311,316,319,321,322,323,336],[64,168,238,303,311,316,319,321,322,323,336],[61,64,160,162,163,164,165,166,238,303,311,316,319,321,322,323,336],[61,157,167,238,303,311,316,319,321,322,323,336],[167,238,303,311,316,319,321,322,323,336],[64,170,238,303,311,316,319,321,322,323,336],[64,156,238,303,311,316,319,321,322,323,336],[61,64,238,303,311,316,319,321,322,323,336],[64,158,238,303,311,316,319,321,322,323,336],[64,159,238,303,311,316,319,321,322,323,336],[64,67,238,303,311,316,319,321,322,323,336],[64,238,303,311,316,319,321,322,323,336],[64,163,238,303,311,316,319,321,322,323,336],[64,163,164,238,303,311,316,319,321,322,323,336],[61,64,158,238,303,311,316,319,321,322,323,336],[64,161,238,303,311,316,319,321,322,323,336],[202,203,238,303,311,316,319,321,322,323,336],[204,238,303,311,316,319,321,322,323,336],[203,205,238,303,311,316,319,321,322,323,336],[219,220,238,303,311,316,319,321,322,323,336],[219,238,303,311,316,319,321,322,323,336],[215,217,223,224,225,228,229,238,303,311,316,319,321,322,323,336],[218,221,238,303,311,316,319,321,322,323,336],[222,238,303,311,316,319,321,322,323,336],[218,222,227,238,303,311,316,319,321,322,323,336],[218,221,226,238,303,311,316,319,321,322,323,336],[202,214,230,238,303,311,316,319,321,322,323,336],[206,209,210,213,238,303,311,316,319,321,322,323,336],[202,238,303,311,316,319,321,322,323,336],[238,300,301,303,311,316,319,321,322,323,336],[238,302,303,311,316,319,321,322,323,336],[303,311,316,319,321,322,323,336],[238,303,311,316,319,321,322,323,336,345],[238,303,304,309,311,314,316,319,321,322,323,325,336,341,354],[238,303,304,305,311,314,316,319,321,322,323,336],[238,303,306,311,316,319,321,322,323,336,355],[238,303,307,308,311,316,319,321,322,323,327,336],[238,303,308,311,316,319,321,322,323,336,341,351],[238,303,309,311,314,316,319,321,322,323,325,336],[238,302,303,310,311,316,319,321,322,323,336],[238,303,311,312,316,319,321,322,323,336],[238,303,311,313,314,316,319,321,322,323,336],[238,302,303,311,314,316,319,321,322,323,336],[238,303,311,314,316,317,319,321,322,323,336,341,354],[238,303,311,314,316,317,319,321,322,323,336,343,345],[238,290,303,311,314,316,318,319,321,322,323,325,336,341,354],[238,303,311,314,316,318,319,321,322,323,325,336,341,351,354],[238,303,311,316,318,319,320,321,322,323,336,341,351,354],[237,238,239,240,241,242,243,244,245,246,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363],[238,303,311,314,316,319,321,322,323,336],[238,303,311,316,319,321,323,336],[238,303,311,316,319,321,322,323,324,336,354],[238,303,311,314,316,319,321,322,323,325,336,341],[238,303,311,316,319,321,322,323,327,336],[238,303,311,316,319,321,322,323,328,336],[238,303,311,314,316,319,321,322,323,331,336],[238,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362],[238,303,311,316,319,321,322,323,333,336],[238,303,311,316,319,321,322,323,334,336],[238,303,308,311,316,317,319,321,322,323,325,336,343,351],[238,303,311,314,316,319,321,322,323,336,337],[238,303,311,316,319,321,322,323,336,338,355,359],[238,303,311,314,316,319,321,322,323,336,341,343,344,345],[238,303,311,316,319,321,322,323,336,342,345],[238,303,311,314,316,319,321,322,323,336,341,343],[238,303,311,314,316,319,321,322,323,336,341,344,345],[238,303,311,316,319,321,322,323,336,345,355],[238,303,311,316,319,321,322,323,336,346],[238,300,303,311,316,319,321,322,323,336,341,348,354],[238,303,311,316,319,321,322,323,336,341,347],[238,303,311,314,316,319,321,322,323,336,349,350],[238,303,311,316,319,321,322,323,336,349,350],[238,303,308,311,316,319,321,322,323,325,336,341,351],[238,303,311,316,319,321,322,323,336,352],[238,303,311,316,319,321,322,323,325,336,353],[238,303,311,316,318,319,321,322,323,334,336,354],[238,303,311,316,319,321,322,323,336,355,356],[238,303,308,311,316,319,321,322,323,336,356],[238,303,311,316,319,321,322,323,336,341,357],[238,303,311,316,317,319,321,322,323,336],[238,303,311,316,319,321,322,323,324,336,359],[238,303,311,316,319,321,322,323,336,360],[238,303,306,311,316,319,321,322,323,336],[238,303,308,311,316,319,321,322,323,336],[238,303,311,316,319,321,322,323,336,355],[238,290,303,311,316,319,321,322,323,336],[238,303,311,316,319,321,322,323,336,354],[238,303,311,316,319,321,322,323,336,361],[238,303,311,316,319,321,322,323,331,336],[238,303,311,316,319,321,322,323,336,350],[238,290,303,311,314,316,317,319,321,322,323,325,331,336,341,345,354,357,359,361],[238,303,311,316,319,321,322,323,336,341,362],[238,303,311,316,319,321,322,323,336,343,363],[202,212,238,303,311,316,319,321,322,323,336],[211,238,303,311,316,319,321,322,323,336],[208,238,303,311,316,319,321,322,323,336],[207,238,303,311,316,319,321,322,323,336],[139,140,141,142,238,303,311,316,319,321,322,323,336],[139,140,141,238,303,311,316,319,321,322,323,336],[139,238,303,311,316,319,321,322,323,336],[139,140,238,303,311,316,319,321,322,323,336],[58,61,238,303,311,316,319,321,322,323,336],[59,61,238,303,311,316,319,321,322,323,336],[61,238,303,311,316,319,321,322,323,336],[59,61,134,238,303,311,316,319,321,322,323,336],[59,60,238,303,311,316,319,321,322,323,336],[70,71,72,73,74,75,76,77,78,238,303,311,316,319,321,322,323,336],[135,238,303,311,316,319,321,322,323,336],[137,238,303,311,316,319,321,322,323,336],[58,61,62,63,238,303,311,316,319,321,322,323,336],[216,238,303,311,316,319,321,322,323,336],[49,238,303,311,316,319,321,322,323,336],[238,253,256,259,260,303,311,316,319,321,322,323,336,354],[238,256,303,311,316,319,321,322,323,336,341,354],[238,256,260,303,311,316,319,321,322,323,336,354],[238,303,311,316,319,321,322,323,336,341],[238,250,303,311,316,319,321,322,323,336],[238,254,303,311,316,319,321,322,323,336],[238,252,253,256,303,311,316,319,321,322,323,336,354],[238,303,311,316,319,321,322,323,325,336,351],[238,303,311,316,319,321,322,323,336,364],[238,250,303,311,316,319,321,322,323,336,364],[238,252,256,303,311,316,319,321,322,323,325,336,354],[238,247,248,249,251,255,303,311,314,316,319,321,322,323,336,341,354],[238,256,303,311,316,319,321,322,323,336],[238,256,265,274,303,311,316,319,321,322,323,336],[238,248,254,303,311,316,319,321,322,323,336],[238,256,284,285,303,311,316,319,321,322,323,336],[238,248,251,256,303,311,316,319,321,322,323,336,345,354,364],[238,252,256,303,311,316,319,321,322,323,336,354],[238,247,303,311,316,319,321,322,323,336],[238,250,251,252,254,255,256,257,258,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,285,286,287,288,289,303,311,316,319,321,322,323,336],[238,256,277,280,303,311,316,319,321,322,323,336],[238,256,265,267,268,303,311,316,319,321,322,323,336],[238,254,256,267,269,303,311,316,319,321,322,323,336],[238,255,303,311,316,319,321,322,323,336],[238,248,250,256,303,311,316,319,321,322,323,336],[238,256,260,267,269,303,311,316,319,321,322,323,336],[238,260,303,311,316,319,321,322,323,336],[238,254,256,259,303,311,316,319,321,322,323,336,354],[238,248,252,256,265,303,311,316,319,321,322,323,336],[238,256,277,303,311,316,319,321,322,323,336],[238,269,303,311,316,319,321,322,323,336],[238,248,252,256,260,303,311,316,319,321,322,323,336],[238,250,256,284,303,311,316,319,321,322,323,336,345,361,364],[143,238,303,311,316,319,321,322,323,336],[144,145,146,147,238,303,311,316,319,321,322,323,336],[64,143,238,303,311,316,319,321,322,323,336],[188,238,303,311,316,319,321,322,323,336],[64,176,238,303,311,316,319,321,322,323,336],[86,238,303,311,316,319,321,322,323,336],[61,64,68,189,238,303,311,316,319,321,322,323,336],[64,68,238,303,311,316,319,321,322,323,336],[61,64,194,238,303,311,316,319,321,322,323,336],[151,176,177,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,238,303,311,316,319,321,322,323,336],[109,238,303,311,316,319,321,322,323,336],[174,178,238,303,311,316,319,321,322,323,336],[68,171,238,303,311,316,319,321,322,323,336],[50,51,52,53,54,238,303,311,316,319,321,322,323,336],[50,51,238,303,311,316,319,321,322,323,336],[50,64,238,303,311,316,319,321,322,323,336],[50,238,303,311,316,319,321,322,323,336],[50,51,64,65,68,79,109,132,238,303,311,316,319,321,322,323,336],[50,51,52,53,64,68,79,109,132,133,149,238,303,311,316,319,321,322,323,336],[50,51,52,64,66,68,79,109,132,136,138,148,238,303,311,316,319,321,322,323,336],[50,51,64,68,79,109,197,238,303,311,316,319,321,322,323,336],[50,51,64,68,79,132,149,238,303,311,316,319,321,322,323,336],[50,64,149,199,200,238,303,311,316,319,321,322,323,336],[50,51,53,231,238,303,311,316,319,321,322,323,336],[50,51,64,149,231,238,303,311,316,319,321,322,323,336],[50,52,231,238,303,311,316,319,321,322,323,336],[50,51,54,231,238,303,311,316,319,321,322,323,336],[152,153,154,155,172,173,175,238,303,311,316,319,321,322,323,336],[64,174,238,303,311,316,319,321,322,323,336],[61,64,68,238,303,311,316,319,321,322,323,336],[61,64,68,152,238,303,311,316,319,321,322,323,336],[61,64,152,238,303,311,316,319,321,322,323,336],[61,64,154,238,303,311,316,319,321,322,323,336],[61,64,68,169,171,172,238,303,311,316,319,321,322,323,336],[89,90,91,92,238,303,311,316,319,321,322,323,336],[98,99,100,101,102,103,104,238,303,311,316,319,321,322,323,336],[64,107,238,303,311,316,319,321,322,323,336],[85,88,93,94,95,96,97,105,106,107,108,238,303,311,316,319,321,322,323,336],[86,87,238,303,311,316,319,321,322,323,336],[80,81,82,83,84,238,303,311,316,319,321,322,323,336],[81,82,238,303,311,316,319,321,322,323,336],[80,81,83,238,303,311,316,319,321,322,323,336],[110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,238,303,311,316,319,321,322,323,336]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6a5253138c5432c68a1510c70fe78a644fe2e632111ba778e1978010d6edfec","impliedFormat":1},{"version":"b8f34dd1757f68e03262b1ca3ddfa668a855b872f8bdd5224d6f993a7b37dc2c","impliedFormat":99},{"version":"30db73264f423790415f2f88f22c374cb0ede9c0610fe3386ae20cc17574bcf5","signature":"a4f32f4e2c7c8b874051148ee801dede9c40258b2f79e463fd28235af0ad3bd7"},{"version":"e0fb692d4f184e4389ff15b9a3afb373e614217d11209bbb7991323f9e39ca69","signature":"84b0557232f5482a21b7e925786f210e4ad2a230fe27ea74b68a3736be9baf8b"},{"version":"6ec6e8ac686c5e83784dde22df587e8798b665af08a70c4c733576d537d8306a","signature":"176ad452b559be09c46dd0a87d559ca6a875ae9f5f6dc60b04216987ccee1172"},{"version":"207a185ae4d9a3cc6c2481e19216e02aa3b465e37bdcf2a54c2ad81963574d2b","signature":"8c343f73650fe89ac17ccf2077c92a4efb35742b1b42d211754f1ce5b29e890c"},{"version":"93d215899a1bd18750be7a232c22c14539d440c03f660b86a1db21c3186dc56c","signature":"8cccc9e3831c43812a4afa5e2725761ca82575c74febb41ffe5e0560f38e18f6"},{"version":"74012d464fbc5354ca3a7d5e71bee43b17da01a853c8ff10971bbe3680c76f40","impliedFormat":99},{"version":"5e30131b6a5587fe666926ad1d9807e733c0a597ed12d682669fcaa331aea576","impliedFormat":99},{"version":"a0f82d2f9450bd147a8c137798d9501bd49b7c9e118f75b07b76709ff39b6b55","affectsGlobalScope":true,"impliedFormat":99},{"version":"00cb63103f9670f8094c238a4a7e252c8b4c06ba371fea5c44add7e41b7247e4","impliedFormat":99},{"version":"15fe687c59d62741b4494d5e623d497d55eb38966ecf5bea7f36e48fc3fbe15e","impliedFormat":1},{"version":"e09db3291e6b440f7debed2227d8357e80c95987a0d0d67ac17521d8f7b11bdb","impliedFormat":99},{"version":"9a318e3a8900672b85cd3c8c3a5acf51b88049557a3ae897ccdcf2b85a8f61f9","impliedFormat":99},{"version":"1bcd560deed90a43c51b08aa18f7f55229f2e30974ab5ed1b7bb5721be379013","impliedFormat":99},{"version":"dc08fe04e50bc24d1baded4f33e942222bbdd5d77d6341a93cfe6e4e4586a3be","impliedFormat":99},{"version":"a1c5ae2fd49803fc6db34e95007b9c75a21aba738acc4a519c839a129e509eca","signature":"3bcaadf31685c068f5c12037763d5f7d16e86c25412946aad78e418193066ba6"},{"version":"864c2fe6da94b03dae6a4868d4bf62a02c5113bc02e13f51f4dae9d1540f34a4","signature":"b264a25bcb204cc781031cc94856e649951aaf0b3764b167c7de4f81852415ac"},{"version":"b93e2680295ac83b52846bcd76dd6d06507d3da1738ebe564a1e99543993b3b4","impliedFormat":99},{"version":"4ae1ed87c59518f4e0918a21409ec3020e97037a386b57953c6b9fed9cad6949","affectsGlobalScope":true,"impliedFormat":99},{"version":"cdeae34aca6700620ebf3f27cf7d439c3af97595dd6e2729fa4780483add5680","impliedFormat":99},{"version":"3ff87ea3471b51beaf4aa8fd8f4422862b11d343fdbb55bf383e0f8cc195a445","impliedFormat":99},{"version":"99bdf729529cdbf12e2bf76ea751b662011133dcf9e35abcb3def47bb02f7b0a","impliedFormat":99},{"version":"732fb71ecb695d6f36ddcbb72ebfe4ff6b6491d45101a00fa2b75a26b80d640f","impliedFormat":99},{"version":"039cb05125d7621f8143616c495b8e6b54249c4e64d2754b80ff93867f7f4b01","impliedFormat":99},{"version":"1b81f1fa82ad30af01ab1cae91ccaddc10c48f5916bbd6d282155e44a65d858d","impliedFormat":99},{"version":"a0fc7a02a75802678a67000607f20266cf1a49dc0e787967efe514e31b9ed0c3","impliedFormat":99},{"version":"5ebf098a1d81d400b8af82807cf19893700335cf91a7b9dbd83a5d737af34b11","impliedFormat":99},{"version":"101cf83ac3f9c5e1a7355a02e4fbe988877ef83c4ebec0ff0f02b2af022254a3","impliedFormat":99},{"version":"d017e2fcd44b46ca80cd2b592a6314e75f5caab5bda230f0f4a45e964049a43a","impliedFormat":99},{"version":"a8992b852521a66f63e0cedc6e1f054b28f972232b6fa5ca59771db6a1c8bbea","impliedFormat":99},"4d4cf93a6b4c81851ad759e4569b6feb7a701e80b13a6f9d8d9c6012bbb86bd6","2e6035af8f3e43bf95e4983329c8277d66f9b271106af27b99a85d1c1b9daf4a","df32d43311e85715e2a573239a4bbc5b78ebaf29af2af5fa8c85370197997515","3a792bbf677343364a1d9b7197c6e4e512764f17364efd656b1a3598f2a9e820","3d7c0b593a29d717b2b2ba3f03f819c3c48bf9e250d79c4a31860af80f177e8c","e576aa80090f8b6020355ca8d7f4184067c84389f4b92125be29e03b1f6c5194",{"version":"fd624f7d7b264922476685870f08c5e1c6d6a0f05dee2429a9747b41f6b699d4","affectsGlobalScope":true,"impliedFormat":1},"487213b1bcbdaa470cf59a4cea3f8a939b9222e74b455fe0fd2f0dc2346cc3c0",{"version":"8a9e962b8c98aa48377773c40ac7a3e530fb3354cec48fdb59d8e2df3a624a0c","affectsGlobalScope":true},"641089f0b8094ef74b9d4b3364d5dec1592d5e3b8a51c1ba491bc8872049e79a","8e33e65ce7fcd3cb20e29505452daa51543003d5db597f1aca2a51ff9043c8a7","b42033bf1067564808e4d360d79281667c2b3b0792c2d615ab641eb85974d4ba","7af29b0589483f7bb8a99405ddb849f34bc053146184561ed4179e02f5fe4d0f","ad3ee9f7d14ad8b7ae8094d0f1a2276656f7a970827d4030d1dead7c2d765f75","9c7568f9c75cf6a7d35dc9f18c5971cd5b21344c686c7cce56b3558d3305d40f","fc48282c397084016a939e1b3f91dcaf4199b6cba339d91d8b2dc2acade79762","3e62a55b950132d6eeacc607b7a1bff990d5484347b2be5a1f54db51af30ff25","8b86f33b7e06e2f0a3bf4703cf9d8b0baab016e36b83f2a33dac184f061e17ea","88c205bacab539d8e844b80a1ec76fc649fbc731f12dfd7cca160976b5ddfd5a","565d32dce0b8761e7cfafe40c56a8a0fab0bb9e7bb35a31d9712643b3c8dbbc4","4bde12afd6fdd6e52d7316e00adfbccd70becc3ebd9c4f647d07caef53a474ae","a7e588bdba05f1fb78f83e50ee62c93565134d3b996babf2697c2b43fcf17ce0","218a0f93d7091c68718ec4260f41f3a61b5ecb7e786a8c04e296292ff41db8f0","cf45487aeb18b31f1001b99d06793986ac3e6840b0602f9cf3756a2724348bf4","81f0a95843ae6e5a006addc4b5c217b075057ff82c9bc319655de21a13ba9f10","1a68f44e90ac5c261a3157004a7ec18759982b91fd725537d6db919d83601dd1","daccba798a74fc239523622caf24656e28b78dac33ea8a031682280fd51b0d0f","f6a07f563f8ac41831de197155d550379c6d197109ba54d8ffdec21dfa287a6f","5c14065b4c2eb2dccb003b6f1e538900a1909de62a338fe3c35ffb267d653953","5cee37504a444c12c6633430239f9dd1b26649c19f1e71adaaf4ea5712cc8c62","cf93fb9208a01c80f0fad245c4360356e5de6c2384b7641acf0b9cc2f5c42448","336398b0efaf964124e636a9b29c4edd5870aee79ac64bf87be58a9d66b7c048","571bc65ec37ba124e762bb822e14a2b8502dc684e356be8feaccbd6b9cadd023","7cd455fc4c4818f19263d73b29c59f3fb5fd54b45a6ab83ca3eb3661281db56b","d428a9fbb7cc014b69651793373edf9be9b0bba7c3e7f720d2a294dd1a50d7c5","1c6b9b5501774a2ece6574be8e26092800e3f1f836f8c179b4f9fdd271a620f8","bcd2426fd141157e04e3a8eff914b575403587f398cf0878f07c2f283e0d1afd","c04405c54b9095528ba8d4006ff443a5aad3ea65611344c4522aab1608d0705f","bac8ff394e831e4dd3f0961d6abb414b0e2b4ba16fdeb502d087ebf0340ed5f6","d9f8946a29f08d831605e6a9005785842dfbe5b09e5d38b6bf5073a11453890a","f9dee09d52541244f2a093e8faa29bec9527aad98111279fea51a10a95b9bfd4","b337608772b9df38e69b89837ecf758100e6c1c7acd4d0f10595f738faf1d034","c89d663edb7c20cfab677286571dc8f4f09878119d7ecd010895133995f12532","9d04b912e18e966fca08158f28e5c41bfb2fa864187d926e04d737aa83a96e17","2ad4fcfa075cde73e5ae78491531cef44cec9fb9a880be8335afd98c444528cf","881cb6bb1e6384a9943b8c6f1cd3a0f215a683b032130f700e0d87bc9a990727","e2d895b9561b0b9a350c970475ff268e4e0fc44436e107a916889a0a93d3389b","302a06cbb95a5c6041745f5f8f64a0a7b2fe7926f2ee71f96644f473d6804a44","bfa39163a2b652b382fa019284a857b7a8a25eb3c4469124088530cead0ba347","a2f3de4d473e2dab6128eb8f69cfad59e9894ad25be6ec7213900e9236971582","6a53004a10b7472c10c900aac074c24cd127b3ddbb9105dc8b3fca25990aa977","73868c81078b6ee9a3702c45413d93f367f652c91b32221f40f6b5f60333f979","1ac2b7818cb72193c46f6b78732a65953a017e339624ed6555d165ca490bbe7a",{"version":"edce72f988c83157a88933338f4cdcf3bc72118ab04d9ac07cd35abee7c92678","signature":"143f8d604ef3ed044bfdeda068f2b4f33d0cd8df6d9d42b26a2ecce9426cb0bc"},{"version":"c42f9b18f5f559b133cf9b409f678afb30df9c6498865aae9a1abad0f1e727a8","impliedFormat":99},{"version":"feaf207fddc69de2a8826438be06f5f954964cddc8e95bf980c9fe02cb22616a","impliedFormat":99},{"version":"e3d6176dc713a2b6b17054021a6aa839824bf43f358e3ae12192b54c6de1a6b4","impliedFormat":99},{"version":"74fe889b1d2bba4b2893d518ba94e2b20dabe6d19d0c2f9554d9a5d3755710f4","impliedFormat":99},{"version":"2ae64cd7b6e760496069ee3b496c64700c956a0620740e1ef52b163824859db7","impliedFormat":99},{"version":"e30accdbef6f904f20354b6f598d7f2f7ff29094fc5410c33f63b29b4832172a","impliedFormat":1},{"version":"3786a961459023ec78bb575e5ea74f504d3ffc61ae82a305c959a4d94d7d70eb","impliedFormat":1},{"version":"de83915a380bdd6d7ddf075e3f60fe347db64ad4d06822835724ac601cb61daf","impliedFormat":1},{"version":"4d39c150715cb238da715e5c3fbeac2e2b2d0ef3f23c632996dd59ae35ba1f45","impliedFormat":1},{"version":"e9f80c5934982b97886eadab6684c073344a588d1758b12fba2d0184e6f450a2","impliedFormat":99},"0f81a53d54fd2b4ae2bf60067d616de99884bda21cb5784d942089d52319fb97","86d356e64ab8d56852623677eb1bed0c106703aed9b7788ad8a5a56e647822cb","29dca1b5f0cac95b675f86c7846f9d587ed47cc46609dd00d152bcb37683b069","231d829c892caeb88dd469e0847bf9d14e29c82b8b158b381ec866c868adf9af","886bcc73e8cf74ebec1bd14a5cc5b8dfa28276210df634e6f81c844b1eef767b",{"version":"5012b442083094b3f86e160aa9c81377e4b0d224ba29b0fede620186e5f38aae","signature":"02fe50a11bf8c03d31c39acadf143dbdf9560c0969c32322959c19ca2cd81e7d"},{"version":"2228a9e165866636123924e1557fd8e83e42127105e049abddbb9467d2c30577","signature":"1a2c7c8a8a6c53487774f22819087d2068fa7f61502374e2dbfa0966483de46d"},"60997095f458b8c2c94af5759c796d9d17678e740a41a04c3e518c14c47f2ee7",{"version":"75069a2a1e380502ff9a1074b8ee61f5e84f31973e5f81b444e6993e5633c72b","affectsGlobalScope":true},"8aff91f00938aa90ce829f4d577903d6826fa19e8edc583f7bb64ef1a6b4ae3b","986165ecc3a59d4b6a272a92f7ca4fd7a0762c63a674abd2c1efa0bea64da604","3e7b241ec38126d95f9e37c49a631c00cff006a888276e2d02920c6443c8b593",{"version":"6184309fe39e2fe444f4ba94e7cd1abef48fcb48e258457c3b77c65828184241","impliedFormat":99},{"version":"98c511f60c3079d731a35353a47bfa89dd79eeacad48a45d07170d22ef4bfd02","affectsGlobalScope":true,"impliedFormat":99},{"version":"905800cc110167503d0cf58bb0dd6fa4aaac1e9cedc9bd9c48e5d1f8b5b8d4c8","impliedFormat":99},{"version":"d17be577b99e59611df19ca2cf0356df554f55bb06617c21321fc4ec06b820d0","impliedFormat":99},{"version":"5f30145fbc8ca508ae4e0d90a4fe9eaff490783f380a92f6aa262accdf7887b7","affectsGlobalScope":true,"impliedFormat":99},{"version":"cefe49d29d43726072e88671a2c40cdeeb8d49ca8fa6c2d4b06013dc7b9d6206","impliedFormat":99},{"version":"f882b77c5939860d599b4b7bc39f741ebcd56123e18b284500f4b8923acd2e72","affectsGlobalScope":true,"impliedFormat":99},{"version":"0230bc76ed3a464531a43d2434d315b9cc2096aaca28bdaa65b8f9dce9f3bc81","impliedFormat":99},{"version":"559d2d1cd7f37dc2ac59e7adce198ad16a5eb0c7273d67b8e4ff72821b7c853f","impliedFormat":99},{"version":"6161d12fc14a8e0cf492f9d49372a1189b1fe005662cb7fe6630352a6b0bb04e","impliedFormat":99},{"version":"7d3c06d4ad79d86c6f7518b77d335b324bc218a7cd8b3e15579c4b584b7307f9","impliedFormat":99},{"version":"65f5bc7ff74eeabe9925da575924601248471033c27bf0384643ea03cad2b57d","impliedFormat":99},{"version":"d08d474654640266d6ac03f51ee04d72438b78ea377b9dc4678c480ce0477e1a","impliedFormat":99},{"version":"929f21090183949e93fd99327d292bff76f781895d5252eb43319b2c3e014528","affectsGlobalScope":true,"impliedFormat":99},{"version":"0f28503979e769f6ee6e55350f621dc00e300f15688d52b02edc62d837d29b1d","impliedFormat":99},{"version":"fe869c79d427e84d916011d082def68a793c3c13e157079fec399f250418bd50","affectsGlobalScope":true,"impliedFormat":99},"a2afc55ddd24edebefe497c415aee63498b099cef639b85a1bb3163e58649928","56a4c77ce6cae2494a4563f57a4a4c64b4857d0483979e101ff2fa7001db3dd1","bad37852b83df7a04802c2827fa02f8af046e4d944e0d08e02294d27b2748129","1fc3a35588d5f43c8ea68937e60d360d48390f5d454b1e6830659dfce9a7a937","c9d3623b528f615e0466361855fbba048e88d381bb5257f23c37062b2fdb6039","3c523c4338a858825c62005f03ff49eeaf8290bdda52a8b8554be555bab7a077","5582fb24ca35ef8a72d61a095d62ae2ada8143c33bc56febf626e333d3a5b013","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","c0178facd144177de1b1bb22d5083a02b83b8a390519e23e959420fe720aacf2","6e815042f98ee8b44cd7f372039ebc2f5ebc13d5be353b29ea7f18f1519b0edf","86d239790a025b4f1213571ed5d578b9080415e1218b253b499ed73ac436ae63","915fe430f9274e4ccdfefe060bf98660b52e62dcb375e6fbd79f1b1aedc4c170",{"version":"ad9efb41182f5e07976abd80e4b00ac80692f3ab8d55fe3b85d3c282c229b98e","affectsGlobalScope":true},{"version":"5425a627e508bc6d1ccfb1ea6f8d250f93c6fa7fe034e6f1b03a48e8ce0a3167","affectsGlobalScope":true},{"version":"7a57df5934cd17f2fd7b640275089eed07e2efe1e29daa2f61e61f1e08dac023","affectsGlobalScope":true},"2feadd1c36714a8d2685727cb2b1f56999c850623acbd99aa7a325dd1621dda9","05a01baa15b8b4f4c088387ae755b0f55bd6d8bd5d8445c51c4c7915bcdafc3f","81715d46da9f89ebedf6cbfb1d436fa6bf847652bd8a125d0893e3b47399f316","caf3e0c255508bebccd84112eb0a277561802b9edd833367bd492f745b74a7dc",{"version":"c360546ca0d716d461f18e5fdc72a4b9a6482f2d5dbb1c384213bbc4a6cb35b1","affectsGlobalScope":true},"d19235267a3cf397c03160f19fa3a7b24fa686f28e681ad7f761397b54f69d29",{"version":"de53165df4274f512d63c56ad34b21c451f86e3cfd2d1e2dd866c5250e0924e8","signature":"79deb069b1537b1757965b5b16e5b8e6921017ce3f7088d1d813eee727b4b49e"},{"version":"7676ea7aed13b1887f9d232ea2d5d6f7dbf9cf04adedc9f78985893eb9b4a189","signature":"1004e6124d3c4663544dbb9431bdfb786459e4ca93d02cfe0ffcd8a0994af69d"},{"version":"4eb26a88276bdfea327e95d4ba3918a6cb8053cf19f4bdb3153020ab650ae7af","signature":"acfcfdf417c988d67e5d48f5fcff7b6dd52c88720ecd635137a2929170836244"},{"version":"f69671beaabadb5eb4b29d05eafde2114c1a3950069916a799ea8e2e97696e6b","signature":"52b248e376193dd4349afee293aaa4c7b4899dddae63cfa5a8a05cb980c24e04"},{"version":"eef204f061321360559bd19235ea32a9d55b3ec22a362cc78d14ef50d4db4490","affectsGlobalScope":true,"impliedFormat":1},{"version":"72bee526b949b9932edba50997ff3b9cdede7b314d790d5f0d94f3d2944930ea","impliedFormat":99},{"version":"2d412861573a672bd90fdcb1e48740593324565f3b3aaf6808c0e3e2f0d54ae8","affectsGlobalScope":true,"impliedFormat":99},{"version":"cd711db43a952f15464b571ac11b7a440332cd52342bc92c4bf908c70688f57f","affectsGlobalScope":true,"impliedFormat":99},{"version":"9d8709c916778cb34830708ed47b78e9a46d1fb2eb73a682b14eee990bed4aa6","impliedFormat":99},{"version":"507e2131e89b515ce40c05c0c2fef6cc575ba8947703f92e8cdf36078747a9ff","affectsGlobalScope":true,"impliedFormat":99},{"version":"999a90d30a3183dcee987d0a5a7c586aba5bacbf6ce087ba8635124082ccfeea","impliedFormat":99},{"version":"8a5878edd52f4a720560b4c6e6247e9ddc3df6118ad9cf2f9927903b03d5f440","impliedFormat":99},{"version":"e7be17cfcbe98809c052f384c230ecea9e1cee045edac9db0659e997a988ff9e","affectsGlobalScope":true,"impliedFormat":1},{"version":"baf3507287629018d38c88e2636dd041550c70620bb774127011eb6dc3b361c0","impliedFormat":1},{"version":"4738bc5d39ac01532d861967a4fe52769e3892fb8022d4524802ac1c7aed4934","impliedFormat":1},{"version":"525b52b38b44420fb1758c0917e7b67cf379f7f9477d2ba7343f3d5f50a44258","affectsGlobalScope":true,"impliedFormat":1},{"version":"65b91a3725399231d3469529b5e27b85bf2aa98013e607f308e5fe260b47eeff","impliedFormat":99},{"version":"04e3793f33c71ceae20a4719698c068b72c98cf925b3c5f8a33096c00ed44258","impliedFormat":99},{"version":"fa8ef3fb228e258f9508386e2056c95c959d1c1168301181313a5c978754ba70","impliedFormat":99},{"version":"15c9478a8a3d630ac5e738aca25fca15d0842aaeb97fb1a9c1e80eddc5a0e14c","impliedFormat":99},{"version":"cc46ce345c0e19e456388446733250527eead4ca557b5e5fdf0c2e30adc3c89f","impliedFormat":99},{"version":"88cda4269c54f0803834fd62b2fac61af8bff7a085693f7ca9df85c1f19dee8a","impliedFormat":99},{"version":"5a2888a80ba9fae27aaa312464ab4b744ce4cfce573c105844ad8e94a39e2d7d","affectsGlobalScope":true,"impliedFormat":99},{"version":"260d1e9ec9c633c7ae90d8c17762e77924eef5d71357b27bfd351da698db4f6d","impliedFormat":99},{"version":"6168f8e0a5b354f8177bf0dee7c1a69c2afb6a155d5534221f3a1a2d86b84367","impliedFormat":99},{"version":"d7840fd94e6dfb5b0d9df5a20fe1e79c8dd72b1efdb74d2ef04c31e3588c6b5b","impliedFormat":99},{"version":"fa6d684e15fe6e99c7208a51b45c04f8e0147f1c8587871aac48fff55b7b1f24","impliedFormat":99},{"version":"d61a4b627c3e2e054616df905a25226f547dc0e821c2a2b6d5f13318b3fd7e78","impliedFormat":99},{"version":"1308479c593c3d337bd9c438ac1d7164006a9286638cec0b26e3331a978f91d4","impliedFormat":99},{"version":"cfad37dbd7cf27cc16758755847ad7c07ac52a01c466486e50f8f84d0f0ea9ce","impliedFormat":99},{"version":"0c4d3009672fd12d4d9a6505e769de9369c180dcfa8188d9fd850ec156245d87","impliedFormat":99},{"version":"793fca6322a14fa8fa6bc6a4fc694fd7bcc88922c4f9abcd48bf6908f8bf939b","impliedFormat":99},{"version":"be3e93b109deb44b925583674cc0706c0b3c2e7316bcf79631285a45c18ed0c8","impliedFormat":99},{"version":"50f63746fc2a779d1f9c5657fd78e292045dc98b540e026799e039ea629f2943","impliedFormat":99},{"version":"8527c0f0749def85b8890d0ea09343d9670b0c45794ff27321de93100de1ac8d","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"1e90cd76e64b93c2b16b31a3f8a8e305cab40d36bca0bce953499fb4ff2d5bda","signature":"8c60144e64b097f4d8d99e882cbce15c62b40377ba544267315c8284e150c921"},{"version":"8c6ea4dfb3dc8853b017c3d32b5daa85c7a8f8d369948fbd549ec92cc5bc9ece","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"1e07c908517c06ef99001d074c4068deb989e7410ade42fc54b213e041ee82d2","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"5ced4bf2cf1794f1bf29df5be94b7f6795a14cd0c260fc5e78719c24a51ff547","signature":"8c60144e64b097f4d8d99e882cbce15c62b40377ba544267315c8284e150c921"},{"version":"0ccdaa19852d25ecd84eec365c3bfa16e7859cadecf6e9ca6d0dbbbee439743f","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9b68a1c3f8f45b4c199fa5b3ac09497230cb8f2f0cdcfebe5817b30b836a64a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f53a7652392cf26ebbe4e29fd0672aa87c93bd6d0241289c13fab87b9ac35c8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"b00a630557d1622ad312633bdbfbdb9c6b7220d948dca9f899db30679f160074","affectsGlobalScope":true,"impliedFormat":1},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"88809d6c1b9c78d04a133646a6feb926def05a8774c308c7c93bc32ee163d271","impliedFormat":1},{"version":"156a859e21ef3244d13afeeba4e49760a6afa035c149dda52f0c45ea8903b338","impliedFormat":1},{"version":"21d7fab00c101ddf754b392e11534e6b20c6bda269b2ccbcdf3453cbe21d8a39","impliedFormat":1},{"version":"615754924717c0b1e293e083b83503c0a872717ad5aa60ed7f1a699eb1b4ea5c","impliedFormat":1},{"version":"d3c85d4dde1a4918009e37426ee4a940cbbd4100e2e74d03e2de0d50a77bb488","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"60e3ba4b2d24548107060e5d13bffafbbbaa53d001c07bbe40386deda569b5e8","impliedFormat":1},{"version":"a712be2c8cbe0154bd17d1d7bff503d7c04331e0745eb9eea3d303e0e5d9401e","impliedFormat":1},{"version":"25bd6ae1b97ea991433337310fc406cc7c9f271b67b7c79dd24eee384759f3d4","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"38004e6801340cb890afb8cb5a9fc8972297e7f88ab94026e4b0b3c61fb32f8a","impliedFormat":1},{"version":"4ca7fb8f6018ea836b1ad24f67d5e7c2cf7410af7462e0ccc90b012944f5d7ae","impliedFormat":1},{"version":"4d327f7d72ad0918275cea3eee49a6a8dc8114ae1d5b7f3f5d0774de75f7439a","impliedFormat":1},{"version":"149f9a9e7f04e67afa0e2a49fc0ff421035c01d6b793cfcae7d2e9f6819431e2","impliedFormat":1},{"version":"e8a9dfa4c75ef6d25df8b40eaa9c31e0a69452aaf2ced4a3f4215dbdbaa876f4","impliedFormat":1},{"version":"a70af845a2eb9dd6e2723e319e14ea7fb28b129ec1361c21509b49305448c323","impliedFormat":1},{"version":"b53dc572d4f187904207ae1166652de47aab8eeb00c254d009cb226863076b56","impliedFormat":1},{"version":"57354d2f022ed64ede57b2e052306dd076a138b551abc7d30ef5e6718ce2f76a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"f501234c5aeeeb5d7659412335227466aaacf30b952372d60afeb21c02c96348","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"358f74dc35927dc88ea86dd201a2b98e701c281615e6b30a4c153eb0bb90ef71","impliedFormat":1},{"version":"8b91ff5bb912be3ea213cbcf0075aace1f5d4ff249a0d227ed673868cb7bfabc","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"8aee8b6d4f9f62cf3776cda1305fb18763e2aade7e13cea5bbe699112df85214","impliedFormat":1},{"version":"98498b101803bb3dde9f76a56e65c14b75db1cc8bec5f4db72be541570f74fc5","impliedFormat":1},{"version":"706abfbafe0ed5f685357375e89bbf48879549ea1772185d77d15f587c5c9400","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"013ff793053d33a15be4614efdd6c50247bbf0b26d6bc58ba338622a7441b543","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"436d7b4543b340b0f3eef4310d524242e41369b9652aa9c70428767c4dcac455","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"12950411eeab8563b349cb7959543d92d8d02c289ed893d78499a19becb5a8cc","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"e99963ae1e3a48ca7a7958c02f3e88bb963eb7978c28b68ae6b8c9f03309d83c","impliedFormat":1},{"version":"c3f5289820990ab66b70c7fb5b63cb674001009ff84b13de40619619a9c8175f","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"279d0cc1a72879918854265c3405369aa2d4d23509b8694ea102995b298cc5e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"594ae90cacd813fa392ff80d2e0a8eff4e41f4a136329a940e321399dd8895b4","impliedFormat":1},{"version":"d1f333ade8ff35a409b4984e1f11956fe11c61855b0c7e9b59f0313e48b40c4a","impliedFormat":1},{"version":"0224aa4b3464895d69c413a640a19ac2166778a74eb5eb3b36b021c72d42b274","impliedFormat":1},{"version":"575aa163c4c32e5b82e0e99b1f9f80806e1d78bfa259706e05139251c022277b","affectsGlobalScope":true,"impliedFormat":1},{"version":"7fb21326854faaa31ef02c9d51629fb6acedacb9396e74bf22ff8409441ea9ae","impliedFormat":1},{"version":"2fbf504c4791f9d32cd766cfe6b605bcda63289b925401953a7900db9af85348","impliedFormat":1},{"version":"ed0fb633cae35948d9e144004299a4bdf1ab912667c787b7fbffcd6d8c7b92a2","impliedFormat":1},{"version":"1678b04557dca52feab73cc67610918a7f5e25bfdba3e7fa081acd625d93106d","impliedFormat":1},{"version":"7db737262597ae2e35daa8cc1748f482cf4b0914e00a3d5a32cf6c4fc869a375","impliedFormat":1},{"version":"9c90f502816bd0179556bb875e86c944af3f6b995cde63199edbe4e0b1219aba","impliedFormat":1},{"version":"97581dc7099ef3d844c83706d53a7ecf895c0e867fbf6b9dc035bb3080f677bd","impliedFormat":1},{"version":"e494b286c8e27c52f8c7f945aa80ff223f2a3cd4f7a2619fa8991f1459e26f07","impliedFormat":1},{"version":"f54f5f9e10bbceba7515dfad0ffc89dffdb8d749d0604594c57a725cf6d79c20","impliedFormat":1},{"version":"41d17e1ad9a002feb11c8cdd2777e5bbc0cdb1e3f595d237e4dded0b6949983b","impliedFormat":1},{"version":"8c7e618c2a91ea7f6b5cca272a295864e92c16413be8fc56a943e8c7d5320011","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f487e411f9657df0e76572e500c1209b8fe95ee3b4cc6e6e7913c15f56207d","impliedFormat":1},{"version":"9d37b8a9678efbcdf38238b59ce8e6f7db70aba1a516f3a4a671a301dbacfb3d","impliedFormat":1},{"version":"a47a792b8cff71443be8dfb199f2b77e102a7bf9d4f90c18059f05d9af2d7413","impliedFormat":1},{"version":"ad50512520720d10294c629cb4e2df23891c3fcbeaca00fbfb9e6bbea65f3dd6","impliedFormat":1},{"version":"189769511b45c93b23ba76069f7701d3b631cfbedc1eb94c7753486c78736f78","impliedFormat":1},{"version":"2c2bdaa1d8ead9f68628d6d9d250e46ee8e81aa4898b4769a36956ae15e060fe","impliedFormat":1},{"version":"ba389fd3d7fba6670e97bc82eb12469dcb371d22f24e63859c1df5a083c823ed","impliedFormat":1},{"version":"5ff4433a2deae4f85ab1377e90a7554ce6b47ae51c69a84ca30a6e22fae85834","impliedFormat":1},{"version":"82b91e4e42e6c41bc7fc1b6c2dc5eba6a2ba98375eb1f210e6ff6bba2d54177e","impliedFormat":1},{"version":"97234c5303866576f913d0ccae7d58d6322d9e803c7bf1228a3fda46ab8087b2","affectsGlobalScope":true,"impliedFormat":1},{"version":"961dec547748827cb6b45f6fdc66273f7bacd9c73103c6779f070f2fd07f23f9","impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"73eeb740dacc45adc607a4f59f90fa9dbe2717d93d82f115f45f34e18f8d644a","impliedFormat":1},{"version":"ec501101c2a96133a6c695f934c8f6642149cc728571b29cbb7b770984c1088e","impliedFormat":1},{"version":"b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","impliedFormat":1},{"version":"429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","impliedFormat":1},{"version":"d251cda16f3f6a3e07f07c9e6e823ef6c583c63f653eb8777dafa749a78298e3","impliedFormat":1},{"version":"361939136b496a38b3e6b7be750bbb6998ef289bb8dd304c673138542ca16137","affectsGlobalScope":true,"impliedFormat":1},{"version":"230763250f20449fa7b3c9273e1967adb0023dc890d4be1553faca658ee65971","impliedFormat":1},{"version":"c3e9078b60cb329d1221f5878e88cecfa3e74460550e605a58fcfb41a66029ff","impliedFormat":1},{"version":"89e2568ebc2ec1e4149384b105e80e8bbf41eb4d711547f1121f4f628028de96","impliedFormat":1},{"version":"441b9bb09013654aa3d050e68b06464d8959b473e85868249d9d18f692acd35b","impliedFormat":1},{"version":"bc18a1991ba681f03e13285fa1d7b99b03b67ee671b7bc936254467177543890","impliedFormat":1},{"version":"55246f15e33ff1e2e9e679b25fa9790a48db55dc63d567fe25fac8b6a0efe911","impliedFormat":1},{"version":"fa94bbf532b7af8f394b95fa310980d6e20bd2d4c871c6a6cb9f70f03750a44b","impliedFormat":1},{"version":"925734f303b7f0cc111d42aeb21781d38a79e6d5ac05b2b1400cd1861a75d27b","impliedFormat":1},{"version":"5b26c4dd672d88336bb929787c9bfb55119e80ba89ec6dc923da1c063892843e","affectsGlobalScope":true,"impliedFormat":1},{"version":"7fa2214bb0d64701bc6f9ce8cde2fd2ff8c571e0b23065fa04a8a5a6beb91511","impliedFormat":1},{"version":"7286e4e5f80c0b1ab16addbdbbc9dd47fbae1c42034189261177b84d745cde3b","impliedFormat":1},{"version":"f12624a4a8d042b68914eac1b0a16571fc1c523173fcdf2517c65d191bd5a86c","impliedFormat":1},{"version":"cd2a656ba1d250c2002190b683e3826bf4362b6919450bc0f9bbf5612ebad837","impliedFormat":1},{"version":"841983e39bd4cbb463be385e92fda11057cab368bf27100a801c492f1d86cbaa","impliedFormat":1},{"version":"3e221ff0522e6ff95aa74a5211126aaf4d7e85ed8c8ff19290d591ad4bef988f","impliedFormat":1},{"version":"7da83f6429c6298ebf2be43d296b56ecfc94c9c28f5471b2f23b87545b914cea","impliedFormat":1},{"version":"e4156ddb25aa0e3b5303d372f26957b36778f0f6bbd4326359269873295e3058","affectsGlobalScope":true,"impliedFormat":1},{"version":"cc1b433a84cae05ddc5672d4823170af78606ad21ecef60dbc4570190cbf1357","impliedFormat":1},{"version":"751048d4aa67e20e5ecd2692340ea0d19bae42a20cc651d6f56d095e411ce3ac","impliedFormat":1},{"version":"7f78cfb2b343838612c192cb251746e3a7c62ac7675726a47e130d9b213f6580","impliedFormat":1},{"version":"aed8f3e5c7e53462565eedf34a9bcb700393cb2c1ab0c768602b929c3ed3145d","impliedFormat":1},{"version":"8e2577e7262051fd3c5bd6ca2b2056d358ff8853565720f92455860824c25188","impliedFormat":1},{"version":"7ec8d7d483f7394f9da611b10d3a0e402f76ff5c991261e6ce43a15f81ca4258","impliedFormat":1},{"version":"bb9dbb4b2ad81e3e71ec5ba4314973718555b9d04ba2a17dfbf875efecb8e2c0","impliedFormat":1},{"version":"9021dc5be8f3a87af5cede29221188a6497e2092b6889e0be212ef6b6b7153e9","impliedFormat":1},{"version":"4a8c8fd951d9fd9e0775f0aae8ed1f8b528204e24a2600bea3a1228ea83de52c","impliedFormat":1},{"version":"5b9cc0c724a8ebc7a873ab8e73c20b2416cef04b9e9d7f95ef1fa0fdcd4e0ec8","impliedFormat":1},{"version":"99ab6d0d660ce4d21efb52288a39fd35bb3f556980ec5463b1ae8f304a3bbc85","impliedFormat":1},{"version":"80a4b7023a2cc9f14d3f2e4635d6615ab3eff4b5b3630f62a8e73992fdd8cdb9","impliedFormat":1},{"version":"ec62d16f95636123624a69191a35b5df44b4b0a6428977e856c5739c0a787471","impliedFormat":1},{"version":"afa1c49f8e559e413d57343339db857d2a8159435cf9cf7d4deb41718fff1b88","impliedFormat":1},{"version":"c46f111af647c4134ae869653130610d62da321f90ebf19e186a3ea4bed79350","impliedFormat":1},{"version":"29f72ec1289ae3aeda78bf14b38086d3d803262ac13904b400422941a26a3636","affectsGlobalScope":true,"impliedFormat":1}],"root":[[51,55],65,66,133,149,150,[198,201],[232,236]],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":true,"inlineSources":true,"module":99,"noEmitOnError":true,"outDir":"./","rootDir":"..","skipLibCheck":true,"sourceMap":true,"strict":true,"target":5,"useDefineForClassFields":false},"referencedMap":[[56,1],[69,1],[70,2],[73,3],[71,3],[75,3],[78,4],[77,3],[76,3],[74,3],[72,5],[57,1],[58,6],[169,7],[167,8],[168,9],[170,10],[171,11],[157,12],[156,13],[159,14],[160,15],[68,16],[67,13],[158,17],[164,18],[165,19],[166,19],[163,1],[161,20],[162,21],[204,22],[205,23],[203,1],[206,24],[219,1],[221,25],[220,26],[230,27],[215,1],[222,28],[223,29],[224,1],[225,26],[228,30],[218,17],[227,31],[229,29],[231,32],[214,33],[210,34],[202,1],[365,1],[300,35],[301,35],[302,36],[238,37],[303,38],[304,39],[305,40],[306,41],[307,42],[308,43],[309,44],[310,45],[311,46],[312,46],[313,47],[314,48],[315,1],[316,49],[317,50],[239,1],[237,1],[318,51],[319,52],[320,53],[364,54],[321,55],[322,56],[323,55],[324,57],[325,58],[327,59],[328,60],[329,60],[330,60],[331,61],[332,62],[333,63],[334,64],[335,65],[336,66],[337,66],[338,67],[339,1],[340,1],[341,68],[342,69],[343,70],[344,71],[345,72],[346,73],[347,74],[348,75],[349,76],[350,77],[351,78],[352,79],[353,80],[354,81],[355,82],[356,83],[357,84],[358,85],[359,86],[360,87],[240,55],[241,1],[242,88],[243,89],[244,1],[245,90],[246,1],[291,91],[292,92],[293,93],[294,93],[295,94],[296,1],[297,38],[298,95],[299,92],[361,96],[362,97],[363,98],[213,99],[212,100],[211,1],[60,1],[326,1],[207,34],[209,101],[208,102],[143,103],[142,104],[139,1],[140,105],[141,106],[62,107],[134,108],[59,109],[135,110],[137,109],[63,1],[61,111],[216,109],[79,112],[136,113],[138,114],[226,109],[64,115],[217,116],[86,1],[50,117],[49,1],[47,1],[48,1],[8,1],[10,1],[9,1],[2,1],[11,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[3,1],[19,1],[20,1],[4,1],[21,1],[25,1],[22,1],[23,1],[24,1],[26,1],[27,1],[28,1],[5,1],[29,1],[30,1],[31,1],[32,1],[6,1],[36,1],[33,1],[34,1],[35,1],[37,1],[7,1],[38,1],[43,1],[44,1],[39,1],[40,1],[41,1],[42,1],[1,1],[45,1],[46,1],[265,118],[279,119],[262,120],[280,121],[289,122],[253,123],[254,124],[252,125],[288,126],[283,127],[287,128],[256,129],[266,130],[276,131],[255,132],[286,133],[250,134],[251,127],[257,130],[258,1],[264,135],[261,130],[248,136],[290,137],[281,138],[269,139],[268,130],[270,140],[273,141],[267,142],[271,143],[284,126],[259,144],[260,145],[274,146],[249,121],[278,147],[277,130],[263,145],[272,148],[275,149],[282,1],[247,1],[285,150],[144,151],[148,152],[145,153],[147,13],[146,13],[194,1],[195,17],[193,17],[192,154],[185,155],[186,156],[190,157],[188,158],[196,159],[178,13],[187,13],[189,13],[191,13],[197,160],[151,161],[181,162],[182,162],[179,162],[180,162],[184,162],[183,162],[177,163],[55,164],[53,165],[65,166],[52,167],[66,166],[54,165],[133,168],[150,169],[149,170],[198,171],[51,167],[199,172],[201,173],[200,165],[232,174],[233,175],[234,176],[235,177],[236,175],[176,178],[175,179],[174,180],[172,13],[153,181],[154,182],[155,183],[152,13],[173,184],[89,1],[91,1],[92,1],[93,185],[90,1],[94,17],[97,156],[98,17],[99,17],[100,17],[105,186],[101,17],[102,17],[103,17],[104,17],[96,1],[107,1],[108,187],[109,188],[87,156],[95,1],[106,1],[88,189],[80,1],[85,190],[83,191],[82,192],[84,1],[81,1],[127,17],[121,17],[116,17],[117,17],[131,17],[113,1],[115,17],[118,17],[119,17],[130,17],[128,17],[114,17],[122,17],[110,17],[132,193],[125,17],[126,17],[129,17],[120,17],[123,17],[111,17],[112,17],[124,17]],"version":"5.9.3"}
1
+ {"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/typescript/lib/lib.esnext.float16.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/tslib/tslib.d.ts","../../../node_modules/tslib/modules/index.d.ts","../src/types.ts","../src/menu-mode.ts","../src/menu-active.ts","../src/menu-privilege.ts","../src/index.ts","../../../node_modules/@lit/reactive-element/development/css-tag.d.ts","../../../node_modules/@lit/reactive-element/development/reactive-controller.d.ts","../../../node_modules/@lit/reactive-element/development/reactive-element.d.ts","../../../node_modules/lit-html/development/directive.d.ts","../../../node_modules/@types/trusted-types/lib/index.d.ts","../../../node_modules/lit-html/development/lit-html.d.ts","../../../node_modules/lit-element/development/lit-element.d.ts","../../../node_modules/lit-html/development/is-server.d.ts","../../../node_modules/lit/development/index.d.ts","../src/menu-landscape-styles.ts","../src/menu-portrait-styles.ts","../../../node_modules/@material/web/icon/internal/icon.d.ts","../../../node_modules/@material/web/icon/icon.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/base.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/custom-element.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/property.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/state.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/event-options.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/query.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/query-all.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/query-async.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/query-assigned-nodes.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/query-assigned-elements.d.ts","../../../node_modules/lit/development/decorators.d.ts","../../shell/dist/src/types/domain.d.ts","../../shell/dist/src/types/user.d.ts","../../shell/dist/src/types/role.d.ts","../../shell/dist/src/types/privilege.d.ts","../../shell/dist/src/types/types.d.ts","../../shell/dist/src/types/index.d.ts","../../../node_modules/redux/index.d.ts","../../shell/dist/src/lazy-reducer-enhancer.d.ts","../../shell/dist/src/store.d.ts","../../shell/dist/src/actions/app.d.ts","../../shell/dist/src/actions/route.d.ts","../../shell/dist/src/actions/busy.d.ts","../../shell/dist/src/actions/const.d.ts","../../shell/dist/src/actions/index.d.ts","../../shell/dist/src/app/pages/page-view.d.ts","../../shell/dist/src/object-store.d.ts","../../shell/dist/src/custom-alert.d.ts","../../shell/dist/src/connect-mixin.d.ts","../../shell/dist/src/controllers/app-controller.d.ts","../../shell/dist/src/controllers/context-controller.d.ts","../../shell/dist/src/controllers/font-controller.d.ts","../../shell/dist/src/controllers/layout-controller.d.ts","../../shell/dist/src/controllers/menu-controller.d.ts","../../shell/dist/src/controllers/route-controller.d.ts","../../shell/dist/src/controllers/snackbar-controller.d.ts","../../shell/dist/src/controllers/index.d.ts","../../shell/dist/src/require-custom-element.d.ts","../../shell/dist/src/drafts/draft-store.d.ts","../../shell/dist/src/drafts/unsaved-draft-controller.d.ts","../../shell/dist/src/index.d.ts","../../styles/dist/src/headroom-styles.d.ts","../../styles/dist/src/scrollbar-styles.d.ts","../../styles/dist/src/spinner-styles.d.ts","../../styles/dist/src/common-button-styles.d.ts","../../styles/dist/src/form-field-styles.d.ts","../../styles/dist/src/common-grist-styles.d.ts","../../styles/dist/src/button-container-styles.d.ts","../../styles/dist/src/button-styles.d.ts","../../styles/dist/src/common-header-styles.d.ts","../../styles/dist/src/common-popup-styles.d.ts","../../styles/dist/src/popup-body-styles.d.ts","../../styles/dist/src/box-padding-editor-styles.d.ts","../../styles/dist/src/gradient-direction-styles.d.ts","../../styles/dist/src/property-grid-styles.d.ts","../../styles/dist/src/table-event-styles.d.ts","../../styles/dist/src/inspector-styles.d.ts","../../styles/dist/src/line-styles.d.ts","../../styles/dist/src/action-heights.d.ts","../../styles/dist/src/form-element-heights.d.ts","../../styles/dist/src/page-frame-styles.d.ts","../../styles/dist/src/fab-styles.d.ts","../../styles/dist/src/card-catalog-styles.d.ts","../../styles/dist/src/index.d.ts","../src/ox-menu-landscape.ts","../../../node_modules/lit-html/development/async-directive.d.ts","../../../node_modules/lit-html/development/directives/async-replace.d.ts","../../../node_modules/lit/development/directives/async-replace.d.ts","../../../node_modules/lit-html/development/directives/if-defined.d.ts","../../../node_modules/lit/development/directives/if-defined.d.ts","../../../node_modules/i18next/typescript/helpers.d.ts","../../../node_modules/i18next/typescript/options.d.ts","../../../node_modules/i18next/typescript/t.d.ts","../../../node_modules/i18next/index.d.ts","../../../node_modules/i18next/index.d.mts","../../i18n/dist/src/config.d.ts","../../i18n/dist/src/localize.d.ts","../../i18n/dist/src/ox-i18n.d.ts","../../i18n/dist/src/ox-i18n-selector.d.ts","../../i18n/dist/src/index.d.ts","../src/ox-menu-portrait.ts","../src/ox-menu-part.ts","../../layout/dist/src/initializer.d.ts","../../popup/dist/src/ox-popup.d.ts","../../popup/dist/src/ox-popup-list.d.ts","../../popup/dist/src/ox-popup-menu.d.ts","../../popup/dist/src/ox-popup-menuitem.d.ts","../../../node_modules/@material/web/elevation/internal/elevation.d.ts","../../../node_modules/@material/web/elevation/elevation.d.ts","../../../node_modules/@material/web/internal/controller/attachable-controller.d.ts","../../../node_modules/@material/web/focus/internal/focus-ring.d.ts","../../../node_modules/@material/web/focus/md-focus-ring.d.ts","../../../node_modules/@material/web/ripple/internal/ripple.d.ts","../../../node_modules/@material/web/ripple/ripple.d.ts","../../../node_modules/@material/web/labs/behaviors/mixin.d.ts","../../../node_modules/@material/web/labs/behaviors/element-internals.d.ts","../../../node_modules/@material/web/labs/behaviors/form-associated.d.ts","../../../node_modules/@material/web/labs/behaviors/form-submitter.d.ts","../../../node_modules/@material/web/button/internal/button.d.ts","../../../node_modules/@material/web/button/internal/filled-button.d.ts","../../../node_modules/@material/web/button/filled-button.d.ts","../../../node_modules/@material/web/button/internal/text-button.d.ts","../../../node_modules/@material/web/button/text-button.d.ts","../../popup/dist/src/ox-popup-actions.d.ts","../../popup/dist/src/ox-prompt.d.ts","../../popup/dist/src/ox-floating-overlay.d.ts","../../popup/dist/src/open-popup.d.ts","../../popup/dist/src/index.d.ts","../../layout/dist/src/layouts/ox-snack-bar.d.ts","../../layout/dist/src/components/ox-resize-splitter.d.ts","../../layout/dist/src/layouts/ox-header-bar.d.ts","../../layout/dist/src/layouts/ox-nav-bar.d.ts","../../layout/dist/src/layouts/ox-aside-bar.d.ts","../../layout/dist/src/layouts/ox-footer-bar.d.ts","../../layout/dist/src/layouts/ox-page-header-bar.d.ts","../../layout/dist/src/layouts/ox-page-footer-bar.d.ts","../../layout/dist/src/actions/layout.d.ts","../../layout/dist/src/actions/snackbar.d.ts","../../layout/dist/src/components/ox-split-pane.d.ts","../../layout/dist/src/components/ox-entity360-dock.d.ts","../../layout/dist/src/components/ox-three-pane.d.ts","../../layout/dist/src/components/ox-canvas-bar.d.ts","../../layout/dist/src/components/ox-url-tabs.d.ts","../../layout/dist/src/actions/entity360.d.ts","../../layout/dist/src/actions/entity360-registry.d.ts","../../layout/dist/src/actions/entity360-door.d.ts","../../layout/dist/src/actions/entity360-name.d.ts","../../layout/dist/src/components/ox-entity360-section.d.ts","../../layout/dist/src/index.d.ts","../src/ox-top-menu-bar.ts","../stories/ox-menu-container.ts","../stories/test-menus.ts","../stories/ox-menu-portrait.stories.ts","../../../node_modules/@types/chai/index.d.ts","../../../node_modules/@open-wc/semantic-dom-diff/get-diffable-html.d.ts","../../../node_modules/@open-wc/semantic-dom-diff/chai-dom-diff-plugin.d.ts","../../../node_modules/@open-wc/semantic-dom-diff/chai-dom-diff.d.ts","../../../node_modules/@open-wc/semantic-dom-diff/index.d.ts","../../../node_modules/chai-a11y-axe/chai-a11y-axe-plugin.d.ts","../../../node_modules/chai-a11y-axe/src/accessible.d.ts","../../../node_modules/chai-a11y-axe/index.d.ts","../../../node_modules/@types/chai-dom/index.d.ts","../../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../../node_modules/@types/sinon/index.d.ts","../../../node_modules/@types/sinon-chai/index.d.ts","../../../node_modules/@open-wc/testing/register-chai-plugins.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/elementupdated.d.ts","../../../node_modules/lit-html/development/static.d.ts","../../../node_modules/lit/development/static-html.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/renderable.d.ts","../../../node_modules/@open-wc/testing-helpers/node_modules/@open-wc/dedupe-mixin/index.d.ts","../../../node_modules/@open-wc/testing-helpers/node_modules/@open-wc/scoped-elements/dist-types/types.d.ts","../../../node_modules/@open-wc/testing-helpers/node_modules/@open-wc/scoped-elements/dist-types/html-element.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/fixture-no-side-effect.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/fixture.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/fixturewrapper.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/helpers.d.ts","../../../node_modules/lit/development/html.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/scopedelementswrapper.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/litfixture.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/stringfixture.d.ts","../../../node_modules/@open-wc/testing-helpers/types/index.d.ts","../../../node_modules/@open-wc/testing/index.d.ts","../test/menu-active.test.ts","../test/menu-badge-contrast.test.ts","../test/menu-mode.test.ts","../test/menu-privilege.test.ts","../test/menu-rail-page.test.ts","../test/ox-menu-portrait.test.ts","../../../node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/@types/node/web-globals/blob.d.ts","../../../node_modules/@types/node/web-globals/console.d.ts","../../../node_modules/@types/node/web-globals/crypto.d.ts","../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/@types/node/web-globals/encoding.d.ts","../../../node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/undici-types/utility.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client-stats.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/round-robin-pool.d.ts","../../../node_modules/undici-types/h2c-client.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/dispatcher1-wrapper.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/snapshot-agent.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/socks5-proxy-agent.d.ts","../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/undici-types/retry-handler.d.ts","../../../node_modules/undici-types/retry-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/util.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/eventsource.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/@types/node/web-globals/importmeta.d.ts","../../../node_modules/@types/node/web-globals/messaging.d.ts","../../../node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/@types/node/web-globals/performance.d.ts","../../../node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/@types/node/web-globals/timers.d.ts","../../../node_modules/@types/node/web-globals/url.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/ffi.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/@types/node/inspector/promises.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/buffer/index.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/path/posix.d.ts","../../../node_modules/@types/node/path/win32.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/quic.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/sqlite.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/iter.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/test/reporters.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/util/types.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vfs.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/zlib/iter.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/mocha/index.d.ts"],"fileIdsList":[[239,304,312,317,320,322,323,324,337],[69,239,304,312,317,320,322,323,324,337],[58,69,239,304,312,317,320,322,323,324,337],[58,69,77,239,304,312,317,320,322,323,324,337],[71,239,304,312,317,320,322,323,324,337],[56,57,239,304,312,317,320,322,323,324,337],[64,168,239,304,312,317,320,322,323,324,337],[61,64,160,162,163,164,165,166,239,304,312,317,320,322,323,324,337],[61,157,167,239,304,312,317,320,322,323,324,337],[167,239,304,312,317,320,322,323,324,337],[64,170,239,304,312,317,320,322,323,324,337],[64,156,239,304,312,317,320,322,323,324,337],[61,64,239,304,312,317,320,322,323,324,337],[64,158,239,304,312,317,320,322,323,324,337],[64,159,239,304,312,317,320,322,323,324,337],[64,67,239,304,312,317,320,322,323,324,337],[64,239,304,312,317,320,322,323,324,337],[64,163,239,304,312,317,320,322,323,324,337],[64,163,164,239,304,312,317,320,322,323,324,337],[61,64,158,239,304,312,317,320,322,323,324,337],[64,161,239,304,312,317,320,322,323,324,337],[202,203,239,304,312,317,320,322,323,324,337],[204,239,304,312,317,320,322,323,324,337],[203,205,239,304,312,317,320,322,323,324,337],[219,220,239,304,312,317,320,322,323,324,337],[219,239,304,312,317,320,322,323,324,337],[215,217,223,224,225,228,229,239,304,312,317,320,322,323,324,337],[218,221,239,304,312,317,320,322,323,324,337],[222,239,304,312,317,320,322,323,324,337],[218,222,227,239,304,312,317,320,322,323,324,337],[218,221,226,239,304,312,317,320,322,323,324,337],[202,214,230,239,304,312,317,320,322,323,324,337],[206,209,210,213,239,304,312,317,320,322,323,324,337],[202,239,304,312,317,320,322,323,324,337],[239,301,302,304,312,317,320,322,323,324,337],[239,303,304,312,317,320,322,323,324,337],[304,312,317,320,322,323,324,337],[239,304,312,317,320,322,323,324,337,346],[239,304,305,310,312,315,317,320,322,323,324,326,337,342,355],[239,304,305,306,312,315,317,320,322,323,324,337],[239,304,307,312,317,320,322,323,324,337,356],[239,304,308,309,312,317,320,322,323,324,328,337],[239,304,309,312,317,320,322,323,324,337,342,352],[239,304,310,312,315,317,320,322,323,324,326,337],[239,303,304,311,312,317,320,322,323,324,337],[239,304,312,313,317,320,322,323,324,337],[239,304,312,314,315,317,320,322,323,324,337],[239,303,304,312,315,317,320,322,323,324,337],[239,304,312,315,317,318,320,322,323,324,337,342,355],[239,304,312,315,317,318,320,322,323,324,337,344,346],[239,291,304,312,315,317,319,320,322,323,324,326,337,342,355],[239,304,312,315,317,319,320,322,323,324,326,337,342,352,355],[239,304,312,317,319,320,321,322,323,324,337,342,352,355],[238,239,240,241,242,243,244,245,246,247,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364],[239,304,312,315,317,320,322,323,324,337],[239,304,312,317,320,322,324,337],[239,304,312,317,320,322,323,324,325,337,355],[239,304,312,315,317,320,322,323,324,326,337,342],[239,304,312,317,320,322,323,324,328,337],[239,304,312,317,320,322,323,324,329,337],[239,304,312,315,317,320,322,323,324,332,337],[239,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363],[239,304,312,317,320,322,323,324,334,337],[239,304,312,317,320,322,323,324,335,337],[239,304,309,312,317,318,320,322,323,324,326,337,344,352],[239,304,312,315,317,320,322,323,324,337,338],[239,304,312,317,320,322,323,324,337,339,356,360],[239,304,312,315,317,320,322,323,324,337,342,344,345,346],[239,304,312,317,320,322,323,324,337,343,346],[239,304,312,315,317,320,322,323,324,337,342,344],[239,304,312,315,317,320,322,323,324,337,342,345,346],[239,304,312,317,320,322,323,324,337,346,356],[239,304,312,317,320,322,323,324,337,347],[239,301,304,312,317,320,322,323,324,337,342,349,355],[239,304,312,317,320,322,323,324,337,342,348],[239,304,312,315,317,320,322,323,324,337,350,351],[239,304,312,317,320,322,323,324,337,350,351],[239,304,309,312,317,320,322,323,324,326,337,342,352],[239,304,312,317,320,322,323,324,337,353],[239,304,312,317,320,322,323,324,326,337,354],[239,304,312,317,319,320,322,323,324,335,337,355],[239,304,312,317,320,322,323,324,337,356,357],[239,304,309,312,317,320,322,323,324,337,357],[239,304,312,317,320,322,323,324,337,342,358],[239,304,312,317,318,320,322,323,324,337],[239,304,312,317,320,322,323,324,325,337,360],[239,304,312,317,320,322,323,324,337,361],[239,304,307,312,317,320,322,323,324,337],[239,304,309,312,317,320,322,323,324,337],[239,304,312,317,320,322,323,324,337,356],[239,291,304,312,317,320,322,323,324,337],[239,304,312,317,320,322,323,324,337,355],[239,304,312,317,320,322,323,324,337,362],[239,304,312,317,320,322,323,324,332,337],[239,304,312,317,320,322,323,324,337,351],[239,291,304,312,315,317,318,320,322,323,324,326,332,337,342,346,355,358,360,362],[239,304,312,317,320,322,323,324,337,342,363],[239,304,312,317,320,322,323,324,337,344,364],[202,212,239,304,312,317,320,322,323,324,337],[211,239,304,312,317,320,322,323,324,337],[208,239,304,312,317,320,322,323,324,337],[207,239,304,312,317,320,322,323,324,337],[139,140,141,142,239,304,312,317,320,322,323,324,337],[139,140,141,239,304,312,317,320,322,323,324,337],[139,239,304,312,317,320,322,323,324,337],[139,140,239,304,312,317,320,322,323,324,337],[58,61,239,304,312,317,320,322,323,324,337],[59,61,239,304,312,317,320,322,323,324,337],[61,239,304,312,317,320,322,323,324,337],[59,61,134,239,304,312,317,320,322,323,324,337],[59,60,239,304,312,317,320,322,323,324,337],[70,71,72,73,74,75,76,77,78,239,304,312,317,320,322,323,324,337],[135,239,304,312,317,320,322,323,324,337],[137,239,304,312,317,320,322,323,324,337],[58,61,62,63,239,304,312,317,320,322,323,324,337],[216,239,304,312,317,320,322,323,324,337],[49,239,304,312,317,320,322,323,324,337],[239,254,257,260,261,304,312,317,320,322,323,324,337,355],[239,257,304,312,317,320,322,323,324,337,342,355],[239,257,261,304,312,317,320,322,323,324,337,355],[239,304,312,317,320,322,323,324,337,342],[239,251,304,312,317,320,322,323,324,337],[239,255,304,312,317,320,322,323,324,337],[239,253,254,257,304,312,317,320,322,323,324,337,355],[239,304,312,317,320,322,323,324,326,337,352],[239,304,312,317,320,322,323,324,337,365],[239,251,304,312,317,320,322,323,324,337,365],[239,253,257,304,312,317,320,322,323,324,326,337,355],[239,248,249,250,252,256,304,312,315,317,320,322,323,324,337,342,355],[239,257,304,312,317,320,322,323,324,337],[239,257,266,275,304,312,317,320,322,323,324,337],[239,249,255,304,312,317,320,322,323,324,337],[239,257,285,286,304,312,317,320,322,323,324,337],[239,249,252,257,304,312,317,320,322,323,324,337,346,355,365],[239,253,257,304,312,317,320,322,323,324,337,355],[239,248,304,312,317,320,322,323,324,337],[239,251,252,253,255,256,257,258,259,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,286,287,288,289,290,304,312,317,320,322,323,324,337],[239,257,278,281,304,312,317,320,322,323,324,337],[239,257,266,268,269,304,312,317,320,322,323,324,337],[239,255,257,268,270,304,312,317,320,322,323,324,337],[239,256,304,312,317,320,322,323,324,337],[239,249,251,257,304,312,317,320,322,323,324,337],[239,257,261,268,270,304,312,317,320,322,323,324,337],[239,261,304,312,317,320,322,323,324,337],[239,255,257,260,304,312,317,320,322,323,324,337,355],[239,249,253,257,266,304,312,317,320,322,323,324,337],[239,257,278,304,312,317,320,322,323,324,337],[239,270,304,312,317,320,322,323,324,337],[239,249,253,257,261,304,312,317,320,322,323,324,337],[239,251,257,285,304,312,317,320,322,323,324,337,346,362,365],[143,239,304,312,317,320,322,323,324,337],[144,145,146,147,239,304,312,317,320,322,323,324,337],[64,143,239,304,312,317,320,322,323,324,337],[188,239,304,312,317,320,322,323,324,337],[64,176,239,304,312,317,320,322,323,324,337],[86,239,304,312,317,320,322,323,324,337],[61,64,68,189,239,304,312,317,320,322,323,324,337],[64,68,239,304,312,317,320,322,323,324,337],[61,64,194,239,304,312,317,320,322,323,324,337],[151,176,177,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,239,304,312,317,320,322,323,324,337],[109,239,304,312,317,320,322,323,324,337],[174,178,239,304,312,317,320,322,323,324,337],[68,171,239,304,312,317,320,322,323,324,337],[50,51,52,53,54,239,304,312,317,320,322,323,324,337],[50,51,239,304,312,317,320,322,323,324,337],[50,64,239,304,312,317,320,322,323,324,337],[50,239,304,312,317,320,322,323,324,337],[50,51,64,65,68,79,109,132,239,304,312,317,320,322,323,324,337],[50,51,52,53,64,68,79,109,132,133,149,239,304,312,317,320,322,323,324,337],[50,51,52,64,66,68,79,109,132,136,138,148,239,304,312,317,320,322,323,324,337],[50,51,64,68,79,109,197,239,304,312,317,320,322,323,324,337],[50,51,64,68,79,132,149,239,304,312,317,320,322,323,324,337],[50,64,149,199,200,239,304,312,317,320,322,323,324,337],[50,51,53,231,239,304,312,317,320,322,323,324,337],[50,51,64,149,231,239,304,312,317,320,322,323,324,337],[50,52,231,239,304,312,317,320,322,323,324,337],[50,51,54,231,239,304,312,317,320,322,323,324,337],[50,52,64,109,150,231,239,304,312,317,320,322,323,324,337],[152,153,154,155,172,173,175,239,304,312,317,320,322,323,324,337],[64,174,239,304,312,317,320,322,323,324,337],[61,64,68,239,304,312,317,320,322,323,324,337],[61,64,68,152,239,304,312,317,320,322,323,324,337],[61,64,152,239,304,312,317,320,322,323,324,337],[61,64,154,239,304,312,317,320,322,323,324,337],[61,64,68,169,171,172,239,304,312,317,320,322,323,324,337],[89,90,91,92,239,304,312,317,320,322,323,324,337],[98,99,100,101,102,103,104,239,304,312,317,320,322,323,324,337],[64,107,239,304,312,317,320,322,323,324,337],[85,88,93,94,95,96,97,105,106,107,108,239,304,312,317,320,322,323,324,337],[86,87,239,304,312,317,320,322,323,324,337],[80,81,82,83,84,239,304,312,317,320,322,323,324,337],[81,82,239,304,312,317,320,322,323,324,337],[80,81,83,239,304,312,317,320,322,323,324,337],[110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,239,304,312,317,320,322,323,324,337]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6a5253138c5432c68a1510c70fe78a644fe2e632111ba778e1978010d6edfec","impliedFormat":1},{"version":"b8f34dd1757f68e03262b1ca3ddfa668a855b872f8bdd5224d6f993a7b37dc2c","impliedFormat":99},{"version":"30db73264f423790415f2f88f22c374cb0ede9c0610fe3386ae20cc17574bcf5","signature":"a4f32f4e2c7c8b874051148ee801dede9c40258b2f79e463fd28235af0ad3bd7"},{"version":"222d8d903bd361e9f810461daa3cf06f66ab39df90e125089dfb3e890322162c","signature":"5a2b608b2b13ddcf2663adb04f249d5e232405b7a43a6fb256be031542d4efd9"},{"version":"b405dafa14045de75395c5339f890b769d25a26275980ad3271d78eee913a047","signature":"ae80fd86922b51a4de6dca9ff32faf504b82131df8bc529740a0b700338468ca"},{"version":"207a185ae4d9a3cc6c2481e19216e02aa3b465e37bdcf2a54c2ad81963574d2b","signature":"8c343f73650fe89ac17ccf2077c92a4efb35742b1b42d211754f1ce5b29e890c"},{"version":"93d215899a1bd18750be7a232c22c14539d440c03f660b86a1db21c3186dc56c","signature":"8cccc9e3831c43812a4afa5e2725761ca82575c74febb41ffe5e0560f38e18f6"},{"version":"74012d464fbc5354ca3a7d5e71bee43b17da01a853c8ff10971bbe3680c76f40","impliedFormat":99},{"version":"5e30131b6a5587fe666926ad1d9807e733c0a597ed12d682669fcaa331aea576","impliedFormat":99},{"version":"a0f82d2f9450bd147a8c137798d9501bd49b7c9e118f75b07b76709ff39b6b55","affectsGlobalScope":true,"impliedFormat":99},{"version":"00cb63103f9670f8094c238a4a7e252c8b4c06ba371fea5c44add7e41b7247e4","impliedFormat":99},{"version":"15fe687c59d62741b4494d5e623d497d55eb38966ecf5bea7f36e48fc3fbe15e","impliedFormat":1},{"version":"e09db3291e6b440f7debed2227d8357e80c95987a0d0d67ac17521d8f7b11bdb","impliedFormat":99},{"version":"9a318e3a8900672b85cd3c8c3a5acf51b88049557a3ae897ccdcf2b85a8f61f9","impliedFormat":99},{"version":"1bcd560deed90a43c51b08aa18f7f55229f2e30974ab5ed1b7bb5721be379013","impliedFormat":99},{"version":"dc08fe04e50bc24d1baded4f33e942222bbdd5d77d6341a93cfe6e4e4586a3be","impliedFormat":99},{"version":"a1c5ae2fd49803fc6db34e95007b9c75a21aba738acc4a519c839a129e509eca","signature":"3bcaadf31685c068f5c12037763d5f7d16e86c25412946aad78e418193066ba6"},{"version":"864c2fe6da94b03dae6a4868d4bf62a02c5113bc02e13f51f4dae9d1540f34a4","signature":"b264a25bcb204cc781031cc94856e649951aaf0b3764b167c7de4f81852415ac"},{"version":"b93e2680295ac83b52846bcd76dd6d06507d3da1738ebe564a1e99543993b3b4","impliedFormat":99},{"version":"4ae1ed87c59518f4e0918a21409ec3020e97037a386b57953c6b9fed9cad6949","affectsGlobalScope":true,"impliedFormat":99},{"version":"cdeae34aca6700620ebf3f27cf7d439c3af97595dd6e2729fa4780483add5680","impliedFormat":99},{"version":"3ff87ea3471b51beaf4aa8fd8f4422862b11d343fdbb55bf383e0f8cc195a445","impliedFormat":99},{"version":"99bdf729529cdbf12e2bf76ea751b662011133dcf9e35abcb3def47bb02f7b0a","impliedFormat":99},{"version":"732fb71ecb695d6f36ddcbb72ebfe4ff6b6491d45101a00fa2b75a26b80d640f","impliedFormat":99},{"version":"039cb05125d7621f8143616c495b8e6b54249c4e64d2754b80ff93867f7f4b01","impliedFormat":99},{"version":"1b81f1fa82ad30af01ab1cae91ccaddc10c48f5916bbd6d282155e44a65d858d","impliedFormat":99},{"version":"a0fc7a02a75802678a67000607f20266cf1a49dc0e787967efe514e31b9ed0c3","impliedFormat":99},{"version":"5ebf098a1d81d400b8af82807cf19893700335cf91a7b9dbd83a5d737af34b11","impliedFormat":99},{"version":"101cf83ac3f9c5e1a7355a02e4fbe988877ef83c4ebec0ff0f02b2af022254a3","impliedFormat":99},{"version":"d017e2fcd44b46ca80cd2b592a6314e75f5caab5bda230f0f4a45e964049a43a","impliedFormat":99},{"version":"a8992b852521a66f63e0cedc6e1f054b28f972232b6fa5ca59771db6a1c8bbea","impliedFormat":99},"4d4cf93a6b4c81851ad759e4569b6feb7a701e80b13a6f9d8d9c6012bbb86bd6","2e6035af8f3e43bf95e4983329c8277d66f9b271106af27b99a85d1c1b9daf4a","df32d43311e85715e2a573239a4bbc5b78ebaf29af2af5fa8c85370197997515","3a792bbf677343364a1d9b7197c6e4e512764f17364efd656b1a3598f2a9e820","3d7c0b593a29d717b2b2ba3f03f819c3c48bf9e250d79c4a31860af80f177e8c","e576aa80090f8b6020355ca8d7f4184067c84389f4b92125be29e03b1f6c5194",{"version":"fd624f7d7b264922476685870f08c5e1c6d6a0f05dee2429a9747b41f6b699d4","affectsGlobalScope":true,"impliedFormat":1},"487213b1bcbdaa470cf59a4cea3f8a939b9222e74b455fe0fd2f0dc2346cc3c0",{"version":"8a9e962b8c98aa48377773c40ac7a3e530fb3354cec48fdb59d8e2df3a624a0c","affectsGlobalScope":true},"641089f0b8094ef74b9d4b3364d5dec1592d5e3b8a51c1ba491bc8872049e79a","8e33e65ce7fcd3cb20e29505452daa51543003d5db597f1aca2a51ff9043c8a7","b42033bf1067564808e4d360d79281667c2b3b0792c2d615ab641eb85974d4ba","7af29b0589483f7bb8a99405ddb849f34bc053146184561ed4179e02f5fe4d0f","ad3ee9f7d14ad8b7ae8094d0f1a2276656f7a970827d4030d1dead7c2d765f75","9c7568f9c75cf6a7d35dc9f18c5971cd5b21344c686c7cce56b3558d3305d40f","fc48282c397084016a939e1b3f91dcaf4199b6cba339d91d8b2dc2acade79762","3e62a55b950132d6eeacc607b7a1bff990d5484347b2be5a1f54db51af30ff25","8b86f33b7e06e2f0a3bf4703cf9d8b0baab016e36b83f2a33dac184f061e17ea","88c205bacab539d8e844b80a1ec76fc649fbc731f12dfd7cca160976b5ddfd5a","565d32dce0b8761e7cfafe40c56a8a0fab0bb9e7bb35a31d9712643b3c8dbbc4","4bde12afd6fdd6e52d7316e00adfbccd70becc3ebd9c4f647d07caef53a474ae","a7e588bdba05f1fb78f83e50ee62c93565134d3b996babf2697c2b43fcf17ce0","218a0f93d7091c68718ec4260f41f3a61b5ecb7e786a8c04e296292ff41db8f0","cf45487aeb18b31f1001b99d06793986ac3e6840b0602f9cf3756a2724348bf4","81f0a95843ae6e5a006addc4b5c217b075057ff82c9bc319655de21a13ba9f10","1a68f44e90ac5c261a3157004a7ec18759982b91fd725537d6db919d83601dd1","daccba798a74fc239523622caf24656e28b78dac33ea8a031682280fd51b0d0f","f6a07f563f8ac41831de197155d550379c6d197109ba54d8ffdec21dfa287a6f","5c14065b4c2eb2dccb003b6f1e538900a1909de62a338fe3c35ffb267d653953","5cee37504a444c12c6633430239f9dd1b26649c19f1e71adaaf4ea5712cc8c62","cf93fb9208a01c80f0fad245c4360356e5de6c2384b7641acf0b9cc2f5c42448","336398b0efaf964124e636a9b29c4edd5870aee79ac64bf87be58a9d66b7c048","571bc65ec37ba124e762bb822e14a2b8502dc684e356be8feaccbd6b9cadd023","7cd455fc4c4818f19263d73b29c59f3fb5fd54b45a6ab83ca3eb3661281db56b","d428a9fbb7cc014b69651793373edf9be9b0bba7c3e7f720d2a294dd1a50d7c5","1c6b9b5501774a2ece6574be8e26092800e3f1f836f8c179b4f9fdd271a620f8","bcd2426fd141157e04e3a8eff914b575403587f398cf0878f07c2f283e0d1afd","c04405c54b9095528ba8d4006ff443a5aad3ea65611344c4522aab1608d0705f","bac8ff394e831e4dd3f0961d6abb414b0e2b4ba16fdeb502d087ebf0340ed5f6","d9f8946a29f08d831605e6a9005785842dfbe5b09e5d38b6bf5073a11453890a","f9dee09d52541244f2a093e8faa29bec9527aad98111279fea51a10a95b9bfd4","b337608772b9df38e69b89837ecf758100e6c1c7acd4d0f10595f738faf1d034","c89d663edb7c20cfab677286571dc8f4f09878119d7ecd010895133995f12532","9d04b912e18e966fca08158f28e5c41bfb2fa864187d926e04d737aa83a96e17","2ad4fcfa075cde73e5ae78491531cef44cec9fb9a880be8335afd98c444528cf","881cb6bb1e6384a9943b8c6f1cd3a0f215a683b032130f700e0d87bc9a990727","e2d895b9561b0b9a350c970475ff268e4e0fc44436e107a916889a0a93d3389b","302a06cbb95a5c6041745f5f8f64a0a7b2fe7926f2ee71f96644f473d6804a44","bfa39163a2b652b382fa019284a857b7a8a25eb3c4469124088530cead0ba347","a2f3de4d473e2dab6128eb8f69cfad59e9894ad25be6ec7213900e9236971582","6a53004a10b7472c10c900aac074c24cd127b3ddbb9105dc8b3fca25990aa977","73868c81078b6ee9a3702c45413d93f367f652c91b32221f40f6b5f60333f979","1ac2b7818cb72193c46f6b78732a65953a017e339624ed6555d165ca490bbe7a",{"version":"edce72f988c83157a88933338f4cdcf3bc72118ab04d9ac07cd35abee7c92678","signature":"143f8d604ef3ed044bfdeda068f2b4f33d0cd8df6d9d42b26a2ecce9426cb0bc"},{"version":"c42f9b18f5f559b133cf9b409f678afb30df9c6498865aae9a1abad0f1e727a8","impliedFormat":99},{"version":"feaf207fddc69de2a8826438be06f5f954964cddc8e95bf980c9fe02cb22616a","impliedFormat":99},{"version":"e3d6176dc713a2b6b17054021a6aa839824bf43f358e3ae12192b54c6de1a6b4","impliedFormat":99},{"version":"74fe889b1d2bba4b2893d518ba94e2b20dabe6d19d0c2f9554d9a5d3755710f4","impliedFormat":99},{"version":"2ae64cd7b6e760496069ee3b496c64700c956a0620740e1ef52b163824859db7","impliedFormat":99},{"version":"e30accdbef6f904f20354b6f598d7f2f7ff29094fc5410c33f63b29b4832172a","impliedFormat":1},{"version":"3786a961459023ec78bb575e5ea74f504d3ffc61ae82a305c959a4d94d7d70eb","impliedFormat":1},{"version":"de83915a380bdd6d7ddf075e3f60fe347db64ad4d06822835724ac601cb61daf","impliedFormat":1},{"version":"4d39c150715cb238da715e5c3fbeac2e2b2d0ef3f23c632996dd59ae35ba1f45","impliedFormat":1},{"version":"e9f80c5934982b97886eadab6684c073344a588d1758b12fba2d0184e6f450a2","impliedFormat":99},"0f81a53d54fd2b4ae2bf60067d616de99884bda21cb5784d942089d52319fb97","86d356e64ab8d56852623677eb1bed0c106703aed9b7788ad8a5a56e647822cb","29dca1b5f0cac95b675f86c7846f9d587ed47cc46609dd00d152bcb37683b069","231d829c892caeb88dd469e0847bf9d14e29c82b8b158b381ec866c868adf9af","886bcc73e8cf74ebec1bd14a5cc5b8dfa28276210df634e6f81c844b1eef767b",{"version":"5012b442083094b3f86e160aa9c81377e4b0d224ba29b0fede620186e5f38aae","signature":"02fe50a11bf8c03d31c39acadf143dbdf9560c0969c32322959c19ca2cd81e7d"},{"version":"b8299a7726bd66835898aa6411b1f54d31c16975dd8e9501edd8d0db2699daba","signature":"5bff732ad41c7ca0cb51e43e7994facfccefc389ba88f3596a2fff835a5f0f4b"},"60997095f458b8c2c94af5759c796d9d17678e740a41a04c3e518c14c47f2ee7",{"version":"75069a2a1e380502ff9a1074b8ee61f5e84f31973e5f81b444e6993e5633c72b","affectsGlobalScope":true},"8aff91f00938aa90ce829f4d577903d6826fa19e8edc583f7bb64ef1a6b4ae3b","986165ecc3a59d4b6a272a92f7ca4fd7a0762c63a674abd2c1efa0bea64da604","3e7b241ec38126d95f9e37c49a631c00cff006a888276e2d02920c6443c8b593",{"version":"6184309fe39e2fe444f4ba94e7cd1abef48fcb48e258457c3b77c65828184241","impliedFormat":99},{"version":"98c511f60c3079d731a35353a47bfa89dd79eeacad48a45d07170d22ef4bfd02","affectsGlobalScope":true,"impliedFormat":99},{"version":"905800cc110167503d0cf58bb0dd6fa4aaac1e9cedc9bd9c48e5d1f8b5b8d4c8","impliedFormat":99},{"version":"d17be577b99e59611df19ca2cf0356df554f55bb06617c21321fc4ec06b820d0","impliedFormat":99},{"version":"5f30145fbc8ca508ae4e0d90a4fe9eaff490783f380a92f6aa262accdf7887b7","affectsGlobalScope":true,"impliedFormat":99},{"version":"cefe49d29d43726072e88671a2c40cdeeb8d49ca8fa6c2d4b06013dc7b9d6206","impliedFormat":99},{"version":"f882b77c5939860d599b4b7bc39f741ebcd56123e18b284500f4b8923acd2e72","affectsGlobalScope":true,"impliedFormat":99},{"version":"0230bc76ed3a464531a43d2434d315b9cc2096aaca28bdaa65b8f9dce9f3bc81","impliedFormat":99},{"version":"559d2d1cd7f37dc2ac59e7adce198ad16a5eb0c7273d67b8e4ff72821b7c853f","impliedFormat":99},{"version":"6161d12fc14a8e0cf492f9d49372a1189b1fe005662cb7fe6630352a6b0bb04e","impliedFormat":99},{"version":"7d3c06d4ad79d86c6f7518b77d335b324bc218a7cd8b3e15579c4b584b7307f9","impliedFormat":99},{"version":"65f5bc7ff74eeabe9925da575924601248471033c27bf0384643ea03cad2b57d","impliedFormat":99},{"version":"d08d474654640266d6ac03f51ee04d72438b78ea377b9dc4678c480ce0477e1a","impliedFormat":99},{"version":"929f21090183949e93fd99327d292bff76f781895d5252eb43319b2c3e014528","affectsGlobalScope":true,"impliedFormat":99},{"version":"0f28503979e769f6ee6e55350f621dc00e300f15688d52b02edc62d837d29b1d","impliedFormat":99},{"version":"fe869c79d427e84d916011d082def68a793c3c13e157079fec399f250418bd50","affectsGlobalScope":true,"impliedFormat":99},"a2afc55ddd24edebefe497c415aee63498b099cef639b85a1bb3163e58649928","56a4c77ce6cae2494a4563f57a4a4c64b4857d0483979e101ff2fa7001db3dd1","bad37852b83df7a04802c2827fa02f8af046e4d944e0d08e02294d27b2748129","1fc3a35588d5f43c8ea68937e60d360d48390f5d454b1e6830659dfce9a7a937","c9d3623b528f615e0466361855fbba048e88d381bb5257f23c37062b2fdb6039","3c523c4338a858825c62005f03ff49eeaf8290bdda52a8b8554be555bab7a077","5582fb24ca35ef8a72d61a095d62ae2ada8143c33bc56febf626e333d3a5b013","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","c0178facd144177de1b1bb22d5083a02b83b8a390519e23e959420fe720aacf2","6e815042f98ee8b44cd7f372039ebc2f5ebc13d5be353b29ea7f18f1519b0edf","86d239790a025b4f1213571ed5d578b9080415e1218b253b499ed73ac436ae63","915fe430f9274e4ccdfefe060bf98660b52e62dcb375e6fbd79f1b1aedc4c170",{"version":"ad9efb41182f5e07976abd80e4b00ac80692f3ab8d55fe3b85d3c282c229b98e","affectsGlobalScope":true},{"version":"5425a627e508bc6d1ccfb1ea6f8d250f93c6fa7fe034e6f1b03a48e8ce0a3167","affectsGlobalScope":true},{"version":"7a57df5934cd17f2fd7b640275089eed07e2efe1e29daa2f61e61f1e08dac023","affectsGlobalScope":true},"2feadd1c36714a8d2685727cb2b1f56999c850623acbd99aa7a325dd1621dda9","05a01baa15b8b4f4c088387ae755b0f55bd6d8bd5d8445c51c4c7915bcdafc3f","81715d46da9f89ebedf6cbfb1d436fa6bf847652bd8a125d0893e3b47399f316","caf3e0c255508bebccd84112eb0a277561802b9edd833367bd492f745b74a7dc",{"version":"c360546ca0d716d461f18e5fdc72a4b9a6482f2d5dbb1c384213bbc4a6cb35b1","affectsGlobalScope":true},"d19235267a3cf397c03160f19fa3a7b24fa686f28e681ad7f761397b54f69d29",{"version":"de53165df4274f512d63c56ad34b21c451f86e3cfd2d1e2dd866c5250e0924e8","signature":"79deb069b1537b1757965b5b16e5b8e6921017ce3f7088d1d813eee727b4b49e"},{"version":"7676ea7aed13b1887f9d232ea2d5d6f7dbf9cf04adedc9f78985893eb9b4a189","signature":"1004e6124d3c4663544dbb9431bdfb786459e4ca93d02cfe0ffcd8a0994af69d"},{"version":"4eb26a88276bdfea327e95d4ba3918a6cb8053cf19f4bdb3153020ab650ae7af","signature":"acfcfdf417c988d67e5d48f5fcff7b6dd52c88720ecd635137a2929170836244"},{"version":"f69671beaabadb5eb4b29d05eafde2114c1a3950069916a799ea8e2e97696e6b","signature":"52b248e376193dd4349afee293aaa4c7b4899dddae63cfa5a8a05cb980c24e04"},{"version":"eef204f061321360559bd19235ea32a9d55b3ec22a362cc78d14ef50d4db4490","affectsGlobalScope":true,"impliedFormat":1},{"version":"72bee526b949b9932edba50997ff3b9cdede7b314d790d5f0d94f3d2944930ea","impliedFormat":99},{"version":"2d412861573a672bd90fdcb1e48740593324565f3b3aaf6808c0e3e2f0d54ae8","affectsGlobalScope":true,"impliedFormat":99},{"version":"cd711db43a952f15464b571ac11b7a440332cd52342bc92c4bf908c70688f57f","affectsGlobalScope":true,"impliedFormat":99},{"version":"9d8709c916778cb34830708ed47b78e9a46d1fb2eb73a682b14eee990bed4aa6","impliedFormat":99},{"version":"507e2131e89b515ce40c05c0c2fef6cc575ba8947703f92e8cdf36078747a9ff","affectsGlobalScope":true,"impliedFormat":99},{"version":"999a90d30a3183dcee987d0a5a7c586aba5bacbf6ce087ba8635124082ccfeea","impliedFormat":99},{"version":"8a5878edd52f4a720560b4c6e6247e9ddc3df6118ad9cf2f9927903b03d5f440","impliedFormat":99},{"version":"e7be17cfcbe98809c052f384c230ecea9e1cee045edac9db0659e997a988ff9e","affectsGlobalScope":true,"impliedFormat":1},{"version":"baf3507287629018d38c88e2636dd041550c70620bb774127011eb6dc3b361c0","impliedFormat":1},{"version":"4738bc5d39ac01532d861967a4fe52769e3892fb8022d4524802ac1c7aed4934","impliedFormat":1},{"version":"525b52b38b44420fb1758c0917e7b67cf379f7f9477d2ba7343f3d5f50a44258","affectsGlobalScope":true,"impliedFormat":1},{"version":"65b91a3725399231d3469529b5e27b85bf2aa98013e607f308e5fe260b47eeff","impliedFormat":99},{"version":"04e3793f33c71ceae20a4719698c068b72c98cf925b3c5f8a33096c00ed44258","impliedFormat":99},{"version":"fa8ef3fb228e258f9508386e2056c95c959d1c1168301181313a5c978754ba70","impliedFormat":99},{"version":"15c9478a8a3d630ac5e738aca25fca15d0842aaeb97fb1a9c1e80eddc5a0e14c","impliedFormat":99},{"version":"cc46ce345c0e19e456388446733250527eead4ca557b5e5fdf0c2e30adc3c89f","impliedFormat":99},{"version":"88cda4269c54f0803834fd62b2fac61af8bff7a085693f7ca9df85c1f19dee8a","impliedFormat":99},{"version":"5a2888a80ba9fae27aaa312464ab4b744ce4cfce573c105844ad8e94a39e2d7d","affectsGlobalScope":true,"impliedFormat":99},{"version":"260d1e9ec9c633c7ae90d8c17762e77924eef5d71357b27bfd351da698db4f6d","impliedFormat":99},{"version":"6168f8e0a5b354f8177bf0dee7c1a69c2afb6a155d5534221f3a1a2d86b84367","impliedFormat":99},{"version":"d7840fd94e6dfb5b0d9df5a20fe1e79c8dd72b1efdb74d2ef04c31e3588c6b5b","impliedFormat":99},{"version":"fa6d684e15fe6e99c7208a51b45c04f8e0147f1c8587871aac48fff55b7b1f24","impliedFormat":99},{"version":"d61a4b627c3e2e054616df905a25226f547dc0e821c2a2b6d5f13318b3fd7e78","impliedFormat":99},{"version":"1308479c593c3d337bd9c438ac1d7164006a9286638cec0b26e3331a978f91d4","impliedFormat":99},{"version":"cfad37dbd7cf27cc16758755847ad7c07ac52a01c466486e50f8f84d0f0ea9ce","impliedFormat":99},{"version":"0c4d3009672fd12d4d9a6505e769de9369c180dcfa8188d9fd850ec156245d87","impliedFormat":99},{"version":"793fca6322a14fa8fa6bc6a4fc694fd7bcc88922c4f9abcd48bf6908f8bf939b","impliedFormat":99},{"version":"be3e93b109deb44b925583674cc0706c0b3c2e7316bcf79631285a45c18ed0c8","impliedFormat":99},{"version":"50f63746fc2a779d1f9c5657fd78e292045dc98b540e026799e039ea629f2943","impliedFormat":99},{"version":"8527c0f0749def85b8890d0ea09343d9670b0c45794ff27321de93100de1ac8d","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"1e90cd76e64b93c2b16b31a3f8a8e305cab40d36bca0bce953499fb4ff2d5bda","signature":"8c60144e64b097f4d8d99e882cbce15c62b40377ba544267315c8284e150c921"},{"version":"8c6ea4dfb3dc8853b017c3d32b5daa85c7a8f8d369948fbd549ec92cc5bc9ece","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"1e07c908517c06ef99001d074c4068deb989e7410ade42fc54b213e041ee82d2","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"931bf503f79c4a75334382659794c5f58230dfbc1dc114eec6a095d8286ed37d","signature":"a8d8e886ff338626b1c5921a55bd198cd1203d9fa76c0aa38f995b198a037b78"},{"version":"5ced4bf2cf1794f1bf29df5be94b7f6795a14cd0c260fc5e78719c24a51ff547","signature":"8c60144e64b097f4d8d99e882cbce15c62b40377ba544267315c8284e150c921"},{"version":"0ccdaa19852d25ecd84eec365c3bfa16e7859cadecf6e9ca6d0dbbbee439743f","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9b68a1c3f8f45b4c199fa5b3ac09497230cb8f2f0cdcfebe5817b30b836a64a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f53a7652392cf26ebbe4e29fd0672aa87c93bd6d0241289c13fab87b9ac35c8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"b00a630557d1622ad312633bdbfbdb9c6b7220d948dca9f899db30679f160074","affectsGlobalScope":true,"impliedFormat":1},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"88809d6c1b9c78d04a133646a6feb926def05a8774c308c7c93bc32ee163d271","impliedFormat":1},{"version":"156a859e21ef3244d13afeeba4e49760a6afa035c149dda52f0c45ea8903b338","impliedFormat":1},{"version":"21d7fab00c101ddf754b392e11534e6b20c6bda269b2ccbcdf3453cbe21d8a39","impliedFormat":1},{"version":"615754924717c0b1e293e083b83503c0a872717ad5aa60ed7f1a699eb1b4ea5c","impliedFormat":1},{"version":"d3c85d4dde1a4918009e37426ee4a940cbbd4100e2e74d03e2de0d50a77bb488","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"60e3ba4b2d24548107060e5d13bffafbbbaa53d001c07bbe40386deda569b5e8","impliedFormat":1},{"version":"a712be2c8cbe0154bd17d1d7bff503d7c04331e0745eb9eea3d303e0e5d9401e","impliedFormat":1},{"version":"25bd6ae1b97ea991433337310fc406cc7c9f271b67b7c79dd24eee384759f3d4","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"38004e6801340cb890afb8cb5a9fc8972297e7f88ab94026e4b0b3c61fb32f8a","impliedFormat":1},{"version":"4ca7fb8f6018ea836b1ad24f67d5e7c2cf7410af7462e0ccc90b012944f5d7ae","impliedFormat":1},{"version":"4d327f7d72ad0918275cea3eee49a6a8dc8114ae1d5b7f3f5d0774de75f7439a","impliedFormat":1},{"version":"149f9a9e7f04e67afa0e2a49fc0ff421035c01d6b793cfcae7d2e9f6819431e2","impliedFormat":1},{"version":"e8a9dfa4c75ef6d25df8b40eaa9c31e0a69452aaf2ced4a3f4215dbdbaa876f4","impliedFormat":1},{"version":"a70af845a2eb9dd6e2723e319e14ea7fb28b129ec1361c21509b49305448c323","impliedFormat":1},{"version":"b53dc572d4f187904207ae1166652de47aab8eeb00c254d009cb226863076b56","impliedFormat":1},{"version":"57354d2f022ed64ede57b2e052306dd076a138b551abc7d30ef5e6718ce2f76a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"f501234c5aeeeb5d7659412335227466aaacf30b952372d60afeb21c02c96348","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"358f74dc35927dc88ea86dd201a2b98e701c281615e6b30a4c153eb0bb90ef71","impliedFormat":1},{"version":"8b91ff5bb912be3ea213cbcf0075aace1f5d4ff249a0d227ed673868cb7bfabc","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"8aee8b6d4f9f62cf3776cda1305fb18763e2aade7e13cea5bbe699112df85214","impliedFormat":1},{"version":"98498b101803bb3dde9f76a56e65c14b75db1cc8bec5f4db72be541570f74fc5","impliedFormat":1},{"version":"706abfbafe0ed5f685357375e89bbf48879549ea1772185d77d15f587c5c9400","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"013ff793053d33a15be4614efdd6c50247bbf0b26d6bc58ba338622a7441b543","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"436d7b4543b340b0f3eef4310d524242e41369b9652aa9c70428767c4dcac455","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"12950411eeab8563b349cb7959543d92d8d02c289ed893d78499a19becb5a8cc","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"e99963ae1e3a48ca7a7958c02f3e88bb963eb7978c28b68ae6b8c9f03309d83c","impliedFormat":1},{"version":"c3f5289820990ab66b70c7fb5b63cb674001009ff84b13de40619619a9c8175f","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"279d0cc1a72879918854265c3405369aa2d4d23509b8694ea102995b298cc5e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"594ae90cacd813fa392ff80d2e0a8eff4e41f4a136329a940e321399dd8895b4","impliedFormat":1},{"version":"d1f333ade8ff35a409b4984e1f11956fe11c61855b0c7e9b59f0313e48b40c4a","impliedFormat":1},{"version":"0224aa4b3464895d69c413a640a19ac2166778a74eb5eb3b36b021c72d42b274","impliedFormat":1},{"version":"575aa163c4c32e5b82e0e99b1f9f80806e1d78bfa259706e05139251c022277b","affectsGlobalScope":true,"impliedFormat":1},{"version":"7fb21326854faaa31ef02c9d51629fb6acedacb9396e74bf22ff8409441ea9ae","impliedFormat":1},{"version":"2fbf504c4791f9d32cd766cfe6b605bcda63289b925401953a7900db9af85348","impliedFormat":1},{"version":"ed0fb633cae35948d9e144004299a4bdf1ab912667c787b7fbffcd6d8c7b92a2","impliedFormat":1},{"version":"1678b04557dca52feab73cc67610918a7f5e25bfdba3e7fa081acd625d93106d","impliedFormat":1},{"version":"7db737262597ae2e35daa8cc1748f482cf4b0914e00a3d5a32cf6c4fc869a375","impliedFormat":1},{"version":"9c90f502816bd0179556bb875e86c944af3f6b995cde63199edbe4e0b1219aba","impliedFormat":1},{"version":"97581dc7099ef3d844c83706d53a7ecf895c0e867fbf6b9dc035bb3080f677bd","impliedFormat":1},{"version":"e494b286c8e27c52f8c7f945aa80ff223f2a3cd4f7a2619fa8991f1459e26f07","impliedFormat":1},{"version":"f54f5f9e10bbceba7515dfad0ffc89dffdb8d749d0604594c57a725cf6d79c20","impliedFormat":1},{"version":"41d17e1ad9a002feb11c8cdd2777e5bbc0cdb1e3f595d237e4dded0b6949983b","impliedFormat":1},{"version":"8c7e618c2a91ea7f6b5cca272a295864e92c16413be8fc56a943e8c7d5320011","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f487e411f9657df0e76572e500c1209b8fe95ee3b4cc6e6e7913c15f56207d","impliedFormat":1},{"version":"9d37b8a9678efbcdf38238b59ce8e6f7db70aba1a516f3a4a671a301dbacfb3d","impliedFormat":1},{"version":"a47a792b8cff71443be8dfb199f2b77e102a7bf9d4f90c18059f05d9af2d7413","impliedFormat":1},{"version":"ad50512520720d10294c629cb4e2df23891c3fcbeaca00fbfb9e6bbea65f3dd6","impliedFormat":1},{"version":"189769511b45c93b23ba76069f7701d3b631cfbedc1eb94c7753486c78736f78","impliedFormat":1},{"version":"2c2bdaa1d8ead9f68628d6d9d250e46ee8e81aa4898b4769a36956ae15e060fe","impliedFormat":1},{"version":"ba389fd3d7fba6670e97bc82eb12469dcb371d22f24e63859c1df5a083c823ed","impliedFormat":1},{"version":"5ff4433a2deae4f85ab1377e90a7554ce6b47ae51c69a84ca30a6e22fae85834","impliedFormat":1},{"version":"82b91e4e42e6c41bc7fc1b6c2dc5eba6a2ba98375eb1f210e6ff6bba2d54177e","impliedFormat":1},{"version":"97234c5303866576f913d0ccae7d58d6322d9e803c7bf1228a3fda46ab8087b2","affectsGlobalScope":true,"impliedFormat":1},{"version":"961dec547748827cb6b45f6fdc66273f7bacd9c73103c6779f070f2fd07f23f9","impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"73eeb740dacc45adc607a4f59f90fa9dbe2717d93d82f115f45f34e18f8d644a","impliedFormat":1},{"version":"ec501101c2a96133a6c695f934c8f6642149cc728571b29cbb7b770984c1088e","impliedFormat":1},{"version":"b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","impliedFormat":1},{"version":"429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","impliedFormat":1},{"version":"d251cda16f3f6a3e07f07c9e6e823ef6c583c63f653eb8777dafa749a78298e3","impliedFormat":1},{"version":"361939136b496a38b3e6b7be750bbb6998ef289bb8dd304c673138542ca16137","affectsGlobalScope":true,"impliedFormat":1},{"version":"230763250f20449fa7b3c9273e1967adb0023dc890d4be1553faca658ee65971","impliedFormat":1},{"version":"c3e9078b60cb329d1221f5878e88cecfa3e74460550e605a58fcfb41a66029ff","impliedFormat":1},{"version":"89e2568ebc2ec1e4149384b105e80e8bbf41eb4d711547f1121f4f628028de96","impliedFormat":1},{"version":"441b9bb09013654aa3d050e68b06464d8959b473e85868249d9d18f692acd35b","impliedFormat":1},{"version":"bc18a1991ba681f03e13285fa1d7b99b03b67ee671b7bc936254467177543890","impliedFormat":1},{"version":"55246f15e33ff1e2e9e679b25fa9790a48db55dc63d567fe25fac8b6a0efe911","impliedFormat":1},{"version":"fa94bbf532b7af8f394b95fa310980d6e20bd2d4c871c6a6cb9f70f03750a44b","impliedFormat":1},{"version":"925734f303b7f0cc111d42aeb21781d38a79e6d5ac05b2b1400cd1861a75d27b","impliedFormat":1},{"version":"5b26c4dd672d88336bb929787c9bfb55119e80ba89ec6dc923da1c063892843e","affectsGlobalScope":true,"impliedFormat":1},{"version":"7fa2214bb0d64701bc6f9ce8cde2fd2ff8c571e0b23065fa04a8a5a6beb91511","impliedFormat":1},{"version":"7286e4e5f80c0b1ab16addbdbbc9dd47fbae1c42034189261177b84d745cde3b","impliedFormat":1},{"version":"f12624a4a8d042b68914eac1b0a16571fc1c523173fcdf2517c65d191bd5a86c","impliedFormat":1},{"version":"cd2a656ba1d250c2002190b683e3826bf4362b6919450bc0f9bbf5612ebad837","impliedFormat":1},{"version":"841983e39bd4cbb463be385e92fda11057cab368bf27100a801c492f1d86cbaa","impliedFormat":1},{"version":"3e221ff0522e6ff95aa74a5211126aaf4d7e85ed8c8ff19290d591ad4bef988f","impliedFormat":1},{"version":"7da83f6429c6298ebf2be43d296b56ecfc94c9c28f5471b2f23b87545b914cea","impliedFormat":1},{"version":"e4156ddb25aa0e3b5303d372f26957b36778f0f6bbd4326359269873295e3058","affectsGlobalScope":true,"impliedFormat":1},{"version":"cc1b433a84cae05ddc5672d4823170af78606ad21ecef60dbc4570190cbf1357","impliedFormat":1},{"version":"751048d4aa67e20e5ecd2692340ea0d19bae42a20cc651d6f56d095e411ce3ac","impliedFormat":1},{"version":"7f78cfb2b343838612c192cb251746e3a7c62ac7675726a47e130d9b213f6580","impliedFormat":1},{"version":"aed8f3e5c7e53462565eedf34a9bcb700393cb2c1ab0c768602b929c3ed3145d","impliedFormat":1},{"version":"8e2577e7262051fd3c5bd6ca2b2056d358ff8853565720f92455860824c25188","impliedFormat":1},{"version":"7ec8d7d483f7394f9da611b10d3a0e402f76ff5c991261e6ce43a15f81ca4258","impliedFormat":1},{"version":"bb9dbb4b2ad81e3e71ec5ba4314973718555b9d04ba2a17dfbf875efecb8e2c0","impliedFormat":1},{"version":"9021dc5be8f3a87af5cede29221188a6497e2092b6889e0be212ef6b6b7153e9","impliedFormat":1},{"version":"4a8c8fd951d9fd9e0775f0aae8ed1f8b528204e24a2600bea3a1228ea83de52c","impliedFormat":1},{"version":"5b9cc0c724a8ebc7a873ab8e73c20b2416cef04b9e9d7f95ef1fa0fdcd4e0ec8","impliedFormat":1},{"version":"99ab6d0d660ce4d21efb52288a39fd35bb3f556980ec5463b1ae8f304a3bbc85","impliedFormat":1},{"version":"80a4b7023a2cc9f14d3f2e4635d6615ab3eff4b5b3630f62a8e73992fdd8cdb9","impliedFormat":1},{"version":"ec62d16f95636123624a69191a35b5df44b4b0a6428977e856c5739c0a787471","impliedFormat":1},{"version":"afa1c49f8e559e413d57343339db857d2a8159435cf9cf7d4deb41718fff1b88","impliedFormat":1},{"version":"c46f111af647c4134ae869653130610d62da321f90ebf19e186a3ea4bed79350","impliedFormat":1},{"version":"29f72ec1289ae3aeda78bf14b38086d3d803262ac13904b400422941a26a3636","affectsGlobalScope":true,"impliedFormat":1}],"root":[[51,55],65,66,133,149,150,[198,201],[232,237]],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":true,"inlineSources":true,"module":99,"noEmitOnError":true,"outDir":"./","rootDir":"..","skipLibCheck":true,"sourceMap":true,"strict":true,"target":5,"useDefineForClassFields":false},"referencedMap":[[56,1],[69,1],[70,2],[73,3],[71,3],[75,3],[78,4],[77,3],[76,3],[74,3],[72,5],[57,1],[58,6],[169,7],[167,8],[168,9],[170,10],[171,11],[157,12],[156,13],[159,14],[160,15],[68,16],[67,13],[158,17],[164,18],[165,19],[166,19],[163,1],[161,20],[162,21],[204,22],[205,23],[203,1],[206,24],[219,1],[221,25],[220,26],[230,27],[215,1],[222,28],[223,29],[224,1],[225,26],[228,30],[218,17],[227,31],[229,29],[231,32],[214,33],[210,34],[202,1],[366,1],[301,35],[302,35],[303,36],[239,37],[304,38],[305,39],[306,40],[307,41],[308,42],[309,43],[310,44],[311,45],[312,46],[313,46],[314,47],[315,48],[316,1],[317,49],[318,50],[240,1],[238,1],[319,51],[320,52],[321,53],[365,54],[322,55],[323,56],[324,55],[325,57],[326,58],[328,59],[329,60],[330,60],[331,60],[332,61],[333,62],[334,63],[335,64],[336,65],[337,66],[338,66],[339,67],[340,1],[341,1],[342,68],[343,69],[344,70],[345,71],[346,72],[347,73],[348,74],[349,75],[350,76],[351,77],[352,78],[353,79],[354,80],[355,81],[356,82],[357,83],[358,84],[359,85],[360,86],[361,87],[241,55],[242,1],[243,88],[244,89],[245,1],[246,90],[247,1],[292,91],[293,92],[294,93],[295,93],[296,94],[297,1],[298,38],[299,95],[300,92],[362,96],[363,97],[364,98],[213,99],[212,100],[211,1],[60,1],[327,1],[207,34],[209,101],[208,102],[143,103],[142,104],[139,1],[140,105],[141,106],[62,107],[134,108],[59,109],[135,110],[137,109],[63,1],[61,111],[216,109],[79,112],[136,113],[138,114],[226,109],[64,115],[217,116],[86,1],[50,117],[49,1],[47,1],[48,1],[8,1],[10,1],[9,1],[2,1],[11,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[3,1],[19,1],[20,1],[4,1],[21,1],[25,1],[22,1],[23,1],[24,1],[26,1],[27,1],[28,1],[5,1],[29,1],[30,1],[31,1],[32,1],[6,1],[36,1],[33,1],[34,1],[35,1],[37,1],[7,1],[38,1],[43,1],[44,1],[39,1],[40,1],[41,1],[42,1],[1,1],[45,1],[46,1],[266,118],[280,119],[263,120],[281,121],[290,122],[254,123],[255,124],[253,125],[289,126],[284,127],[288,128],[257,129],[267,130],[277,131],[256,132],[287,133],[251,134],[252,127],[258,130],[259,1],[265,135],[262,130],[249,136],[291,137],[282,138],[270,139],[269,130],[271,140],[274,141],[268,142],[272,143],[285,126],[260,144],[261,145],[275,146],[250,121],[279,147],[278,130],[264,145],[273,148],[276,149],[283,1],[248,1],[286,150],[144,151],[148,152],[145,153],[147,13],[146,13],[194,1],[195,17],[193,17],[192,154],[185,155],[186,156],[190,157],[188,158],[196,159],[178,13],[187,13],[189,13],[191,13],[197,160],[151,161],[181,162],[182,162],[179,162],[180,162],[184,162],[183,162],[177,163],[55,164],[53,165],[65,166],[52,167],[66,166],[54,165],[133,168],[150,169],[149,170],[198,171],[51,167],[199,172],[201,173],[200,165],[232,174],[233,175],[234,176],[235,177],[236,178],[237,175],[176,179],[175,180],[174,181],[172,13],[153,182],[154,183],[155,184],[152,13],[173,185],[89,1],[91,1],[92,1],[93,186],[90,1],[94,17],[97,156],[98,17],[99,17],[100,17],[105,187],[101,17],[102,17],[103,17],[104,17],[96,1],[107,1],[108,188],[109,189],[87,156],[95,1],[106,1],[88,190],[80,1],[85,191],[83,192],[82,193],[84,1],[81,1],[127,17],[121,17],[116,17],[117,17],[131,17],[113,1],[115,17],[118,17],[119,17],[130,17],[128,17],[114,17],[122,17],[110,17],[132,194],[125,17],[126,17],[129,17],[120,17],[123,17],[111,17],[112,17],[124,17]],"version":"5.9.3"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@operato/menu",
3
3
  "description": "Webcomponent menu following open-wc recommendations",
4
4
  "author": "heartyoh",
5
- "version": "10.29.31",
5
+ "version": "10.29.36",
6
6
  "type": "module",
7
7
  "main": "dist/src/index.js",
8
8
  "module": "dist/src/index.js",
@@ -55,15 +55,15 @@
55
55
  },
56
56
  "dependencies": {
57
57
  "@material/web": "^2.0.0",
58
- "@operato/data-grist": "^10.29.31",
59
- "@operato/graphql": "^10.29.27",
58
+ "@operato/data-grist": "^10.29.36",
59
+ "@operato/graphql": "^10.29.36",
60
60
  "@operato/i18n": "^10.29.27",
61
- "@operato/input": "^10.29.30",
62
- "@operato/layout": "^10.29.30",
63
- "@operato/popup": "^10.29.30",
64
- "@operato/shell": "^10.29.30",
61
+ "@operato/input": "^10.29.36",
62
+ "@operato/layout": "^10.29.36",
63
+ "@operato/popup": "^10.29.36",
64
+ "@operato/shell": "^10.29.36",
65
65
  "@operato/styles": "^10.29.30",
66
- "@operato/utils": "^10.29.23",
66
+ "@operato/utils": "^10.29.36",
67
67
  "lit": "^3.1.2"
68
68
  },
69
69
  "devDependencies": {
@@ -98,5 +98,5 @@
98
98
  "prettier --write"
99
99
  ]
100
100
  },
101
- "gitHead": "0b1246851e25dae823d204c352757c93585f6612"
101
+ "gitHead": "90c8bc8593e5d68745aeddd45752fab83c50cc16"
102
102
  }
@@ -0,0 +1,123 @@
1
+ import { html } from 'lit'
2
+ import { fixture, expect, nextFrame } from '@open-wc/testing'
3
+ import { store, UPDATE_PAGE, UPDATE_CONTEXT } from '@operato/shell'
4
+
5
+ import '../src/ox-menu-part.js'
6
+ import { OxMenuPart } from '../src/ox-menu-part.js'
7
+ import { pageAsksRailCollapsed, railCollapsed } from '../src/menu-mode.js'
8
+
9
+ /**
10
+ * A page can fold the rail while it is open (`context.rail: 'collapsed'`) and the person's own choice comes back
11
+ * when it closes. The pure rule is checked first, then the wiring in `ox-menu-part`.
12
+ */
13
+ describe('a page folds the rail while it is open', () => {
14
+ describe('the rule', () => {
15
+ it('without a request the stored choice stands', () => {
16
+ expect(railCollapsed({ stored: false, pageAsks: false })).to.equal(false)
17
+ expect(railCollapsed({ stored: true, pageAsks: false })).to.equal(true)
18
+ })
19
+
20
+ it('a request folds the rail whatever was stored', () => {
21
+ expect(railCollapsed({ stored: false, pageAsks: true })).to.equal(true)
22
+ expect(railCollapsed({ stored: true, pageAsks: true })).to.equal(true)
23
+ })
24
+
25
+ it('a toggle on the asking page wins while that page is open', () => {
26
+ expect(railCollapsed({ stored: false, pageAsks: true, onPage: false })).to.equal(false)
27
+ })
28
+
29
+ it('a toggle on the page is ignored once the page no longer asks', () => {
30
+ expect(railCollapsed({ stored: false, pageAsks: false, onPage: true })).to.equal(false)
31
+ })
32
+
33
+ it('only the declared value is a request', () => {
34
+ expect(pageAsksRailCollapsed({ rail: 'collapsed' })).to.equal(true)
35
+ expect(pageAsksRailCollapsed({ rail: 'open' })).to.equal(false)
36
+ expect(pageAsksRailCollapsed({})).to.equal(false)
37
+ expect(pageAsksRailCollapsed(undefined)).to.equal(false)
38
+ expect(pageAsksRailCollapsed(null)).to.equal(false)
39
+ })
40
+ })
41
+
42
+ describe('ox-menu-part', () => {
43
+ const KEY = 'ox-menu.collapsed'
44
+
45
+ function go(page: string, context: any) {
46
+ store.dispatch({ type: UPDATE_PAGE, page, resourceId: '', params: {} } as any)
47
+ store.dispatch({ type: UPDATE_CONTEXT, context } as any)
48
+ }
49
+
50
+ async function settle(el: OxMenuPart) {
51
+ await el.updateComplete
52
+ await nextFrame()
53
+ await el.updateComplete
54
+ }
55
+
56
+ async function mount(stored: '0' | '1') {
57
+ localStorage.setItem(KEY, stored)
58
+ go('list-page', { title: 'list' })
59
+ const el = (await fixture(html`<ox-menu-part rail></ox-menu-part>`)) as OxMenuPart
60
+ await settle(el)
61
+ return el
62
+ }
63
+
64
+ afterEach(() => {
65
+ localStorage.removeItem(KEY)
66
+ go('list-page', { title: 'list' })
67
+ })
68
+
69
+ it('folds on the asking page and opens again on leaving, without touching the stored choice', async () => {
70
+ const el = await mount('0')
71
+ expect(el.collapsed).to.equal(false)
72
+
73
+ go('modeller-page', { title: 'modeller', rail: 'collapsed' })
74
+ await settle(el)
75
+ expect(el.collapsed).to.equal(true)
76
+ expect(el.hasAttribute('collapsed')).to.equal(true)
77
+ expect(localStorage.getItem(KEY)).to.equal('0')
78
+
79
+ go('list-page', { title: 'list' })
80
+ await settle(el)
81
+ expect(el.collapsed).to.equal(false)
82
+ })
83
+
84
+ it('a rail the person folded stays folded after leaving the asking page', async () => {
85
+ const el = await mount('1')
86
+
87
+ go('modeller-page', { title: 'modeller', rail: 'collapsed' })
88
+ await settle(el)
89
+ go('list-page', { title: 'list' })
90
+ await settle(el)
91
+
92
+ expect(el.collapsed).to.equal(true)
93
+ })
94
+
95
+ it('opening it by hand on the asking page is not stored and the next visit folds again', async () => {
96
+ const el = await mount('0')
97
+
98
+ go('modeller-page', { title: 'modeller', rail: 'collapsed' })
99
+ await settle(el)
100
+ el.renderRoot.querySelector('ox-menu-portrait')!.dispatchEvent(
101
+ new CustomEvent('collapse-toggle', { bubbles: true, composed: true })
102
+ )
103
+ await settle(el)
104
+ expect(el.collapsed).to.equal(false)
105
+ expect(localStorage.getItem(KEY)).to.equal('0')
106
+
107
+ go('list-page', { title: 'list' })
108
+ await settle(el)
109
+ go('modeller-page', { title: 'modeller', rail: 'collapsed' })
110
+ await settle(el)
111
+ expect(el.collapsed).to.equal(true)
112
+ })
113
+
114
+ it('a menu without the rail does not fold for the request', async () => {
115
+ localStorage.setItem(KEY, '0')
116
+ const el = (await fixture(html`<ox-menu-part></ox-menu-part>`)) as OxMenuPart
117
+ go('modeller-page', { title: 'modeller', rail: 'collapsed' })
118
+ await settle(el)
119
+
120
+ expect(el.hasAttribute('collapsed')).to.equal(false)
121
+ })
122
+ })
123
+ })