tnp-helpers 19.0.0 → 19.0.2
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/assets/shared/shared_folder_info.txt +3 -3
- package/browser/fesm2022/tnp-helpers.mjs +74 -39
- package/browser/fesm2022/tnp-helpers.mjs.map +1 -1
- package/browser/lib/base/classes/base-cli-worker/base-cli-worker.d.ts +13 -3
- package/browser/lib/base/classes/base-git.d.ts +1 -1
- package/browser/lib/base/classes/base-node-modules.d.ts +1 -1
- package/browser/lib/base/tcp-udp-ports/tcp-udp-ports.context.d.ts +10 -43
- package/browser/lib/base/tcp-udp-ports/tcp-upd-ports.worker.d.ts +3 -7
- package/browser/lib/build-info._auto-generated_.d.ts +3 -0
- package/browser/lib/helpers/helpers.d.ts +4 -1
- package/client/fesm2022/tnp-helpers.mjs +74 -39
- package/client/fesm2022/tnp-helpers.mjs.map +1 -1
- package/client/lib/base/classes/base-cli-worker/base-cli-worker.d.ts +13 -3
- package/client/lib/base/classes/base-git.d.ts +1 -1
- package/client/lib/base/classes/base-node-modules.d.ts +1 -1
- package/client/lib/base/tcp-udp-ports/tcp-udp-ports.context.d.ts +10 -43
- package/client/lib/base/tcp-udp-ports/tcp-upd-ports.worker.d.ts +3 -7
- package/client/lib/build-info._auto-generated_.d.ts +3 -0
- package/client/lib/helpers/helpers.d.ts +4 -1
- package/lib/base/classes/base-cli-worker/base-cli-worker.d.ts +13 -3
- package/lib/base/classes/base-cli-worker/base-cli-worker.js +54 -1
- package/lib/base/classes/base-cli-worker/base-cli-worker.js.map +1 -1
- package/lib/base/classes/base-global-command-line.backend.d.ts +2 -0
- package/lib/base/classes/base-global-command-line.backend.js +36 -1
- package/lib/base/classes/base-global-command-line.backend.js.map +1 -1
- package/lib/base/classes/base-node-modules.d.ts +1 -1
- package/lib/base/classes/base-project-resolver.js +4 -2
- package/lib/base/classes/base-project-resolver.js.map +1 -1
- package/lib/base/classes/base-project.d.ts +1 -1
- package/lib/base/classes/base-vscode.js +3 -0
- package/lib/base/classes/base-vscode.js.map +1 -1
- package/lib/base/tcp-udp-ports/not-assignable-port.entity.js +2 -2
- package/lib/base/tcp-udp-ports/tcp-udp-ports.context.d.ts +10 -43
- package/lib/base/tcp-udp-ports/tcp-udp-ports.context.js +2 -2
- package/lib/base/tcp-udp-ports/tcp-udp-ports.context.js.map +1 -1
- package/lib/base/tcp-udp-ports/tcp-upd-ports.worker.d.ts +3 -7
- package/lib/base/tcp-udp-ports/tcp-upd-ports.worker.js +3 -33
- package/lib/base/tcp-udp-ports/tcp-upd-ports.worker.js.map +1 -1
- package/lib/build-info._auto-generated_.d.ts +1 -0
- package/lib/build-info._auto-generated_.js +4 -1
- package/lib/build-info._auto-generated_.js.map +1 -1
- package/lib/helpers/for-backend/helpers-file-folders.js.map +1 -1
- package/lib/helpers/for-backend/helpers-git.backend.d.ts +2 -0
- package/lib/helpers/for-backend/helpers-git.backend.js +34 -23
- package/lib/helpers/for-backend/helpers-git.backend.js.map +1 -1
- package/lib/helpers/for-browser/angular.helper.js +2 -2
- package/lib/helpers/helpers.d.ts +4 -1
- package/lib/helpers/helpers.js +18 -15
- package/lib/helpers/helpers.js.map +1 -1
- package/lib/index._auto-generated_.js +2 -2
- package/lib/index._auto-generated_.js.map +1 -1
- package/lib/old/base-component.js +2 -2
- package/lib/old/base-formly-component.js +2 -2
- package/lib/old/dual-component-ctrl.js +2 -2
- package/package.json +5 -5
- package/src.d.ts +3 -3
- package/tmp-environment.json +5 -4
- package/websql/fesm2022/tnp-helpers.mjs +74 -40
- package/websql/fesm2022/tnp-helpers.mjs.map +1 -1
- package/websql/lib/base/classes/base-cli-worker/base-cli-worker.d.ts +13 -3
- package/websql/lib/base/classes/base-git.d.ts +1 -1
- package/websql/lib/base/classes/base-node-modules.d.ts +1 -1
- package/websql/lib/base/tcp-udp-ports/tcp-udp-ports.context.d.ts +10 -43
- package/websql/lib/base/tcp-udp-ports/tcp-upd-ports.worker.d.ts +3 -7
- package/websql/lib/build-info._auto-generated_.d.ts +3 -0
- package/websql/lib/helpers/helpers.d.ts +4 -1
- package/browser/esm2022/lib/base/classes/base-bower-json.mjs +0 -14
- package/browser/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-config.mjs +0 -37
- package/browser/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-controller.mjs +0 -125
- package/browser/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-terminal-ui.mjs +0 -133
- package/browser/esm2022/lib/base/classes/base-cli-worker/base-cli-worker.mjs +0 -404
- package/browser/esm2022/lib/base/classes/base-cli-worker/index.mjs +0 -7
- package/browser/esm2022/lib/base/classes/base-compiler-for-project.mjs +0 -61
- package/browser/esm2022/lib/base/classes/base-db.mjs +0 -31
- package/browser/esm2022/lib/base/classes/base-debounce-compiler-for-project.mjs +0 -56
- package/browser/esm2022/lib/base/classes/base-feature-for-project.mjs +0 -11
- package/browser/esm2022/lib/base/classes/base-git.mjs +0 -1175
- package/browser/esm2022/lib/base/classes/base-json-file-reader.mjs +0 -114
- package/browser/esm2022/lib/base/classes/base-library-build.mjs +0 -613
- package/browser/esm2022/lib/base/classes/base-linked-projects.mjs +0 -323
- package/browser/esm2022/lib/base/classes/base-node-modules.mjs +0 -417
- package/browser/esm2022/lib/base/classes/base-npm-helpers.mjs +0 -266
- package/browser/esm2022/lib/base/classes/base-package-json.mjs +0 -340
- package/browser/esm2022/lib/base/classes/base-process-manager.mjs +0 -285
- package/browser/esm2022/lib/base/classes/base-project-resolver.mjs +0 -282
- package/browser/esm2022/lib/base/classes/base-project.mjs +0 -922
- package/browser/esm2022/lib/base/classes/base-quick-fixes.mjs +0 -88
- package/browser/esm2022/lib/base/classes/base-release-process.mjs +0 -599
- package/browser/esm2022/lib/base/classes/base-static-pages.mjs +0 -110
- package/browser/esm2022/lib/base/classes/base-vscode.mjs +0 -531
- package/browser/esm2022/lib/base/classes/index.mjs +0 -24
- package/browser/esm2022/lib/base/commit-data.mjs +0 -633
- package/browser/esm2022/lib/base/config-database.mjs +0 -46
- package/browser/esm2022/lib/base/core-project.mjs +0 -115
- package/browser/esm2022/lib/base/index.mjs +0 -10
- package/browser/esm2022/lib/base/linked-project.mjs +0 -90
- package/browser/esm2022/lib/base/project-database.mjs +0 -18
- package/browser/esm2022/lib/base/tcp-udp-ports/index.mjs +0 -6
- package/browser/esm2022/lib/base/tcp-udp-ports/ports.controller.mjs +0 -260
- package/browser/esm2022/lib/base/tcp-udp-ports/ports.entity.mjs +0 -33
- package/browser/esm2022/lib/base/tcp-udp-ports/tcp-udp-ports.context.mjs +0 -32
- package/browser/esm2022/lib/base/tcp-udp-ports/tcp-upd-ports-terminal-ui.mjs +0 -261
- package/browser/esm2022/lib/base/tcp-udp-ports/tcp-upd-ports.worker.mjs +0 -45
- package/browser/esm2022/lib/base/translate.mjs +0 -566
- package/browser/esm2022/lib/helpers/for-backend/helpers-file-folders.mjs +0 -1008
- package/browser/esm2022/lib/helpers/for-backend/helpers-process.mjs +0 -493
- package/browser/esm2022/lib/helpers/for-browser/angular.helper.mjs +0 -89
- package/browser/esm2022/lib/helpers/for-browser/helpers-browser.mjs +0 -47
- package/browser/esm2022/lib/helpers/helpers-array-obj.mjs +0 -118
- package/browser/esm2022/lib/helpers/helpers-numbers.mjs +0 -12
- package/browser/esm2022/lib/helpers/helpers-strings-regexes.mjs +0 -51
- package/browser/esm2022/lib/helpers/helpers-strings.mjs +0 -258
- package/browser/esm2022/lib/helpers/helpers.mjs +0 -428
- package/browser/esm2022/lib/index.mjs +0 -13
- package/browser/esm2022/lib/models.mjs +0 -175
- package/browser/esm2022/lib/utils.mjs +0 -952
- package/browser/esm2022/lib/validators/validators-git.mjs +0 -12
- package/browser/esm2022/lib/validators/validators-network.mjs +0 -18
- package/browser/esm2022/lib/validators/validators.mjs +0 -10
- package/browser/esm2022/migrations/1736198527297_init.mjs +0 -41
- package/browser/esm2022/migrations/1736199486472_addingNotAssignablePorts.mjs +0 -63
- package/browser/esm2022/migrations/1736454437350_addFreePorts.mjs +0 -50
- package/browser/esm2022/migrations/index.mjs +0 -5
- package/browser/esm2022/migrations/migrations_index._auto-generated_.mjs +0 -16
- package/browser/esm2022/public-api.mjs +0 -2
- package/browser/esm2022/tnp-helpers.mjs +0 -5
- package/client/esm2022/lib/base/classes/base-bower-json.mjs +0 -14
- package/client/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-config.mjs +0 -37
- package/client/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-controller.mjs +0 -125
- package/client/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-terminal-ui.mjs +0 -133
- package/client/esm2022/lib/base/classes/base-cli-worker/base-cli-worker.mjs +0 -404
- package/client/esm2022/lib/base/classes/base-cli-worker/index.mjs +0 -7
- package/client/esm2022/lib/base/classes/base-compiler-for-project.mjs +0 -61
- package/client/esm2022/lib/base/classes/base-db.mjs +0 -31
- package/client/esm2022/lib/base/classes/base-debounce-compiler-for-project.mjs +0 -56
- package/client/esm2022/lib/base/classes/base-feature-for-project.mjs +0 -11
- package/client/esm2022/lib/base/classes/base-git.mjs +0 -1175
- package/client/esm2022/lib/base/classes/base-json-file-reader.mjs +0 -114
- package/client/esm2022/lib/base/classes/base-library-build.mjs +0 -613
- package/client/esm2022/lib/base/classes/base-linked-projects.mjs +0 -323
- package/client/esm2022/lib/base/classes/base-node-modules.mjs +0 -417
- package/client/esm2022/lib/base/classes/base-npm-helpers.mjs +0 -266
- package/client/esm2022/lib/base/classes/base-package-json.mjs +0 -340
- package/client/esm2022/lib/base/classes/base-process-manager.mjs +0 -285
- package/client/esm2022/lib/base/classes/base-project-resolver.mjs +0 -282
- package/client/esm2022/lib/base/classes/base-project.mjs +0 -922
- package/client/esm2022/lib/base/classes/base-quick-fixes.mjs +0 -88
- package/client/esm2022/lib/base/classes/base-release-process.mjs +0 -599
- package/client/esm2022/lib/base/classes/base-static-pages.mjs +0 -110
- package/client/esm2022/lib/base/classes/base-vscode.mjs +0 -531
- package/client/esm2022/lib/base/classes/index.mjs +0 -24
- package/client/esm2022/lib/base/commit-data.mjs +0 -633
- package/client/esm2022/lib/base/config-database.mjs +0 -46
- package/client/esm2022/lib/base/core-project.mjs +0 -115
- package/client/esm2022/lib/base/index.mjs +0 -10
- package/client/esm2022/lib/base/linked-project.mjs +0 -90
- package/client/esm2022/lib/base/project-database.mjs +0 -18
- package/client/esm2022/lib/base/tcp-udp-ports/index.mjs +0 -6
- package/client/esm2022/lib/base/tcp-udp-ports/ports.controller.mjs +0 -260
- package/client/esm2022/lib/base/tcp-udp-ports/ports.entity.mjs +0 -33
- package/client/esm2022/lib/base/tcp-udp-ports/tcp-udp-ports.context.mjs +0 -32
- package/client/esm2022/lib/base/tcp-udp-ports/tcp-upd-ports-terminal-ui.mjs +0 -261
- package/client/esm2022/lib/base/tcp-udp-ports/tcp-upd-ports.worker.mjs +0 -45
- package/client/esm2022/lib/base/translate.mjs +0 -566
- package/client/esm2022/lib/helpers/for-backend/helpers-file-folders.mjs +0 -1008
- package/client/esm2022/lib/helpers/for-backend/helpers-process.mjs +0 -493
- package/client/esm2022/lib/helpers/for-browser/angular.helper.mjs +0 -89
- package/client/esm2022/lib/helpers/for-browser/helpers-browser.mjs +0 -47
- package/client/esm2022/lib/helpers/helpers-array-obj.mjs +0 -118
- package/client/esm2022/lib/helpers/helpers-numbers.mjs +0 -12
- package/client/esm2022/lib/helpers/helpers-strings-regexes.mjs +0 -51
- package/client/esm2022/lib/helpers/helpers-strings.mjs +0 -258
- package/client/esm2022/lib/helpers/helpers.mjs +0 -428
- package/client/esm2022/lib/index.mjs +0 -13
- package/client/esm2022/lib/models.mjs +0 -175
- package/client/esm2022/lib/utils.mjs +0 -952
- package/client/esm2022/lib/validators/validators-git.mjs +0 -12
- package/client/esm2022/lib/validators/validators-network.mjs +0 -18
- package/client/esm2022/lib/validators/validators.mjs +0 -10
- package/client/esm2022/migrations/1736198527297_init.mjs +0 -41
- package/client/esm2022/migrations/1736199486472_addingNotAssignablePorts.mjs +0 -63
- package/client/esm2022/migrations/1736454437350_addFreePorts.mjs +0 -50
- package/client/esm2022/migrations/index.mjs +0 -5
- package/client/esm2022/migrations/migrations_index._auto-generated_.mjs +0 -16
- package/client/esm2022/public-api.mjs +0 -2
- package/client/esm2022/tnp-helpers.mjs +0 -5
- package/websql/esm2022/lib/base/classes/base-bower-json.mjs +0 -14
- package/websql/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-config.mjs +0 -37
- package/websql/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-controller.mjs +0 -125
- package/websql/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-terminal-ui.mjs +0 -133
- package/websql/esm2022/lib/base/classes/base-cli-worker/base-cli-worker.mjs +0 -404
- package/websql/esm2022/lib/base/classes/base-cli-worker/index.mjs +0 -7
- package/websql/esm2022/lib/base/classes/base-compiler-for-project.mjs +0 -61
- package/websql/esm2022/lib/base/classes/base-db.mjs +0 -31
- package/websql/esm2022/lib/base/classes/base-debounce-compiler-for-project.mjs +0 -56
- package/websql/esm2022/lib/base/classes/base-feature-for-project.mjs +0 -11
- package/websql/esm2022/lib/base/classes/base-git.mjs +0 -1175
- package/websql/esm2022/lib/base/classes/base-json-file-reader.mjs +0 -114
- package/websql/esm2022/lib/base/classes/base-library-build.mjs +0 -613
- package/websql/esm2022/lib/base/classes/base-linked-projects.mjs +0 -323
- package/websql/esm2022/lib/base/classes/base-node-modules.mjs +0 -417
- package/websql/esm2022/lib/base/classes/base-npm-helpers.mjs +0 -266
- package/websql/esm2022/lib/base/classes/base-package-json.mjs +0 -340
- package/websql/esm2022/lib/base/classes/base-process-manager.mjs +0 -285
- package/websql/esm2022/lib/base/classes/base-project-resolver.mjs +0 -272
- package/websql/esm2022/lib/base/classes/base-project.mjs +0 -891
- package/websql/esm2022/lib/base/classes/base-quick-fixes.mjs +0 -88
- package/websql/esm2022/lib/base/classes/base-release-process.mjs +0 -599
- package/websql/esm2022/lib/base/classes/base-static-pages.mjs +0 -110
- package/websql/esm2022/lib/base/classes/base-vscode.mjs +0 -531
- package/websql/esm2022/lib/base/classes/index.mjs +0 -24
- package/websql/esm2022/lib/base/commit-data.mjs +0 -633
- package/websql/esm2022/lib/base/config-database.mjs +0 -46
- package/websql/esm2022/lib/base/core-project.mjs +0 -115
- package/websql/esm2022/lib/base/index.mjs +0 -10
- package/websql/esm2022/lib/base/linked-project.mjs +0 -90
- package/websql/esm2022/lib/base/project-database.mjs +0 -18
- package/websql/esm2022/lib/base/tcp-udp-ports/index.mjs +0 -6
- package/websql/esm2022/lib/base/tcp-udp-ports/ports.controller.mjs +0 -260
- package/websql/esm2022/lib/base/tcp-udp-ports/ports.entity.mjs +0 -56
- package/websql/esm2022/lib/base/tcp-udp-ports/tcp-udp-ports.context.mjs +0 -32
- package/websql/esm2022/lib/base/tcp-udp-ports/tcp-upd-ports-terminal-ui.mjs +0 -261
- package/websql/esm2022/lib/base/tcp-udp-ports/tcp-upd-ports.worker.mjs +0 -45
- package/websql/esm2022/lib/base/translate.mjs +0 -566
- package/websql/esm2022/lib/helpers/for-backend/helpers-file-folders.mjs +0 -1008
- package/websql/esm2022/lib/helpers/for-backend/helpers-process.mjs +0 -493
- package/websql/esm2022/lib/helpers/for-browser/angular.helper.mjs +0 -89
- package/websql/esm2022/lib/helpers/for-browser/helpers-browser.mjs +0 -47
- package/websql/esm2022/lib/helpers/helpers-array-obj.mjs +0 -118
- package/websql/esm2022/lib/helpers/helpers-numbers.mjs +0 -12
- package/websql/esm2022/lib/helpers/helpers-strings-regexes.mjs +0 -51
- package/websql/esm2022/lib/helpers/helpers-strings.mjs +0 -258
- package/websql/esm2022/lib/helpers/helpers.mjs +0 -428
- package/websql/esm2022/lib/index.mjs +0 -13
- package/websql/esm2022/lib/models.mjs +0 -175
- package/websql/esm2022/lib/utils.mjs +0 -952
- package/websql/esm2022/lib/validators/validators-git.mjs +0 -12
- package/websql/esm2022/lib/validators/validators-network.mjs +0 -18
- package/websql/esm2022/lib/validators/validators.mjs +0 -10
- package/websql/esm2022/migrations/1736198527297_init.mjs +0 -41
- package/websql/esm2022/migrations/1736199486472_addingNotAssignablePorts.mjs +0 -63
- package/websql/esm2022/migrations/1736454437350_addFreePorts.mjs +0 -50
- package/websql/esm2022/migrations/index.mjs +0 -5
- package/websql/esm2022/migrations/migrations_index._auto-generated_.mjs +0 -16
- package/websql/esm2022/public-api.mjs +0 -2
- package/websql/esm2022/tnp-helpers.mjs +0 -5
|
@@ -1,566 +0,0 @@
|
|
|
1
|
-
const iso = {
|
|
2
|
-
aar: 'aa',
|
|
3
|
-
abk: 'ab',
|
|
4
|
-
afr: 'af',
|
|
5
|
-
aka: 'ak',
|
|
6
|
-
alb: 'sq',
|
|
7
|
-
amh: 'am',
|
|
8
|
-
ara: 'ar',
|
|
9
|
-
arg: 'an',
|
|
10
|
-
arm: 'hy',
|
|
11
|
-
asm: 'as',
|
|
12
|
-
ava: 'av',
|
|
13
|
-
ave: 'ae',
|
|
14
|
-
aym: 'ay',
|
|
15
|
-
aze: 'az',
|
|
16
|
-
bak: 'ba',
|
|
17
|
-
bam: 'bm',
|
|
18
|
-
baq: 'eu',
|
|
19
|
-
bel: 'be',
|
|
20
|
-
ben: 'bn',
|
|
21
|
-
bih: 'bh',
|
|
22
|
-
bis: 'bi',
|
|
23
|
-
bos: 'bs',
|
|
24
|
-
bre: 'br',
|
|
25
|
-
bul: 'bg',
|
|
26
|
-
bur: 'my',
|
|
27
|
-
cat: 'ca',
|
|
28
|
-
cha: 'ch',
|
|
29
|
-
che: 'ce',
|
|
30
|
-
chi: 'zh',
|
|
31
|
-
chu: 'cu',
|
|
32
|
-
chv: 'cv',
|
|
33
|
-
cor: 'kw',
|
|
34
|
-
cos: 'co',
|
|
35
|
-
cre: 'cr',
|
|
36
|
-
cze: 'cs',
|
|
37
|
-
dan: 'da',
|
|
38
|
-
div: 'dv',
|
|
39
|
-
dut: 'nl',
|
|
40
|
-
dzo: 'dz',
|
|
41
|
-
eng: 'en',
|
|
42
|
-
epo: 'eo',
|
|
43
|
-
est: 'et',
|
|
44
|
-
ewe: 'ee',
|
|
45
|
-
fao: 'fo',
|
|
46
|
-
fij: 'fj',
|
|
47
|
-
fin: 'fi',
|
|
48
|
-
fre: 'fr',
|
|
49
|
-
fry: 'fy',
|
|
50
|
-
ful: 'ff',
|
|
51
|
-
geo: 'ka',
|
|
52
|
-
ger: 'de',
|
|
53
|
-
gla: 'gd',
|
|
54
|
-
gle: 'ga',
|
|
55
|
-
glg: 'gl',
|
|
56
|
-
glv: 'gv',
|
|
57
|
-
gre: 'el',
|
|
58
|
-
grn: 'gn',
|
|
59
|
-
guj: 'gu',
|
|
60
|
-
hat: 'ht',
|
|
61
|
-
hau: 'ha',
|
|
62
|
-
heb: 'he',
|
|
63
|
-
her: 'hz',
|
|
64
|
-
hin: 'hi',
|
|
65
|
-
hmo: 'ho',
|
|
66
|
-
hrv: 'hr',
|
|
67
|
-
hun: 'hu',
|
|
68
|
-
ibo: 'ig',
|
|
69
|
-
ice: 'is',
|
|
70
|
-
ido: 'io',
|
|
71
|
-
iii: 'ii',
|
|
72
|
-
iku: 'iu',
|
|
73
|
-
ile: 'ie',
|
|
74
|
-
ina: 'ia',
|
|
75
|
-
ind: 'id',
|
|
76
|
-
ipk: 'ik',
|
|
77
|
-
ita: 'it',
|
|
78
|
-
jav: 'jv',
|
|
79
|
-
jpn: 'ja',
|
|
80
|
-
kal: 'kl',
|
|
81
|
-
kan: 'kn',
|
|
82
|
-
kas: 'ks',
|
|
83
|
-
kau: 'kr',
|
|
84
|
-
kaz: 'kk',
|
|
85
|
-
khm: 'km',
|
|
86
|
-
kik: 'ki',
|
|
87
|
-
kin: 'rw',
|
|
88
|
-
kir: 'ky',
|
|
89
|
-
kom: 'kv',
|
|
90
|
-
kon: 'kg',
|
|
91
|
-
kor: 'ko',
|
|
92
|
-
kua: 'kj',
|
|
93
|
-
kur: 'ku',
|
|
94
|
-
lao: 'lo',
|
|
95
|
-
lat: 'la',
|
|
96
|
-
lav: 'lv',
|
|
97
|
-
lim: 'li',
|
|
98
|
-
lin: 'ln',
|
|
99
|
-
lit: 'lt',
|
|
100
|
-
ltz: 'lb',
|
|
101
|
-
lub: 'lu',
|
|
102
|
-
lug: 'lg',
|
|
103
|
-
mac: 'mk',
|
|
104
|
-
mah: 'mh',
|
|
105
|
-
mal: 'ml',
|
|
106
|
-
mao: 'mi',
|
|
107
|
-
mar: 'mr',
|
|
108
|
-
may: 'ms',
|
|
109
|
-
mlg: 'mg',
|
|
110
|
-
mlt: 'mt',
|
|
111
|
-
mon: 'mn',
|
|
112
|
-
nau: 'na',
|
|
113
|
-
nav: 'nv',
|
|
114
|
-
nbl: 'nr',
|
|
115
|
-
nde: 'nd',
|
|
116
|
-
ndo: 'ng',
|
|
117
|
-
nep: 'ne',
|
|
118
|
-
nno: 'nn',
|
|
119
|
-
nob: 'nb',
|
|
120
|
-
nor: 'no',
|
|
121
|
-
nya: 'ny',
|
|
122
|
-
oci: 'oc',
|
|
123
|
-
oji: 'oj',
|
|
124
|
-
ori: 'or',
|
|
125
|
-
orm: 'om',
|
|
126
|
-
oss: 'os',
|
|
127
|
-
pan: 'pa',
|
|
128
|
-
per: 'fa',
|
|
129
|
-
pli: 'pi',
|
|
130
|
-
pol: 'pl',
|
|
131
|
-
por: 'pt',
|
|
132
|
-
pus: 'ps',
|
|
133
|
-
que: 'qu',
|
|
134
|
-
roh: 'rm',
|
|
135
|
-
rum: 'ro',
|
|
136
|
-
run: 'rn',
|
|
137
|
-
rus: 'ru',
|
|
138
|
-
sag: 'sg',
|
|
139
|
-
san: 'sa',
|
|
140
|
-
sin: 'si',
|
|
141
|
-
slo: 'sk',
|
|
142
|
-
slv: 'sl',
|
|
143
|
-
sme: 'se',
|
|
144
|
-
smo: 'sm',
|
|
145
|
-
sna: 'sn',
|
|
146
|
-
snd: 'sd',
|
|
147
|
-
som: 'so',
|
|
148
|
-
sot: 'st',
|
|
149
|
-
spa: 'es',
|
|
150
|
-
srd: 'sc',
|
|
151
|
-
srp: 'sr',
|
|
152
|
-
ssw: 'ss',
|
|
153
|
-
sun: 'su',
|
|
154
|
-
swa: 'sw',
|
|
155
|
-
swe: 'sv',
|
|
156
|
-
tah: 'ty',
|
|
157
|
-
tam: 'ta',
|
|
158
|
-
tat: 'tt',
|
|
159
|
-
tel: 'te',
|
|
160
|
-
tgk: 'tg',
|
|
161
|
-
tgl: 'tl',
|
|
162
|
-
tha: 'th',
|
|
163
|
-
tib: 'bo',
|
|
164
|
-
tir: 'ti',
|
|
165
|
-
ton: 'to',
|
|
166
|
-
tsn: 'tn',
|
|
167
|
-
tso: 'ts',
|
|
168
|
-
tuk: 'tk',
|
|
169
|
-
tur: 'tr',
|
|
170
|
-
twi: 'tw',
|
|
171
|
-
uig: 'ug',
|
|
172
|
-
ukr: 'uk',
|
|
173
|
-
urd: 'ur',
|
|
174
|
-
uzb: 'uz',
|
|
175
|
-
ven: 've',
|
|
176
|
-
vie: 'vi',
|
|
177
|
-
vol: 'vo',
|
|
178
|
-
wel: 'cy',
|
|
179
|
-
wln: 'wa',
|
|
180
|
-
wol: 'wo',
|
|
181
|
-
xho: 'xh',
|
|
182
|
-
yid: 'yi',
|
|
183
|
-
yor: 'yo',
|
|
184
|
-
zha: 'za',
|
|
185
|
-
zul: 'zu',
|
|
186
|
-
}, names = {
|
|
187
|
-
afar: 'aa',
|
|
188
|
-
abkhazian: 'ab',
|
|
189
|
-
afrikaans: 'af',
|
|
190
|
-
akan: 'ak',
|
|
191
|
-
albanian: 'sq',
|
|
192
|
-
amharic: 'am',
|
|
193
|
-
arabic: 'ar',
|
|
194
|
-
aragonese: 'an',
|
|
195
|
-
armenian: 'hy',
|
|
196
|
-
assamese: 'as',
|
|
197
|
-
avaric: 'av',
|
|
198
|
-
avestan: 'ae',
|
|
199
|
-
aymara: 'ay',
|
|
200
|
-
azerbaijani: 'az',
|
|
201
|
-
bashkir: 'ba',
|
|
202
|
-
bambara: 'bm',
|
|
203
|
-
basque: 'eu',
|
|
204
|
-
belarusian: 'be',
|
|
205
|
-
bengali: 'bn',
|
|
206
|
-
'bihari languages': 'bh',
|
|
207
|
-
bislama: 'bi',
|
|
208
|
-
tibetan: 'bo',
|
|
209
|
-
bosnian: 'bs',
|
|
210
|
-
breton: 'br',
|
|
211
|
-
bulgarian: 'bg',
|
|
212
|
-
burmese: 'my',
|
|
213
|
-
catalan: 'ca',
|
|
214
|
-
valencian: 'ca',
|
|
215
|
-
czech: 'cs',
|
|
216
|
-
chamorro: 'ch',
|
|
217
|
-
chechen: 'ce',
|
|
218
|
-
chinese: 'zh',
|
|
219
|
-
'church slavic': 'cu',
|
|
220
|
-
'old slavonic': 'cu',
|
|
221
|
-
'church slavonic': 'cu',
|
|
222
|
-
'old bulgarian': 'cu',
|
|
223
|
-
'old church slavonic': 'cu',
|
|
224
|
-
chuvash: 'cv',
|
|
225
|
-
cornish: 'kw',
|
|
226
|
-
corsican: 'co',
|
|
227
|
-
cree: 'cr',
|
|
228
|
-
welsh: 'cy',
|
|
229
|
-
danish: 'da',
|
|
230
|
-
german: 'de',
|
|
231
|
-
divehi: 'dv',
|
|
232
|
-
dhivehi: 'dv',
|
|
233
|
-
maldivian: 'dv',
|
|
234
|
-
dutch: 'nl',
|
|
235
|
-
flemish: 'nl',
|
|
236
|
-
dzongkha: 'dz',
|
|
237
|
-
greek: 'el',
|
|
238
|
-
english: 'en',
|
|
239
|
-
esperanto: 'eo',
|
|
240
|
-
estonian: 'et',
|
|
241
|
-
ewe: 'ee',
|
|
242
|
-
faroese: 'fo',
|
|
243
|
-
persian: 'fa',
|
|
244
|
-
fijian: 'fj',
|
|
245
|
-
finnish: 'fi',
|
|
246
|
-
french: 'fr',
|
|
247
|
-
'western frisian': 'fy',
|
|
248
|
-
fulah: 'ff',
|
|
249
|
-
georgian: 'ka',
|
|
250
|
-
gaelic: 'gd',
|
|
251
|
-
'scottish gaelic': 'gd',
|
|
252
|
-
irish: 'ga',
|
|
253
|
-
galician: 'gl',
|
|
254
|
-
manx: 'gv',
|
|
255
|
-
guarani: 'gn',
|
|
256
|
-
gujarati: 'gu',
|
|
257
|
-
haitian: 'ht',
|
|
258
|
-
'haitian creole': 'ht',
|
|
259
|
-
hausa: 'ha',
|
|
260
|
-
hebrew: 'he',
|
|
261
|
-
herero: 'hz',
|
|
262
|
-
hindi: 'hi',
|
|
263
|
-
'hiri motu': 'ho',
|
|
264
|
-
croatian: 'hr',
|
|
265
|
-
hungarian: 'hu',
|
|
266
|
-
igbo: 'ig',
|
|
267
|
-
icelandic: 'is',
|
|
268
|
-
ido: 'io',
|
|
269
|
-
'sichuan yi': 'ii',
|
|
270
|
-
nuosu: 'ii',
|
|
271
|
-
inuktitut: 'iu',
|
|
272
|
-
interlingue: 'ie',
|
|
273
|
-
occidental: 'ie',
|
|
274
|
-
interlingua: 'ia',
|
|
275
|
-
indonesian: 'id',
|
|
276
|
-
inupiaq: 'ik',
|
|
277
|
-
italian: 'it',
|
|
278
|
-
javanese: 'jv',
|
|
279
|
-
japanese: 'ja',
|
|
280
|
-
kalaallisut: 'kl',
|
|
281
|
-
greenlandic: 'kl',
|
|
282
|
-
kannada: 'kn',
|
|
283
|
-
kashmiri: 'ks',
|
|
284
|
-
kanuri: 'kr',
|
|
285
|
-
kazakh: 'kk',
|
|
286
|
-
'central khmer': 'km',
|
|
287
|
-
kikuyu: 'ki',
|
|
288
|
-
gikuyu: 'ki',
|
|
289
|
-
kinyarwanda: 'rw',
|
|
290
|
-
kirghiz: 'ky',
|
|
291
|
-
kyrgyz: 'ky',
|
|
292
|
-
komi: 'kv',
|
|
293
|
-
kongo: 'kg',
|
|
294
|
-
korean: 'ko',
|
|
295
|
-
kuanyama: 'kj',
|
|
296
|
-
kwanyama: 'kj',
|
|
297
|
-
kurdish: 'ku',
|
|
298
|
-
lao: 'lo',
|
|
299
|
-
latin: 'la',
|
|
300
|
-
latvian: 'lv',
|
|
301
|
-
limburgan: 'li',
|
|
302
|
-
limburger: 'li',
|
|
303
|
-
limburgish: 'li',
|
|
304
|
-
lingala: 'ln',
|
|
305
|
-
lithuanian: 'lt',
|
|
306
|
-
luxembourgish: 'lb',
|
|
307
|
-
letzeburgesch: 'lb',
|
|
308
|
-
'luba-katanga': 'lu',
|
|
309
|
-
ganda: 'lg',
|
|
310
|
-
macedonian: 'mk',
|
|
311
|
-
marshallese: 'mh',
|
|
312
|
-
malayalam: 'ml',
|
|
313
|
-
maori: 'mi',
|
|
314
|
-
marathi: 'mr',
|
|
315
|
-
malay: 'ms',
|
|
316
|
-
malagasy: 'mg',
|
|
317
|
-
maltese: 'mt',
|
|
318
|
-
mongolian: 'mn',
|
|
319
|
-
nauru: 'na',
|
|
320
|
-
navajo: 'nv',
|
|
321
|
-
navaho: 'nv',
|
|
322
|
-
'ndebele, south': 'nr',
|
|
323
|
-
'south ndebele': 'nr',
|
|
324
|
-
'ndebele, north': 'nd',
|
|
325
|
-
'north ndebele': 'nd',
|
|
326
|
-
ndonga: 'ng',
|
|
327
|
-
nepali: 'ne',
|
|
328
|
-
'norwegian nynorsk': 'nn',
|
|
329
|
-
'nynorsk, norwegian': 'nn',
|
|
330
|
-
'norwegian bokmål': 'nb',
|
|
331
|
-
'bokmål, norwegian': 'nb',
|
|
332
|
-
norwegian: 'no',
|
|
333
|
-
chichewa: 'ny',
|
|
334
|
-
chewa: 'ny',
|
|
335
|
-
nyanja: 'ny',
|
|
336
|
-
occitan: 'oc',
|
|
337
|
-
ojibwa: 'oj',
|
|
338
|
-
oriya: 'or',
|
|
339
|
-
oromo: 'om',
|
|
340
|
-
ossetian: 'os',
|
|
341
|
-
ossetic: 'os',
|
|
342
|
-
panjabi: 'pa',
|
|
343
|
-
punjabi: 'pa',
|
|
344
|
-
pali: 'pi',
|
|
345
|
-
polish: 'pl',
|
|
346
|
-
portuguese: 'pt',
|
|
347
|
-
pushto: 'ps',
|
|
348
|
-
pashto: 'ps',
|
|
349
|
-
quechua: 'qu',
|
|
350
|
-
romansh: 'rm',
|
|
351
|
-
romanian: 'ro',
|
|
352
|
-
moldavian: 'ro',
|
|
353
|
-
moldovan: 'ro',
|
|
354
|
-
rundi: 'rn',
|
|
355
|
-
russian: 'ru',
|
|
356
|
-
sango: 'sg',
|
|
357
|
-
sanskrit: 'sa',
|
|
358
|
-
sinhala: 'si',
|
|
359
|
-
sinhalese: 'si',
|
|
360
|
-
slovak: 'sk',
|
|
361
|
-
slovenian: 'sl',
|
|
362
|
-
'northern sami': 'se',
|
|
363
|
-
samoan: 'sm',
|
|
364
|
-
shona: 'sn',
|
|
365
|
-
sindhi: 'sd',
|
|
366
|
-
somali: 'so',
|
|
367
|
-
'sotho, southern': 'st',
|
|
368
|
-
spanish: 'es',
|
|
369
|
-
castilian: 'es',
|
|
370
|
-
sardinian: 'sc',
|
|
371
|
-
serbian: 'sr',
|
|
372
|
-
swati: 'ss',
|
|
373
|
-
sundanese: 'su',
|
|
374
|
-
swahili: 'sw',
|
|
375
|
-
swedish: 'sv',
|
|
376
|
-
tahitian: 'ty',
|
|
377
|
-
tamil: 'ta',
|
|
378
|
-
tatar: 'tt',
|
|
379
|
-
telugu: 'te',
|
|
380
|
-
tajik: 'tg',
|
|
381
|
-
tagalog: 'tl',
|
|
382
|
-
thai: 'th',
|
|
383
|
-
tigrinya: 'ti',
|
|
384
|
-
tonga: 'to',
|
|
385
|
-
tswana: 'tn',
|
|
386
|
-
tsonga: 'ts',
|
|
387
|
-
turkmen: 'tk',
|
|
388
|
-
turkish: 'tr',
|
|
389
|
-
twi: 'tw',
|
|
390
|
-
uighur: 'ug',
|
|
391
|
-
uyghur: 'ug',
|
|
392
|
-
ukrainian: 'uk',
|
|
393
|
-
urdu: 'ur',
|
|
394
|
-
uzbek: 'uz',
|
|
395
|
-
venda: 've',
|
|
396
|
-
vietnamese: 'vi',
|
|
397
|
-
volapük: 'vo',
|
|
398
|
-
walloon: 'wa',
|
|
399
|
-
wolof: 'wo',
|
|
400
|
-
xhosa: 'xh',
|
|
401
|
-
yiddish: 'yi',
|
|
402
|
-
yoruba: 'yo',
|
|
403
|
-
zhuang: 'za',
|
|
404
|
-
chuang: 'za',
|
|
405
|
-
zulu: 'zu',
|
|
406
|
-
};
|
|
407
|
-
// @ts-ignore
|
|
408
|
-
const isoKeys = Object.values(iso).sort();
|
|
409
|
-
var languages = e => {
|
|
410
|
-
if ('string' != typeof e)
|
|
411
|
-
throw new Error('The "language" must be a string, received ' + typeof e);
|
|
412
|
-
if (e.length > 100)
|
|
413
|
-
throw new Error(`The "language" is too long at ${e.length} characters`);
|
|
414
|
-
if (((e = e.toLowerCase()), (e = names[e] || iso[e] || e), !isoKeys.includes(e)))
|
|
415
|
-
throw new Error(`The language "${e}" is not part of the ISO 639-1`);
|
|
416
|
-
return e;
|
|
417
|
-
};
|
|
418
|
-
function Cache() {
|
|
419
|
-
var e = Object.create(null);
|
|
420
|
-
function a(a) {
|
|
421
|
-
delete e[a];
|
|
422
|
-
}
|
|
423
|
-
(this.set = function (n, i, r) {
|
|
424
|
-
if (void 0 !== r && ('number' != typeof r || isNaN(r) || r <= 0))
|
|
425
|
-
throw new Error('Cache timeout must be a positive number');
|
|
426
|
-
var t = e[n];
|
|
427
|
-
t && clearTimeout(t.timeout);
|
|
428
|
-
var o = { value: i, expire: r + Date.now() };
|
|
429
|
-
return (
|
|
430
|
-
// @ts-ignore
|
|
431
|
-
isNaN(o.expire) || (o.timeout = setTimeout(() => a(n), r)), (e[n] = o), i);
|
|
432
|
-
}),
|
|
433
|
-
(this.del = function (n) {
|
|
434
|
-
var i = !0, r = e[n];
|
|
435
|
-
return (r
|
|
436
|
-
? (clearTimeout(r.timeout),
|
|
437
|
-
!isNaN(r.expire) && r.expire < Date.now() && (i = !1))
|
|
438
|
-
: (i = !1),
|
|
439
|
-
i && a(n),
|
|
440
|
-
i);
|
|
441
|
-
}),
|
|
442
|
-
(this.clear = function () {
|
|
443
|
-
for (var a in e)
|
|
444
|
-
clearTimeout(e[a].timeout);
|
|
445
|
-
e = Object.create(null);
|
|
446
|
-
}),
|
|
447
|
-
(this.get = function (a) {
|
|
448
|
-
var n = e[a];
|
|
449
|
-
if (void 0 !== n) {
|
|
450
|
-
if (isNaN(n.expire) || n.expire >= Date.now())
|
|
451
|
-
return n.value;
|
|
452
|
-
delete e[a];
|
|
453
|
-
}
|
|
454
|
-
return null;
|
|
455
|
-
});
|
|
456
|
-
}
|
|
457
|
-
const exp$1 = new Cache();
|
|
458
|
-
exp$1.Cache = Cache;
|
|
459
|
-
const base = 'https://translate.googleapis.com/translate_a/single';
|
|
460
|
-
var google = {
|
|
461
|
-
fetch: ({ key: e, from: a, to: n, text: i }) => [
|
|
462
|
-
`${base}?client=gtx&sl=${a}&tl=${n}&dt=t&q=${encodeURI(i)}`,
|
|
463
|
-
],
|
|
464
|
-
parse: e => e.json().then(e => {
|
|
465
|
-
if (!(e = e && e[0] && e[0][0] && e[0].map(e => e[0]).join('')))
|
|
466
|
-
throw new Error('Translation not found');
|
|
467
|
-
return e;
|
|
468
|
-
}),
|
|
469
|
-
}, yandex = {
|
|
470
|
-
needkey: !0,
|
|
471
|
-
fetch: ({ key: e, from: a, to: n, text: i }) => [
|
|
472
|
-
`https://translate.yandex.net/api/v1.5/tr.json/translate?key=${e}&lang=${a}-${n}&text=${encodeURIComponent(i)}`,
|
|
473
|
-
{ method: 'POST', body: '' },
|
|
474
|
-
],
|
|
475
|
-
parse: e => e.json().then(e => {
|
|
476
|
-
if (200 !== e.code)
|
|
477
|
-
throw new Error(e.message);
|
|
478
|
-
return e.text[0];
|
|
479
|
-
}),
|
|
480
|
-
};
|
|
481
|
-
const libreUrl = 'https://libretranslate.com/translate';
|
|
482
|
-
var libre = {
|
|
483
|
-
needkey: !1,
|
|
484
|
-
fetch: ({ url: e = libreUrl, key: a, from: n, to: i, text: r }) => [
|
|
485
|
-
e,
|
|
486
|
-
{
|
|
487
|
-
method: 'POST',
|
|
488
|
-
body: JSON.stringify({ q: r, source: n, target: i, api_key: a }),
|
|
489
|
-
headers: { 'Content-Type': 'application/json' },
|
|
490
|
-
},
|
|
491
|
-
],
|
|
492
|
-
parse: e => e.json().then(e => {
|
|
493
|
-
if (!e)
|
|
494
|
-
throw new Error('No response found');
|
|
495
|
-
if (e.error)
|
|
496
|
-
throw new Error(e.error);
|
|
497
|
-
if (!e.translatedText)
|
|
498
|
-
throw new Error('No response found');
|
|
499
|
-
return e.translatedText;
|
|
500
|
-
}),
|
|
501
|
-
}, deepl = {
|
|
502
|
-
needkey: !0,
|
|
503
|
-
fetch: ({ key: e, from: a, to: n, text: i }) => [
|
|
504
|
-
`https://api${/:fx$/.test(e) ? '-free' : ''}.deepl.com/v2/translate?auth_key=${e}&source_lang=${a}&target_lang=${n}&text=${(i = encodeURIComponent(i))}`,
|
|
505
|
-
{ method: 'POST', body: '' },
|
|
506
|
-
],
|
|
507
|
-
parse: async (e) => {
|
|
508
|
-
if (!e.ok) {
|
|
509
|
-
if (403 === e.status)
|
|
510
|
-
throw new Error('Auth Error, please review the key for DeepL');
|
|
511
|
-
throw new Error(`Error ${e.status}`);
|
|
512
|
-
}
|
|
513
|
-
return e.json().then(e => e.translations[0].text);
|
|
514
|
-
},
|
|
515
|
-
}, engines = { google: google, yandex: yandex, libre: libre, deepl: deepl };
|
|
516
|
-
const Translate = function (e = {}) {
|
|
517
|
-
// @ts-ignore
|
|
518
|
-
if (!(this instanceof Translate))
|
|
519
|
-
return new Translate(e);
|
|
520
|
-
const a = {
|
|
521
|
-
from: 'en',
|
|
522
|
-
to: 'en',
|
|
523
|
-
cache: void 0,
|
|
524
|
-
languages: languages,
|
|
525
|
-
engines: engines,
|
|
526
|
-
engine: 'google',
|
|
527
|
-
keys: {},
|
|
528
|
-
}, n = async (e, a = {}) => {
|
|
529
|
-
'string' == typeof a && (a = { to: a }), // @ts-ignore
|
|
530
|
-
(a.text = e), // @ts-ignore
|
|
531
|
-
(a.from = languages(a.from || n.from)), // @ts-ignore
|
|
532
|
-
(a.to = languages(a.to || n.to)), // @ts-ignore
|
|
533
|
-
(a.cache = a.cache || n.cache), // @ts-ignore
|
|
534
|
-
(a.engines = a.engines || {}), // @ts-ignore
|
|
535
|
-
(a.engine = a.engine || n.engine), // @ts-ignore
|
|
536
|
-
(a.url = a.url || n.url), // @ts-ignore
|
|
537
|
-
(a.id = a.id || `${a.url}:${a.from}:${a.to}:${a.engine}:${a.text}`), // @ts-ignore
|
|
538
|
-
(a.keys = a.keys || n.keys || {}); // @ts-ignore
|
|
539
|
-
for (let e in n.keys)
|
|
540
|
-
a.keys[e] = a.keys[e] || n.keys[e]; // @ts-ignore
|
|
541
|
-
a.key = a.key || n.key || a.keys[a.engine]; // @ts-ignore
|
|
542
|
-
const i = a.engines[a.engine] || n.engines[a.engine], // @ts-ignore
|
|
543
|
-
r = exp$1.get(a.id);
|
|
544
|
-
if (r)
|
|
545
|
-
return Promise.resolve(r); // @ts-ignore
|
|
546
|
-
if (a.to === a.from)
|
|
547
|
-
return Promise.resolve(a.text); // @ts-ignore
|
|
548
|
-
if (i.needkey && !a.key)
|
|
549
|
-
// @ts-ignore
|
|
550
|
-
throw new Error(// @ts-ignore
|
|
551
|
-
`The engine "${a.engine}" needs a key, please provide it`);
|
|
552
|
-
const t = i.fetch(a); // @ts-ignore
|
|
553
|
-
return fetch(...t)
|
|
554
|
-
.then(i.parse) // @ts-ignore
|
|
555
|
-
.then(e => exp$1.set(a.id, e, a.cache));
|
|
556
|
-
};
|
|
557
|
-
for (let i in a)
|
|
558
|
-
n[i] = void 0 === e[i] ? a[i] : e[i];
|
|
559
|
-
return n;
|
|
560
|
-
}, // @ts-ignore
|
|
561
|
-
exp = new Translate();
|
|
562
|
-
exp.Translate = Translate;
|
|
563
|
-
export const translate = exp;
|
|
564
|
-
;
|
|
565
|
-
({}); // @--end-of-file-for-module=tnp-helpers lib/base/translate.ts
|
|
566
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL3RucC1oZWxwZXJzL3Byb2plY3RzL3RucC1oZWxwZXJzL3NyYy9saWIvYmFzZS90cmFuc2xhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxHQUFHLEdBQUc7SUFDUixHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtDQUNWLEVBQ0QsS0FBSyxHQUFHO0lBQ04sSUFBSSxFQUFFLElBQUk7SUFDVixTQUFTLEVBQUUsSUFBSTtJQUNmLFNBQVMsRUFBRSxJQUFJO0lBQ2YsSUFBSSxFQUFFLElBQUk7SUFDVixRQUFRLEVBQUUsSUFBSTtJQUNkLE9BQU8sRUFBRSxJQUFJO0lBQ2IsTUFBTSxFQUFFLElBQUk7SUFDWixTQUFTLEVBQUUsSUFBSTtJQUNmLFFBQVEsRUFBRSxJQUFJO0lBQ2QsUUFBUSxFQUFFLElBQUk7SUFDZCxNQUFNLEVBQUUsSUFBSTtJQUNaLE9BQU8sRUFBRSxJQUFJO0lBQ2IsTUFBTSxFQUFFLElBQUk7SUFDWixXQUFXLEVBQUUsSUFBSTtJQUNqQixPQUFPLEVBQUUsSUFBSTtJQUNiLE9BQU8sRUFBRSxJQUFJO0lBQ2IsTUFBTSxFQUFFLElBQUk7SUFDWixVQUFVLEVBQUUsSUFBSTtJQUNoQixPQUFPLEVBQUUsSUFBSTtJQUNiLGtCQUFrQixFQUFFLElBQUk7SUFDeEIsT0FBTyxFQUFFLElBQUk7SUFDYixPQUFPLEVBQUUsSUFBSTtJQUNiLE9BQU8sRUFBRSxJQUFJO0lBQ2IsTUFBTSxFQUFFLElBQUk7SUFDWixTQUFTLEVBQUUsSUFBSTtJQUNmLE9BQU8sRUFBRSxJQUFJO0lBQ2IsT0FBTyxFQUFFLElBQUk7SUFDYixTQUFTLEVBQUUsSUFBSTtJQUNmLEtBQUssRUFBRSxJQUFJO0lBQ1gsUUFBUSxFQUFFLElBQUk7SUFDZCxPQUFPLEVBQUUsSUFBSTtJQUNiLE9BQU8sRUFBRSxJQUFJO0lBQ2IsZUFBZSxFQUFFLElBQUk7SUFDckIsY0FBYyxFQUFFLElBQUk7SUFDcEIsaUJBQWlCLEVBQUUsSUFBSTtJQUN2QixlQUFlLEVBQUUsSUFBSTtJQUNyQixxQkFBcUIsRUFBRSxJQUFJO0lBQzNCLE9BQU8sRUFBRSxJQUFJO0lBQ2IsT0FBTyxFQUFFLElBQUk7SUFDYixRQUFRLEVBQUUsSUFBSTtJQUNkLElBQUksRUFBRSxJQUFJO0lBQ1YsS0FBSyxFQUFFLElBQUk7SUFDWCxNQUFNLEVBQUUsSUFBSTtJQUNaLE1BQU0sRUFBRSxJQUFJO0lBQ1osTUFBTSxFQUFFLElBQUk7SUFDWixPQUFPLEVBQUUsSUFBSTtJQUNiLFNBQVMsRUFBRSxJQUFJO0lBQ2YsS0FBSyxFQUFFLElBQUk7SUFDWCxPQUFPLEVBQUUsSUFBSTtJQUNiLFFBQVEsRUFBRSxJQUFJO0lBQ2QsS0FBSyxFQUFFLElBQUk7SUFDWCxPQUFPLEVBQUUsSUFBSTtJQUNiLFNBQVMsRUFBRSxJQUFJO0lBQ2YsUUFBUSxFQUFFLElBQUk7SUFDZCxHQUFHLEVBQUUsSUFBSTtJQUNULE9BQU8sRUFBRSxJQUFJO0lBQ2IsT0FBTyxFQUFFLElBQUk7SUFDYixNQUFNLEVBQUUsSUFBSTtJQUNaLE9BQU8sRUFBRSxJQUFJO0lBQ2IsTUFBTSxFQUFFLElBQUk7SUFDWixpQkFBaUIsRUFBRSxJQUFJO0lBQ3ZCLEtBQUssRUFBRSxJQUFJO0lBQ1gsUUFBUSxFQUFFLElBQUk7SUFDZCxNQUFNLEVBQUUsSUFBSTtJQUNaLGlCQUFpQixFQUFFLElBQUk7SUFDdkIsS0FBSyxFQUFFLElBQUk7SUFDWCxRQUFRLEVBQUUsSUFBSTtJQUNkLElBQUksRUFBRSxJQUFJO0lBQ1YsT0FBTyxFQUFFLElBQUk7SUFDYixRQUFRLEVBQUUsSUFBSTtJQUNkLE9BQU8sRUFBRSxJQUFJO0lBQ2IsZ0JBQWdCLEVBQUUsSUFBSTtJQUN0QixLQUFLLEVBQUUsSUFBSTtJQUNYLE1BQU0sRUFBRSxJQUFJO0lBQ1osTUFBTSxFQUFFLElBQUk7SUFDWixLQUFLLEVBQUUsSUFBSTtJQUNYLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLFFBQVEsRUFBRSxJQUFJO0lBQ2QsU0FBUyxFQUFFLElBQUk7SUFDZixJQUFJLEVBQUUsSUFBSTtJQUNWLFNBQVMsRUFBRSxJQUFJO0lBQ2YsR0FBRyxFQUFFLElBQUk7SUFDVCxZQUFZLEVBQUUsSUFBSTtJQUNsQixLQUFLLEVBQUUsSUFBSTtJQUNYLFNBQVMsRUFBRSxJQUFJO0lBQ2YsV0FBVyxFQUFFLElBQUk7SUFDakIsVUFBVSxFQUFFLElBQUk7SUFDaEIsV0FBVyxFQUFFLElBQUk7SUFDakIsVUFBVSxFQUFFLElBQUk7SUFDaEIsT0FBTyxFQUFFLElBQUk7SUFDYixPQUFPLEVBQUUsSUFBSTtJQUNiLFFBQVEsRUFBRSxJQUFJO0lBQ2QsUUFBUSxFQUFFLElBQUk7SUFDZCxXQUFXLEVBQUUsSUFBSTtJQUNqQixXQUFXLEVBQUUsSUFBSTtJQUNqQixPQUFPLEVBQUUsSUFBSTtJQUNiLFFBQVEsRUFBRSxJQUFJO0lBQ2QsTUFBTSxFQUFFLElBQUk7SUFDWixNQUFNLEVBQUUsSUFBSTtJQUNaLGVBQWUsRUFBRSxJQUFJO0lBQ3JCLE1BQU0sRUFBRSxJQUFJO0lBQ1osTUFBTSxFQUFFLElBQUk7SUFDWixXQUFXLEVBQUUsSUFBSTtJQUNqQixPQUFPLEVBQUUsSUFBSTtJQUNiLE1BQU0sRUFBRSxJQUFJO0lBQ1osSUFBSSxFQUFFLElBQUk7SUFDVixLQUFLLEVBQUUsSUFBSTtJQUNYLE1BQU0sRUFBRSxJQUFJO0lBQ1osUUFBUSxFQUFFLElBQUk7SUFDZCxRQUFRLEVBQUUsSUFBSTtJQUNkLE9BQU8sRUFBRSxJQUFJO0lBQ2IsR0FBRyxFQUFFLElBQUk7SUFDVCxLQUFLLEVBQUUsSUFBSTtJQUNYLE9BQU8sRUFBRSxJQUFJO0lBQ2IsU0FBUyxFQUFFLElBQUk7SUFDZixTQUFTLEVBQUUsSUFBSTtJQUNmLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLE9BQU8sRUFBRSxJQUFJO0lBQ2IsVUFBVSxFQUFFLElBQUk7SUFDaEIsYUFBYSxFQUFFLElBQUk7SUFDbkIsYUFBYSxFQUFFLElBQUk7SUFDbkIsY0FBYyxFQUFFLElBQUk7SUFDcEIsS0FBSyxFQUFFLElBQUk7SUFDWCxVQUFVLEVBQUUsSUFBSTtJQUNoQixXQUFXLEVBQUUsSUFBSTtJQUNqQixTQUFTLEVBQUUsSUFBSTtJQUNmLEtBQUssRUFBRSxJQUFJO0lBQ1gsT0FBTyxFQUFFLElBQUk7SUFDYixLQUFLLEVBQUUsSUFBSTtJQUNYLFFBQVEsRUFBRSxJQUFJO0lBQ2QsT0FBTyxFQUFFLElBQUk7SUFDYixTQUFTLEVBQUUsSUFBSTtJQUNmLEtBQUssRUFBRSxJQUFJO0lBQ1gsTUFBTSxFQUFFLElBQUk7SUFDWixNQUFNLEVBQUUsSUFBSTtJQUNaLGdCQUFnQixFQUFFLElBQUk7SUFDdEIsZUFBZSxFQUFFLElBQUk7SUFDckIsZ0JBQWdCLEVBQUUsSUFBSTtJQUN0QixlQUFlLEVBQUUsSUFBSTtJQUNyQixNQUFNLEVBQUUsSUFBSTtJQUNaLE1BQU0sRUFBRSxJQUFJO0lBQ1osbUJBQW1CLEVBQUUsSUFBSTtJQUN6QixvQkFBb0IsRUFBRSxJQUFJO0lBQzFCLGtCQUFrQixFQUFFLElBQUk7SUFDeEIsbUJBQW1CLEVBQUUsSUFBSTtJQUN6QixTQUFTLEVBQUUsSUFBSTtJQUNmLFFBQVEsRUFBRSxJQUFJO0lBQ2QsS0FBSyxFQUFFLElBQUk7SUFDWCxNQUFNLEVBQUUsSUFBSTtJQUNaLE9BQU8sRUFBRSxJQUFJO0lBQ2IsTUFBTSxFQUFFLElBQUk7SUFDWixLQUFLLEVBQUUsSUFBSTtJQUNYLEtBQUssRUFBRSxJQUFJO0lBQ1gsUUFBUSxFQUFFLElBQUk7SUFDZCxPQUFPLEVBQUUsSUFBSTtJQUNiLE9BQU8sRUFBRSxJQUFJO0lBQ2IsT0FBTyxFQUFFLElBQUk7SUFDYixJQUFJLEVBQUUsSUFBSTtJQUNWLE1BQU0sRUFBRSxJQUFJO0lBQ1osVUFBVSxFQUFFLElBQUk7SUFDaEIsTUFBTSxFQUFFLElBQUk7SUFDWixNQUFNLEVBQUUsSUFBSTtJQUNaLE9BQU8sRUFBRSxJQUFJO0lBQ2IsT0FBTyxFQUFFLElBQUk7SUFDYixRQUFRLEVBQUUsSUFBSTtJQUNkLFNBQVMsRUFBRSxJQUFJO0lBQ2YsUUFBUSxFQUFFLElBQUk7SUFDZCxLQUFLLEVBQUUsSUFBSTtJQUNYLE9BQU8sRUFBRSxJQUFJO0lBQ2IsS0FBSyxFQUFFLElBQUk7SUFDWCxRQUFRLEVBQUUsSUFBSTtJQUNkLE9BQU8sRUFBRSxJQUFJO0lBQ2IsU0FBUyxFQUFFLElBQUk7SUFDZixNQUFNLEVBQUUsSUFBSTtJQUNaLFNBQVMsRUFBRSxJQUFJO0lBQ2YsZUFBZSxFQUFFLElBQUk7SUFDckIsTUFBTSxFQUFFLElBQUk7SUFDWixLQUFLLEVBQUUsSUFBSTtJQUNYLE1BQU0sRUFBRSxJQUFJO0lBQ1osTUFBTSxFQUFFLElBQUk7SUFDWixpQkFBaUIsRUFBRSxJQUFJO0lBQ3ZCLE9BQU8sRUFBRSxJQUFJO0lBQ2IsU0FBUyxFQUFFLElBQUk7SUFDZixTQUFTLEVBQUUsSUFBSTtJQUNmLE9BQU8sRUFBRSxJQUFJO0lBQ2IsS0FBSyxFQUFFLElBQUk7SUFDWCxTQUFTLEVBQUUsSUFBSTtJQUNmLE9BQU8sRUFBRSxJQUFJO0lBQ2IsT0FBTyxFQUFFLElBQUk7SUFDYixRQUFRLEVBQUUsSUFBSTtJQUNkLEtBQUssRUFBRSxJQUFJO0lBQ1gsS0FBSyxFQUFFLElBQUk7SUFDWCxNQUFNLEVBQUUsSUFBSTtJQUNaLEtBQUssRUFBRSxJQUFJO0lBQ1gsT0FBTyxFQUFFLElBQUk7SUFDYixJQUFJLEVBQUUsSUFBSTtJQUNWLFFBQVEsRUFBRSxJQUFJO0lBQ2QsS0FBSyxFQUFFLElBQUk7SUFDWCxNQUFNLEVBQUUsSUFBSTtJQUNaLE1BQU0sRUFBRSxJQUFJO0lBQ1osT0FBTyxFQUFFLElBQUk7SUFDYixPQUFPLEVBQUUsSUFBSTtJQUNiLEdBQUcsRUFBRSxJQUFJO0lBQ1QsTUFBTSxFQUFFLElBQUk7SUFDWixNQUFNLEVBQUUsSUFBSTtJQUNaLFNBQVMsRUFBRSxJQUFJO0lBQ2YsSUFBSSxFQUFFLElBQUk7SUFDVixLQUFLLEVBQUUsSUFBSTtJQUNYLEtBQUssRUFBRSxJQUFJO0lBQ1gsVUFBVSxFQUFFLElBQUk7SUFDaEIsT0FBTyxFQUFFLElBQUk7SUFDYixPQUFPLEVBQUUsSUFBSTtJQUNiLEtBQUssRUFBRSxJQUFJO0lBQ1gsS0FBSyxFQUFFLElBQUk7SUFDWCxPQUFPLEVBQUUsSUFBSTtJQUNiLE1BQU0sRUFBRSxJQUFJO0lBQ1osTUFBTSxFQUFFLElBQUk7SUFDWixNQUFNLEVBQUUsSUFBSTtJQUNaLElBQUksRUFBRSxJQUFJO0NBQ0YsQ0FBQztBQUNiLGFBQWE7QUFDYixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzFDLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFO0lBQ2xCLElBQUksUUFBUSxJQUFJLE9BQU8sQ0FBQztRQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDM0UsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLEdBQUc7UUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDLE1BQU0sYUFBYSxDQUFDLENBQUM7SUFDMUUsSUFDRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTVFLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztJQUN0RSxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUMsQ0FBQztBQUVGLFNBQVMsS0FBSztJQUNaLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNWLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2QsQ0FBQztJQUNELENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUMzQixJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5RCxNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2IsQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDN0MsT0FBTztRQUNMLGFBQWE7UUFDYixLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUMxRSxDQUFDO0lBQ0osQ0FBQyxDQUFDO1FBQ0EsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQztZQUNyQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDUixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ1gsT0FBTyxDQUNMLENBQUM7Z0JBQ0MsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7b0JBQ3hCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4RCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ1osQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ1QsQ0FBQyxDQUNGLENBQUM7UUFDSixDQUFDLENBQUM7UUFDRixDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUc7WUFDWixLQUFLLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM1QyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUM7UUFDRixDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsVUFBVSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNiLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2pCLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7b0JBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDO2dCQUM5RCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNkLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUNELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7QUFDMUIsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDcEIsTUFBTSxJQUFJLEdBQUcscURBQXFELENBQUM7QUFDbkUsSUFBSSxNQUFNLEdBQUc7SUFDVCxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDOUMsR0FBRyxJQUFJLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxXQUFXLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtLQUM1RDtJQUNELEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUNULENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDaEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDN0QsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzNDLE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQyxDQUFDO0NBQ0wsRUFDRCxNQUFNLEdBQUc7SUFDUCxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ1gsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQzlDLCtEQUErRCxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUMvRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtLQUM3QjtJQUNELEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUNULENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDaEIsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLElBQUk7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkIsQ0FBQyxDQUFDO0NBQ0wsQ0FBQztBQUNKLE1BQU0sUUFBUSxHQUFHLHNDQUFzQyxDQUFDO0FBQ3hELElBQUksS0FBSyxHQUFHO0lBQ1IsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNYLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUNqRSxDQUFDO1FBQ0Q7WUFDRSxNQUFNLEVBQUUsTUFBTTtZQUNkLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2hFLE9BQU8sRUFBRSxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRTtTQUNoRDtLQUNGO0lBQ0QsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQ1QsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUNoQixJQUFJLENBQUMsQ0FBQztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsQ0FBQyxLQUFLO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzVELE9BQU8sQ0FBQyxDQUFDLGNBQWMsQ0FBQztJQUMxQixDQUFDLENBQUM7Q0FDTCxFQUNELEtBQUssR0FBRztJQUNOLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDWCxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDOUMsY0FBYyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsb0NBQW9DLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ3hKLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO0tBQzdCO0lBQ0QsS0FBSyxFQUFFLEtBQUssRUFBQyxDQUFDLEVBQUMsRUFBRTtRQUNmLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDVixJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsTUFBTTtnQkFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO1lBQ2pFLE1BQU0sSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBQ0QsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRCxDQUFDO0NBQ0YsRUFDRCxPQUFPLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDM0UsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtJQUM5QixhQUFhO0lBQ2IsSUFBSSxDQUFDLENBQUMsSUFBSSxZQUFZLFNBQVMsQ0FBQztRQUFFLE9BQU8sSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUQsTUFBTSxDQUFDLEdBQUc7UUFDTixJQUFJLEVBQUUsSUFBSTtRQUNWLEVBQUUsRUFBRSxJQUFJO1FBQ1IsS0FBSyxFQUFFLEtBQUssQ0FBQztRQUNiLFNBQVMsRUFBRSxTQUFTO1FBQ3BCLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLElBQUksRUFBRSxFQUFFO0tBQ1QsRUFDRCxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUU7UUFDdEIsUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsYUFBYTtZQUNwRCxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsYUFBYTtZQUMzQixDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsYUFBYTtZQUNyRCxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsYUFBYTtZQUMvQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsYUFBYTtZQUM3QyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsRUFBRSxhQUFhO1lBQzVDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxhQUFhO1lBQ2hELENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxhQUFhO1lBQ3ZDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxhQUFhO1lBQ2xGLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhO1FBQ2xELEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUk7WUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWE7UUFDdkUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxhQUFhO1FBQ3pELE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLGFBQWE7UUFDakUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQztZQUFFLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWE7UUFDL0MsSUFBSSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJO1lBQUUsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWE7UUFDbEUsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUc7WUFDckIsYUFBYTtZQUNiLE1BQU0sSUFBSSxLQUFLLENBQUUsYUFBYTtZQUM1QixlQUFlLENBQUMsQ0FBQyxNQUFNLGtDQUFrQyxDQUMxRCxDQUFDO1FBQ0osTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWE7UUFDbkMsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDZixJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLGFBQWE7YUFDM0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDLENBQUM7SUFDSixLQUFLLElBQUksQ0FBQyxJQUFJLENBQUM7UUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RCxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUMsRUFBRSxhQUFhO0FBQ2hCLEdBQUcsR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO0FBQ3hCLEdBQUcsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0FBRTFCLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxHQUdkLENBQUM7QUFFWCxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDhEQUE4RCIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5jb25zdCBpc28gPSB7XG4gICAgYWFyOiAnYWEnLFxuICAgIGFiazogJ2FiJyxcbiAgICBhZnI6ICdhZicsXG4gICAgYWthOiAnYWsnLFxuICAgIGFsYjogJ3NxJyxcbiAgICBhbWg6ICdhbScsXG4gICAgYXJhOiAnYXInLFxuICAgIGFyZzogJ2FuJyxcbiAgICBhcm06ICdoeScsXG4gICAgYXNtOiAnYXMnLFxuICAgIGF2YTogJ2F2JyxcbiAgICBhdmU6ICdhZScsXG4gICAgYXltOiAnYXknLFxuICAgIGF6ZTogJ2F6JyxcbiAgICBiYWs6ICdiYScsXG4gICAgYmFtOiAnYm0nLFxuICAgIGJhcTogJ2V1JyxcbiAgICBiZWw6ICdiZScsXG4gICAgYmVuOiAnYm4nLFxuICAgIGJpaDogJ2JoJyxcbiAgICBiaXM6ICdiaScsXG4gICAgYm9zOiAnYnMnLFxuICAgIGJyZTogJ2JyJyxcbiAgICBidWw6ICdiZycsXG4gICAgYnVyOiAnbXknLFxuICAgIGNhdDogJ2NhJyxcbiAgICBjaGE6ICdjaCcsXG4gICAgY2hlOiAnY2UnLFxuICAgIGNoaTogJ3poJyxcbiAgICBjaHU6ICdjdScsXG4gICAgY2h2OiAnY3YnLFxuICAgIGNvcjogJ2t3JyxcbiAgICBjb3M6ICdjbycsXG4gICAgY3JlOiAnY3InLFxuICAgIGN6ZTogJ2NzJyxcbiAgICBkYW46ICdkYScsXG4gICAgZGl2OiAnZHYnLFxuICAgIGR1dDogJ25sJyxcbiAgICBkem86ICdkeicsXG4gICAgZW5nOiAnZW4nLFxuICAgIGVwbzogJ2VvJyxcbiAgICBlc3Q6ICdldCcsXG4gICAgZXdlOiAnZWUnLFxuICAgIGZhbzogJ2ZvJyxcbiAgICBmaWo6ICdmaicsXG4gICAgZmluOiAnZmknLFxuICAgIGZyZTogJ2ZyJyxcbiAgICBmcnk6ICdmeScsXG4gICAgZnVsOiAnZmYnLFxuICAgIGdlbzogJ2thJyxcbiAgICBnZXI6ICdkZScsXG4gICAgZ2xhOiAnZ2QnLFxuICAgIGdsZTogJ2dhJyxcbiAgICBnbGc6ICdnbCcsXG4gICAgZ2x2OiAnZ3YnLFxuICAgIGdyZTogJ2VsJyxcbiAgICBncm46ICdnbicsXG4gICAgZ3VqOiAnZ3UnLFxuICAgIGhhdDogJ2h0JyxcbiAgICBoYXU6ICdoYScsXG4gICAgaGViOiAnaGUnLFxuICAgIGhlcjogJ2h6JyxcbiAgICBoaW46ICdoaScsXG4gICAgaG1vOiAnaG8nLFxuICAgIGhydjogJ2hyJyxcbiAgICBodW46ICdodScsXG4gICAgaWJvOiAnaWcnLFxuICAgIGljZTogJ2lzJyxcbiAgICBpZG86ICdpbycsXG4gICAgaWlpOiAnaWknLFxuICAgIGlrdTogJ2l1JyxcbiAgICBpbGU6ICdpZScsXG4gICAgaW5hOiAnaWEnLFxuICAgIGluZDogJ2lkJyxcbiAgICBpcGs6ICdpaycsXG4gICAgaXRhOiAnaXQnLFxuICAgIGphdjogJ2p2JyxcbiAgICBqcG46ICdqYScsXG4gICAga2FsOiAna2wnLFxuICAgIGthbjogJ2tuJyxcbiAgICBrYXM6ICdrcycsXG4gICAga2F1OiAna3InLFxuICAgIGthejogJ2trJyxcbiAgICBraG06ICdrbScsXG4gICAga2lrOiAna2knLFxuICAgIGtpbjogJ3J3JyxcbiAgICBraXI6ICdreScsXG4gICAga29tOiAna3YnLFxuICAgIGtvbjogJ2tnJyxcbiAgICBrb3I6ICdrbycsXG4gICAga3VhOiAna2onLFxuICAgIGt1cjogJ2t1JyxcbiAgICBsYW86ICdsbycsXG4gICAgbGF0OiAnbGEnLFxuICAgIGxhdjogJ2x2JyxcbiAgICBsaW06ICdsaScsXG4gICAgbGluOiAnbG4nLFxuICAgIGxpdDogJ2x0JyxcbiAgICBsdHo6ICdsYicsXG4gICAgbHViOiAnbHUnLFxuICAgIGx1ZzogJ2xnJyxcbiAgICBtYWM6ICdtaycsXG4gICAgbWFoOiAnbWgnLFxuICAgIG1hbDogJ21sJyxcbiAgICBtYW86ICdtaScsXG4gICAgbWFyOiAnbXInLFxuICAgIG1heTogJ21zJyxcbiAgICBtbGc6ICdtZycsXG4gICAgbWx0OiAnbXQnLFxuICAgIG1vbjogJ21uJyxcbiAgICBuYXU6ICduYScsXG4gICAgbmF2OiAnbnYnLFxuICAgIG5ibDogJ25yJyxcbiAgICBuZGU6ICduZCcsXG4gICAgbmRvOiAnbmcnLFxuICAgIG5lcDogJ25lJyxcbiAgICBubm86ICdubicsXG4gICAgbm9iOiAnbmInLFxuICAgIG5vcjogJ25vJyxcbiAgICBueWE6ICdueScsXG4gICAgb2NpOiAnb2MnLFxuICAgIG9qaTogJ29qJyxcbiAgICBvcmk6ICdvcicsXG4gICAgb3JtOiAnb20nLFxuICAgIG9zczogJ29zJyxcbiAgICBwYW46ICdwYScsXG4gICAgcGVyOiAnZmEnLFxuICAgIHBsaTogJ3BpJyxcbiAgICBwb2w6ICdwbCcsXG4gICAgcG9yOiAncHQnLFxuICAgIHB1czogJ3BzJyxcbiAgICBxdWU6ICdxdScsXG4gICAgcm9oOiAncm0nLFxuICAgIHJ1bTogJ3JvJyxcbiAgICBydW46ICdybicsXG4gICAgcnVzOiAncnUnLFxuICAgIHNhZzogJ3NnJyxcbiAgICBzYW46ICdzYScsXG4gICAgc2luOiAnc2knLFxuICAgIHNsbzogJ3NrJyxcbiAgICBzbHY6ICdzbCcsXG4gICAgc21lOiAnc2UnLFxuICAgIHNtbzogJ3NtJyxcbiAgICBzbmE6ICdzbicsXG4gICAgc25kOiAnc2QnLFxuICAgIHNvbTogJ3NvJyxcbiAgICBzb3Q6ICdzdCcsXG4gICAgc3BhOiAnZXMnLFxuICAgIHNyZDogJ3NjJyxcbiAgICBzcnA6ICdzcicsXG4gICAgc3N3OiAnc3MnLFxuICAgIHN1bjogJ3N1JyxcbiAgICBzd2E6ICdzdycsXG4gICAgc3dlOiAnc3YnLFxuICAgIHRhaDogJ3R5JyxcbiAgICB0YW06ICd0YScsXG4gICAgdGF0OiAndHQnLFxuICAgIHRlbDogJ3RlJyxcbiAgICB0Z2s6ICd0ZycsXG4gICAgdGdsOiAndGwnLFxuICAgIHRoYTogJ3RoJyxcbiAgICB0aWI6ICdibycsXG4gICAgdGlyOiAndGknLFxuICAgIHRvbjogJ3RvJyxcbiAgICB0c246ICd0bicsXG4gICAgdHNvOiAndHMnLFxuICAgIHR1azogJ3RrJyxcbiAgICB0dXI6ICd0cicsXG4gICAgdHdpOiAndHcnLFxuICAgIHVpZzogJ3VnJyxcbiAgICB1a3I6ICd1aycsXG4gICAgdXJkOiAndXInLFxuICAgIHV6YjogJ3V6JyxcbiAgICB2ZW46ICd2ZScsXG4gICAgdmllOiAndmknLFxuICAgIHZvbDogJ3ZvJyxcbiAgICB3ZWw6ICdjeScsXG4gICAgd2xuOiAnd2EnLFxuICAgIHdvbDogJ3dvJyxcbiAgICB4aG86ICd4aCcsXG4gICAgeWlkOiAneWknLFxuICAgIHlvcjogJ3lvJyxcbiAgICB6aGE6ICd6YScsXG4gICAgenVsOiAnenUnLFxuICB9LFxuICBuYW1lcyA9IHtcbiAgICBhZmFyOiAnYWEnLFxuICAgIGFia2hhemlhbjogJ2FiJyxcbiAgICBhZnJpa2FhbnM6ICdhZicsXG4gICAgYWthbjogJ2FrJyxcbiAgICBhbGJhbmlhbjogJ3NxJyxcbiAgICBhbWhhcmljOiAnYW0nLFxuICAgIGFyYWJpYzogJ2FyJyxcbiAgICBhcmFnb25lc2U6ICdhbicsXG4gICAgYXJtZW5pYW46ICdoeScsXG4gICAgYXNzYW1lc2U6ICdhcycsXG4gICAgYXZhcmljOiAnYXYnLFxuICAgIGF2ZXN0YW46ICdhZScsXG4gICAgYXltYXJhOiAnYXknLFxuICAgIGF6ZXJiYWlqYW5pOiAnYXonLFxuICAgIGJhc2hraXI6ICdiYScsXG4gICAgYmFtYmFyYTogJ2JtJyxcbiAgICBiYXNxdWU6ICdldScsXG4gICAgYmVsYXJ1c2lhbjogJ2JlJyxcbiAgICBiZW5nYWxpOiAnYm4nLFxuICAgICdiaWhhcmkgbGFuZ3VhZ2VzJzogJ2JoJyxcbiAgICBiaXNsYW1hOiAnYmknLFxuICAgIHRpYmV0YW46ICdibycsXG4gICAgYm9zbmlhbjogJ2JzJyxcbiAgICBicmV0b246ICdicicsXG4gICAgYnVsZ2FyaWFuOiAnYmcnLFxuICAgIGJ1cm1lc2U6ICdteScsXG4gICAgY2F0YWxhbjogJ2NhJyxcbiAgICB2YWxlbmNpYW46ICdjYScsXG4gICAgY3plY2g6ICdjcycsXG4gICAgY2hhbW9ycm86ICdjaCcsXG4gICAgY2hlY2hlbjogJ2NlJyxcbiAgICBjaGluZXNlOiAnemgnLFxuICAgICdjaHVyY2ggc2xhdmljJzogJ2N1JyxcbiAgICAnb2xkIHNsYXZvbmljJzogJ2N1JyxcbiAgICAnY2h1cmNoIHNsYXZvbmljJzogJ2N1JyxcbiAgICAnb2xkIGJ1bGdhcmlhbic6ICdjdScsXG4gICAgJ29sZCBjaHVyY2ggc2xhdm9uaWMnOiAnY3UnLFxuICAgIGNodXZhc2g6ICdjdicsXG4gICAgY29ybmlzaDogJ2t3JyxcbiAgICBjb3JzaWNhbjogJ2NvJyxcbiAgICBjcmVlOiAnY3InLFxuICAgIHdlbHNoOiAnY3knLFxuICAgIGRhbmlzaDogJ2RhJyxcbiAgICBnZXJtYW46ICdkZScsXG4gICAgZGl2ZWhpOiAnZHYnLFxuICAgIGRoaXZlaGk6ICdkdicsXG4gICAgbWFsZGl2aWFuOiAnZHYnLFxuICAgIGR1dGNoOiAnbmwnLFxuICAgIGZsZW1pc2g6ICdubCcsXG4gICAgZHpvbmdraGE6ICdkeicsXG4gICAgZ3JlZWs6ICdlbCcsXG4gICAgZW5nbGlzaDogJ2VuJyxcbiAgICBlc3BlcmFudG86ICdlbycsXG4gICAgZXN0b25pYW46ICdldCcsXG4gICAgZXdlOiAnZWUnLFxuICAgIGZhcm9lc2U6ICdmbycsXG4gICAgcGVyc2lhbjogJ2ZhJyxcbiAgICBmaWppYW46ICdmaicsXG4gICAgZmlubmlzaDogJ2ZpJyxcbiAgICBmcmVuY2g6ICdmcicsXG4gICAgJ3dlc3Rlcm4gZnJpc2lhbic6ICdmeScsXG4gICAgZnVsYWg6ICdmZicsXG4gICAgZ2VvcmdpYW46ICdrYScsXG4gICAgZ2FlbGljOiAnZ2QnLFxuICAgICdzY290dGlzaCBnYWVsaWMnOiAnZ2QnLFxuICAgIGlyaXNoOiAnZ2EnLFxuICAgIGdhbGljaWFuOiAnZ2wnLFxuICAgIG1hbng6ICdndicsXG4gICAgZ3VhcmFuaTogJ2duJyxcbiAgICBndWphcmF0aTogJ2d1JyxcbiAgICBoYWl0aWFuOiAnaHQnLFxuICAgICdoYWl0aWFuIGNyZW9sZSc6ICdodCcsXG4gICAgaGF1c2E6ICdoYScsXG4gICAgaGVicmV3OiAnaGUnLFxuICAgIGhlcmVybzogJ2h6JyxcbiAgICBoaW5kaTogJ2hpJyxcbiAgICAnaGlyaSBtb3R1JzogJ2hvJyxcbiAgICBjcm9hdGlhbjogJ2hyJyxcbiAgICBodW5nYXJpYW46ICdodScsXG4gICAgaWdibzogJ2lnJyxcbiAgICBpY2VsYW5kaWM6ICdpcycsXG4gICAgaWRvOiAnaW8nLFxuICAgICdzaWNodWFuIHlpJzogJ2lpJyxcbiAgICBudW9zdTogJ2lpJyxcbiAgICBpbnVrdGl0dXQ6ICdpdScsXG4gICAgaW50ZXJsaW5ndWU6ICdpZScsXG4gICAgb2NjaWRlbnRhbDogJ2llJyxcbiAgICBpbnRlcmxpbmd1YTogJ2lhJyxcbiAgICBpbmRvbmVzaWFuOiAnaWQnLFxuICAgIGludXBpYXE6ICdpaycsXG4gICAgaXRhbGlhbjogJ2l0JyxcbiAgICBqYXZhbmVzZTogJ2p2JyxcbiAgICBqYXBhbmVzZTogJ2phJyxcbiAgICBrYWxhYWxsaXN1dDogJ2tsJyxcbiAgICBncmVlbmxhbmRpYzogJ2tsJyxcbiAgICBrYW5uYWRhOiAna24nLFxuICAgIGthc2htaXJpOiAna3MnLFxuICAgIGthbnVyaTogJ2tyJyxcbiAgICBrYXpha2g6ICdraycsXG4gICAgJ2NlbnRyYWwga2htZXInOiAna20nLFxuICAgIGtpa3V5dTogJ2tpJyxcbiAgICBnaWt1eXU6ICdraScsXG4gICAga2lueWFyd2FuZGE6ICdydycsXG4gICAga2lyZ2hpejogJ2t5JyxcbiAgICBreXJneXo6ICdreScsXG4gICAga29taTogJ2t2JyxcbiAgICBrb25nbzogJ2tnJyxcbiAgICBrb3JlYW46ICdrbycsXG4gICAga3VhbnlhbWE6ICdraicsXG4gICAga3dhbnlhbWE6ICdraicsXG4gICAga3VyZGlzaDogJ2t1JyxcbiAgICBsYW86ICdsbycsXG4gICAgbGF0aW46ICdsYScsXG4gICAgbGF0dmlhbjogJ2x2JyxcbiAgICBsaW1idXJnYW46ICdsaScsXG4gICAgbGltYnVyZ2VyOiAnbGknLFxuICAgIGxpbWJ1cmdpc2g6ICdsaScsXG4gICAgbGluZ2FsYTogJ2xuJyxcbiAgICBsaXRodWFuaWFuOiAnbHQnLFxuICAgIGx1eGVtYm91cmdpc2g6ICdsYicsXG4gICAgbGV0emVidXJnZXNjaDogJ2xiJyxcbiAgICAnbHViYS1rYXRhbmdhJzogJ2x1JyxcbiAgICBnYW5kYTogJ2xnJyxcbiAgICBtYWNlZG9uaWFuOiAnbWsnLFxuICAgIG1hcnNoYWxsZXNlOiAnbWgnLFxuICAgIG1hbGF5YWxhbTogJ21sJyxcbiAgICBtYW9yaTogJ21pJyxcbiAgICBtYXJhdGhpOiAnbXInLFxuICAgIG1hbGF5OiAnbXMnLFxuICAgIG1hbGFnYXN5OiAnbWcnLFxuICAgIG1hbHRlc2U6ICdtdCcsXG4gICAgbW9uZ29saWFuOiAnbW4nLFxuICAgIG5hdXJ1OiAnbmEnLFxuICAgIG5hdmFqbzogJ252JyxcbiAgICBuYXZhaG86ICdudicsXG4gICAgJ25kZWJlbGUsIHNvdXRoJzogJ25yJyxcbiAgICAnc291dGggbmRlYmVsZSc6ICducicsXG4gICAgJ25kZWJlbGUsIG5vcnRoJzogJ25kJyxcbiAgICAnbm9ydGggbmRlYmVsZSc6ICduZCcsXG4gICAgbmRvbmdhOiAnbmcnLFxuICAgIG5lcGFsaTogJ25lJyxcbiAgICAnbm9yd2VnaWFuIG55bm9yc2snOiAnbm4nLFxuICAgICdueW5vcnNrLCBub3J3ZWdpYW4nOiAnbm4nLFxuICAgICdub3J3ZWdpYW4gYm9rbcOlbCc6ICduYicsXG4gICAgJ2Jva23DpWwsIG5vcndlZ2lhbic6ICduYicsXG4gICAgbm9yd2VnaWFuOiAnbm8nLFxuICAgIGNoaWNoZXdhOiAnbnknLFxuICAgIGNoZXdhOiAnbnknLFxuICAgIG55YW5qYTogJ255JyxcbiAgICBvY2NpdGFuOiAnb2MnLFxuICAgIG9qaWJ3YTogJ29qJyxcbiAgICBvcml5YTogJ29yJyxcbiAgICBvcm9tbzogJ29tJyxcbiAgICBvc3NldGlhbjogJ29zJyxcbiAgICBvc3NldGljOiAnb3MnLFxuICAgIHBhbmphYmk6ICdwYScsXG4gICAgcHVuamFiaTogJ3BhJyxcbiAgICBwYWxpOiAncGknLFxuICAgIHBvbGlzaDogJ3BsJyxcbiAgICBwb3J0dWd1ZXNlOiAncHQnLFxuICAgIHB1c2h0bzogJ3BzJyxcbiAgICBwYXNodG86ICdwcycsXG4gICAgcXVlY2h1YTogJ3F1JyxcbiAgICByb21hbnNoOiAncm0nLFxuICAgIHJvbWFuaWFuOiAncm8nLFxuICAgIG1vbGRhdmlhbjogJ3JvJyxcbiAgICBtb2xkb3ZhbjogJ3JvJyxcbiAgICBydW5kaTogJ3JuJyxcbiAgICBydXNzaWFuOiAncnUnLFxuICAgIHNhbmdvOiAnc2cnLFxuICAgIHNhbnNrcml0OiAnc2EnLFxuICAgIHNpbmhhbGE6ICdzaScsXG4gICAgc2luaGFsZXNlOiAnc2knLFxuICAgIHNsb3ZhazogJ3NrJyxcbiAgICBzbG92ZW5pYW46ICdzbCcsXG4gICAgJ25vcnRoZXJuIHNhbWknOiAnc2UnLFxuICAgIHNhbW9hbjogJ3NtJyxcbiAgICBzaG9uYTogJ3NuJyxcbiAgICBzaW5kaGk6ICdzZCcsXG4gICAgc29tYWxpOiAnc28nLFxuICAgICdzb3Robywgc291dGhlcm4nOiAnc3QnLFxuICAgIHNwYW5pc2g6ICdlcycsXG4gICAgY2FzdGlsaWFuOiAnZXMnLFxuICAgIHNhcmRpbmlhbjogJ3NjJyxcbiAgICBzZXJiaWFuOiAnc3InLFxuICAgIHN3YXRpOiAnc3MnLFxuICAgIHN1bmRhbmVzZTogJ3N1JyxcbiAgICBzd2FoaWxpOiAnc3cnLFxuICAgIHN3ZWRpc2g6ICdzdicsXG4gICAgdGFoaXRpYW46ICd0eScsXG4gICAgdGFtaWw6ICd0YScsXG4gICAgdGF0YXI6ICd0dCcsXG4gICAgdGVsdWd1OiAndGUnLFxuICAgIHRhamlrOiAndGcnLFxuICAgIHRhZ2Fsb2c6ICd0bCcsXG4gICAgdGhhaTogJ3RoJyxcbiAgICB0aWdyaW55YTogJ3RpJyxcbiAgICB0b25nYTogJ3RvJyxcbiAgICB0c3dhbmE6ICd0bicsXG4gICAgdHNvbmdhOiAndHMnLFxuICAgIHR1cmttZW46ICd0aycsXG4gICAgdHVya2lzaDogJ3RyJyxcbiAgICB0d2k6ICd0dycsXG4gICAgdWlnaHVyOiAndWcnLFxuICAgIHV5Z2h1cjogJ3VnJyxcbiAgICB1a3JhaW5pYW46ICd1aycsXG4gICAgdXJkdTogJ3VyJyxcbiAgICB1emJlazogJ3V6JyxcbiAgICB2ZW5kYTogJ3ZlJyxcbiAgICB2aWV0bmFtZXNlOiAndmknLFxuICAgIHZvbGFww7xrOiAndm8nLFxuICAgIHdhbGxvb246ICd3YScsXG4gICAgd29sb2Y6ICd3bycsXG4gICAgeGhvc2E6ICd4aCcsXG4gICAgeWlkZGlzaDogJ3lpJyxcbiAgICB5b3J1YmE6ICd5bycsXG4gICAgemh1YW5nOiAnemEnLFxuICAgIGNodWFuZzogJ3phJyxcbiAgICB6dWx1OiAnenUnLFxuICB9IGFzIGNvbnN0O1xuLy8gQHRzLWlnbm9yZVxuY29uc3QgaXNvS2V5cyA9IE9iamVjdC52YWx1ZXMoaXNvKS5zb3J0KCk7XG52YXIgbGFuZ3VhZ2VzID0gZSA9PiB7XG4gIGlmICgnc3RyaW5nJyAhPSB0eXBlb2YgZSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBcImxhbmd1YWdlXCIgbXVzdCBiZSBhIHN0cmluZywgcmVjZWl2ZWQgJyArIHR5cGVvZiBlKTtcbiAgaWYgKGUubGVuZ3RoID4gMTAwKVxuICAgIHRocm93IG5ldyBFcnJvcihgVGhlIFwibGFuZ3VhZ2VcIiBpcyB0b28gbG9uZyBhdCAke2UubGVuZ3RofSBjaGFyYWN0ZXJzYCk7XG4gIGlmIChcbiAgICAoKGUgPSBlLnRvTG93ZXJDYXNlKCkpLCAoZSA9IG5hbWVzW2VdIHx8IGlzb1tlXSB8fCBlKSwgIWlzb0tleXMuaW5jbHVkZXMoZSkpXG4gIClcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBsYW5ndWFnZSBcIiR7ZX1cIiBpcyBub3QgcGFydCBvZiB0aGUgSVNPIDYzOS0xYCk7XG4gIHJldHVybiBlO1xufTtcblxuZnVuY3Rpb24gQ2FjaGUoKSB7XG4gIHZhciBlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgZnVuY3Rpb24gYShhKSB7XG4gICAgZGVsZXRlIGVbYV07XG4gIH1cbiAgKHRoaXMuc2V0ID0gZnVuY3Rpb24gKG4sIGksIHIpIHtcbiAgICBpZiAodm9pZCAwICE9PSByICYmICgnbnVtYmVyJyAhPSB0eXBlb2YgciB8fCBpc05hTihyKSB8fCByIDw9IDApKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYWNoZSB0aW1lb3V0IG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXInKTtcbiAgICB2YXIgdCA9IGVbbl07XG4gICAgdCAmJiBjbGVhclRpbWVvdXQodC50aW1lb3V0KTtcbiAgICB2YXIgbyA9IHsgdmFsdWU6IGksIGV4cGlyZTogciArIERhdGUubm93KCkgfTtcbiAgICByZXR1cm4gKFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaXNOYU4oby5leHBpcmUpIHx8IChvLnRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IGEobiksIHIpKSwgKGVbbl0gPSBvKSwgaVxuICAgICk7XG4gIH0pLFxuICAgICh0aGlzLmRlbCA9IGZ1bmN0aW9uIChuKSB7XG4gICAgICB2YXIgaSA9ICEwLFxuICAgICAgICByID0gZVtuXTtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHJcbiAgICAgICAgICA/IChjbGVhclRpbWVvdXQoci50aW1lb3V0KSxcbiAgICAgICAgICAgICFpc05hTihyLmV4cGlyZSkgJiYgci5leHBpcmUgPCBEYXRlLm5vdygpICYmIChpID0gITEpKVxuICAgICAgICAgIDogKGkgPSAhMSksXG4gICAgICAgIGkgJiYgYShuKSxcbiAgICAgICAgaVxuICAgICAgKTtcbiAgICB9KSxcbiAgICAodGhpcy5jbGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAodmFyIGEgaW4gZSkgY2xlYXJUaW1lb3V0KGVbYV0udGltZW91dCk7XG4gICAgICBlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB9KSxcbiAgICAodGhpcy5nZXQgPSBmdW5jdGlvbiAoYSkge1xuICAgICAgdmFyIG4gPSBlW2FdO1xuICAgICAgaWYgKHZvaWQgMCAhPT0gbikge1xuICAgICAgICBpZiAoaXNOYU4obi5leHBpcmUpIHx8IG4uZXhwaXJlID49IERhdGUubm93KCkpIHJldHVybiBuLnZhbHVlO1xuICAgICAgICBkZWxldGUgZVthXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0pO1xufVxuY29uc3QgZXhwJDEgPSBuZXcgQ2FjaGUoKTtcbmV4cCQxLkNhY2hlID0gQ2FjaGU7XG5jb25zdCBiYXNlID0gJ2h0dHBzOi8vdHJhbnNsYXRlLmdvb2dsZWFwaXMuY29tL3RyYW5zbGF0ZV9hL3NpbmdsZSc7XG52YXIgZ29vZ2xlID0ge1xuICAgIGZldGNoOiAoeyBrZXk6IGUsIGZyb206IGEsIHRvOiBuLCB0ZXh0OiBpIH0pID0+IFtcbiAgICAgIGAke2Jhc2V9P2NsaWVudD1ndHgmc2w9JHthfSZ0bD0ke259JmR0PXQmcT0ke2VuY29kZVVSSShpKX1gLFxuICAgIF0sXG4gICAgcGFyc2U6IGUgPT5cbiAgICAgIGUuanNvbigpLnRoZW4oZSA9PiB7XG4gICAgICAgIGlmICghKGUgPSBlICYmIGVbMF0gJiYgZVswXVswXSAmJiBlWzBdLm1hcChlID0+IGVbMF0pLmpvaW4oJycpKSlcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RyYW5zbGF0aW9uIG5vdCBmb3VuZCcpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pLFxuICB9LFxuICB5YW5kZXggPSB7XG4gICAgbmVlZGtleTogITAsXG4gICAgZmV0Y2g6ICh7IGtleTogZSwgZnJvbTogYSwgdG86IG4sIHRleHQ6IGkgfSkgPT4gW1xuICAgICAgYGh0dHBzOi8vdHJhbnNsYXRlLnlhbmRleC5uZXQvYXBpL3YxLjUvdHIuanNvbi90cmFuc2xhdGU/a2V5PSR7ZX0mbGFuZz0ke2F9LSR7bn0mdGV4dD0ke2VuY29kZVVSSUNvbXBvbmVudChpKX1gLFxuICAgICAgeyBtZXRob2Q6ICdQT1NUJywgYm9keTogJycgfSxcbiAgICBdLFxuICAgIHBhcnNlOiBlID0+XG4gICAgICBlLmpzb24oKS50aGVuKGUgPT4ge1xuICAgICAgICBpZiAoMjAwICE9PSBlLmNvZGUpIHRocm93IG5ldyBFcnJvcihlLm1lc3NhZ2UpO1xuICAgICAgICByZXR1cm4gZS50ZXh0WzBdO1xuICAgICAgfSksXG4gIH07XG5jb25zdCBsaWJyZVVybCA9ICdodHRwczovL2xpYnJldHJhbnNsYXRlLmNvbS90cmFuc2xhdGUnO1xudmFyIGxpYnJlID0ge1xuICAgIG5lZWRrZXk6ICExLFxuICAgIGZldGNoOiAoeyB1cmw6IGUgPSBsaWJyZVVybCwga2V5OiBhLCBmcm9tOiBuLCB0bzogaSwgdGV4dDogciB9KSA9PiBbXG4gICAgICBlLFxuICAgICAge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBxOiByLCBzb3VyY2U6IG4sIHRhcmdldDogaSwgYXBpX2tleTogYSB9KSxcbiAgICAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sXG4gICAgICB9LFxuICAgIF0sXG4gICAgcGFyc2U6IGUgPT5cbiAgICAgIGUuanNvbigpLnRoZW4oZSA9PiB7XG4gICAgICAgIGlmICghZSkgdGhyb3cgbmV3IEVycm9yKCdObyByZXNwb25zZSBmb3VuZCcpO1xuICAgICAgICBpZiAoZS5lcnJvcikgdGhyb3cgbmV3IEVycm9yKGUuZXJyb3IpO1xuICAgICAgICBpZiAoIWUudHJhbnNsYXRlZFRleHQpIHRocm93IG5ldyBFcnJvcignTm8gcmVzcG9uc2UgZm91bmQnKTtcbiAgICAgICAgcmV0dXJuIGUudHJhbnNsYXRlZFRleHQ7XG4gICAgICB9KSxcbiAgfSxcbiAgZGVlcGwgPSB7XG4gICAgbmVlZGtleTogITAsXG4gICAgZmV0Y2g6ICh7IGtleTogZSwgZnJvbTogYSwgdG86IG4sIHRleHQ6IGkgfSkgPT4gW1xuICAgICAgYGh0dHBzOi8vYXBpJHsvOmZ4JC8udGVzdChlKSA/ICctZnJlZScgOiAnJ30uZGVlcGwuY29tL3YyL3RyYW5zbGF0ZT9hdXRoX2tleT0ke2V9JnNvdXJjZV9sYW5nPSR7YX0mdGFyZ2V0X2xhbmc9JHtufSZ0ZXh0PSR7KGkgPSBlbmNvZGVVUklDb21wb25lbnQoaSkpfWAsXG4gICAgICB7IG1ldGhvZDogJ1BPU1QnLCBib2R5OiAnJyB9LFxuICAgIF0sXG4gICAgcGFyc2U6IGFzeW5jIGUgPT4ge1xuICAgICAgaWYgKCFlLm9rKSB7XG4gICAgICAgIGlmICg0MDMgPT09IGUuc3RhdHVzKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQXV0aCBFcnJvciwgcGxlYXNlIHJldmlldyB0aGUga2V5IGZvciBEZWVwTCcpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yICR7ZS5zdGF0dXN9YCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZS5qc29uKCkudGhlbihlID0+IGUudHJhbnNsYXRpb25zWzBdLnRleHQpO1xuICAgIH0sXG4gIH0sXG4gIGVuZ2luZXMgPSB7IGdvb2dsZTogZ29vZ2xlLCB5YW5kZXg6IHlhbmRleCwgbGlicmU6IGxpYnJlLCBkZWVwbDogZGVlcGwgfTtcbmNvbnN0IFRyYW5zbGF0ZSA9IGZ1bmN0aW9uIChlID0ge30pIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFRyYW5zbGF0ZSkpIHJldHVybiBuZXcgVHJhbnNsYXRlKGUpO1xuICAgIGNvbnN0IGEgPSB7XG4gICAgICAgIGZyb206ICdlbicsXG4gICAgICAgIHRvOiAnZW4nLFxuICAgICAgICBjYWNoZTogdm9pZCAwLFxuICAgICAgICBsYW5ndWFnZXM6IGxhbmd1YWdlcyxcbiAgICAgICAgZW5naW5lczogZW5naW5lcyxcbiAgICAgICAgZW5naW5lOiAnZ29vZ2xlJyxcbiAgICAgICAga2V5czoge30sXG4gICAgICB9LFxuICAgICAgbiA9IGFzeW5jIChlLCBhID0ge30pID0+IHtcbiAgICAgICAgJ3N0cmluZycgPT0gdHlwZW9mIGEgJiYgKGEgPSB7IHRvOiBhIH0pLCAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgKGEudGV4dCA9IGUpLCAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgKGEuZnJvbSA9IGxhbmd1YWdlcyhhLmZyb20gfHwgbi5mcm9tKSksIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAoYS50byA9IGxhbmd1YWdlcyhhLnRvIHx8IG4udG8pKSwgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIChhLmNhY2hlID0gYS5jYWNoZSB8fCBuLmNhY2hlKSwgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIChhLmVuZ2luZXMgPSBhLmVuZ2luZXMgfHwge30pLCAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgKGEuZW5naW5lID0gYS5lbmdpbmUgfHwgbi5lbmdpbmUpLCAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgKGEudXJsID0gYS51cmwgfHwgbi51cmwpLCAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgKGEuaWQgPSBhLmlkIHx8IGAke2EudXJsfToke2EuZnJvbX06JHthLnRvfToke2EuZW5naW5lfToke2EudGV4dH1gKSwgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIChhLmtleXMgPSBhLmtleXMgfHwgbi5rZXlzIHx8IHt9KTsgLy8gQHRzLWlnbm9yZVxuICAgICAgICBmb3IgKGxldCBlIGluIG4ua2V5cykgYS5rZXlzW2VdID0gYS5rZXlzW2VdIHx8IG4ua2V5c1tlXTsgLy8gQHRzLWlnbm9yZVxuICAgICAgICBhLmtleSA9IGEua2V5IHx8IG4ua2V5IHx8IGEua2V5c1thLmVuZ2luZV07IC8vIEB0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgaSA9IGEuZW5naW5lc1thLmVuZ2luZV0gfHwgbi5lbmdpbmVzW2EuZW5naW5lXSwgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHIgPSBleHAkMS5nZXQoYS5pZCk7XG4gICAgICAgIGlmIChyKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHIpOyAvLyBAdHMtaWdub3JlXG4gICAgICAgIGlmIChhLnRvID09PSBhLmZyb20pIHJldHVybiBQcm9taXNlLnJlc29sdmUoYS50ZXh0KTsgLy8gQHRzLWlnbm9yZVxuICAgICAgICBpZiAoaS5uZWVka2V5ICYmICFhLmtleSlcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBgVGhlIGVuZ2luZSBcIiR7YS5lbmdpbmV9XCIgbmVlZHMgYSBrZXksIHBsZWFzZSBwcm92aWRlIGl0YCxcbiAgICAgICAgICApO1xuICAgICAgICBjb25zdCB0ID0gaS5mZXRjaChhKTsgLy8gQHRzLWlnbm9yZVxuICAgICAgICByZXR1cm4gZmV0Y2goLi4udClcbiAgICAgICAgICAudGhlbihpLnBhcnNlKSAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgLnRoZW4oZSA9PiBleHAkMS5zZXQoYS5pZCwgZSwgYS5jYWNoZSkpO1xuICAgICAgfTtcbiAgICBmb3IgKGxldCBpIGluIGEpIG5baV0gPSB2b2lkIDAgPT09IGVbaV0gPyBhW2ldIDogZVtpXTtcbiAgICByZXR1cm4gbjtcbiAgfSwgLy8gQHRzLWlnbm9yZVxuICBleHAgPSBuZXcgVHJhbnNsYXRlKCk7XG5leHAuVHJhbnNsYXRlID0gVHJhbnNsYXRlO1xuZXhwb3J0IHR5cGUgTGFuZ1R5cGUgPSAodHlwZW9mIG5hbWVzKVtrZXlvZiB0eXBlb2YgbmFtZXNdO1xuZXhwb3J0IGNvbnN0IHRyYW5zbGF0ZSA9IGV4cCBhcyAoXG4gIHRleHRUb1RyYW5zbGF0ZTogc3RyaW5nLFxuICBvcHRpb25zOiB7IHRvOiBMYW5nVHlwZTsgZnJvbTogTGFuZ1R5cGUgfSxcbikgPT4gc3RyaW5nO1xuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dG5wLWhlbHBlcnMgbGliL2Jhc2UvdHJhbnNsYXRlLnRzIl19
|