valyrian.js 6.0.13 → 6.0.14
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/dist/hooks/index.d.ts +1 -2
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +21 -7
- package/dist/hooks/index.mjs +21 -7
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/index.mjs +1 -2
- package/dist/node/index.d.ts +1 -1
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +18 -22
- package/dist/node/index.mjs +18 -22
- package/dist/node/utils/icons.d.ts +1 -1
- package/dist/node/utils/icons.d.ts.map +1 -1
- package/dist/request/index.d.ts +2 -2
- package/dist/request/index.d.ts.map +1 -1
- package/dist/request/index.js +1 -2
- package/dist/request/index.min.js +1 -1
- package/dist/request/index.min.js.map +1 -1
- package/dist/request/index.mjs +1 -2
- package/dist/router/index.d.ts +2 -2
- package/dist/router/index.d.ts.map +1 -1
- package/dist/router/index.js +1 -2
- package/dist/router/index.min.js +1 -1
- package/dist/router/index.min.js.map +1 -1
- package/dist/router/index.mjs +1 -2
- package/dist/signal/index.d.ts.map +1 -1
- package/dist/signal/index.js +10 -0
- package/dist/signal/index.min.js +1 -1
- package/dist/signal/index.min.js.map +1 -1
- package/dist/signal/index.mjs +10 -0
- package/dist/store/index.d.ts +2 -2
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +7 -3
- package/dist/store/index.min.js +1 -1
- package/dist/store/index.min.js.map +1 -1
- package/dist/store/index.mjs +7 -3
- package/dist/sw/index.d.ts +1 -2
- package/dist/sw/index.d.ts.map +1 -1
- package/dist/sw/index.js +1 -2
- package/dist/sw/index.mjs +1 -2
- package/lib/hooks/index.ts +22 -9
- package/lib/index.ts +1 -3
- package/lib/node/index.ts +1 -1
- package/lib/node/utils/icons.ts +17 -22
- package/lib/request/index.ts +1 -3
- package/lib/router/index.ts +1 -3
- package/lib/signal/index.ts +13 -0
- package/lib/store/index.ts +8 -4
- package/lib/sw/index.ts +1 -3
- package/package.json +16 -16
package/dist/hooks/index.d.ts
CHANGED
|
@@ -16,6 +16,5 @@ export declare const useEffect: (...args: any[]) => any;
|
|
|
16
16
|
export declare const useRef: (...args: any[]) => any;
|
|
17
17
|
export declare const useCallback: (...args: any[]) => any;
|
|
18
18
|
export declare const useMemo: (...args: any[]) => any;
|
|
19
|
-
declare function plugin(v: Valyrian): void;
|
|
20
|
-
export default plugin;
|
|
19
|
+
export declare function plugin(v: Valyrian): void;
|
|
21
20
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,QAAQ,EAAmC,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,QAAQ,EAAmC,MAAM,UAAU,CAAC;AAgChF,oBAAY,IAAI,GAAG,GAAG,CAAC;AAEvB,MAAM,WAAW,cAAc;IAE7B,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;IAElC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;IAE/C,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,GAAG,CAAC;IAEhC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,GAAG,CAAC;IAE/B,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,GAAG,CAAC;CACnC;AAED,MAAM,WAAW,UAAU;IAEzB,CAAC,cAAc,EAAE,cAAc,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;CAC3D;AAED,eAAO,MAAM,UAAU,YA2EG,CAAC;AAS3B,eAAO,MAAM,QAAQ,YAvFyB,GAAG,EAAE,KAAK,GAuGtD,CAAC;AAGH,eAAO,MAAM,SAAS,YA1GwB,GAAG,EAAE,KAAK,GA8JtD,CAAC;AAEH,eAAO,MAAM,MAAM,YAhK2B,GAAG,EAAE,KAAK,GAuKtD,CAAC;AAEH,eAAO,MAAM,WAAW,YAzKsB,GAAG,EAAE,KAAK,GAuLtD,CAAC;AAEH,eAAO,MAAM,OAAO,YAzL0B,GAAG,EAAE,KAAK,GAyMtD,CAAC;AAEH,wBAAgB,MAAM,CAAC,CAAC,EAAE,QAAQ,QAEjC"}
|
package/dist/hooks/index.js
CHANGED
|
@@ -21,7 +21,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
21
21
|
var hooks_exports = {};
|
|
22
22
|
__export(hooks_exports, {
|
|
23
23
|
createHook: () => createHook,
|
|
24
|
-
|
|
24
|
+
plugin: () => plugin,
|
|
25
25
|
useCallback: () => useCallback,
|
|
26
26
|
useEffect: () => useEffect,
|
|
27
27
|
useMemo: () => useMemo,
|
|
@@ -35,13 +35,15 @@ var localValyrian = {
|
|
|
35
35
|
vnode: null,
|
|
36
36
|
oldVnode: null
|
|
37
37
|
},
|
|
38
|
-
onUnmount
|
|
38
|
+
onUnmount() {
|
|
39
39
|
},
|
|
40
|
-
onCleanup
|
|
40
|
+
onCleanup() {
|
|
41
41
|
},
|
|
42
|
-
onMount
|
|
42
|
+
onMount() {
|
|
43
43
|
},
|
|
44
|
-
onUpdate
|
|
44
|
+
onUpdate() {
|
|
45
|
+
},
|
|
46
|
+
update() {
|
|
45
47
|
}
|
|
46
48
|
};
|
|
47
49
|
var createHook = function createHook2({ onCreate, onUpdate, onCleanup, onRemove, returnValue }) {
|
|
@@ -86,12 +88,25 @@ var createHook = function createHook2({ onCreate, onUpdate, onCleanup, onRemove,
|
|
|
86
88
|
return hook;
|
|
87
89
|
};
|
|
88
90
|
};
|
|
91
|
+
var updateTimeout;
|
|
92
|
+
function delayedUpdate() {
|
|
93
|
+
clearTimeout(updateTimeout);
|
|
94
|
+
updateTimeout = setTimeout(localValyrian.update);
|
|
95
|
+
}
|
|
89
96
|
var useState = createHook({
|
|
90
97
|
onCreate: (value) => {
|
|
91
98
|
let stateObj = /* @__PURE__ */ Object.create(null);
|
|
92
99
|
stateObj.value = value;
|
|
93
100
|
stateObj.toJSON = stateObj.toString = stateObj.valueOf = () => typeof stateObj.value === "function" ? stateObj.value() : stateObj.value;
|
|
94
|
-
return [
|
|
101
|
+
return [
|
|
102
|
+
stateObj,
|
|
103
|
+
(value2) => {
|
|
104
|
+
if (stateObj.value !== value2) {
|
|
105
|
+
stateObj.value = value2;
|
|
106
|
+
delayedUpdate();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
];
|
|
95
110
|
}
|
|
96
111
|
});
|
|
97
112
|
var useEffect = createHook({
|
|
@@ -179,4 +194,3 @@ var useMemo = createHook({
|
|
|
179
194
|
function plugin(v) {
|
|
180
195
|
localValyrian = v;
|
|
181
196
|
}
|
|
182
|
-
var hooks_default = plugin;
|
package/dist/hooks/index.mjs
CHANGED
|
@@ -5,13 +5,15 @@ var localValyrian = {
|
|
|
5
5
|
vnode: null,
|
|
6
6
|
oldVnode: null
|
|
7
7
|
},
|
|
8
|
-
onUnmount
|
|
8
|
+
onUnmount() {
|
|
9
9
|
},
|
|
10
|
-
onCleanup
|
|
10
|
+
onCleanup() {
|
|
11
11
|
},
|
|
12
|
-
onMount
|
|
12
|
+
onMount() {
|
|
13
13
|
},
|
|
14
|
-
onUpdate
|
|
14
|
+
onUpdate() {
|
|
15
|
+
},
|
|
16
|
+
update() {
|
|
15
17
|
}
|
|
16
18
|
};
|
|
17
19
|
var createHook = function createHook2({ onCreate, onUpdate, onCleanup, onRemove, returnValue }) {
|
|
@@ -56,12 +58,25 @@ var createHook = function createHook2({ onCreate, onUpdate, onCleanup, onRemove,
|
|
|
56
58
|
return hook;
|
|
57
59
|
};
|
|
58
60
|
};
|
|
61
|
+
var updateTimeout;
|
|
62
|
+
function delayedUpdate() {
|
|
63
|
+
clearTimeout(updateTimeout);
|
|
64
|
+
updateTimeout = setTimeout(localValyrian.update);
|
|
65
|
+
}
|
|
59
66
|
var useState = createHook({
|
|
60
67
|
onCreate: (value) => {
|
|
61
68
|
let stateObj = /* @__PURE__ */ Object.create(null);
|
|
62
69
|
stateObj.value = value;
|
|
63
70
|
stateObj.toJSON = stateObj.toString = stateObj.valueOf = () => typeof stateObj.value === "function" ? stateObj.value() : stateObj.value;
|
|
64
|
-
return [
|
|
71
|
+
return [
|
|
72
|
+
stateObj,
|
|
73
|
+
(value2) => {
|
|
74
|
+
if (stateObj.value !== value2) {
|
|
75
|
+
stateObj.value = value2;
|
|
76
|
+
delayedUpdate();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
];
|
|
65
80
|
}
|
|
66
81
|
});
|
|
67
82
|
var useEffect = createHook({
|
|
@@ -149,10 +164,9 @@ var useMemo = createHook({
|
|
|
149
164
|
function plugin(v) {
|
|
150
165
|
localValyrian = v;
|
|
151
166
|
}
|
|
152
|
-
var hooks_default = plugin;
|
|
153
167
|
export {
|
|
154
168
|
createHook,
|
|
155
|
-
|
|
169
|
+
plugin,
|
|
156
170
|
useCallback,
|
|
157
171
|
useEffect,
|
|
158
172
|
useMemo,
|
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,5 @@ import { Valyrian, VnodeComponentInterface, VnodeInterface, VnodeTextInterface }
|
|
|
3
3
|
export declare const Vnode: VnodeInterface;
|
|
4
4
|
export declare const VnodeText: VnodeTextInterface;
|
|
5
5
|
export declare const VnodeComponent: VnodeComponentInterface;
|
|
6
|
-
declare const v: Valyrian;
|
|
7
|
-
export default v;
|
|
6
|
+
export declare const v: Valyrian;
|
|
8
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":";AAKA,OAAO,EASL,QAAQ,EAER,uBAAuB,EACvB,cAAc,EACd,kBAAkB,EAEnB,MAAM,UAAU,CAAC;AAiDlB,eAAO,MAAM,KAAK,gBAIY,CAAC;AAE/B,eAAO,MAAM,SAAS,oBAEY,CAAC;AAEnC,eAAO,MAAM,cAAc,yBASY,CAAC;AA8BxC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":";AAKA,OAAO,EASL,QAAQ,EAER,uBAAuB,EACvB,cAAc,EACd,kBAAkB,EAEnB,MAAM,UAAU,CAAC;AAiDlB,eAAO,MAAM,KAAK,gBAIY,CAAC;AAE/B,eAAO,MAAM,SAAS,oBAEY,CAAC;AAEnC,eAAO,MAAM,cAAc,yBASY,CAAC;AA8BxC,eAAO,MAAM,CAAC,EAAE,QAMf,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -23,7 +23,7 @@ __export(lib_exports, {
|
|
|
23
23
|
Vnode: () => Vnode,
|
|
24
24
|
VnodeComponent: () => VnodeComponent,
|
|
25
25
|
VnodeText: () => VnodeText,
|
|
26
|
-
|
|
26
|
+
v: () => v
|
|
27
27
|
});
|
|
28
28
|
module.exports = __toCommonJS(lib_exports);
|
|
29
29
|
var current = {};
|
|
@@ -551,4 +551,3 @@ v.directives = directives;
|
|
|
551
551
|
v.reservedProps = reservedProps;
|
|
552
552
|
v.current = current;
|
|
553
553
|
v.setAttribute = setAttribute;
|
|
554
|
-
var lib_default = v;
|
package/dist/index.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{var e={},o=[],n=[],t=[],
|
|
1
|
+
(()=>{var e={},o=[],n=[],t=[],i=[],r=()=>"",d={};function p(e){let o=e.target,n=`v-on${e.type}`;for(;o;){if(o[n])return o[n](e,o),void(e.defaultPrevented||f.update());o=o.parentNode}}var l={key:!0,state:!0,oncreate:!0,onupdate:!0,onremove:!0,shouldupdate:!0,"v-once":!0,"v-if":!0,"v-unless":!0,"v-for":!0,"v-show":!0,"v-class":!0,"v-html":!0,"v-model":!0};function s(e,o=!1){return o?document.createElementNS("http://www.w3.org/2000/svg",e):document.createElement(e)}var a=function(e,o,n){this.tag=e,this.props=o,this.children=n},c=function(e){this.nodeValue=e},u=function(e,o,n){this.component=e,this.props=o,this.children=n};function m(e){let o=[];for(let n=0;n<e.childNodes.length;n++){let t=e.childNodes[n];if(3!==t.nodeType)1===t.nodeType&&o.push(m(t));else{let e=new c(t.nodeValue);e.dom=t,o.push(e)}}let n={};for(let o=0;o<e.attributes.length;o++){let t=e.attributes[o];n[t.nodeName]=t.nodeValue}let t=new a(e.tagName.toLowerCase(),n,o);return t.dom=e,t}var f=(e,o,...n)=>"string"==typeof e?new a(e,o||{},n):new u(e,o||{},n);function h(e){for(let o=0;o<e.length;o++)e[o]();e.length=0}function v(e,o,n){if(l[e])return C[e]?C[e](o.props[e],o,n):void 0;let t=o.props[e],i=o.dom;if("function"==typeof t)return d[e]||(f.mainVnode.dom.addEventListener(e.slice(2),p),d[e]=!0),void(i[`v-${e}`]=t);!(e in i)||o.isSVG?n&&t===n.props[e]||(!1===t?i.removeAttribute(e):i.setAttribute(e,t)):i[e]!=t&&(i[e]=t)}function g(e,o,n,t){n.props[e]=o,v(e,n,t)}function V(e,o){for(let n in e.props)if(!1===v(n,e,o))return;if(o)for(let n in o.props)n in e.props!=!1||"function"==typeof o.props[n]||l[n]||(n in e.dom&&!1===e.isSVG?e.dom[n]=null:e.dom.removeAttribute(n))}f.fragment=(e,...o)=>o,f.trust=e=>{let o=s("div");return o.innerHTML=e.trim(),[].map.call(o.childNodes,e=>m(e))},f.isVnode=e=>e instanceof a,f.isVnodeComponent=e=>e instanceof u,f.isValyrianComponent=e=>Boolean(e&&"object"==typeof e&&"view"in e),f.isComponent=e=>Boolean(e&&"function"==typeof e||f.isValyrianComponent(e)||f.isVnodeComponent(e)),f.onCleanup=e=>{-1===o.indexOf(e)&&o.push(e)},f.onUnmount=e=>{-1===i.indexOf(e)&&i.push(e)},f.onMount=e=>{-1===n.indexOf(e)&&n.push(e)},f.onUpdate=e=>{-1===t.indexOf(e)&&t.push(e)};var y=e=>{for(let o=0,n=e.children.length;o<n;o++)e.children[o]instanceof a&&y(e.children[o]);e.props.onremove&&e.props.onremove(e)};f.patch=(o,n)=>{let t=n?.children||[],i=o.children,r=t.length;if(e.vnode=o,e.oldVnode=n,i[0]instanceof a&&t[0]instanceof a&&"key"in i[0].props&&"key"in t[0].props){let e=i.length,n={};for(let e=0;e<r;e++)n[t[e].props.key]=e;let d={};for(let o=0;o<e;o++)d[i[o].props.key]=o;for(let r=0;r<e;r++){let e=i[r],p=t[n[e.props.key]],l=!0;p?(e.dom=p.dom,e.props["v-once"]||e.props.shouldupdate&&!1===e.props.shouldupdate(e,p)?(e.children=p.children,l=!1):(V(e,p),f.isMounted?e.props.onupdate&&e.props.onupdate(e,p):e.props.oncreate&&e.props.oncreate(e))):(e.dom=s(e.tag,e.isSVG),V(e),e.props.oncreate&&e.props.oncreate(e)),o.dom.childNodes[r]?o.dom.childNodes[r]!==e.dom&&(t[r]&&!d[t[r].props.key]&&y(t[r]),o.dom.replaceChild(e.dom,o.dom.childNodes[r])):o.dom.appendChild(e.dom),l&&f.patch(e,p)}for(let o=e;o<r;o++)if(!d[t[o].props.key]){let e=t[o];y(e),e.dom.parentNode&&e.dom.parentNode.removeChild(e.dom)}return}for(let n=0;n<i.length;n++){let r=i[n];if(r instanceof a){let e=t[n];if(r.isSVG=o.isSVG||"svg"===r.tag,!e){r.dom=s(r.tag,r.isSVG),V(r),r.props.oncreate&&r.props.oncreate(r),f.patch(r),o.dom.appendChild(r.dom);continue}if(r.tag===e.tag){if(r.dom=e.dom,r.props["v-once"]||r.props.shouldupdate&&!1===r.props.shouldupdate(r,e)){r.children=e.children;continue}V(r,e),f.isMounted?r.props.onupdate&&r.props.onupdate(r,e):r.props.oncreate&&r.props.oncreate(r),f.patch(r,e);continue}r.dom=s(r.tag,r.isSVG),V(r),r.props.oncreate&&r.props.oncreate(r),e instanceof a&&y(e),o.dom.replaceChild(r.dom,e.dom),f.patch(r);continue}if(null==r){i.splice(n--,1);continue}if(Array.isArray(r)){i.splice(n--,1,...r);continue}if(r instanceof u){e.component=r.component,i.splice(n--,1,(r.component.view?r.component.view.bind(r.component):r.component.bind(r.component))(r.props,...r.children));continue}if(r instanceof c==!1&&(i[n]=r=new c(String(r))),i[n-1]instanceof c){i[n-1].dom.nodeValue+=r.nodeValue,i[n-1].nodeValue+=r.nodeValue,i.splice(n--,1);continue}let d=t[n];d?d instanceof c?(r.dom=d.dom,r.nodeValue!=r.dom.nodeValue&&(r.dom.nodeValue=r.nodeValue)):(r.dom=document.createTextNode(r.nodeValue),y(d),o.dom.replaceChild(r.dom,d.dom)):(r.dom=document.createTextNode(r.nodeValue),o.dom.appendChild(r.dom))}let d=i.length;if(0!==d)for(let e=r-1;e>=d;--e)t[e]instanceof a&&y(t[e]),t[e].dom.parentNode&&t[e].dom.parentNode.removeChild(t[e].dom);else{for(let e=r;e--;)t[e]instanceof a&&y(t[e]);o.dom.textContent=""}},f.update=()=>{if(f.mainVnode){o.length&&h(o);let e=f.mainVnode,i=new a(e.tag,e.props,[f.component instanceof u?f.component:f(f.component,null)]);if(i.dom=e.dom,i.isSVG=e.isSVG,f.mainVnode=i,f.patch(i,e),!1===f.isMounted?(n.length&&h(n),f.isMounted=!0):t.length&&h(t),f.isNodeJs)return i.dom.innerHTML}},f.unmount=()=>{if(f.mainVnode){o.length&&h(o),i.length&&h(i),f.component=r;let e=f.update();return f.mainVnode=null,f.component=null,f.isMounted=!1,e}},f.mount=(e,o)=>{let n;return f.isMounted&&f.unmount(),n=f.isNodeJs?"string"==typeof e?s(e,"svg"===e):e:"string"==typeof e?document.querySelectorAll(e)[0]:e,f.mainVnode=m(n),f.mainVnode.isSVG="svg"===f.mainVnode.tag,f.component=o,f.update()};var N=new Map;f.use=(e,o)=>{if(N.has(e))return N.get(e);let n=e(f,o);return N.set(e,n),n};var w=e=>(o,n,t)=>{if(e?o:!o){let e=document.createTextNode("");return t&&t.dom&&t.dom.parentNode&&(t instanceof a&&y(t),t.dom.parentNode.replaceChild(e,t.dom)),n.tag="#text",n.children=[],n.props={},n.dom=e,!1}},C={"v-if":w(!1),"v-unless":w(!0),"v-for":(e,o)=>{o.children=e.map(o.children[0])},"v-show":(e,o)=>{o.dom.style.display=e?"":"none"},"v-class":(e,o)=>{for(let n in e)o.dom.classList.toggle(n,e[n])},"v-html":(e,o)=>{o.children=[f.trust(e)]},"v-model":([e,o,n],t,i)=>{let r,d;if("input"===t.tag)switch(n=n||"oninput",t.props.type){case"checkbox":Array.isArray(e[o])?(d=n=>{let t=n.target.value,i=e[o].indexOf(t);-1===i?e[o].push(t):e[o].splice(i,1)},r=-1!==e[o].indexOf(t.dom.value)):"value"in t.props?(d=()=>{e[o]===t.props.value?e[o]=null:e[o]=t.props.value},r=e[o]===t.props.value):(d=()=>e[o]=!e[o],r=e[o]),g("checked",r,t,i);break;case"radio":g("checked",e[o]===t.dom.value,t,i);break;default:g("value",e[o],t,i)}else"select"===t.tag?(n=n||"onclick",t.props.multiple?(d=n=>{let t=n.target.value;if(n.ctrlKey){let n=e[o].indexOf(t);-1===n?e[o].push(t):e[o].splice(n,1)}else e[o].splice(0,e[o].length),e[o].push(t)},t.children.forEach(n=>{if("option"===n.tag){let t="value"in n.props?n.props.value:n.children.join("").trim();n.props.selected=-1!==e[o].indexOf(t)}})):t.children.forEach(n=>{if("option"===n.tag){let t="value"in n.props?n.props.value:n.children.join("").trim();n.props.selected=t===e[o]}})):"textarea"===t.tag&&(n=n||"oninput",t.children=[e[o]]);t.props[n]||(d||(d=n=>e[o]=n.target.value),g(n,d,t,i))}};f.directive=(e,o)=>{let n=`v-${e}`;C[n]=o,l[n]=!0},f.isNodeJs=Boolean("undefined"!=typeof process&&process.versions&&process.versions.node),f.isMounted=!1,f.component=null,f.mainVnode=null,f.directives=C,f.reservedProps=l,f.current=e,f.setAttribute=g;var x={Vnode:a,VnodeComponent:u,VnodeText:c,v:f};"undefined"!=typeof module?module.exports=x:self.Valyrian=x})();//# sourceMappingURL=index.min.js.map
|
package/dist/index.min.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjdXJyZW50Iiwib25DbGVhbnVwTGlzdCIsIm9uTW91bnRMaXN0Iiwib25VcGRhdGVMaXN0Iiwib25Vbm1vdW50TGlzdCIsImVtcHR5Q29tcG9uZW50IiwiZXZlbnRMaXN0ZW5lck5hbWVzIiwiZXZlbnRMaXN0ZW5lciIsImUiLCJkb20iLCJ0YXJnZXQiLCJuYW1lIiwidHlwZSIsImRlZmF1bHRQcmV2ZW50ZWQiLCJ2IiwidXBkYXRlIiwicGFyZW50Tm9kZSIsInJlc2VydmVkUHJvcHMiLCJrZXkiLCJzdGF0ZSIsIm9uY3JlYXRlIiwib251cGRhdGUiLCJvbnJlbW92ZSIsInNob3VsZHVwZGF0ZSIsImNyZWF0ZURvbUVsZW1lbnQiLCJ0YWciLCJpc1NWRyIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudE5TIiwiY3JlYXRlRWxlbWVudCIsIlZub2RlIiwicHJvcHMiLCJjaGlsZHJlbiIsInRoaXMiLCJWbm9kZVRleHQiLCJub2RlVmFsdWUiLCJWbm9kZUNvbXBvbmVudCIsImNvbXBvbmVudCIsImRvbVRvVm5vZGUiLCJpIiwiY2hpbGROb2RlcyIsImxlbmd0aCIsImNoaWxkRG9tIiwibm9kZVR5cGUiLCJwdXNoIiwidm5vZGUiLCJhdHRyaWJ1dGVzIiwiYXR0ciIsIm5vZGVOYW1lIiwidGFnTmFtZSIsInRvTG93ZXJDYXNlIiwidGFnT3JDb21wb25lbnQiLCJjYWxsQ2FsbGJhY2tMaXN0IiwibGlzdCIsInNoYXJlZFNldEF0dHJpYnV0ZSIsInByb3AiLCJuZXdWbm9kZSIsIm9sZFZub2RlIiwiZGlyZWN0aXZlcyIsInZhbHVlIiwibWFpblZub2RlIiwiYWRkRXZlbnRMaXN0ZW5lciIsInNsaWNlIiwicmVtb3ZlQXR0cmlidXRlIiwic2V0QXR0cmlidXRlIiwic2V0QXR0cmlidXRlcyIsImZyYWdtZW50Iiwidm5vZGVzIiwidHJ1c3QiLCJodG1sU3RyaW5nIiwiZGl2IiwiaW5uZXJIVE1MIiwidHJpbSIsIm1hcCIsImNhbGwiLCJpdGVtIiwiaXNWbm9kZSIsIm9iamVjdCIsImlzVm5vZGVDb21wb25lbnQiLCJpc1ZhbHlyaWFuQ29tcG9uZW50IiwiQm9vbGVhbiIsImlzQ29tcG9uZW50Iiwib25DbGVhbnVwIiwiY2FsbGJhY2siLCJpbmRleE9mIiwib25Vbm1vdW50Iiwib25Nb3VudCIsIm9uVXBkYXRlIiwiY2FsbFJlbW92ZSIsImwiLCJwYXRjaCIsIm5ld1BhcmVudFZub2RlIiwib2xkUGFyZW50Vm5vZGUiLCJvbGRUcmVlIiwibmV3VHJlZSIsIm9sZFRyZWVMZW5ndGgiLCJuZXdUcmVlTGVuZ3RoIiwib2xkS2V5ZWRMaXN0IiwibmV3S2V5ZWRMaXN0IiwiY2hpbGRWbm9kZSIsIm9sZENoaWxkVm5vZGUiLCJzaG91bGRQYXRjaCIsImlzTW91bnRlZCIsInJlcGxhY2VDaGlsZCIsImFwcGVuZENoaWxkIiwicmVtb3ZlQ2hpbGQiLCJzcGxpY2UiLCJBcnJheSIsImlzQXJyYXkiLCJ2aWV3IiwiYmluZCIsIlN0cmluZyIsImNyZWF0ZVRleHROb2RlIiwidGV4dENvbnRlbnQiLCJvbGRNYWluVm5vZGUiLCJuZXdNYWluVm5vZGUiLCJpc05vZGVKcyIsInVubW91bnQiLCJyZXN1bHQiLCJtb3VudCIsImNvbnRhaW5lciIsIm1haW5Db250YWluZXIiLCJxdWVyeVNlbGVjdG9yQWxsIiwicGx1Z2lucyIsIk1hcCIsInVzZSIsInBsdWdpbiIsIm9wdGlvbnMiLCJoYXMiLCJnZXQiLCJzZXQiLCJoaWRlRGlyZWN0aXZlIiwidGVzdCIsImJvb2wiLCJvbGRub2RlIiwibmV3ZG9tIiwic3R5bGUiLCJkaXNwbGF5IiwiY2xhc3NlcyIsImNsYXNzTGlzdCIsInRvZ2dsZSIsImh0bWwiLCJtb2RlbCIsInByb3BlcnR5IiwiZXZlbnQiLCJoYW5kbGVyIiwidmFsIiwiaWR4IiwibXVsdGlwbGUiLCJjdHJsS2V5IiwiZm9yRWFjaCIsImNoaWxkIiwiam9pbiIsInNlbGVjdGVkIiwiZGlyZWN0aXZlIiwiZnVsbE5hbWUiLCJwcm9jZXNzIiwidmVyc2lvbnMiLCJub2RlIl0sInNvdXJjZXMiOlsiLi4vbGliL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHNvbmFyanMvY29nbml0aXZlLWNvbXBsZXhpdHkgKi9cbi8qIGVzbGludC1kaXNhYmxlIGNvbXBsZXhpdHkgKi9cblxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cImludGVyZmFjZXMudHNcIiAvPlxuXG5pbXBvcnQge1xuICBDaGlsZHJlbixcbiAgQ29tcG9uZW50LFxuICBDdXJyZW50LFxuICBEaXJlY3RpdmUsXG4gIERpcmVjdGl2ZXMsXG4gIERvbUVsZW1lbnQsXG4gIFBsdWdpbixcbiAgUHJvcHMsXG4gIFZhbHlyaWFuLFxuICBWYWx5cmlhbkNvbXBvbmVudCxcbiAgVm5vZGVDb21wb25lbnRJbnRlcmZhY2UsXG4gIFZub2RlSW50ZXJmYWNlLFxuICBWbm9kZVRleHRJbnRlcmZhY2UsXG4gIFZub2RlV2l0aERvbVxufSBmcm9tIFwiVmFseXJpYW5cIjtcblxuY29uc3QgY3VycmVudDogQ3VycmVudCA9IHt9O1xuY29uc3Qgb25DbGVhbnVwTGlzdDogRnVuY3Rpb25bXSA9IFtdO1xuY29uc3Qgb25Nb3VudExpc3Q6IEZ1bmN0aW9uW10gPSBbXTtcbmNvbnN0IG9uVXBkYXRlTGlzdDogRnVuY3Rpb25bXSA9IFtdO1xuY29uc3Qgb25Vbm1vdW50TGlzdDogRnVuY3Rpb25bXSA9IFtdO1xuY29uc3QgZW1wdHlDb21wb25lbnQ6IENvbXBvbmVudCA9ICgpID0+IFwiXCI7XG5cbmNvbnN0IGV2ZW50TGlzdGVuZXJOYW1lczogUmVjb3JkPHN0cmluZywgdHJ1ZT4gPSB7fTtcbmZ1bmN0aW9uIGV2ZW50TGlzdGVuZXIoZTogRXZlbnQpIHtcbiAgbGV0IGRvbSA9IGUudGFyZ2V0IGFzIERvbUVsZW1lbnQ7XG4gIGxldCBuYW1lID0gYHYtb24ke2UudHlwZX1gO1xuICB3aGlsZSAoZG9tKSB7XG4gICAgaWYgKGRvbVtuYW1lXSkge1xuICAgICAgZG9tW25hbWVdKGUsIGRvbSk7XG4gICAgICBpZiAoIWUuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgICAgdi51cGRhdGUoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZG9tID0gZG9tLnBhcmVudE5vZGUgYXMgRG9tRWxlbWVudDtcbiAgfVxufVxuXG5jb25zdCByZXNlcnZlZFByb3BzOiBSZWNvcmQ8c3RyaW5nLCB0cnVlPiA9IHtcbiAga2V5OiB0cnVlLFxuICBzdGF0ZTogdHJ1ZSxcbiAgb25jcmVhdGU6IHRydWUsXG4gIG9udXBkYXRlOiB0cnVlLFxuICBvbnJlbW92ZTogdHJ1ZSxcbiAgc2hvdWxkdXBkYXRlOiB0cnVlLFxuICBcInYtb25jZVwiOiB0cnVlLFxuXG4gIC8vIEJ1aWx0IGluIGRpcmVjdGl2ZXNcbiAgXCJ2LWlmXCI6IHRydWUsXG4gIFwidi11bmxlc3NcIjogdHJ1ZSxcbiAgXCJ2LWZvclwiOiB0cnVlLFxuICBcInYtc2hvd1wiOiB0cnVlLFxuICBcInYtY2xhc3NcIjogdHJ1ZSxcbiAgXCJ2LWh0bWxcIjogdHJ1ZSxcbiAgXCJ2LW1vZGVsXCI6IHRydWVcbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZURvbUVsZW1lbnQodGFnOiBzdHJpbmcsIGlzU1ZHOiBib29sZWFuID0gZmFsc2UpOiBEb21FbGVtZW50IHtcbiAgcmV0dXJuIGlzU1ZHID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgdGFnKSA6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtcbn1cblxuZXhwb3J0IGNvbnN0IFZub2RlID0gZnVuY3Rpb24gVm5vZGUodGhpczogVm5vZGVJbnRlcmZhY2UsIHRhZzogc3RyaW5nLCBwcm9wczogUHJvcHMsIGNoaWxkcmVuOiBDaGlsZHJlbikge1xuICB0aGlzLnRhZyA9IHRhZztcbiAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW47XG59IGFzIHVua25vd24gYXMgVm5vZGVJbnRlcmZhY2U7XG5cbmV4cG9ydCBjb25zdCBWbm9kZVRleHQgPSBmdW5jdGlvbiBWbm9kZVRleHQodGhpczogVm5vZGVUZXh0SW50ZXJmYWNlLCBub2RlVmFsdWU6IHN0cmluZykge1xuICB0aGlzLm5vZGVWYWx1ZSA9IG5vZGVWYWx1ZTtcbn0gYXMgdW5rbm93biBhcyBWbm9kZVRleHRJbnRlcmZhY2U7XG5cbmV4cG9ydCBjb25zdCBWbm9kZUNvbXBvbmVudCA9IGZ1bmN0aW9uIFZub2RlQ29tcG9uZW50KFxuICB0aGlzOiBWbm9kZUNvbXBvbmVudEludGVyZmFjZSxcbiAgY29tcG9uZW50OiBDb21wb25lbnQgfCBWYWx5cmlhbkNvbXBvbmVudCxcbiAgcHJvcHM6IFByb3BzLFxuICBjaGlsZHJlbjogQ2hpbGRyZW5cbikge1xuICB0aGlzLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW47XG59IGFzIHVua25vd24gYXMgVm5vZGVDb21wb25lbnRJbnRlcmZhY2U7XG5cbi8vIFRyYW5zZm9ybXMgYSBET00gbm9kZSB0byBhIFZOb2RlXG5mdW5jdGlvbiBkb21Ub1Zub2RlKGRvbTogYW55KTogVm5vZGVXaXRoRG9tIHtcbiAgbGV0IGNoaWxkcmVuID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZG9tLmNoaWxkTm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgY2hpbGREb20gPSBkb20uY2hpbGROb2Rlc1tpXTtcbiAgICBpZiAoY2hpbGREb20ubm9kZVR5cGUgPT09IDMpIHtcbiAgICAgIGxldCB2bm9kZSA9IG5ldyBWbm9kZVRleHQoY2hpbGREb20ubm9kZVZhbHVlKTtcbiAgICAgIHZub2RlLmRvbSA9IGNoaWxkRG9tO1xuICAgICAgY2hpbGRyZW4ucHVzaCh2bm9kZSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoY2hpbGREb20ubm9kZVR5cGUgPT09IDEpIHtcbiAgICAgIGNoaWxkcmVuLnB1c2goZG9tVG9Wbm9kZShjaGlsZERvbSkpO1xuICAgIH1cbiAgfVxuXG4gIGxldCBwcm9wczogUHJvcHMgPSB7fTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkb20uYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBhdHRyID0gZG9tLmF0dHJpYnV0ZXNbaV07XG4gICAgcHJvcHNbYXR0ci5ub2RlTmFtZV0gPSBhdHRyLm5vZGVWYWx1ZTtcbiAgfVxuXG4gIGxldCB2bm9kZSA9IG5ldyBWbm9kZShkb20udGFnTmFtZS50b0xvd2VyQ2FzZSgpLCBwcm9wcywgY2hpbGRyZW4pO1xuICB2bm9kZS5kb20gPSBkb207XG4gIHJldHVybiB2bm9kZSBhcyBWbm9kZVdpdGhEb207XG59XG5cbmNvbnN0IHY6IFZhbHlyaWFuID0gKHRhZ09yQ29tcG9uZW50LCBwcm9wcywgLi4uY2hpbGRyZW4pID0+IHtcbiAgaWYgKHR5cGVvZiB0YWdPckNvbXBvbmVudCA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBuZXcgVm5vZGUodGFnT3JDb21wb25lbnQsIHByb3BzIHx8IHt9LCBjaGlsZHJlbik7XG4gIH1cblxuICByZXR1cm4gbmV3IFZub2RlQ29tcG9uZW50KHRhZ09yQ29tcG9uZW50LCBwcm9wcyB8fCB7fSwgY2hpbGRyZW4pO1xufTtcblxudi5mcmFnbWVudCA9IChwcm9wczogUHJvcHMsIC4uLnZub2RlczogQ2hpbGRyZW4pID0+IHtcbiAgcmV0dXJuIHZub2Rlcztcbn07XG5cbnYudHJ1c3QgPSAoaHRtbFN0cmluZzogc3RyaW5nKSA9PiB7XG4gIGxldCBkaXYgPSBjcmVhdGVEb21FbGVtZW50KFwiZGl2XCIpO1xuICBkaXYuaW5uZXJIVE1MID0gaHRtbFN0cmluZy50cmltKCk7XG5cbiAgcmV0dXJuIFtdLm1hcC5jYWxsKGRpdi5jaGlsZE5vZGVzLCAoaXRlbSkgPT4gZG9tVG9Wbm9kZShpdGVtKSkgYXMgVm5vZGVXaXRoRG9tW107XG59O1xuXG52LmlzVm5vZGUgPSAob2JqZWN0PzogdW5rbm93biB8IFZub2RlSW50ZXJmYWNlKTogb2JqZWN0IGlzIFZub2RlSW50ZXJmYWNlID0+IHtcbiAgcmV0dXJuIG9iamVjdCBpbnN0YW5jZW9mIFZub2RlO1xufTtcblxudi5pc1Zub2RlQ29tcG9uZW50ID0gKG9iamVjdD86IHVua25vd24gfCBWbm9kZUNvbXBvbmVudEludGVyZmFjZSk6IG9iamVjdCBpcyBWbm9kZUNvbXBvbmVudEludGVyZmFjZSA9PiB7XG4gIHJldHVybiBvYmplY3QgaW5zdGFuY2VvZiBWbm9kZUNvbXBvbmVudDtcbn07XG5cbnYuaXNWYWx5cmlhbkNvbXBvbmVudCA9IChjb21wb25lbnQ/OiB1bmtub3duIHwgVmFseXJpYW5Db21wb25lbnQpOiBjb21wb25lbnQgaXMgVmFseXJpYW5Db21wb25lbnQgPT4ge1xuICByZXR1cm4gQm9vbGVhbihjb21wb25lbnQgJiYgdHlwZW9mIGNvbXBvbmVudCA9PT0gXCJvYmplY3RcIiAmJiBcInZpZXdcIiBpbiBjb21wb25lbnQpO1xufTtcblxudi5pc0NvbXBvbmVudCA9IChjb21wb25lbnQ/OiB1bmtub3duIHwgVmFseXJpYW5Db21wb25lbnQpOiBjb21wb25lbnQgaXMgVmFseXJpYW5Db21wb25lbnQgPT4ge1xuICByZXR1cm4gQm9vbGVhbigoY29tcG9uZW50ICYmIHR5cGVvZiBjb21wb25lbnQgPT09IFwiZnVuY3Rpb25cIikgfHwgdi5pc1ZhbHlyaWFuQ29tcG9uZW50KGNvbXBvbmVudCkgfHwgdi5pc1Zub2RlQ29tcG9uZW50KGNvbXBvbmVudCkpO1xufTtcblxudi5vbkNsZWFudXAgPSAoY2FsbGJhY2s6IEZ1bmN0aW9uKTogdm9pZCA9PiB7XG4gIGlmIChvbkNsZWFudXBMaXN0LmluZGV4T2YoY2FsbGJhY2spID09PSAtMSkge1xuICAgIG9uQ2xlYW51cExpc3QucHVzaChjYWxsYmFjayk7XG4gIH1cbn07XG52Lm9uVW5tb3VudCA9IChjYWxsYmFjazogRnVuY3Rpb24pOiB2b2lkID0+IHtcbiAgaWYgKG9uVW5tb3VudExpc3QuaW5kZXhPZihjYWxsYmFjaykgPT09IC0xKSB7XG4gICAgb25Vbm1vdW50TGlzdC5wdXNoKGNhbGxiYWNrKTtcbiAgfVxufTtcbnYub25Nb3VudCA9IChjYWxsYmFjazogRnVuY3Rpb24pOiB2b2lkID0+IHtcbiAgaWYgKG9uTW91bnRMaXN0LmluZGV4T2YoY2FsbGJhY2spID09PSAtMSkge1xuICAgIG9uTW91bnRMaXN0LnB1c2goY2FsbGJhY2spO1xuICB9XG59O1xudi5vblVwZGF0ZSA9IChjYWxsYmFjazogRnVuY3Rpb24pOiB2b2lkID0+IHtcbiAgaWYgKG9uVXBkYXRlTGlzdC5pbmRleE9mKGNhbGxiYWNrKSA9PT0gLTEpIHtcbiAgICBvblVwZGF0ZUxpc3QucHVzaChjYWxsYmFjayk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGNhbGxDYWxsYmFja0xpc3QobGlzdDogRnVuY3Rpb25bXSk6IHZvaWQge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICBsaXN0W2ldKCk7XG4gIH1cbiAgbGlzdC5sZW5ndGggPSAwO1xufVxuXG5mdW5jdGlvbiBzaGFyZWRTZXRBdHRyaWJ1dGUocHJvcDogc3RyaW5nLCBuZXdWbm9kZTogVm5vZGVXaXRoRG9tLCBvbGRWbm9kZT86IFZub2RlV2l0aERvbSk6IHZvaWQgfCBib29sZWFuIHtcbiAgaWYgKHJlc2VydmVkUHJvcHNbcHJvcF0pIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICBpZiAoZGlyZWN0aXZlc1twcm9wXSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICByZXR1cm4gZGlyZWN0aXZlc1twcm9wXShuZXdWbm9kZS5wcm9wc1twcm9wXSwgbmV3Vm5vZGUsIG9sZFZub2RlKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbGV0IHZhbHVlID0gbmV3Vm5vZGUucHJvcHNbcHJvcF07XG4gIGxldCBkb20gPSBuZXdWbm9kZS5kb207XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgaWYgKCFldmVudExpc3RlbmVyTmFtZXNbcHJvcF0pIHtcbiAgICAgICh2Lm1haW5Wbm9kZSBhcyBWbm9kZVdpdGhEb20pLmRvbS5hZGRFdmVudExpc3RlbmVyKHByb3Auc2xpY2UoMiksIGV2ZW50TGlzdGVuZXIpO1xuICAgICAgZXZlbnRMaXN0ZW5lck5hbWVzW3Byb3BdID0gdHJ1ZTtcbiAgICB9XG4gICAgZG9tW2B2LSR7cHJvcH1gXSA9IHZhbHVlO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChwcm9wIGluIGRvbSAmJiAhbmV3Vm5vZGUuaXNTVkcpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG4gICAgaWYgKGRvbVtwcm9wXSAhPSB2YWx1ZSkge1xuICAgICAgZG9tW3Byb3BdID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKCFvbGRWbm9kZSB8fCB2YWx1ZSAhPT0gb2xkVm5vZGUucHJvcHNbcHJvcF0pIHtcbiAgICBpZiAodmFsdWUgPT09IGZhbHNlKSB7XG4gICAgICBkb20ucmVtb3ZlQXR0cmlidXRlKHByb3ApO1xuICAgIH0gZWxzZSB7XG4gICAgICBkb20uc2V0QXR0cmlidXRlKHByb3AsIHZhbHVlKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gc2V0QXR0cmlidXRlKG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSwgdm5vZGU6IFZub2RlV2l0aERvbSwgb2xkVm5vZGU/OiBWbm9kZVdpdGhEb20pOiB2b2lkIHtcbiAgdm5vZGUucHJvcHNbbmFtZV0gPSB2YWx1ZTtcbiAgc2hhcmVkU2V0QXR0cmlidXRlKG5hbWUsIHZub2RlIGFzIFZub2RlV2l0aERvbSwgb2xkVm5vZGUpO1xufVxuXG5mdW5jdGlvbiBzZXRBdHRyaWJ1dGVzKG5ld1Zub2RlOiBWbm9kZVdpdGhEb20sIG9sZFZub2RlPzogVm5vZGVXaXRoRG9tKTogdm9pZCB7XG4gIGZvciAobGV0IHByb3AgaW4gbmV3Vm5vZGUucHJvcHMpIHtcbiAgICBpZiAoc2hhcmVkU2V0QXR0cmlidXRlKHByb3AsIG5ld1Zub2RlLCBvbGRWbm9kZSkgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgaWYgKG9sZFZub2RlKSB7XG4gICAgZm9yIChsZXQgbmFtZSBpbiBvbGRWbm9kZS5wcm9wcykge1xuICAgICAgaWYgKG5hbWUgaW4gbmV3Vm5vZGUucHJvcHMgPT09IGZhbHNlICYmIHR5cGVvZiBvbGRWbm9kZS5wcm9wc1tuYW1lXSAhPT0gXCJmdW5jdGlvblwiICYmICFyZXNlcnZlZFByb3BzW25hbWVdKSB7XG4gICAgICAgIGlmIChuYW1lIGluIG5ld1Zub2RlLmRvbSAmJiBuZXdWbm9kZS5pc1NWRyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBuZXdWbm9kZS5kb21bbmFtZV0gPSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld1Zub2RlLmRvbS5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuY29uc3QgY2FsbFJlbW92ZSA9ICh2bm9kZTogVm5vZGVJbnRlcmZhY2UpID0+IHtcbiAgZm9yIChsZXQgaSA9IDAsIGwgPSB2bm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICB2bm9kZS5jaGlsZHJlbltpXSBpbnN0YW5jZW9mIFZub2RlICYmIGNhbGxSZW1vdmUodm5vZGUuY2hpbGRyZW5baV0pO1xuICB9XG5cbiAgdm5vZGUucHJvcHMub25yZW1vdmUgJiYgdm5vZGUucHJvcHMub25yZW1vdmUodm5vZGUpO1xufTtcblxuLy8gUGF0Y2ggYSBET00gbm9kZSB3aXRoIGEgbmV3IFZOb2RlIHRyZWVcbnYucGF0Y2ggPSAobmV3UGFyZW50Vm5vZGU6IFZub2RlV2l0aERvbSwgb2xkUGFyZW50Vm5vZGU/OiBWbm9kZVdpdGhEb20pOiB2b2lkID0+IHtcbiAgbGV0IG9sZFRyZWUgPSBvbGRQYXJlbnRWbm9kZT8uY2hpbGRyZW4gfHwgW107XG4gIGxldCBuZXdUcmVlID0gbmV3UGFyZW50Vm5vZGUuY2hpbGRyZW47XG4gIGxldCBvbGRUcmVlTGVuZ3RoID0gb2xkVHJlZS5sZW5ndGg7XG5cbiAgY3VycmVudC52bm9kZSA9IG5ld1BhcmVudFZub2RlO1xuICBjdXJyZW50Lm9sZFZub2RlID0gb2xkUGFyZW50Vm5vZGU7XG5cbiAgaWYgKG5ld1RyZWVbMF0gaW5zdGFuY2VvZiBWbm9kZSAmJiBvbGRUcmVlWzBdIGluc3RhbmNlb2YgVm5vZGUgJiYgXCJrZXlcIiBpbiBuZXdUcmVlWzBdLnByb3BzICYmIFwia2V5XCIgaW4gb2xkVHJlZVswXS5wcm9wcykge1xuICAgIGxldCBuZXdUcmVlTGVuZ3RoID0gbmV3VHJlZS5sZW5ndGg7XG4gICAgbGV0IG9sZEtleWVkTGlzdDogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb2xkVHJlZUxlbmd0aDsgaSsrKSB7XG4gICAgICBvbGRLZXllZExpc3Rbb2xkVHJlZVtpXS5wcm9wcy5rZXldID0gaTtcbiAgICB9XG5cbiAgICBsZXQgbmV3S2V5ZWRMaXN0OiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge307XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZXdUcmVlTGVuZ3RoOyBpKyspIHtcbiAgICAgIG5ld0tleWVkTGlzdFtuZXdUcmVlW2ldLnByb3BzLmtleV0gPSBpO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmV3VHJlZUxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgY2hpbGRWbm9kZSA9IG5ld1RyZWVbaV07XG4gICAgICBsZXQgb2xkQ2hpbGRWbm9kZSA9IG9sZFRyZWVbb2xkS2V5ZWRMaXN0W2NoaWxkVm5vZGUucHJvcHMua2V5XV07XG4gICAgICBsZXQgc2hvdWxkUGF0Y2ggPSB0cnVlO1xuXG4gICAgICBpZiAob2xkQ2hpbGRWbm9kZSkge1xuICAgICAgICBjaGlsZFZub2RlLmRvbSA9IG9sZENoaWxkVm5vZGUuZG9tO1xuICAgICAgICBpZiAoY2hpbGRWbm9kZS5wcm9wc1tcInYtb25jZVwiXSB8fCAoY2hpbGRWbm9kZS5wcm9wcy5zaG91bGR1cGRhdGUgJiYgY2hpbGRWbm9kZS5wcm9wcy5zaG91bGR1cGRhdGUoY2hpbGRWbm9kZSwgb2xkQ2hpbGRWbm9kZSkgPT09IGZhbHNlKSkge1xuICAgICAgICAgIGNoaWxkVm5vZGUuY2hpbGRyZW4gPSBvbGRDaGlsZFZub2RlLmNoaWxkcmVuO1xuICAgICAgICAgIHNob3VsZFBhdGNoID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0QXR0cmlidXRlcyhjaGlsZFZub2RlLCBvbGRDaGlsZFZub2RlKTtcbiAgICAgICAgICBpZiAodi5pc01vdW50ZWQpIHtcbiAgICAgICAgICAgIGNoaWxkVm5vZGUucHJvcHMub251cGRhdGUgJiYgY2hpbGRWbm9kZS5wcm9wcy5vbnVwZGF0ZShjaGlsZFZub2RlLCBvbGRDaGlsZFZub2RlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2hpbGRWbm9kZS5wcm9wcy5vbmNyZWF0ZSAmJiBjaGlsZFZub2RlLnByb3BzLm9uY3JlYXRlKGNoaWxkVm5vZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hpbGRWbm9kZS5kb20gPSBjcmVhdGVEb21FbGVtZW50KGNoaWxkVm5vZGUudGFnLCBjaGlsZFZub2RlLmlzU1ZHKTtcbiAgICAgICAgc2V0QXR0cmlidXRlcyhjaGlsZFZub2RlKTtcbiAgICAgICAgY2hpbGRWbm9kZS5wcm9wcy5vbmNyZWF0ZSAmJiBjaGlsZFZub2RlLnByb3BzLm9uY3JlYXRlKGNoaWxkVm5vZGUpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIW5ld1BhcmVudFZub2RlLmRvbS5jaGlsZE5vZGVzW2ldKSB7XG4gICAgICAgIG5ld1BhcmVudFZub2RlLmRvbS5hcHBlbmRDaGlsZChjaGlsZFZub2RlLmRvbSk7XG4gICAgICB9IGVsc2UgaWYgKG5ld1BhcmVudFZub2RlLmRvbS5jaGlsZE5vZGVzW2ldICE9PSBjaGlsZFZub2RlLmRvbSkge1xuICAgICAgICBvbGRUcmVlW2ldICYmICFuZXdLZXllZExpc3Rbb2xkVHJlZVtpXS5wcm9wcy5rZXldICYmIGNhbGxSZW1vdmUob2xkVHJlZVtpXSk7XG4gICAgICAgIG5ld1BhcmVudFZub2RlLmRvbS5yZXBsYWNlQ2hpbGQoY2hpbGRWbm9kZS5kb20sIG5ld1BhcmVudFZub2RlLmRvbS5jaGlsZE5vZGVzW2ldKTtcbiAgICAgIH1cblxuICAgICAgc2hvdWxkUGF0Y2ggJiYgdi5wYXRjaChjaGlsZFZub2RlLCBvbGRDaGlsZFZub2RlKTtcbiAgICB9XG5cbiAgICAvLyBGb3IgdGhlIHJlc3Qgb2YgdGhlIGNoaWxkcmVuLCB3ZSBzaG91bGQgcmVtb3ZlIHRoZW1cbiAgICBmb3IgKGxldCBpID0gbmV3VHJlZUxlbmd0aDsgaSA8IG9sZFRyZWVMZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCFuZXdLZXllZExpc3Rbb2xkVHJlZVtpXS5wcm9wcy5rZXldKSB7XG4gICAgICAgIGxldCBvbGRDaGlsZFZub2RlID0gb2xkVHJlZVtpXTtcbiAgICAgICAgY2FsbFJlbW92ZShvbGRDaGlsZFZub2RlKTtcbiAgICAgICAgb2xkQ2hpbGRWbm9kZS5kb20ucGFyZW50Tm9kZSAmJiBvbGRDaGlsZFZub2RlLmRvbS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG9sZENoaWxkVm5vZGUuZG9tKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gRmxhdCBuZXdUcmVlXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbmV3VHJlZS5sZW5ndGg7IGkrKykge1xuICAgIGxldCBjaGlsZFZub2RlID0gbmV3VHJlZVtpXTtcblxuICAgIGlmIChjaGlsZFZub2RlIGluc3RhbmNlb2YgVm5vZGUpIHtcbiAgICAgIGxldCBvbGRDaGlsZFZub2RlID0gb2xkVHJlZVtpXTtcbiAgICAgIGNoaWxkVm5vZGUuaXNTVkcgPSBuZXdQYXJlbnRWbm9kZS5pc1NWRyB8fCBjaGlsZFZub2RlLnRhZyA9PT0gXCJzdmdcIjtcblxuICAgICAgaWYgKCFvbGRDaGlsZFZub2RlKSB7XG4gICAgICAgIGNoaWxkVm5vZGUuZG9tID0gY3JlYXRlRG9tRWxlbWVudChjaGlsZFZub2RlLnRhZywgY2hpbGRWbm9kZS5pc1NWRyk7XG4gICAgICAgIHNldEF0dHJpYnV0ZXMoY2hpbGRWbm9kZSBhcyBWbm9kZVdpdGhEb20pO1xuICAgICAgICBjaGlsZFZub2RlLnByb3BzLm9uY3JlYXRlICYmIGNoaWxkVm5vZGUucHJvcHMub25jcmVhdGUoY2hpbGRWbm9kZSk7XG4gICAgICAgIHYucGF0Y2goY2hpbGRWbm9kZSBhcyBWbm9kZVdpdGhEb20pO1xuICAgICAgICBuZXdQYXJlbnRWbm9kZS5kb20uYXBwZW5kQ2hpbGQoY2hpbGRWbm9kZS5kb20pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoaWxkVm5vZGUudGFnID09PSBvbGRDaGlsZFZub2RlLnRhZykge1xuICAgICAgICBjaGlsZFZub2RlLmRvbSA9IG9sZENoaWxkVm5vZGUuZG9tO1xuXG4gICAgICAgIGlmIChjaGlsZFZub2RlLnByb3BzW1widi1vbmNlXCJdIHx8IChjaGlsZFZub2RlLnByb3BzLnNob3VsZHVwZGF0ZSAmJiBjaGlsZFZub2RlLnByb3BzLnNob3VsZHVwZGF0ZShjaGlsZFZub2RlLCBvbGRDaGlsZFZub2RlKSA9PT0gZmFsc2UpKSB7XG4gICAgICAgICAgY2hpbGRWbm9kZS5jaGlsZHJlbiA9IG9sZENoaWxkVm5vZGUuY2hpbGRyZW47XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBzZXRBdHRyaWJ1dGVzKGNoaWxkVm5vZGUgYXMgVm5vZGVXaXRoRG9tLCBvbGRDaGlsZFZub2RlKTtcbiAgICAgICAgaWYgKHYuaXNNb3VudGVkKSB7XG4gICAgICAgICAgY2hpbGRWbm9kZS5wcm9wcy5vbnVwZGF0ZSAmJiBjaGlsZFZub2RlLnByb3BzLm9udXBkYXRlKGNoaWxkVm5vZGUsIG9sZENoaWxkVm5vZGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNoaWxkVm5vZGUucHJvcHMub25jcmVhdGUgJiYgY2hpbGRWbm9kZS5wcm9wcy5vbmNyZWF0ZShjaGlsZFZub2RlKTtcbiAgICAgICAgfVxuICAgICAgICB2LnBhdGNoKGNoaWxkVm5vZGUgYXMgVm5vZGVXaXRoRG9tLCBvbGRDaGlsZFZub2RlKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNoaWxkVm5vZGUuZG9tID0gY3JlYXRlRG9tRWxlbWVudChjaGlsZFZub2RlLnRhZywgY2hpbGRWbm9kZS5pc1NWRyk7XG4gICAgICBzZXRBdHRyaWJ1dGVzKGNoaWxkVm5vZGUgYXMgVm5vZGVXaXRoRG9tKTtcbiAgICAgIGNoaWxkVm5vZGUucHJvcHMub25jcmVhdGUgJiYgY2hpbGRWbm9kZS5wcm9wcy5vbmNyZWF0ZShjaGlsZFZub2RlKTtcbiAgICAgIG9sZENoaWxkVm5vZGUgaW5zdGFuY2VvZiBWbm9kZSAmJiBjYWxsUmVtb3ZlKG9sZENoaWxkVm5vZGUpO1xuICAgICAgbmV3UGFyZW50Vm5vZGUuZG9tLnJlcGxhY2VDaGlsZChjaGlsZFZub2RlLmRvbSwgb2xkQ2hpbGRWbm9kZS5kb20pO1xuICAgICAgdi5wYXRjaChjaGlsZFZub2RlIGFzIFZub2RlV2l0aERvbSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoY2hpbGRWbm9kZSA9PT0gbnVsbCB8fCBjaGlsZFZub2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG5ld1RyZWUuc3BsaWNlKGktLSwgMSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZFZub2RlKSkge1xuICAgICAgbmV3VHJlZS5zcGxpY2UoaS0tLCAxLCAuLi5jaGlsZFZub2RlKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChjaGlsZFZub2RlIGluc3RhbmNlb2YgVm5vZGVDb21wb25lbnQpIHtcbiAgICAgIGN1cnJlbnQuY29tcG9uZW50ID0gY2hpbGRWbm9kZS5jb21wb25lbnQ7XG4gICAgICBuZXdUcmVlLnNwbGljZShcbiAgICAgICAgaS0tLFxuICAgICAgICAxLFxuICAgICAgICAoY2hpbGRWbm9kZS5jb21wb25lbnQudmlldyA/IGNoaWxkVm5vZGUuY29tcG9uZW50LnZpZXcuYmluZChjaGlsZFZub2RlLmNvbXBvbmVudCkgOiBjaGlsZFZub2RlLmNvbXBvbmVudC5iaW5kKGNoaWxkVm5vZGUuY29tcG9uZW50KSkoXG4gICAgICAgICAgY2hpbGRWbm9kZS5wcm9wcyxcbiAgICAgICAgICAuLi5jaGlsZFZub2RlLmNoaWxkcmVuXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoY2hpbGRWbm9kZSBpbnN0YW5jZW9mIFZub2RlVGV4dCA9PT0gZmFsc2UpIHtcbiAgICAgIG5ld1RyZWVbaV0gPSBjaGlsZFZub2RlID0gbmV3IFZub2RlVGV4dChTdHJpbmcoY2hpbGRWbm9kZSkpO1xuICAgIH1cblxuICAgIGlmIChuZXdUcmVlW2kgLSAxXSBpbnN0YW5jZW9mIFZub2RlVGV4dCkge1xuICAgICAgbmV3VHJlZVtpIC0gMV0uZG9tLm5vZGVWYWx1ZSArPSBjaGlsZFZub2RlLm5vZGVWYWx1ZTtcbiAgICAgIG5ld1RyZWVbaSAtIDFdLm5vZGVWYWx1ZSArPSBjaGlsZFZub2RlLm5vZGVWYWx1ZTtcbiAgICAgIG5ld1RyZWUuc3BsaWNlKGktLSwgMSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBsZXQgb2xkQ2hpbGRWbm9kZSA9IG9sZFRyZWVbaV07XG5cbiAgICBpZiAoIW9sZENoaWxkVm5vZGUpIHtcbiAgICAgIGNoaWxkVm5vZGUuZG9tID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY2hpbGRWbm9kZS5ub2RlVmFsdWUpO1xuICAgICAgbmV3UGFyZW50Vm5vZGUuZG9tLmFwcGVuZENoaWxkKGNoaWxkVm5vZGUuZG9tKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChvbGRDaGlsZFZub2RlIGluc3RhbmNlb2YgVm5vZGVUZXh0KSB7XG4gICAgICBjaGlsZFZub2RlLmRvbSA9IG9sZENoaWxkVm5vZGUuZG9tO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVxZXFlcVxuICAgICAgaWYgKGNoaWxkVm5vZGUubm9kZVZhbHVlICE9IGNoaWxkVm5vZGUuZG9tLm5vZGVWYWx1ZSkge1xuICAgICAgICBjaGlsZFZub2RlLmRvbS5ub2RlVmFsdWUgPSBjaGlsZFZub2RlLm5vZGVWYWx1ZTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNoaWxkVm5vZGUuZG9tID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY2hpbGRWbm9kZS5ub2RlVmFsdWUpO1xuICAgIGNhbGxSZW1vdmUob2xkQ2hpbGRWbm9kZSk7XG4gICAgbmV3UGFyZW50Vm5vZGUuZG9tLnJlcGxhY2VDaGlsZChjaGlsZFZub2RlLmRvbSwgb2xkQ2hpbGRWbm9kZS5kb20pO1xuICB9XG5cbiAgbGV0IG5ld1RyZWVMZW5ndGggPSBuZXdUcmVlLmxlbmd0aDtcblxuICAvLyBJZiBuZXcgdHJlZSBpcyBlbXB0eSwgZmFzdCByZW1vdmUgYWxsIG9sZCBub2Rlc1xuICBpZiAobmV3VHJlZUxlbmd0aCA9PT0gMCkge1xuICAgIGZvciAobGV0IGkgPSBvbGRUcmVlTGVuZ3RoOyBpLS07ICkge1xuICAgICAgb2xkVHJlZVtpXSBpbnN0YW5jZW9mIFZub2RlICYmIGNhbGxSZW1vdmUob2xkVHJlZVtpXSk7XG4gICAgfVxuICAgIG5ld1BhcmVudFZub2RlLmRvbS50ZXh0Q29udGVudCA9IFwiXCI7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gRm9yIHRoZSByZXN0IG9mIHRoZSBjaGlsZHJlbiwgd2Ugc2hvdWxkIHJlbW92ZSB0aGVtXG4gIGZvciAobGV0IGkgPSBvbGRUcmVlTGVuZ3RoIC0gMTsgaSA+PSBuZXdUcmVlTGVuZ3RoOyAtLWkpIHtcbiAgICBvbGRUcmVlW2ldIGluc3RhbmNlb2YgVm5vZGUgJiYgY2FsbFJlbW92ZShvbGRUcmVlW2ldKTtcbiAgICBvbGRUcmVlW2ldLmRvbS5wYXJlbnROb2RlICYmIG9sZFRyZWVbaV0uZG9tLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQob2xkVHJlZVtpXS5kb20pO1xuICB9XG59O1xuXG52LnVwZGF0ZSA9ICgpID0+IHtcbiAgaWYgKHYubWFpblZub2RlKSB7XG4gICAgb25DbGVhbnVwTGlzdC5sZW5ndGggJiYgY2FsbENhbGxiYWNrTGlzdChvbkNsZWFudXBMaXN0KTtcbiAgICBsZXQgb2xkTWFpblZub2RlID0gdi5tYWluVm5vZGU7XG4gICAgbGV0IG5ld01haW5Wbm9kZSA9IG5ldyBWbm9kZShvbGRNYWluVm5vZGUudGFnLCBvbGRNYWluVm5vZGUucHJvcHMsIFtcbiAgICAgIHYuY29tcG9uZW50IGluc3RhbmNlb2YgVm5vZGVDb21wb25lbnQgPyB2LmNvbXBvbmVudCA6IHYodi5jb21wb25lbnQgYXMgQ29tcG9uZW50LCBudWxsKVxuICAgIF0pIGFzIFZub2RlV2l0aERvbTtcbiAgICBuZXdNYWluVm5vZGUuZG9tID0gb2xkTWFpblZub2RlLmRvbTtcbiAgICBuZXdNYWluVm5vZGUuaXNTVkcgPSBvbGRNYWluVm5vZGUuaXNTVkc7XG4gICAgdi5tYWluVm5vZGUgPSBuZXdNYWluVm5vZGU7XG4gICAgdi5wYXRjaChuZXdNYWluVm5vZGUsIG9sZE1haW5Wbm9kZSk7XG4gICAgaWYgKHYuaXNNb3VudGVkID09PSBmYWxzZSkge1xuICAgICAgb25Nb3VudExpc3QubGVuZ3RoICYmIGNhbGxDYWxsYmFja0xpc3Qob25Nb3VudExpc3QpO1xuICAgICAgdi5pc01vdW50ZWQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBvblVwZGF0ZUxpc3QubGVuZ3RoICYmIGNhbGxDYWxsYmFja0xpc3Qob25VcGRhdGVMaXN0KTtcbiAgICB9XG4gICAgaWYgKHYuaXNOb2RlSnMpIHtcbiAgICAgIHJldHVybiAobmV3TWFpblZub2RlLmRvbSBhcyBIVE1MRWxlbWVudCkuaW5uZXJIVE1MO1xuICAgIH1cbiAgfVxufTtcblxudi51bm1vdW50ID0gKCkgPT4ge1xuICBpZiAodi5tYWluVm5vZGUpIHtcbiAgICBvbkNsZWFudXBMaXN0Lmxlbmd0aCAmJiBjYWxsQ2FsbGJhY2tMaXN0KG9uQ2xlYW51cExpc3QpO1xuICAgIG9uVW5tb3VudExpc3QubGVuZ3RoICYmIGNhbGxDYWxsYmFja0xpc3Qob25Vbm1vdW50TGlzdCk7XG4gICAgdi5jb21wb25lbnQgPSBlbXB0eUNvbXBvbmVudDtcbiAgICBsZXQgcmVzdWx0ID0gdi51cGRhdGUoKTtcbiAgICB2Lm1haW5Wbm9kZSA9IG51bGw7XG4gICAgdi5jb21wb25lbnQgPSBudWxsO1xuICAgIHYuaXNNb3VudGVkID0gZmFsc2U7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufTtcblxudi5tb3VudCA9IChjb250YWluZXIsIGNvbXBvbmVudCkgPT4ge1xuICBpZiAodi5pc01vdW50ZWQpIHtcbiAgICB2LnVubW91bnQoKTtcbiAgfVxuXG4gIGxldCBtYWluQ29udGFpbmVyO1xuICBpZiAodi5pc05vZGVKcykge1xuICAgIG1haW5Db250YWluZXIgPSB0eXBlb2YgY29udGFpbmVyID09PSBcInN0cmluZ1wiID8gY3JlYXRlRG9tRWxlbWVudChjb250YWluZXIsIGNvbnRhaW5lciA9PT0gXCJzdmdcIikgOiBjb250YWluZXI7XG4gIH0gZWxzZSB7XG4gICAgbWFpbkNvbnRhaW5lciA9IHR5cGVvZiBjb250YWluZXIgPT09IFwic3RyaW5nXCIgPyAoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChjb250YWluZXIpWzBdIGFzIERvbUVsZW1lbnQpIDogY29udGFpbmVyO1xuICB9XG5cbiAgdi5tYWluVm5vZGUgPSBkb21Ub1Zub2RlKG1haW5Db250YWluZXIpO1xuICB2Lm1haW5Wbm9kZS5pc1NWRyA9IHYubWFpblZub2RlLnRhZyA9PT0gXCJzdmdcIjtcbiAgdi5jb21wb25lbnQgPSBjb21wb25lbnQ7XG5cbiAgcmV0dXJuIHYudXBkYXRlKCk7XG59O1xuXG5jb25zdCBwbHVnaW5zID0gbmV3IE1hcDxQbHVnaW4sIGFueT4oKTtcblxudi51c2UgPSAocGx1Z2luOiBQbHVnaW4sIG9wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sLCBhbnk+KTogdm9pZCB8IGFueSA9PiB7XG4gIGlmIChwbHVnaW5zLmhhcyhwbHVnaW4pKSB7XG4gICAgcmV0dXJuIHBsdWdpbnMuZ2V0KHBsdWdpbik7XG4gIH1cblxuICBsZXQgcmVzdWx0ID0gcGx1Z2luKHYsIG9wdGlvbnMpO1xuICBwbHVnaW5zLnNldChwbHVnaW4sIHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5sZXQgaGlkZURpcmVjdGl2ZSA9ICh0ZXN0OiBib29sZWFuKSA9PiAoYm9vbDogYm9vbGVhbiwgdm5vZGU6IFZub2RlSW50ZXJmYWNlLCBvbGRub2RlPzogVm5vZGVJbnRlcmZhY2UgfCBWbm9kZVRleHRJbnRlcmZhY2UpID0+IHtcbiAgbGV0IHZhbHVlID0gdGVzdCA/IGJvb2wgOiAhYm9vbDtcbiAgaWYgKHZhbHVlKSB7XG4gICAgbGV0IG5ld2RvbSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFwiXCIpO1xuICAgIGlmIChvbGRub2RlICYmIG9sZG5vZGUuZG9tICYmIG9sZG5vZGUuZG9tLnBhcmVudE5vZGUpIHtcbiAgICAgIG9sZG5vZGUgaW5zdGFuY2VvZiBWbm9kZSAmJiBjYWxsUmVtb3ZlKG9sZG5vZGUpO1xuICAgICAgb2xkbm9kZS5kb20ucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3ZG9tLCBvbGRub2RlLmRvbSk7XG4gICAgfVxuICAgIHZub2RlLnRhZyA9IFwiI3RleHRcIjtcbiAgICB2bm9kZS5jaGlsZHJlbiA9IFtdO1xuICAgIHZub2RlLnByb3BzID0ge307XG4gICAgdm5vZGUuZG9tID0gbmV3ZG9tIGFzIHVua25vd24gYXMgRG9tRWxlbWVudDtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbmNvbnN0IGRpcmVjdGl2ZXM6IERpcmVjdGl2ZXMgPSB7XG4gIFwidi1pZlwiOiBoaWRlRGlyZWN0aXZlKGZhbHNlKSxcbiAgXCJ2LXVubGVzc1wiOiBoaWRlRGlyZWN0aXZlKHRydWUpLFxuICBcInYtZm9yXCI6IChzZXQ6IHVua25vd25bXSwgdm5vZGU6IFZub2RlV2l0aERvbSkgPT4ge1xuICAgIHZub2RlLmNoaWxkcmVuID0gc2V0Lm1hcCh2bm9kZS5jaGlsZHJlblswXSk7XG4gIH0sXG4gIFwidi1zaG93XCI6IChib29sOiBib29sZWFuLCB2bm9kZTogVm5vZGVXaXRoRG9tKSA9PiB7XG4gICAgKFxuICAgICAgdm5vZGUuZG9tIGFzIHVua25vd24gYXMge1xuICAgICAgICBzdHlsZTogeyBkaXNwbGF5OiBzdHJpbmcgfTtcbiAgICAgIH1cbiAgICApLnN0eWxlLmRpc3BsYXkgPSBib29sID8gXCJcIiA6IFwibm9uZVwiO1xuICB9LFxuICBcInYtY2xhc3NcIjogKGNsYXNzZXM6IHsgW3g6IHN0cmluZ106IGJvb2xlYW4gfSwgdm5vZGU6IFZub2RlV2l0aERvbSkgPT4ge1xuICAgIGZvciAobGV0IG5hbWUgaW4gY2xhc3Nlcykge1xuICAgICAgKHZub2RlLmRvbSBhcyBEb21FbGVtZW50KS5jbGFzc0xpc3QudG9nZ2xlKG5hbWUsIGNsYXNzZXNbbmFtZV0pO1xuICAgIH1cbiAgfSxcbiAgXCJ2LWh0bWxcIjogKGh0bWw6IHN0cmluZywgdm5vZGU6IFZub2RlV2l0aERvbSkgPT4ge1xuICAgIHZub2RlLmNoaWxkcmVuID0gW3YudHJ1c3QoaHRtbCldO1xuICB9LFxuICBcInYtbW9kZWxcIjogKFttb2RlbCwgcHJvcGVydHksIGV2ZW50XTogYW55W10sIHZub2RlOiBWbm9kZVdpdGhEb20sIG9sZFZub2RlPzogVm5vZGVXaXRoRG9tKSA9PiB7XG4gICAgbGV0IHZhbHVlO1xuICAgIGxldCBoYW5kbGVyO1xuICAgIGlmICh2bm9kZS50YWcgPT09IFwiaW5wdXRcIikge1xuICAgICAgZXZlbnQgPSBldmVudCB8fCBcIm9uaW5wdXRcIjtcbiAgICAgIHN3aXRjaCAodm5vZGUucHJvcHMudHlwZSkge1xuICAgICAgICBjYXNlIFwiY2hlY2tib3hcIjoge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG1vZGVsW3Byb3BlcnR5XSkpIHtcbiAgICAgICAgICAgIGhhbmRsZXIgPSAoZTogRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgbGV0IHZhbCA9IChlLnRhcmdldCBhcyBEb21FbGVtZW50ICYgUmVjb3JkPHN0cmluZywgYW55PikudmFsdWU7XG4gICAgICAgICAgICAgIGxldCBpZHggPSBtb2RlbFtwcm9wZXJ0eV0uaW5kZXhPZih2YWwpO1xuICAgICAgICAgICAgICBpZiAoaWR4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIG1vZGVsW3Byb3BlcnR5XS5wdXNoKHZhbCk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbW9kZWxbcHJvcGVydHldLnNwbGljZShpZHgsIDEpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdmFsdWUgPSBtb2RlbFtwcm9wZXJ0eV0uaW5kZXhPZih2bm9kZS5kb20udmFsdWUpICE9PSAtMTtcbiAgICAgICAgICB9IGVsc2UgaWYgKFwidmFsdWVcIiBpbiB2bm9kZS5wcm9wcykge1xuICAgICAgICAgICAgaGFuZGxlciA9ICgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKG1vZGVsW3Byb3BlcnR5XSA9PT0gdm5vZGUucHJvcHMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBtb2RlbFtwcm9wZXJ0eV0gPSBudWxsO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG1vZGVsW3Byb3BlcnR5XSA9IHZub2RlLnByb3BzLnZhbHVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdmFsdWUgPSBtb2RlbFtwcm9wZXJ0eV0gPT09IHZub2RlLnByb3BzLnZhbHVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBoYW5kbGVyID0gKCkgPT4gKG1vZGVsW3Byb3BlcnR5XSA9ICFtb2RlbFtwcm9wZXJ0eV0pO1xuICAgICAgICAgICAgdmFsdWUgPSBtb2RlbFtwcm9wZXJ0eV07XG4gICAgICAgICAgfVxuICAgICAgICAgIHNldEF0dHJpYnV0ZShcImNoZWNrZWRcIiwgdmFsdWUsIHZub2RlLCBvbGRWbm9kZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcInJhZGlvXCI6IHtcbiAgICAgICAgICBzZXRBdHRyaWJ1dGUoXCJjaGVja2VkXCIsIG1vZGVsW3Byb3BlcnR5XSA9PT0gdm5vZGUuZG9tLnZhbHVlLCB2bm9kZSwgb2xkVm5vZGUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICBzZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiLCBtb2RlbFtwcm9wZXJ0eV0sIHZub2RlLCBvbGRWbm9kZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHZub2RlLnRhZyA9PT0gXCJzZWxlY3RcIikge1xuICAgICAgZXZlbnQgPSBldmVudCB8fCBcIm9uY2xpY2tcIjtcbiAgICAgIGlmICh2bm9kZS5wcm9wcy5tdWx0aXBsZSkge1xuICAgICAgICBoYW5kbGVyID0gKGU6IEV2ZW50ICYgUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgICAgIGxldCB2YWwgPSAoZS50YXJnZXQgYXMgRG9tRWxlbWVudCAmIFJlY29yZDxzdHJpbmcsIGFueT4pLnZhbHVlO1xuICAgICAgICAgIGlmIChlLmN0cmxLZXkpIHtcbiAgICAgICAgICAgIGxldCBpZHggPSBtb2RlbFtwcm9wZXJ0eV0uaW5kZXhPZih2YWwpO1xuICAgICAgICAgICAgaWYgKGlkeCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgbW9kZWxbcHJvcGVydHldLnB1c2godmFsKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG1vZGVsW3Byb3BlcnR5XS5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbW9kZWxbcHJvcGVydHldLnNwbGljZSgwLCBtb2RlbFtwcm9wZXJ0eV0ubGVuZ3RoKTtcbiAgICAgICAgICAgIG1vZGVsW3Byb3BlcnR5XS5wdXNoKHZhbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2bm9kZS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZDogVm5vZGVJbnRlcmZhY2UpID0+IHtcbiAgICAgICAgICBpZiAoY2hpbGQudGFnID09PSBcIm9wdGlvblwiKSB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBcInZhbHVlXCIgaW4gY2hpbGQucHJvcHMgPyBjaGlsZC5wcm9wcy52YWx1ZSA6IGNoaWxkLmNoaWxkcmVuLmpvaW4oXCJcIikudHJpbSgpO1xuICAgICAgICAgICAgY2hpbGQucHJvcHMuc2VsZWN0ZWQgPSBtb2RlbFtwcm9wZXJ0eV0uaW5kZXhPZih2YWx1ZSkgIT09IC0xO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2bm9kZS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZDogVm5vZGVJbnRlcmZhY2UpID0+IHtcbiAgICAgICAgICBpZiAoY2hpbGQudGFnID09PSBcIm9wdGlvblwiKSB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBcInZhbHVlXCIgaW4gY2hpbGQucHJvcHMgPyBjaGlsZC5wcm9wcy52YWx1ZSA6IGNoaWxkLmNoaWxkcmVuLmpvaW4oXCJcIikudHJpbSgpO1xuICAgICAgICAgICAgY2hpbGQucHJvcHMuc2VsZWN0ZWQgPSB2YWx1ZSA9PT0gbW9kZWxbcHJvcGVydHldO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh2bm9kZS50YWcgPT09IFwidGV4dGFyZWFcIikge1xuICAgICAgZXZlbnQgPSBldmVudCB8fCBcIm9uaW5wdXRcIjtcbiAgICAgIHZub2RlLmNoaWxkcmVuID0gW21vZGVsW3Byb3BlcnR5XV07XG4gICAgfVxuXG4gICAgaWYgKCF2bm9kZS5wcm9wc1tldmVudF0pIHtcbiAgICAgIGlmICghaGFuZGxlcikge1xuICAgICAgICBoYW5kbGVyID0gKGU6IEV2ZW50KSA9PiAobW9kZWxbcHJvcGVydHldID0gKGUudGFyZ2V0IGFzIERvbUVsZW1lbnQgJiBSZWNvcmQ8c3RyaW5nLCBhbnk+KS52YWx1ZSk7XG4gICAgICB9XG4gICAgICBzZXRBdHRyaWJ1dGUoZXZlbnQsIGhhbmRsZXIsIHZub2RlLCBvbGRWbm9kZSk7XG4gICAgfVxuICB9XG59O1xuXG52LmRpcmVjdGl2ZSA9IChuYW1lOiBzdHJpbmcsIGRpcmVjdGl2ZTogRGlyZWN0aXZlKSA9PiB7XG4gIGxldCBmdWxsTmFtZSA9IGB2LSR7bmFtZX1gO1xuICBkaXJlY3RpdmVzW2Z1bGxOYW1lXSA9IGRpcmVjdGl2ZTtcbiAgcmVzZXJ2ZWRQcm9wc1tmdWxsTmFtZV0gPSB0cnVlO1xufTtcblxudi5pc05vZGVKcyA9IEJvb2xlYW4odHlwZW9mIHByb2Nlc3MgIT09IFwidW5kZWZpbmVkXCIgJiYgcHJvY2Vzcy52ZXJzaW9ucyAmJiBwcm9jZXNzLnZlcnNpb25zLm5vZGUpO1xudi5pc01vdW50ZWQgPSBmYWxzZTtcblxudi5jb21wb25lbnQgPSBudWxsO1xudi5tYWluVm5vZGUgPSBudWxsO1xuXG52LmRpcmVjdGl2ZXMgPSBkaXJlY3RpdmVzO1xudi5yZXNlcnZlZFByb3BzID0gcmVzZXJ2ZWRQcm9wcztcbnYuY3VycmVudCA9IGN1cnJlbnQ7XG5cbnYuc2V0QXR0cmlidXRlID0gc2V0QXR0cmlidXRlO1xuXG5leHBvcnQgZGVmYXVsdCB2O1xuIl0sIm1hcHBpbmdzIjoiTUFzQkEsSUFBTUEsRUFBbUIsQ0FBQyxFQUNwQkMsRUFBNEIsR0FDNUJDLEVBQTBCLEdBQzFCQyxFQUEyQixHQUMzQkMsRUFBNEIsR0FDNUJDLEVBQTRCLElBQU0sR0FFbENDLEVBQTJDLENBQUMsRUFDbEQsU0FBU0MsRUFBY0MsR0FDckIsSUFBSUMsRUFBTUQsRUFBRUUsT0FDUkMsRUFBTyxPQUFPSCxFQUFFSSxPQUNwQixLQUFPSCxHQUFLLENBQ1YsR0FBSUEsRUFBSUUsR0FNTixPQUxBRixFQUFJRSxHQUFNSCxFQUFHQyxRQUNSRCxFQUFFSyxrQkFFTEMsRUFBRUMsVUFJTk4sRUFBTUEsRUFBSU8sVUFDWixDQUNGLENBRUEsSUFBTUMsRUFBc0MsQ0FDMUNDLEtBQUssRUFDTEMsT0FBTyxFQUNQQyxVQUFVLEVBQ1ZDLFVBQVUsRUFDVkMsVUFBVSxFQUNWQyxjQUFjLEVBQ2QsVUFBVSxFQUdWLFFBQVEsRUFDUixZQUFZLEVBQ1osU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsVUFBVSxFQUNWLFdBQVcsR0FHYixTQUFTQyxFQUFpQkMsRUFBYUMsR0FBaUIsR0FDdEQsT0FBT0EsRUFBUUMsU0FBU0MsZ0JBQWdCLDZCQUE4QkgsR0FBT0UsU0FBU0UsY0FBY0osRUFDdEcsQ0FFTyxJQUFNSyxFQUFRLFNBQXFDTCxFQUFhTSxFQUFjQyxHQUNuRkMsS0FBS1IsSUFBTUEsRUFDWFEsS0FBS0YsTUFBUUEsRUFDYkUsS0FBS0QsU0FBV0EsQ0FDbEIsRUFFYUUsRUFBWSxTQUE2Q0MsR0FDcEVGLEtBQUtFLFVBQVlBLENBQ25CLEVBRWFDLEVBQWlCLFNBRTVCQyxFQUNBTixFQUNBQyxHQUVBQyxLQUFLSSxVQUFZQSxFQUNqQkosS0FBS0YsTUFBUUEsRUFD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
|
|
1
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjdXJyZW50Iiwib25DbGVhbnVwTGlzdCIsIm9uTW91bnRMaXN0Iiwib25VcGRhdGVMaXN0Iiwib25Vbm1vdW50TGlzdCIsImVtcHR5Q29tcG9uZW50IiwiZXZlbnRMaXN0ZW5lck5hbWVzIiwiZXZlbnRMaXN0ZW5lciIsImUiLCJkb20iLCJ0YXJnZXQiLCJuYW1lIiwidHlwZSIsImRlZmF1bHRQcmV2ZW50ZWQiLCJ2IiwidXBkYXRlIiwicGFyZW50Tm9kZSIsInJlc2VydmVkUHJvcHMiLCJrZXkiLCJzdGF0ZSIsIm9uY3JlYXRlIiwib251cGRhdGUiLCJvbnJlbW92ZSIsInNob3VsZHVwZGF0ZSIsImNyZWF0ZURvbUVsZW1lbnQiLCJ0YWciLCJpc1NWRyIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudE5TIiwiY3JlYXRlRWxlbWVudCIsIlZub2RlIiwicHJvcHMiLCJjaGlsZHJlbiIsInRoaXMiLCJWbm9kZVRleHQiLCJub2RlVmFsdWUiLCJWbm9kZUNvbXBvbmVudCIsImNvbXBvbmVudCIsImRvbVRvVm5vZGUiLCJpIiwiY2hpbGROb2RlcyIsImxlbmd0aCIsImNoaWxkRG9tIiwibm9kZVR5cGUiLCJwdXNoIiwidm5vZGUiLCJhdHRyaWJ1dGVzIiwiYXR0ciIsIm5vZGVOYW1lIiwidGFnTmFtZSIsInRvTG93ZXJDYXNlIiwidGFnT3JDb21wb25lbnQiLCJjYWxsQ2FsbGJhY2tMaXN0IiwibGlzdCIsInNoYXJlZFNldEF0dHJpYnV0ZSIsInByb3AiLCJuZXdWbm9kZSIsIm9sZFZub2RlIiwiZGlyZWN0aXZlcyIsInZhbHVlIiwibWFpblZub2RlIiwiYWRkRXZlbnRMaXN0ZW5lciIsInNsaWNlIiwicmVtb3ZlQXR0cmlidXRlIiwic2V0QXR0cmlidXRlIiwic2V0QXR0cmlidXRlcyIsImZyYWdtZW50Iiwidm5vZGVzIiwidHJ1c3QiLCJodG1sU3RyaW5nIiwiZGl2IiwiaW5uZXJIVE1MIiwidHJpbSIsIm1hcCIsImNhbGwiLCJpdGVtIiwiaXNWbm9kZSIsIm9iamVjdCIsImlzVm5vZGVDb21wb25lbnQiLCJpc1ZhbHlyaWFuQ29tcG9uZW50IiwiQm9vbGVhbiIsImlzQ29tcG9uZW50Iiwib25DbGVhbnVwIiwiY2FsbGJhY2siLCJpbmRleE9mIiwib25Vbm1vdW50Iiwib25Nb3VudCIsIm9uVXBkYXRlIiwiY2FsbFJlbW92ZSIsImwiLCJwYXRjaCIsIm5ld1BhcmVudFZub2RlIiwib2xkUGFyZW50Vm5vZGUiLCJvbGRUcmVlIiwibmV3VHJlZSIsIm9sZFRyZWVMZW5ndGgiLCJuZXdUcmVlTGVuZ3RoIiwib2xkS2V5ZWRMaXN0IiwibmV3S2V5ZWRMaXN0IiwiY2hpbGRWbm9kZSIsIm9sZENoaWxkVm5vZGUiLCJzaG91bGRQYXRjaCIsImlzTW91bnRlZCIsInJlcGxhY2VDaGlsZCIsImFwcGVuZENoaWxkIiwicmVtb3ZlQ2hpbGQiLCJzcGxpY2UiLCJBcnJheSIsImlzQXJyYXkiLCJ2aWV3IiwiYmluZCIsIlN0cmluZyIsImNyZWF0ZVRleHROb2RlIiwidGV4dENvbnRlbnQiLCJvbGRNYWluVm5vZGUiLCJuZXdNYWluVm5vZGUiLCJpc05vZGVKcyIsInVubW91bnQiLCJyZXN1bHQiLCJtb3VudCIsImNvbnRhaW5lciIsIm1haW5Db250YWluZXIiLCJxdWVyeVNlbGVjdG9yQWxsIiwicGx1Z2lucyIsIk1hcCIsInVzZSIsInBsdWdpbiIsIm9wdGlvbnMiLCJoYXMiLCJnZXQiLCJzZXQiLCJoaWRlRGlyZWN0aXZlIiwidGVzdCIsImJvb2wiLCJvbGRub2RlIiwibmV3ZG9tIiwic3R5bGUiLCJkaXNwbGF5IiwiY2xhc3NlcyIsImNsYXNzTGlzdCIsInRvZ2dsZSIsImh0bWwiLCJtb2RlbCIsInByb3BlcnR5IiwiZXZlbnQiLCJoYW5kbGVyIiwidmFsIiwiaWR4IiwibXVsdGlwbGUiLCJjdHJsS2V5IiwiZm9yRWFjaCIsImNoaWxkIiwiam9pbiIsInNlbGVjdGVkIiwiZGlyZWN0aXZlIiwiZnVsbE5hbWUiLCJwcm9jZXNzIiwidmVyc2lvbnMiLCJub2RlIl0sInNvdXJjZXMiOlsiLi4vbGliL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHNvbmFyanMvY29nbml0aXZlLWNvbXBsZXhpdHkgKi9cbi8qIGVzbGludC1kaXNhYmxlIGNvbXBsZXhpdHkgKi9cblxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cImludGVyZmFjZXMudHNcIiAvPlxuXG5pbXBvcnQge1xuICBDaGlsZHJlbixcbiAgQ29tcG9uZW50LFxuICBDdXJyZW50LFxuICBEaXJlY3RpdmUsXG4gIERpcmVjdGl2ZXMsXG4gIERvbUVsZW1lbnQsXG4gIFBsdWdpbixcbiAgUHJvcHMsXG4gIFZhbHlyaWFuLFxuICBWYWx5cmlhbkNvbXBvbmVudCxcbiAgVm5vZGVDb21wb25lbnRJbnRlcmZhY2UsXG4gIFZub2RlSW50ZXJmYWNlLFxuICBWbm9kZVRleHRJbnRlcmZhY2UsXG4gIFZub2RlV2l0aERvbVxufSBmcm9tIFwiVmFseXJpYW5cIjtcblxuY29uc3QgY3VycmVudDogQ3VycmVudCA9IHt9O1xuY29uc3Qgb25DbGVhbnVwTGlzdDogRnVuY3Rpb25bXSA9IFtdO1xuY29uc3Qgb25Nb3VudExpc3Q6IEZ1bmN0aW9uW10gPSBbXTtcbmNvbnN0IG9uVXBkYXRlTGlzdDogRnVuY3Rpb25bXSA9IFtdO1xuY29uc3Qgb25Vbm1vdW50TGlzdDogRnVuY3Rpb25bXSA9IFtdO1xuY29uc3QgZW1wdHlDb21wb25lbnQ6IENvbXBvbmVudCA9ICgpID0+IFwiXCI7XG5cbmNvbnN0IGV2ZW50TGlzdGVuZXJOYW1lczogUmVjb3JkPHN0cmluZywgdHJ1ZT4gPSB7fTtcbmZ1bmN0aW9uIGV2ZW50TGlzdGVuZXIoZTogRXZlbnQpIHtcbiAgbGV0IGRvbSA9IGUudGFyZ2V0IGFzIERvbUVsZW1lbnQ7XG4gIGxldCBuYW1lID0gYHYtb24ke2UudHlwZX1gO1xuICB3aGlsZSAoZG9tKSB7XG4gICAgaWYgKGRvbVtuYW1lXSkge1xuICAgICAgZG9tW25hbWVdKGUsIGRvbSk7XG4gICAgICBpZiAoIWUuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgICAgdi51cGRhdGUoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZG9tID0gZG9tLnBhcmVudE5vZGUgYXMgRG9tRWxlbWVudDtcbiAgfVxufVxuXG5jb25zdCByZXNlcnZlZFByb3BzOiBSZWNvcmQ8c3RyaW5nLCB0cnVlPiA9IHtcbiAga2V5OiB0cnVlLFxuICBzdGF0ZTogdHJ1ZSxcbiAgb25jcmVhdGU6IHRydWUsXG4gIG9udXBkYXRlOiB0cnVlLFxuICBvbnJlbW92ZTogdHJ1ZSxcbiAgc2hvdWxkdXBkYXRlOiB0cnVlLFxuICBcInYtb25jZVwiOiB0cnVlLFxuXG4gIC8vIEJ1aWx0IGluIGRpcmVjdGl2ZXNcbiAgXCJ2LWlmXCI6IHRydWUsXG4gIFwidi11bmxlc3NcIjogdHJ1ZSxcbiAgXCJ2LWZvclwiOiB0cnVlLFxuICBcInYtc2hvd1wiOiB0cnVlLFxuICBcInYtY2xhc3NcIjogdHJ1ZSxcbiAgXCJ2LWh0bWxcIjogdHJ1ZSxcbiAgXCJ2LW1vZGVsXCI6IHRydWVcbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZURvbUVsZW1lbnQodGFnOiBzdHJpbmcsIGlzU1ZHOiBib29sZWFuID0gZmFsc2UpOiBEb21FbGVtZW50IHtcbiAgcmV0dXJuIGlzU1ZHID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgdGFnKSA6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtcbn1cblxuZXhwb3J0IGNvbnN0IFZub2RlID0gZnVuY3Rpb24gVm5vZGUodGhpczogVm5vZGVJbnRlcmZhY2UsIHRhZzogc3RyaW5nLCBwcm9wczogUHJvcHMsIGNoaWxkcmVuOiBDaGlsZHJlbikge1xuICB0aGlzLnRhZyA9IHRhZztcbiAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW47XG59IGFzIHVua25vd24gYXMgVm5vZGVJbnRlcmZhY2U7XG5cbmV4cG9ydCBjb25zdCBWbm9kZVRleHQgPSBmdW5jdGlvbiBWbm9kZVRleHQodGhpczogVm5vZGVUZXh0SW50ZXJmYWNlLCBub2RlVmFsdWU6IHN0cmluZykge1xuICB0aGlzLm5vZGVWYWx1ZSA9IG5vZGVWYWx1ZTtcbn0gYXMgdW5rbm93biBhcyBWbm9kZVRleHRJbnRlcmZhY2U7XG5cbmV4cG9ydCBjb25zdCBWbm9kZUNvbXBvbmVudCA9IGZ1bmN0aW9uIFZub2RlQ29tcG9uZW50KFxuICB0aGlzOiBWbm9kZUNvbXBvbmVudEludGVyZmFjZSxcbiAgY29tcG9uZW50OiBDb21wb25lbnQgfCBWYWx5cmlhbkNvbXBvbmVudCxcbiAgcHJvcHM6IFByb3BzLFxuICBjaGlsZHJlbjogQ2hpbGRyZW5cbikge1xuICB0aGlzLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW47XG59IGFzIHVua25vd24gYXMgVm5vZGVDb21wb25lbnRJbnRlcmZhY2U7XG5cbi8vIFRyYW5zZm9ybXMgYSBET00gbm9kZSB0byBhIFZOb2RlXG5mdW5jdGlvbiBkb21Ub1Zub2RlKGRvbTogYW55KTogVm5vZGVXaXRoRG9tIHtcbiAgbGV0IGNoaWxkcmVuID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZG9tLmNoaWxkTm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgY2hpbGREb20gPSBkb20uY2hpbGROb2Rlc1tpXTtcbiAgICBpZiAoY2hpbGREb20ubm9kZVR5cGUgPT09IDMpIHtcbiAgICAgIGxldCB2bm9kZSA9IG5ldyBWbm9kZVRleHQoY2hpbGREb20ubm9kZVZhbHVlKTtcbiAgICAgIHZub2RlLmRvbSA9IGNoaWxkRG9tO1xuICAgICAgY2hpbGRyZW4ucHVzaCh2bm9kZSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoY2hpbGREb20ubm9kZVR5cGUgPT09IDEpIHtcbiAgICAgIGNoaWxkcmVuLnB1c2goZG9tVG9Wbm9kZShjaGlsZERvbSkpO1xuICAgIH1cbiAgfVxuXG4gIGxldCBwcm9wczogUHJvcHMgPSB7fTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkb20uYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBhdHRyID0gZG9tLmF0dHJpYnV0ZXNbaV07XG4gICAgcHJvcHNbYXR0ci5ub2RlTmFtZV0gPSBhdHRyLm5vZGVWYWx1ZTtcbiAgfVxuXG4gIGxldCB2bm9kZSA9IG5ldyBWbm9kZShkb20udGFnTmFtZS50b0xvd2VyQ2FzZSgpLCBwcm9wcywgY2hpbGRyZW4pO1xuICB2bm9kZS5kb20gPSBkb207XG4gIHJldHVybiB2bm9kZSBhcyBWbm9kZVdpdGhEb207XG59XG5cbmV4cG9ydCBjb25zdCB2OiBWYWx5cmlhbiA9ICh0YWdPckNvbXBvbmVudCwgcHJvcHMsIC4uLmNoaWxkcmVuKSA9PiB7XG4gIGlmICh0eXBlb2YgdGFnT3JDb21wb25lbnQgPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gbmV3IFZub2RlKHRhZ09yQ29tcG9uZW50LCBwcm9wcyB8fCB7fSwgY2hpbGRyZW4pO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBWbm9kZUNvbXBvbmVudCh0YWdPckNvbXBvbmVudCwgcHJvcHMgfHwge30sIGNoaWxkcmVuKTtcbn07XG5cbnYuZnJhZ21lbnQgPSAocHJvcHM6IFByb3BzLCAuLi52bm9kZXM6IENoaWxkcmVuKSA9PiB7XG4gIHJldHVybiB2bm9kZXM7XG59O1xuXG52LnRydXN0ID0gKGh0bWxTdHJpbmc6IHN0cmluZykgPT4ge1xuICBsZXQgZGl2ID0gY3JlYXRlRG9tRWxlbWVudChcImRpdlwiKTtcbiAgZGl2LmlubmVySFRNTCA9IGh0bWxTdHJpbmcudHJpbSgpO1xuXG4gIHJldHVybiBbXS5tYXAuY2FsbChkaXYuY2hpbGROb2RlcywgKGl0ZW0pID0+IGRvbVRvVm5vZGUoaXRlbSkpIGFzIFZub2RlV2l0aERvbVtdO1xufTtcblxudi5pc1Zub2RlID0gKG9iamVjdD86IHVua25vd24gfCBWbm9kZUludGVyZmFjZSk6IG9iamVjdCBpcyBWbm9kZUludGVyZmFjZSA9PiB7XG4gIHJldHVybiBvYmplY3QgaW5zdGFuY2VvZiBWbm9kZTtcbn07XG5cbnYuaXNWbm9kZUNvbXBvbmVudCA9IChvYmplY3Q/OiB1bmtub3duIHwgVm5vZGVDb21wb25lbnRJbnRlcmZhY2UpOiBvYmplY3QgaXMgVm5vZGVDb21wb25lbnRJbnRlcmZhY2UgPT4ge1xuICByZXR1cm4gb2JqZWN0IGluc3RhbmNlb2YgVm5vZGVDb21wb25lbnQ7XG59O1xuXG52LmlzVmFseXJpYW5Db21wb25lbnQgPSAoY29tcG9uZW50PzogdW5rbm93biB8IFZhbHlyaWFuQ29tcG9uZW50KTogY29tcG9uZW50IGlzIFZhbHlyaWFuQ29tcG9uZW50ID0+IHtcbiAgcmV0dXJuIEJvb2xlYW4oY29tcG9uZW50ICYmIHR5cGVvZiBjb21wb25lbnQgPT09IFwib2JqZWN0XCIgJiYgXCJ2aWV3XCIgaW4gY29tcG9uZW50KTtcbn07XG5cbnYuaXNDb21wb25lbnQgPSAoY29tcG9uZW50PzogdW5rbm93biB8IFZhbHlyaWFuQ29tcG9uZW50KTogY29tcG9uZW50IGlzIFZhbHlyaWFuQ29tcG9uZW50ID0+IHtcbiAgcmV0dXJuIEJvb2xlYW4oKGNvbXBvbmVudCAmJiB0eXBlb2YgY29tcG9uZW50ID09PSBcImZ1bmN0aW9uXCIpIHx8IHYuaXNWYWx5cmlhbkNvbXBvbmVudChjb21wb25lbnQpIHx8IHYuaXNWbm9kZUNvbXBvbmVudChjb21wb25lbnQpKTtcbn07XG5cbnYub25DbGVhbnVwID0gKGNhbGxiYWNrOiBGdW5jdGlvbik6IHZvaWQgPT4ge1xuICBpZiAob25DbGVhbnVwTGlzdC5pbmRleE9mKGNhbGxiYWNrKSA9PT0gLTEpIHtcbiAgICBvbkNsZWFudXBMaXN0LnB1c2goY2FsbGJhY2spO1xuICB9XG59O1xudi5vblVubW91bnQgPSAoY2FsbGJhY2s6IEZ1bmN0aW9uKTogdm9pZCA9PiB7XG4gIGlmIChvblVubW91bnRMaXN0LmluZGV4T2YoY2FsbGJhY2spID09PSAtMSkge1xuICAgIG9uVW5tb3VudExpc3QucHVzaChjYWxsYmFjayk7XG4gIH1cbn07XG52Lm9uTW91bnQgPSAoY2FsbGJhY2s6IEZ1bmN0aW9uKTogdm9pZCA9PiB7XG4gIGlmIChvbk1vdW50TGlzdC5pbmRleE9mKGNhbGxiYWNrKSA9PT0gLTEpIHtcbiAgICBvbk1vdW50TGlzdC5wdXNoKGNhbGxiYWNrKTtcbiAgfVxufTtcbnYub25VcGRhdGUgPSAoY2FsbGJhY2s6IEZ1bmN0aW9uKTogdm9pZCA9PiB7XG4gIGlmIChvblVwZGF0ZUxpc3QuaW5kZXhPZihjYWxsYmFjaykgPT09IC0xKSB7XG4gICAgb25VcGRhdGVMaXN0LnB1c2goY2FsbGJhY2spO1xuICB9XG59O1xuXG5mdW5jdGlvbiBjYWxsQ2FsbGJhY2tMaXN0KGxpc3Q6IEZ1bmN0aW9uW10pOiB2b2lkIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgbGlzdFtpXSgpO1xuICB9XG4gIGxpc3QubGVuZ3RoID0gMDtcbn1cblxuZnVuY3Rpb24gc2hhcmVkU2V0QXR0cmlidXRlKHByb3A6IHN0cmluZywgbmV3Vm5vZGU6IFZub2RlV2l0aERvbSwgb2xkVm5vZGU/OiBWbm9kZVdpdGhEb20pOiB2b2lkIHwgYm9vbGVhbiB7XG4gIGlmIChyZXNlcnZlZFByb3BzW3Byb3BdKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgaWYgKGRpcmVjdGl2ZXNbcHJvcF0pIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgICAgcmV0dXJuIGRpcmVjdGl2ZXNbcHJvcF0obmV3Vm5vZGUucHJvcHNbcHJvcF0sIG5ld1Zub2RlLCBvbGRWbm9kZSk7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIGxldCB2YWx1ZSA9IG5ld1Zub2RlLnByb3BzW3Byb3BdO1xuICBsZXQgZG9tID0gbmV3Vm5vZGUuZG9tO1xuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIGlmICghZXZlbnRMaXN0ZW5lck5hbWVzW3Byb3BdKSB7XG4gICAgICAodi5tYWluVm5vZGUgYXMgVm5vZGVXaXRoRG9tKS5kb20uYWRkRXZlbnRMaXN0ZW5lcihwcm9wLnNsaWNlKDIpLCBldmVudExpc3RlbmVyKTtcbiAgICAgIGV2ZW50TGlzdGVuZXJOYW1lc1twcm9wXSA9IHRydWU7XG4gICAgfVxuICAgIGRvbVtgdi0ke3Byb3B9YF0gPSB2YWx1ZTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAocHJvcCBpbiBkb20gJiYgIW5ld1Zub2RlLmlzU1ZHKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVxZXFlcVxuICAgIGlmIChkb21bcHJvcF0gIT0gdmFsdWUpIHtcbiAgICAgIGRvbVtwcm9wXSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICghb2xkVm5vZGUgfHwgdmFsdWUgIT09IG9sZFZub2RlLnByb3BzW3Byb3BdKSB7XG4gICAgaWYgKHZhbHVlID09PSBmYWxzZSkge1xuICAgICAgZG9tLnJlbW92ZUF0dHJpYnV0ZShwcm9wKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9tLnNldEF0dHJpYnV0ZShwcm9wLCB2YWx1ZSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnksIHZub2RlOiBWbm9kZVdpdGhEb20sIG9sZFZub2RlPzogVm5vZGVXaXRoRG9tKTogdm9pZCB7XG4gIHZub2RlLnByb3BzW25hbWVdID0gdmFsdWU7XG4gIHNoYXJlZFNldEF0dHJpYnV0ZShuYW1lLCB2bm9kZSBhcyBWbm9kZVdpdGhEb20sIG9sZFZub2RlKTtcbn1cblxuZnVuY3Rpb24gc2V0QXR0cmlidXRlcyhuZXdWbm9kZTogVm5vZGVXaXRoRG9tLCBvbGRWbm9kZT86IFZub2RlV2l0aERvbSk6IHZvaWQge1xuICBmb3IgKGxldCBwcm9wIGluIG5ld1Zub2RlLnByb3BzKSB7XG4gICAgaWYgKHNoYXJlZFNldEF0dHJpYnV0ZShwcm9wLCBuZXdWbm9kZSwgb2xkVm5vZGUpID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGlmIChvbGRWbm9kZSkge1xuICAgIGZvciAobGV0IG5hbWUgaW4gb2xkVm5vZGUucHJvcHMpIHtcbiAgICAgIGlmIChuYW1lIGluIG5ld1Zub2RlLnByb3BzID09PSBmYWxzZSAmJiB0eXBlb2Ygb2xkVm5vZGUucHJvcHNbbmFtZV0gIT09IFwiZnVuY3Rpb25cIiAmJiAhcmVzZXJ2ZWRQcm9wc1tuYW1lXSkge1xuICAgICAgICBpZiAobmFtZSBpbiBuZXdWbm9kZS5kb20gJiYgbmV3Vm5vZGUuaXNTVkcgPT09IGZhbHNlKSB7XG4gICAgICAgICAgbmV3Vm5vZGUuZG9tW25hbWVdID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdWbm9kZS5kb20ucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IGNhbGxSZW1vdmUgPSAodm5vZGU6IFZub2RlSW50ZXJmYWNlKSA9PiB7XG4gIGZvciAobGV0IGkgPSAwLCBsID0gdm5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgdm5vZGUuY2hpbGRyZW5baV0gaW5zdGFuY2VvZiBWbm9kZSAmJiBjYWxsUmVtb3ZlKHZub2RlLmNoaWxkcmVuW2ldKTtcbiAgfVxuXG4gIHZub2RlLnByb3BzLm9ucmVtb3ZlICYmIHZub2RlLnByb3BzLm9ucmVtb3ZlKHZub2RlKTtcbn07XG5cbi8vIFBhdGNoIGEgRE9NIG5vZGUgd2l0aCBhIG5ldyBWTm9kZSB0cmVlXG52LnBhdGNoID0gKG5ld1BhcmVudFZub2RlOiBWbm9kZVdpdGhEb20sIG9sZFBhcmVudFZub2RlPzogVm5vZGVXaXRoRG9tKTogdm9pZCA9PiB7XG4gIGxldCBvbGRUcmVlID0gb2xkUGFyZW50Vm5vZGU/LmNoaWxkcmVuIHx8IFtdO1xuICBsZXQgbmV3VHJlZSA9IG5ld1BhcmVudFZub2RlLmNoaWxkcmVuO1xuICBsZXQgb2xkVHJlZUxlbmd0aCA9IG9sZFRyZWUubGVuZ3RoO1xuXG4gIGN1cnJlbnQudm5vZGUgPSBuZXdQYXJlbnRWbm9kZTtcbiAgY3VycmVudC5vbGRWbm9kZSA9IG9sZFBhcmVudFZub2RlO1xuXG4gIGlmIChuZXdUcmVlWzBdIGluc3RhbmNlb2YgVm5vZGUgJiYgb2xkVHJlZVswXSBpbnN0YW5jZW9mIFZub2RlICYmIFwia2V5XCIgaW4gbmV3VHJlZVswXS5wcm9wcyAmJiBcImtleVwiIGluIG9sZFRyZWVbMF0ucHJvcHMpIHtcbiAgICBsZXQgbmV3VHJlZUxlbmd0aCA9IG5ld1RyZWUubGVuZ3RoO1xuICAgIGxldCBvbGRLZXllZExpc3Q6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9sZFRyZWVMZW5ndGg7IGkrKykge1xuICAgICAgb2xkS2V5ZWRMaXN0W29sZFRyZWVbaV0ucHJvcHMua2V5XSA9IGk7XG4gICAgfVxuXG4gICAgbGV0IG5ld0tleWVkTGlzdDogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmV3VHJlZUxlbmd0aDsgaSsrKSB7XG4gICAgICBuZXdLZXllZExpc3RbbmV3VHJlZVtpXS5wcm9wcy5rZXldID0gaTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5ld1RyZWVMZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGNoaWxkVm5vZGUgPSBuZXdUcmVlW2ldO1xuICAgICAgbGV0IG9sZENoaWxkVm5vZGUgPSBvbGRUcmVlW29sZEtleWVkTGlzdFtjaGlsZFZub2RlLnByb3BzLmtleV1dO1xuICAgICAgbGV0IHNob3VsZFBhdGNoID0gdHJ1ZTtcblxuICAgICAgaWYgKG9sZENoaWxkVm5vZGUpIHtcbiAgICAgICAgY2hpbGRWbm9kZS5kb20gPSBvbGRDaGlsZFZub2RlLmRvbTtcbiAgICAgICAgaWYgKGNoaWxkVm5vZGUucHJvcHNbXCJ2LW9uY2VcIl0gfHwgKGNoaWxkVm5vZGUucHJvcHMuc2hvdWxkdXBkYXRlICYmIGNoaWxkVm5vZGUucHJvcHMuc2hvdWxkdXBkYXRlKGNoaWxkVm5vZGUsIG9sZENoaWxkVm5vZGUpID09PSBmYWxzZSkpIHtcbiAgICAgICAgICBjaGlsZFZub2RlLmNoaWxkcmVuID0gb2xkQ2hpbGRWbm9kZS5jaGlsZHJlbjtcbiAgICAgICAgICBzaG91bGRQYXRjaCA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldEF0dHJpYnV0ZXMoY2hpbGRWbm9kZSwgb2xkQ2hpbGRWbm9kZSk7XG4gICAgICAgICAgaWYgKHYuaXNNb3VudGVkKSB7XG4gICAgICAgICAgICBjaGlsZFZub2RlLnByb3BzLm9udXBkYXRlICYmIGNoaWxkVm5vZGUucHJvcHMub251cGRhdGUoY2hpbGRWbm9kZSwgb2xkQ2hpbGRWbm9kZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNoaWxkVm5vZGUucHJvcHMub25jcmVhdGUgJiYgY2hpbGRWbm9kZS5wcm9wcy5vbmNyZWF0ZShjaGlsZFZub2RlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNoaWxkVm5vZGUuZG9tID0gY3JlYXRlRG9tRWxlbWVudChjaGlsZFZub2RlLnRhZywgY2hpbGRWbm9kZS5pc1NWRyk7XG4gICAgICAgIHNldEF0dHJpYnV0ZXMoY2hpbGRWbm9kZSk7XG4gICAgICAgIGNoaWxkVm5vZGUucHJvcHMub25jcmVhdGUgJiYgY2hpbGRWbm9kZS5wcm9wcy5vbmNyZWF0ZShjaGlsZFZub2RlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFuZXdQYXJlbnRWbm9kZS5kb20uY2hpbGROb2Rlc1tpXSkge1xuICAgICAgICBuZXdQYXJlbnRWbm9kZS5kb20uYXBwZW5kQ2hpbGQoY2hpbGRWbm9kZS5kb20pO1xuICAgICAgfSBlbHNlIGlmIChuZXdQYXJlbnRWbm9kZS5kb20uY2hpbGROb2Rlc1tpXSAhPT0gY2hpbGRWbm9kZS5kb20pIHtcbiAgICAgICAgb2xkVHJlZVtpXSAmJiAhbmV3S2V5ZWRMaXN0W29sZFRyZWVbaV0ucHJvcHMua2V5XSAmJiBjYWxsUmVtb3ZlKG9sZFRyZWVbaV0pO1xuICAgICAgICBuZXdQYXJlbnRWbm9kZS5kb20ucmVwbGFjZUNoaWxkKGNoaWxkVm5vZGUuZG9tLCBuZXdQYXJlbnRWbm9kZS5kb20uY2hpbGROb2Rlc1tpXSk7XG4gICAgICB9XG5cbiAgICAgIHNob3VsZFBhdGNoICYmIHYucGF0Y2goY2hpbGRWbm9kZSwgb2xkQ2hpbGRWbm9kZSk7XG4gICAgfVxuXG4gICAgLy8gRm9yIHRoZSByZXN0IG9mIHRoZSBjaGlsZHJlbiwgd2Ugc2hvdWxkIHJlbW92ZSB0aGVtXG4gICAgZm9yIChsZXQgaSA9IG5ld1RyZWVMZW5ndGg7IGkgPCBvbGRUcmVlTGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICghbmV3S2V5ZWRMaXN0W29sZFRyZWVbaV0ucHJvcHMua2V5XSkge1xuICAgICAgICBsZXQgb2xkQ2hpbGRWbm9kZSA9IG9sZFRyZWVbaV07XG4gICAgICAgIGNhbGxSZW1vdmUob2xkQ2hpbGRWbm9kZSk7XG4gICAgICAgIG9sZENoaWxkVm5vZGUuZG9tLnBhcmVudE5vZGUgJiYgb2xkQ2hpbGRWbm9kZS5kb20ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvbGRDaGlsZFZub2RlLmRvbSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIEZsYXQgbmV3VHJlZVxuICBmb3IgKGxldCBpID0gMDsgaSA8IG5ld1RyZWUubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgY2hpbGRWbm9kZSA9IG5ld1RyZWVbaV07XG5cbiAgICBpZiAoY2hpbGRWbm9kZSBpbnN0YW5jZW9mIFZub2RlKSB7XG4gICAgICBsZXQgb2xkQ2hpbGRWbm9kZSA9IG9sZFRyZWVbaV07XG4gICAgICBjaGlsZFZub2RlLmlzU1ZHID0gbmV3UGFyZW50Vm5vZGUuaXNTVkcgfHwgY2hpbGRWbm9kZS50YWcgPT09IFwic3ZnXCI7XG5cbiAgICAgIGlmICghb2xkQ2hpbGRWbm9kZSkge1xuICAgICAgICBjaGlsZFZub2RlLmRvbSA9IGNyZWF0ZURvbUVsZW1lbnQoY2hpbGRWbm9kZS50YWcsIGNoaWxkVm5vZGUuaXNTVkcpO1xuICAgICAgICBzZXRBdHRyaWJ1dGVzKGNoaWxkVm5vZGUgYXMgVm5vZGVXaXRoRG9tKTtcbiAgICAgICAgY2hpbGRWbm9kZS5wcm9wcy5vbmNyZWF0ZSAmJiBjaGlsZFZub2RlLnByb3BzLm9uY3JlYXRlKGNoaWxkVm5vZGUpO1xuICAgICAgICB2LnBhdGNoKGNoaWxkVm5vZGUgYXMgVm5vZGVXaXRoRG9tKTtcbiAgICAgICAgbmV3UGFyZW50Vm5vZGUuZG9tLmFwcGVuZENoaWxkKGNoaWxkVm5vZGUuZG9tKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGlsZFZub2RlLnRhZyA9PT0gb2xkQ2hpbGRWbm9kZS50YWcpIHtcbiAgICAgICAgY2hpbGRWbm9kZS5kb20gPSBvbGRDaGlsZFZub2RlLmRvbTtcblxuICAgICAgICBpZiAoY2hpbGRWbm9kZS5wcm9wc1tcInYtb25jZVwiXSB8fCAoY2hpbGRWbm9kZS5wcm9wcy5zaG91bGR1cGRhdGUgJiYgY2hpbGRWbm9kZS5wcm9wcy5zaG91bGR1cGRhdGUoY2hpbGRWbm9kZSwgb2xkQ2hpbGRWbm9kZSkgPT09IGZhbHNlKSkge1xuICAgICAgICAgIGNoaWxkVm5vZGUuY2hpbGRyZW4gPSBvbGRDaGlsZFZub2RlLmNoaWxkcmVuO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0QXR0cmlidXRlcyhjaGlsZFZub2RlIGFzIFZub2RlV2l0aERvbSwgb2xkQ2hpbGRWbm9kZSk7XG4gICAgICAgIGlmICh2LmlzTW91bnRlZCkge1xuICAgICAgICAgIGNoaWxkVm5vZGUucHJvcHMub251cGRhdGUgJiYgY2hpbGRWbm9kZS5wcm9wcy5vbnVwZGF0ZShjaGlsZFZub2RlLCBvbGRDaGlsZFZub2RlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjaGlsZFZub2RlLnByb3BzLm9uY3JlYXRlICYmIGNoaWxkVm5vZGUucHJvcHMub25jcmVhdGUoY2hpbGRWbm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgdi5wYXRjaChjaGlsZFZub2RlIGFzIFZub2RlV2l0aERvbSwgb2xkQ2hpbGRWbm9kZSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjaGlsZFZub2RlLmRvbSA9IGNyZWF0ZURvbUVsZW1lbnQoY2hpbGRWbm9kZS50YWcsIGNoaWxkVm5vZGUuaXNTVkcpO1xuICAgICAgc2V0QXR0cmlidXRlcyhjaGlsZFZub2RlIGFzIFZub2RlV2l0aERvbSk7XG4gICAgICBjaGlsZFZub2RlLnByb3BzLm9uY3JlYXRlICYmIGNoaWxkVm5vZGUucHJvcHMub25jcmVhdGUoY2hpbGRWbm9kZSk7XG4gICAgICBvbGRDaGlsZFZub2RlIGluc3RhbmNlb2YgVm5vZGUgJiYgY2FsbFJlbW92ZShvbGRDaGlsZFZub2RlKTtcbiAgICAgIG5ld1BhcmVudFZub2RlLmRvbS5yZXBsYWNlQ2hpbGQoY2hpbGRWbm9kZS5kb20sIG9sZENoaWxkVm5vZGUuZG9tKTtcbiAgICAgIHYucGF0Y2goY2hpbGRWbm9kZSBhcyBWbm9kZVdpdGhEb20pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGNoaWxkVm5vZGUgPT09IG51bGwgfHwgY2hpbGRWbm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBuZXdUcmVlLnNwbGljZShpLS0sIDEpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRWbm9kZSkpIHtcbiAgICAgIG5ld1RyZWUuc3BsaWNlKGktLSwgMSwgLi4uY2hpbGRWbm9kZSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoY2hpbGRWbm9kZSBpbnN0YW5jZW9mIFZub2RlQ29tcG9uZW50KSB7XG4gICAgICBjdXJyZW50LmNvbXBvbmVudCA9IGNoaWxkVm5vZGUuY29tcG9uZW50O1xuICAgICAgbmV3VHJlZS5zcGxpY2UoXG4gICAgICAgIGktLSxcbiAgICAgICAgMSxcbiAgICAgICAgKGNoaWxkVm5vZGUuY29tcG9uZW50LnZpZXcgPyBjaGlsZFZub2RlLmNvbXBvbmVudC52aWV3LmJpbmQoY2hpbGRWbm9kZS5jb21wb25lbnQpIDogY2hpbGRWbm9kZS5jb21wb25lbnQuYmluZChjaGlsZFZub2RlLmNvbXBvbmVudCkpKFxuICAgICAgICAgIGNoaWxkVm5vZGUucHJvcHMsXG4gICAgICAgICAgLi4uY2hpbGRWbm9kZS5jaGlsZHJlblxuICAgICAgICApXG4gICAgICApO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGNoaWxkVm5vZGUgaW5zdGFuY2VvZiBWbm9kZVRleHQgPT09IGZhbHNlKSB7XG4gICAgICBuZXdUcmVlW2ldID0gY2hpbGRWbm9kZSA9IG5ldyBWbm9kZVRleHQoU3RyaW5nKGNoaWxkVm5vZGUpKTtcbiAgICB9XG5cbiAgICBpZiAobmV3VHJlZVtpIC0gMV0gaW5zdGFuY2VvZiBWbm9kZVRleHQpIHtcbiAgICAgIG5ld1RyZWVbaSAtIDFdLmRvbS5ub2RlVmFsdWUgKz0gY2hpbGRWbm9kZS5ub2RlVmFsdWU7XG4gICAgICBuZXdUcmVlW2kgLSAxXS5ub2RlVmFsdWUgKz0gY2hpbGRWbm9kZS5ub2RlVmFsdWU7XG4gICAgICBuZXdUcmVlLnNwbGljZShpLS0sIDEpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgbGV0IG9sZENoaWxkVm5vZGUgPSBvbGRUcmVlW2ldO1xuXG4gICAgaWYgKCFvbGRDaGlsZFZub2RlKSB7XG4gICAgICBjaGlsZFZub2RlLmRvbSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNoaWxkVm5vZGUubm9kZVZhbHVlKTtcbiAgICAgIG5ld1BhcmVudFZub2RlLmRvbS5hcHBlbmRDaGlsZChjaGlsZFZub2RlLmRvbSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAob2xkQ2hpbGRWbm9kZSBpbnN0YW5jZW9mIFZub2RlVGV4dCkge1xuICAgICAgY2hpbGRWbm9kZS5kb20gPSBvbGRDaGlsZFZub2RlLmRvbTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcbiAgICAgIGlmIChjaGlsZFZub2RlLm5vZGVWYWx1ZSAhPSBjaGlsZFZub2RlLmRvbS5ub2RlVmFsdWUpIHtcbiAgICAgICAgY2hpbGRWbm9kZS5kb20ubm9kZVZhbHVlID0gY2hpbGRWbm9kZS5ub2RlVmFsdWU7XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjaGlsZFZub2RlLmRvbSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNoaWxkVm5vZGUubm9kZVZhbHVlKTtcbiAgICBjYWxsUmVtb3ZlKG9sZENoaWxkVm5vZGUpO1xuICAgIG5ld1BhcmVudFZub2RlLmRvbS5yZXBsYWNlQ2hpbGQoY2hpbGRWbm9kZS5kb20sIG9sZENoaWxkVm5vZGUuZG9tKTtcbiAgfVxuXG4gIGxldCBuZXdUcmVlTGVuZ3RoID0gbmV3VHJlZS5sZW5ndGg7XG5cbiAgLy8gSWYgbmV3IHRyZWUgaXMgZW1wdHksIGZhc3QgcmVtb3ZlIGFsbCBvbGQgbm9kZXNcbiAgaWYgKG5ld1RyZWVMZW5ndGggPT09IDApIHtcbiAgICBmb3IgKGxldCBpID0gb2xkVHJlZUxlbmd0aDsgaS0tOyApIHtcbiAgICAgIG9sZFRyZWVbaV0gaW5zdGFuY2VvZiBWbm9kZSAmJiBjYWxsUmVtb3ZlKG9sZFRyZWVbaV0pO1xuICAgIH1cbiAgICBuZXdQYXJlbnRWbm9kZS5kb20udGV4dENvbnRlbnQgPSBcIlwiO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIEZvciB0aGUgcmVzdCBvZiB0aGUgY2hpbGRyZW4sIHdlIHNob3VsZCByZW1vdmUgdGhlbVxuICBmb3IgKGxldCBpID0gb2xkVHJlZUxlbmd0aCAtIDE7IGkgPj0gbmV3VHJlZUxlbmd0aDsgLS1pKSB7XG4gICAgb2xkVHJlZVtpXSBpbnN0YW5jZW9mIFZub2RlICYmIGNhbGxSZW1vdmUob2xkVHJlZVtpXSk7XG4gICAgb2xkVHJlZVtpXS5kb20ucGFyZW50Tm9kZSAmJiBvbGRUcmVlW2ldLmRvbS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG9sZFRyZWVbaV0uZG9tKTtcbiAgfVxufTtcblxudi51cGRhdGUgPSAoKSA9PiB7XG4gIGlmICh2Lm1haW5Wbm9kZSkge1xuICAgIG9uQ2xlYW51cExpc3QubGVuZ3RoICYmIGNhbGxDYWxsYmFja0xpc3Qob25DbGVhbnVwTGlzdCk7XG4gICAgbGV0IG9sZE1haW5Wbm9kZSA9IHYubWFpblZub2RlO1xuICAgIGxldCBuZXdNYWluVm5vZGUgPSBuZXcgVm5vZGUob2xkTWFpblZub2RlLnRhZywgb2xkTWFpblZub2RlLnByb3BzLCBbXG4gICAgICB2LmNvbXBvbmVudCBpbnN0YW5jZW9mIFZub2RlQ29tcG9uZW50ID8gdi5jb21wb25lbnQgOiB2KHYuY29tcG9uZW50IGFzIENvbXBvbmVudCwgbnVsbClcbiAgICBdKSBhcyBWbm9kZVdpdGhEb207XG4gICAgbmV3TWFpblZub2RlLmRvbSA9IG9sZE1haW5Wbm9kZS5kb207XG4gICAgbmV3TWFpblZub2RlLmlzU1ZHID0gb2xkTWFpblZub2RlLmlzU1ZHO1xuICAgIHYubWFpblZub2RlID0gbmV3TWFpblZub2RlO1xuICAgIHYucGF0Y2gobmV3TWFpblZub2RlLCBvbGRNYWluVm5vZGUpO1xuICAgIGlmICh2LmlzTW91bnRlZCA9PT0gZmFsc2UpIHtcbiAgICAgIG9uTW91bnRMaXN0Lmxlbmd0aCAmJiBjYWxsQ2FsbGJhY2tMaXN0KG9uTW91bnRMaXN0KTtcbiAgICAgIHYuaXNNb3VudGVkID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgb25VcGRhdGVMaXN0Lmxlbmd0aCAmJiBjYWxsQ2FsbGJhY2tMaXN0KG9uVXBkYXRlTGlzdCk7XG4gICAgfVxuICAgIGlmICh2LmlzTm9kZUpzKSB7XG4gICAgICByZXR1cm4gKG5ld01haW5Wbm9kZS5kb20gYXMgSFRNTEVsZW1lbnQpLmlubmVySFRNTDtcbiAgICB9XG4gIH1cbn07XG5cbnYudW5tb3VudCA9ICgpID0+IHtcbiAgaWYgKHYubWFpblZub2RlKSB7XG4gICAgb25DbGVhbnVwTGlzdC5sZW5ndGggJiYgY2FsbENhbGxiYWNrTGlzdChvbkNsZWFudXBMaXN0KTtcbiAgICBvblVubW91bnRMaXN0Lmxlbmd0aCAmJiBjYWxsQ2FsbGJhY2tMaXN0KG9uVW5tb3VudExpc3QpO1xuICAgIHYuY29tcG9uZW50ID0gZW1wdHlDb21wb25lbnQ7XG4gICAgbGV0IHJlc3VsdCA9IHYudXBkYXRlKCk7XG4gICAgdi5tYWluVm5vZGUgPSBudWxsO1xuICAgIHYuY29tcG9uZW50ID0gbnVsbDtcbiAgICB2LmlzTW91bnRlZCA9IGZhbHNlO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn07XG5cbnYubW91bnQgPSAoY29udGFpbmVyLCBjb21wb25lbnQpID0+IHtcbiAgaWYgKHYuaXNNb3VudGVkKSB7XG4gICAgdi51bm1vdW50KCk7XG4gIH1cblxuICBsZXQgbWFpbkNvbnRhaW5lcjtcbiAgaWYgKHYuaXNOb2RlSnMpIHtcbiAgICBtYWluQ29udGFpbmVyID0gdHlwZW9mIGNvbnRhaW5lciA9PT0gXCJzdHJpbmdcIiA/IGNyZWF0ZURvbUVsZW1lbnQoY29udGFpbmVyLCBjb250YWluZXIgPT09IFwic3ZnXCIpIDogY29udGFpbmVyO1xuICB9IGVsc2Uge1xuICAgIG1haW5Db250YWluZXIgPSB0eXBlb2YgY29udGFpbmVyID09PSBcInN0cmluZ1wiID8gKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoY29udGFpbmVyKVswXSBhcyBEb21FbGVtZW50KSA6IGNvbnRhaW5lcjtcbiAgfVxuXG4gIHYubWFpblZub2RlID0gZG9tVG9Wbm9kZShtYWluQ29udGFpbmVyKTtcbiAgdi5tYWluVm5vZGUuaXNTVkcgPSB2Lm1haW5Wbm9kZS50YWcgPT09IFwic3ZnXCI7XG4gIHYuY29tcG9uZW50ID0gY29tcG9uZW50O1xuXG4gIHJldHVybiB2LnVwZGF0ZSgpO1xufTtcblxuY29uc3QgcGx1Z2lucyA9IG5ldyBNYXA8UGx1Z2luLCBhbnk+KCk7XG5cbnYudXNlID0gKHBsdWdpbjogUGx1Z2luLCBvcHRpb25zPzogUmVjb3JkPHN0cmluZyB8IG51bWJlciB8IHN5bWJvbCwgYW55Pik6IHZvaWQgfCBhbnkgPT4ge1xuICBpZiAocGx1Z2lucy5oYXMocGx1Z2luKSkge1xuICAgIHJldHVybiBwbHVnaW5zLmdldChwbHVnaW4pO1xuICB9XG5cbiAgbGV0IHJlc3VsdCA9IHBsdWdpbih2LCBvcHRpb25zKTtcbiAgcGx1Z2lucy5zZXQocGx1Z2luLCByZXN1bHQpO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxubGV0IGhpZGVEaXJlY3RpdmUgPSAodGVzdDogYm9vbGVhbikgPT4gKGJvb2w6IGJvb2xlYW4sIHZub2RlOiBWbm9kZUludGVyZmFjZSwgb2xkbm9kZT86IFZub2RlSW50ZXJmYWNlIHwgVm5vZGVUZXh0SW50ZXJmYWNlKSA9PiB7XG4gIGxldCB2YWx1ZSA9IHRlc3QgPyBib29sIDogIWJvb2w7XG4gIGlmICh2YWx1ZSkge1xuICAgIGxldCBuZXdkb20gPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcIlwiKTtcbiAgICBpZiAob2xkbm9kZSAmJiBvbGRub2RlLmRvbSAmJiBvbGRub2RlLmRvbS5wYXJlbnROb2RlKSB7XG4gICAgICBvbGRub2RlIGluc3RhbmNlb2YgVm5vZGUgJiYgY2FsbFJlbW92ZShvbGRub2RlKTtcbiAgICAgIG9sZG5vZGUuZG9tLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKG5ld2RvbSwgb2xkbm9kZS5kb20pO1xuICAgIH1cbiAgICB2bm9kZS50YWcgPSBcIiN0ZXh0XCI7XG4gICAgdm5vZGUuY2hpbGRyZW4gPSBbXTtcbiAgICB2bm9kZS5wcm9wcyA9IHt9O1xuICAgIHZub2RlLmRvbSA9IG5ld2RvbSBhcyB1bmtub3duIGFzIERvbUVsZW1lbnQ7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG5jb25zdCBkaXJlY3RpdmVzOiBEaXJlY3RpdmVzID0ge1xuICBcInYtaWZcIjogaGlkZURpcmVjdGl2ZShmYWxzZSksXG4gIFwidi11bmxlc3NcIjogaGlkZURpcmVjdGl2ZSh0cnVlKSxcbiAgXCJ2LWZvclwiOiAoc2V0OiB1bmtub3duW10sIHZub2RlOiBWbm9kZVdpdGhEb20pID0+IHtcbiAgICB2bm9kZS5jaGlsZHJlbiA9IHNldC5tYXAodm5vZGUuY2hpbGRyZW5bMF0pO1xuICB9LFxuICBcInYtc2hvd1wiOiAoYm9vbDogYm9vbGVhbiwgdm5vZGU6IFZub2RlV2l0aERvbSkgPT4ge1xuICAgIChcbiAgICAgIHZub2RlLmRvbSBhcyB1bmtub3duIGFzIHtcbiAgICAgICAgc3R5bGU6IHsgZGlzcGxheTogc3RyaW5nIH07XG4gICAgICB9XG4gICAgKS5zdHlsZS5kaXNwbGF5ID0gYm9vbCA/IFwiXCIgOiBcIm5vbmVcIjtcbiAgfSxcbiAgXCJ2LWNsYXNzXCI6IChjbGFzc2VzOiB7IFt4OiBzdHJpbmddOiBib29sZWFuIH0sIHZub2RlOiBWbm9kZVdpdGhEb20pID0+IHtcbiAgICBmb3IgKGxldCBuYW1lIGluIGNsYXNzZXMpIHtcbiAgICAgICh2bm9kZS5kb20gYXMgRG9tRWxlbWVudCkuY2xhc3NMaXN0LnRvZ2dsZShuYW1lLCBjbGFzc2VzW25hbWVdKTtcbiAgICB9XG4gIH0sXG4gIFwidi1odG1sXCI6IChodG1sOiBzdHJpbmcsIHZub2RlOiBWbm9kZVdpdGhEb20pID0+IHtcbiAgICB2bm9kZS5jaGlsZHJlbiA9IFt2LnRydXN0KGh0bWwpXTtcbiAgfSxcbiAgXCJ2LW1vZGVsXCI6IChbbW9kZWwsIHByb3BlcnR5LCBldmVudF06IGFueVtdLCB2bm9kZTogVm5vZGVXaXRoRG9tLCBvbGRWbm9kZT86IFZub2RlV2l0aERvbSkgPT4ge1xuICAgIGxldCB2YWx1ZTtcbiAgICBsZXQgaGFuZGxlcjtcbiAgICBpZiAodm5vZGUudGFnID09PSBcImlucHV0XCIpIHtcbiAgICAgIGV2ZW50ID0gZXZlbnQgfHwgXCJvbmlucHV0XCI7XG4gICAgICBzd2l0Y2ggKHZub2RlLnByb3BzLnR5cGUpIHtcbiAgICAgICAgY2FzZSBcImNoZWNrYm94XCI6IHtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShtb2RlbFtwcm9wZXJ0eV0pKSB7XG4gICAgICAgICAgICBoYW5kbGVyID0gKGU6IEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGxldCB2YWwgPSAoZS50YXJnZXQgYXMgRG9tRWxlbWVudCAmIFJlY29yZDxzdHJpbmcsIGFueT4pLnZhbHVlO1xuICAgICAgICAgICAgICBsZXQgaWR4ID0gbW9kZWxbcHJvcGVydHldLmluZGV4T2YodmFsKTtcbiAgICAgICAgICAgICAgaWYgKGlkeCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBtb2RlbFtwcm9wZXJ0eV0ucHVzaCh2YWwpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG1vZGVsW3Byb3BlcnR5XS5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHZhbHVlID0gbW9kZWxbcHJvcGVydHldLmluZGV4T2Yodm5vZGUuZG9tLnZhbHVlKSAhPT0gLTE7XG4gICAgICAgICAgfSBlbHNlIGlmIChcInZhbHVlXCIgaW4gdm5vZGUucHJvcHMpIHtcbiAgICAgICAgICAgIGhhbmRsZXIgPSAoKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChtb2RlbFtwcm9wZXJ0eV0gPT09IHZub2RlLnByb3BzLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgbW9kZWxbcHJvcGVydHldID0gbnVsbDtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtb2RlbFtwcm9wZXJ0eV0gPSB2bm9kZS5wcm9wcy52YWx1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHZhbHVlID0gbW9kZWxbcHJvcGVydHldID09PSB2bm9kZS5wcm9wcy52YWx1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaGFuZGxlciA9ICgpID0+IChtb2RlbFtwcm9wZXJ0eV0gPSAhbW9kZWxbcHJvcGVydHldKTtcbiAgICAgICAgICAgIHZhbHVlID0gbW9kZWxbcHJvcGVydHldO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZXRBdHRyaWJ1dGUoXCJjaGVja2VkXCIsIHZhbHVlLCB2bm9kZSwgb2xkVm5vZGUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJyYWRpb1wiOiB7XG4gICAgICAgICAgc2V0QXR0cmlidXRlKFwiY2hlY2tlZFwiLCBtb2RlbFtwcm9wZXJ0eV0gPT09IHZub2RlLmRvbS52YWx1ZSwgdm5vZGUsIG9sZFZub2RlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgc2V0QXR0cmlidXRlKFwidmFsdWVcIiwgbW9kZWxbcHJvcGVydHldLCB2bm9kZSwgb2xkVm5vZGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh2bm9kZS50YWcgPT09IFwic2VsZWN0XCIpIHtcbiAgICAgIGV2ZW50ID0gZXZlbnQgfHwgXCJvbmNsaWNrXCI7XG4gICAgICBpZiAodm5vZGUucHJvcHMubXVsdGlwbGUpIHtcbiAgICAgICAgaGFuZGxlciA9IChlOiBFdmVudCAmIFJlY29yZDxzdHJpbmcsIGFueT4pID0+IHtcbiAgICAgICAgICBsZXQgdmFsID0gKGUudGFyZ2V0IGFzIERvbUVsZW1lbnQgJiBSZWNvcmQ8c3RyaW5nLCBhbnk+KS52YWx1ZTtcbiAgICAgICAgICBpZiAoZS5jdHJsS2V5KSB7XG4gICAgICAgICAgICBsZXQgaWR4ID0gbW9kZWxbcHJvcGVydHldLmluZGV4T2YodmFsKTtcbiAgICAgICAgICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICAgICAgICAgIG1vZGVsW3Byb3BlcnR5XS5wdXNoKHZhbCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBtb2RlbFtwcm9wZXJ0eV0uc3BsaWNlKGlkeCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1vZGVsW3Byb3BlcnR5XS5zcGxpY2UoMCwgbW9kZWxbcHJvcGVydHldLmxlbmd0aCk7XG4gICAgICAgICAgICBtb2RlbFtwcm9wZXJ0eV0ucHVzaCh2YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdm5vZGUuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQ6IFZub2RlSW50ZXJmYWNlKSA9PiB7XG4gICAgICAgICAgaWYgKGNoaWxkLnRhZyA9PT0gXCJvcHRpb25cIikge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gXCJ2YWx1ZVwiIGluIGNoaWxkLnByb3BzID8gY2hpbGQucHJvcHMudmFsdWUgOiBjaGlsZC5jaGlsZHJlbi5qb2luKFwiXCIpLnRyaW0oKTtcbiAgICAgICAgICAgIGNoaWxkLnByb3BzLnNlbGVjdGVkID0gbW9kZWxbcHJvcGVydHldLmluZGV4T2YodmFsdWUpICE9PSAtMTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdm5vZGUuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQ6IFZub2RlSW50ZXJmYWNlKSA9PiB7XG4gICAgICAgICAgaWYgKGNoaWxkLnRhZyA9PT0gXCJvcHRpb25cIikge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gXCJ2YWx1ZVwiIGluIGNoaWxkLnByb3BzID8gY2hpbGQucHJvcHMudmFsdWUgOiBjaGlsZC5jaGlsZHJlbi5qb2luKFwiXCIpLnRyaW0oKTtcbiAgICAgICAgICAgIGNoaWxkLnByb3BzLnNlbGVjdGVkID0gdmFsdWUgPT09IG1vZGVsW3Byb3BlcnR5XTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodm5vZGUudGFnID09PSBcInRleHRhcmVhXCIpIHtcbiAgICAgIGV2ZW50ID0gZXZlbnQgfHwgXCJvbmlucHV0XCI7XG4gICAgICB2bm9kZS5jaGlsZHJlbiA9IFttb2RlbFtwcm9wZXJ0eV1dO1xuICAgIH1cblxuICAgIGlmICghdm5vZGUucHJvcHNbZXZlbnRdKSB7XG4gICAgICBpZiAoIWhhbmRsZXIpIHtcbiAgICAgICAgaGFuZGxlciA9IChlOiBFdmVudCkgPT4gKG1vZGVsW3Byb3BlcnR5XSA9IChlLnRhcmdldCBhcyBEb21FbGVtZW50ICYgUmVjb3JkPHN0cmluZywgYW55PikudmFsdWUpO1xuICAgICAgfVxuICAgICAgc2V0QXR0cmlidXRlKGV2ZW50LCBoYW5kbGVyLCB2bm9kZSwgb2xkVm5vZGUpO1xuICAgIH1cbiAgfVxufTtcblxudi5kaXJlY3RpdmUgPSAobmFtZTogc3RyaW5nLCBkaXJlY3RpdmU6IERpcmVjdGl2ZSkgPT4ge1xuICBsZXQgZnVsbE5hbWUgPSBgdi0ke25hbWV9YDtcbiAgZGlyZWN0aXZlc1tmdWxsTmFtZV0gPSBkaXJlY3RpdmU7XG4gIHJlc2VydmVkUHJvcHNbZnVsbE5hbWVdID0gdHJ1ZTtcbn07XG5cbnYuaXNOb2RlSnMgPSBCb29sZWFuKHR5cGVvZiBwcm9jZXNzICE9PSBcInVuZGVmaW5lZFwiICYmIHByb2Nlc3MudmVyc2lvbnMgJiYgcHJvY2Vzcy52ZXJzaW9ucy5ub2RlKTtcbnYuaXNNb3VudGVkID0gZmFsc2U7XG5cbnYuY29tcG9uZW50ID0gbnVsbDtcbnYubWFpblZub2RlID0gbnVsbDtcblxudi5kaXJlY3RpdmVzID0gZGlyZWN0aXZlcztcbnYucmVzZXJ2ZWRQcm9wcyA9IHJlc2VydmVkUHJvcHM7XG52LmN1cnJlbnQgPSBjdXJyZW50O1xuXG52LnNldEF0dHJpYnV0ZSA9IHNldEF0dHJpYnV0ZTtcbiJdLCJtYXBwaW5ncyI6Ik1Bc0JBLElBQU1BLEVBQW1CLENBQUMsRUFDcEJDLEVBQTRCLEdBQzVCQyxFQUEwQixHQUMxQkMsRUFBMkIsR0FDM0JDLEVBQTRCLEdBQzVCQyxFQUE0QixJQUFNLEdBRWxDQyxFQUEyQyxDQUFDLEVBQ2xELFNBQVNDLEVBQWNDLEdBQ3JCLElBQUlDLEVBQU1ELEVBQUVFLE9BQ1JDLEVBQU8sT0FBT0gsRUFBRUksT0FDcEIsS0FBT0gsR0FBSyxDQUNWLEdBQUlBLEVBQUlFLEdBTU4sT0FMQUYsRUFBSUUsR0FBTUgsRUFBR0MsUUFDUkQsRUFBRUssa0JBRUxDLEVBQUVDLFVBSU5OLEVBQU1BLEVBQUlPLFVBQ1osQ0FDRixDQUVBLElBQU1DLEVBQXNDLENBQzFDQyxLQUFLLEVBQ0xDLE9BQU8sRUFDUEMsVUFBVSxFQUNWQyxVQUFVLEVBQ1ZDLFVBQVUsRUFDVkMsY0FBYyxFQUNkLFVBQVUsRUFHVixRQUFRLEVBQ1IsWUFBWSxFQUNaLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLFVBQVUsRUFDVixXQUFXLEdBR2IsU0FBU0MsRUFBaUJDLEVBQWFDLEdBQWlCLEdBQ3RELE9BQU9BLEVBQVFDLFNBQVNDLGdCQUFnQiw2QkFBOEJILEdBQU9FLFNBQVNFLGNBQWNKLEVBQ3RHLENBRU8sSUFBTUssRUFBUSxTQUFxQ0wsRUFBYU0sRUFBY0MsR0FDbkZDLEtBQUtSLElBQU1BLEVBQ1hRLEtBQUtGLE1BQVFBLEVBQ2JFLEtBQUtELFNBQVdBLENBQ2xCLEVBRWFFLEVBQVksU0FBNkNDLEdBQ3BFRixLQUFLRSxVQUFZQSxDQUNuQixFQUVhQyxFQUFpQixTQUU1QkMsRUFDQU4sRUFDQUMsR0FFQUMsS0FBS0ksVUFBWUEsRUFDakJKLEtBQUtGLE1BQVFBLEVBQ2JFLEtBQUtELFNBQVdB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
|
package/dist/index.mjs
CHANGED
|
@@ -524,10 +524,9 @@ v.directives = directives;
|
|
|
524
524
|
v.reservedProps = reservedProps;
|
|
525
525
|
v.current = current;
|
|
526
526
|
v.setAttribute = setAttribute;
|
|
527
|
-
var lib_default = v;
|
|
528
527
|
export {
|
|
529
528
|
Vnode,
|
|
530
529
|
VnodeComponent,
|
|
531
530
|
VnodeText,
|
|
532
|
-
|
|
531
|
+
v
|
|
533
532
|
};
|
package/dist/node/index.d.ts
CHANGED
|
@@ -5,5 +5,5 @@ import { inline } from "./utils/inline";
|
|
|
5
5
|
import { sw } from "./utils/sw";
|
|
6
6
|
declare function plugin(v: Valyrian): Promise<void>;
|
|
7
7
|
declare function render(...args: any[]): string | void;
|
|
8
|
-
export { domToHtml, domToHyperscript, htmlToDom, htmlToHyperscript, inline, sw, icons, render, plugin
|
|
8
|
+
export { domToHtml, domToHyperscript, htmlToDom, htmlToHyperscript, inline, sw, icons, render, plugin };
|
|
9
9
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/node/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG3G,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAIhC,iBAAe,MAAM,CAAC,CAAC,EAAE,QAAQ,iBAKhC;AAED,iBAAS,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,iBAS7B;AAED,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG3G,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAIhC,iBAAe,MAAM,CAAC,CAAC,EAAE,QAAQ,iBAKhC;AAED,iBAAS,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,iBAS7B;AAED,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC"}
|
package/dist/node/index.js
CHANGED
|
@@ -26,13 +26,13 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
26
26
|
// lib/node/index.ts
|
|
27
27
|
var node_exports = {};
|
|
28
28
|
__export(node_exports, {
|
|
29
|
-
default: () => plugin,
|
|
30
29
|
domToHtml: () => domToHtml,
|
|
31
30
|
domToHyperscript: () => domToHyperscript,
|
|
32
31
|
htmlToDom: () => htmlToDom,
|
|
33
32
|
htmlToHyperscript: () => htmlToHyperscript,
|
|
34
33
|
icons: () => icons,
|
|
35
34
|
inline: () => inline,
|
|
35
|
+
plugin: () => plugin,
|
|
36
36
|
render: () => render,
|
|
37
37
|
sw: () => sw
|
|
38
38
|
});
|
|
@@ -594,24 +594,18 @@ async function icons(source, configuration) {
|
|
|
594
594
|
options.linksViewPath = options.linksViewPath.replace(/\/$/gi, "") + "/";
|
|
595
595
|
}
|
|
596
596
|
const { favicons } = await import("favicons");
|
|
597
|
-
|
|
598
|
-
favicons(source, options
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
process.stdout.write(err.message + "\n");
|
|
603
|
-
return reject(err);
|
|
597
|
+
try {
|
|
598
|
+
let response = await favicons(source, options);
|
|
599
|
+
if (options.iconsPath) {
|
|
600
|
+
for (let i in response.images) {
|
|
601
|
+
import_fs.default.writeFileSync(options.iconsPath + response.images[i].name, response.images[i].contents);
|
|
604
602
|
}
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
import_fs.default.writeFileSync(options.iconsPath + response.images[i].name, response.images[i].contents);
|
|
608
|
-
}
|
|
609
|
-
for (let i in response.files) {
|
|
610
|
-
import_fs.default.writeFileSync(options.iconsPath + response.files[i].name, response.files[i].contents);
|
|
611
|
-
}
|
|
603
|
+
for (let i in response.files) {
|
|
604
|
+
import_fs.default.writeFileSync(options.iconsPath + response.files[i].name, response.files[i].contents);
|
|
612
605
|
}
|
|
613
|
-
|
|
614
|
-
|
|
606
|
+
}
|
|
607
|
+
if (options.linksViewPath) {
|
|
608
|
+
let html = `
|
|
615
609
|
function Links(){
|
|
616
610
|
return ${htmlToHyperscript(response.html.join(""))};
|
|
617
611
|
}
|
|
@@ -619,11 +613,13 @@ async function icons(source, configuration) {
|
|
|
619
613
|
Links.default = Links;
|
|
620
614
|
module.exports = Links;
|
|
621
615
|
`;
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
616
|
+
import_fs.default.writeFileSync(`${options.linksViewPath}/links.js`, html);
|
|
617
|
+
}
|
|
618
|
+
} catch (err) {
|
|
619
|
+
process.stdout.write(err.status + "\n");
|
|
620
|
+
process.stdout.write(err.name + "\n");
|
|
621
|
+
process.stdout.write(err.message + "\n");
|
|
622
|
+
}
|
|
627
623
|
}
|
|
628
624
|
icons.options = {
|
|
629
625
|
iconsPath: null,
|
package/dist/node/index.mjs
CHANGED
|
@@ -554,24 +554,18 @@ async function icons(source, configuration) {
|
|
|
554
554
|
options.linksViewPath = options.linksViewPath.replace(/\/$/gi, "") + "/";
|
|
555
555
|
}
|
|
556
556
|
const { favicons } = await import("favicons");
|
|
557
|
-
|
|
558
|
-
favicons(source, options
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
process.stdout.write(err.message + "\n");
|
|
563
|
-
return reject(err);
|
|
557
|
+
try {
|
|
558
|
+
let response = await favicons(source, options);
|
|
559
|
+
if (options.iconsPath) {
|
|
560
|
+
for (let i in response.images) {
|
|
561
|
+
fs.writeFileSync(options.iconsPath + response.images[i].name, response.images[i].contents);
|
|
564
562
|
}
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
fs.writeFileSync(options.iconsPath + response.images[i].name, response.images[i].contents);
|
|
568
|
-
}
|
|
569
|
-
for (let i in response.files) {
|
|
570
|
-
fs.writeFileSync(options.iconsPath + response.files[i].name, response.files[i].contents);
|
|
571
|
-
}
|
|
563
|
+
for (let i in response.files) {
|
|
564
|
+
fs.writeFileSync(options.iconsPath + response.files[i].name, response.files[i].contents);
|
|
572
565
|
}
|
|
573
|
-
|
|
574
|
-
|
|
566
|
+
}
|
|
567
|
+
if (options.linksViewPath) {
|
|
568
|
+
let html = `
|
|
575
569
|
function Links(){
|
|
576
570
|
return ${htmlToHyperscript(response.html.join(""))};
|
|
577
571
|
}
|
|
@@ -579,11 +573,13 @@ async function icons(source, configuration) {
|
|
|
579
573
|
Links.default = Links;
|
|
580
574
|
module.exports = Links;
|
|
581
575
|
`;
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
576
|
+
fs.writeFileSync(`${options.linksViewPath}/links.js`, html);
|
|
577
|
+
}
|
|
578
|
+
} catch (err) {
|
|
579
|
+
process.stdout.write(err.status + "\n");
|
|
580
|
+
process.stdout.write(err.name + "\n");
|
|
581
|
+
process.stdout.write(err.message + "\n");
|
|
582
|
+
}
|
|
587
583
|
}
|
|
588
584
|
icons.options = {
|
|
589
585
|
iconsPath: null,
|
|
@@ -793,13 +789,13 @@ function render(...args) {
|
|
|
793
789
|
return result;
|
|
794
790
|
}
|
|
795
791
|
export {
|
|
796
|
-
plugin as default,
|
|
797
792
|
domToHtml,
|
|
798
793
|
domToHyperscript,
|
|
799
794
|
htmlToDom,
|
|
800
795
|
htmlToHyperscript,
|
|
801
796
|
icons,
|
|
802
797
|
inline,
|
|
798
|
+
plugin,
|
|
803
799
|
render,
|
|
804
800
|
sw
|
|
805
801
|
};
|
|
@@ -26,7 +26,7 @@ interface IconsOptions {
|
|
|
26
26
|
yandex: boolean;
|
|
27
27
|
};
|
|
28
28
|
}
|
|
29
|
-
export declare function icons(source: string, configuration?: IconsOptions): Promise<
|
|
29
|
+
export declare function icons(source: string, configuration?: IconsOptions): Promise<void>;
|
|
30
30
|
export declare namespace icons {
|
|
31
31
|
var options: IconsOptions;
|
|
32
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../../lib/node/utils/icons.ts"],"names":[],"mappings":"AAGA,UAAU,YAAY;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IAGjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,GAAG,YAAY,CAAC;IACnC,WAAW,CAAC,EAAE,KAAK,GAAG,UAAU,GAAG,WAAW,CAAC;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE;QACL,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,OAAO,CAAC;QACnB,YAAY,EAAE,OAAO,CAAC;QACtB,KAAK,EAAE,OAAO,CAAC;QACf,QAAQ,EAAE,OAAO,CAAC;QAClB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC;CACH;AAED,wBAAsB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../../lib/node/utils/icons.ts"],"names":[],"mappings":"AAGA,UAAU,YAAY;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IAGjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,GAAG,YAAY,CAAC;IACnC,WAAW,CAAC,EAAE,KAAK,GAAG,UAAU,GAAG,WAAW,CAAC;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE;QACL,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,OAAO,CAAC;QACnB,YAAY,EAAE,OAAO,CAAC;QACtB,KAAK,EAAE,OAAO,CAAC;QACf,QAAQ,EAAE,OAAO,CAAC;QAClB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC;CACH;AAED,wBAAsB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,YAAY,iBA8CvE;yBA9CqB,KAAK"}
|
package/dist/request/index.d.ts
CHANGED
|
@@ -37,6 +37,6 @@ declare module "Valyrian" {
|
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
export declare const request: RequestInterface;
|
|
40
|
-
declare const plugin: (v: Valyrian) => RequestInterface;
|
|
41
|
-
export
|
|
40
|
+
export declare const plugin: (v: Valyrian) => RequestInterface;
|
|
41
|
+
export {};
|
|
42
42
|
//# sourceMappingURL=index.d.ts.map
|