ngx-mask 14.2.4 → 15.0.0

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
@@ -23,8 +23,64 @@ You can also try our [NGX COPYPASTE](https://www.npmjs.com/package/ngx-copypaste
23
23
  $ npm install --save ngx-mask
24
24
  ```
25
25
 
26
- ## Quickstart
26
+ ## Quickstart if ngx-mask version >= 15.0.0
27
27
 
28
+ Import **ngx-mask** directive, pipe and provide NgxMask providers with `provideNgxMask` function.
29
+
30
+ ### With default mask config options
31
+
32
+ ```typescript
33
+ import { NgxMaskDirective, NgxMaskPipe, provideNgxMask, IConfig } from 'ngx-mask'
34
+
35
+ export const options: Partial<null|IConfig> | (() => Partial<IConfig>) = null;
36
+
37
+ @NgModule({
38
+ imports: [
39
+ NgxMaskDirective, NgxMaskPipe
40
+ ],
41
+ providers: [provideNgxMask()]
42
+ })
43
+ ```
44
+
45
+ ### Passing in your own mask config options
46
+
47
+ ```typescript
48
+ import { NgxMaskModule, IConfig } from 'ngx-mask'
49
+
50
+ const maskConfig: Partial<IConfig> = {
51
+ validation: false,
52
+ };
53
+
54
+ @NgModule({
55
+ imports: [
56
+ NgxMaskDirective, NgxMaskPipe
57
+ ],
58
+ providers: [provideNgxMask(maskConfig)]
59
+ })
60
+ ```
61
+
62
+ Or using a function to get the config:
63
+
64
+ ```typescript
65
+ const maskConfigFunction: () => Partial<IConfig> = () => {
66
+ return {
67
+ validation: false,
68
+ };
69
+ };
70
+
71
+ @NgModule({
72
+ imports: [
73
+ NgxMaskDirective, NgxMaskPipe
74
+ ],
75
+ providers: [provideNgxMask(maskConfigFunction)]
76
+ })
77
+ ```
78
+
79
+ Then, just define masks in inputs.
80
+
81
+ ## Quickstart if ngx-mask version < 15.0.0
82
+
83
+ For version ngx-mask < 15.0.0
28
84
  Import **ngx-mask** module in Angular app.
29
85
 
30
86
  ### With default mask config options
@@ -75,7 +131,7 @@ const maskConfigFunction: () => Partial<IConfig> = () => {
75
131
 
76
132
  Then, just define masks in inputs.
77
133
 
78
- ### Usage
134
+ ## Usage
79
135
 
80
136
  ```html
81
137
  <input type="text" mask="<here goes your mask>" />
@@ -89,21 +145,17 @@ or
89
145
 
90
146
  Also, you can use mask pipe.
91
147
 
92
- ### Usage
93
-
94
148
  ```html
95
149
  <span>{{phone | mask: '(000) 000-0000'}}</span>
96
150
  ```
97
151
 
98
152
  For separator you can add thousandSeparator
99
153
 
100
- ### Usage
101
-
102
154
  ```html
103
155
  <span>{{value | mask: 'separator':','}}</span>
104
156
  ```
105
157
 
106
- #### Examples
158
+ ### Examples
107
159
 
108
160
  | mask | example |
109
161
  | -------------- | -------------- |
package/esm2020/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
- export * from './lib/ngx-mask.module';
2
- export * from './lib/mask.directive';
3
- export * from './lib/mask.pipe';
4
- export * from './lib/mask.service';
5
- export * from './lib/mask-applier.service';
1
+ export * from './lib/ngx-mask.providers';
2
+ export * from './lib/ngx-mask.directive';
3
+ export * from './lib/ngx-mask.pipe';
4
+ export * from './lib/ngx-mask.service';
5
+ export * from './lib/ngx-mask-applier.service';
6
6
  export * from './lib/config';
7
7
  export * from './lib/custom-keyboard-event';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWFzay1saWIvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvbmd4LW1hc2subW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21hc2suZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21hc2sucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tYXNrLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWFzay1hcHBsaWVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2N1c3RvbS1rZXlib2FyZC1ldmVudCc7XG4iXX0=
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWFzay1saWIvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvbmd4LW1hc2sucHJvdmlkZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL25neC1tYXNrLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZ3gtbWFzay5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL25neC1tYXNrLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbmd4LW1hc2stYXBwbGllci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jdXN0b20ta2V5Ym9hcmQtZXZlbnQnO1xuIl19
@@ -1,5 +1,5 @@
1
1
  import { InjectionToken, EventEmitter } from '@angular/core';
2
- export const config = new InjectionToken('ngx-mask config');
2
+ export const CONFIG = new InjectionToken('ngx-mask config');
3
3
  export const NEW_CONFIG = new InjectionToken('new ngx-mask config');
4
4
  export const INITIAL_CONFIG = new InjectionToken('initial ngx-mask config');
5
5
  export const initialConfig = {
@@ -78,4 +78,4 @@ export const withoutValidation = [
78
78
  'd0',
79
79
  'M0',
80
80
  ];
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hc2stbGliL3NyYy9saWIvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBK0I3RCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQTRCLElBQUksY0FBYyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDckYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUE0QixJQUFJLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQzdGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBNEIsSUFBSSxjQUFjLENBQ3JFLHlCQUF5QixDQUM1QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFZO0lBQ2xDLE1BQU0sRUFBRSxFQUFFO0lBQ1YsTUFBTSxFQUFFLEVBQUU7SUFDVixpQkFBaUIsRUFBRSxHQUFHO0lBQ3RCLGFBQWEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDekIsZUFBZSxFQUFFLEtBQUs7SUFDdEIsWUFBWSxFQUFFLEtBQUs7SUFDbkIsYUFBYSxFQUFFLEtBQUs7SUFDcEIsb0JBQW9CLEVBQUUsR0FBRztJQUN6QixxQkFBcUIsRUFBRSxJQUFJO0lBQzNCLFdBQVcsRUFBRSxTQUFTO0lBQ3RCLG1CQUFtQixFQUFFLEVBQUU7SUFDdkIsY0FBYyxFQUFFLEVBQUU7SUFDbEIsb0JBQW9CLEVBQUUsS0FBSztJQUMzQixVQUFVLEVBQUUsSUFBSTtJQUNoQixxREFBcUQ7SUFDckQsaUJBQWlCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ3pGLGdCQUFnQixFQUFFLEtBQUs7SUFDdkIsbUJBQW1CLEVBQUUsS0FBSztJQUMxQixVQUFVLEVBQUUsSUFBSSxZQUFZLEVBQVE7SUFDcEMsUUFBUSxFQUFFO1FBQ04sR0FBRyxFQUFFO1lBQ0QsT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQztTQUM3QjtRQUNELEdBQUcsRUFBRTtZQUNELE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDMUIsUUFBUSxFQUFFLElBQUk7U0FDakI7UUFDRCxDQUFDLEVBQUU7WUFDQyxPQUFPLEVBQUUsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDO1lBQzFCLE1BQU0sRUFBRSxHQUFHO1NBQ2Q7UUFDRCxDQUFDLEVBQUU7WUFDQyxPQUFPLEVBQUUsSUFBSSxNQUFNLENBQUMsYUFBYSxDQUFDO1NBQ3JDO1FBQ0QsQ0FBQyxFQUFFO1lBQ0MsT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQztTQUNsQztRQUNELENBQUMsRUFBRTtZQUNDLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUM7U0FDL0I7UUFDRCxDQUFDLEVBQUU7WUFDQyxPQUFPLEVBQUUsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDO1NBQy9CO1FBQ0QsQ0FBQyxFQUFFO1lBQ0MsT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQztTQUM3QjtRQUNELENBQUMsRUFBRTtZQUNDLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDN0I7UUFDRCxDQUFDLEVBQUU7WUFDQyxPQUFPLEVBQUUsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDO1NBQzdCO1FBQ0QsQ0FBQyxFQUFFO1lBQ0MsT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQztTQUM3QjtRQUNELENBQUMsRUFBRTtZQUNDLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDN0I7UUFDRCxDQUFDLEVBQUU7WUFDQyxPQUFPLEVBQUUsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDO1NBQzdCO0tBQ0o7Q0FDSixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFhLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUVsRSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBYTtJQUN2QyxTQUFTO0lBQ1QsSUFBSTtJQUNKLElBQUk7SUFDSixJQUFJO0lBQ0osV0FBVztJQUNYLFlBQVk7SUFDWixPQUFPO0lBQ1AsSUFBSTtJQUNKLElBQUk7Q0FDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElDb25maWcge1xuICAgIHN1ZmZpeDogc3RyaW5nO1xuICAgIHByZWZpeDogc3RyaW5nO1xuICAgIHRob3VzYW5kU2VwYXJhdG9yOiBzdHJpbmc7XG4gICAgZGVjaW1hbE1hcmtlcjogJy4nIHwgJywnIHwgWycuJywgJywnXTtcbiAgICBjbGVhcklmTm90TWF0Y2g6IGJvb2xlYW47XG4gICAgc2hvd1RlbXBsYXRlOiBib29sZWFuO1xuICAgIHNob3dNYXNrVHlwZWQ6IGJvb2xlYW47XG4gICAgcGxhY2VIb2xkZXJDaGFyYWN0ZXI6IHN0cmluZztcbiAgICBzaG93bk1hc2tFeHByZXNzaW9uOiBzdHJpbmc7XG4gICAgZHJvcFNwZWNpYWxDaGFyYWN0ZXJzOiBib29sZWFuIHwgc3RyaW5nW107XG4gICAgc3BlY2lhbENoYXJhY3RlcnM6IHN0cmluZ1tdO1xuICAgIGhpZGRlbklucHV0OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIHZhbGlkYXRpb246IGJvb2xlYW47XG4gICAgc2VwYXJhdG9yTGltaXQ6IHN0cmluZztcbiAgICBhbGxvd05lZ2F0aXZlTnVtYmVyczogYm9vbGVhbjtcbiAgICBsZWFkWmVyb0RhdGVUaW1lOiBib29sZWFuO1xuICAgIHRyaWdnZXJPbk1hc2tDaGFuZ2U6IGJvb2xlYW47XG4gICAgbWFza0ZpbGxlZDogRXZlbnRFbWl0dGVyPHZvaWQ+O1xuICAgIHBhdHRlcm5zOiB7XG4gICAgICAgIFtjaGFyYWN0ZXI6IHN0cmluZ106IHtcbiAgICAgICAgICAgIHBhdHRlcm46IFJlZ0V4cDtcbiAgICAgICAgICAgIG9wdGlvbmFsPzogYm9vbGVhbjtcbiAgICAgICAgICAgIHN5bWJvbD86IHN0cmluZztcbiAgICAgICAgfTtcbiAgICB9O1xufVxuXG5leHBvcnQgdHlwZSBvcHRpb25zQ29uZmlnID0gUGFydGlhbDxJQ29uZmlnPjtcbmV4cG9ydCBjb25zdCBjb25maWc6IEluamVjdGlvblRva2VuPElDb25maWc+ID0gbmV3IEluamVjdGlvblRva2VuKCduZ3gtbWFzayBjb25maWcnKTtcbmV4cG9ydCBjb25zdCBORVdfQ09ORklHOiBJbmplY3Rpb25Ub2tlbjxJQ29uZmlnPiA9IG5ldyBJbmplY3Rpb25Ub2tlbignbmV3IG5neC1tYXNrIGNvbmZpZycpO1xuZXhwb3J0IGNvbnN0IElOSVRJQUxfQ09ORklHOiBJbmplY3Rpb25Ub2tlbjxJQ29uZmlnPiA9IG5ldyBJbmplY3Rpb25Ub2tlbihcbiAgICAnaW5pdGlhbCBuZ3gtbWFzayBjb25maWcnXG4pO1xuXG5leHBvcnQgY29uc3QgaW5pdGlhbENvbmZpZzogSUNvbmZpZyA9IHtcbiAgICBzdWZmaXg6ICcnLFxuICAgIHByZWZpeDogJycsXG4gICAgdGhvdXNhbmRTZXBhcmF0b3I6ICcgJyxcbiAgICBkZWNpbWFsTWFya2VyOiBbJy4nLCAnLCddLFxuICAgIGNsZWFySWZOb3RNYXRjaDogZmFsc2UsXG4gICAgc2hvd1RlbXBsYXRlOiBmYWxzZSxcbiAgICBzaG93TWFza1R5cGVkOiBmYWxzZSxcbiAgICBwbGFjZUhvbGRlckNoYXJhY3RlcjogJ18nLFxuICAgIGRyb3BTcGVjaWFsQ2hhcmFjdGVyczogdHJ1ZSxcbiAgICBoaWRkZW5JbnB1dDogdW5kZWZpbmVkLFxuICAgIHNob3duTWFza0V4cHJlc3Npb246ICcnLFxuICAgIHNlcGFyYXRvckxpbWl0OiAnJyxcbiAgICBhbGxvd05lZ2F0aXZlTnVtYmVyczogZmFsc2UsXG4gICAgdmFsaWRhdGlvbjogdHJ1ZSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3F1b3Rlc1xuICAgIHNwZWNpYWxDaGFyYWN0ZXJzOiBbJy0nLCAnLycsICcoJywgJyknLCAnLicsICc6JywgJyAnLCAnKycsICcsJywgJ0AnLCAnWycsICddJywgJ1wiJywgXCInXCJdLFxuICAgIGxlYWRaZXJvRGF0ZVRpbWU6IGZhbHNlLFxuICAgIHRyaWdnZXJPbk1hc2tDaGFuZ2U6IGZhbHNlLFxuICAgIG1hc2tGaWxsZWQ6IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKSxcbiAgICBwYXR0ZXJuczoge1xuICAgICAgICAnMCc6IHtcbiAgICAgICAgICAgIHBhdHRlcm46IG5ldyBSZWdFeHAoJ1xcXFxkJyksXG4gICAgICAgIH0sXG4gICAgICAgICc5Jzoge1xuICAgICAgICAgICAgcGF0dGVybjogbmV3IFJlZ0V4cCgnXFxcXGQnKSxcbiAgICAgICAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBYOiB7XG4gICAgICAgICAgICBwYXR0ZXJuOiBuZXcgUmVnRXhwKCdcXFxcZCcpLFxuICAgICAgICAgICAgc3ltYm9sOiAnKicsXG4gICAgICAgIH0sXG4gICAgICAgIEE6IHtcbiAgICAgICAgICAgIHBhdHRlcm46IG5ldyBSZWdFeHAoJ1thLXpBLVowLTldJyksXG4gICAgICAgIH0sXG4gICAgICAgIFM6IHtcbiAgICAgICAgICAgIHBhdHRlcm46IG5ldyBSZWdFeHAoJ1thLXpBLVpdJyksXG4gICAgICAgIH0sXG4gICAgICAgIFU6IHtcbiAgICAgICAgICAgIHBhdHRlcm46IG5ldyBSZWdFeHAoJ1tBLVpdJyksXG4gICAgICAgIH0sXG4gICAgICAgIEw6IHtcbiAgICAgICAgICAgIHBhdHRlcm46IG5ldyBSZWdFeHAoJ1thLXpdJyksXG4gICAgICAgIH0sXG4gICAgICAgIGQ6IHtcbiAgICAgICAgICAgIHBhdHRlcm46IG5ldyBSZWdFeHAoJ1xcXFxkJyksXG4gICAgICAgIH0sXG4gICAgICAgIG06IHtcbiAgICAgICAgICAgIHBhdHRlcm46IG5ldyBSZWdFeHAoJ1xcXFxkJyksXG4gICAgICAgIH0sXG4gICAgICAgIE06IHtcbiAgICAgICAgICAgIHBhdHRlcm46IG5ldyBSZWdFeHAoJ1xcXFxkJyksXG4gICAgICAgIH0sXG4gICAgICAgIEg6IHtcbiAgICAgICAgICAgIHBhdHRlcm46IG5ldyBSZWdFeHAoJ1xcXFxkJyksXG4gICAgICAgIH0sXG4gICAgICAgIGg6IHtcbiAgICAgICAgICAgIHBhdHRlcm46IG5ldyBSZWdFeHAoJ1xcXFxkJyksXG4gICAgICAgIH0sXG4gICAgICAgIHM6IHtcbiAgICAgICAgICAgIHBhdHRlcm46IG5ldyBSZWdFeHAoJ1xcXFxkJyksXG4gICAgICAgIH0sXG4gICAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCB0aW1lTWFza3M6IHN0cmluZ1tdID0gWydIaDptMDpzMCcsICdIaDptMCcsICdtMDpzMCddO1xuXG5leHBvcnQgY29uc3Qgd2l0aG91dFZhbGlkYXRpb246IHN0cmluZ1tdID0gW1xuICAgICdwZXJjZW50JyxcbiAgICAnSGgnLFxuICAgICdzMCcsXG4gICAgJ20wJyxcbiAgICAnc2VwYXJhdG9yJyxcbiAgICAnZDAvTTAvMDAwMCcsXG4gICAgJ2QwL00wJyxcbiAgICAnZDAnLFxuICAgICdNMCcsXG5dO1xuIl19
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hc2stbGliL3NyYy9saWIvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBK0I3RCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQTRCLElBQUksY0FBYyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDckYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUE0QixJQUFJLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQzdGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBNEIsSUFBSSxjQUFjLENBQ3JFLHlCQUF5QixDQUM1QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFZO0lBQ2xDLE1BQU0sRUFBRSxFQUFFO0lBQ1YsTUFBTSxFQUFFLEVBQUU7SUFDVixpQkFBaUIsRUFBRSxHQUFHO0lBQ3RCLGFBQWEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDekIsZUFBZSxFQUFFLEtBQUs7SUFDdEIsWUFBWSxFQUFFLEtBQUs7SUFDbkIsYUFBYSxFQUFFLEtBQUs7SUFDcEIsb0JBQW9CLEVBQUUsR0FBRztJQUN6QixxQkFBcUIsRUFBRSxJQUFJO0lBQzNCLFdBQVcsRUFBRSxTQUFTO0lBQ3RCLG1CQUFtQixFQUFFLEVBQUU7SUFDdkIsY0FBYyxFQUFFLEVBQUU7SUFDbEIsb0JBQW9CLEVBQUUsS0FBSztJQUMzQixVQUFVLEVBQUUsSUFBSTtJQUNoQixxREFBcUQ7SUFDckQsaUJBQWlCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ3pGLGdCQUFnQixFQUFFLEtBQUs7SUFDdkIsbUJBQW1CLEVBQUUsS0FBSztJQUMxQixVQUFVLEVBQUUsSUFBSSxZQUFZLEVBQVE7SUFDcEMsUUFBUSxFQUFFO1FBQ04sR0FBRyxFQUFFO1lBQ0QsT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQztTQUM3QjtRQUNELEdBQUcsRUFBRTtZQUNELE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDMUIsUUFBUSxFQUFFLElBQUk7U0FDakI7UUFDRCxDQUFDLEVBQUU7WUFDQyxPQUFPLEVBQUUsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDO1lBQzFCLE1BQU0sRUFBRSxHQUFHO1NBQ2Q7UUFDRCxDQUFDLEVBQUU7WUFDQyxPQUFPLEVBQUUsSUFBSSxNQUFNLENBQUMsYUFBYSxDQUFDO1NBQ3JDO1FBQ0QsQ0FBQyxFQUFFO1lBQ0MsT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQztTQUNsQztRQUNELENBQUMsRUFBRTtZQUNDLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUM7U0FDL0I7UUFDRCxDQUFDLEVBQUU7WUFDQyxPQUFPLEVBQUUsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDO1NBQy9CO1FBQ0QsQ0FBQyxFQUFFO1lBQ0MsT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQztTQUM3QjtRQUNELENBQUMsRUFBRTtZQUNDLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDN0I7UUFDRCxDQUFDLEVBQUU7WUFDQyxPQUFPLEVBQUUsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDO1NBQzdCO1FBQ0QsQ0FBQyxFQUFFO1lBQ0MsT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQztTQUM3QjtRQUNELENBQUMsRUFBRTtZQUNDLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDN0I7UUFDRCxDQUFDLEVBQUU7WUFDQyxPQUFPLEVBQUUsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDO1NBQzdCO0tBQ0o7Q0FDSixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFhLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUVsRSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBYTtJQUN2QyxTQUFTO0lBQ1QsSUFBSTtJQUNKLElBQUk7SUFDSixJQUFJO0lBQ0osV0FBVztJQUNYLFlBQVk7SUFDWixPQUFPO0lBQ1AsSUFBSTtJQUNKLElBQUk7Q0FDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElDb25maWcge1xuICAgIHN1ZmZpeDogc3RyaW5nO1xuICAgIHByZWZpeDogc3RyaW5nO1xuICAgIHRob3VzYW5kU2VwYXJhdG9yOiBzdHJpbmc7XG4gICAgZGVjaW1hbE1hcmtlcjogJy4nIHwgJywnIHwgWycuJywgJywnXTtcbiAgICBjbGVhcklmTm90TWF0Y2g6IGJvb2xlYW47XG4gICAgc2hvd1RlbXBsYXRlOiBib29sZWFuO1xuICAgIHNob3dNYXNrVHlwZWQ6IGJvb2xlYW47XG4gICAgcGxhY2VIb2xkZXJDaGFyYWN0ZXI6IHN0cmluZztcbiAgICBzaG93bk1hc2tFeHByZXNzaW9uOiBzdHJpbmc7XG4gICAgZHJvcFNwZWNpYWxDaGFyYWN0ZXJzOiBib29sZWFuIHwgc3RyaW5nW107XG4gICAgc3BlY2lhbENoYXJhY3RlcnM6IHN0cmluZ1tdO1xuICAgIGhpZGRlbklucHV0OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIHZhbGlkYXRpb246IGJvb2xlYW47XG4gICAgc2VwYXJhdG9yTGltaXQ6IHN0cmluZztcbiAgICBhbGxvd05lZ2F0aXZlTnVtYmVyczogYm9vbGVhbjtcbiAgICBsZWFkWmVyb0RhdGVUaW1lOiBib29sZWFuO1xuICAgIHRyaWdnZXJPbk1hc2tDaGFuZ2U6IGJvb2xlYW47XG4gICAgbWFza0ZpbGxlZDogRXZlbnRFbWl0dGVyPHZvaWQ+O1xuICAgIHBhdHRlcm5zOiB7XG4gICAgICAgIFtjaGFyYWN0ZXI6IHN0cmluZ106IHtcbiAgICAgICAgICAgIHBhdHRlcm46IFJlZ0V4cDtcbiAgICAgICAgICAgIG9wdGlvbmFsPzogYm9vbGVhbjtcbiAgICAgICAgICAgIHN5bWJvbD86IHN0cmluZztcbiAgICAgICAgfTtcbiAgICB9O1xufVxuXG5leHBvcnQgdHlwZSBvcHRpb25zQ29uZmlnID0gUGFydGlhbDxJQ29uZmlnPjtcbmV4cG9ydCBjb25zdCBDT05GSUc6IEluamVjdGlvblRva2VuPElDb25maWc+ID0gbmV3IEluamVjdGlvblRva2VuKCduZ3gtbWFzayBjb25maWcnKTtcbmV4cG9ydCBjb25zdCBORVdfQ09ORklHOiBJbmplY3Rpb25Ub2tlbjxJQ29uZmlnPiA9IG5ldyBJbmplY3Rpb25Ub2tlbignbmV3IG5neC1tYXNrIGNvbmZpZycpO1xuZXhwb3J0IGNvbnN0IElOSVRJQUxfQ09ORklHOiBJbmplY3Rpb25Ub2tlbjxJQ29uZmlnPiA9IG5ldyBJbmplY3Rpb25Ub2tlbihcbiAgICAnaW5pdGlhbCBuZ3gtbWFzayBjb25maWcnXG4pO1xuXG5leHBvcnQgY29uc3QgaW5pdGlhbENvbmZpZzogSUNvbmZpZyA9IHtcbiAgICBzdWZmaXg6ICcnLFxuICAgIHByZWZpeDogJycsXG4gICAgdGhvdXNhbmRTZXBhcmF0b3I6ICcgJyxcbiAgICBkZWNpbWFsTWFya2VyOiBbJy4nLCAnLCddLFxuICAgIGNsZWFySWZOb3RNYXRjaDogZmFsc2UsXG4gICAgc2hvd1RlbXBsYXRlOiBmYWxzZSxcbiAgICBzaG93TWFza1R5cGVkOiBmYWxzZSxcbiAgICBwbGFjZUhvbGRlckNoYXJhY3RlcjogJ18nLFxuICAgIGRyb3BTcGVjaWFsQ2hhcmFjdGVyczogdHJ1ZSxcbiAgICBoaWRkZW5JbnB1dDogdW5kZWZpbmVkLFxuICAgIHNob3duTWFza0V4cHJlc3Npb246ICcnLFxuICAgIHNlcGFyYXRvckxpbWl0OiAnJyxcbiAgICBhbGxvd05lZ2F0aXZlTnVtYmVyczogZmFsc2UsXG4gICAgdmFsaWRhdGlvbjogdHJ1ZSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3F1b3Rlc1xuICAgIHNwZWNpYWxDaGFyYWN0ZXJzOiBbJy0nLCAnLycsICcoJywgJyknLCAnLicsICc6JywgJyAnLCAnKycsICcsJywgJ0AnLCAnWycsICddJywgJ1wiJywgXCInXCJdLFxuICAgIGxlYWRaZXJvRGF0ZVRpbWU6IGZhbHNlLFxuICAgIHRyaWdnZXJPbk1hc2tDaGFuZ2U6IGZhbHNlLFxuICAgIG1hc2tGaWxsZWQ6IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKSxcbiAgICBwYXR0ZXJuczoge1xuICAgICAgICAnMCc6IHtcbiAgICAgICAgICAgIHBhdHRlcm46IG5ldyBSZWdFeHAoJ1xcXFxkJyksXG4gICAgICAgIH0sXG4gICAgICAgICc5Jzoge1xuICAgICAgICAgICAgcGF0dGVybjogbmV3IFJlZ0V4cCgnXFxcXGQnKSxcbiAgICAgICAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBYOiB7XG4gICAgICAgICAgICBwYXR0ZXJuOiBuZXcgUmVnRXhwKCdcXFxcZCcpLFxuICAgICAgICAgICAgc3ltYm9sOiAnKicsXG4gICAgICAgIH0sXG4gICAgICAgIEE6IHtcbiAgICAgICAgICAgIHBhdHRlcm46IG5ldyBSZWdFeHAoJ1thLXpBLVowLTldJyksXG4gICAgICAgIH0sXG4gICAgICAgIFM6IHtcbiAgICAgICAgICAgIHBhdHRlcm46IG5ldyBSZWdFeHAoJ1thLXpBLVpdJyksXG4gICAgICAgIH0sXG4gICAgICAgIFU6IHtcbiAgICAgICAgICAgIHBhdHRlcm46IG5ldyBSZWdFeHAoJ1tBLVpdJyksXG4gICAgICAgIH0sXG4gICAgICAgIEw6IHtcbiAgICAgICAgICAgIHBhdHRlcm46IG5ldyBSZWdFeHAoJ1thLXpdJyksXG4gICAgICAgIH0sXG4gICAgICAgIGQ6IHtcbiAgICAgICAgICAgIHBhdHRlcm46IG5ldyBSZWdFeHAoJ1xcXFxkJyksXG4gICAgICAgIH0sXG4gICAgICAgIG06IHtcbiAgICAgICAgICAgIHBhdHRlcm46IG5ldyBSZWdFeHAoJ1xcXFxkJyksXG4gICAgICAgIH0sXG4gICAgICAgIE06IHtcbiAgICAgICAgICAgIHBhdHRlcm46IG5ldyBSZWdFeHAoJ1xcXFxkJyksXG4gICAgICAgIH0sXG4gICAgICAgIEg6IHtcbiAgICAgICAgICAgIHBhdHRlcm46IG5ldyBSZWdFeHAoJ1xcXFxkJyksXG4gICAgICAgIH0sXG4gICAgICAgIGg6IHtcbiAgICAgICAgICAgIHBhdHRlcm46IG5ldyBSZWdFeHAoJ1xcXFxkJyksXG4gICAgICAgIH0sXG4gICAgICAgIHM6IHtcbiAgICAgICAgICAgIHBhdHRlcm46IG5ldyBSZWdFeHAoJ1xcXFxkJyksXG4gICAgICAgIH0sXG4gICAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCB0aW1lTWFza3M6IHN0cmluZ1tdID0gWydIaDptMDpzMCcsICdIaDptMCcsICdtMDpzMCddO1xuXG5leHBvcnQgY29uc3Qgd2l0aG91dFZhbGlkYXRpb246IHN0cmluZ1tdID0gW1xuICAgICdwZXJjZW50JyxcbiAgICAnSGgnLFxuICAgICdzMCcsXG4gICAgJ20wJyxcbiAgICAnc2VwYXJhdG9yJyxcbiAgICAnZDAvTTAvMDAwMCcsXG4gICAgJ2QwL00wJyxcbiAgICAnZDAnLFxuICAgICdNMCcsXG5dO1xuIl19