react-bootstrap-plugins 2.3.0 → 2.4.1

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/README.md CHANGED
@@ -16,6 +16,7 @@
16
16
  | **TableLoading** | [TABLELOADING.md](./docs/TABLELOADING.md) | Bootstrap 5 placeholder loading skeleton for table `<tbody>` |
17
17
  | **AutoTextarea** | [AUTOTEXTAREA.md](./docs/AUTOTEXTAREA.md) | Auto-resizing textarea — grows with content up to `maxRows`/`maxHeight`, then scrolls |
18
18
  | **NavPills** | [NAVPILLS.md](./docs/NAVPILLS.md) | Horizontal nav-pills tab strip with icons, dismissible pills, and "New" badges |
19
+ | **InputCurrency** | [INPUTCURRENCY.md](./docs/INPUTCURRENCY.md) | Controlled currency input — numbers in/out, locale-formatted display, focus-based editing |
19
20
 
20
21
  Each component guide includes full prop tables, usage examples, import patterns, and dark mode behavior.
21
22
 
@@ -112,6 +113,7 @@ import Label from 'react-bootstrap-plugins/Label'
112
113
  import TableLoading from 'react-bootstrap-plugins/TableLoading'
113
114
  import AutoTextarea from 'react-bootstrap-plugins/AutoTextarea'
114
115
  import NavPills from 'react-bootstrap-plugins/NavPills'
116
+ import InputCurrency from 'react-bootstrap-plugins/InputCurrency'
115
117
 
116
118
  // Single component — named import
117
119
  import { DatePicker } from 'react-bootstrap-plugins/DatePicker'
@@ -120,9 +122,10 @@ import { Label } from 'react-bootstrap-plugins/Label'
120
122
  import { TableLoading } from 'react-bootstrap-plugins/TableLoading'
121
123
  import { AutoTextarea } from 'react-bootstrap-plugins/AutoTextarea'
122
124
  import { NavPills } from 'react-bootstrap-plugins/NavPills'
125
+ import { InputCurrency } from 'react-bootstrap-plugins/InputCurrency'
123
126
 
124
127
  // Multiple named — barrel, tree-shaken
125
- import { DatePicker, SearchSelect, Label, TableLoading, AutoTextarea, NavPills } from 'react-bootstrap-plugins'
128
+ import { DatePicker, SearchSelect, Label, TableLoading, AutoTextarea, NavPills, InputCurrency } from 'react-bootstrap-plugins'
126
129
 
127
130
  // CSS (required for DatePicker and NavPills badges)
128
131
  import 'react-bootstrap-plugins/css/plugins.css'
@@ -168,7 +171,8 @@ function App() {
168
171
  | `TableLoading` | ~0.2 KB |
169
172
  | `AutoTextarea` | ~0.4 KB |
170
173
  | `NavPills` | ~0.5 KB |
171
- | All six (barrel) | ~7.6 KB |
174
+ | `InputCurrency` | ~0.6 KB |
175
+ | All seven (barrel) | ~8.2 KB |
172
176
 
173
177
  Measured with ESM, tree-shaken, minified, gzipped. Your actual size depends on your bundler configuration.
174
178
 
@@ -225,6 +229,7 @@ src/
225
229
  │ ├── TableLoading.jsx Table placeholder skeleton
226
230
  │ ├── AutoTextarea.jsx Auto-resizing textarea
227
231
  │ ├── NavPills.jsx Horizontal pill tab strip
232
+ │ ├── InputCurrency.tsx Controlled currency input
228
233
  │ └── *.d.ts TypeScript declarations
229
234
  └── css/
230
235
  └── plugins.css
@@ -234,7 +239,7 @@ src/
234
239
 
235
240
  ## License
236
241
 
237
- MIT © [Tumwesigye Robert](https://allios.app)
242
+ MIT © [Tumwesigye Robert](https://github.com/robert0531)
238
243
 
239
244
  ---
240
245
 
@@ -1,2 +1,2 @@
1
- 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var chunkR5OO66VE_cjs=require('./chunk-R5OO66VE.cjs');require('./chunk-NPQQDBFB.cjs');Object.defineProperty(exports,"DatePicker",{enumerable:true,get:function(){return chunkR5OO66VE_cjs.a}});Object.defineProperty(exports,"default",{enumerable:true,get:function(){return chunkR5OO66VE_cjs.b}});//# sourceMappingURL=DatePicker.cjs.map
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var chunkZOXIZM63_cjs=require('./chunk-ZOXIZM63.cjs');require('./chunk-NPQQDBFB.cjs');Object.defineProperty(exports,"DatePicker",{enumerable:true,get:function(){return chunkZOXIZM63_cjs.a}});Object.defineProperty(exports,"default",{enumerable:true,get:function(){return chunkZOXIZM63_cjs.b}});//# sourceMappingURL=DatePicker.cjs.map
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJEYXRlUGlja2VyLmNqcyJ9
@@ -13,6 +13,8 @@ interface DatePickerChangeEvent {
13
13
  interface DatePickerProps {
14
14
  /** Picker mode (default 'date') */
15
15
  mode?: 'date' | 'time' | 'datetime';
16
+ /** When true, renders the calendar inline without an input field or time picker */
17
+ calendar?: boolean;
16
18
  /** Currently selected Date (alias for value) */
17
19
  selected?: Date | null;
18
20
  /** Currently selected Date, ISO string, "hh:mm AA" time string, "YYYY-MM-DD hh:mm AA" datetime string, or timestamp */
@@ -13,6 +13,8 @@ interface DatePickerChangeEvent {
13
13
  interface DatePickerProps {
14
14
  /** Picker mode (default 'date') */
15
15
  mode?: 'date' | 'time' | 'datetime';
16
+ /** When true, renders the calendar inline without an input field or time picker */
17
+ calendar?: boolean;
16
18
  /** Currently selected Date (alias for value) */
17
19
  selected?: Date | null;
18
20
  /** Currently selected Date, ISO string, "hh:mm AA" time string, "YYYY-MM-DD hh:mm AA" datetime string, or timestamp */
@@ -1,2 +1,2 @@
1
- export{a as DatePicker,b as default}from'./chunk-GCPYN7WB.js';import'./chunk-RR7TBRGI.js';//# sourceMappingURL=DatePicker.js.map
1
+ export{a as DatePicker,b as default}from'./chunk-LWCY2GIT.js';import'./chunk-RR7TBRGI.js';//# sourceMappingURL=DatePicker.js.map
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJEYXRlUGlja2VyLmpzIn0=
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var chunkAQJZQLFZ_cjs=require('./chunk-AQJZQLFZ.cjs');require('./chunk-NPQQDBFB.cjs');Object.defineProperty(exports,"InputCurrency",{enumerable:true,get:function(){return chunkAQJZQLFZ_cjs.a}});Object.defineProperty(exports,"default",{enumerable:true,get:function(){return chunkAQJZQLFZ_cjs.b}});//# sourceMappingURL=InputCurrency.cjs.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJJbnB1dEN1cnJlbmN5LmNqcyJ9
@@ -0,0 +1,76 @@
1
+ import * as React from 'react';
2
+
3
+ interface InputCurrencyProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange' | 'type'> {
4
+ /**
5
+ * Numeric value to display. Accepts `number` or `string` (the component
6
+ * coerces to `Number` internally). Pass `undefined` / `null` / `''` for
7
+ * an empty field.
8
+ */
9
+ value?: number | string | null;
10
+ /**
11
+ * Called with a synthetic input change event. `e.target.value` is
12
+ * replaced by the parsed numeric value — a `number` when the input
13
+ * holds a valid figure, or `''` when the field is cleared.
14
+ * `e.target.name` is preserved so the parent can identify the field.
15
+ */
16
+ onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
17
+ /** ISO 4217 currency code (default `'UGX'`) */
18
+ currency?: string;
19
+ /** BCP 47 locale tag for formatting (default `'en-UG'`) */
20
+ locale?: string;
21
+ /**
22
+ * Number of decimal places.
23
+ * UGX = 0, USD = 2, JPY = 0, etc. (default `0`)
24
+ */
25
+ decimals?: number;
26
+ /**
27
+ * When `true`, formatting omits the currency symbol and outputs a plain
28
+ * locale-formatted number (e.g. `'150,000'` instead of `'UGX 150,000'`).
29
+ * Useful for non-monetary numeric inputs that still benefit from
30
+ * thousand-separator formatting.
31
+ */
32
+ plain?: boolean;
33
+ }
34
+ /**
35
+ * Controlled currency input for financial forms.
36
+ *
37
+ * **Data contract**: numbers in, numbers out. The component manages a
38
+ * locale-formatted display internally — the consumer never sees commas
39
+ * or currency symbols in its state.
40
+ *
41
+ * **Editing UX**: while the field is focused, the raw number is shown so
42
+ * the user can type without commas / symbols fighting their keystrokes.
43
+ * On blur (or when the external `value` prop changes from above), the
44
+ * display snaps back to the locale-formatted string.
45
+ *
46
+ * @example
47
+ * // UGX — zero decimal places, symbol shown
48
+ * <InputCurrency
49
+ * value={150000}
50
+ * name="fee"
51
+ * onChange={(e) => setFee(e.target.value)}
52
+ * />
53
+ *
54
+ * @example
55
+ * // USD with cents
56
+ * <InputCurrency
57
+ * value={99.99}
58
+ * currency="USD"
59
+ * locale="en-US"
60
+ * decimals={2}
61
+ * name="price"
62
+ * onChange={(e) => setPrice(e.target.value)}
63
+ * />
64
+ *
65
+ * @example
66
+ * // Plain locale number — no currency symbol
67
+ * <InputCurrency
68
+ * value={50000}
69
+ * plain
70
+ * name="count"
71
+ * onChange={(e) => setCount(e.target.value)}
72
+ * />
73
+ */
74
+ declare const InputCurrency: React.ForwardRefExoticComponent<InputCurrencyProps & React.RefAttributes<HTMLInputElement>>;
75
+
76
+ export { InputCurrency, type InputCurrencyProps, InputCurrency as default };
@@ -0,0 +1,76 @@
1
+ import * as React from 'react';
2
+
3
+ interface InputCurrencyProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange' | 'type'> {
4
+ /**
5
+ * Numeric value to display. Accepts `number` or `string` (the component
6
+ * coerces to `Number` internally). Pass `undefined` / `null` / `''` for
7
+ * an empty field.
8
+ */
9
+ value?: number | string | null;
10
+ /**
11
+ * Called with a synthetic input change event. `e.target.value` is
12
+ * replaced by the parsed numeric value — a `number` when the input
13
+ * holds a valid figure, or `''` when the field is cleared.
14
+ * `e.target.name` is preserved so the parent can identify the field.
15
+ */
16
+ onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
17
+ /** ISO 4217 currency code (default `'UGX'`) */
18
+ currency?: string;
19
+ /** BCP 47 locale tag for formatting (default `'en-UG'`) */
20
+ locale?: string;
21
+ /**
22
+ * Number of decimal places.
23
+ * UGX = 0, USD = 2, JPY = 0, etc. (default `0`)
24
+ */
25
+ decimals?: number;
26
+ /**
27
+ * When `true`, formatting omits the currency symbol and outputs a plain
28
+ * locale-formatted number (e.g. `'150,000'` instead of `'UGX 150,000'`).
29
+ * Useful for non-monetary numeric inputs that still benefit from
30
+ * thousand-separator formatting.
31
+ */
32
+ plain?: boolean;
33
+ }
34
+ /**
35
+ * Controlled currency input for financial forms.
36
+ *
37
+ * **Data contract**: numbers in, numbers out. The component manages a
38
+ * locale-formatted display internally — the consumer never sees commas
39
+ * or currency symbols in its state.
40
+ *
41
+ * **Editing UX**: while the field is focused, the raw number is shown so
42
+ * the user can type without commas / symbols fighting their keystrokes.
43
+ * On blur (or when the external `value` prop changes from above), the
44
+ * display snaps back to the locale-formatted string.
45
+ *
46
+ * @example
47
+ * // UGX — zero decimal places, symbol shown
48
+ * <InputCurrency
49
+ * value={150000}
50
+ * name="fee"
51
+ * onChange={(e) => setFee(e.target.value)}
52
+ * />
53
+ *
54
+ * @example
55
+ * // USD with cents
56
+ * <InputCurrency
57
+ * value={99.99}
58
+ * currency="USD"
59
+ * locale="en-US"
60
+ * decimals={2}
61
+ * name="price"
62
+ * onChange={(e) => setPrice(e.target.value)}
63
+ * />
64
+ *
65
+ * @example
66
+ * // Plain locale number — no currency symbol
67
+ * <InputCurrency
68
+ * value={50000}
69
+ * plain
70
+ * name="count"
71
+ * onChange={(e) => setCount(e.target.value)}
72
+ * />
73
+ */
74
+ declare const InputCurrency: React.ForwardRefExoticComponent<InputCurrencyProps & React.RefAttributes<HTMLInputElement>>;
75
+
76
+ export { InputCurrency, type InputCurrencyProps, InputCurrency as default };
@@ -0,0 +1,2 @@
1
+ export{a as InputCurrency,b as default}from'./chunk-7N56SRTN.js';import'./chunk-RR7TBRGI.js';//# sourceMappingURL=InputCurrency.js.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJJbnB1dEN1cnJlbmN5LmpzIn0=
@@ -0,0 +1,2 @@
1
+ import {a}from'./chunk-RR7TBRGI.js';import*as t from'react';import {jsx}from'react/jsx-runtime';var b=t.forwardRef(({value:r,onChange:h,className:C,name:i,id:I,disabled:N=false,readOnly:y=false,placeholder:E,currency:l="UGX",locale:c="en-UG",decimals:a$1=0,plain:m=false,onBlur:F,onFocus:L,...M},H)=>{let o=t.useCallback(e=>{if(e==null||e==="")return "";let n=Number(e);if(Number.isNaN(n))return "";let u=a$1>0?{minimumFractionDigits:a$1,maximumFractionDigits:a$1}:{minimumFractionDigits:0,maximumFractionDigits:0};return m?n.toLocaleString(c,u):n.toLocaleString(c,{style:"currency",currency:l,...u})},[l,c,a$1,m]),f=t.useCallback(e=>{if(!e)return "";let n=e.replace(/[^0-9.\-]/g,"");if(n==="-"||n===""||n===".")return "";let u=Number(n);return Number.isNaN(u)?"":a$1===0?Math.round(u):u},[a$1]),[p,g]=t.useState(false),[T,s]=t.useState(()=>o(r)),d=t.useRef(r);return t.useEffect(()=>{!p&&r!==d.current&&s(o(r)),d.current=r;},[r,p,o]),jsx("input",{ref:H,type:"text",id:I??i,name:i,value:T,onChange:e=>{let n=e.target.value;s(n);let u=f(n);e.target.value=u,h?.(e);},onFocus:e=>{g(true),r!=null&&r!==""&&s(String(r)),L?.(e);},onBlur:e=>{g(false);let n=f(e.target.value);s(o(n)),F?.(e);},disabled:N,readOnly:y,placeholder:E,inputMode:"decimal",autoComplete:"off",className:a("form-control",C),...M})});b.displayName="InputCurrency";var O=b;export{b as a,O as b};//# sourceMappingURL=chunk-7N56SRTN.js.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21wb25lbnRzL0lucHV0Q3VycmVuY3kudHN4Il0sIm5hbWVzIjpbIklucHV0Q3VycmVuY3kiLCJ2YWx1ZSIsIm9uQ2hhbmdlIiwiY2xhc3NOYW1lIiwibmFtZSIsImlkIiwiZGlzYWJsZWQiLCJyZWFkT25seSIsInBsYWNlaG9sZGVyIiwiY3VycmVuY3kiLCJsb2NhbGUiLCJkZWNpbWFscyIsInBsYWluIiwib25CbHVyIiwib25Gb2N1cyIsInJlc3QiLCJyZWYiLCJmb3JtYXREaXNwbGF5IiwidmFsIiwibnVtIiwiZnJhY3Rpb25EaWdpdHMiLCJwYXJzZU51bWVyaWMiLCJyYXciLCJjbGVhbmVkIiwiZm9jdXNlZCIsInNldEZvY3VzZWQiLCJpbm5lciIsInNldElubmVyIiwicHJldlZhbHVlUmVmIiwianN4IiwibnVtZXJpYyIsImNuIiwiSW5wdXRDdXJyZW5jeV9kZWZhdWx0Il0sIm1hcHBpbmdzIjoiZ0dBb0ZBLElBQU1BLENBQUFBLENBQXNCLENBQUEsQ0FBQSxVQUFBLENBQzFCLENBQ0UsQ0FDRSxLQUFBLENBQUFDLENBQUFBLENBQ0EsUUFBQSxDQUFBQyxDQUFBQSxDQUNBLFVBQUFDLENBQUFBLENBQ0EsSUFBQSxDQUFBQyxDQUFBQSxDQUNBLEVBQUEsQ0FBQUMsRUFDQSxRQUFBLENBQUFDLENBQUFBLENBQVcsS0FBQSxDQUNYLFFBQUEsQ0FBQUMsRUFBVyxLQUFBLENBQ1gsV0FBQSxDQUFBQyxDQUFBQSxDQUNBLFFBQUEsQ0FBQUMsRUFBVyxLQUFBLENBQ1gsTUFBQSxDQUFBQyxDQUFBQSxDQUFTLE9BQUEsQ0FDVCxTQUFBQyxHQUFBQSxDQUFXLENBQUEsQ0FDWCxLQUFBLENBQUFDLENBQUFBLENBQVEsS0FBQSxDQUNSLE1BQUEsQ0FBQUMsQ0FBQUEsQ0FDQSxPQUFBLENBQUFDLEVBQ0EsR0FBR0MsQ0FDTCxDQUFBLENBQ0FDLENBQUFBLEdBQ0csQ0FPSCxJQUFNQyxDQUFBQSxDQUFzQixDQUFBLENBQUEsV0FBQSxDQUN6QkMsQ0FB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QUFTLE1BQUEsQ0FBTzFCLENBQUssQ0FBQyxFQUV4QmEsQ0FBQUEsR0FBVSxDQUFDLEVBQ2IsQ0FBQSxDQXFCSSxPQW5CZ0IsQ0FBQSxFQUEwQyxDQUM1RFcsQ0FBQUEsQ0FBVyxLQUFLLEVBRWhCLElBQU1LLENBQUFBLENBQVVULENBQUFBLENBQWEsQ0FBQSxDQUFFLE9BQU8sS0FBSyxDQUFBLENBQzNDTSxDQUFBQSxDQUFTVixDQUFBQSxDQUFjYSxDQUFPLENBQUMsQ0FBQSxDQUMvQmpCLENBQUFBLEdBQVMsQ0FBQyxFQUNaLENBQUEsQ0FjSSxRQUFBLENBQVVQLENBQUFBLENBQ1YsUUFBQSxDQUFVQyxFQUNWLFdBQUEsQ0FBYUMsQ0FBQUEsQ0FDYixTQUFBLENBQVUsU0FBQSxDQUNWLGFBQWEsS0FBQSxDQUNiLFNBQUEsQ0FBV3VCLENBQUFBLENBQUcsY0FBQSxDQUFnQjVCLENBQVMsQ0FBQSxDQUN0QyxHQUFHWSxDQUFBQSxDQUNOLENBRUosQ0FDRixFQUVBZixDQUFBQSxDQUFjLFdBQUEsQ0FBYyxlQUFBLEtBR3JCZ0MsQ0FBQUEsQ0FBUWhDIiwiZmlsZSI6ImNodW5rLTdONTZTUlROLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjbiB9IGZyb20gJy4uL2xpYi9jbi5qcydcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiAgVHlwZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuZXhwb3J0IGludGVyZmFjZSBJbnB1dEN1cnJlbmN5UHJvcHNcbiAgZXh0ZW5kcyBPbWl0PFJlYWN0LklucHV0SFRNTEF0dHJpYnV0ZXM8SFRNTElucHV0RWxlbWVudD4sICd2YWx1ZScgfCAnb25DaGFuZ2UnIHwgJ3R5cGUnPiB7XG4gIC8qKlxuICAgKiBOdW1lcmljIHZhbHVlIHRvIGRpc3BsYXkuIEFjY2VwdHMgYG51bWJlcmAgb3IgYHN0cmluZ2AgKHRoZSBjb21wb25lbnRcbiAgICogY29lcmNlcyB0byBgTnVtYmVyYCBpbnRlcm5hbGx5KS4gUGFzcyBgdW5kZWZpbmVkYCAvIGBudWxsYCAvIGAnJ2AgZm9yXG4gICAqIGFuIGVtcHR5IGZpZWxkLlxuICAgKi9cbiAgdmFsdWU/OiBudW1iZXIgfCBzdHJpbmcgfCBudWxsXG4gIC8qKlxuICAgKiBDYWxsZWQgd2l0aCBhIHN5bnRoZXRpYyBpbnB1dCBjaGFuZ2UgZXZlbnQuIGBlLnRhcmdldC52YWx1ZWAgaXNcbiAgICogcmVwbGFjZWQgYnkgdGhlIHBhcnNlZCBudW1lcmljIHZhbHVlIOKAlCBhIGBudW1iZXJgIHdoZW4gdGhlIGlucHV0XG4gICAqIGhvbGRzIGEgdmFsaWQgZmlndXJlLCBvciBgJydgIHdoZW4gdGhlIGZpZWxkIGlzIGNsZWFyZWQuXG4gICAqIGBlLnRhcmdldC5uYW1lYCBpcyBwcmVzZXJ2ZWQgc28gdGhlIHBhcmVudCBjYW4gaWRlbnRpZnkgdGhlIGZpZWxkLlxuICAgKi9cbiAgb25DaGFuZ2U/OiAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHZvaWRcbiAgLyoqIElTTyA0MjE3IGN1cnJlbmN5IGNvZGUgKGRlZmF1bHQgYCdVR1gnYCkgKi9cbiAgY3VycmVuY3k/OiBzdHJpbmdcbiAgLyoqIEJDUCA0NyBsb2NhbGUgdGFnIGZvciBmb3JtYXR0aW5nIChkZWZhdWx0IGAnZW4tVUcnYCkgKi9cbiAgbG9jYWxlPzogc3RyaW5nXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgZGVjaW1hbCBwbGFjZXMuXG4gICAqIFVHWCA9IDAsIFVTRCA9IDIsIEpQWSA9IDAsIGV0Yy4gKGRlZmF1bHQgYDBgKVxuICAgKi9cbiAgZGVjaW1hbHM/OiBudW1iZXJcbiAgLyoqXG4gICAqIFdoZW4gYHRydWVgLCBmb3JtYXR0aW5nIG9taXRzIHRoZSBjdXJyZW5jeSBzeW1ib2wgYW5kIG91dHB1dHMgYSBwbGFpblxuICAgKiBsb2NhbGUtZm9ybWF0dGVkIG51bWJlciAoZS5nLiBgJzE1MCwwMDAnYCBpbnN0ZWFkIG9mIGAnVUdYIDE1MCwwMDAnYCkuXG4gICAqIFVzZWZ1bCBmb3Igbm9uLW1vbmV0YXJ5IG51bWVyaWMgaW5wdXRzIHRoYXQgc3RpbGwgYmVuZWZpdCBmcm9tXG4gICAqIHRob3VzYW5kLXNlcGFyYXRvciBmb3JtYXR0aW5nLlxuICAgKi9cbiAgcGxhaW4/OiBib29sZWFuXG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogIElucHV0Q3VycmVuY3kgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogQ29udHJvbGxlZCBjdXJyZW5jeSBpbnB1dCBmb3IgZmluYW5jaWFsIGZvcm1zLlxuICpcbiAqICoqRGF0YSBjb250cmFjdCoqOiBudW1iZXJzIGluLCBudW1iZXJzIG91dC4gVGhlIGNvbXBvbmVudCBtYW5hZ2VzIGFcbiAqIGxvY2FsZS1mb3JtYXR0ZWQgZGlzcGxheSBpbnRlcm5hbGx5IOKAlCB0aGUgY29uc3VtZXIgbmV2ZXIgc2VlcyBjb21tYXNcbiAqIG9yIGN1cnJlbmN5IHN5bWJvbHMgaW4gaXRzIHN0YXRlLlxuICpcbiAqICoqRWRpdGluZyBVWCoqOiB3aGlsZSB0aGUgZmllbGQgaXMgZm9jdXNlZCwgdGhlIHJhdyBudW1iZXIgaXMgc2hvd24gc29cbiAqIHRoZSB1c2VyIGNhbiB0eXBlIHdpdGhvdXQgY29tbWFzIC8gc3ltYm9scyBmaWdodGluZyB0aGVpciBrZXlzdHJva2VzLlxuICogT24gYmx1ciAob3Igd2hlbiB0aGUgZXh0ZXJuYWwgYHZhbHVlYCBwcm9wIGNoYW5nZXMgZnJvbSBhYm92ZSksIHRoZVxuICogZGlzcGxheSBzbmFwcyBiYWNrIHRvIHRoZSBsb2NhbGUtZm9ybWF0dGVkIHN0cmluZy5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVUdYIOKAlCB6ZXJvIGRlY2ltYWwgcGxhY2VzLCBzeW1ib2wgc2hvd25cbiAqIDxJbnB1dEN1cnJlbmN5XG4gKiAgIHZhbHVlPXsxNTAwMDB9XG4gKiAgIG5hbWU9XCJmZWVcIlxuICogICBvbkNoYW5nZT17KGUpID0+IHNldEZlZShlLnRhcmdldC52YWx1ZSl9XG4gKiAvPlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBVU0Qgd2l0aCBjZW50c1xuICogPElucHV0Q3VycmVuY3lcbiAqICAgdmFsdWU9ezk5Ljk5fVxuICogICBjdXJyZW5jeT1cIlVTRFwiXG4gKiAgIGxvY2FsZT1cImVuLVVTXCJcbiAqICAgZGVjaW1hbHM9ezJ9XG4gKiAgIG5hbWU9XCJwcmljZVwiXG4gKiAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0UHJpY2UoZS50YXJnZXQudmFsdWUpfVxuICogLz5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUGxhaW4gbG9jYWxlIG51bWJlciDigJQgbm8gY3VycmVuY3kgc3ltYm9sXG4gKiA8SW5wdXRDdXJyZW5jeVxuICogICB2YWx1ZT17NTAwMDB9XG4gKiAgIHBsYWluXG4gKiAgIG5hbWU9XCJjb3VudFwiXG4gKiAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0Q291bnQoZS50YXJnZXQudmFsdWUpfVxuICogLz5cbiAqL1xuY29uc3QgSW5wdXRDdXJyZW5jeSA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTElucHV0RWxlbWVudCwgSW5wdXRDdXJyZW5jeVByb3BzPihcbiAgKFxuICAgIHtcbiAgICAgIHZhbHVlLFxuICAgICAgb25DaGFuZ2UsXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBuYW1lLFxuICAgICAgaWQsXG4gICAgICBkaXNhYmxlZCA9IGZhbHNlLFxuICAgICAgcmVhZE9ubHkgPSBmYWxzZSxcbiAgICAgIHBsYWNlaG9sZGVyLFxuICAgICAgY3VycmVuY3kgPSAnVUdYJyxcbiAgICAgIGxvY2FsZSA9ICdlbi1VRycsXG4gICAgICBkZWNpbWFscyA9IDAsXG4gICAgICBwbGFpbiA9IGZhbHNlLFxuICAgICAgb25CbHVyLFxuICAgICAgb25Gb2N1cyxcbiAgICAgIC4uLnJlc3RcbiAgICB9LFxuICAgIHJlZixcbiAgKSA9PiB7XG4gICAgLyogLS0tLSBoZWxwZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbiAgICAvKipcbiAgICAgKiBOdW1iZXIg4oaSIGxvY2FsZS1mb3JtYXR0ZWQgZGlzcGxheSBzdHJpbmcuXG4gICAgICogUmV0dXJucyBgJydgIGZvciBudWxsIC8gdW5kZWZpbmVkIC8gTmFOIHNvIHRoZSBpbnB1dCBzaG93cyB0aGUgcGxhY2Vob2xkZXIuXG4gICAgICovXG4gICAgY29uc3QgZm9ybWF0RGlzcGxheSA9IFJlYWN0LnVzZUNhbGxiYWNrKFxuICAgICAgKHZhbDogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZyA9PiB7XG4gICAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQgfHwgdmFsID09PSAnJykgcmV0dXJuICcnXG4gICAgICAgIGNvbnN0IG51bSA9IE51bWJlcih2YWwpXG4gICAgICAgIGlmIChOdW1iZXIuaXNOYU4obnVtKSkgcmV0dXJuICcnXG5cbiAgICAgICAgY29uc3QgZnJhY3Rpb25EaWdpdHM6IEludGwuTnVtYmVyRm9ybWF0T3B0aW9ucyA9XG4gICAgICAgICAgZGVjaW1hbHMgPiAwXG4gICAgICAgICAgICA/IHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiBkZWNpbWFscywgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBkZWNpbWFscyB9XG4gICAgICAgICAgICA6IHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDAgfVxuXG4gICAgICAgIHJldHVybiBwbGFpblxuICAgICAgICAgID8gbnVtLnRvTG9jYWxlU3RyaW5nKGxvY2FsZSwgZnJhY3Rpb25EaWdpdHMpXG4gICAgICAgICAgOiBudW0udG9Mb2NhbGVTdHJpbmcobG9jYWxlLCB7IHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeSwgLi4uZnJhY3Rpb25EaWdpdHMgfSlcbiAgICAgIH0sXG4gICAgICBbY3VycmVuY3ksIGxvY2FsZSwgZGVjaW1hbHMsIHBsYWluXSxcbiAgICApXG5cbiAgICAvKipcbiAgICAgKiBSYXcgaW5wdXQgc3RyaW5nIOKGkiBudW1lcmljIHZhbHVlIChgbnVtYmVyIHwgJydgKS5cbiAgICAgKiBTdHJpcHMgZm9ybWF0dGluZyBjaGFyYWN0ZXJzLCBoYW5kbGVzIGVkZ2UgY2FzZXMgbGlrZSBsb25lIGBcIi5cImAgb3IgYFwiLVwiYC5cbiAgICAgKi9cbiAgICBjb25zdCBwYXJzZU51bWVyaWMgPSBSZWFjdC51c2VDYWxsYmFjayhcbiAgICAgIChyYXc6IHN0cmluZyk6IG51bWJlciB8ICcnID0+IHtcbiAgICAgICAgaWYgKCFyYXcpIHJldHVybiAnJ1xuICAgICAgICAvLyBSZW1vdmUgZXZlcnl0aGluZyBleGNlcHQgZGlnaXRzLCBkZWNpbWFsIHBvaW50LCBhbmQgbGVhZGluZyBtaW51c1xuICAgICAgICBjb25zdCBjbGVhbmVkID0gcmF3LnJlcGxhY2UoL1teMC05LlxcLV0vZywgJycpXG4gICAgICAgIC8vIEd1YXJkIGFnYWluc3QgXCItXCIgYWxvbmVcbiAgICAgICAgaWYgKGNsZWFuZWQgPT09ICctJyB8fCBjbGVhbmVkID09PSAnJykgcmV0dXJuICcnXG4gICAgICAgIC8vIEd1YXJkIGFnYWluc3QgbG9uZSBcIi5cIlxuICAgICAgICBpZiAoY2xlYW5lZCA9PT0gJy4nKSByZXR1cm4gJydcbiAgICAgICAgY29uc3QgbnVtID0gTnVtYmVyKGNsZWFuZWQpXG4gICAgICAgIGlmIChOdW1iZXIuaXNOYU4obnVtKSkgcmV0dXJuICcnXG4gICAgICAgIHJldHVybiBkZWNpbWFscyA9PT0gMCA/IE1hdGgucm91bmQobnVtKSA6IG51bVxuICAgICAgfSxcbiAgICAgIFtkZWNpbWFsc10sXG4gICAgKVxuXG4gICAgLyogLS0tLSBkZXJpdmVkIHN0YXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbiAgICBjb25zdCBbZm9jdXNlZCwgc2V0Rm9jdXNlZF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSlcblxuICAgIC8vIFRoZSBzdHJpbmcgc2hvd24gaW5zaWRlIHRoZSBgPGlucHV0PmAuIFdoaWxlIHRoZSB1c2VyIGlzIGVkaXRpbmcgd2Ugc2hvd1xuICAgIC8vIHRoZSByYXcgbnVtYmVyIHNvIGNvbW1hcyAvIHN5bWJvbHMgZG9uJ3QgZmlnaHQgdGhlaXIga2V5c3Ryb2tlcy4gV2hlblxuICAgIC8vIHRoZXkgbGVhdmUgdGhlIGZpZWxkIChvciB0aGUgZXh0ZXJuYWwgdmFsdWUgY2hhbmdlcyBmcm9tIGFib3ZlKSB3ZVxuICAgIC8vIHJlZm9ybWF0LlxuICAgIGNvbnN0IFtpbm5lciwgc2V0SW5uZXJdID0gUmVhY3QudXNlU3RhdGU8c3RyaW5nPigoKSA9PiBmb3JtYXREaXNwbGF5KHZhbHVlKSlcblxuICAgIC8vIEtlZXAgdGhlIGRpc3BsYXkgaW4gc3luYyB3aGVuIHRoZSBwYXJlbnQgcHVzaGVzIGEgbmV3IHZhbHVlIHdoaWxlIHRoZVxuICAgIC8vIGZpZWxkIGlzIE5PVCBmb2N1c2VkIChlLmcuIGFmdGVyIGEgc3VjY2Vzc2Z1bCBBUEkgY2FsbCB0aGF0IHJlc2V0cyB0aGVcbiAgICAvLyBmb3JtLCBvciBzd2l0Y2hpbmcgYmV0d2VlbiByZWNvcmRzKS5cbiAgICBjb25zdCBwcmV2VmFsdWVSZWYgPSBSZWFjdC51c2VSZWYodmFsdWUpXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICghZm9jdXNlZCAmJiB2YWx1ZSAhPT0gcHJldlZhbHVlUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgc2V0SW5uZXIoZm9ybWF0RGlzcGxheSh2YWx1ZSkpXG4gICAgICB9XG4gICAgICBwcmV2VmFsdWVSZWYuY3VycmVudCA9IHZhbHVlXG4gICAgfSwgW3ZhbHVlLCBmb2N1c2VkLCBmb3JtYXREaXNwbGF5XSlcblxuICAgIC8qIC0tLS0gZXZlbnQgaGFuZGxlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgICBjb25zdCByYXcgPSBlLnRhcmdldC52YWx1ZVxuICAgICAgc2V0SW5uZXIocmF3KSAvLyBsZXQgdGhlIHVzZXIgc2VlIHdoYXQgdGhleSdyZSB0eXBpbmdcblxuICAgICAgY29uc3QgbnVtZXJpYyA9IHBhcnNlTnVtZXJpYyhyYXcpO1xuICAgICAgKGUudGFyZ2V0IGFzIHVua25vd24gYXMgeyB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIH0pLnZhbHVlID0gbnVtZXJpY1xuICAgICAgb25DaGFuZ2U/LihlKVxuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZUZvY3VzID0gKGU6IFJlYWN0LkZvY3VzRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICAgIHNldEZvY3VzZWQodHJ1ZSlcbiAgICAgIC8vIFN3aXRjaCBkaXNwbGF5IHRvIHJhdyBudW1iZXIgc28gdGhlIHVzZXIgY2FuIGVkaXQgd2l0aG91dCBmcmljdGlvblxuICAgICAgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09ICcnKSB7XG4gICAgICAgIHNldElubmVyKFN0cmluZyh2YWx1ZSkpXG4gICAgICB9XG4gICAgICBvbkZvY3VzPy4oZSlcbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVCbHVyID0gKGU6IFJlYWN0LkZvY3VzRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICAgIHNldEZvY3VzZWQoZmFsc2UpXG4gICAgICAvLyBSZS1mb3JtYXQgYmVmb3JlIHRoZSB1c2VyIHNlZXMgdGhlIGZpZWxkIGFnYWluXG4gICAgICBjb25zdCBudW1lcmljID0gcGFyc2VOdW1lcmljKGUudGFyZ2V0LnZhbHVlKVxuICAgICAgc2V0SW5uZXIoZm9ybWF0RGlzcGxheShudW1lcmljKSlcbiAgICAgIG9uQmx1cj8uKGUpXG4gICAgfVxuXG4gICAgLyogLS0tLSByZW5kZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbiAgICByZXR1cm4gKFxuICAgICAgPGlucHV0XG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIGlkPXtpZCA/PyBuYW1lfVxuICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICB2YWx1ZT17aW5uZXJ9XG4gICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgIG9uRm9jdXM9e2hhbmRsZUZvY3VzfVxuICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgcmVhZE9ubHk9e3JlYWRPbmx5fVxuICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgIGlucHV0TW9kZT1cImRlY2ltYWxcIlxuICAgICAgICBhdXRvQ29tcGxldGU9XCJvZmZcIlxuICAgICAgICBjbGFzc05hbWU9e2NuKCdmb3JtLWNvbnRyb2wnLCBjbGFzc05hbWUpfVxuICAgICAgICB7Li4ucmVzdH1cbiAgICAgIC8+XG4gICAgKVxuICB9LFxuKVxuXG5JbnB1dEN1cnJlbmN5LmRpc3BsYXlOYW1lID0gJ0lucHV0Q3VycmVuY3knXG5cbmV4cG9ydCB7IElucHV0Q3VycmVuY3kgfVxuZXhwb3J0IGRlZmF1bHQgSW5wdXRDdXJyZW5jeVxuIl19
@@ -0,0 +1,2 @@
1
+ 'use strict';var chunkNPQQDBFB_cjs=require('./chunk-NPQQDBFB.cjs'),t=require('react'),jsxRuntime=require('react/jsx-runtime');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var t__namespace=/*#__PURE__*/_interopNamespace(t);var b=t__namespace.forwardRef(({value:r,onChange:h,className:C,name:i,id:I,disabled:N=false,readOnly:y=false,placeholder:E,currency:l="UGX",locale:c="en-UG",decimals:a=0,plain:m=false,onBlur:F,onFocus:L,...M},H)=>{let o=t__namespace.useCallback(e=>{if(e==null||e==="")return "";let n=Number(e);if(Number.isNaN(n))return "";let u=a>0?{minimumFractionDigits:a,maximumFractionDigits:a}:{minimumFractionDigits:0,maximumFractionDigits:0};return m?n.toLocaleString(c,u):n.toLocaleString(c,{style:"currency",currency:l,...u})},[l,c,a,m]),f=t__namespace.useCallback(e=>{if(!e)return "";let n=e.replace(/[^0-9.\-]/g,"");if(n==="-"||n===""||n===".")return "";let u=Number(n);return Number.isNaN(u)?"":a===0?Math.round(u):u},[a]),[p,g]=t__namespace.useState(false),[T,s]=t__namespace.useState(()=>o(r)),d=t__namespace.useRef(r);return t__namespace.useEffect(()=>{!p&&r!==d.current&&s(o(r)),d.current=r;},[r,p,o]),jsxRuntime.jsx("input",{ref:H,type:"text",id:I??i,name:i,value:T,onChange:e=>{let n=e.target.value;s(n);let u=f(n);e.target.value=u,h?.(e);},onFocus:e=>{g(true),r!=null&&r!==""&&s(String(r)),L?.(e);},onBlur:e=>{g(false);let n=f(e.target.value);s(o(n)),F?.(e);},disabled:N,readOnly:y,placeholder:E,inputMode:"decimal",autoComplete:"off",className:chunkNPQQDBFB_cjs.a("form-control",C),...M})});b.displayName="InputCurrency";var O=b;exports.a=b;exports.b=O;//# sourceMappingURL=chunk-AQJZQLFZ.cjs.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21wb25lbnRzL0lucHV0Q3VycmVuY3kudHN4Il0sIm5hbWVzIjpbIklucHV0Q3VycmVuY3kiLCJ0IiwidmFsdWUiLCJvbkNoYW5nZSIsImNsYXNzTmFtZSIsIm5hbWUiLCJpZCIsImRpc2FibGVkIiwicmVhZE9ubHkiLCJwbGFjZWhvbGRlciIsImN1cnJlbmN5IiwibG9jYWxlIiwiZGVjaW1hbHMiLCJwbGFpbiIsIm9uQmx1ciIsIm9uRm9jdXMiLCJyZXN0IiwicmVmIiwiZm9ybWF0RGlzcGxheSIsInZhbCIsIm51bSIsImZyYWN0aW9uRGlnaXRzIiwicGFyc2VOdW1lcmljIiwicmF3IiwiY2xlYW5lZCIsImZvY3VzZWQiLCJzZXRGb2N1c2VkIiwiaW5uZXIiLCJzZXRJbm5lciIsInByZXZWYWx1ZVJlZiIsImpzeCIsIm51bWVyaWMiLCJjbiIsIklucHV0Q3VycmVuY3lfZGVmYXVsdCJdLCJtYXBwaW5ncyI6Im9lQW9GQSxJQUFNQSxDQUFBQSxDQUFzQkMsWUFBQSxDQUFBLFVBQUEsQ0FDMUIsQ0FDRSxDQUNFLEtBQUEsQ0FBQUMsQ0FBQUEsQ0FDQSxRQUFBLENBQUFDLENBQUFBLENBQ0EsVUFBQUMsQ0FBQUEsQ0FDQSxJQUFBLENBQUFDLENBQUFBLENBQ0EsRUFBQSxDQUFBQyxFQUNBLFFBQUEsQ0FBQUMsQ0FBQUEsQ0FBVyxLQUFBLENBQ1gsUUFBQSxDQUFBQyxFQUFXLEtBQUEsQ0FDWCxXQUFBLENBQUFDLENBQUFBLENBQ0EsUUFBQSxDQUFBQyxFQUFXLEtBQUEsQ0FDWCxNQUFBLENBQUFDLENBQUFBLENBQVMsT0FBQSxDQUNULFNBQUFDLENBQUFBLENBQVcsQ0FBQSxDQUNYLEtBQUEsQ0FBQUMsQ0FBQUEsQ0FBUSxLQUFBLENBQ1IsTUFBQSxDQUFBQyxDQUFBQSxDQUNBLE9BQUEsQ0FBQUMsRUFDQSxHQUFHQyxDQUNMLENBQUEsQ0FDQUMsQ0FBQUEsR0FDRyxDQU9ILElBQU1DLENBQUFBLENBQXNCakIsWUFBQSxDQUFBLFdBQUEsQ0FDekJrQixDQUFBQSxFQUFvRCxDQUNuRCxHQUFJQSxDQUFBQSxFQUFRLElBQUEsRUFBNkJBLENBQUFBLEdBQVEsR0FBSSxPQUFPLEVBQUEsQ0FDNUQsSUFBTUMsQ0FBQUEsQ0FBTSxPQUFPRCxDQUFHLENBQUEsQ0FDdEIsR0FBSSxNQUFBLENBQU8sTUFBTUMsQ0FBRyxDQUFBLENBQUcsT0FBTyxFQUFBLENBRTlCLElBQU1DLENBQUFBLENBQ0pULENBQUFBLENBQVcsQ0FBQSxDQUNQLENBQUUscUJBQUEsQ0FBdUJBLENBQUFBLENBQVUscUJBQUEsQ0FBdUJBLENBQVMsRUFDbkUsQ0FBRSxxQkFBQSxDQUF1QixDQUFBLENBQUcscUJBQUEsQ0FBdUIsQ0FBRSxDQUFBLENBRTNELE9BQU9DLENBQUFBLENBQ0hPLENBQUFBLENBQUksZUFBZVQsQ0FBQUEsQ0FBUVUsQ0FBYyxDQUFBLENBQ3pDRCxDQUFBQSxDQUFJLGVBQWVULENBQUFBLENBQVEsQ0FBRSxLQUFBLENBQU8sVUFBQSxDQUFZLFNBQUFELENBQUFBLENBQVUsR0FBR1csQ0FBZSxDQUFDLENBQ25GLENBQUEsQ0FDQSxDQUFDWCxDQUFBQSxDQUFVQyxDQUFBQSxDQUFRQyxFQUFVQyxDQUFLLENBQ3BDLENBQUEsQ0FNTVMsQ0FBQUEsQ0FBcUJyQix5QkFDeEJzQixDQUFBQSxFQUE2QixDQUM1QixHQUFJLENBQUNBLEVBQUssT0FBTyxFQUFBLENBRWpCLElBQU1DLENBQUFBLENBQVVELEVBQUksT0FBQSxDQUFRLFlBQUEsQ0FBYyxFQUFFLENBQUEsQ0FJNUMsR0FGSUMsQ0FBQUEsR0FBWSxHQUFBLEVBQU9BLENBQUFBLEdBQVksRUFBQSxFQUUvQkEsSUFBWSxHQUFBLENBQUssT0FBTyxFQUFBLENBQzVCLElBQU1KLEVBQU0sTUFBQSxDQUFPSSxDQUFPLENBQUEsQ0FDMUIsT0FBSSxPQUFPLEtBQUEsQ0FBTUosQ0FBRyxDQUFBLENBQVUsRUFBQSxDQUN2QlIsSUFBYSxDQUFBLENBQUksSUFBQSxDQUFLLEtBQUEsQ0FBTVEsQ0FBRyxDQUFBLENBQUlBLENBQzVDLENBQUEsQ0FDQSxDQUFDUixDQUFRLENBQ1gsQ0FBQSxDQUlNLENBQUNhLENBQUFBLENBQVNDLENBQVUsQ0FBQSxDQUFVekIsWUFBQSxDQUFBLFFBQUEsQ0FBUyxLQUFLLENBQUEsQ0FNNUMsQ0FBQzBCLENBQUFBLENBQU9DLENBQVEsQ0FBQSxDQUFVM0IsWUFBQSxDQUFBLFFBQUEsQ0FBaUIsSUFBTWlCLENBQUFBLENBQWNoQixDQUFLLENBQUMsQ0FBQSxDQUtyRTJCLEVBQXFCNUIsWUFBQSxDQUFBLE1BQUEsQ0FBT0MsQ0FBSyxDQUFBLENBQ3ZDLE9BQU1ELHVCQUFVLElBQU0sQ0FDaEIsQ0FBQ3dCLENBQUFBLEVBQVd2QixJQUFVMkIsQ0FBQUEsQ0FBYSxPQUFBLEVBQ3JDRCxDQUFBQSxDQUFTVixDQUFBQSxDQUFjaEIsQ0FBSyxDQUFDLENBQUEsQ0FFL0IyQixDQUFBQSxDQUFhLE9BQUEsQ0FBVTNCLEVBQ3pCLENBQUEsQ0FBRyxDQUFDQSxDQUFBQSxDQUFPdUIsQ0FBQUEsQ0FBU1AsQ0FBYSxDQUFDLENBQUEsQ0FpQ2hDWSxjQUFBQSxDQUFDLE9BQUEsQ0FBQSxDQUNDLElBQUtiLENBQUFBLENBQ0wsSUFBQSxDQUFLLE1BQUEsQ0FDTCxFQUFBLENBQUlYLEdBQU1ELENBQUFBLENBQ1YsSUFBQSxDQUFNQSxDQUFBQSxDQUNOLEtBQUEsQ0FBT3NCLEVBQ1AsUUFBQSxDQW5Da0IsQ0FBQSxFQUEyQyxDQUMvRCxJQUFNSixFQUFNLENBQUEsQ0FBRSxNQUFBLENBQU8sS0FBQSxDQUNyQkssQ0FBQUEsQ0FBU0wsQ0FBRyxDQUFBLENBRVosSUFBTVEsQ0FBQUEsQ0FBVVQsQ0FBQUEsQ0FBYUMsQ0FBRyxDQUFBLENBQy9CLENBQUEsQ0FBRSxNQUFBLENBQWlELE1BQVFRLENBQUFBLENBQzVENUIsQ0FBQUEsR0FBVyxDQUFDLEVBQ2QsRUE2QkksT0FBQSxDQTNCaUIsQ0FBQSxFQUEwQyxDQUM3RHVCLENBQUFBLENBQVcsSUFBSSxDQUFBLENBRVh4QixDQUFBQSxFQUFVLElBQUEsRUFBK0JBLENBQUFBLEdBQVUsSUFDckQwQixDQUFBQSxDQUFTLE1BQUEsQ0FBTzFCLENBQUssQ0FBQyxFQUV4QmEsQ0FBQUEsR0FBVSxDQUFDLEVBQ2IsQ0FBQSxDQXFCSSxPQW5CZ0IsQ0FBQSxFQUEwQyxDQUM1RFcsQ0FBQUEsQ0FBVyxLQUFLLEVBRWhCLElBQU1LLENBQUFBLENBQVVULENBQUFBLENBQWEsQ0FBQSxDQUFFLE9BQU8sS0FBSyxDQUFBLENBQzNDTSxDQUFBQSxDQUFTVixDQUFBQSxDQUFjYSxDQUFPLENBQUMsQ0FBQSxDQUMvQmpCLENBQUFBLEdBQVMsQ0FBQyxFQUNaLENBQUEsQ0FjSSxRQUFBLENBQVVQLENBQUFBLENBQ1YsUUFBQSxDQUFVQyxFQUNWLFdBQUEsQ0FBYUMsQ0FBQUEsQ0FDYixTQUFBLENBQVUsU0FBQSxDQUNWLGFBQWEsS0FBQSxDQUNiLFNBQUEsQ0FBV3VCLG1CQUFBQSxDQUFHLGNBQUEsQ0FBZ0I1QixDQUFTLENBQUEsQ0FDdEMsR0FBR1ksQ0FBQUEsQ0FDTixDQUVKLENBQ0YsRUFFQWhCLENBQUFBLENBQWMsV0FBQSxDQUFjLGVBQUEsS0FHckJpQyxDQUFBQSxDQUFRakMiLCJmaWxlIjoiY2h1bmstQVFKWlFMRlouY2pzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjbiB9IGZyb20gJy4uL2xpYi9jbi5qcydcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiAgVHlwZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuZXhwb3J0IGludGVyZmFjZSBJbnB1dEN1cnJlbmN5UHJvcHNcbiAgZXh0ZW5kcyBPbWl0PFJlYWN0LklucHV0SFRNTEF0dHJpYnV0ZXM8SFRNTElucHV0RWxlbWVudD4sICd2YWx1ZScgfCAnb25DaGFuZ2UnIHwgJ3R5cGUnPiB7XG4gIC8qKlxuICAgKiBOdW1lcmljIHZhbHVlIHRvIGRpc3BsYXkuIEFjY2VwdHMgYG51bWJlcmAgb3IgYHN0cmluZ2AgKHRoZSBjb21wb25lbnRcbiAgICogY29lcmNlcyB0byBgTnVtYmVyYCBpbnRlcm5hbGx5KS4gUGFzcyBgdW5kZWZpbmVkYCAvIGBudWxsYCAvIGAnJ2AgZm9yXG4gICAqIGFuIGVtcHR5IGZpZWxkLlxuICAgKi9cbiAgdmFsdWU/OiBudW1iZXIgfCBzdHJpbmcgfCBudWxsXG4gIC8qKlxuICAgKiBDYWxsZWQgd2l0aCBhIHN5bnRoZXRpYyBpbnB1dCBjaGFuZ2UgZXZlbnQuIGBlLnRhcmdldC52YWx1ZWAgaXNcbiAgICogcmVwbGFjZWQgYnkgdGhlIHBhcnNlZCBudW1lcmljIHZhbHVlIOKAlCBhIGBudW1iZXJgIHdoZW4gdGhlIGlucHV0XG4gICAqIGhvbGRzIGEgdmFsaWQgZmlndXJlLCBvciBgJydgIHdoZW4gdGhlIGZpZWxkIGlzIGNsZWFyZWQuXG4gICAqIGBlLnRhcmdldC5uYW1lYCBpcyBwcmVzZXJ2ZWQgc28gdGhlIHBhcmVudCBjYW4gaWRlbnRpZnkgdGhlIGZpZWxkLlxuICAgKi9cbiAgb25DaGFuZ2U/OiAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHZvaWRcbiAgLyoqIElTTyA0MjE3IGN1cnJlbmN5IGNvZGUgKGRlZmF1bHQgYCdVR1gnYCkgKi9cbiAgY3VycmVuY3k/OiBzdHJpbmdcbiAgLyoqIEJDUCA0NyBsb2NhbGUgdGFnIGZvciBmb3JtYXR0aW5nIChkZWZhdWx0IGAnZW4tVUcnYCkgKi9cbiAgbG9jYWxlPzogc3RyaW5nXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgZGVjaW1hbCBwbGFjZXMuXG4gICAqIFVHWCA9IDAsIFVTRCA9IDIsIEpQWSA9IDAsIGV0Yy4gKGRlZmF1bHQgYDBgKVxuICAgKi9cbiAgZGVjaW1hbHM/OiBudW1iZXJcbiAgLyoqXG4gICAqIFdoZW4gYHRydWVgLCBmb3JtYXR0aW5nIG9taXRzIHRoZSBjdXJyZW5jeSBzeW1ib2wgYW5kIG91dHB1dHMgYSBwbGFpblxuICAgKiBsb2NhbGUtZm9ybWF0dGVkIG51bWJlciAoZS5nLiBgJzE1MCwwMDAnYCBpbnN0ZWFkIG9mIGAnVUdYIDE1MCwwMDAnYCkuXG4gICAqIFVzZWZ1bCBmb3Igbm9uLW1vbmV0YXJ5IG51bWVyaWMgaW5wdXRzIHRoYXQgc3RpbGwgYmVuZWZpdCBmcm9tXG4gICAqIHRob3VzYW5kLXNlcGFyYXRvciBmb3JtYXR0aW5nLlxuICAgKi9cbiAgcGxhaW4/OiBib29sZWFuXG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogIElucHV0Q3VycmVuY3kgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogQ29udHJvbGxlZCBjdXJyZW5jeSBpbnB1dCBmb3IgZmluYW5jaWFsIGZvcm1zLlxuICpcbiAqICoqRGF0YSBjb250cmFjdCoqOiBudW1iZXJzIGluLCBudW1iZXJzIG91dC4gVGhlIGNvbXBvbmVudCBtYW5hZ2VzIGFcbiAqIGxvY2FsZS1mb3JtYXR0ZWQgZGlzcGxheSBpbnRlcm5hbGx5IOKAlCB0aGUgY29uc3VtZXIgbmV2ZXIgc2VlcyBjb21tYXNcbiAqIG9yIGN1cnJlbmN5IHN5bWJvbHMgaW4gaXRzIHN0YXRlLlxuICpcbiAqICoqRWRpdGluZyBVWCoqOiB3aGlsZSB0aGUgZmllbGQgaXMgZm9jdXNlZCwgdGhlIHJhdyBudW1iZXIgaXMgc2hvd24gc29cbiAqIHRoZSB1c2VyIGNhbiB0eXBlIHdpdGhvdXQgY29tbWFzIC8gc3ltYm9scyBmaWdodGluZyB0aGVpciBrZXlzdHJva2VzLlxuICogT24gYmx1ciAob3Igd2hlbiB0aGUgZXh0ZXJuYWwgYHZhbHVlYCBwcm9wIGNoYW5nZXMgZnJvbSBhYm92ZSksIHRoZVxuICogZGlzcGxheSBzbmFwcyBiYWNrIHRvIHRoZSBsb2NhbGUtZm9ybWF0dGVkIHN0cmluZy5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVUdYIOKAlCB6ZXJvIGRlY2ltYWwgcGxhY2VzLCBzeW1ib2wgc2hvd25cbiAqIDxJbnB1dEN1cnJlbmN5XG4gKiAgIHZhbHVlPXsxNTAwMDB9XG4gKiAgIG5hbWU9XCJmZWVcIlxuICogICBvbkNoYW5nZT17KGUpID0+IHNldEZlZShlLnRhcmdldC52YWx1ZSl9XG4gKiAvPlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBVU0Qgd2l0aCBjZW50c1xuICogPElucHV0Q3VycmVuY3lcbiAqICAgdmFsdWU9ezk5Ljk5fVxuICogICBjdXJyZW5jeT1cIlVTRFwiXG4gKiAgIGxvY2FsZT1cImVuLVVTXCJcbiAqICAgZGVjaW1hbHM9ezJ9XG4gKiAgIG5hbWU9XCJwcmljZVwiXG4gKiAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0UHJpY2UoZS50YXJnZXQudmFsdWUpfVxuICogLz5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUGxhaW4gbG9jYWxlIG51bWJlciDigJQgbm8gY3VycmVuY3kgc3ltYm9sXG4gKiA8SW5wdXRDdXJyZW5jeVxuICogICB2YWx1ZT17NTAwMDB9XG4gKiAgIHBsYWluXG4gKiAgIG5hbWU9XCJjb3VudFwiXG4gKiAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0Q291bnQoZS50YXJnZXQudmFsdWUpfVxuICogLz5cbiAqL1xuY29uc3QgSW5wdXRDdXJyZW5jeSA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTElucHV0RWxlbWVudCwgSW5wdXRDdXJyZW5jeVByb3BzPihcbiAgKFxuICAgIHtcbiAgICAgIHZhbHVlLFxuICAgICAgb25DaGFuZ2UsXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBuYW1lLFxuICAgICAgaWQsXG4gICAgICBkaXNhYmxlZCA9IGZhbHNlLFxuICAgICAgcmVhZE9ubHkgPSBmYWxzZSxcbiAgICAgIHBsYWNlaG9sZGVyLFxuICAgICAgY3VycmVuY3kgPSAnVUdYJyxcbiAgICAgIGxvY2FsZSA9ICdlbi1VRycsXG4gICAgICBkZWNpbWFscyA9IDAsXG4gICAgICBwbGFpbiA9IGZhbHNlLFxuICAgICAgb25CbHVyLFxuICAgICAgb25Gb2N1cyxcbiAgICAgIC4uLnJlc3RcbiAgICB9LFxuICAgIHJlZixcbiAgKSA9PiB7XG4gICAgLyogLS0tLSBoZWxwZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbiAgICAvKipcbiAgICAgKiBOdW1iZXIg4oaSIGxvY2FsZS1mb3JtYXR0ZWQgZGlzcGxheSBzdHJpbmcuXG4gICAgICogUmV0dXJucyBgJydgIGZvciBudWxsIC8gdW5kZWZpbmVkIC8gTmFOIHNvIHRoZSBpbnB1dCBzaG93cyB0aGUgcGxhY2Vob2xkZXIuXG4gICAgICovXG4gICAgY29uc3QgZm9ybWF0RGlzcGxheSA9IFJlYWN0LnVzZUNhbGxiYWNrKFxuICAgICAgKHZhbDogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZyA9PiB7XG4gICAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQgfHwgdmFsID09PSAnJykgcmV0dXJuICcnXG4gICAgICAgIGNvbnN0IG51bSA9IE51bWJlcih2YWwpXG4gICAgICAgIGlmIChOdW1iZXIuaXNOYU4obnVtKSkgcmV0dXJuICcnXG5cbiAgICAgICAgY29uc3QgZnJhY3Rpb25EaWdpdHM6IEludGwuTnVtYmVyRm9ybWF0T3B0aW9ucyA9XG4gICAgICAgICAgZGVjaW1hbHMgPiAwXG4gICAgICAgICAgICA/IHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiBkZWNpbWFscywgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBkZWNpbWFscyB9XG4gICAgICAgICAgICA6IHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDAgfVxuXG4gICAgICAgIHJldHVybiBwbGFpblxuICAgICAgICAgID8gbnVtLnRvTG9jYWxlU3RyaW5nKGxvY2FsZSwgZnJhY3Rpb25EaWdpdHMpXG4gICAgICAgICAgOiBudW0udG9Mb2NhbGVTdHJpbmcobG9jYWxlLCB7IHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeSwgLi4uZnJhY3Rpb25EaWdpdHMgfSlcbiAgICAgIH0sXG4gICAgICBbY3VycmVuY3ksIGxvY2FsZSwgZGVjaW1hbHMsIHBsYWluXSxcbiAgICApXG5cbiAgICAvKipcbiAgICAgKiBSYXcgaW5wdXQgc3RyaW5nIOKGkiBudW1lcmljIHZhbHVlIChgbnVtYmVyIHwgJydgKS5cbiAgICAgKiBTdHJpcHMgZm9ybWF0dGluZyBjaGFyYWN0ZXJzLCBoYW5kbGVzIGVkZ2UgY2FzZXMgbGlrZSBsb25lIGBcIi5cImAgb3IgYFwiLVwiYC5cbiAgICAgKi9cbiAgICBjb25zdCBwYXJzZU51bWVyaWMgPSBSZWFjdC51c2VDYWxsYmFjayhcbiAgICAgIChyYXc6IHN0cmluZyk6IG51bWJlciB8ICcnID0+IHtcbiAgICAgICAgaWYgKCFyYXcpIHJldHVybiAnJ1xuICAgICAgICAvLyBSZW1vdmUgZXZlcnl0aGluZyBleGNlcHQgZGlnaXRzLCBkZWNpbWFsIHBvaW50LCBhbmQgbGVhZGluZyBtaW51c1xuICAgICAgICBjb25zdCBjbGVhbmVkID0gcmF3LnJlcGxhY2UoL1teMC05LlxcLV0vZywgJycpXG4gICAgICAgIC8vIEd1YXJkIGFnYWluc3QgXCItXCIgYWxvbmVcbiAgICAgICAgaWYgKGNsZWFuZWQgPT09ICctJyB8fCBjbGVhbmVkID09PSAnJykgcmV0dXJuICcnXG4gICAgICAgIC8vIEd1YXJkIGFnYWluc3QgbG9uZSBcIi5cIlxuICAgICAgICBpZiAoY2xlYW5lZCA9PT0gJy4nKSByZXR1cm4gJydcbiAgICAgICAgY29uc3QgbnVtID0gTnVtYmVyKGNsZWFuZWQpXG4gICAgICAgIGlmIChOdW1iZXIuaXNOYU4obnVtKSkgcmV0dXJuICcnXG4gICAgICAgIHJldHVybiBkZWNpbWFscyA9PT0gMCA/IE1hdGgucm91bmQobnVtKSA6IG51bVxuICAgICAgfSxcbiAgICAgIFtkZWNpbWFsc10sXG4gICAgKVxuXG4gICAgLyogLS0tLSBkZXJpdmVkIHN0YXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbiAgICBjb25zdCBbZm9jdXNlZCwgc2V0Rm9jdXNlZF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSlcblxuICAgIC8vIFRoZSBzdHJpbmcgc2hvd24gaW5zaWRlIHRoZSBgPGlucHV0PmAuIFdoaWxlIHRoZSB1c2VyIGlzIGVkaXRpbmcgd2Ugc2hvd1xuICAgIC8vIHRoZSByYXcgbnVtYmVyIHNvIGNvbW1hcyAvIHN5bWJvbHMgZG9uJ3QgZmlnaHQgdGhlaXIga2V5c3Ryb2tlcy4gV2hlblxuICAgIC8vIHRoZXkgbGVhdmUgdGhlIGZpZWxkIChvciB0aGUgZXh0ZXJuYWwgdmFsdWUgY2hhbmdlcyBmcm9tIGFib3ZlKSB3ZVxuICAgIC8vIHJlZm9ybWF0LlxuICAgIGNvbnN0IFtpbm5lciwgc2V0SW5uZXJdID0gUmVhY3QudXNlU3RhdGU8c3RyaW5nPigoKSA9PiBmb3JtYXREaXNwbGF5KHZhbHVlKSlcblxuICAgIC8vIEtlZXAgdGhlIGRpc3BsYXkgaW4gc3luYyB3aGVuIHRoZSBwYXJlbnQgcHVzaGVzIGEgbmV3IHZhbHVlIHdoaWxlIHRoZVxuICAgIC8vIGZpZWxkIGlzIE5PVCBmb2N1c2VkIChlLmcuIGFmdGVyIGEgc3VjY2Vzc2Z1bCBBUEkgY2FsbCB0aGF0IHJlc2V0cyB0aGVcbiAgICAvLyBmb3JtLCBvciBzd2l0Y2hpbmcgYmV0d2VlbiByZWNvcmRzKS5cbiAgICBjb25zdCBwcmV2VmFsdWVSZWYgPSBSZWFjdC51c2VSZWYodmFsdWUpXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICghZm9jdXNlZCAmJiB2YWx1ZSAhPT0gcHJldlZhbHVlUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgc2V0SW5uZXIoZm9ybWF0RGlzcGxheSh2YWx1ZSkpXG4gICAgICB9XG4gICAgICBwcmV2VmFsdWVSZWYuY3VycmVudCA9IHZhbHVlXG4gICAgfSwgW3ZhbHVlLCBmb2N1c2VkLCBmb3JtYXREaXNwbGF5XSlcblxuICAgIC8qIC0tLS0gZXZlbnQgaGFuZGxlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgICBjb25zdCByYXcgPSBlLnRhcmdldC52YWx1ZVxuICAgICAgc2V0SW5uZXIocmF3KSAvLyBsZXQgdGhlIHVzZXIgc2VlIHdoYXQgdGhleSdyZSB0eXBpbmdcblxuICAgICAgY29uc3QgbnVtZXJpYyA9IHBhcnNlTnVtZXJpYyhyYXcpO1xuICAgICAgKGUudGFyZ2V0IGFzIHVua25vd24gYXMgeyB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIH0pLnZhbHVlID0gbnVtZXJpY1xuICAgICAgb25DaGFuZ2U/LihlKVxuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZUZvY3VzID0gKGU6IFJlYWN0LkZvY3VzRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICAgIHNldEZvY3VzZWQodHJ1ZSlcbiAgICAgIC8vIFN3aXRjaCBkaXNwbGF5IHRvIHJhdyBudW1iZXIgc28gdGhlIHVzZXIgY2FuIGVkaXQgd2l0aG91dCBmcmljdGlvblxuICAgICAgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09ICcnKSB7XG4gICAgICAgIHNldElubmVyKFN0cmluZyh2YWx1ZSkpXG4gICAgICB9XG4gICAgICBvbkZvY3VzPy4oZSlcbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVCbHVyID0gKGU6IFJlYWN0LkZvY3VzRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICAgIHNldEZvY3VzZWQoZmFsc2UpXG4gICAgICAvLyBSZS1mb3JtYXQgYmVmb3JlIHRoZSB1c2VyIHNlZXMgdGhlIGZpZWxkIGFnYWluXG4gICAgICBjb25zdCBudW1lcmljID0gcGFyc2VOdW1lcmljKGUudGFyZ2V0LnZhbHVlKVxuICAgICAgc2V0SW5uZXIoZm9ybWF0RGlzcGxheShudW1lcmljKSlcbiAgICAgIG9uQmx1cj8uKGUpXG4gICAgfVxuXG4gICAgLyogLS0tLSByZW5kZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbiAgICByZXR1cm4gKFxuICAgICAgPGlucHV0XG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIGlkPXtpZCA/PyBuYW1lfVxuICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICB2YWx1ZT17aW5uZXJ9XG4gICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgIG9uRm9jdXM9e2hhbmRsZUZvY3VzfVxuICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgcmVhZE9ubHk9e3JlYWRPbmx5fVxuICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgIGlucHV0TW9kZT1cImRlY2ltYWxcIlxuICAgICAgICBhdXRvQ29tcGxldGU9XCJvZmZcIlxuICAgICAgICBjbGFzc05hbWU9e2NuKCdmb3JtLWNvbnRyb2wnLCBjbGFzc05hbWUpfVxuICAgICAgICB7Li4ucmVzdH1cbiAgICAgIC8+XG4gICAgKVxuICB9LFxuKVxuXG5JbnB1dEN1cnJlbmN5LmRpc3BsYXlOYW1lID0gJ0lucHV0Q3VycmVuY3knXG5cbmV4cG9ydCB7IElucHV0Q3VycmVuY3kgfVxuZXhwb3J0IGRlZmF1bHQgSW5wdXRDdXJyZW5jeVxuIl19
@@ -0,0 +1,2 @@
1
+ import {a}from'./chunk-RR7TBRGI.js';import*as i from'react';import {createPortal}from'react-dom';import {jsxs,Fragment,jsx}from'react/jsx-runtime';var Oe=["Su","Mo","Tu","We","Th","Fr","Sa"],Fe=["January","February","March","April","May","June","July","August","September","October","November","December"],Le=Array.from({length:60},(a,t)=>t),y=12,V=(a,t)=>new Date(a,t+1,0).getDate(),oe=(a,t)=>a!==null&&t!==null&&a.getFullYear()===t.getFullYear()&&a.getMonth()===t.getMonth()&&a.getDate()===t.getDate(),$e=(a,t,c)=>!(t&&a<new Date(t.getFullYear(),t.getMonth(),t.getDate())||c&&a>new Date(c.getFullYear(),c.getMonth(),c.getDate())),We=(a,t)=>{let c=new Date(a,t,1).getDay(),m=V(a,t),p=[],f=V(a,t-1);for(let u=c-1;u>=0;u--){let D=f-u;p.push({day:D,date:new Date(a,t-1,D),isOutside:true});}for(let u=1;u<=m;u++)p.push({day:u,date:new Date(a,t,u),isOutside:false});let v=42-p.length;for(let u=1;u<=v;u++)p.push({day:u,date:new Date(a,t+1,u),isOutside:true});return p},z=(a,t,c)=>{if(!a||isNaN(a.getTime()))return "";let m=a.getFullYear(),p=String(a.getMonth()+1).padStart(2,"0"),f=String(a.getDate()).padStart(2,"0"),v=a.getHours(),u=String(a.getMinutes()).padStart(2,"0"),D=v>=12?"PM":"AM";v=v%12||12;let k=String(v).padStart(2,"0");if(c)return c.replace("yyyy",String(m)).replace("MM",p).replace("dd",f).replace("hh",k).replace("mm",u).replace("aa",D);switch(t){case "time":return `${k}:${u} ${D}`;case "datetime":return `${m}-${p}-${f} ${k}:${u} ${D}`;default:return `${m}-${p}-${f}`}},F=(a,t,c="date")=>({target:{value:a,name:t,type:c},preventDefault:()=>{},stopPropagation:()=>{},nativeEvent:null}),_e={date:300,time:300,datetime:400,year:250},ze={date:280,time:220,datetime:440,year:280},le={position:"fixed",top:0,left:0,width:"max-content",visibility:"hidden",zIndex:1070},Ve=typeof window<"u"?i.useLayoutEffect:i.useEffect,Ue=a=>{if(!a)return document.documentElement;let t=a.parentElement;for(;t;){let c=window.getComputedStyle(t),m=c.overflowY||c.overflow;if(m==="auto"||m==="scroll")return t;t=t.parentElement;}return document.documentElement},qe=(a,t,c)=>{if(!a)return {};let m=a.getBoundingClientRect(),p=t||300,f=window.innerHeight-m.bottom,v=m.top,u=f<p&&v>f,D=window.innerWidth<576?220:260,k=c||D;return {position:"fixed",top:u?Math.max(4,m.top-p-4):m.bottom+4,left:Math.max(4,Math.min(m.left,window.innerWidth-k-4)),minWidth:D,width:"max-content",maxWidth:window.innerWidth-8,zIndex:1070}},ue=i.forwardRef(({className:a$1,mode:t="date",calendar:c=false,selected:m,value:p,onChange:f,dateFormat:v,placeholderText:u,size:D,isClearable:k=false,disabled:U=false,minDate:de,maxDate:me,timeIntervals:Be=5,timezone:Ke="Kampala",id:pe,name:N,...fe},L)=>{let j=e=>{if(!e)return null;if(e instanceof Date)return isNaN(e.getTime())?null:e;if(typeof e=="string"||typeof e=="number"){let n=new Date(e);if(!isNaN(n.getTime()))return n;if(typeof e=="string"){let d=e.match(/^(\d{1,2}):(\d{2})\s*(AM|PM)$/i);if(d){let r=parseInt(d[1],10),b=parseInt(d[2],10),_=d[3].toUpperCase();r===12&&_==="AM"&&(r=0),r!==12&&_==="PM"&&(r+=12);let ee=new Date;return new Date(ee.getFullYear(),ee.getMonth(),ee.getDate(),r,b,0,0)}let l=e.match(/^(\d{4})-(\d{2})-(\d{2})\s+(\d{1,2}):(\d{2})\s*(AM|PM)$/i);if(l){let r=parseInt(l[4],10),b=parseInt(l[5],10),_=l[6].toUpperCase();return r===12&&_==="AM"&&(r=0),r!==12&&_==="PM"&&(r+=12),new Date(parseInt(l[1]),parseInt(l[2])-1,parseInt(l[3]),r,b,0,0)}}return null}return null},o=i.useMemo(()=>j(m??p),[m instanceof Date?m.getTime():m,p instanceof Date?p.getTime():p]),te=c||t==="date"||t==="datetime",S=!c&&(t==="time"||t==="datetime"),[E,A]=i.useState(false),[P,q]=i.useState(()=>o?o.getFullYear():new Date().getFullYear()),[h,Q]=i.useState(()=>o?o.getMonth():new Date().getMonth()),[w,R]=i.useState(o),[x,ne]=i.useState(()=>o&&o.getHours()%12||12),[C,ae]=i.useState(()=>o?o.getMinutes():0),[T,re]=i.useState(()=>o&&o.getHours()>=12?"PM":"AM"),[$,H]=i.useState(false),[X,B]=i.useState(()=>Math.floor((o?o.getFullYear():new Date().getFullYear())/y)*y),[be,se]=i.useState(le),O=i.useRef(null),Y=i.useRef(null),K=i.useRef(null);i.useEffect(()=>{let e=document.createElement("div");return e.className="datepicker-portal-root",document.body.appendChild(e),K.current=e,()=>{e.parentNode&&document.body.removeChild(e),K.current=null;}},[]),i.useEffect(()=>{o&&!isNaN(o.getTime())?(R(o),q(o.getFullYear()),Q(o.getMonth()),ne(o.getHours()%12||12),ae(o.getMinutes()),re(o.getHours()>=12?"PM":"AM"),B(Math.floor(o.getFullYear()/y)*y)):R(null);},[o]),Ve(()=>{if(!E){se(le);return}let e=()=>Y.current?Y.current.getBoundingClientRect().height:_e[$?"year":t]||300,n=()=>Y.current?Y.current.getBoundingClientRect().width:ze[$?"year":t]||280,d=Ue(O.current),l=()=>{se(qe(O.current,e(),n()));};l();let r=0,b=()=>{cancelAnimationFrame(r),r=requestAnimationFrame(l);};return d.addEventListener("scroll",b,{passive:true}),window.addEventListener("resize",b),()=>{cancelAnimationFrame(r),d.removeEventListener("scroll",b),window.removeEventListener("resize",b);}},[E,t,$]),i.useEffect(()=>{if(!E)return;let e=n=>{Y.current&&!Y.current.contains(n.target)&&O.current&&!O.current.contains(n.target)&&(A(false),H(false));};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[E]);let I=(e,n,d,l)=>{let r=new Date(e),b=n%12;return l==="PM"&&(b+=12),b===12&&l==="AM"&&(b=0),r.setHours(b,d,0,0),r},W=e=>{if(!e||isNaN(e.getTime()))return;let n=z(e,t,v);f?.(F(n,N||"",t));},ge=e=>{if(!e){f?.(F(null,N||"",t)),A(false),H(false);return}W(e),t==="date"&&(A(false),H(false));},ve=e=>{if(R(e),t==="date"||c)ge(e);else if(t==="datetime"){let n=I(e,x,C,T);W(n);}},De=We(P,h),ye=()=>{let e=P,n=h;h===0?(e=P-1,n=11):n=h-1,q(e),Q(n);let d=w||new Date,l=V(e,n),r=new Date(e,n,Math.min(d.getDate(),l));R(r),W(S?I(r,x,C,T):r);},he=()=>{let e=P,n=h;h===11?(e=P+1,n=0):n=h+1,q(e),Q(n);let d=w||new Date,l=V(e,n),r=new Date(e,n,Math.min(d.getDate(),l));R(r),W(S?I(r,x,C,T):r);},we=new Date,G=j(de),J=j(me),Me=G?new Date(G.getFullYear(),G.getMonth(),G.getDate()):null,ke=J?new Date(J.getFullYear(),J.getMonth(),J.getDate()):null,Ne=e=>{if(ne(e),S){let n=I(w||new Date,e,C,T);f?.(F(z(n,t,v),N||"",t));}},Se=e=>{if(ae(e),S){let n=I(w||new Date,x,e,T);f?.(F(z(n,t,v),N||"",t));}},Ee=e=>{if(re(e),S){let n=I(w||new Date,x,C,e);f?.(F(z(n,t,v),N||"",t));}},Pe=()=>{B(Math.floor(P/y)*y),H(true);},Re=e=>{q(e),H(false);let n=w||new Date,d=V(e,h),l=new Date(e,h,Math.min(n.getDate(),d));R(l),W(S?I(l,x,C,T):l);},Z=Math.floor(X/y)*y,xe=Array.from({length:y},(e,n)=>Z+n),Ce=e=>{e.stopPropagation(),R(null),f?.(F(null,N||""));},Te=e=>{e.key==="Escape"&&(A(false),H(false),O.current?.blur()),(e.key==="ArrowDown"||e.key==="Enter"||e.key===" ")&&(e.preventDefault(),A(true));},Ye=i.useCallback(e=>{O.current=e,typeof L=="function"?L(e):L&&(L.current=e);},[L]),Ie=u??(t==="time"?"Select time":t==="datetime"?"Select date & time":"Select date"),ie=jsxs(Fragment,{children:[$&&te&&jsxs("div",{className:"datepicker-year-picker p-3",children:[jsxs("div",{className:"d-flex align-items-center justify-content-between mb-2",children:[jsx("button",{type:"button",className:"btn btn-sm btn-outline-secondary border-0 px-1",onClick:()=>B(X-y),"aria-label":"Previous years",children:"\u2039"}),jsxs("span",{className:"fw-semibold small",children:[Z," \u2013 ",Z+y-1]}),jsx("button",{type:"button",className:"btn btn-sm btn-outline-secondary border-0 px-1",onClick:()=>B(X+y),"aria-label":"Next years",children:"\u203A"})]}),jsx("div",{className:"datepicker-year-grid",children:xe.map(e=>{let n=e===new Date().getFullYear(),d=w&&e===w.getFullYear();return jsx("button",{type:"button",className:a("datepicker-year-cell btn btn-sm",d&&"btn-primary",!d&&n&&"btn-outline-primary",!d&&!n&&"btn-light border"),onClick:()=>Re(e),children:e},e)})})]}),!$&&jsx(Fragment,{children:jsxs("div",{className:a("d-flex",t==="datetime"?"flex-row":"flex-column"),children:[te&&jsxs("div",{className:"datepicker-calendar p-2",children:[jsxs("div",{className:"d-flex align-items-center justify-content-between mb-2",children:[jsx("button",{type:"button",className:"btn btn-sm btn-outline-secondary border-0 px-1",onClick:ye,"aria-label":"Previous month",children:"\u2039"}),jsxs("div",{className:"d-flex align-items-center gap-1",children:[jsx("span",{className:"fw-semibold small",children:Fe[h]}),jsx("button",{type:"button",className:"btn btn-sm btn-link text-decoration-none text-primary fw-semibold small p-0",onClick:Pe,"aria-label":"Choose year",children:P})]}),jsx("button",{type:"button",className:"btn btn-sm btn-outline-secondary border-0 px-1",onClick:he,"aria-label":"Next month",children:"\u203A"})]}),jsx("div",{className:"datepicker-days-header",children:Oe.map(e=>jsx("div",{className:"datepicker-day-label",children:e},e))}),jsx("div",{className:"datepicker-days-grid",children:De.map((e,n)=>{let d=oe(e.date,we),l=w&&oe(e.date,w),r=$e(e.date,Me,ke),b=e.isOutside||!r;return jsx("button",{type:"button",disabled:b,className:a("datepicker-day",d&&"datepicker-day--today",l&&"datepicker-day--selected",e.isOutside&&"datepicker-day--outside",!r&&"datepicker-day--disabled"),onClick:()=>ve(e.date),tabIndex:e.isOutside?-1:0,children:e.day},n)})})]}),t==="datetime"&&jsx("div",{className:"vr mx-1 my-2"}),S&&jsxs("div",{className:"datepicker-time p-2 d-flex flex-column",style:{minWidth:180},children:[t==="datetime"&&jsx("div",{className:"small fw-semibold text-muted text-center mb-1",children:"Time"}),jsxs("div",{className:"d-flex justify-content-center gap-2",children:[jsxs("div",{className:"datepicker-time-col",children:[jsx("div",{className:"datepicker-time-col-label",children:"Hour"}),jsx("div",{className:"datepicker-time-col-scroll",children:Array.from({length:12},(e,n)=>n+1).map(e=>jsx("button",{type:"button",className:a("datepicker-time-item",e===x&&"active"),onClick:()=>Ne(e),children:String(e).padStart(2,"0")},e))})]}),jsx("span",{className:"datepicker-time-separator",children:":"}),jsxs("div",{className:"datepicker-time-col",children:[jsx("div",{className:"datepicker-time-col-label",children:"Min"}),jsx("div",{className:"datepicker-time-col-scroll",children:Le.map(e=>jsx("button",{type:"button",className:a("datepicker-time-item",e===C&&"active"),onClick:()=>Se(e),children:String(e).padStart(2,"0")},e))})]}),jsxs("div",{className:"datepicker-time-col",children:[jsx("div",{className:"datepicker-time-col-label",children:"\xA0"}),jsx("div",{className:"d-flex flex-column gap-1 mt-1",children:["AM","PM"].map(e=>jsx("button",{type:"button",className:a("datepicker-time-item","datepicker-time-item--ampm",T===e&&"active"),onClick:()=>Ee(e),children:e},e))})]})]})]})]})})]}),Ae=jsx("div",{ref:Y,className:a("datepicker-popover card border shadow-sm",t==="datetime"&&"datepicker-popover--wide"),style:be,children:ie});return c?jsx("div",{className:a("datepicker-calendar-inline card border shadow-sm",a$1),children:ie}):jsxs("div",{className:"datepicker-wrapper position-relative d-inline-block w-100",style:{minWidth:0},children:[jsxs("div",{className:"position-relative",children:[jsx("input",{ref:Ye,id:pe,name:N,type:"text",readOnly:true,disabled:U,className:a("form-control",D==="sm"&&"form-control-sm",D==="lg"&&"form-control-lg","pe-5",a$1),placeholder:Ie,value:z(o,t,v),onClick:()=>!U&&A(!E),onKeyDown:Te,"aria-haspopup":"dialog","aria-expanded":E,autoComplete:"off",...fe}),k&&o&&!U&&jsx("button",{type:"button",className:"btn btn-sm btn-link position-absolute top-50 end-0 translate-middle-y pe-2 text-secondary",style:{zIndex:2},onClick:Ce,tabIndex:-1,"aria-label":"Clear",children:"\xD7"})]}),E&&!U&&K.current&&createPortal(Ae,K.current)]})});ue.displayName="DatePicker";var je=ue;export{ue as a,je as b};//# sourceMappingURL=chunk-LWCY2GIT.js.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21wb25lbnRzL0RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbIkRBWVNfT0ZfV0VFSyIsIk1PTlRIUyIsIk1JTlVURVMiLCJfIiwiaSIsIllFQVJTX1BFUl9QQUdFIiwiZGF5c0luTW9udGgiLCJ5ZWFyIiwibW9udGgiLCJpc1NhbWVEYXkiLCJiIiwiaXNEYXRlSW5SYW5nZSIsImRhdGUiLCJtaW4iLCJtYXgiLCJidWlsZENhbGVuZGFyR3JpZCIsImZpcnN0RGF5IiwidG90YWxEYXlzIiwiY2VsbHMiLCJwcmV2TW9udGhEYXlzIiwiZGF5IiwiZCIsInJlbWFpbmluZyIsImZvcm1hdFZhbHVlIiwibW9kZSIsImZtdCIsInkiLCJNIiwiaCIsIm0iLCJhIiwiaGgiLCJtYWtlRXZlbnQiLCJ2YWx1ZSIsImlucHV0TmFtZSIsInR5cGUiLCJQT1BPVkVSX0dVRVNTIiwiUE9QT1ZFUl9XSURUSF9HVUVTUyIsIlBSRV9QT1NJVElPTl9TVFlMRSIsInVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QiLCJnZXRTY3JvbGxQYXJlbnQiLCJlbCIsInBhcmVudCIsInN0eWxlIiwib3ZlcmZsb3dZIiwiY2FsY1BvcG92ZXJTdHlsZSIsImlucHV0RWwiLCJwb3BvdmVySGVpZ2h0IiwicG9wb3ZlcldpZHRoIiwicmVjdCIsInNwYWNlQmVsb3ciLCJzcGFjZUFib3ZlIiwicGxhY2VBYm92ZSIsIm1pblciLCJ3IiwiRGF0ZVBpY2tlciIsImNsYXNzTmFtZSIsImNhbGVuZGFyIiwic2VsZWN0ZWQiLCJvbkNoYW5nZSIsImRhdGVGb3JtYXQiLCJwbGFjZWhvbGRlclRleHQiLCJzaXplIiwiaXNDbGVhcmFibGUiLCJkaXNhYmxlZCIsIm1pbkRhdGUiLCJtYXhEYXRlIiwidGltZUludGVydmFscyIsInRpbWV6b25lIiwiaWQiLCJuYW1lIiwicHJvcHMiLCJyZWYiLCJyZXNvbHZlVmFsdWUiLCJ2IiwidGltZU1hdGNoIiwiYXAiLCJub3ciLCJkdE1hdGNoIiwicmVzb2x2ZWRWYWx1ZSIsInNob3dDYWxlbmRhciIsInNob3dUaW1lIiwiaXNPcGVuIiwic2V0SXNPcGVuIiwidmlld1llYXIiLCJzZXRWaWV3WWVhciIsInZpZXdNb250aCIsInNldFZpZXdNb250aCIsInRlbXBEYXRlIiwic2V0VGVtcERhdGUiLCJ0ZW1wSG91cnMiLCJzZXRUZW1wSG91cnMiLCJ0ZW1wTWlucyIsInNldFRlbXBNaW5zIiwidGVtcEFtUG0iLCJzZXRUZW1wQW1QbSIsInNob3dZZWFyUGlja2VyIiwic2V0U2hvd1llYXJQaWNrZXIiLCJ5ZWFyUGFnZSIsInNldFllYXJQYWdlIiwicG9wb3ZlclN0eWxlIiwic2V0UG9wb3ZlclN0eWxlIiwiaW5wdXRSZWYiLCJwb3BvdmVyUmVmIiwicG9ydGFsUmVmIiwiZ2V0SGVpZ2h0IiwiZ2V0V2lkdGgiLCJzY3JvbGxQYXJlbnQiLCJ1cGRhdGUiLCJyYWYiLCJzY2hlZHVsZVVwZGF0ZSIsImhhbmRsZXIiLCJlIiwiYnVpbGREYXRlIiwiYmFzZSIsImgxMiIsIm1pbnMiLCJhbXBtIiwiZmlyZUNoYW5nZSIsImZvcm1hdHRlZCIsImNvbW1pdCIsImNvbW1pdERhdGVPbmx5IiwiZ3JpZCIsImhhbmRsZVByZXZNb250aCIsIm5ld1kiLCJuZXdNIiwibWF4RCIsIm5ld0RhdGUiLCJoYW5kbGVOZXh0TW9udGgiLCJ0b2RheSIsInJlc29sdmVkTWluIiwicmVzb2x2ZWRNYXgiLCJtaW5EdCIsIm1heER0IiwiaGFuZGxlSG91ckNoYW5nZSIsImhhbmRsZU1pbkNoYW5nZSIsImhhbmRsZUFtUG1DaGFuZ2UiLCJvcGVuWWVhclBpY2tlciIsImhhbmRsZVllYXJTZWxlY3QiLCJ5ZWFyUGFnZVN0YXJ0IiwieWVhcnMiLCJoYW5kbGVDbGVhciIsImhhbmRsZUlucHV0S2V5RG93biIsIm1lcmdlSW5wdXRSZWYiLCJub2RlIiwicGxhY2Vob2xkZXIiLCJwaWNrZXJCb2R5IiwianN4cyIsIkZyYWdtZW50IiwianN4IiwiaXNDdXJyZW50WWVhciIsImlzU2VsZWN0ZWQiLCJjbiIsImNlbGwiLCJpc1RvZGF5IiwiaW5SYW5nZSIsImlzRGlzYWJsZWREYXkiLCJwb3BvdmVyIiwiY3JlYXRlUG9ydGFsIiwiRGF0ZVBpY2tlcl9kZWZhdWx0Il0sIm1hcHBpbmdzIjoidUpBNERNQSxFQUFBQSxDQUFlLENBQUMsSUFBQSxDQUFNLElBQUEsQ0FBTSxJQUFBLENBQU0sSUFBQSxDQUFNLElBQUEsQ0FBTSxJQUFBLENBQU0sSUFBSSxDQUFBLENBQ3hEQyxFQUFBQSxDQUFTLENBQ2IsU0FBQSxDQUFXLFdBQVksT0FBQSxDQUFTLE9BQUEsQ0FBUyxLQUFBLENBQU8sTUFBQSxDQUNoRCxPQUFRLFFBQUEsQ0FBVSxXQUFBLENBQWEsU0FBQSxDQUFXLFVBQUEsQ0FBWSxVQUN4RCxDQUFBLENBQ01DLEVBQUFBLENBQVUsS0FBQSxDQUFNLEtBQUssQ0FBRSxNQUFBLENBQVEsRUFBRyxDQUFBLENBQUcsQ0FBQ0MsQ0FBQUEsQ0FBR0MsQ0FBQUEsR0FBTUEsQ0FBQyxDQUFBLENBQ2hEQyxFQUFpQixFQUFBLENBTWpCQyxDQUFBQSxDQUFjLENBQUNDLENBQUFBLENBQWNDLENBQUFBLEdBQ2pDLElBQUksSUFBQSxDQUFLRCxDQUFBQSxDQUFNQyxFQUFRLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxPQUFBLEdBRXpCQyxFQUFBQSxDQUFZLENBQUMsQ0FBQSxDQUFnQkMsQ0FBQUEsR0FDakMsSUFBTSxJQUFBLEVBQVFBLENBQUFBLEdBQU0sSUFBQSxFQUNwQixDQUFBLENBQUUsV0FBQSxFQUFZLEdBQU1BLENBQUFBLENBQUUsV0FBQSxJQUN0QixDQUFBLENBQUUsUUFBQSxFQUFTLEdBQU1BLENBQUFBLENBQUUsVUFBUyxFQUM1QixDQUFBLENBQUUsT0FBQSxFQUFRLEdBQU1BLEVBQUUsT0FBQSxFQUFRLENBRXRCQyxFQUFBQSxDQUFnQixDQUFDQyxDQUFBQSxDQUFZQyxDQUFBQSxDQUFrQkMsQ0FBQUEsR0FDL0MsRUFBQUQsR0FBT0QsQ0FBQUEsQ0FBTyxJQUFJLElBQUEsQ0FBS0MsQ0FBQUEsQ0FBSSxhQUFZLENB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QVUsT0FBQSxFQUFXc0QsWUFBQUEsQ0FBYUQsR0FBU3JELENBQUFBLENBQVUsT0FBTyxDQUFBLENBQUEsQ0FDdEYsQ0FFSixDQUFDLEVBRURqRCxFQUFBQSxDQUFXLFdBQUEsQ0FBYyxZQUFBLEtBR2xCd0csRUFBQUEsQ0FBUXhHIiwiZmlsZSI6ImNodW5rLUxXQ1kyR0lULmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgeyBjbiB9IGZyb20gJy4uL2xpYi9jbi5qcydcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiAgVHlwZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuZXhwb3J0IGludGVyZmFjZSBEYXRlUGlja2VyQ2hhbmdlRXZlbnQge1xuICB0YXJnZXQ6IHtcbiAgICB2YWx1ZTogc3RyaW5nIHwgbnVsbFxuICAgIG5hbWU6IHN0cmluZ1xuICAgIHR5cGU6IHN0cmluZ1xuICB9XG4gIHByZXZlbnREZWZhdWx0OiAoKSA9PiB2b2lkXG4gIHN0b3BQcm9wYWdhdGlvbjogKCkgPT4gdm9pZFxuICBuYXRpdmVFdmVudDogbnVsbFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVQaWNrZXJQcm9wcyB7XG4gIC8qKiBQaWNrZXIgbW9kZSAoZGVmYXVsdCAnZGF0ZScpICovXG4gIG1vZGU/OiAnZGF0ZScgfCAndGltZScgfCAnZGF0ZXRpbWUnXG4gIC8qKiBXaGVuIHRydWUsIHJlbmRlcnMgdGhlIGNhbGVuZGFyIGlubGluZSB3aXRob3V0IGFuIGlucHV0IGZpZWxkIG9yIHRpbWUgcGlja2VyICovXG4gIGNhbGVuZGFyPzogYm9vbGVhblxuICAvKiogQ3VycmVudGx5IHNlbGVjdGVkIERhdGUgKGFsaWFzIGZvciB2YWx1ZSkgKi9cbiAgc2VsZWN0ZWQ/OiBEYXRlIHwgbnVsbFxuICAvKiogQ3VycmVudGx5IHNlbGVjdGVkIERhdGUsIElTTyBzdHJpbmcsIFwiaGg6bW0gQUFcIiB0aW1lIHN0cmluZywgXCJZWVlZLU1NLUREIGhoOm1tIEFBXCIgZGF0ZXRpbWUgc3RyaW5nLCBvciB0aW1lc3RhbXAgKi9cbiAgdmFsdWU/OiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICAvKiogU3ludGhldGljIGV2ZW50IGhhbmRsZXIg4oCUIGUudGFyZ2V0LnZhbHVlIGlzIGEgcHJlLWZvcm1hdHRlZCBzdHJpbmcgKi9cbiAgb25DaGFuZ2U/OiAoZTogRGF0ZVBpY2tlckNoYW5nZUV2ZW50KSA9PiB2b2lkXG4gIC8qKiBEaXNwbGF5IGZvcm1hdCB3aXRoIHRva2VuczogeXl5eSwgTU0sIGRkLCBoaCwgbW0sIGFhICovXG4gIGRhdGVGb3JtYXQ/OiBzdHJpbmdcbiAgLyoqIFBsYWNlaG9sZGVyIHRleHQgd2hlbiBlbXB0eSAqL1xuICBwbGFjZWhvbGRlclRleHQ/OiBzdHJpbmdcbiAgLyoqIEJvb3RzdHJhcCBzaXplIHZhcmlhbnQgKi9cbiAgc2l6ZT86ICdzbScgfCAnbGcnXG4gIC8qKiBTaG93IGEgY2xlYXIgYnV0dG9uIG9uIHRoZSBpbnB1dCAqL1xuICBpc0NsZWFyYWJsZT86IGJvb2xlYW5cbiAgLyoqIERpc2FibGUgdGhlIGlucHV0ICovXG4gIGRpc2FibGVkPzogYm9vbGVhblxuICAvKiogRWFybGllc3Qgc2VsZWN0YWJsZSBkYXRlIOKAlCBEYXRlLCBJU08vXCJZWVlZLU1NLUREXCIgc3RyaW5nLCBvciB0aW1lc3RhbXAgKGUuZy4gYW5vdGhlciBEYXRlUGlja2VyJ3Mgb25DaGFuZ2UgdmFsdWUpICovXG4gIG1pbkRhdGU/OiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICAvKiogTGF0ZXN0IHNlbGVjdGFibGUgZGF0ZSDigJQgRGF0ZSwgSVNPL1wiWVlZWS1NTS1ERFwiIHN0cmluZywgb3IgdGltZXN0YW1wIChlLmcuIGFub3RoZXIgRGF0ZVBpY2tlcidzIG9uQ2hhbmdlIHZhbHVlKSAqL1xuICBtYXhEYXRlPzogRGF0ZSB8IHN0cmluZyB8IG51bWJlciB8IG51bGxcbiAgLyoqIE1pbnV0ZSBzdGVwIGluIHRoZSB0aW1lIGxpc3QgKGRlZmF1bHQgNSkgKi9cbiAgdGltZUludGVydmFscz86IG51bWJlclxuICAvKiogVGltZXpvbmUgaWRlbnRpZmllciAoZGVmYXVsdCAnS2FtcGFsYScpICovXG4gIHRpbWV6b25lPzogc3RyaW5nXG4gIC8qKiBBZGRpdGlvbmFsIENTUyBjbGFzc2VzIG9uIHRoZSBpbnB1dCAqL1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgLyoqIElucHV0IGVsZW1lbnQgSUQgKi9cbiAgaWQ/OiBzdHJpbmdcbiAgLyoqIElucHV0IG5hbWUgYXR0cmlidXRlIOKAlCBzdXJmYWNlcyBhcyBlLnRhcmdldC5uYW1lIGluIG9uQ2hhbmdlICovXG4gIG5hbWU/OiBzdHJpbmdcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiAgQ29uc3RhbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5jb25zdCBEQVlTX09GX1dFRUsgPSBbJ1N1JywgJ01vJywgJ1R1JywgJ1dlJywgJ1RoJywgJ0ZyJywgJ1NhJ11cbmNvbnN0IE1PTlRIUyA9IFtcbiAgJ0phbnVhcnknLCAnRmVicnVhcnknLCAnTWFyY2gnLCAnQXByaWwnLCAnTWF5JywgJ0p1bmUnLFxuICAnSnVseScsICdBdWd1c3QnLCAnU2VwdGVtYmVyJywgJ09jdG9iZXInLCAnTm92ZW1iZXInLCAnRGVjZW1iZXInLFxuXVxuY29uc3QgTUlOVVRFUyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDYwIH0sIChfLCBpKSA9PiBpKVxuY29uc3QgWUVBUlNfUEVSX1BBR0UgPSAxMlxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qICBIZWxwZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbmNvbnN0IGRheXNJbk1vbnRoID0gKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlcik6IG51bWJlciA9PlxuICBuZXcgRGF0ZSh5ZWFyLCBtb250aCArIDEsIDApLmdldERhdGUoKVxuXG5jb25zdCBpc1NhbWVEYXkgPSAoYTogRGF0ZSB8IG51bGwsIGI6IERhdGUgfCBudWxsKTogYm9vbGVhbiA9PlxuICBhICE9PSBudWxsICYmIGIgIT09IG51bGwgJiZcbiAgYS5nZXRGdWxsWWVhcigpID09PSBiLmdldEZ1bGxZZWFyKCkgJiZcbiAgYS5nZXRNb250aCgpID09PSBiLmdldE1vbnRoKCkgJiZcbiAgYS5nZXREYXRlKCkgPT09IGIuZ2V0RGF0ZSgpXG5cbmNvbnN0IGlzRGF0ZUluUmFuZ2UgPSAoZGF0ZTogRGF0ZSwgbWluOiBEYXRlIHwgbnVsbCwgbWF4OiBEYXRlIHwgbnVsbCk6IGJvb2xlYW4gPT4ge1xuICBpZiAobWluICYmIGRhdGUgPCBuZXcgRGF0ZShtaW4uZ2V0RnVsbFllYXIoKSwgbWluLmdldE1vbnRoKCksIG1pbi5nZXREYXRlKCkpKSByZXR1cm4gZmFsc2VcbiAgaWYgKG1heCAmJiBkYXRlID4gbmV3IERhdGUobWF4LmdldEZ1bGxZZWFyKCksIG1heC5nZXRNb250aCgpLCBtYXguZ2V0RGF0ZSgpKSkgcmV0dXJuIGZhbHNlXG4gIHJldHVybiB0cnVlXG59XG5cbmludGVyZmFjZSBDYWxlbmRhckNlbGwge1xuICBkYXk6IG51bWJlclxuICBkYXRlOiBEYXRlXG4gIGlzT3V0c2lkZTogYm9vbGVhblxufVxuXG5jb25zdCBidWlsZENhbGVuZGFyR3JpZCA9ICh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIpOiBDYWxlbmRhckNlbGxbXSA9PiB7XG4gIGNvbnN0IGZpcnN0RGF5ID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpLmdldERheSgpXG4gIGNvbnN0IHRvdGFsRGF5cyA9IGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKVxuICBjb25zdCBjZWxsczogQ2FsZW5kYXJDZWxsW10gPSBbXVxuXG4gIGNvbnN0IHByZXZNb250aERheXMgPSBkYXlzSW5Nb250aCh5ZWFyLCBtb250aCAtIDEpXG4gIGZvciAobGV0IGkgPSBmaXJzdERheSAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgY29uc3QgZGF5ID0gcHJldk1vbnRoRGF5cyAtIGlcbiAgICBjZWxscy5wdXNoKHsgZGF5LCBkYXRlOiBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSksIGlzT3V0c2lkZTogdHJ1ZSB9KVxuICB9XG5cbiAgZm9yIChsZXQgZCA9IDE7IGQgPD0gdG90YWxEYXlzOyBkKyspIHtcbiAgICBjZWxscy5wdXNoKHsgZGF5OiBkLCBkYXRlOiBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZCksIGlzT3V0c2lkZTogZmFsc2UgfSlcbiAgfVxuXG4gIGNvbnN0IHJlbWFpbmluZyA9IDQyIC0gY2VsbHMubGVuZ3RoXG4gIGZvciAobGV0IGQgPSAxOyBkIDw9IHJlbWFpbmluZzsgZCsrKSB7XG4gICAgY2VsbHMucHVzaCh7IGRheTogZCwgZGF0ZTogbmV3IERhdGUoeWVhciwgbW9udGggKyAxLCBkKSwgaXNPdXRzaWRlOiB0cnVlIH0pXG4gIH1cblxuICByZXR1cm4gY2VsbHNcbn1cblxuY29uc3QgZm9ybWF0VmFsdWUgPSAoZGF0ZTogRGF0ZSB8IG51bGwsIG1vZGU6IHN0cmluZywgZm10Pzogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgaWYgKCFkYXRlIHx8IGlzTmFOKGRhdGUuZ2V0VGltZSgpKSkgcmV0dXJuICcnXG5cbiAgY29uc3QgeSA9IGRhdGUuZ2V0RnVsbFllYXIoKVxuICBjb25zdCBNID0gU3RyaW5nKGRhdGUuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJylcbiAgY29uc3QgZCA9IFN0cmluZyhkYXRlLmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKVxuICBsZXQgaCA9IGRhdGUuZ2V0SG91cnMoKVxuICBjb25zdCBtID0gU3RyaW5nKGRhdGUuZ2V0TWludXRlcygpKS5wYWRTdGFydCgyLCAnMCcpXG4gIGNvbnN0IGEgPSBoID49IDEyID8gJ1BNJyA6ICdBTSdcbiAgaCA9IGggJSAxMiB8fCAxMlxuICBjb25zdCBoaCA9IFN0cmluZyhoKS5wYWRTdGFydCgyLCAnMCcpXG5cbiAgaWYgKGZtdCkge1xuICAgIHJldHVybiBmbXQucmVwbGFjZSgneXl5eScsIFN0cmluZyh5KSkucmVwbGFjZSgnTU0nLCBNKS5yZXBsYWNlKCdkZCcsIGQpLnJlcGxhY2UoJ2hoJywgaGgpLnJlcGxhY2UoJ21tJywgbSkucmVwbGFjZSgnYWEnLCBhKVxuICB9XG5cbiAgc3dpdGNoIChtb2RlKSB7XG4gICAgY2FzZSAndGltZSc6ICAgICByZXR1cm4gYCR7aGh9OiR7bX0gJHthfWBcbiAgICBjYXNlICdkYXRldGltZSc6IHJldHVybiBgJHt5fS0ke019LSR7ZH0gJHtoaH06JHttfSAke2F9YFxuICAgIGRlZmF1bHQ6ICAgICAgICAgcmV0dXJuIGAke3l9LSR7TX0tJHtkfWBcbiAgfVxufVxuXG4vKipcbiAqIEJ1aWxkIGEgc3ludGhldGljIGV2ZW50IG9iamVjdCBsaWtlIGEgbmF0aXZlIGlucHV0J3Mgb25DaGFuZ2UuXG4gKi9cbmNvbnN0IG1ha2VFdmVudCA9ICh2YWx1ZTogc3RyaW5nIHwgbnVsbCwgaW5wdXROYW1lOiBzdHJpbmcsIHR5cGU6IHN0cmluZyA9ICdkYXRlJyk6IERhdGVQaWNrZXJDaGFuZ2VFdmVudCA9PiAoe1xuICB0YXJnZXQ6IHtcbiAgICB2YWx1ZSxcbiAgICBuYW1lOiBpbnB1dE5hbWUsXG4gICAgdHlwZSxcbiAgfSxcbiAgcHJldmVudERlZmF1bHQ6ICgpID0+IHt9LFxuICBzdG9wUHJvcGFnYXRpb246ICgpID0+IHt9LFxuICBuYXRpdmVFdmVudDogbnVsbCxcbn0pXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogIFBvcG92ZXIgcG9zaXRpb25pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqIEFwcHJveGltYXRlIGhlaWdodHMg4oCUIHVzZWQgYXMgYSBmaXJzdCBndWVzcyBiZWZvcmUgdGhlIHJlYWwgRE9NIGhlaWdodCBpcyBtZWFzdXJlZC4gKi9cbmNvbnN0IFBPUE9WRVJfR1VFU1M6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7IGRhdGU6IDMwMCwgdGltZTogMzAwLCBkYXRldGltZTogNDAwLCB5ZWFyOiAyNTAgfVxuXG4vKiogQXBwcm94aW1hdGUgd2lkdGhzIOKAlCB1c2VkIGFzIGEgZmlyc3QgZ3Vlc3MgYmVmb3JlIHRoZSByZWFsIERPTSB3aWR0aCBpcyBtZWFzdXJlZC4gKi9cbmNvbnN0IFBPUE9WRVJfV0lEVEhfR1VFU1M6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7IGRhdGU6IDI4MCwgdGltZTogMjIwLCBkYXRldGltZTogNDQwLCB5ZWFyOiAyODAgfVxuXG4vKipcbiAqIFN0eWxlIGFwcGxpZWQgd2hpbGUgdGhlIHBvcG92ZXIgaXMgbW91bnRlZCBidXQgbm90IHlldCBtZWFzdXJlZC5cbiAqIGB3aWR0aDogbWF4LWNvbnRlbnRgIG1ha2VzIHRoZSBmaXJzdCBtZWFzdXJlbWVudCByZWZsZWN0IHRoZSByZWFsIGNvbnRlbnRcbiAqIHdpZHRoIChhbiBlbXB0eSBzdHlsZSBsZXRzIHRoZSBjYXJkIHN0cmV0Y2ggdG8gdGhlIGJvZHkgd2lkdGgsIHdoaWNoXG4gKiBwb2lzb25lZCB0aGUgZmlyc3Qtb3BlbiBwb3NpdGlvbiksIGFuZCBgdmlzaWJpbGl0eTogaGlkZGVuYCBwcmV2ZW50cyBhXG4gKiBtaXNwb3NpdGlvbmVkIGZsYXNoIGJlZm9yZSB0aGUgbWVhc3VyZWQgc3R5bGUgbGFuZHMuXG4gKi9cbmNvbnN0IFBSRV9QT1NJVElPTl9TVFlMRTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgcG9zaXRpb246ICdmaXhlZCcsXG4gIHRvcDogMCxcbiAgbGVmdDogMCxcbiAgd2lkdGg6ICdtYXgtY29udGVudCcsXG4gIHZpc2liaWxpdHk6ICdoaWRkZW4nLFxuICB6SW5kZXg6IDEwNzAsXG59XG5cbi8qKiB1c2VMYXlvdXRFZmZlY3QgdGhhdCBpcyBTU1Itc2FmZSAoZmFsbHMgYmFjayB0byB1c2VFZmZlY3Qgb24gdGhlIHNlcnZlcikuICovXG5jb25zdCB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0ID1cbiAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyBSZWFjdC51c2VMYXlvdXRFZmZlY3QgOiBSZWFjdC51c2VFZmZlY3RcblxuLyoqXG4gKiBGaW5kIHRoZSBuZWFyZXN0IHNjcm9sbGFibGUgYW5jZXN0b3IgKGZvciBjYXB0dXJpbmcgc2Nyb2xsIGV2ZW50cyBpbnNpZGVcbiAqIG1vZGFscyAvIHNpZGUgcGFuZWxzIC8gY3VzdG9tIGNvbnRhaW5lcnMpLlxuICovXG5jb25zdCBnZXRTY3JvbGxQYXJlbnQgPSAoZWw6IEhUTUxFbGVtZW50IHwgbnVsbCk6IEhUTUxFbGVtZW50ID0+IHtcbiAgaWYgKCFlbCkgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudFxuICBsZXQgcGFyZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBlbC5wYXJlbnRFbGVtZW50XG4gIHdoaWxlIChwYXJlbnQpIHtcbiAgICBjb25zdCBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHBhcmVudClcbiAgICBjb25zdCBvdmVyZmxvd1kgPSBzdHlsZS5vdmVyZmxvd1kgfHwgc3R5bGUub3ZlcmZsb3dcbiAgICBpZiAob3ZlcmZsb3dZID09PSAnYXV0bycgfHwgb3ZlcmZsb3dZID09PSAnc2Nyb2xsJykgcmV0dXJuIHBhcmVudFxuICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnRFbGVtZW50XG4gIH1cbiAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudFxufVxuXG5jb25zdCBjYWxjUG9wb3ZlclN0eWxlID0gKGlucHV0RWw6IEhUTUxFbGVtZW50IHwgbnVsbCwgcG9wb3ZlckhlaWdodDogbnVtYmVyLCBwb3BvdmVyV2lkdGg6IG51bWJlcik6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPT4ge1xuICBpZiAoIWlucHV0RWwpIHJldHVybiB7fVxuICBjb25zdCByZWN0ID0gaW5wdXRFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICBjb25zdCBoID0gcG9wb3ZlckhlaWdodCB8fCAzMDBcblxuICBjb25zdCBzcGFjZUJlbG93ID0gd2luZG93LmlubmVySGVpZ2h0IC0gcmVjdC5ib3R0b21cbiAgY29uc3Qgc3BhY2VBYm92ZSA9IHJlY3QudG9wXG5cbiAgLyogT25seSBmbGlwIGFib3ZlIHdoZW4gYmVsb3cgaXMgdHJ1bHkgdG9vIHRpZ2h0IEFORCBhYm92ZSBvZmZlcnMgbW9yZSByb29tICovXG4gIGNvbnN0IHBsYWNlQWJvdmUgPSBzcGFjZUJlbG93IDwgaCAmJiBzcGFjZUFib3ZlID4gc3BhY2VCZWxvd1xuXG4gIC8qIFJlc3BvbnNpdmU6IHVzZSBzbWFsbGVyIG1pbi13aWR0aCBvbiBtb2JpbGUgdG8gcHJldmVudCBvdmVyZmxvdy5cbiAgICAgVGhlIHBvcG92ZXIgc2l6ZXMgdG8gaXRzIGNvbnRlbnQg4oCUIGl0IG11c3QgTk9UIHN0cmV0Y2ggd2l0aCBhIHdpZGUgaW5wdXQsXG4gICAgIHNvIHJlY3Qud2lkdGggaXMgaW50ZW50aW9uYWxseSBpZ25vcmVkIGZvciBzaXppbmcuICovXG4gIGNvbnN0IG1pblcgPSB3aW5kb3cuaW5uZXJXaWR0aCA8IDU3NiA/IDIyMCA6IDI2MFxuICBjb25zdCB3ID0gcG9wb3ZlcldpZHRoIHx8IG1pbldcblxuICByZXR1cm4ge1xuICAgIHBvc2l0aW9uOiAnZml4ZWQnLFxuICAgIHRvcDogcGxhY2VBYm92ZSA/IE1hdGgubWF4KDQsIHJlY3QudG9wIC0gaCAtIDQpIDogcmVjdC5ib3R0b20gKyA0LFxuICAgIGxlZnQ6IE1hdGgubWF4KDQsIE1hdGgubWluKHJlY3QubGVmdCwgd2luZG93LmlubmVyV2lkdGggLSB3IC0gNCkpLFxuICAgIG1pbldpZHRoOiBtaW5XLFxuICAgIHdpZHRoOiAnbWF4LWNvbnRlbnQnLFxuICAgIG1heFdpZHRoOiB3aW5kb3cuaW5uZXJXaWR0aCAtIDgsXG4gICAgekluZGV4OiAxMDcwLFxuICB9XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogIERhdGVQaWNrZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBDdXN0b20gQm9vdHN0cmFwLXN0eWxlZCBkYXRlIC8gdGltZSAvIGRhdGV0aW1lIHBpY2tlci4gWmVybyBkZXBlbmRlbmNpZXMuXG4gKlxuICogKipJbXBvcnRhbnQ6KiogVGhlIGFjY29tcGFueWluZyBDU1MgKiptdXN0KiogYmUgaW1wb3J0ZWQgZm9yIHRoZSBwaWNrZXIgdG8gcmVuZGVyIGNvcnJlY3RseTpcbiAqIGBgYGpzXG4gKiBpbXBvcnQgJ3JlYWN0LWJvb3RzdHJhcC1wbHVnaW5zL2Nzcy9wbHVnaW5zLmNzcydcbiAqIGBgYFxuICovXG5jb25zdCBEYXRlUGlja2VyID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MSW5wdXRFbGVtZW50LCBEYXRlUGlja2VyUHJvcHM+KCh7XG4gIGNsYXNzTmFtZSxcbiAgbW9kZSA9ICdkYXRlJyxcbiAgY2FsZW5kYXIgPSBmYWxzZSxcbiAgc2VsZWN0ZWQsXG4gIHZhbHVlLFxuICBvbkNoYW5nZSxcbiAgZGF0ZUZvcm1hdCxcbiAgcGxhY2Vob2xkZXJUZXh0LFxuICBzaXplLFxuICBpc0NsZWFyYWJsZSA9IGZhbHNlLFxuICBkaXNhYmxlZCA9IGZhbHNlLFxuICBtaW5EYXRlLFxuICBtYXhEYXRlLFxuICB0aW1lSW50ZXJ2YWxzID0gNSxcbiAgdGltZXpvbmUgPSAnS2FtcGFsYScsXG4gIGlkLFxuICBuYW1lLFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIC8qIC0tLS0gZGVyaXZlZCAtLS0tICovXG4gIGNvbnN0IHJlc29sdmVWYWx1ZSA9ICh2OiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCk6IERhdGUgfCBudWxsID0+IHtcbiAgICBpZiAoIXYpIHJldHVybiBudWxsXG4gICAgaWYgKHYgaW5zdGFuY2VvZiBEYXRlKSByZXR1cm4gaXNOYU4odi5nZXRUaW1lKCkpID8gbnVsbCA6IHZcbiAgICBpZiAodHlwZW9mIHYgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2ID09PSAnbnVtYmVyJykge1xuICAgICAgLy8gU3RhbmRhcmQgRGF0ZSBwYXJzaW5nICh3b3JrcyBmb3IgSVNPIDg2MDEsIFwiWVlZWS1NTS1ERFwiLCBldGMuKVxuICAgICAgY29uc3QgZCA9IG5ldyBEYXRlKHYpXG4gICAgICBpZiAoIWlzTmFOKGQuZ2V0VGltZSgpKSkgcmV0dXJuIGRcblxuICAgICAgLy8gSGFuZGxlIHRpbWUtb25seSBzdHJpbmdzIGZyb20gZm9ybWF0VmFsdWU6IFwiaGg6bW0gQUFcIlxuICAgICAgaWYgKHR5cGVvZiB2ID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCB0aW1lTWF0Y2ggPSB2Lm1hdGNoKC9eKFxcZHsxLDJ9KTooXFxkezJ9KVxccyooQU18UE0pJC9pKVxuICAgICAgICBpZiAodGltZU1hdGNoKSB7XG4gICAgICAgICAgbGV0IGggPSBwYXJzZUludCh0aW1lTWF0Y2hbMV0sIDEwKVxuICAgICAgICAgIGNvbnN0IG0gPSBwYXJzZUludCh0aW1lTWF0Y2hbMl0sIDEwKVxuICAgICAgICAgIGNvbnN0IGFwID0gdGltZU1hdGNoWzNdLnRvVXBwZXJDYXNlKClcbiAgICAgICAgICBpZiAoaCA9PT0gMTIgJiYgYXAgPT09ICdBTScpIGggPSAwXG4gICAgICAgICAgaWYgKGggIT09IDEyICYmIGFwID09PSAnUE0nKSBoICs9IDEyXG4gICAgICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKVxuICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShub3cuZ2V0RnVsbFllYXIoKSwgbm93LmdldE1vbnRoKCksIG5vdy5nZXREYXRlKCksIGgsIG0sIDAsIDApXG4gICAgICAgIH1cblxuICAgICAgICAvLyBIYW5kbGUgZGF0ZXRpbWUgc3RyaW5ncyBmcm9tIGZvcm1hdFZhbHVlOiBcIllZWVktTU0tREQgaGg6bW0gQUFcIlxuICAgICAgICBjb25zdCBkdE1hdGNoID0gdi5tYXRjaCgvXihcXGR7NH0pLShcXGR7Mn0pLShcXGR7Mn0pXFxzKyhcXGR7MSwyfSk6KFxcZHsyfSlcXHMqKEFNfFBNKSQvaSlcbiAgICAgICAgaWYgKGR0TWF0Y2gpIHtcbiAgICAgICAgICBsZXQgaCA9IHBhcnNlSW50KGR0TWF0Y2hbNF0sIDEwKVxuICAgICAgICAgIGNvbnN0IG0gPSBwYXJzZUludChkdE1hdGNoWzVdLCAxMClcbiAgICAgICAgICBjb25zdCBhcCA9IGR0TWF0Y2hbNl0udG9VcHBlckNhc2UoKVxuICAgICAgICAgIGlmIChoID09PSAxMiAmJiBhcCA9PT0gJ0FNJykgaCA9IDBcbiAgICAgICAgICBpZiAoaCAhPT0gMTIgJiYgYXAgPT09ICdQTScpIGggKz0gMTJcbiAgICAgICAgICByZXR1cm4gbmV3IERhdGUocGFyc2VJbnQoZHRNYXRjaFsxXSksIHBhcnNlSW50KGR0TWF0Y2hbMl0pIC0gMSwgcGFyc2VJbnQoZHRNYXRjaFszXSksIGgsIG0sIDAsIDApXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgcmVzb2x2ZWRWYWx1ZSA9IFJlYWN0LnVzZU1lbW8oXG4gICAgKCkgPT4gcmVzb2x2ZVZhbHVlKHNlbGVjdGVkID8/IHZhbHVlKSxcbiAgICBbXG4gICAgICBzZWxlY3RlZCBpbnN0YW5jZW9mIERhdGUgPyBzZWxlY3RlZC5nZXRUaW1lKCkgOiBzZWxlY3RlZCxcbiAgICAgIHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlLmdldFRpbWUoKSA6IHZhbHVlLFxuICAgIF0sXG4gIClcbiAgY29uc3Qgc2hvd0NhbGVuZGFyID0gY2FsZW5kYXIgfHwgbW9kZSA9PT0gJ2RhdGUnIHx8IG1vZGUgPT09ICdkYXRldGltZSdcbiAgY29uc3Qgc2hvd1RpbWUgPSAhY2FsZW5kYXIgJiYgKG1vZGUgPT09ICd0aW1lJyB8fCBtb2RlID09PSAnZGF0ZXRpbWUnKVxuXG4gIC8qIC0tLS0gaW50ZXJuYWwgc3RhdGUgLS0tLSAqL1xuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFt2aWV3WWVhciwgc2V0Vmlld1llYXJdID0gUmVhY3QudXNlU3RhdGUoKCkgPT5cbiAgICByZXNvbHZlZFZhbHVlID8gcmVzb2x2ZWRWYWx1ZS5nZXRGdWxsWWVhcigpIDogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpKVxuICBjb25zdCBbdmlld01vbnRoLCBzZXRWaWV3TW9udGhdID0gUmVhY3QudXNlU3RhdGUoKCkgPT5cbiAgICByZXNvbHZlZFZhbHVlID8gcmVzb2x2ZWRWYWx1ZS5nZXRNb250aCgpIDogbmV3IERhdGUoKS5nZXRNb250aCgpKVxuICBjb25zdCBbdGVtcERhdGUsIHNldFRlbXBEYXRlXSA9IFJlYWN0LnVzZVN0YXRlPERhdGUgfCBudWxsPihyZXNvbHZlZFZhbHVlKVxuICBjb25zdCBbdGVtcEhvdXJzLCBzZXRUZW1wSG91cnNdID0gUmVhY3QudXNlU3RhdGUoKCkgPT5cbiAgICByZXNvbHZlZFZhbHVlID8gKHJlc29sdmVkVmFsdWUuZ2V0SG91cnMoKSAlIDEyIHx8IDEyKSA6IDEyKVxuICBjb25zdCBbdGVtcE1pbnMsIHNldFRlbXBNaW5zXSA9IFJlYWN0LnVzZVN0YXRlKCgpID0+XG4gICAgcmVzb2x2ZWRWYWx1ZSA/IHJlc29sdmVkVmFsdWUuZ2V0TWludXRlcygpIDogMClcbiAgY29uc3QgW3RlbXBBbVBtLCBzZXRUZW1wQW1QbV0gPSBSZWFjdC51c2VTdGF0ZSgoKSA9PlxuICAgIHJlc29sdmVkVmFsdWUgPyAocmVzb2x2ZWRWYWx1ZS5nZXRIb3VycygpID49IDEyID8gJ1BNJyA6ICdBTScpIDogJ0FNJylcbiAgY29uc3QgW3Nob3dZZWFyUGlja2VyLCBzZXRTaG93WWVhclBpY2tlcl0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3llYXJQYWdlLCBzZXRZZWFyUGFnZV0gPSBSZWFjdC51c2VTdGF0ZSgoKSA9PlxuICAgIE1hdGguZmxvb3IoKHJlc29sdmVkVmFsdWUgPyByZXNvbHZlZFZhbHVlLmdldEZ1bGxZZWFyKCkgOiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkpIC8gWUVBUlNfUEVSX1BBR0UpICogWUVBUlNfUEVSX1BBR0VcbiAgKVxuICBjb25zdCBbcG9wb3ZlclN0eWxlLCBzZXRQb3BvdmVyU3R5bGVdID0gUmVhY3QudXNlU3RhdGU8UmVhY3QuQ1NTUHJvcGVydGllcz4oUFJFX1BPU0lUSU9OX1NUWUxFKVxuXG4gIGNvbnN0IGlucHV0UmVmID0gUmVhY3QudXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHBvcG92ZXJSZWYgPSBSZWFjdC51c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHBvcnRhbFJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpXG5cbiAgLyogLS0tLSBwb3J0YWwgY29udGFpbmVyIC0tLS0gKi9cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gICAgZWwuY2xhc3NOYW1lID0gJ2RhdGVwaWNrZXItcG9ydGFsLXJvb3QnXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbClcbiAgICBwb3J0YWxSZWYuY3VycmVudCA9IGVsXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChlbC5wYXJlbnROb2RlKSBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVsKVxuICAgICAgcG9ydGFsUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgfVxuICB9LCBbXSlcblxuICAvKiAtLS0tIHN5bmMgdGVtcCBzdGF0ZSB3aGVuIHZhbHVlIGNoYW5nZXMgZXh0ZXJuYWxseSAtLS0tICovXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlc29sdmVkVmFsdWUgJiYgIWlzTmFOKHJlc29sdmVkVmFsdWUuZ2V0VGltZSgpKSkge1xuICAgICAgc2V0VGVtcERhdGUocmVzb2x2ZWRWYWx1ZSlcbiAgICAgIHNldFZpZXdZZWFyKHJlc29sdmVkVmFsdWUuZ2V0RnVsbFllYXIoKSlcbiAgICAgIHNldFZpZXdNb250aChyZXNvbHZlZFZhbHVlLmdldE1vbnRoKCkpXG4gICAgICBzZXRUZW1wSG91cnMocmVzb2x2ZWRWYWx1ZS5nZXRIb3VycygpICUgMTIgfHwgMTIpXG4gICAgICBzZXRUZW1wTWlucyhyZXNvbHZlZFZhbHVlLmdldE1pbnV0ZXMoKSlcbiAgICAgIHNldFRlbXBBbVBtKHJlc29sdmVkVmFsdWUuZ2V0SG91cnMoKSA+PSAxMiA/ICdQTScgOiAnQU0nKVxuICAgICAgc2V0WWVhclBhZ2UoTWF0aC5mbG9vcihyZXNvbHZlZFZhbHVlLmdldEZ1bGxZZWFyKCkgLyBZRUFSU19QRVJfUEFHRSkgKiBZRUFSU19QRVJfUEFHRSlcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0VGVtcERhdGUobnVsbClcbiAgICB9XG4gIH0sIFtyZXNvbHZlZFZhbHVlXSlcblxuICAvKiAtLS0tIHJlcG9zaXRpb24gcG9wb3ZlciBvbiBvcGVuIC8gc2Nyb2xsIC8gcmVzaXplIC0tLS0gKi9cbiAgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc09wZW4pIHtcbiAgICAgIC8qIFJlc2V0IHNvIHRoZSBuZXh0IG9wZW4gc3RhcnRzIGhpZGRlbiB1bnRpbCBtZWFzdXJlZCDigJQgcmV1c2luZyB0aGUgbGFzdFxuICAgICAgICAgcG9zaXRpb24gd291bGQgZmxhc2ggdGhlIHBvcG92ZXIgYXQgdGhlIHByZXZpb3VzIGxvY2F0aW9uICovXG4gICAgICBzZXRQb3BvdmVyU3R5bGUoUFJFX1BPU0lUSU9OX1NUWUxFKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLyogTWVhc3VyZSBhY3R1YWwgcG9wb3ZlciBzaXplIHNvIHdlIHBvc2l0aW9uIHdpdGggbm8gd2FzdGVkIHNwYWNlICovXG4gICAgY29uc3QgZ2V0SGVpZ2h0ID0gKCk6IG51bWJlciA9PiB7XG4gICAgICBpZiAocG9wb3ZlclJlZi5jdXJyZW50KSB7XG4gICAgICAgIHJldHVybiBwb3BvdmVyUmVmLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0XG4gICAgICB9XG4gICAgICByZXR1cm4gUE9QT1ZFUl9HVUVTU1tzaG93WWVhclBpY2tlciA/ICd5ZWFyJyA6IG1vZGVdIHx8IDMwMFxuICAgIH1cbiAgICBjb25zdCBnZXRXaWR0aCA9ICgpOiBudW1iZXIgPT4ge1xuICAgICAgaWYgKHBvcG92ZXJSZWYuY3VycmVudCkge1xuICAgICAgICByZXR1cm4gcG9wb3ZlclJlZi5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoXG4gICAgICB9XG4gICAgICByZXR1cm4gUE9QT1ZFUl9XSURUSF9HVUVTU1tzaG93WWVhclBpY2tlciA/ICd5ZWFyJyA6IG1vZGVdIHx8IDI4MFxuICAgIH1cblxuICAgIGNvbnN0IHNjcm9sbFBhcmVudCA9IGdldFNjcm9sbFBhcmVudChpbnB1dFJlZi5jdXJyZW50KVxuXG4gICAgY29uc3QgdXBkYXRlID0gKCkgPT4ge1xuICAgICAgc2V0UG9wb3ZlclN0eWxlKGNhbGNQb3BvdmVyU3R5bGUoaW5wdXRSZWYuY3VycmVudCwgZ2V0SGVpZ2h0KCksIGdldFdpZHRoKCkpKVxuICAgIH1cbiAgICAvKiBQb3NpdGlvbiBzeW5jaHJvbm91c2x5IGJlZm9yZSBwYWludCDigJQgdGhlIHBvcG92ZXIgaXMgYWxyZWFkeSBtb3VudGVkXG4gICAgICAgKGhpZGRlbiwgY29udGVudC1zaXplZCB2aWEgUFJFX1BPU0lUSU9OX1NUWUxFKSBzbyBtZWFzdXJlbWVudHMgYXJlIHJlYWwgKi9cbiAgICB1cGRhdGUoKVxuXG4gICAgLyogVGhyb3R0bGUgc2Nyb2xsL3Jlc2l6ZSByZXBvc2l0aW9uaW5nIHRvIGFuaW1hdGlvbiBmcmFtZXMgKi9cbiAgICBsZXQgcmFmID0gMFxuICAgIGNvbnN0IHNjaGVkdWxlVXBkYXRlID0gKCkgPT4ge1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmKVxuICAgICAgcmFmID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHVwZGF0ZSlcbiAgICB9XG5cbiAgICAvKiBMaXN0ZW4gb24gdGhlIG5lYXJlc3Qgc2Nyb2xsYWJsZSBhbmNlc3RvciAoZS5nLiBtb2RhbCBib2R5KSBBTkQgdGhlIHdpbmRvdyAqL1xuICAgIHNjcm9sbFBhcmVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBzY2hlZHVsZVVwZGF0ZSwgeyBwYXNzaXZlOiB0cnVlIH0pXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHNjaGVkdWxlVXBkYXRlKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShyYWYpXG4gICAgICBzY3JvbGxQYXJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgc2NoZWR1bGVVcGRhdGUpXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgc2NoZWR1bGVVcGRhdGUpXG4gICAgfVxuICB9LCBbaXNPcGVuLCBtb2RlLCBzaG93WWVhclBpY2tlcl0pXG5cbiAgLyogLS0tLSBjbGljayBvdXRzaWRlIHRvIGNsb3NlIC0tLS0gKi9cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzT3BlbikgcmV0dXJuXG4gICAgY29uc3QgaGFuZGxlciA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBpZiAocG9wb3ZlclJlZi5jdXJyZW50ICYmICFwb3BvdmVyUmVmLmN1cnJlbnQuY29udGFpbnMoZS50YXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgICBpbnB1dFJlZi5jdXJyZW50ICYmICFpbnB1dFJlZi5jdXJyZW50LmNvbnRhaW5zKGUudGFyZ2V0IGFzIE5vZGUpKSB7XG4gICAgICAgIHNldElzT3BlbihmYWxzZSlcbiAgICAgICAgc2V0U2hvd1llYXJQaWNrZXIoZmFsc2UpXG4gICAgICB9XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZXIpXG4gICAgcmV0dXJuICgpID0+IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZXIpXG4gIH0sIFtpc09wZW5dKVxuXG4gIC8qIC0tLS0gY29tbWl0IGhlbHBlcnMgLS0tLSAqL1xuICBjb25zdCBidWlsZERhdGUgPSAoYmFzZTogRGF0ZSwgaDEyOiBudW1iZXIsIG1pbnM6IG51bWJlciwgYW1wbTogc3RyaW5nKTogRGF0ZSA9PiB7XG4gICAgY29uc3QgZCA9IG5ldyBEYXRlKGJhc2UpXG4gICAgbGV0IGggPSBoMTIgJSAxMlxuICAgIGlmIChhbXBtID09PSAnUE0nKSBoICs9IDEyXG4gICAgaWYgKGggPT09IDEyICYmIGFtcG0gPT09ICdBTScpIGggPSAwXG4gICAgZC5zZXRIb3VycyhoLCBtaW5zLCAwLCAwKVxuICAgIHJldHVybiBkXG4gIH1cblxuICAvKipcbiAgICogRmlyZSBvbkNoYW5nZSB3aXRoIGEgcHJlLWJ1aWx0IGRhdGUgd2l0aG91dCBjbG9zaW5nIHRoZSBwb3BvdmVyLlxuICAgKiBDYWxsZXJzIG11c3QgYnVpbGQgdGhlIGNvbXBsZXRlIGRhdGUgKGluY2x1ZGluZyB0aW1lKSBiZWZvcmUgcGFzc2luZyBpdCBpbi5cbiAgICovXG4gIGNvbnN0IGZpcmVDaGFuZ2UgPSAoZGF0ZTogRGF0ZSB8IG51bGwpOiB2b2lkID0+IHtcbiAgICBpZiAoIWRhdGUgfHwgaXNOYU4oZGF0ZS5nZXRUaW1lKCkpKSByZXR1cm5cbiAgICBjb25zdCBmb3JtYXR0ZWQgPSBmb3JtYXRWYWx1ZShkYXRlLCBtb2RlLCBkYXRlRm9ybWF0KVxuICAgIG9uQ2hhbmdlPy4obWFrZUV2ZW50KGZvcm1hdHRlZCwgbmFtZSB8fCAnJywgbW9kZSkpXG4gIH1cblxuICBjb25zdCBjb21taXQgPSAoZGF0ZTogRGF0ZSB8IG51bGwpOiB2b2lkID0+IHtcbiAgICBpZiAoIWRhdGUpIHtcbiAgICAgIG9uQ2hhbmdlPy4obWFrZUV2ZW50KG51bGwsIG5hbWUgfHwgJycsIG1vZGUpKVxuICAgICAgc2V0SXNPcGVuKGZhbHNlKVxuICAgICAgc2V0U2hvd1llYXJQaWNrZXIoZmFsc2UpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgZmlyZUNoYW5nZShkYXRlKVxuICAgIGlmIChtb2RlID09PSAnZGF0ZScpIHsgc2V0SXNPcGVuKGZhbHNlKTsgc2V0U2hvd1llYXJQaWNrZXIoZmFsc2UpIH1cbiAgfVxuXG4gIGNvbnN0IGNvbW1pdERhdGVPbmx5ID0gKGRhdGU6IERhdGUpOiB2b2lkID0+IHtcbiAgICBzZXRUZW1wRGF0ZShkYXRlKVxuICAgIGlmIChtb2RlID09PSAnZGF0ZScgfHwgY2FsZW5kYXIpIHtcbiAgICAgIGNvbW1pdChkYXRlKVxuICAgIH0gZWxzZSBpZiAobW9kZSA9PT0gJ2RhdGV0aW1lJykge1xuICAgICAgLy8gQnVpbGQgZnVsbCBkYXRldGltZSAoZGF0ZSArIGN1cnJlbnQgdGltZSBzZWxlY3Rpb24pIGFuZCBmaXJlXG4gICAgICBjb25zdCBkID0gYnVpbGREYXRlKGRhdGUsIHRlbXBIb3VycywgdGVtcE1pbnMsIHRlbXBBbVBtKVxuICAgICAgZmlyZUNoYW5nZShkKVxuICAgIH1cbiAgfVxuXG4gIC8qIC0tLS0gY2FsZW5kYXIgZ3JpZCAtLS0tICovXG4gIGNvbnN0IGdyaWQgPSBidWlsZENhbGVuZGFyR3JpZCh2aWV3WWVhciwgdmlld01vbnRoKVxuXG4gIGNvbnN0IGhhbmRsZVByZXZNb250aCA9ICgpID0+IHtcbiAgICBsZXQgbmV3WSA9IHZpZXdZZWFyLCBuZXdNID0gdmlld01vbnRoXG4gICAgaWYgKHZpZXdNb250aCA9PT0gMCkgeyBuZXdZID0gdmlld1llYXIgLSAxOyBuZXdNID0gMTEgfVxuICAgIGVsc2UgbmV3TSA9IHZpZXdNb250aCAtIDFcbiAgICBzZXRWaWV3WWVhcihuZXdZKTsgc2V0Vmlld01vbnRoKG5ld00pXG4gICAgY29uc3QgYmFzZSA9IHRlbXBEYXRlIHx8IG5ldyBEYXRlKClcbiAgICBjb25zdCBtYXhEID0gZGF5c0luTW9udGgobmV3WSwgbmV3TSlcbiAgICBjb25zdCBuZXdEYXRlID0gbmV3IERhdGUobmV3WSwgbmV3TSwgTWF0aC5taW4oYmFzZS5nZXREYXRlKCksIG1heEQpKVxuICAgIHNldFRlbXBEYXRlKG5ld0RhdGUpXG4gICAgZmlyZUNoYW5nZShzaG93VGltZSA/IGJ1aWxkRGF0ZShuZXdEYXRlLCB0ZW1wSG91cnMsIHRlbXBNaW5zLCB0ZW1wQW1QbSkgOiBuZXdEYXRlKVxuICB9XG4gIGNvbnN0IGhhbmRsZU5leHRNb250aCA9ICgpID0+IHtcbiAgICBsZXQgbmV3WSA9IHZpZXdZZWFyLCBuZXdNID0gdmlld01vbnRoXG4gICAgaWYgKHZpZXdNb250aCA9PT0gMTEpIHsgbmV3WSA9IHZpZXdZZWFyICsgMTsgbmV3TSA9IDAgfVxuICAgIGVsc2UgbmV3TSA9IHZpZXdNb250aCArIDFcbiAgICBzZXRWaWV3WWVhcihuZXdZKTsgc2V0Vmlld01vbnRoKG5ld00pXG4gICAgY29uc3QgYmFzZSA9IHRlbXBEYXRlIHx8IG5ldyBEYXRlKClcbiAgICBjb25zdCBtYXhEID0gZGF5c0luTW9udGgobmV3WSwgbmV3TSlcbiAgICBjb25zdCBuZXdEYXRlID0gbmV3IERhdGUobmV3WSwgbmV3TSwgTWF0aC5taW4oYmFzZS5nZXREYXRlKCksIG1heEQpKVxuICAgIHNldFRlbXBEYXRlKG5ld0RhdGUpXG4gICAgZmlyZUNoYW5nZShzaG93VGltZSA/IGJ1aWxkRGF0ZShuZXdEYXRlLCB0ZW1wSG91cnMsIHRlbXBNaW5zLCB0ZW1wQW1QbSkgOiBuZXdEYXRlKVxuICB9XG5cbiAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpXG4gIC8qIG1pbi9tYXggYWNjZXB0IHRoZSBzYW1lIGZsZXhpYmxlIGlucHV0cyBhcyBgdmFsdWVgIChEYXRlLCBzdHJpbmcsIHRpbWVzdGFtcCkg4oCUXG4gICAgIGEgZm9ybWF0dGVkIHN0cmluZyBmcm9tIGFub3RoZXIgRGF0ZVBpY2tlcidzIG9uQ2hhbmdlIGlzIGEgY29tbW9uIHNvdXJjZSAqL1xuICBjb25zdCByZXNvbHZlZE1pbiA9IHJlc29sdmVWYWx1ZShtaW5EYXRlKVxuICBjb25zdCByZXNvbHZlZE1heCA9IHJlc29sdmVWYWx1ZShtYXhEYXRlKVxuICBjb25zdCBtaW5EdCA9IHJlc29sdmVkTWluID8gbmV3IERhdGUocmVzb2x2ZWRNaW4uZ2V0RnVsbFllYXIoKSwgcmVzb2x2ZWRNaW4uZ2V0TW9udGgoKSwgcmVzb2x2ZWRNaW4uZ2V0RGF0ZSgpKSA6IG51bGxcbiAgY29uc3QgbWF4RHQgPSByZXNvbHZlZE1heCA/IG5ldyBEYXRlKHJlc29sdmVkTWF4LmdldEZ1bGxZZWFyKCksIHJlc29sdmVkTWF4LmdldE1vbnRoKCksIHJlc29sdmVkTWF4LmdldERhdGUoKSkgOiBudWxsXG5cbiAgLyogLS0tLSB0aW1lIGNoYW5nZSBoYW5kbGVycyAtLS0tICovXG4gIGNvbnN0IGhhbmRsZUhvdXJDaGFuZ2UgPSAoaDogbnVtYmVyKSA9PiB7XG4gICAgc2V0VGVtcEhvdXJzKGgpXG4gICAgaWYgKHNob3dUaW1lKSB7XG4gICAgICBjb25zdCBkID0gYnVpbGREYXRlKHRlbXBEYXRlIHx8IG5ldyBEYXRlKCksIGgsIHRlbXBNaW5zLCB0ZW1wQW1QbSlcbiAgICAgIG9uQ2hhbmdlPy4obWFrZUV2ZW50KGZvcm1hdFZhbHVlKGQsIG1vZGUsIGRhdGVGb3JtYXQpLCBuYW1lIHx8ICcnLCBtb2RlKSlcbiAgICB9XG4gIH1cbiAgY29uc3QgaGFuZGxlTWluQ2hhbmdlID0gKG06IG51bWJlcikgPT4ge1xuICAgIHNldFRlbXBNaW5zKG0pXG4gICAgaWYgKHNob3dUaW1lKSB7XG4gICAgICBjb25zdCBkID0gYnVpbGREYXRlKHRlbXBEYXRlIHx8IG5ldyBEYXRlKCksIHRlbXBIb3VycywgbSwgdGVtcEFtUG0pXG4gICAgICBvbkNoYW5nZT8uKG1ha2VFdmVudChmb3JtYXRWYWx1ZShkLCBtb2RlLCBkYXRlRm9ybWF0KSwgbmFtZSB8fCAnJywgbW9kZSkpXG4gICAgfVxuICB9XG4gIGNvbnN0IGhhbmRsZUFtUG1DaGFuZ2UgPSAoYXA6IHN0cmluZykgPT4ge1xuICAgIHNldFRlbXBBbVBtKGFwKVxuICAgIGlmIChzaG93VGltZSkge1xuICAgICAgY29uc3QgZCA9IGJ1aWxkRGF0ZSh0ZW1wRGF0ZSB8fCBuZXcgRGF0ZSgpLCB0ZW1wSG91cnMsIHRlbXBNaW5zLCBhcClcbiAgICAgIG9uQ2hhbmdlPy4obWFrZUV2ZW50KGZvcm1hdFZhbHVlKGQsIG1vZGUsIGRhdGVGb3JtYXQpLCBuYW1lIHx8ICcnLCBtb2RlKSlcbiAgICB9XG4gIH1cblxuICAvKiAtLS0tIHllYXIgcGlja2VyIC0tLS0gKi9cbiAgY29uc3Qgb3BlblllYXJQaWNrZXIgPSAoKSA9PiB7XG4gICAgc2V0WWVhclBhZ2UoTWF0aC5mbG9vcih2aWV3WWVhciAvIFlFQVJTX1BFUl9QQUdFKSAqIFlFQVJTX1BFUl9QQUdFKVxuICAgIHNldFNob3dZZWFyUGlja2VyKHRydWUpXG4gIH1cblxuICBjb25zdCBoYW5kbGVZZWFyU2VsZWN0ID0gKHk6IG51bWJlcikgPT4ge1xuICAgIHNldFZpZXdZZWFyKHkpXG4gICAgc2V0U2hvd1llYXJQaWNrZXIoZmFsc2UpXG4gICAgY29uc3QgYmFzZSA9IHRlbXBEYXRlIHx8IG5ldyBEYXRlKClcbiAgICBjb25zdCBtYXhEID0gZGF5c0luTW9udGgoeSwgdmlld01vbnRoKVxuICAgIGNvbnN0IG5ld0RhdGUgPSBuZXcgRGF0ZSh5LCB2aWV3TW9udGgsIE1hdGgubWluKGJhc2UuZ2V0RGF0ZSgpLCBtYXhEKSlcbiAgICBzZXRUZW1wRGF0ZShuZXdEYXRlKVxuICAgIGZpcmVDaGFuZ2Uoc2hvd1RpbWUgPyBidWlsZERhdGUobmV3RGF0ZSwgdGVtcEhvdXJzLCB0ZW1wTWlucywgdGVtcEFtUG0pIDogbmV3RGF0ZSlcbiAgfVxuXG4gIGNvbnN0IHllYXJQYWdlU3RhcnQgPSBNYXRoLmZsb29yKHllYXJQYWdlIC8gWUVBUlNfUEVSX1BBR0UpICogWUVBUlNfUEVSX1BBR0VcbiAgY29uc3QgeWVhcnMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiBZRUFSU19QRVJfUEFHRSB9LCAoXywgaSkgPT4geWVhclBhZ2VTdGFydCArIGkpXG5cbiAgLyogLS0tLSBjbGVhciAtLS0tICovXG4gIGNvbnN0IGhhbmRsZUNsZWFyID0gKGU6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgc2V0VGVtcERhdGUobnVsbClcbiAgICBvbkNoYW5nZT8uKG1ha2VFdmVudChudWxsLCBuYW1lIHx8ICcnKSlcbiAgfVxuXG4gIC8qIC0tLS0ga2V5Ym9hcmQgLS0tLSAqL1xuICBjb25zdCBoYW5kbGVJbnB1dEtleURvd24gPSAoZTogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHsgc2V0SXNPcGVuKGZhbHNlKTsgc2V0U2hvd1llYXJQaWNrZXIoZmFsc2UpOyBpbnB1dFJlZi5jdXJyZW50Py5ibHVyKCkgfVxuICAgIGlmIChlLmtleSA9PT0gJ0Fycm93RG93bicgfHwgZS5rZXkgPT09ICdFbnRlcicgfHwgZS5rZXkgPT09ICcgJykge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICBzZXRJc09wZW4odHJ1ZSlcbiAgICB9XG4gIH1cblxuICAvKiAtLS0tIG1lcmdlZCByZWYgLS0tLSAqL1xuICBjb25zdCBtZXJnZUlucHV0UmVmID0gUmVhY3QudXNlQ2FsbGJhY2soKG5vZGU6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsKSA9PiB7XG4gICAgaW5wdXRSZWYuY3VycmVudCA9IG5vZGVcbiAgICBpZiAodHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJykgcmVmKG5vZGUpXG4gICAgZWxzZSBpZiAocmVmKSByZWYuY3VycmVudCA9IG5vZGVcbiAgfSwgW3JlZl0pXG5cbiAgLyogLS0tLSByZW5kZXIgLS0tLSAqL1xuICBjb25zdCBwbGFjZWhvbGRlciA9IHBsYWNlaG9sZGVyVGV4dFxuICAgID8/IChtb2RlID09PSAndGltZScgPyAnU2VsZWN0IHRpbWUnIDogbW9kZSA9PT0gJ2RhdGV0aW1lJyA/ICdTZWxlY3QgZGF0ZSAmIHRpbWUnIDogJ1NlbGVjdCBkYXRlJylcblxuICBjb25zdCBwaWNrZXJCb2R5ID0gKFxuICAgIDw+XG4gICAgICB7LyogPT09PT09PT09PT09PT0gWUVBUiBQSUNLRVIgPT09PT09PT09PT09PT0gKi99XG4gICAgICB7c2hvd1llYXJQaWNrZXIgJiYgc2hvd0NhbGVuZGFyICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkYXRlcGlja2VyLXllYXItcGlja2VyIHAtM1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0yXCI+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBib3JkZXItMCBweC0xXCIgb25DbGljaz17KCkgPT4gc2V0WWVhclBhZ2UoeWVhclBhZ2UgLSBZRUFSU19QRVJfUEFHRSl9IGFyaWEtbGFiZWw9XCJQcmV2aW91cyB5ZWFyc1wiPiZsc2FxdW87PC9idXR0b24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmdy1zZW1pYm9sZCBzbWFsbFwiPnt5ZWFyUGFnZVN0YXJ0fSDigJMge3llYXJQYWdlU3RhcnQgKyBZRUFSU19QRVJfUEFHRSAtIDF9PC9zcGFuPlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3NOYW1lPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1zZWNvbmRhcnkgYm9yZGVyLTAgcHgtMVwiIG9uQ2xpY2s9eygpID0+IHNldFllYXJQYWdlKHllYXJQYWdlICsgWUVBUlNfUEVSX1BBR0UpfSBhcmlhLWxhYmVsPVwiTmV4dCB5ZWFyc1wiPiZyc2FxdW87PC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkYXRlcGlja2VyLXllYXItZ3JpZFwiPlxuICAgICAgICAgICAge3llYXJzLm1hcCgoeSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBpc0N1cnJlbnRZZWFyID0geSA9PT0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpXG4gICAgICAgICAgICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB0ZW1wRGF0ZSAmJiB5ID09PSB0ZW1wRGF0ZS5nZXRGdWxsWWVhcigpXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAga2V5PXt5fVxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAnZGF0ZXBpY2tlci15ZWFyLWNlbGwgYnRuIGJ0bi1zbScsXG4gICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQgJiYgJ2J0bi1wcmltYXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgIWlzU2VsZWN0ZWQgJiYgaXNDdXJyZW50WWVhciAmJiAnYnRuLW91dGxpbmUtcHJpbWFyeScsXG4gICAgICAgICAgICAgICAgICAgICFpc1NlbGVjdGVkICYmICFpc0N1cnJlbnRZZWFyICYmICdidG4tbGlnaHQgYm9yZGVyJ1xuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVllYXJTZWxlY3QoeSl9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3l9XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG5cbiAgICAgIHsvKiA9PT09PT09PT09PT09PSBDQUxFTkRBUiArIFRJTUUgPT09PT09PT09PT09PT0gKi99XG4gICAgICB7IXNob3dZZWFyUGlja2VyICYmIChcbiAgICAgICAgPD5cblxuICAgICAgICAgIHsvKiAtLS0tIENBTEVOREFSICsgVElNRSBDT05UQUlORVIgLS0tLSAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y24oJ2QtZmxleCcsIG1vZGUgPT09ICdkYXRldGltZScgPyAnZmxleC1yb3cnIDogJ2ZsZXgtY29sdW1uJyl9PlxuXG4gICAgICAgICAgey8qIC0tLS0gQ0FMRU5EQVIgLS0tLSAqL31cbiAgICAgICAgICB7c2hvd0NhbGVuZGFyICYmIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0ZXBpY2tlci1jYWxlbmRhciBwLTJcIj5cbiAgICAgICAgICAgICAgey8qIE1vbnRoIC8gWWVhciBoZWFkZXIgKi99XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3NOYW1lPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1zZWNvbmRhcnkgYm9yZGVyLTAgcHgtMVwiIG9uQ2xpY2s9e2hhbmRsZVByZXZNb250aH0gYXJpYS1sYWJlbD1cIlByZXZpb3VzIG1vbnRoXCI+JmxzYXF1bzs8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTFcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZ3LXNlbWlib2xkIHNtYWxsXCI+e01PTlRIU1t2aWV3TW9udGhdfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJ0biBidG4tc20gYnRuLWxpbmsgdGV4dC1kZWNvcmF0aW9uLW5vbmUgdGV4dC1wcmltYXJ5IGZ3LXNlbWlib2xkIHNtYWxsIHAtMFwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29wZW5ZZWFyUGlja2VyfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2hvb3NlIHllYXJcIlxuICAgICAgICAgICAgICAgICAgPnt2aWV3WWVhcn08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBib3JkZXItMCBweC0xXCIgb25DbGljaz17aGFuZGxlTmV4dE1vbnRofSBhcmlhLWxhYmVsPVwiTmV4dCBtb250aFwiPiZyc2FxdW87PC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIHsvKiBEYXktb2Ytd2VlayBoZWFkZXJzICovfVxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGVwaWNrZXItZGF5cy1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICB7REFZU19PRl9XRUVLLm1hcChkID0+IChcbiAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtkfSBjbGFzc05hbWU9XCJkYXRlcGlja2VyLWRheS1sYWJlbFwiPntkfTwvZGl2PlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICB7LyogRGF5IGdyaWQgKi99XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0ZXBpY2tlci1kYXlzLWdyaWRcIj5cbiAgICAgICAgICAgICAgICB7Z3JpZC5tYXAoKGNlbGwsIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGlzVG9kYXkgPSBpc1NhbWVEYXkoY2VsbC5kYXRlLCB0b2RheSlcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB0ZW1wRGF0ZSAmJiBpc1NhbWVEYXkoY2VsbC5kYXRlLCB0ZW1wRGF0ZSlcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGluUmFuZ2UgPSBpc0RhdGVJblJhbmdlKGNlbGwuZGF0ZSwgbWluRHQsIG1heER0KVxuICAgICAgICAgICAgICAgICAgY29uc3QgaXNEaXNhYmxlZERheSA9IGNlbGwuaXNPdXRzaWRlIHx8ICFpblJhbmdlXG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBrZXk9e2l9XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWREYXl9XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgICAgICdkYXRlcGlja2VyLWRheScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1RvZGF5ICYmICdkYXRlcGlja2VyLWRheS0tdG9kYXknLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZCAmJiAnZGF0ZXBpY2tlci1kYXktLXNlbGVjdGVkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuaXNPdXRzaWRlICYmICdkYXRlcGlja2VyLWRheS0tb3V0c2lkZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAhaW5SYW5nZSAmJiAnZGF0ZXBpY2tlci1kYXktLWRpc2FibGVkJ1xuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gY29tbWl0RGF0ZU9ubHkoY2VsbC5kYXRlKX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17Y2VsbC5pc091dHNpZGUgPyAtMSA6IDB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7Y2VsbC5kYXl9XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG5cbiAgICAgICAgICB7LyogLS0tLSBESVZJREVSIChkYXRldGltZSBtb2RlKSAtLS0tICovfVxuICAgICAgICAgIHttb2RlID09PSAnZGF0ZXRpbWUnICYmIDxkaXYgY2xhc3NOYW1lPVwidnIgbXgtMSBteS0yXCIgLz59XG5cbiAgICAgICAgICB7LyogLS0tLSBUSU1FIC0tLS0gKi99XG4gICAgICAgICAge3Nob3dUaW1lICYmIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0ZXBpY2tlci10aW1lIHAtMiBkLWZsZXggZmxleC1jb2x1bW5cIiBzdHlsZT17eyBtaW5XaWR0aDogMTgwIH19PlxuICAgICAgICAgICAgICB7bW9kZSA9PT0gJ2RhdGV0aW1lJyAmJiA8ZGl2IGNsYXNzTmFtZT1cInNtYWxsIGZ3LXNlbWlib2xkIHRleHQtbXV0ZWQgdGV4dC1jZW50ZXIgbWItMVwiPlRpbWU8L2Rpdj59XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICB7LyogSG91ciBjb2x1bW4gKi99XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkYXRlcGlja2VyLXRpbWUtY29sXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGVwaWNrZXItdGltZS1jb2wtbGFiZWxcIj5Ib3VyPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGVwaWNrZXItdGltZS1jb2wtc2Nyb2xsXCI+XG4gICAgICAgICAgICAgICAgICAgIHtBcnJheS5mcm9tKHsgbGVuZ3RoOiAxMiB9LCAoXywgaSkgPT4gaSArIDEpLm1hcChoID0+IChcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2h9XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oJ2RhdGVwaWNrZXItdGltZS1pdGVtJywgaCA9PT0gdGVtcEhvdXJzICYmICdhY3RpdmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZUhvdXJDaGFuZ2UoaCl9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge1N0cmluZyhoKS5wYWRTdGFydCgyLCAnMCcpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImRhdGVwaWNrZXItdGltZS1zZXBhcmF0b3JcIj46PC9zcGFuPlxuICAgICAgICAgICAgICAgIHsvKiBNaW51dGUgY29sdW1uICovfVxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0ZXBpY2tlci10aW1lLWNvbFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkYXRlcGlja2VyLXRpbWUtY29sLWxhYmVsXCI+TWluPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGVwaWNrZXItdGltZS1jb2wtc2Nyb2xsXCI+XG4gICAgICAgICAgICAgICAgICAgIHtNSU5VVEVTLm1hcChtID0+IChcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e219XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oJ2RhdGVwaWNrZXItdGltZS1pdGVtJywgbSA9PT0gdGVtcE1pbnMgJiYgJ2FjdGl2ZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlTWluQ2hhbmdlKG0pfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtTdHJpbmcobSkucGFkU3RhcnQoMiwgJzAnKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB7LyogQU0vUE0gY29sdW1uICovfVxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0ZXBpY2tlci10aW1lLWNvbFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkYXRlcGlja2VyLXRpbWUtY29sLWxhYmVsXCI+Jm5ic3A7PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtMSBtdC0xXCI+XG4gICAgICAgICAgICAgICAgICAgIHtbJ0FNJywgJ1BNJ10ubWFwKGFwID0+IChcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2FwfVxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKCdkYXRlcGlja2VyLXRpbWUtaXRlbScsICdkYXRlcGlja2VyLXRpbWUtaXRlbS0tYW1wbScsIHRlbXBBbVBtID09PSBhcCAmJiAnYWN0aXZlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVBbVBtQ2hhbmdlKGFwKX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7YXB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKVxuXG4gIGNvbnN0IHBvcG92ZXIgPSAoXG4gICAgPGRpdlxuICAgICAgcmVmPXtwb3BvdmVyUmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ2RhdGVwaWNrZXItcG9wb3ZlciBjYXJkIGJvcmRlciBzaGFkb3ctc20nLFxuICAgICAgICBtb2RlID09PSAnZGF0ZXRpbWUnICYmICdkYXRlcGlja2VyLXBvcG92ZXItLXdpZGUnXG4gICAgICApfVxuICAgICAgc3R5bGU9e3BvcG92ZXJTdHlsZX1cbiAgICA+XG4gICAgICB7cGlja2VyQm9keX1cbiAgICA8L2Rpdj5cbiAgKVxuXG4gIC8qIC0tLS0gaW5saW5lIGNhbGVuZGFyIG1vZGUgKG5vIGlucHV0LCBubyBwb3BvdmVyKSAtLS0tICovXG4gIGlmIChjYWxlbmRhcikge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Y24oJ2RhdGVwaWNrZXItY2FsZW5kYXItaW5saW5lIGNhcmQgYm9yZGVyIHNoYWRvdy1zbScsIGNsYXNzTmFtZSl9PlxuICAgICAgICB7cGlja2VyQm9keX1cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJkYXRlcGlja2VyLXdyYXBwZXIgcG9zaXRpb24tcmVsYXRpdmUgZC1pbmxpbmUtYmxvY2sgdy0xMDBcIiBzdHlsZT17eyBtaW5XaWR0aDogMCB9fT5cbiAgICAgIHsvKiAtLS0tIElucHV0IC0tLS0gKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHJlZj17bWVyZ2VJbnB1dFJlZn1cbiAgICAgICAgICBpZD17aWR9XG4gICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgcmVhZE9ubHlcbiAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICdmb3JtLWNvbnRyb2wnLFxuICAgICAgICAgICAgc2l6ZSA9PT0gJ3NtJyAmJiAnZm9ybS1jb250cm9sLXNtJyxcbiAgICAgICAgICAgIHNpemUgPT09ICdsZycgJiYgJ2Zvcm0tY29udHJvbC1sZycsXG4gICAgICAgICAgICAncGUtNScsXG4gICAgICAgICAgICBjbGFzc05hbWVcbiAgICAgICAgICApfVxuICAgICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgICB2YWx1ZT17Zm9ybWF0VmFsdWUocmVzb2x2ZWRWYWx1ZSwgbW9kZSwgZGF0ZUZvcm1hdCl9XG4gICAgICAgICAgb25DbGljaz17KCkgPT4gIWRpc2FibGVkICYmIHNldElzT3BlbighaXNPcGVuKX1cbiAgICAgICAgICBvbktleURvd249e2hhbmRsZUlucHV0S2V5RG93bn1cbiAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwiZGlhbG9nXCJcbiAgICAgICAgICBhcmlhLWV4cGFuZGVkPXtpc09wZW59XG4gICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgIC8+XG4gICAgICAgIHsvKiBjbGVhciBidXR0b24gKi99XG4gICAgICAgIHtpc0NsZWFyYWJsZSAmJiByZXNvbHZlZFZhbHVlICYmICFkaXNhYmxlZCAmJiAoXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJidG4gYnRuLXNtIGJ0bi1saW5rIHBvc2l0aW9uLWFic29sdXRlIHRvcC01MCBlbmQtMCB0cmFuc2xhdGUtbWlkZGxlLXkgcGUtMiB0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICBzdHlsZT17eyB6SW5kZXg6IDIgfX1cbiAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsZWFyfVxuICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICAmdGltZXM7XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cblxuICAgICAgey8qIC0tLS0gUG9ydGFsIHRoZSBwb3BvdmVyIHRvIGRvY3VtZW50LmJvZHkgLS0tLSAqL31cbiAgICAgIHtpc09wZW4gJiYgIWRpc2FibGVkICYmIHBvcnRhbFJlZi5jdXJyZW50ICYmIGNyZWF0ZVBvcnRhbChwb3BvdmVyLCBwb3J0YWxSZWYuY3VycmVudCl9XG4gICAgPC9kaXY+XG4gIClcbn0pXG5cbkRhdGVQaWNrZXIuZGlzcGxheU5hbWUgPSAnRGF0ZVBpY2tlcidcblxuZXhwb3J0IHsgRGF0ZVBpY2tlciB9XG5leHBvcnQgZGVmYXVsdCBEYXRlUGlja2VyXG4iXX0=