@acorex/core 6.5.29 → 6.5.30
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 +3 -3
- package/acorex-core.d.ts +5 -5
- package/esm2020/acorex-core.mjs +4 -4
- package/esm2020/lib/classes/base-page.class.mjs +28 -28
- package/esm2020/lib/classes/color.class.mjs +49 -49
- package/esm2020/lib/classes/datetime.class.mjs +314 -314
- package/esm2020/lib/classes/menu.class.mjs +27 -27
- package/esm2020/lib/classes/navigator.class.mjs +2 -2
- package/esm2020/lib/classes/popup.class.mjs +2 -2
- package/esm2020/lib/classes/promise.class.mjs +19 -19
- package/esm2020/lib/classes/sectionlist.class.mjs +2 -2
- package/esm2020/lib/classes/select.class.mjs +3 -3
- package/esm2020/lib/core.module.mjs +27 -27
- package/esm2020/lib/error/error.class.mjs +2 -2
- package/esm2020/lib/error/error.module.mjs +19 -19
- package/esm2020/lib/error/error.service.mjs +21 -21
- package/esm2020/lib/events/keyboard.mjs +2 -2
- package/esm2020/lib/http/http-error.class.mjs +2 -2
- package/esm2020/lib/http/http-events.interceptor.mjs +3 -3
- package/esm2020/lib/http/http-request.class.mjs +2 -2
- package/esm2020/lib/http/http-result.class.mjs +21 -21
- package/esm2020/lib/http/http.module.mjs +37 -37
- package/esm2020/lib/http/http.service.mjs +145 -145
- package/esm2020/lib/locale/en.json +255 -255
- package/esm2020/lib/locale/fa.json +245 -245
- package/esm2020/lib/pipe/datetime.pipe.mjs +25 -25
- package/esm2020/lib/pipe/htmlToText.pipe.mjs +25 -25
- package/esm2020/lib/platform/index.mjs +1 -1
- package/esm2020/lib/platform/platform.service.mjs +150 -150
- package/esm2020/lib/services/config.mjs +29 -29
- package/esm2020/lib/services/event.service.mjs +36 -36
- package/esm2020/lib/services/navigator.service.mjs +10 -10
- package/esm2020/lib/services/storage.service.mjs +16 -16
- package/esm2020/lib/translator/translator.mjs +26 -26
- package/esm2020/lib/translator/translator.module.mjs +25 -25
- package/esm2020/lib/translator/translator.pipe.mjs +24 -24
- package/esm2020/lib/translator/translator.service.mjs +21 -21
- package/esm2020/lib/utils/array/array-util.mjs +133 -133
- package/esm2020/lib/utils/html/html-util.mjs +192 -192
- package/esm2020/lib/utils/html/html.module.mjs +19 -19
- package/esm2020/lib/utils/math/math-util.mjs +6 -6
- package/esm2020/lib/utils/object/object-util.mjs +83 -83
- package/esm2020/lib/utils/render/on-demand-preload-strategy.service.mjs +20 -20
- package/esm2020/lib/utils/render/render.service.mjs +103 -103
- package/esm2020/lib/utils/render/rendering.module.mjs +35 -35
- package/esm2020/lib/utils/scroll/scroll.directive.mjs +54 -54
- package/esm2020/lib/utils/scroll/scroll.module.mjs +19 -19
- package/esm2020/lib/utils/separator/separator.module.mjs +19 -19
- package/esm2020/lib/utils/separator/separator.pipe.mjs +33 -33
- package/esm2020/public-api.mjs +44 -44
- package/fesm2015/acorex-core.mjs +2162 -2162
- package/fesm2015/acorex-core.mjs.map +1 -1
- package/fesm2020/acorex-core.mjs +1651 -1651
- package/fesm2020/acorex-core.mjs.map +1 -1
- package/lib/classes/base-page.class.d.ts +13 -13
- package/lib/classes/color.class.d.ts +17 -17
- package/lib/classes/datetime.class.d.ts +63 -63
- package/lib/classes/menu.class.d.ts +34 -34
- package/lib/classes/navigator.class.d.ts +5 -5
- package/lib/classes/popup.class.d.ts +12 -12
- package/lib/classes/promise.class.d.ts +7 -7
- package/lib/classes/sectionlist.class.d.ts +8 -8
- package/lib/classes/select.class.d.ts +7 -7
- package/lib/core.module.d.ts +9 -9
- package/lib/error/error.class.d.ts +4 -4
- package/lib/error/error.module.d.ts +7 -7
- package/lib/error/error.service.d.ts +13 -13
- package/lib/events/keyboard.d.ts +2 -2
- package/lib/http/http-error.class.d.ts +7 -7
- package/lib/http/http-events.interceptor.d.ts +10 -10
- package/lib/http/http-request.class.d.ts +14 -14
- package/lib/http/http-result.class.d.ts +11 -11
- package/lib/http/http.module.d.ts +10 -10
- package/lib/http/http.service.d.ts +23 -23
- package/lib/pipe/datetime.pipe.d.ts +8 -8
- package/lib/pipe/htmlToText.pipe.d.ts +7 -7
- package/lib/platform/index.d.ts +1 -1
- package/lib/platform/platform.service.d.ts +26 -26
- package/lib/services/config.d.ts +9 -9
- package/lib/services/event.service.d.ts +9 -9
- package/lib/services/navigator.service.d.ts +8 -8
- package/lib/services/storage.service.d.ts +7 -7
- package/lib/translator/translator.d.ts +9 -9
- package/lib/translator/translator.module.d.ts +8 -8
- package/lib/translator/translator.pipe.d.ts +8 -8
- package/lib/translator/translator.service.d.ts +8 -8
- package/lib/utils/array/array-util.d.ts +6 -6
- package/lib/utils/html/html-util.d.ts +62 -62
- package/lib/utils/html/html.module.d.ts +8 -8
- package/lib/utils/math/math-util.d.ts +3 -3
- package/lib/utils/object/object-util.d.ts +7 -7
- package/lib/utils/render/on-demand-preload-strategy.service.d.ts +10 -10
- package/lib/utils/render/render.service.d.ts +18 -18
- package/lib/utils/render/rendering.module.d.ts +8 -8
- package/lib/utils/scroll/scroll.directive.d.ts +18 -18
- package/lib/utils/scroll/scroll.module.d.ts +8 -8
- package/lib/utils/separator/separator.module.d.ts +8 -8
- package/lib/utils/separator/separator.pipe.d.ts +8 -8
- package/package.json +2 -2
- package/public-api.d.ts +43 -43
package/README.md
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
### ACoreX Core
|
|
2
|
-
This library have classes,interfacess,events,pipes,directive,validation & ...
|
|
3
|
-
|
|
1
|
+
### ACoreX Core
|
|
2
|
+
This library have classes,interfacess,events,pipes,directive,validation & ...
|
|
3
|
+
|
package/acorex-core.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
/// <amd-module name="@acorex/core" />
|
|
5
|
-
export * from './public-api';
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
/// <amd-module name="@acorex/core" />
|
|
5
|
+
export * from './public-api';
|
package/esm2020/acorex-core.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
5
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29yZS9zcmMvYWNvcmV4LWNvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import { EventEmitter, Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
/**
|
|
4
|
-
* @deprecated Use AXBasePageComponent from @acorex/components
|
|
5
|
-
*/
|
|
6
|
-
// TODO: Add Angular decorator.
|
|
7
|
-
export class AXBasePageComponent {
|
|
8
|
-
constructor() {
|
|
9
|
-
this.onClosed = new EventEmitter();
|
|
10
|
-
}
|
|
11
|
-
close(data) {
|
|
12
|
-
this.onClosed.emit({
|
|
13
|
-
component: this,
|
|
14
|
-
data: data
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
onClosing(e) {
|
|
18
|
-
}
|
|
19
|
-
ngOnDestroy() {
|
|
20
|
-
this.onClosed.unsubscribe();
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
AXBasePageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXBasePageComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
24
|
-
AXBasePageComponent.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXBasePageComponent });
|
|
25
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXBasePageComponent, decorators: [{
|
|
26
|
-
type: Injectable
|
|
27
|
-
}] });
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { EventEmitter, Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* @deprecated Use AXBasePageComponent from @acorex/components
|
|
5
|
+
*/
|
|
6
|
+
// TODO: Add Angular decorator.
|
|
7
|
+
export class AXBasePageComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.onClosed = new EventEmitter();
|
|
10
|
+
}
|
|
11
|
+
close(data) {
|
|
12
|
+
this.onClosed.emit({
|
|
13
|
+
component: this,
|
|
14
|
+
data: data
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
onClosing(e) {
|
|
18
|
+
}
|
|
19
|
+
ngOnDestroy() {
|
|
20
|
+
this.onClosed.unsubscribe();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
AXBasePageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXBasePageComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
24
|
+
AXBasePageComponent.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXBasePageComponent });
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXBasePageComponent, decorators: [{
|
|
26
|
+
type: Injectable
|
|
27
|
+
}] });
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1wYWdlLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvcmUvc3JjL2xpYi9jbGFzc2VzL2Jhc2UtcGFnZS5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFekQ7O0dBRUc7QUFDSCwrQkFBK0I7QUFFL0IsTUFBTSxPQUFnQixtQkFBbUI7SUFEekM7UUFHSSxhQUFRLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7S0FpQnpEO0lBZkcsS0FBSyxDQUFDLElBQVU7UUFDWixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNmLFNBQVMsRUFBRSxJQUFJO1lBQ2YsSUFBSSxFQUFFLElBQUk7U0FDYixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsU0FBUyxDQUFDLENBQU07SUFDaEIsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7O2lIQWhCaUIsbUJBQW1CO3FIQUFuQixtQkFBbUI7NEZBQW5CLG1CQUFtQjtrQkFEeEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBBWEJhc2VQYWdlQ29tcG9uZW50IGZyb20gQGFjb3JleC9jb21wb25lbnRzXG4gKi9cbi8vIFRPRE86IEFkZCBBbmd1bGFyIGRlY29yYXRvci5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWEJhc2VQYWdlQ29tcG9uZW50IHtcblxuICAgIG9uQ2xvc2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgY2xvc2UoZGF0YT86IGFueSkge1xuICAgICAgICB0aGlzLm9uQ2xvc2VkLmVtaXQoe1xuICAgICAgICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgICAgICAgZGF0YTogZGF0YVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkNsb3NpbmcoZTogYW55KTogdm9pZCB8IFByb21pc2U8dm9pZD4ge1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLm9uQ2xvc2VkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG5cbn1cblxuXG4iXX0=
|
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
export class AXColorUtil {
|
|
2
|
-
static hex2Rgb(hexColor) {
|
|
3
|
-
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hexColor);
|
|
4
|
-
return result ? {
|
|
5
|
-
r: parseInt(result[1], 16),
|
|
6
|
-
g: parseInt(result[2], 16),
|
|
7
|
-
b: parseInt(result[3], 16)
|
|
8
|
-
} : null;
|
|
9
|
-
}
|
|
10
|
-
static rgb2Hex(r, g, b, a = 255) {
|
|
11
|
-
let alpha;
|
|
12
|
-
let hex = (r | 1 << 8).toString(16).slice(1) +
|
|
13
|
-
(g | 1 << 8).toString(16).slice(1) +
|
|
14
|
-
(b | 1 << 8).toString(16).slice(1);
|
|
15
|
-
if (a !== 255) {
|
|
16
|
-
alpha = a;
|
|
17
|
-
}
|
|
18
|
-
else {
|
|
19
|
-
alpha = 1;
|
|
20
|
-
}
|
|
21
|
-
alpha = Math.round(alpha * 100) / 100;
|
|
22
|
-
alpha = Math.round(alpha * 255);
|
|
23
|
-
const hexAlpha = (alpha + 0x10000).toString(16).substr(-2).toUpperCase();
|
|
24
|
-
return '#' + hex + (alpha == 255 ? '' : hexAlpha);
|
|
25
|
-
}
|
|
26
|
-
;
|
|
27
|
-
static illuminance(hexColor) {
|
|
28
|
-
const rgbColor = AXColorUtil.hex2Rgb(hexColor);
|
|
29
|
-
if (!rgbColor) {
|
|
30
|
-
return -1;
|
|
31
|
-
}
|
|
32
|
-
const r = rgbColor.r;
|
|
33
|
-
const g = rgbColor.g;
|
|
34
|
-
const b = rgbColor.b;
|
|
35
|
-
const a = [r, g, b].map(v => {
|
|
36
|
-
v /= 255;
|
|
37
|
-
return (v <= 0.03928) ?
|
|
38
|
-
v / 12.92 :
|
|
39
|
-
Math.pow(((v + 0.055) / 1.055), 2.4);
|
|
40
|
-
});
|
|
41
|
-
return a[0] * 0.2126 + a[1] * 0.7152 + a[2] * 0.0722;
|
|
42
|
-
}
|
|
43
|
-
static contrastToWhite(hexColor) {
|
|
44
|
-
const whiteIlluminance = 1;
|
|
45
|
-
const illuminance = AXColorUtil.illuminance(hexColor);
|
|
46
|
-
return whiteIlluminance / illuminance;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export class AXColorUtil {
|
|
2
|
+
static hex2Rgb(hexColor) {
|
|
3
|
+
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hexColor);
|
|
4
|
+
return result ? {
|
|
5
|
+
r: parseInt(result[1], 16),
|
|
6
|
+
g: parseInt(result[2], 16),
|
|
7
|
+
b: parseInt(result[3], 16)
|
|
8
|
+
} : null;
|
|
9
|
+
}
|
|
10
|
+
static rgb2Hex(r, g, b, a = 255) {
|
|
11
|
+
let alpha;
|
|
12
|
+
let hex = (r | 1 << 8).toString(16).slice(1) +
|
|
13
|
+
(g | 1 << 8).toString(16).slice(1) +
|
|
14
|
+
(b | 1 << 8).toString(16).slice(1);
|
|
15
|
+
if (a !== 255) {
|
|
16
|
+
alpha = a;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
alpha = 1;
|
|
20
|
+
}
|
|
21
|
+
alpha = Math.round(alpha * 100) / 100;
|
|
22
|
+
alpha = Math.round(alpha * 255);
|
|
23
|
+
const hexAlpha = (alpha + 0x10000).toString(16).substr(-2).toUpperCase();
|
|
24
|
+
return '#' + hex + (alpha == 255 ? '' : hexAlpha);
|
|
25
|
+
}
|
|
26
|
+
;
|
|
27
|
+
static illuminance(hexColor) {
|
|
28
|
+
const rgbColor = AXColorUtil.hex2Rgb(hexColor);
|
|
29
|
+
if (!rgbColor) {
|
|
30
|
+
return -1;
|
|
31
|
+
}
|
|
32
|
+
const r = rgbColor.r;
|
|
33
|
+
const g = rgbColor.g;
|
|
34
|
+
const b = rgbColor.b;
|
|
35
|
+
const a = [r, g, b].map(v => {
|
|
36
|
+
v /= 255;
|
|
37
|
+
return (v <= 0.03928) ?
|
|
38
|
+
v / 12.92 :
|
|
39
|
+
Math.pow(((v + 0.055) / 1.055), 2.4);
|
|
40
|
+
});
|
|
41
|
+
return a[0] * 0.2126 + a[1] * 0.7152 + a[2] * 0.0722;
|
|
42
|
+
}
|
|
43
|
+
static contrastToWhite(hexColor) {
|
|
44
|
+
const whiteIlluminance = 1;
|
|
45
|
+
const illuminance = AXColorUtil.illuminance(hexColor);
|
|
46
|
+
return whiteIlluminance / illuminance;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3IuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29yZS9zcmMvbGliL2NsYXNzZXMvY29sb3IuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsTUFBTSxPQUFPLFdBQVc7SUFHcEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFnQjtRQUMzQixNQUFNLE1BQU0sR0FBRywyQ0FBMkMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUUsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ1osQ0FBQyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzFCLENBQUMsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMxQixDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7U0FDN0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsSUFBWSxHQUFHO1FBQzNELElBQUksS0FBSyxDQUFDO1FBQ1YsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNsQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUU7WUFDWCxLQUFLLEdBQUcsQ0FBQyxDQUFDO1NBQ2I7YUFBTTtZQUNILEtBQUssR0FBRyxDQUFDLENBQUM7U0FDYjtRQUVELEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDdEMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN6RSxPQUFPLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFBQSxDQUFDO0lBRUYsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFnQjtRQUMvQixNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDWCxPQUFPLENBQUMsQ0FBQyxDQUFDO1NBQ2I7UUFDRCxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDckIsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNyQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3hCLENBQUMsSUFBSSxHQUFHLENBQUM7WUFDVCxPQUFPLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ25CLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztnQkFDWCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDN0MsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQ3pELENBQUM7SUFFRCxNQUFNLENBQUMsZUFBZSxDQUFDLFFBQWdCO1FBQ25DLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEQsT0FBTyxnQkFBZ0IsR0FBRyxXQUFXLENBQUM7SUFDMUMsQ0FBQztDQUVKIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBBWENvbG9yIHtcbiAgICBpZD86IHN0cmluZztcbiAgICBjb2xvcj86IHN0cmluZztcbiAgICBjb2RlOiBzdHJpbmc7XG4gICAgc2VsZWN0ZWQ/OiBib29sZWFuO1xuICAgIGFjdGl2ZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBBWENvbG9yVXRpbCB7XG5cblxuICAgIHN0YXRpYyBoZXgyUmdiKGhleENvbG9yOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gL14jPyhbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KSQvaS5leGVjKGhleENvbG9yKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdCA/IHtcbiAgICAgICAgICAgIHI6IHBhcnNlSW50KHJlc3VsdFsxXSwgMTYpLFxuICAgICAgICAgICAgZzogcGFyc2VJbnQocmVzdWx0WzJdLCAxNiksXG4gICAgICAgICAgICBiOiBwYXJzZUludChyZXN1bHRbM10sIDE2KVxuICAgICAgICB9IDogbnVsbDtcbiAgICB9XG5cbiAgICBzdGF0aWMgcmdiMkhleChyOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyLCBhOiBudW1iZXIgPSAyNTUpOiBzdHJpbmcge1xuICAgICAgICBsZXQgYWxwaGE7XG4gICAgICAgIGxldCBoZXggPSAociB8IDEgPDwgOCkudG9TdHJpbmcoMTYpLnNsaWNlKDEpICtcbiAgICAgICAgICAgIChnIHwgMSA8PCA4KS50b1N0cmluZygxNikuc2xpY2UoMSkgK1xuICAgICAgICAgICAgKGIgfCAxIDw8IDgpLnRvU3RyaW5nKDE2KS5zbGljZSgxKTtcbiAgICAgICAgaWYgKGEgIT09IDI1NSkge1xuICAgICAgICAgICAgYWxwaGEgPSBhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYWxwaGEgPSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgYWxwaGEgPSBNYXRoLnJvdW5kKGFscGhhICogMTAwKSAvIDEwMDtcbiAgICAgICAgYWxwaGEgPSBNYXRoLnJvdW5kKGFscGhhICogMjU1KTtcbiAgICAgICAgY29uc3QgaGV4QWxwaGEgPSAoYWxwaGEgKyAweDEwMDAwKS50b1N0cmluZygxNikuc3Vic3RyKC0yKS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICByZXR1cm4gJyMnICsgaGV4ICsgKGFscGhhID09IDI1NSA/ICcnIDogaGV4QWxwaGEpO1xuICAgIH07XG5cbiAgICBzdGF0aWMgaWxsdW1pbmFuY2UoaGV4Q29sb3I6IHN0cmluZykge1xuICAgICAgICBjb25zdCByZ2JDb2xvciA9IEFYQ29sb3JVdGlsLmhleDJSZ2IoaGV4Q29sb3IpO1xuICAgICAgICBpZiAoIXJnYkNvbG9yKSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgciA9IHJnYkNvbG9yLnI7XG4gICAgICAgIGNvbnN0IGcgPSByZ2JDb2xvci5nO1xuICAgICAgICBjb25zdCBiID0gcmdiQ29sb3IuYjtcbiAgICAgICAgY29uc3QgYSA9IFtyLCBnLCBiXS5tYXAodiA9PiB7XG4gICAgICAgICAgICB2IC89IDI1NTtcbiAgICAgICAgICAgIHJldHVybiAodiA8PSAwLjAzOTI4KSA/XG4gICAgICAgICAgICAgICAgdiAvIDEyLjkyIDpcbiAgICAgICAgICAgICAgICBNYXRoLnBvdygoKHYgKyAwLjA1NSkgLyAxLjA1NSksIDIuNCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYVswXSAqIDAuMjEyNiArIGFbMV0gKiAwLjcxNTIgKyBhWzJdICogMC4wNzIyO1xuICAgIH1cblxuICAgIHN0YXRpYyBjb250cmFzdFRvV2hpdGUoaGV4Q29sb3I6IHN0cmluZykge1xuICAgICAgICBjb25zdCB3aGl0ZUlsbHVtaW5hbmNlID0gMTtcbiAgICAgICAgY29uc3QgaWxsdW1pbmFuY2UgPSBBWENvbG9yVXRpbC5pbGx1bWluYW5jZShoZXhDb2xvcik7XG4gICAgICAgIHJldHVybiB3aGl0ZUlsbHVtaW5hbmNlIC8gaWxsdW1pbmFuY2U7XG4gICAgfVxuXG59XG4iXX0=
|