barsa-novin-ray-core 2.0.135 → 2.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/fesm2022/barsa-novin-ray-core.mjs +818 -694
  2. package/fesm2022/barsa-novin-ray-core.mjs.map +1 -1
  3. package/lib/abstract-classes/form-base.d.ts +1 -0
  4. package/lib/abstract-classes/report-view-base.component.d.ts +2 -2
  5. package/lib/barsa-novin-ray-core.module.d.ts +5 -6
  6. package/lib/dynamic-component/base-view-props.d.ts +2 -2
  7. package/package.json +3 -5
  8. package/esm2022/barsa-novin-ray-core.mjs +0 -5
  9. package/esm2022/lib/abstract-classes/application-base.mjs +0 -24
  10. package/esm2022/lib/abstract-classes/barsa-api.mjs +0 -43
  11. package/esm2022/lib/abstract-classes/base-column-props.mjs +0 -84
  12. package/esm2022/lib/abstract-classes/base.component.mjs +0 -59
  13. package/esm2022/lib/abstract-classes/field-base.mjs +0 -232
  14. package/esm2022/lib/abstract-classes/files-validation-helper.mjs +0 -75
  15. package/esm2022/lib/abstract-classes/form-base.mjs +0 -156
  16. package/esm2022/lib/abstract-classes/form-field-report-page.component.mjs +0 -54
  17. package/esm2022/lib/abstract-classes/form-page-base.mjs +0 -129
  18. package/esm2022/lib/abstract-classes/form-page.component.mjs +0 -53
  19. package/esm2022/lib/abstract-classes/form-props.base.mjs +0 -97
  20. package/esm2022/lib/abstract-classes/form-toolbar-base.mjs +0 -56
  21. package/esm2022/lib/abstract-classes/index.mjs +0 -25
  22. package/esm2022/lib/abstract-classes/layout-item-base.mjs +0 -48
  23. package/esm2022/lib/abstract-classes/layout-panel-base.mjs +0 -63
  24. package/esm2022/lib/abstract-classes/linear-list-helper.mjs +0 -135
  25. package/esm2022/lib/abstract-classes/models.mjs +0 -184
  26. package/esm2022/lib/abstract-classes/module-with-dynamic-components.mjs +0 -2
  27. package/esm2022/lib/abstract-classes/number-base.mjs +0 -200
  28. package/esm2022/lib/abstract-classes/page-base.mjs +0 -97
  29. package/esm2022/lib/abstract-classes/page-with-form-handler-base.mjs +0 -40
  30. package/esm2022/lib/abstract-classes/report-base.mjs +0 -254
  31. package/esm2022/lib/abstract-classes/report-item-base.mjs +0 -53
  32. package/esm2022/lib/abstract-classes/report-view-base.component.mjs +0 -428
  33. package/esm2022/lib/abstract-classes/system-base.mjs +0 -24
  34. package/esm2022/lib/abstract-classes/tile-props.mjs +0 -46
  35. package/esm2022/lib/auth-guard.mjs +0 -48
  36. package/esm2022/lib/barsa-novin-ray-core-routing.module.mjs +0 -292
  37. package/esm2022/lib/barsa-novin-ray-core.module.mjs +0 -489
  38. package/esm2022/lib/base-ulv-setting.component.mjs +0 -45
  39. package/esm2022/lib/base.module.mjs +0 -28
  40. package/esm2022/lib/button-loading/button-loading.component.mjs +0 -18
  41. package/esm2022/lib/constants.mjs +0 -898
  42. package/esm2022/lib/container.component.mjs +0 -99
  43. package/esm2022/lib/controllers/base-controller.mjs +0 -30
  44. package/esm2022/lib/controllers/index.mjs +0 -5
  45. package/esm2022/lib/controllers/login-controller.mjs +0 -54
  46. package/esm2022/lib/controllers/login-verification-controller.mjs +0 -56
  47. package/esm2022/lib/controllers/models.mjs +0 -2
  48. package/esm2022/lib/custom-route-reuse-strategy.mjs +0 -32
  49. package/esm2022/lib/date-services/date-hijri.service.mjs +0 -146
  50. package/esm2022/lib/date-services/date-info.mjs +0 -2
  51. package/esm2022/lib/date-services/date-miladi.service.mjs +0 -124
  52. package/esm2022/lib/date-services/date-shamsi.service.mjs +0 -148
  53. package/esm2022/lib/date-services/date.service.mjs +0 -149
  54. package/esm2022/lib/date-services/index.mjs +0 -6
  55. package/esm2022/lib/device.mjs +0 -663
  56. package/esm2022/lib/directives/absolute-div-body.directive.mjs +0 -45
  57. package/esm2022/lib/directives/anchor-scroll.directive.mjs +0 -24
  58. package/esm2022/lib/directives/attr-rtl.directive.mjs +0 -35
  59. package/esm2022/lib/directives/base.directive.mjs +0 -55
  60. package/esm2022/lib/directives/body-click.directive.mjs +0 -35
  61. package/esm2022/lib/directives/column-resizer.directive.mjs +0 -39
  62. package/esm2022/lib/directives/copy.directive.mjs +0 -59
  63. package/esm2022/lib/directives/count-down.directive.mjs +0 -108
  64. package/esm2022/lib/directives/dynamic-command.directive.mjs +0 -42
  65. package/esm2022/lib/directives/dynamic-style.directive.mjs +0 -57
  66. package/esm2022/lib/directives/ellapsis-text.directive.mjs +0 -69
  67. package/esm2022/lib/directives/ellipsify.directive.mjs +0 -72
  68. package/esm2022/lib/directives/field-binding.directive.mjs +0 -17
  69. package/esm2022/lib/directives/fill-empty-space.mjs +0 -83
  70. package/esm2022/lib/directives/form-close.directive.mjs +0 -32
  71. package/esm2022/lib/directives/img-lazy.directive.mjs +0 -81
  72. package/esm2022/lib/directives/index.mjs +0 -35
  73. package/esm2022/lib/directives/intersection-observer.directive.mjs +0 -51
  74. package/esm2022/lib/directives/items-renderer.directive.mjs +0 -59
  75. package/esm2022/lib/directives/label-mandatory.directive.mjs +0 -48
  76. package/esm2022/lib/directives/load-external-files.directive.mjs +0 -37
  77. package/esm2022/lib/directives/mobile.directive.mjs +0 -29
  78. package/esm2022/lib/directives/nowraptext.directive.mjs +0 -26
  79. package/esm2022/lib/directives/numbers-only-input.directive.mjs +0 -26
  80. package/esm2022/lib/directives/placeHolder.directive.mjs +0 -15
  81. package/esm2022/lib/directives/prevent-default.directive.mjs +0 -20
  82. package/esm2022/lib/directives/render-ulv-paging.directive.mjs +0 -80
  83. package/esm2022/lib/directives/render-ulv-viewer.directive.mjs +0 -75
  84. package/esm2022/lib/directives/route-form-change.directive.mjs +0 -37
  85. package/esm2022/lib/directives/stop-propagation.directive.mjs +0 -20
  86. package/esm2022/lib/directives/table-resizer.directive.mjs +0 -235
  87. package/esm2022/lib/directives/ulv-command.directive.mjs +0 -42
  88. package/esm2022/lib/directives/until-inview.directive.mjs +0 -52
  89. package/esm2022/lib/directives/workflow-choice-command.directive.mjs +0 -60
  90. package/esm2022/lib/dynamic-component/base-dynamic.component.mjs +0 -96
  91. package/esm2022/lib/dynamic-component/base-form-toolbaritem-props.mjs +0 -52
  92. package/esm2022/lib/dynamic-component/base-item-content-props.mjs +0 -80
  93. package/esm2022/lib/dynamic-component/base-view-content-props.mjs +0 -20
  94. package/esm2022/lib/dynamic-component/base-view-item-props.mjs +0 -525
  95. package/esm2022/lib/dynamic-component/base-view-props.mjs +0 -162
  96. package/esm2022/lib/dynamic-component/dynamic-form-toolbar-item.component.mjs +0 -38
  97. package/esm2022/lib/dynamic-component/dynamic-form.component.mjs +0 -66
  98. package/esm2022/lib/dynamic-component/dynamic-item.component.mjs +0 -76
  99. package/esm2022/lib/dynamic-component/dynamic-layout.component.mjs +0 -63
  100. package/esm2022/lib/dynamic-component/index.mjs +0 -11
  101. package/esm2022/lib/empty-page/empty-page.component.mjs +0 -44
  102. package/esm2022/lib/empty-page-with-router-and-router-outlet/empty-page-with-router-and-router-outlet.component.mjs +0 -16
  103. package/esm2022/lib/field-ui/field-ui.component.mjs +0 -146
  104. package/esm2022/lib/form/form.component.mjs +0 -211
  105. package/esm2022/lib/form-new/form-new.component.mjs +0 -30
  106. package/esm2022/lib/form-page-routing/barsa-sap-ui-form-page-routing.module.mjs +0 -54
  107. package/esm2022/lib/form-page-routing/barsa-sap-ui-form-page.module.mjs +0 -29
  108. package/esm2022/lib/form-page-routing/constants.mjs +0 -9
  109. package/esm2022/lib/form-page-routing/index.mjs +0 -3
  110. package/esm2022/lib/from-intersection-observer.mjs +0 -53
  111. package/esm2022/lib/global-error-handler.mjs +0 -26
  112. package/esm2022/lib/injdection-tokens.mjs +0 -8
  113. package/esm2022/lib/login-enter-mobile/login-enter-mobile.component.mjs +0 -64
  114. package/esm2022/lib/login-verification/login-verification.component.mjs +0 -79
  115. package/esm2022/lib/login2/login2.component.mjs +0 -60
  116. package/esm2022/lib/modal-root.component.mjs +0 -33
  117. package/esm2022/lib/not-found/not-found.component.mjs +0 -16
  118. package/esm2022/lib/not-internet/not-internet.component.mjs +0 -21
  119. package/esm2022/lib/pipes/barsa-icon-dict.pipe.mjs +0 -19
  120. package/esm2022/lib/pipes/bbb-translate.pipe.mjs +0 -35
  121. package/esm2022/lib/pipes/can-upload.pipe.mjs +0 -30
  122. package/esm2022/lib/pipes/column-custom-component.pipe.mjs +0 -40
  123. package/esm2022/lib/pipes/column-customui.pipe.mjs +0 -32
  124. package/esm2022/lib/pipes/column-icon.pipe.mjs +0 -22
  125. package/esm2022/lib/pipes/column-value.pipe.mjs +0 -34
  126. package/esm2022/lib/pipes/combo-row-img.pipe.mjs +0 -16
  127. package/esm2022/lib/pipes/context-menu.pipe.mjs +0 -40
  128. package/esm2022/lib/pipes/control-ui.pipe.mjs +0 -31
  129. package/esm2022/lib/pipes/convert-to-style.pipe.mjs +0 -32
  130. package/esm2022/lib/pipes/date-time-to-caption.pipe.mjs +0 -34
  131. package/esm2022/lib/pipes/fileinfo-count.pipe.mjs +0 -20
  132. package/esm2022/lib/pipes/filter-columns-by-details.pipe.mjs +0 -22
  133. package/esm2022/lib/pipes/filter-string.pipe.mjs +0 -44
  134. package/esm2022/lib/pipes/filter-tab.pipe.mjs +0 -19
  135. package/esm2022/lib/pipes/filter-toolbar-control.pipe.mjs +0 -16
  136. package/esm2022/lib/pipes/filter-workflow-mobile.pipe.mjs +0 -24
  137. package/esm2022/lib/pipes/filter.pipe.mjs +0 -33
  138. package/esm2022/lib/pipes/find-column-by-db-name.pipe.mjs +0 -27
  139. package/esm2022/lib/pipes/find-preview-column.pipe.mjs +0 -19
  140. package/esm2022/lib/pipes/fiori-icon.pipe.mjs +0 -42
  141. package/esm2022/lib/pipes/groupby.pipe.mjs +0 -63
  142. package/esm2022/lib/pipes/header-facet-value.pipe.mjs +0 -22
  143. package/esm2022/lib/pipes/hide-columns-inmobile.pipe.mjs +0 -22
  144. package/esm2022/lib/pipes/index.mjs +0 -48
  145. package/esm2022/lib/pipes/list-count.pipe.mjs +0 -17
  146. package/esm2022/lib/pipes/merge-fields-to-columns.pipe.mjs +0 -42
  147. package/esm2022/lib/pipes/mo-info-ulv-data.pipe.mjs +0 -58
  148. package/esm2022/lib/pipes/mo-info-ulv-paging.pipe.mjs +0 -16
  149. package/esm2022/lib/pipes/mo-report-value-concat.pipe.mjs +0 -35
  150. package/esm2022/lib/pipes/mo-report-value.pipe.mjs +0 -17
  151. package/esm2022/lib/pipes/mo-value.pipe.mjs +0 -18
  152. package/esm2022/lib/pipes/multiple-groupby.pipe.mjs +0 -90
  153. package/esm2022/lib/pipes/numeral.pipe.mjs +0 -43
  154. package/esm2022/lib/pipes/picture-field-source.pipe.mjs +0 -22
  155. package/esm2022/lib/pipes/remove-newline.pipe.mjs +0 -20
  156. package/esm2022/lib/pipes/replace.pipe.mjs +0 -17
  157. package/esm2022/lib/pipes/reverse.pipe.mjs +0 -22
  158. package/esm2022/lib/pipes/rownumber.pipe.mjs +0 -25
  159. package/esm2022/lib/pipes/sanitize-text.pipe.mjs +0 -20
  160. package/esm2022/lib/pipes/seperator-fix.pipe.mjs +0 -23
  161. package/esm2022/lib/pipes/sort.pipe.mjs +0 -48
  162. package/esm2022/lib/pipes/th-image-icon.pipe.mjs +0 -22
  163. package/esm2022/lib/pipes/tlbButtons.pipe.mjs +0 -59
  164. package/esm2022/lib/pipes/total-summary.pipe.mjs +0 -16
  165. package/esm2022/lib/pipes/tree-item-isexpanded.pipe.mjs +0 -25
  166. package/esm2022/lib/pipes/visible-value.pipe.mjs +0 -18
  167. package/esm2022/lib/portal-page/portal-page.component.mjs +0 -23
  168. package/esm2022/lib/portal-page/portal-sidebar.component.mjs +0 -36
  169. package/esm2022/lib/redirect-home-guard.mjs +0 -51
  170. package/esm2022/lib/redirect-report-navigator-command/redirect-report-navigator-command.component.mjs +0 -12
  171. package/esm2022/lib/report-container/report-container.component.mjs +0 -63
  172. package/esm2022/lib/resizable-module/resizable.component.mjs +0 -31
  173. package/esm2022/lib/resizable-module/resizable.directive.mjs +0 -41
  174. package/esm2022/lib/resizable-module/resizable.module.mjs +0 -17
  175. package/esm2022/lib/resolvers/index.mjs +0 -6
  176. package/esm2022/lib/resolvers/portal-dynamic-page.resolver.mjs +0 -49
  177. package/esm2022/lib/resolvers/portal-form-page.resolver.mjs +0 -18
  178. package/esm2022/lib/resolvers/portal-page.resolver.mjs +0 -30
  179. package/esm2022/lib/resolvers/portal-report-page.resolver.mjs +0 -37
  180. package/esm2022/lib/resolvers/tile-group-breadcrumb.resolver.mjs +0 -30
  181. package/esm2022/lib/root-page/root-page.component.mjs +0 -21
  182. package/esm2022/lib/root-portal/root-portal.component.mjs +0 -164
  183. package/esm2022/lib/server-connection-error/server-connection-error.component.mjs +0 -19
  184. package/esm2022/lib/services/api.service.mjs +0 -63
  185. package/esm2022/lib/services/audio-recording.service.mjs +0 -95
  186. package/esm2022/lib/services/barsa-dialog.service.mjs +0 -80
  187. package/esm2022/lib/services/barsa-storage.service.mjs +0 -78
  188. package/esm2022/lib/services/breadcrumb.service.mjs +0 -64
  189. package/esm2022/lib/services/column.service.mjs +0 -20
  190. package/esm2022/lib/services/container.service.mjs +0 -69
  191. package/esm2022/lib/services/dynamic-component.service.mjs +0 -55
  192. package/esm2022/lib/services/form-panel.service.mjs +0 -380
  193. package/esm2022/lib/services/form.service.mjs +0 -14
  194. package/esm2022/lib/services/horizontal-layout.service.mjs +0 -16
  195. package/esm2022/lib/services/index.mjs +0 -29
  196. package/esm2022/lib/services/indexeddb.service.mjs +0 -34
  197. package/esm2022/lib/services/layout.service.mjs +0 -42
  198. package/esm2022/lib/services/local-storage.service.mjs +0 -32
  199. package/esm2022/lib/services/log.service.mjs +0 -50
  200. package/esm2022/lib/services/network-status.service.mjs +0 -15
  201. package/esm2022/lib/services/notification-popup.service.mjs +0 -2
  202. package/esm2022/lib/services/notification-sw.service.mjs +0 -180
  203. package/esm2022/lib/services/notification.service.mjs +0 -308
  204. package/esm2022/lib/services/portal.service.mjs +0 -929
  205. package/esm2022/lib/services/prompt-update.service.mjs +0 -56
  206. package/esm2022/lib/services/routing.service.mjs +0 -60
  207. package/esm2022/lib/services/save-scoll-position.service.mjs +0 -29
  208. package/esm2022/lib/services/service-worker-communication.service.mjs +0 -120
  209. package/esm2022/lib/services/toast.service.mjs +0 -2
  210. package/esm2022/lib/services/ui.service.mjs +0 -23
  211. package/esm2022/lib/services/ulvmain.service.mjs +0 -810
  212. package/esm2022/lib/services/upload.service.mjs +0 -161
  213. package/esm2022/lib/services/video-recording.service.mjs +0 -115
  214. package/esm2022/public-api.mjs +0 -44
@@ -1,135 +0,0 @@
1
- import { BehaviorSubject, forkJoin, Observable, Subject } from 'rxjs';
2
- import { takeUntil, tap } from 'rxjs/operators';
3
- import { BaseComponent } from './base.component';
4
- import { getIcon, getImagePath, isImage, getUniqueId } from '../constants';
5
- import { BarsaApi } from './barsa-api';
6
- export class LinearListHelper extends BaseComponent {
7
- constructor(_uploadService, _filesValidationHelper, _fieldDefId) {
8
- super();
9
- this._uploadService = _uploadService;
10
- this._filesValidationHelper = _filesValidationHelper;
11
- this._fieldDefId = _fieldDefId;
12
- this.uploading$ = new Observable();
13
- this._valueExtra$ = new BehaviorSubject({});
14
- this._loading$ = new Subject();
15
- this._delete$ = new Subject();
16
- this._newFileUploaded$ = new Subject();
17
- this._uploadService.uploadingState$.pipe(takeUntil(this._onDestroy$)).subscribe((uploadState) => {
18
- const uploadStateValue = this._getFileValueExtra(uploadState.key);
19
- uploadStateValue.Progress = uploadState.progress;
20
- uploadStateValue.UploadState = uploadState.state;
21
- this._valueExtra[uploadState.key] = uploadStateValue;
22
- this._valueExtra$.next({ ...this._valueExtra });
23
- });
24
- }
25
- get loading$() {
26
- return this._loading$.asObservable();
27
- }
28
- get valueExtra$() {
29
- return this._valueExtra$.asObservable();
30
- }
31
- get delete$() {
32
- return this._delete$.asObservable();
33
- }
34
- get newFileUploaded$() {
35
- return this._newFileUploaded$.asObservable();
36
- }
37
- init(fileAttachmentInfo) {
38
- const fileValueExtra = this._getFileValueExtra(fileAttachmentInfo.Id);
39
- this._setIconAndImage(fileAttachmentInfo, fileValueExtra);
40
- }
41
- cancel(fileAttachment) {
42
- this._valueExtra[fileAttachment.Id].cancelation$?.next();
43
- }
44
- retry(fileAttachment) {
45
- this.uploadFile(fileAttachment).subscribe();
46
- }
47
- uploadToServer(files, key = '') {
48
- const isValid = this._filesValidationHelper.validateFiles(files);
49
- if (!isValid) {
50
- return;
51
- }
52
- const fileAttachments = files.map((c) => this._createFileAttachment(c));
53
- forkJoin(fileAttachments.map((fileAttachment) => this.uploadFile(fileAttachment, key ? key : fileAttachment.Id))).subscribe();
54
- }
55
- destroy() {
56
- this._onDestroy$.next();
57
- }
58
- get _valueExtra() {
59
- return this._valueExtra$.getValue();
60
- }
61
- _getFileValueExtra(fileId) {
62
- const valueExtra = this._valueExtra;
63
- const fileValueExtra = valueExtra[fileId];
64
- if (!fileValueExtra) {
65
- valueExtra[fileId] = {};
66
- this._valueExtra$.next({ ...valueExtra });
67
- }
68
- return valueExtra[fileId];
69
- }
70
- _setIconAndImage(fileAttachment, fileValueExtra) {
71
- const fileType = fileAttachment.Type;
72
- const fileId = fileAttachment.Id;
73
- if (fileAttachment.IsNew && !fileValueExtra.UploadState) {
74
- fileValueExtra.FileUrl = 'document';
75
- fileValueExtra.IsIcon = true;
76
- }
77
- else if (isImage(fileType)) {
78
- fileValueExtra.FileUrl = getImagePath('ID', '', fileId);
79
- fileValueExtra.IsIcon = false;
80
- }
81
- else {
82
- fileValueExtra.FileUrl = getIcon(fileType);
83
- fileValueExtra.IsIcon = true;
84
- }
85
- }
86
- _setLoading(loading) {
87
- this._loading$.next(loading);
88
- }
89
- _createFileAttachment(file, key = null) {
90
- const id = key ?? getUniqueId(4);
91
- const temp = file.name.split('.');
92
- const ext = temp[temp.length - 1];
93
- const newFileAttachment = {
94
- FileName: file.name,
95
- Id: id,
96
- FileId: id,
97
- IsDeleted: false,
98
- IsNew: true,
99
- Type: ext
100
- };
101
- const fileValueExtra = this._getFileValueExtra(newFileAttachment.Id);
102
- this._setIconAndImage(newFileAttachment, fileValueExtra);
103
- fileValueExtra.UploadState = 'Ready';
104
- fileValueExtra.binary = file;
105
- fileValueExtra.cancelation$ = new Subject();
106
- return newFileAttachment;
107
- }
108
- uploadFile(fileAttachment, key = '') {
109
- const formData = new FormData();
110
- formData.append('unicFileName', 'x' + BarsaApi.Common.Util.GetNewMetaGuid() + ';;;' + fileAttachment.FileName);
111
- formData.append('file', this._valueExtra[fileAttachment.Id].binary);
112
- return this._uploadService.upload(formData, this._fieldDefId, key).pipe(tap((res) => {
113
- if (Array.isArray(res)) {
114
- this._updateValue(fileAttachment, res);
115
- }
116
- }));
117
- }
118
- _updateValue(fileAttachment, res) {
119
- this._delete$.next(fileAttachment);
120
- // this._deleteFileAttachment(fileAttachment);
121
- const id = res[0].FileId;
122
- const newFileAttachment = {
123
- ...fileAttachment,
124
- Id: id,
125
- FileId: id,
126
- FileName: res[0].FileName,
127
- IsDeleted: false
128
- };
129
- const fileValueExtra = this._getFileValueExtra(id);
130
- fileValueExtra.binary = null;
131
- this._setIconAndImage(newFileAttachment, fileValueExtra);
132
- this._newFileUploaded$.next(newFileAttachment);
133
- }
134
- }
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZWFyLWxpc3QtaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etbm92aW4tcmF5LWNvcmUvc3JjL2xpYi9hYnN0cmFjdC1jbGFzc2VzL2xpbmVhci1saXN0LWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFM0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUl2QyxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsYUFBYTtJQU8vQyxZQUNZLGNBQTZCLEVBQzdCLHNCQUE2QyxFQUM3QyxXQUFtQjtRQUUzQixLQUFLLEVBQUUsQ0FBQztRQUpBLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBdUI7UUFDN0MsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFUL0IsZUFBVSxHQUFHLElBQUksVUFBVSxFQUFtQixDQUFDO1FBRXZDLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQWlCLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBQ25DLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBc0IsQ0FBQztRQUM3QyxzQkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFBc0IsQ0FBQztRQU8xRCxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFD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QUMsSUFBSSxDQUNuRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNSLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUMzQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFUyxZQUFZLENBQUMsY0FBa0MsRUFBRSxHQUFVO1FBQ2pFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ25DLDhDQUE4QztRQUM5QyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ3pCLE1BQU0saUJBQWlCLEdBQUc7WUFDdEIsR0FBRyxjQUFjO1lBQ2pCLEVBQUUsRUFBRSxFQUFFO1lBQ04sTUFBTSxFQUFFLEVBQUU7WUFDVixRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVE7WUFDekIsU0FBUyxFQUFFLEtBQUs7U0FDbkIsQ0FBQztRQUNGLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuRCxjQUFjLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ25ELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZm9ya0pvaW4sIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgZ2V0SWNvbiwgZ2V0SW1hZ2VQYXRoLCBpc0ltYWdlLCBnZXRVbmlxdWVJZCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBVcGxvYWRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdXBsb2FkLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFyc2FBcGkgfSBmcm9tICcuL2JhcnNhLWFwaSc7XG5pbXBvcnQgeyBGaWxlc1ZhbGlkYXRpb25IZWxwZXIgfSBmcm9tICcuL2ZpbGVzLXZhbGlkYXRpb24taGVscGVyJztcbmltcG9ydCB7IEZpbGVBdHRhY2htZW50SW5mbywgSVVwbG9hZGluZ1N0YXRlIH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5leHBvcnQgY2xhc3MgTGluZWFyTGlzdEhlbHBlciBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICAgIHVwbG9hZGluZyQgPSBuZXcgT2JzZXJ2YWJsZTxJVXBsb2FkaW5nU3RhdGU+KCk7XG5cbiAgICBwcml2YXRlIF92YWx1ZUV4dHJhJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VmFsdWVFeHRyYVR5cGU+KHt9KTtcbiAgICBwcml2YXRlIF9sb2FkaW5nJCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gICAgcHJpdmF0ZSBfZGVsZXRlJCA9IG5ldyBTdWJqZWN0PEZpbGVBdHRhY2htZW50SW5mbz4oKTtcbiAgICBwcml2YXRlIF9uZXdGaWxlVXBsb2FkZWQkID0gbmV3IFN1YmplY3Q8RmlsZUF0dGFjaG1lbnRJbmZvPigpO1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF91cGxvYWRTZXJ2aWNlOiBVcGxvYWRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9maWxlc1ZhbGlkYXRpb25IZWxwZXI6IEZpbGVzVmFsaWRhdGlvbkhlbHBlcixcbiAgICAgICAgcHJpdmF0ZSBfZmllbGREZWZJZDogc3RyaW5nXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuX3VwbG9hZFNlcnZpY2UudXBsb2FkaW5nU3RhdGUkLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKHVwbG9hZFN0YXRlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB1cGxvYWRTdGF0ZVZhbHVlID0gdGhpcy5fZ2V0RmlsZVZhbHVlRXh0cmEodXBsb2FkU3RhdGUua2V5KTtcbiAgICAgICAgICAgIHVwbG9hZFN0YXRlVmFsdWUuUHJvZ3Jlc3MgPSB1cGxvYWRTdGF0ZS5wcm9ncmVzcztcbiAgICAgICAgICAgIHVwbG9hZFN0YXRlVmFsdWUuVXBsb2FkU3RhdGUgPSB1cGxvYWRTdGF0ZS5zdGF0ZTtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlRXh0cmFbdXBsb2FkU3RhdGUua2V5XSA9IHVwbG9hZFN0YXRlVmFsdWU7XG4gICAgICAgICAgICB0aGlzLl92YWx1ZUV4dHJhJC5uZXh0KHsgLi4udGhpcy5fdmFsdWVFeHRyYSB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgbG9hZGluZyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2FkaW5nJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHVibGljIGdldCB2YWx1ZUV4dHJhJCgpOiBPYnNlcnZhYmxlPFZhbHVlRXh0cmFUeXBlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZUV4dHJhJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHVibGljIGdldCBkZWxldGUkKCk6IE9ic2VydmFibGU8RmlsZUF0dGFjaG1lbnRJbmZvPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWxldGUkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IG5ld0ZpbGVVcGxvYWRlZCQoKTogT2JzZXJ2YWJsZTxGaWxlQXR0YWNobWVudEluZm8+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25ld0ZpbGVVcGxvYWRlZCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIGluaXQoZmlsZUF0dGFjaG1lbnRJbmZvOiBGaWxlQXR0YWNobWVudEluZm8pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZmlsZVZhbHVlRXh0cmEgPSB0aGlzLl9nZXRGaWxlVmFsdWVFeHRyYShmaWxlQXR0YWNobWVudEluZm8uSWQpO1xuICAgICAgICB0aGlzLl9zZXRJY29uQW5kSW1hZ2UoZmlsZUF0dGFjaG1lbnRJbmZvLCBmaWxlVmFsdWVFeHRyYSk7XG4gICAgfVxuICAgIGNhbmNlbChmaWxlQXR0YWNobWVudDogRmlsZUF0dGFjaG1lbnRJbmZvKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ZhbHVlRXh0cmFbZmlsZUF0dGFjaG1lbnQuSWRdLmNhbmNlbGF0aW9uJD8ubmV4dCgpO1xuICAgIH1cbiAgICByZXRyeShmaWxlQXR0YWNobWVudDogRmlsZUF0dGFjaG1lbnRJbmZvKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBsb2FkRmlsZShmaWxlQXR0YWNobWVudCkuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIHVwbG9hZFRvU2VydmVyKGZpbGVzOiBGaWxlW10sIGtleTogc3RyaW5nID0gJycpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXNWYWxpZCA9IHRoaXMuX2ZpbGVzVmFsaWRhdGlvbkhlbHBlci52YWxpZGF0ZUZpbGVzKGZpbGVzKTtcbiAgICAgICAgaWYgKCFpc1ZhbGlkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmlsZUF0dGFjaG1lbnRzID0gZmlsZXMubWFwKChjKSA9PiB0aGlzLl9jcmVhdGVGaWxlQXR0YWNobWVudChjKSk7XG4gICAgICAgIGZvcmtKb2luKFxuICAgICAgICAgICAgZmlsZUF0dGFjaG1lbnRzLm1hcCgoZmlsZUF0dGFjaG1lbnQpID0+IHRoaXMudXBsb2FkRmlsZShmaWxlQXR0YWNobWVudCwga2V5ID8ga2V5IDogZmlsZUF0dGFjaG1lbnQuSWQpKVxuICAgICAgICApLnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBkZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIGdldCBfdmFsdWVFeHRyYSgpOiBWYWx1ZUV4dHJhVHlwZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZUV4dHJhJC5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfZ2V0RmlsZVZhbHVlRXh0cmEoZmlsZUlkKTogVXBsb2FkRmlsZVByb3BzIHtcbiAgICAgICAgY29uc3QgdmFsdWVFeHRyYSA9IHRoaXMuX3ZhbHVlRXh0cmE7XG4gICAgICAgIGNvbnN0IGZpbGVWYWx1ZUV4dHJhID0gdmFsdWVFeHRyYVtmaWxlSWRdO1xuICAgICAgICBpZiAoIWZpbGVWYWx1ZUV4dHJhKSB7XG4gICAgICAgICAgICB2YWx1ZUV4dHJhW2ZpbGVJZF0gPSB7fTtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlRXh0cmEkLm5leHQoeyAuLi52YWx1ZUV4dHJhIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZUV4dHJhW2ZpbGVJZF0gO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3NldEljb25BbmRJbWFnZShmaWxlQXR0YWNobWVudDogRmlsZUF0dGFjaG1lbnRJbmZvLCBmaWxlVmFsdWVFeHRyYTogVXBsb2FkRmlsZVByb3BzKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZpbGVUeXBlID0gZmlsZUF0dGFjaG1lbnQuVHlwZTtcbiAgICAgICAgY29uc3QgZmlsZUlkID0gZmlsZUF0dGFjaG1lbnQuSWQ7XG4gICAgICAgIGlmIChmaWxlQXR0YWNobWVudC5Jc05ldyAmJiAhZmlsZVZhbHVlRXh0cmEuVXBsb2FkU3RhdGUpIHtcbiAgICAgICAgICAgIGZpbGVWYWx1ZUV4dHJhLkZpbGVVcmwgPSAnZG9jdW1lbnQnO1xuICAgICAgICAgICAgZmlsZVZhbHVlRXh0cmEuSXNJY29uID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0ltYWdlKGZpbGVUeXBlKSkge1xuICAgICAgICAgICAgZmlsZVZhbHVlRXh0cmEuRmlsZVVybCA9IGdldEltYWdlUGF0aCgnSUQnLCAnJywgZmlsZUlkKTtcbiAgICAgICAgICAgIGZpbGVWYWx1ZUV4dHJhLklzSWNvbiA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmlsZVZhbHVlRXh0cmEuRmlsZVVybCA9IGdldEljb24oZmlsZVR5cGUpO1xuICAgICAgICAgICAgZmlsZVZhbHVlRXh0cmEuSXNJY29uID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBfc2V0TG9hZGluZyhsb2FkaW5nOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xvYWRpbmckLm5leHQobG9hZGluZyk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfY3JlYXRlRmlsZUF0dGFjaG1lbnQoZmlsZTogRmlsZSwga2V5OiBzdHJpbmcgfCBudWxsID0gbnVsbCk6IGFueSB7XG4gICAgICAgIGNvbnN0IGlkOiBzdHJpbmcgPSBrZXkgPz8gZ2V0VW5pcXVlSWQoNCk7XG4gICAgICAgIGNvbnN0IHRlbXA6IHN0cmluZ1tdID0gZmlsZS5uYW1lLnNwbGl0KCcuJyk7XG4gICAgICAgIGNvbnN0IGV4dCA9IHRlbXBbdGVtcC5sZW5ndGggLSAxXTtcbiAgICAgICAgY29uc3QgbmV3RmlsZUF0dGFjaG1lbnQgPSB7XG4gICAgICAgICAgICBGaWxlTmFtZTogZmlsZS5uYW1lLFxuICAgICAgICAgICAgSWQ6IGlkLFxuICAgICAgICAgICAgRmlsZUlkOiBpZCxcbiAgICAgICAgICAgIElzRGVsZXRlZDogZmFsc2UsXG4gICAgICAgICAgICBJc05ldzogdHJ1ZSxcbiAgICAgICAgICAgIFR5cGU6IGV4dFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBmaWxlVmFsdWVFeHRyYSA9IHRoaXMuX2dldEZpbGVWYWx1ZUV4dHJhKG5ld0ZpbGVBdHRhY2htZW50LklkKTtcbiAgICAgICAgdGhpcy5fc2V0SWNvbkFuZEltYWdlKG5ld0ZpbGVBdHRhY2htZW50LCBmaWxlVmFsdWVFeHRyYSk7XG4gICAgICAgIGZpbGVWYWx1ZUV4dHJhLlVwbG9hZFN0YXRlID0gJ1JlYWR5JztcbiAgICAgICAgZmlsZVZhbHVlRXh0cmEuYmluYXJ5ID0gZmlsZTtcbiAgICAgICAgZmlsZVZhbHVlRXh0cmEuY2FuY2VsYXRpb24kID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICAgICAgcmV0dXJuIG5ld0ZpbGVBdHRhY2htZW50O1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgdXBsb2FkRmlsZShmaWxlQXR0YWNobWVudDogRmlsZUF0dGFjaG1lbnRJbmZvLCBrZXk6IHN0cmluZyA9ICcnKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCd1bmljRmlsZU5hbWUnLCAneCcgKyBCYXJzYUFwaS5Db21tb24uVXRpbC5HZXROZXdNZXRhR3VpZCgpICsgJzs7OycgKyBmaWxlQXR0YWNobWVudC5GaWxlTmFtZSk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIHRoaXMuX3ZhbHVlRXh0cmFbZmlsZUF0dGFjaG1lbnQuSWRdLmJpbmFyeSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX3VwbG9hZFNlcnZpY2UudXBsb2FkKGZvcm1EYXRhLCB0aGlzLl9maWVsZERlZklkLCBrZXkpLnBpcGUoXG4gICAgICAgICAgICB0YXAoKHJlcykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlcykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlVmFsdWUoZmlsZUF0dGFjaG1lbnQsIHJlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3VwZGF0ZVZhbHVlKGZpbGVBdHRhY2htZW50OiBGaWxlQXR0YWNobWVudEluZm8sIHJlczogYW55W10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGVsZXRlJC5uZXh0KGZpbGVBdHRhY2htZW50KTtcbiAgICAgICAgLy8gdGhpcy5fZGVsZXRlRmlsZUF0dGFjaG1lbnQoZmlsZUF0dGFjaG1lbnQpO1xuICAgICAgICBjb25zdCBpZCA9IHJlc1swXS5GaWxlSWQ7XG4gICAgICAgIGNvbnN0IG5ld0ZpbGVBdHRhY2htZW50ID0ge1xuICAgICAgICAgICAgLi4uZmlsZUF0dGFjaG1lbnQsXG4gICAgICAgICAgICBJZDogaWQsXG4gICAgICAgICAgICBGaWxlSWQ6IGlkLFxuICAgICAgICAgICAgRmlsZU5hbWU6IHJlc1swXS5GaWxlTmFtZSxcbiAgICAgICAgICAgIElzRGVsZXRlZDogZmFsc2VcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgZmlsZVZhbHVlRXh0cmEgPSB0aGlzLl9nZXRGaWxlVmFsdWVFeHRyYShpZCk7XG4gICAgICAgIGZpbGVWYWx1ZUV4dHJhLmJpbmFyeSA9IG51bGw7XG4gICAgICAgIHRoaXMuX3NldEljb25BbmRJbWFnZShuZXdGaWxlQXR0YWNobWVudCwgZmlsZVZhbHVlRXh0cmEpO1xuICAgICAgICB0aGlzLl9uZXdGaWxlVXBsb2FkZWQkLm5leHQobmV3RmlsZUF0dGFjaG1lbnQpO1xuICAgIH1cbn1cblxuaW50ZXJmYWNlIFVwbG9hZEZpbGVQcm9wcyB7XG4gICAgRmlsZVVybD86IHN0cmluZztcbiAgICBjYW5jZWxhdGlvbiQ/OiBTdWJqZWN0PHZvaWQ+O1xuICAgIGJpbmFyeT86IGFueTtcbiAgICBVcGxvYWRTdGF0ZT86IHN0cmluZztcbiAgICBQcm9ncmVzcz86IG51bWJlcjtcbiAgICBJc0ljb24/OiBib29sZWFuO1xufVxudHlwZSBWYWx1ZUV4dHJhVHlwZSA9IHsgW2tleTogc3RyaW5nXTogVXBsb2FkRmlsZVByb3BzIH07XG4iXX0=
@@ -1,184 +0,0 @@
1
- export class GeneralControlInfoModel {
2
- constructor() {
3
- this.ShowLabel = true;
4
- }
5
- }
6
- export class StringControlInfoModel extends GeneralControlInfoModel {
7
- }
8
- export class RichStringControlInfoModel extends StringControlInfoModel {
9
- }
10
- export class NumberControlInfoModel extends GeneralControlInfoModel {
11
- }
12
- export class FilePictureInfoModel extends GeneralControlInfoModel {
13
- }
14
- export class FileControlInfoModel extends GeneralControlInfoModel {
15
- }
16
- export class CommandControlInfoModel extends GeneralControlInfoModel {
17
- }
18
- export class IconControlInfoModel extends GeneralControlInfoModel {
19
- }
20
- export class PictureFileControlInfoModel extends GeneralControlInfoModel {
21
- }
22
- export class GaugeControlInfoModel extends GeneralControlInfoModel {
23
- }
24
- export class RelationListControlInfoModel extends GeneralControlInfoModel {
25
- }
26
- export class HistoryControlInfoModel extends RelationListControlInfoModel {
27
- }
28
- export class RabetehAkseTakiListiControlInfoModel extends RelationListControlInfoModel {
29
- }
30
- export class RelatedReportControlInfoModel extends GeneralControlInfoModel {
31
- }
32
- export class CodeEditorControlInfoModel extends GeneralControlInfoModel {
33
- }
34
- export class EnumControlInfoModel extends GeneralControlInfoModel {
35
- }
36
- export class RowDataOption {
37
- }
38
- export class DateTimeControlInfoModel extends GeneralControlInfoModel {
39
- }
40
- export class BoolControlInfoModel extends GeneralControlInfoModel {
41
- }
42
- export class CalculateControlInfoModel extends GeneralControlInfoModel {
43
- }
44
- export class SubformControlInfoModel extends GeneralControlInfoModel {
45
- }
46
- export class LinearListControlInfoModel extends GeneralControlInfoModel {
47
- }
48
- export class ListRelationModel {
49
- }
50
- export class SingleRelationControlInfoModel extends GeneralControlInfoModel {
51
- }
52
- export class MetaobjectDataModel {
53
- }
54
- export class MoForReportModel {
55
- constructor() {
56
- this.DeletedList = this.AddedList = this.MoDataList = [];
57
- }
58
- }
59
- export class ReportBaseInfo {
60
- }
61
- export class ReportExtraInfo extends ReportBaseInfo {
62
- }
63
- export class MetaobjectRelationModel extends ListRelationModel {
64
- }
65
- export var FieldInfoTypeEnum;
66
- (function (FieldInfoTypeEnum) {
67
- FieldInfoTypeEnum[FieldInfoTypeEnum["IntInfo"] = 0] = "IntInfo";
68
- FieldInfoTypeEnum[FieldInfoTypeEnum["StringInfo"] = 2] = "StringInfo";
69
- FieldInfoTypeEnum[FieldInfoTypeEnum["DateInfo"] = 3] = "DateInfo";
70
- FieldInfoTypeEnum[FieldInfoTypeEnum["BoolInfo"] = 5] = "BoolInfo";
71
- FieldInfoTypeEnum[FieldInfoTypeEnum["EnumInfo"] = 6] = "EnumInfo";
72
- FieldInfoTypeEnum[FieldInfoTypeEnum["UserInfo"] = 7] = "UserInfo";
73
- FieldInfoTypeEnum[FieldInfoTypeEnum["CategoryInfo"] = 8] = "CategoryInfo";
74
- FieldInfoTypeEnum[FieldInfoTypeEnum["MetaObjectInfo"] = 9] = "MetaObjectInfo";
75
- FieldInfoTypeEnum[FieldInfoTypeEnum["CommandInfo"] = 10] = "CommandInfo";
76
- FieldInfoTypeEnum[FieldInfoTypeEnum["PicturesInfo"] = 11] = "PicturesInfo";
77
- FieldInfoTypeEnum[FieldInfoTypeEnum["RelationInfo"] = 12] = "RelationInfo";
78
- FieldInfoTypeEnum[FieldInfoTypeEnum["HistoryInfo"] = 13] = "HistoryInfo";
79
- FieldInfoTypeEnum[FieldInfoTypeEnum["RelationInfoReverse_AksListi"] = 14] = "RelationInfoReverse_AksListi";
80
- FieldInfoTypeEnum[FieldInfoTypeEnum["CreatorUserInfo"] = 15] = "CreatorUserInfo";
81
- FieldInfoTypeEnum[FieldInfoTypeEnum["CreationDateInfo"] = 16] = "CreationDateInfo";
82
- FieldInfoTypeEnum[FieldInfoTypeEnum["LastUpdateDateInfo"] = 17] = "LastUpdateDateInfo";
83
- FieldInfoTypeEnum[FieldInfoTypeEnum["ReminderInfo"] = 18] = "ReminderInfo";
84
- FieldInfoTypeEnum[FieldInfoTypeEnum["RichStringInfo"] = 19] = "RichStringInfo";
85
- FieldInfoTypeEnum[FieldInfoTypeEnum["ConvertCommandInfo"] = 20] = "ConvertCommandInfo";
86
- FieldInfoTypeEnum[FieldInfoTypeEnum["RelationInfoSingleReverse_AksTakiListi"] = 21] = "RelationInfoSingleReverse_AksTakiListi";
87
- FieldInfoTypeEnum[FieldInfoTypeEnum["DialCommandInfo"] = 22] = "DialCommandInfo";
88
- FieldInfoTypeEnum[FieldInfoTypeEnum["FindContactCommandInfo"] = 23] = "FindContactCommandInfo";
89
- FieldInfoTypeEnum[FieldInfoTypeEnum["SequenceCommandInfo"] = 24] = "SequenceCommandInfo";
90
- FieldInfoTypeEnum[FieldInfoTypeEnum["CurrencyInfo"] = 25] = "CurrencyInfo";
91
- FieldInfoTypeEnum[FieldInfoTypeEnum["SinglePictureInfo"] = 26] = "SinglePictureInfo";
92
- FieldInfoTypeEnum[FieldInfoTypeEnum["WordReportCommandInfo"] = 27] = "WordReportCommandInfo";
93
- FieldInfoTypeEnum[FieldInfoTypeEnum["HierarchicalInfo"] = 28] = "HierarchicalInfo";
94
- FieldInfoTypeEnum[FieldInfoTypeEnum["TimeSpanInfo"] = 29] = "TimeSpanInfo";
95
- FieldInfoTypeEnum[FieldInfoTypeEnum["ReportInfo"] = 30] = "ReportInfo";
96
- FieldInfoTypeEnum[FieldInfoTypeEnum["FileInfo"] = 31] = "FileInfo";
97
- FieldInfoTypeEnum[FieldInfoTypeEnum["WordFileInfo"] = 32] = "WordFileInfo";
98
- FieldInfoTypeEnum[FieldInfoTypeEnum["PictureFileInfo"] = 33] = "PictureFileInfo";
99
- FieldInfoTypeEnum[FieldInfoTypeEnum["GaugeInfo"] = 34] = "GaugeInfo";
100
- FieldInfoTypeEnum[FieldInfoTypeEnum["CodeInfo"] = 35] = "CodeInfo";
101
- FieldInfoTypeEnum[FieldInfoTypeEnum["WorkCenterInfo"] = 36] = "WorkCenterInfo";
102
- FieldInfoTypeEnum[FieldInfoTypeEnum["IsDeletedInfo"] = 37] = "IsDeletedInfo";
103
- FieldInfoTypeEnum[FieldInfoTypeEnum["RowNumberInfo"] = 38] = "RowNumberInfo";
104
- FieldInfoTypeEnum[FieldInfoTypeEnum["BinaryInfo"] = 39] = "BinaryInfo";
105
- FieldInfoTypeEnum[FieldInfoTypeEnum["ReverseMetaObjectInfo_AksTakiTaki"] = 40] = "ReverseMetaObjectInfo_AksTakiTaki";
106
- FieldInfoTypeEnum[FieldInfoTypeEnum["ColorInfo"] = 41] = "ColorInfo";
107
- FieldInfoTypeEnum[FieldInfoTypeEnum["IconInfo"] = 42] = "IconInfo";
108
- FieldInfoTypeEnum[FieldInfoTypeEnum["RefreshFieldCommandInfo"] = 43] = "RefreshFieldCommandInfo";
109
- FieldInfoTypeEnum[FieldInfoTypeEnum["ReferenceFieldInfo"] = 44] = "ReferenceFieldInfo";
110
- FieldInfoTypeEnum[FieldInfoTypeEnum["SearchCommandInfo"] = 45] = "SearchCommandInfo";
111
- FieldInfoTypeEnum[FieldInfoTypeEnum["OrderInfo"] = 46] = "OrderInfo"; // 0x0000002E
112
- })(FieldInfoTypeEnum || (FieldInfoTypeEnum = {}));
113
- export class BaseReportModel {
114
- constructor() {
115
- this.DefaultItemComponent = 'ReportDefaultItemComponent';
116
- }
117
- }
118
- export class CustomCommand {
119
- }
120
- export class ReportModel extends BaseReportModel {
121
- constructor() {
122
- super();
123
- }
124
- }
125
- export class ReportListModel extends BaseReportModel {
126
- }
127
- export class ReportFormModel extends BaseReportModel {
128
- }
129
- export class ReportCalendarModel extends BaseReportModel {
130
- }
131
- export class ReportTreeModel extends BaseReportModel {
132
- }
133
- export class ReportViewColumn {
134
- }
135
- export class GridSetting {
136
- }
137
- export class ColSetting {
138
- }
139
- export class SortSetting {
140
- }
141
- export class ReportField {
142
- constructor(column, item) {
143
- this.column = column;
144
- this.item = item;
145
- const name = column.Name;
146
- this.caption = column.Caption;
147
- this.value = this.item[name];
148
- if (Number(column.FieldTypeId) === FieldInfoTypeEnum.DateInfo) {
149
- this.value = this.item[name + '$Caption'];
150
- }
151
- if (Number(column.FieldTypeId) === FieldInfoTypeEnum.IconInfo) {
152
- this.value = this.item[name].Url;
153
- }
154
- }
155
- }
156
- export const DateRanges = [
157
- 'DateR_None',
158
- 'DateR_SpecificRange',
159
- 'DateR_Today',
160
- 'DateR_ThisWeek',
161
- 'DateR_ThisMonth',
162
- 'DateR_ThisYear',
163
- 'DateR_DaysBefore',
164
- 'DateR_PrevWeek',
165
- 'DateR_PrevMonth',
166
- 'DateR_PrevYear',
167
- 'DateR_DaysAfter',
168
- 'DateR_NextWeek',
169
- 'DateR_NextMonth',
170
- 'DateR_NextYear'
171
- ];
172
- export var SortDirection;
173
- (function (SortDirection) {
174
- SortDirection["NONE"] = "none";
175
- SortDirection["ASC"] = "asc";
176
- SortDirection["DESC"] = "desc";
177
- })(SortDirection || (SortDirection = {}));
178
- export var SelectionMode;
179
- (function (SelectionMode) {
180
- SelectionMode["SINGLE"] = "single";
181
- SelectionMode["MULTIPLE"] = "multiple";
182
- SelectionMode["NONE"] = "none";
183
- })(SelectionMode || (SelectionMode = {}));
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etbm92aW4tcmF5LWNvcmUvc3JjL2xpYi9hYnN0cmFjdC1jbGFzc2VzL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSxNQUFNLE9BQU8sdUJBQXVCO0lBQXBDO1FBWUksY0FBUyxHQUFHLElBQUksQ0FBQztJQVdyQixDQUFDO0NBQUE7QUFTRCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsdUJBQXVCO0NBU2xFO0FBQ0QsTUFBTSxPQUFPLDBCQUEyQixTQUFRLHNCQUFzQjtDQUVyRTtBQUNELE1BQU0sT0FBTyxzQkFBdUIsU0FBUSx1QkFBdUI7Q0FPbEU7QUFDRCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsdUJBQXVCO0NBSWhFO0FBQ0QsTUFBTSxPQUFPLG9CQUFxQixTQUFRLHVCQUF1QjtDQVVoRTtBQUNELE1BQU0sT0FBTyx1QkFBd0IsU0FBUSx1QkFBdUI7Q0FLbkU7QUFDRCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsdUJBQXVCO0NBQUc7QUFDcEUsTUFBTSxPQUFPLDJCQUE0QixTQUFRLHVCQUF1QjtDQUl2RTtBQUNELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSx1QkFBdUI7Q0FPakU7QUFNRCxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsdUJBQXVCO0NBR3hFO0FBQ0QsTUFBTSxPQUFPLHVCQUF3QixTQUFRLDRCQUE0QjtDQUd4RTtBQUNELE1BQU0sT0FBTyxvQ0FBcUMsU0FBUSw0QkFBNEI7Q0FFckY7QUFDRCxNQUFNLE9BQU8sNkJBQThCLFNBQVEsdUJBQXVCO0NBSXpFO0FBQ0QsTUFBTSxPQUFPLDBCQUEyQixTQUFRLHVCQUF1QjtDQUd0RTtBQUNELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSx1QkFBdUI7Q0FRaEU7QUFDRCxNQUFNLE9BQU8sYUFBYTtDQU16QjtBQUNELE1BQU0sT0FBTyx3QkFBeUIsU0FBUSx1QkFBdUI7Q0FNcEU7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LFFBSXhCO0FBaUNELE1BQU0sQ0FBTixJQUFZLGFBSVg7QUFKRCxXQUFZLGFBQWE7SUFDckIsa0NBQWlCLENBQUE7SUFDakIsc0NBQXFCLENBQUE7SUFDckIsOEJBQWEsQ0FBQTtBQUNqQixDQUFDLEVBSlcsYUFBYSxLQUFiLGFBQWEsUUFJeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgRGF0ZUluZm8gYXMgRGF0ZUluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vZGF0ZS1zZXJ2aWNlcyc7XG5cbmV4cG9ydCB0eXBlIFVsdlBhcmFtVHlwZSA9IHtcbiAgICBGbGFnczogeyBEYXRhOiBzdHJpbmc7IEV4dHJhOiBzdHJpbmc7IFNlYXJjaDogc3RyaW5nOyBWaWV3OiBzdHJpbmcgfTtcbiAgICBSZXBvcnROYW1lOiBzdHJpbmc7XG4gICAgUmVwb3J0SWQ/OiBzdHJpbmc7XG4gICAgVXNhZ2VFbnVtOiBzdHJpbmc7XG59O1xuZXhwb3J0IGNsYXNzIEdlbmVyYWxDb250cm9sSW5mb01vZGVsIHtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgQ29udHJvbEZpZWxkQ2FwdGlvbjogc3RyaW5nO1xuICAgIENvbnRyb2xGaWVsZENhcHRpb25UcmFuc2xhdGVkOiBzdHJpbmc7XG4gICAgQ29udHJvbEZpZWxkRGVmSWQ6IHN0cmluZztcbiAgICBDb250cm9sTmFtZTogc3RyaW5nO1xuICAgIFJlbGF0ZWRGaWVsZExpc3Q6IFtdO1xuICAgIEhpZGU6IGJvb2xlYW47XG4gICAgeHR5cGU6IHN0cmluZztcbiAgICBMYWJlbFBvc2l0aW9uOiBzdHJpbmc7XG4gICAgSXNNYW5kYXRvcnk6IGJvb2xlYW47XG4gICAgSXNWaXNpYmxlOiBib29sZWFuO1xuICAgIFNob3dMYWJlbCA9IHRydWU7XG4gICAgSXNSZWFkT25seTogYm9vbGVhbjtcbiAgICBJc0VuYWJsZWQ6IGJvb2xlYW47XG4gICAgSXNCb2xkOiBib29sZWFuO1xuICAgIElzQXV0b21hdGljOiBib29sZWFuO1xuICAgIEpzb25FeHRyYVByb3A6IGFueSB8IG51bGw7XG4gICAgQ29tcG9uZW50OiBzdHJpbmc7XG4gICAgSW5mbzogQ29udHJvbEluZm9UeXBlcztcbiAgICBGaWVsZEljb246IHN0cmluZztcbiAgICBJc0x0cjogYm9vbGVhbjtcbiAgICBEaXNwbGF5VHlwZTogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBGaWxlQXR0YWNobWVudEluZm8ge1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICBJZDogc3RyaW5nO1xuICAgIElzTmV3OiBib29sZWFuO1xuICAgIElzRGVsZXRlZDogYm9vbGVhbjtcbiAgICBUeXBlOiBzdHJpbmc7XG4gICAgRmlsZU5hbWU/OiBzdHJpbmc7XG59XG5leHBvcnQgY2xhc3MgU3RyaW5nQ29udHJvbEluZm9Nb2RlbCBleHRlbmRzIEdlbmVyYWxDb250cm9sSW5mb01vZGVsIHtcbiAgICBNYXhMZW5ndGg6IG51bWJlcjtcbiAgICBNaW5MZW5ndGg6IG51bWJlcjtcbiAgICBSZWd1bGFyRXhwcmVzc2lvbjogc3RyaW5nO1xuICAgIElzUGFzc3dvcmQ6IGJvb2xlYW47XG4gICAgSXNNdWx0aUxpbmU6IGJvb2xlYW47XG4gICAgTnVsbFRleHQ6IHN0cmluZztcbiAgICBBbGxvd2VkU3RyaW5nQ2hhcnM6IHN0cmluZztcbiAgICBPbmx5QWNjZXB0Q3VycmVudEN1bHR1cmU6IGJvb2xlYW47XG59XG5leHBvcnQgY2xhc3MgUmljaFN0cmluZ0NvbnRyb2xJbmZvTW9kZWwgZXh0ZW5kcyBTdHJpbmdDb250cm9sSW5mb01vZGVsIHtcbiAgICBJc0h0bWxWaWV3ZXI6IGJvb2xlYW47XG59XG5leHBvcnQgY2xhc3MgTnVtYmVyQ29udHJvbEluZm9Nb2RlbCBleHRlbmRzIEdlbmVyYWxDb250cm9sSW5mb01vZGVsIHtcbiAgICBNaW5WYWx1ZTogbnVtYmVyO1xuICAgIE1heFZhbHVlOiBudW1iZXI7XG4gICAgRGVjaW1hbFByZWNpc2lvbjogbnVtYmVyO1xuICAgIFNob3dUaG91c2FuZFNlcGVyYXRvcjogYm9vbGVhbjtcbiAgICBOdW1iZXJUeXBlOiBzdHJpbmc7XG4gICAgQ3VycmVuY3lTeW1ib2w6IHN0cmluZztcbn1cbmV4cG9ydCBjbGFzcyBGaWxlUGljdHVyZUluZm9Nb2RlbCBleHRlbmRzIEdlbmVyYWxDb250cm9sSW5mb01vZGVsIHtcbiAgICBFeHQ6IHN0cmluZztcbiAgICBGaWxlSWQ6IHN0cmluZztcbiAgICBJc0RlbGV0ZWQ6IGJvb2xlYW47XG59XG5leHBvcnQgY2xhc3MgRmlsZUNvbnRyb2xJbmZvTW9kZWwgZXh0ZW5kcyBHZW5lcmFsQ29udHJvbEluZm9Nb2RlbCB7XG4gICAgQ2FuRGVsZXRlOiBib29sZWFuO1xuICAgIENhblNhdmU6IGJvb2xlYW47XG4gICAgQ2FuVmlldzogYm9vbGVhbjtcbiAgICBJc011bHRpU2VsZWN0OiBib29sZWFuO1xuICAgIE1heEZpbGVDb3VudDogbnVtYmVyO1xuICAgIE1heEZpbGVTaXplS2I6IG51bWJlcjtcbiAgICBPZmZpY2VPbmxpbmU6IGJvb2xlYW47XG4gICAgVmFsaWRFeHRlbnNpb25zOiBzdHJpbmc7XG4gICAgVmlld1R5cGU6IHN0cmluZztcbn1cbmV4cG9ydCBjbGFzcyBDb21tYW5kQ29udHJvbEluZm9Nb2RlbCBleHRlbmRzIEdlbmVyYWxDb250cm9sSW5mb01vZGVsIHtcbiAgICBNZW51TmFtZTogc3RyaW5nO1xuICAgIERpc2FibGVXaGVuUmVhZG9ubHk6IGJvb2xlYW47XG4gICAgRGlzcGxheVR5cGU6IHN0cmluZztcbiAgICBEeW5hbWljQ29tbWFuZDogc3RyaW5nO1xufVxuZXhwb3J0IGNsYXNzIEljb25Db250cm9sSW5mb01vZGVsIGV4dGVuZHMgR2VuZXJhbENvbnRyb2xJbmZvTW9kZWwge31cbmV4cG9ydCBjbGFzcyBQaWN0dXJlRmlsZUNvbnRyb2xJbmZvTW9kZWwgZXh0ZW5kcyBHZW5lcmFsQ29udHJvbEluZm9Nb2RlbCB7XG4gICAgU2l6ZU1vZGU6IG51bWJlcjtcbiAgICBNYXhGaWxlU2l6ZUtiOiBudW1iZXI7XG4gICAgVmFsaWRFeHRlbnNpb25zOiBzdHJpbmc7XG59XG5leHBvcnQgY2xhc3MgR2F1Z2VDb250cm9sSW5mb01vZGVsIGV4dGVuZHMgR2VuZXJhbENvbnRyb2xJbmZvTW9kZWwge1xuICAgIElzQXV0b21hdGljOiBib29sZWFuO1xuICAgIE1heFZhbHVlOiBudW1iZXI7XG4gICAgTWF4VmFsdWUyOiBudW1iZXI7XG4gICAgTWluVmFsdWU6IG51bWJlcjtcbiAgICBNaW5WYWx1ZTI6IG51bWJlcjtcbiAgICBWYWx1ZTogbnVtYmVyO1xufVxuZXhwb3J0IHR5cGUgUmVsYXRpb25MaXN0VHlwZXMgPVxuICAgIHwgUmVsYXRpb25MaXN0Q29udHJvbEluZm9Nb2RlbFxuICAgIHwgSGlzdG9yeUNvbnRyb2xJbmZvTW9kZWxcbiAgICB8IFJhYmV0ZWhBa3NlVGFraUxpc3RpQ29udHJvbEluZm9Nb2RlbFxuICAgIHwgU2luZ2xlUmVsYXRpb25Db250cm9sSW5mb01vZGVsO1xuZXhwb3J0IGNsYXNzIFJlbGF0aW9uTGlzdENvbnRyb2xJbmZvTW9kZWwgZXh0ZW5kcyBHZW5lcmFsQ29udHJvbEluZm9Nb2RlbCB7XG4gICAgUmVsYXRpb25WaWV3VHlwZTogc3RyaW5nO1xuICAgIFVsdlNldHRpbmc6IFJlcG9ydE1vZGVsO1xufVxuZXhwb3J0IGNsYXNzIEhpc3RvcnlDb250cm9sSW5mb01vZGVsIGV4dGVuZHMgUmVsYXRpb25MaXN0Q29udHJvbEluZm9Nb2RlbCB7XG4gICAgSGFzRXh0ZXJuYWxQYXJhbWV0ZXI6IGJvb2xlYW47XG4gICAgUGFyYW1OYW1lMTogc3RyaW5nO1xufVxuZXhwb3J0IGNsYXNzIFJhYmV0ZWhBa3NlVGFraUxpc3RpQ29udHJvbEluZm9Nb2RlbCBleHRlbmRzIFJlbGF0aW9uTGlzdENvbnRyb2xJbmZvTW9kZWwge1xuICAgIEF1dG9TYXZlO1xufVxuZXhwb3J0IGNsYXNzIFJlbGF0ZWRSZXBvcnRDb250cm9sSW5mb01vZGVsIGV4dGVuZHMgR2VuZXJhbENvbnRyb2xJbmZvTW9kZWwge1xuICAgIEhhc0V4dGVybmFsUGFyYW1ldGVyOiBib29sZWFuO1xuICAgIFBhcmFtTmFtZTE6IHN0cmluZztcbiAgICBVbHZTZXR0aW5nOiBSZXBvcnRNb2RlbDtcbn1cbmV4cG9ydCBjbGFzcyBDb2RlRWRpdG9yQ29udHJvbEluZm9Nb2RlbCBleHRlbmRzIEdlbmVyYWxDb250cm9sSW5mb01vZGVsIHtcbiAgICBFeHRyYVRleHQ6IHN0cmluZztcbiAgICBTdWdnZXN0aW9uczogc3RyaW5nO1xufVxuZXhwb3J0IGNsYXNzIEVudW1Db250cm9sSW5mb01vZGVsIGV4dGVuZHMgR2VuZXJhbENvbnRyb2xJbmZvTW9kZWwge1xuICAgIElzTXVsdGlTZWxlY3Q6IGJvb2xlYW47XG4gICAgU2hvd0FzUmFkaW9CdXR0b246IGJvb2xlYW47XG4gICAgSWNvbkRpc3BsYXlUeXBlOiBzdHJpbmc7XG4gICAgRGF0YVNvdXJjZToge1xuICAgICAgICBSb3dzOiBSb3dEYXRhT3B0aW9uW107XG4gICAgfTtcbiAgICBFbXB0eVJvd0RhdGE6IFJvd0RhdGFPcHRpb247XG59XG5leHBvcnQgY2xhc3MgUm93RGF0YU9wdGlvbiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBJc0VtcHR5OiBib29sZWFuO1xuICAgIHR4dDogc3RyaW5nO1xuICAgIHR4dF9zYWZlPzogc3RyaW5nO1xuICAgIHVybDogc3RyaW5nO1xufVxuZXhwb3J0IGNsYXNzIERhdGVUaW1lQ29udHJvbEluZm9Nb2RlbCBleHRlbmRzIEdlbmVyYWxDb250cm9sSW5mb01vZGVsIHtcbiAgICBDYWxlbmRhclR5cGU6IHN0cmluZztcbiAgICBEYXRlRm9ybWF0OiBzdHJpbmc7XG4gICAgU2hvd0RhdGUxOiBib29sZWFuO1xuICAgIFNob3dUaW1lMTogYm9vbGVhbjtcbiAgICBUaW1lRm9ybWF0OiBzdHJpbmc7XG59XG5leHBvcnQgY2xhc3MgQm9vbENvbnRyb2xJbmZvTW9kZWwgZXh0ZW5kcyBHZW5lcmFsQ29udHJvbEluZm9Nb2RlbCB7XG4gICAgRmFsc2VDYXB0aW9uOiBzdHJpbmc7XG4gICAgVHJ1ZUNhcHRpb246IHN0cmluZztcbiAgICBUcnVlSWNvbjogc3RyaW5nO1xuICAgIFZpZXdUeXBlOiBzdHJpbmc7XG4gICAgRmFsc2VJY29uOiBzdHJpbmc7XG59XG5leHBvcnQgY2xhc3MgQ2FsY3VsYXRlQ29udHJvbEluZm9Nb2RlbCBleHRlbmRzIEdlbmVyYWxDb250cm9sSW5mb01vZGVsIHtcbiAgICBJbm5lckN0cmxyOiBDb250cm9sSW5mb1R5cGVzO1xuICAgIEV4ZWN1dGFpb25UaW1lOiBzdHJpbmc7XG4gICAgRWRpdFR5cGU6IHN0cmluZztcbiAgICBEb250U2hvd1JlY2FsY3VsYXRlQnV0dG9uOiBib29sZWFuO1xufVxuZXhwb3J0IGNsYXNzIFN1YmZvcm1Db250cm9sSW5mb01vZGVsIGV4dGVuZHMgR2VuZXJhbENvbnRyb2xJbmZvTW9kZWwge1xuICAgIFR5cGVEZWZJZDogYW55O1xuICAgIFR5cGVEZWZJY29uOiBzdHJpbmc7XG4gICAgSXNDb21wb3NlZFJlbGF0aW9uOiBzdHJpbmc7XG4gICAgRHJvcERvd25SZXBvcnRJZDogc3RyaW5nO1xuICAgIFR5cGVWaWV3SWQ6IHN0cmluZztcbiAgICBGb3JtUGFuZWxTZXR0aW5nOiBGb3JtU2V0dGluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRG93bmxvYWRGaWxlSW5mbyB7XG4gICAgZmlsZUlkOiBzdHJpbmc7XG4gICAgZmlsZVVybDogc3RyaW5nO1xuICAgIHZpZXdJbkJyb3dzZXI6IGJvb2xlYW47XG4gICAgY29udmVydFRvOiBzdHJpbmc7XG4gICAgaXNPZmZpY2VPbmxpbmU6IGJvb2xlYW47XG4gICAgZm9yT2N4OiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBEb3dubG9hZEZpbGVJbmZvUmVzdWx0IHtcbiAgICBmaWxlbmFtZTogc3RyaW5nO1xuICAgIGNvbnRlbnQ6IHN0cmluZztcbiAgICBjb250ZW50VHlwZTogc3RyaW5nO1xuICAgIHN1Y2NlZWQ6IGJvb2xlYW47XG59XG5leHBvcnQgY2xhc3MgTGluZWFyTGlzdENvbnRyb2xJbmZvTW9kZWwgZXh0ZW5kcyBHZW5lcmFsQ29udHJvbEluZm9Nb2RlbCB7XG4gICAgRGVmYXVsdEZpZWxkOiBzdHJpbmc7XG4gICAgRXh0cmFKc29uUHJvcEZpZWxkOiBzdHJpbmc7XG4gICAgRmlsbEJlZm9yZURyb3BEb3duOiBib29sZWFuO1xuICAgIElzR2VuZXJhbEluZm86IGJvb2xlYW47XG4gICAgSXNNdWx0aVNlbGVjdDogYm9vbGVhbjtcbiAgICBSZWxhdGlvbjogTGlzdFJlbGF0aW9uTW9kZWw7XG4gICAgUmVsYXRpb25WaWV3VHlwZTogc3RyaW5nO1xuICAgIFJvd0ljb246IHN0cmluZztcbiAgICBUYXJnZXRUeXBlRGVmSWQ6IHN0cmluZztcbn1cbmV4cG9ydCBjbGFzcyBMaXN0UmVsYXRpb25Nb2RlbCB7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgIENoaWxkRmRJZDogc3RyaW5nO1xuICAgIENoaWxkRmROYW1lOiBzdHJpbmc7XG4gICAgSXNBdXRvU2F2ZTogYm9vbGVhbjtcbiAgICBQYXJlbnRNb0lkOiBzdHJpbmc7XG4gICAgUmVsYXRpb25UeXBlOiBzdHJpbmc7XG59XG5leHBvcnQgY2xhc3MgU2luZ2xlUmVsYXRpb25Db250cm9sSW5mb01vZGVsIGV4dGVuZHMgR2VuZXJhbENvbnRyb2xJbmZvTW9kZWwge1xuICAgIENvbHVtblJlcXVlc3RFbnVtOiBzdHJpbmc7XG4gICAgRHJvcERvd25SZXBvcnRJZDogc3RyaW5nO1xuICAgIEZpbGxCZWZvcmVEcm9wRG93bjogYm9vbGVhbjtcbiAgICBIaWRlQ29tYm86IGJvb2xlYW47XG4gICAgUmVsYXRpb25WaWV3VHlwZTogc3RyaW5nO1xuICAgIFBhc3NQYXJlbnRGb3JtOiBib29sZWFuO1xuICAgIFNob3dOZXdCdXR0b246IGJvb2xlYW47XG4gICAgU2hvd09rQ2FuY2VsOiBib29sZWFuO1xuICAgIFZpZXdSZWxhdGVkRm9ybVR5cGU6IHN0cmluZztcbiAgICBUYXJnZXRUeXBlRGVmSWQ6IHN0cmluZztcbiAgICBEYXRhU291cmNlOiB7XG4gICAgICAgIFJvd3M6IFJvd0RhdGFPcHRpb25bXTtcbiAgICB9O1xuICAgIFByZXZpZXdGaWVsZENhcHRpb246IHN0cmluZztcbiAgICBQcmV2aWV3RmllbGRJZDogc3RyaW5nO1xuICAgIFByZXZpZXdGaWVsZE5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgQ29udHJvbEluZm9UeXBlcyA9XG4gICAgfCBTdWJmb3JtQ29udHJvbEluZm9Nb2RlbFxuICAgIHwgQ2FsY3VsYXRlQ29udHJvbEluZm9Nb2RlbFxuICAgIHwgQm9vbENvbnRyb2xJbmZvTW9kZWxcbiAgICB8IEVudW1Db250cm9sSW5mb01vZGVsXG4gICAgfCBJY29uQ29udHJvbEluZm9Nb2RlbFxuICAgIHwgRmlsZUNvbnRyb2xJbmZvTW9kZWxcbiAgICB8IERhdGVUaW1lQ29udHJvbEluZm9Nb2RlbFxuICAgIHwgTnVtYmVyQ29udHJvbEluZm9Nb2RlbFxuICAgIHwgU3RyaW5nQ29udHJvbEluZm9Nb2RlbFxuICAgIHwgUGljdHVyZUZpbGVDb250cm9sSW5mb01vZGVsXG4gICAgfCBHYXVnZUNvbnRyb2xJbmZvTW9kZWxcbiAgICB8IENvbW1hbmRDb250cm9sSW5mb01vZGVsXG4gICAgfCBDb2RlRWRpdG9yQ29udHJvbEluZm9Nb2RlbDtcblxuZXhwb3J0IGludGVyZmFjZSBGb3JtVmlld1NldHRpbmcge1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICBMYXlvdXQ5NDogYW55O1xuICAgIENvbnRyb2xJbmZvOiBHZW5lcmFsQ29udHJvbEluZm9Nb2RlbFtdO1xufVxuZXhwb3J0IGludGVyZmFjZSBGb3JtU2V0dGluZyB7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgIERhdGE6IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICBNbzogTWV0YW9iamVjdERhdGFNb2RlbDtcbiAgICB9O1xuICAgIFZpZXc6IEZvcm1WaWV3U2V0dGluZztcbn1cblxuZXhwb3J0IGNsYXNzIE1ldGFvYmplY3REYXRhTW9kZWwge1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAkRmllbGREaWN0PzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgICAkUmVwb3J0SWQ/OiBzdHJpbmc7XG4gICAgJFR5cGU/OiBzdHJpbmc7XG4gICAgJFN0eWxlSW5kZXg/OiBudW1iZXJbXTtcbiAgICAkQ2FwdGlvbjogc3RyaW5nO1xuICAgICRJY29uPzogc3RyaW5nO1xuICAgICRTdGF0ZT86IHN0cmluZztcbiAgICAkVHlwZURlZklkPzogc3RyaW5nO1xuICAgICRUeXBlRGVmTmFtZT86IHN0cmluZztcbiAgICAkQ2hpbGRyZW4/OiBNZXRhb2JqZWN0RGF0YU1vZGVsW107XG4gICAgSW5oZXJpdGFuY2U/OiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xuICAgIEluaGVyaXRhbmNlSW5mbz86IHtcbiAgICAgICAgQ2hpbGRGaWVsZE5hbWU6IHN0cmluZztcbiAgICAgICAgUGFyZW50RmllbGROYW1lOiBzdHJpbmc7XG4gICAgfTtcbiAgICBJZDogc3RyaW5nO1xufVxuZXhwb3J0IGRlY2xhcmUgY2xhc3MgQ2FsZW5kYXJNZXRhb2JqZWN0RGF0YU1vZGVsIGV4dGVuZHMgTWV0YW9iamVjdERhdGFNb2RlbCB7XG4gICAgJENvbG9yOiBzdHJpbmc7XG4gICAgJE1vbWVudFN0YXJ0RGF0ZTogc3RyaW5nO1xuICAgICRNb21lbnRFbmREYXRlOiBzdHJpbmc7XG4gICAgJFN0YXJ0VGltZXM6IHN0cmluZztcbiAgICAkRW5kVGltZXM6IHN0cmluZztcbiAgICAkVGl0bGU6IHN0cmluZztcbiAgICAkTm90ZXM6IHN0cmluZztcbiAgICAkU3RhcnREYXRlSW5mbz86IERhdGVJbmZvU2VydmljZTtcbiAgICAkRW5kRGF0ZUluZm8/OiBEYXRlSW5mb1NlcnZpY2U7XG59XG5cbmV4cG9ydCBjbGFzcyBNb0ZvclJlcG9ydE1vZGVsIHtcbiAgICAkVHlwZT86IHN0cmluZztcbiAgICBUeXBlRGVmSWQ6IHN0cmluZztcbiAgICBSZXBvcnRJZDogc3RyaW5nO1xuICAgIEljb24/OiBzdHJpbmc7XG4gICAgTW9EYXRhTGlzdDogQXJyYXk8TWV0YW9iamVjdERhdGFNb2RlbD47XG4gICAgRGVsZXRlZExpc3Q6IEFycmF5PHsgSWQ6IHN0cmluZzsgVHlwZURlZklkOiBzdHJpbmcgfT47XG4gICAgQWRkZWRMaXN0OiBBcnJheTx7IElkOiBzdHJpbmc7IFR5cGVEZWZJZDogc3RyaW5nIH0+O1xuICAgIFBhZ2luZzogUGFnaW5nU2V0dGluZztcbiAgICBSZWxhdGlvbj86IHtcbiAgICAgICAgUmVsYXRpb25UeXBlOiBzdHJpbmc7XG4gICAgICAgIFBhcmVudE1vSWQ6IHN0cmluZztcbiAgICAgICAgUGFyZW50RmRJZDogc3RyaW5nO1xuICAgICAgICBDaGlsZEZkSWQ6IHN0cmluZztcbiAgICAgICAgUGFyZW50RmROYW1lOiBzdHJpbmc7XG4gICAgICAgIENoaWxkRmROYW1lOiBzdHJpbmc7XG4gICAgICAgIFBhc3NQYXJlbnRNb0ZpZWxkOiBzdHJpbmc7XG4gICAgICAgIElzQXV0b1NhdmU6IGJvb2xlYW47XG4gICAgICAgIElzQXV0b1NhdmVfUmVsb2FkUGFyZW50Rm9ybXM6IGJvb2xlYW47XG4gICAgICAgIElzQXV0b1NhdmVfUmVsb2FkUm9vdFBhcmVudExpc3Q6IGJvb2xlYW47XG4gICAgfTtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5EZWxldGVkTGlzdCA9IHRoaXMuQWRkZWRMaXN0ID0gdGhpcy5Nb0RhdGFMaXN0ID0gW107XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFJlcG9ydEJhc2VJbmZvIHtcbiAgICBJZDogc3RyaW5nO1xuICAgIENhcHRpb246IHN0cmluZztcbiAgICBGb2xkZXJJZDogc3RyaW5nO1xuICAgIEljb25Vcmw6IHN0cmluZztcbiAgICBOYW1lOiBzdHJpbmc7XG4gICAgUmVwb3J0SWQ6IHN0cmluZztcbn1cbmV4cG9ydCBjbGFzcyBSZXBvcnRFeHRyYUluZm8gZXh0ZW5kcyBSZXBvcnRCYXNlSW5mbyB7XG4gICAgVHlwZURlZklkOiBzdHJpbmc7XG4gICAgVHlwZURlZkNhcHRpb246IHN0cmluZztcbiAgICBSZXBvcnRUeXBlOiBzdHJpbmc7XG4gICAgSGlkZVRvb2xiYXI6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBNZXRhb2JqZWN0UmVsYXRpb25Nb2RlbCBleHRlbmRzIExpc3RSZWxhdGlvbk1vZGVsIHtcbiAgICBQYXJlbnRGZElkOiBzdHJpbmc7XG4gICAgUGFzc1BhcmVudE1vRmllbGQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGVudW0gRmllbGRJbmZvVHlwZUVudW0ge1xuICAgIEludEluZm8gPSAwLFxuICAgIFN0cmluZ0luZm8gPSAyLFxuICAgIERhdGVJbmZvID0gMyxcbiAgICBCb29sSW5mbyA9IDUsXG4gICAgRW51bUluZm8gPSA2LFxuICAgIFVzZXJJbmZvID0gNyxcbiAgICBDYXRlZ29yeUluZm8gPSA4LFxuICAgIE1ldGFPYmplY3RJbmZvID0gOSxcbiAgICBDb21tYW5kSW5mbyA9IDEwLCAvLyAweDAwMDAwMDBBXG4gICAgUGljdHVyZXNJbmZvID0gMTEsIC8vIDB4MDAwMDAwMEJcbiAgICBSZWxhdGlvbkluZm8gPSAxMiwgLy8gMHgwMDAwMDAwQ1xuICAgIEhpc3RvcnlJbmZvID0gMTMsIC8vIDB4MDAwMDAwMERcbiAgICBSZWxhdGlvbkluZm9SZXZlcnNlX0Frc0xpc3RpID0gMTQsIC8vIDB4MDAwMDAwMEVcbiAgICBDcmVhdG9yVXNlckluZm8gPSAxNSwgLy8gMHgwMDAwMDAwRlxuICAgIENyZWF0aW9uRGF0ZUluZm8gPSAxNiwgLy8gMHgwMDAwMDAxMFxuICAgIExhc3RVcGRhdGVEYXRlSW5mbyA9IDE3LCAvLyAweDAwMDAwMDExXG4gICAgUmVtaW5kZXJJbmZvID0gMTgsIC8vIDB4MDAwMDAwMTJcbiAgICBSaWNoU3RyaW5nSW5mbyA9IDE5LCAvLyAweDAwMDAwMDEzXG4gICAgQ29udmVydENvbW1hbmRJbmZvID0gMjAsIC8vIDB4MDAwMDAwMTRcbiAgICBSZWxhdGlvbkluZm9TaW5nbGVSZXZlcnNlX0Frc1Rha2lMaXN0aSA9IDIxLCAvLyAweDAwMDAwMDE1XG4gICAgRGlhbENvbW1hbmRJbmZvID0gMjIsIC8vIDB4MDAwMDAwMTZcbiAgICBGaW5kQ29udGFjdENvbW1hbmRJbmZvID0gMjMsIC8vIDB4MDAwMDAwMTdcbiAgICBTZXF1ZW5jZUNvbW1hbmRJbmZvID0gMjQsIC8vIDB4MDAwMDAwMThcbiAgICBDdXJyZW5jeUluZm8gPSAyNSwgLy8gMHgwMDAwMDAxOVxuICAgIFNpbmdsZVBpY3R1cmVJbmZvID0gMjYsIC8vIDB4MDAwMDAwMUFcbiAgICBXb3JkUmVwb3J0Q29tbWFuZEluZm8gPSAyNywgLy8gMHgwMDAwMDAxQlxuICAgIEhpZXJhcmNoaWNhbEluZm8gPSAyOCwgLy8gMHgwMDAwMDAxQ1xuICAgIFRpbWVTcGFuSW5mbyA9IDI5LCAvLyAweDAwMDAwMDFEXG4gICAgUmVwb3J0SW5mbyA9IDMwLCAvLyAweDAwMDAwMDFFXG4gICAgRmlsZUluZm8gPSAzMSwgLy8gMHgwMDAwMDAxRlxuICAgIFdvcmRGaWxlSW5mbyA9IDMyLCAvLyAweDAwMDAwMDIwXG4gICAgUGljdHVyZUZpbGVJbmZvID0gMzMsIC8vIDB4MDAwMDAwMjFcbiAgICBHYXVnZUluZm8gPSAzNCwgLy8gMHgwMDAwMDAyMlxuICAgIENvZGVJbmZvID0gMzUsIC8vIDB4MDAwMDAwMjNcbiAgICBXb3JrQ2VudGVySW5mbyA9IDM2LCAvLyAweDAwMDAwMDI0XG4gICAgSXNEZWxldGVkSW5mbyA9IDM3LCAvLyAweDAwMDAwMDI1XG4gICAgUm93TnVtYmVySW5mbyA9IDM4LCAvLyAweDAwMDAwMDI2XG4gICAgQmluYXJ5SW5mbyA9IDM5LCAvLyAweDAwMDAwMDI3XG4gICAgUmV2ZXJzZU1ldGFPYmplY3RJbmZvX0Frc1Rha2lUYWtpID0gNDAsIC8vIDB4MDAwMDAwMjhcbiAgICBDb2xvckluZm8gPSA0MSwgLy8gMHgwMDAwMDAyOVxuICAgIEljb25JbmZvID0gNDIsIC8vIDB4MDAwMDAwMkFcbiAgICBSZWZyZXNoRmllbGRDb21tYW5kSW5mbyA9IDQzLCAvLyAweDAwMDAwMDJCXG4gICAgUmVmZXJlbmNlRmllbGRJbmZvID0gNDQsIC8vIDB4MDAwMDAwMkNcbiAgICBTZWFyY2hDb21tYW5kSW5mbyA9IDQ1LCAvLyAweDAwMDAwMDJEXG4gICAgT3JkZXJJbmZvID0gNDYgLy8gMHgwMDAwMDAyRVxufVxuZXhwb3J0IGludGVyZmFjZSBDbGFzc05hbWVzTW9kZWwge1xuICAgIENvbW1hbmRCYXJDbGFzczogc3RyaW5nO1xuICAgIERhdGFDbGFzczogc3RyaW5nO1xuICAgIFNlbGVjdGlvbkNsYXNzOiBzdHJpbmc7XG4gICAgVmlld2VyQ2xhc3M6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRXh0cmFNb2RlbCB7XG4gICAgQ3VzdG9tQ29tbWFuZHM/OiBDdXN0b21Db21tYW5kW107XG4gICAgRGVmYXVsdENvbW1hbmRzQWNjZXNzPzogRGVmYXVsdENvbW1hbmRzQWNjZXNzO1xuICAgIFBhcmVudFVsdkNvbmZpZz86IGFueTtcbiAgICBSZWxhdGlvbj86IE1ldGFvYmplY3RSZWxhdGlvbk1vZGVsO1xuICAgIFJlcG9ydD86IFJlcG9ydEV4dHJhSW5mbztcbiAgICBFeHRyYUpzb25Qcm9wUmVwb3J0PzogYW55O1xufVxuXG5leHBvcnQgY2xhc3MgQmFzZVJlcG9ydE1vZGVsIHtcbiAgICBDbGFzc05hbWVzOiBDbGFzc05hbWVzTW9kZWw7XG4gICAgRXh0cmE6IEV4dHJhTW9kZWw7XG4gICAgVmlldzogVmlld1R5cGVzO1xuICAgIFNlYXJjaFBhbmVsOiBhbnk7XG4gICAgRGVmYXVsdEl0ZW1Db21wb25lbnQgPSAnUmVwb3J0RGVmYXVsdEl0ZW1Db21wb25lbnQnO1xufVxuZXhwb3J0IGludGVyZmFjZSBEZWZhdWx0Q29tbWFuZHNBY2Nlc3Mge1xuICAgIEFkZDogYm9vbGVhbjtcbiAgICBBZGRUb0xpc3Q6IGJvb2xlYW47XG4gICAgRGVsZXRlOiBib29sZWFuO1xuICAgIEVkaXQ6IGJvb2xlYW47XG4gICAgRXhwb3J0OiBib29sZWFuO1xuICAgIFByaW50OiBib29sZWFuO1xuICAgIFJlZnJlc2g6IGJvb2xlYW47XG4gICAgUmVtb3ZlRnJvbUxpc3Q6IGJvb2xlYW47XG4gICAgVmlldzogYm9vbGVhbjtcbn1cbmV4cG9ydCBjbGFzcyBDdXN0b21Db21tYW5kIHtcbiAgICBEYXRhOiBhbnk7XG4gICAgRGlzYWJsZVdoZW5SZWFkb25seTogYm9vbGVhbjtcbiAgICBIaWRlRGlzYWJsZTogYm9vbGVhbjtcbiAgICBJY29uVXJsOiBzdHJpbmc7XG4gICAgSXNMYXJnZTogYm9vbGVhbjtcbiAgICBNeXR5cGU6IHN0cmluZztcbiAgICBPcmRlcjogbnVtYmVyO1xuICAgIFNob3dPbkNvbnRleHQ6IGJvb2xlYW47XG4gICAgU2hvd09uVG9vbGJhcjogYm9vbGVhbjtcbiAgICBUZXh0OiBzdHJpbmc7XG4gICAgVXNlQWx3YXlzOiBib29sZWFuO1xuICAgIFVzZUZvck11bHRpOiBib29sZWFuO1xuICAgIFVzZUZvclNpbmdsZTogYm9vbGVhbjtcbn1cbmV4cG9ydCBjbGFzcyBSZXBvcnRNb2RlbCBleHRlbmRzIEJhc2VSZXBvcnRNb2RlbCB7XG4gICAgRGF0YTogTW9Gb3JSZXBvcnRNb2RlbDtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgUmVwb3J0TGlzdE1vZGVsIGV4dGVuZHMgQmFzZVJlcG9ydE1vZGVsIHtcbiAgICBWaWV3OiBHcmlkVmlldztcbn1cbmV4cG9ydCBjbGFzcyBSZXBvcnRGb3JtTW9kZWwgZXh0ZW5kcyBCYXNlUmVwb3J0TW9kZWwge1xuICAgIFZpZXc6IEZvcm1WaWV3O1xufVxuZXhwb3J0IGludGVyZmFjZSBUcmVlVmlldyB7XG4gICAgQ29uZGl0aW9uYWxGb3JtYXRzOiBbXTtcbiAgICBQYXJlbnRJZERiTmFtZTogc3RyaW5nO1xuICAgIFNob3dTZWxlY3Rpb25DaGVja3M6IGJvb2xlYW47XG4gICAgVHJlZUF1dG9PcGVuTGV2ZWxzOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JpZFZpZXcge1xuICAgIEFsbG93R3JpZENvbHVtblNvcnQ6IGJvb2xlYW47XG4gICAgQXV0b0lubGluZUVkaXQ6IGJvb2xlYW47XG4gICAgQ29sdW1uUmVxdWVzdEVudW06IHN0cmluZztcbiAgICBDb2x1bW5zOiBBcnJheTxSZXBvcnRWaWV3Q29sdW1uPjtcbiAgICBDb25kaXRpb25hbEZvcm1hdHM6IFtdO1xuICAgIERpc2FibGVSb3dSZWxvYWQ6IGJvb2xlYW47XG4gICAgR3JpZFNldHRpbmc6IEdyaWRTZXR0aW5nO1xuICAgIEdyaWRfRnJlZUNvbHVtblNpemluZzogYm9vbGVhbjtcbiAgICBHcmlkX0dyaWRMaW5lczogc3RyaW5nO1xuICAgIEdyaWRfSGlkZUhlYWRlcjogYm9vbGVhbjtcbiAgICBHcmlkX1Nob3dSb3dOdW1iZXI6IGJvb2xlYW47XG4gICAgSGFzQ29uZGl0aW9uYWxGb3JtYXQ6IGJvb2xlYW47XG4gICAgSGFzU3VtbWFyeVJvdzogYm9vbGVhbjtcbiAgICBIaWRlSWNvbjogYm9vbGVhbjtcbiAgICBJc0NoZWNrTGlzdDogYm9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ2FsZW5kYXJWaWV3IHtcbiAgICBDYWxlbmRhckZpZWxkczogQ2FsZW5kYXJGaWVsZHM7XG59XG5leHBvcnQgaW50ZXJmYWNlIEZvcm1WaWV3IHtcbiAgICBGb3JtUGFuZWxTZXR0aW5nOiBhbnk7XG59XG5leHBvcnQgdHlwZSBWaWV3VHlwZXMgPSBHcmlkVmlldyB8IENhbGVuZGFyVmlldyB8IFRyZWVWaWV3IHwgRm9ybVZpZXc7XG5cbmV4cG9ydCB0eXBlIFJlcG9ydE1vZGVsVHlwZXMgPSBSZXBvcnRMaXN0TW9kZWwgfCBSZXBvcnRDYWxlbmRhck1vZGVsIHwgUmVwb3J0Rm9ybU1vZGVsIHwgUmVwb3J0VHJlZU1vZGVsO1xuXG5leHBvcnQgY2xhc3MgUmVwb3J0Q2FsZW5kYXJNb2RlbCBleHRlbmRzIEJhc2VSZXBvcnRNb2RlbCB7XG4gICAgVmlldzogQ2FsZW5kYXJWaWV3O1xufVxuZXhwb3J0IGNsYXNzIFJlcG9ydFRyZWVNb2RlbCBleHRlbmRzIEJhc2VSZXBvcnRNb2RlbCB7XG4gICAgVmlldzogVHJlZVZpZXc7XG59XG5leHBvcnQgaW50ZXJmYWNlIENhbGVuZGFyRmllbGRzIHtcbiAgICBFbmREYXRlOiBzdHJpbmc7XG4gICAgTm90ZXM6IHN0cmluZztcbiAgICBTdGFydERhdGU6IHN0cmluZztcbiAgICBUaXRsZTogc3RyaW5nO1xuICAgIENvbG9yOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBSZXBvcnRWaWV3Q29sdW1uIHtcbiAgICBBbGlhczogc3RyaW5nO1xuICAgIENhcHRpb246IHN0cmluZztcbiAgICBGaWVsZERlZklkOiBzdHJpbmc7XG4gICAgRmllbGRUeXBlSWQ6IG51bWJlcjtcbiAgICBGaWVsZFR5cGU6IHN0cmluZztcbiAgICBIYXNTdW1tYXJ5OiBib29sZWFuO1xuICAgIEhpZGRlbjogYm9vbGVhbjtcbiAgICBJc0x0cjogYm9vbGVhbjtcbiAgICBJc1ByZXZpZXc6IGJvb2xlYW47XG4gICAgTWV0YUZpZWxkVHlwZUlkOiBzdHJpbmc7XG4gICAgTmFtZTogc3RyaW5nO1xuICAgIFdpZHRoOiBudW1iZXI7XG4gICAgVGFnPzogc3RyaW5nO1xuICAgIEljb246IHN0cmluZztcbiAgICBPbmx5SW1hZ2U/OiBib29sZWFuO1xuICAgIEV4dHJhPzogYW55O1xuICAgICRDb250ZW50V2lkdGg/OiBzdHJpbmc7XG4gICAgJFdpZHRoPzogc3RyaW5nO1xuICAgICRDb2x1bW5XaWR0aE51bT86IG51bWJlcjtcbiAgICAkQ29sdW1uV2lkdGg/OiBzdHJpbmc7XG4gICAgJEZpdENvbnRhaW5lcldpZHRoPzogc3RyaW5nO1xuICAgICRNZXJnZWRGaWVsZHNUb0NvbHVtbj86IHN0cmluZ1tdO1xuICAgICRDU1NDbGFzc05hbWU/OiBzdHJpbmc7XG4gICAgJEN1c3RvbUNvbXBvbmVudD86IEVqcmF5T2xnbztcbiAgICAkVGV4dFdpZHRoPzogbnVtYmVyO1xuICAgICRJc0ltYWdlT3JpY29uPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIEdyaWRTZXR0aW5nIHtcbiAgICBDb2xTZXR0aW5nTGlzdDogQXJyYXk8Q29sU2V0dGluZz47XG4gICAgU29ydFNldHRpbmdMaXN0OiBBcnJheTxTb3J0U2V0dGluZz47XG4gICAgQXV0b1NpemVDb2x1bW5zOiBib29sZWFuO1xufVxuZXhwb3J0IGNsYXNzIENvbFNldHRpbmcge1xuICAgIE5hbWU6IHN0cmluZztcbiAgICBXaWR0aDogbnVtYmVyO1xuICAgIElzSGlkZGVuOiBib29sZWFuO1xufVxuZXhwb3J0IGNsYXNzIFNvcnRTZXR0aW5nIHtcbiAgICBOYW1lOiBzdHJpbmc7XG4gICAgU29ydERpcmVjdGlvbjogc3RyaW5nO1xuICAgIElzR3JvdXBlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIFJlcG9ydEZpZWxkIHtcbiAgICBwdWJsaWMga2V5OiBzdHJpbmc7XG4gICAgcHVibGljIHZhbHVlOiBzdHJpbmc7XG4gICAgcHVibGljIGNhcHRpb246IHN0cmluZztcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgY29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uLCBwdWJsaWMgaXRlbTogYW55KSB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBjb2x1bW4uTmFtZTtcbiAgICAgICAgdGhpcy5jYXB0aW9uID0gY29sdW1uLkNhcHRpb247XG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLml0ZW1bbmFtZV07XG4gICAgICAgIGlmIChOdW1iZXIoY29sdW1uLkZpZWxkVHlwZUlkKSA9PT0gRmllbGRJbmZvVHlwZUVudW0uRGF0ZUluZm8pIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLml0ZW1bbmFtZSArICckQ2FwdGlvbiddO1xuICAgICAgICB9XG4gICAgICAgIGlmIChOdW1iZXIoY29sdW1uLkZpZWxkVHlwZUlkKSA9PT0gRmllbGRJbmZvVHlwZUVudW0uSWNvbkluZm8pIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLml0ZW1bbmFtZV0uVXJsO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2luUmVzdWx0IHtcbiAgICBkYXRhOiB7IHN0aDogc3RyaW5nIH07XG59XG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudFNldHRpbmdzRGF0YU1vZGVsIGV4dGVuZHMgTWV0YW9iamVjdERhdGFNb2RlbCB7XG4gICAgUGxhY2VIb2xkZXJzPzogUGxhY2VIb2xkZXJEYXRhTW9kZWxbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50RGF0YU1vZGVsIGV4dGVuZHMgTWV0YW9iamVjdERhdGFNb2RlbCB7XG4gICAgU2VsZWN0b3I6IHN0cmluZztcbiAgICBTZXR0aW5nczogQ29tcG9uZW50U2V0dGluZ3NEYXRhTW9kZWw7XG59XG5leHBvcnQgaW50ZXJmYWNlIFBsYWNlSG9sZGVyRGF0YU1vZGVsIGV4dGVuZHMgTWV0YW9iamVjdERhdGFNb2RlbCB7XG4gICAgTmFtZTogc3RyaW5nO1xuICAgIFRpdGxlOiBzdHJpbmc7XG4gICAgSXNQYWdlOiBib29sZWFuO1xuICAgIE9yZGVyTnVtYmVyOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kdWxlRGF0YU1vZGVsIGV4dGVuZHMgTWV0YW9iamVjdERhdGFNb2RlbCB7XG4gICAgVGl0bGU6IHN0cmluZztcbiAgICBQbGFjZUhvbGRlcjogUGxhY2VIb2xkZXJEYXRhTW9kZWw7XG4gICAgQ29tcG9uZW50OiBDb21wb25lbnREYXRhTW9kZWw7XG59XG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VMaXN0UmVwb3J0TW9kZWwgZXh0ZW5kcyBNb0ZvclJlcG9ydE1vZGVsIHtcbiAgICBNb0RhdGFMaXN0OiBBcnJheTxQYWdlRGF0YU1vZGVsPjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgTW9kdWxlTGlzdFJlcG9ydE1vZGVsIGV4dGVuZHMgTW9Gb3JSZXBvcnRNb2RlbCB7XG4gICAgTW9EYXRhTGlzdDogQXJyYXk8TW9kdWxlRGF0YU1vZGVsPjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZURhdGFNb2RlbCBleHRlbmRzIE1ldGFvYmplY3REYXRhTW9kZWwge1xuICAgIENvbXBvbmVudDogQ29tcG9uZW50RGF0YU1vZGVsO1xuICAgIE1vZHVsZUxpc3Q6IE1vZHVsZUxpc3RSZXBvcnRNb2RlbDtcbiAgICBDaGlsZFBhZ2VMaXN0OiBQYWdlTGlzdFJlcG9ydE1vZGVsO1xuICAgIFRpdGxlOiBzdHJpbmc7XG4gICAgUm91dGU6IHN0cmluZztcbiAgICBJc0RlZmF1bHRSb3V0ZTogc3RyaW5nO1xuICAgIElzTG9naW5Sb3V0ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBvcnRhbERhdGFNb2RlbCBleHRlbmRzIFBhZ2VEYXRhTW9kZWwge1xuICAgIElzQWN0aXZlOiBib29sZWFuO1xuICAgIElzUHdhOiBib29sZWFuO1xuICAgIFBvcnRhbFNldHRpbmdzOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xufVxuZXhwb3J0IGludGVyZmFjZSBHcm91cFZpc2liaWxpdHkge1xuICAgIGVuYWJsZTogYm9vbGVhbjtcbiAgICB2aXNpYmxlOiBib29sZWFuO1xuICAgIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElIZWFkZXJMYXlvdXQge1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICBUaXRsZTogc3RyaW5nO1xuICAgIFN1YnRpdGxlOiBzdHJpbmc7XG4gICAgQXZhdGFyOiBhbnk7XG4gICAgRmFjZXRMaXN0OiB7IE1vRGF0YUxpc3Q6IE1ldGFvYmplY3REYXRhTW9kZWxbXSB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1lbnVJdGVtIHtcbiAgICBpY29uOiBzdHJpbmc7XG4gICAgdGV4dDogc3RyaW5nO1xuICAgIGl0ZW1JZDogc3RyaW5nO1xuICAgIERhdGE6IGFueTtcbiAgICBDb21tYW5kOiBhbnk7XG4gICAgaGFuZGxlcjogKCkgPT4gdm9pZDtcbiAgICBJc0J1aWx0aW4/OiBib29sZWFuO1xuICAgIG1lbnU/OiB7IGl0ZW1zOiBNZW51SXRlbVtdIH07XG59XG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luZ1NldHRpbmcge1xuICAgIEVuZEluZGV4OiBudW1iZXI7XG4gICAgSGFzUGFnaW5nOiBib29sZWFuO1xuICAgIFBhZ2U6IG51bWJlcjtcbiAgICBQYWdlU2l6ZTogbnVtYmVyO1xuICAgIFJvd0NvdW50OiBudW1iZXI7XG4gICAgU3RhcnRJbmRleDogbnVtYmVyO1xuICAgIFRvdGFsUGFnZXM6IG51bWJlcjtcbiAgICBUb3RhbFJvd3M6IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uSW5mb1R5cGUge1xuICAgIE5hbWU6IHN0cmluZztcbiAgICBIaWRkZW46IGJvb2xlYW47XG4gICAgQ2FwdGlvbjogc3RyaW5nO1xuICAgIElzTWFuZGF0b3J5PzogYm9vbGVhbjtcbiAgICBXaWR0aDogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hQYW5lbFNldHRpbmdzIGV4dGVuZHMgTWV0YW9iamVjdERhdGFNb2RlbCB7XG4gICAgVGl0bGU6IHN0cmluZztcbiAgICBSZXBvcnRJZDogc3RyaW5nO1xuICAgIElzRGVmYXVsdDogYm9vbGVhbjtcbiAgICBJc1B1YmxpYzogYm9vbGVhbjtcbiAgICBBcHBseUF1dG9tYXRpY2FsbHk6IGJvb2xlYW47XG4gICAgU2VhcmNoTW8/OiBzdHJpbmc7XG4gICAgRmllbGRzU2V0dGluZz86IHN0cmluZztcbn1cbmV4cG9ydCBkZWNsYXJlIHR5cGUgRGV2aWNlU2l6ZSA9ICdkZXNrdG9wJyB8ICdtb2JpbGUnIHwgJ3RhYmxldCc7XG5leHBvcnQgY29uc3QgRGF0ZVJhbmdlcyA9IFtcbiAgICAnRGF0ZVJfTm9uZScsXG4gICAgJ0RhdGVSX1NwZWNpZmljUmFuZ2UnLFxuICAgICdEYXRlUl9Ub2RheScsXG4gICAgJ0RhdGVSX1RoaXNXZWVrJyxcbiAgICAnRGF0ZVJfVGhpc01vbnRoJyxcbiAgICAnRGF0ZVJfVGhpc1llYXInLFxuICAgICdEYXRlUl9EYXlzQmVmb3JlJyxcbiAgICAnRGF0ZVJfUHJldldlZWsnLFxuICAgICdEYXRlUl9QcmV2TW9udGgnLFxuICAgICdEYXRlUl9QcmV2WWVhcicsXG4gICAgJ0RhdGVSX0RheXNBZnRlcicsXG4gICAgJ0RhdGVSX05leHRXZWVrJyxcbiAgICAnRGF0ZVJfTmV4dE1vbnRoJyxcbiAgICAnRGF0ZVJfTmV4dFllYXInXG5dO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVpUmVwb3J0Vmlld0Jhc2Uge1xuICAgIFVpQ29tcG9uZW50OiB7XG4gICAgICAgIENvbXBvbmVudDogYm9vbGVhbjtcbiAgICAgICAgTW9kdWxlOiBzdHJpbmc7XG4gICAgICAgIE1vZHVsZUZpbGVOYW1lOiBzdHJpbmc7XG4gICAgICAgIE5hbWU6IHN0cmluZztcbiAgICAgICAgU2VsZWN0b3I6IHN0cmluZztcbiAgICAgICAgU2V0dGluZ3M6IFVpUmVwb3J0Vmlld0Jhc2VTZXR0aW5nO1xuICAgIH07XG59XG5leHBvcnQgaW50ZXJmYWNlIFVpUmVwb3J0Vmlld0Jhc2VTZXR0aW5nIHtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgVHlwZTogc3RyaW5nO1xuICAgIEljb246IHN0cmluZztcbiAgICBJc0RlZmF1bHQ6IGJvb2xlYW47XG4gICAgSGlkZGVuOiBib29sZWFuO1xuICAgIEVuYWJsZVNlYXJjaDogYm9vbGVhbjtcbiAgICBEaXNhYmxlUmVzcG9uc2l2ZT86IGJvb2xlYW47XG4gICAgRGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnU/OiBib29sZWFuO1xuICAgIEhvcml6b250YWxHcm91cEJ5OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExheW91dFNldHRpbmcge1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICBUaXRsZT86IHN0cmluZztcbiAgICB4dHlwZTogc3RyaW5nO1xuICAgIFRleHRWaXNpYmxlPzogYm9vbGVhbjtcbiAgICBpdGVtczogTGF5b3V0U2V0dGluZ1tdO1xuICAgIElzUm9vdD86IGJvb2xlYW47XG4gICAgU2VsZWN0ZWRUYWJQYWdlTmFtZT86IHN0cmluZztcbn1cbmV4cG9ydCBkZWNsYXJlIHR5cGUgQWJicmV2YXRpb25EZXZpY2VTaXplID0gJ3MnIHwgJ20nIHwgJ2wnIHwgJ3hsJztcbmV4cG9ydCBpbnRlcmZhY2UgVHJlZU5vZGVPYmoge1xuICAgIGlzRXhwYW5kOiBib29sZWFuO1xuICAgIHZpc2liaWxpdHk6IGJvb2xlYW47XG4gICAgZXhwYW5kOiAoKSA9PiB2b2lkO1xuICAgIGNvbGxhcHNlOiAoKSA9PiB2b2lkO1xuICAgIERhdGE6IE1ldGFvYmplY3REYXRhTW9kZWw7XG4gICAgY2hpbGRyZW46IFRyZWVOb2RlT2JqW107XG4gICAgaWNvbjogc3RyaW5nO1xuICAgIGtleTogc3RyaW5nO1xuICAgIGxlYWY6IGJvb2xlYW47XG4gICAgdGV4dDogc3RyaW5nO1xuICAgIGxldmVsOiBudW1iZXI7XG4gICAgbG9hZGluZz86IGJvb2xlYW47XG4gICAgaGFzT25lRGVwdGhMZXZlbD86IGJvb2xlYW47XG4gICAgcGFyZW50Tm9kZTogVHJlZU5vZGVPYmogfCBudWxsO1xuICAgIGZpcnN0Q2hpbGQ6IFRyZWVOb2RlT2JqIHwgbnVsbDtcbiAgICBsYXN0Q2hpbGQ6IFRyZWVOb2RlT2JqIHwgbnVsbDtcbiAgICBwcmV2aW91c1NpYmxpbmc6IFRyZWVOb2RlT2JqIHwgbnVsbDtcbiAgICBuZXh0U2libGluZzogVHJlZU5vZGVPYmogfCBudWxsO1xuICAgIGF0dHJpYnV0ZXM6IHsgRGF0YTogTWV0YW9iamVjdERhdGFNb2RlbCB8IG51bGwgfTtcbiAgICBoYXNDaGlsZE5vZGVzOiAoKSA9PiBib29sZWFuO1xuICAgIG5vRHJvcDogYm9vbGVhbjtcbiAgICAkQ2hpbGRyZW4/OiBUcmVlTm9kZU9ialtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtblJlc2l6ZWRBcmdzIHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgd2lkdGg6IG51bWJlcjtcbiAgICB0aERvbTogSFRNTFRhYmxlQ2VsbEVsZW1lbnQ7XG59XG5leHBvcnQgdHlwZSBjb2x1bW5zUmVzaXplZEV2ZW50QXJncyA9IHsgY29sdW1uczogQXJyYXk8UmVwb3J0Vmlld0NvbHVtbj47IHJlc2l6ZWQ6IEFycmF5PENvbHVtblJlc2l6ZWRBcmdzPiB9O1xuZXhwb3J0IHR5cGUgUmVsYXRpb25JdGVtVHlwZSA9IHtcbiAgICBJZDogc3RyaW5nO1xuICAgIFNvdXJjZVR5cGVEZWZJZDogc3RyaW5nO1xuICAgIE9iamVjdEluUmVsYXRpb25OYW1lOiBzdHJpbmc7XG4gICAgR3JvdXBDYXB0aW9uOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEVqcmF5T2xnbyBleHRlbmRzIE1ldGFvYmplY3REYXRhTW9kZWwge1xuICAgIE1vZHVsZTogc3RyaW5nO1xuICAgIE1vZHVsZUZpbGVOYW1lOiBzdHJpbmc7XG4gICAgTmFtZTogc3RyaW5nO1xuICAgIFNlbGVjdG9yOiBzdHJpbmc7XG4gICAgUGFyYW1ldGVycz86IE1ldGFvYmplY3REYXRhTW9kZWw7XG4gICAgU2V0dGluZ3M/OiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElVcGxvYWRpbmdTdGF0ZSB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgdXBsb2FkaW5nOiBib29sZWFuO1xuICAgIHN0YXRlOiAnVXBsb2FkaW5nJyB8ICdFcnJvcicgfCAnQ29tcGxldGUnIHwgJ1N0YXJ0JztcbiAgICBwcm9ncmVzczogYW55O1xufVxuZXhwb3J0IHR5cGUgR3JvdXBCeUl0ZW0gPSB7IFtrZXk6IHN0cmluZ106IGFueTsgaWQ6IHN0cmluZzsga2V5OiBzdHJpbmc7IHZhbHVlOiBhbnlbXSB9O1xuZXhwb3J0IHR5cGUgTm90aWZ5T3B0aW9ucyA9IHtcbiAgICBTb3VuZDogYm9vbGVhbjsgLy8gU291bmQgb2Ygbm90aWZpY2F0aW9uLiBTZXQgdGhpcyBmYWxzZSB0byBkaXNhYmxlIHNvdW5kLlxuICAgIEltYWdlOiBzdHJpbmcgfCBudWxsOyAvLyBJbWFnZSBzb3VyY2Ugc3RyaW5nXG4gICAgVGl0bGU6IHN0cmluZyB8IG51bGw7IC8vIFRpdGxlIG9mIG5vdGlmaWNhdGlvbi4gSWYgeW91IGRvIG5vdCBpbmNsdWRlIHRoZSB0aXRsZSBpbiBvcHRpb25zIGl0IHdpbGwgYXV0b21hdGljYWxseSB0YWtlcyBpdHMgdmFsdWVcbiAgICBJY29uOiBib29sZWFuOyAvLyBJY29uIG9mIG5vdGlmaWNhdGlvbi4gTGVhdmUgYXMgaXMgZm9yIGRlZmF1bHQgaWNvbiBvciBzZXQgY3VzdG9tIHN0cmluZ1xuICAgIERlbGF5OiBudW1iZXI7IC8vIEhpZGUgbm90aWZpY2F0aW9uIGFmdGVyIHRoaXMgdGltZSAoaW4gbWlsaXNlY29uZHMpXG4gICAgQ2xvc2FibGU6IGJvb2xlYW47IC8vIE1ha2Ugbm90aWZpY2F0aW9ucyBjbG9zYWJsZVxuICAgIERlbGF5SW5kaWNhdG9yOiBib29sZWFuOyAvLyBTaG93IHRpbWVyIGluZGljYXRvclxuICAgIENsb3NlT25DbGljazogYm9vbGVhbjsgLy8gQ2xvc2Ugbm90aWZpY2F0aW9ucyBieSBjbGlja2luZyBvbiB0aGVtXG4gICAgSXNSdGw6IGJvb2xlYW47XG4gICAgUG9zaXRpb246IHN0cmluZyB8IG9iamVjdDsgLy8gQXZhaWxhYmxlIG9wdGlvbnM6IFwidG9wIGxlZnRcIiwgXCJ0b3AgcmlnaHRcIiwgXCJib3R0b20gbGVmdFwiLCBcImJvdHRvbSByaWdodFwiLCBcImNlbnRlciB0b3BcIiwgXCJjZW50ZXIgYm90dG9tXCJcbiAgICBTb3VuZFBhdGg6IHN0cmluZzsgLy8gVGhlIGZvbGRlciBwYXRoIHdoZXJlIHNvdW5kcyBhcmUgbG9jYXRlZFxuICAgIFNpemU6IHN0cmluZzsgLy8gbm9ybWFsLCBtaW5pLCBsYXJnZVxuICAgIENvbnRpbnVlRGVsYXlPbkluYWN0aXZlVGFiOiBib29sZWFuOyAvLyBDb250aW51ZSBkZWxheSB3aGVuIGJyb3dzZXIgdGFiIGlzIGluYWN0aXZlXG4gICAgV2lkdGg6IG51bWJlcjsgLy8gV2lkdGggb2Ygbm90aWZpY2F0aW9uIGJveFxuICAgIE1lc3NhZ2VIZWlnaHQ6IG51bWJlcjsgLy8gTm90aWZpY2F0aW9uIG1lc3NhZ2UgbWF4aW11bSBoZWlnaHQuXG4gICAgTm90aWZpY2F0aW9uSXRlbT86IE5vdGlmaWNhdGlvbkl0ZW07XG59O1xuZXhwb3J0IHR5cGUgU2hhcmVCdXR0b25zQ2hvaWNlRGVmID0ge1xuICAgIGZvcm1QYW5lbEN0cmxyOiBhbnk7XG4gICAgbW86IE1ldGFvYmplY3REYXRhTW9kZWw7XG4gICAgY2hvaWNlTGlzdDogQ2hvaWNlRGVmW107XG4gICAgYWRkOiBib29sZWFuO1xufTtcbmV4cG9ydCB0eXBlIENob2ljZURlZiA9IHtcbiAgICBBY3Rpdml0eURlZklkOiBzdHJpbmc7XG4gICAgQWN0aXZpdHlSdW5JZDogc3RyaW5nO1xuICAgIENob2ljZURlZklkOiBzdHJpbmc7XG4gICAgQ2hvaWNlTmFtZT86IHN0cmluZztcbiAgICBUaXRsZTogc3RyaW5nO1xuICAgIEljb24/OiBzdHJpbmc7XG4gICAgSGFzQmFyPzogYm9vbGVhbjtcbn07XG5leHBvcnQgdHlwZSBXb3JrZmxvd0V4ZWN1dGVDaG9pY2VTdGF0dXMgPSB7XG4gICAgbG9hZGluZzogYm9vbGVhbjtcbiAgICByZXN1bHQ6IGFueTtcbiAgICBlcnJvcjogYW55O1xuICAgIGNob2ljZT86IENob2ljZURlZjtcbn07XG5leHBvcnQgdHlwZSBOb3RpZmljYXRpb25QYXlsb2FkID0ge1xuICAgIG1zZzogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIGltYWdlOiBzdHJpbmc7XG4gICAgbW87XG4gICAgdWlPcHRpb25zOiBOb3RpZnlPcHRpb25zO1xuICAgIG90aGVyT3B0aW9uczogUmVjb3JkPHN0cmluZywgYW55Pjtcbn07XG5leHBvcnQgdHlwZSBOb3RpZmljYXRpb25BY3Rpb24gPSB7XG4gICAgVGl0bGU6IHN0cmluZztcbiAgICBJZDogc3RyaW5nO1xuICAgIEljb246IHN0cmluZztcbiAgICBTdGF0dXM6IHN0cmluZyB8IGFueTtcbn07XG5leHBvcnQgdHlwZSBOb3RpZmljYXRpb25JdGVtID0gTWV0YW9iamVjdERhdGFNb2RlbCAmIHtcbiAgICBUaXRsZTogc3RyaW5nO1xuICAgIFVucmVhZDogYm9vbGVhbjtcbiAgICBDb250ZW50OiBzdHJpbmc7XG4gICAgJFNhZmVDb250ZW50PzogU2FmZUh0bWw7XG4gICAgUHJpb3JpdHk6IG51bWJlcjtcbiAgICBTdWJqZWN0OiBzdHJpbmc7XG4gICAgVGFnOiBzdHJpbmc7XG4gICAgSWNvbjogc3RyaW5nO1xuICAgIEltYWdlOiBzdHJpbmc7XG4gICAgQ3JlYXRpb25EYXRlOiBEYXRlO1xuICAgIENyZWF0aW9uRGF0ZSRDYXB0aW9uOiBzdHJpbmc7XG4gICAgVWlBY3Rpb25zPzogTm90aWZpY2F0aW9uQWN0aW9uW107XG4gICAgJENob2ljZURlZlN0YXR1cz86IFdvcmtmbG93RXhlY3V0ZUNob2ljZVN0YXR1cztcbn07XG5cbmV4cG9ydCB0eXBlIEV4Tm90aWZpY2F0aW9uUGF5bG9hZCA9IHtcbiAgICBsYW5nOiBzdHJpbmc7XG4gICAgaXNSdGw6IGJvb2xlYW47XG4gICAgbm90aWZpY2F0aW9uSXRlbTogTm90aWZpY2F0aW9uSXRlbTtcbn07XG5leHBvcnQgdHlwZSBGb3JtVmlzaWJpbGl0eVN0YXR1cyA9ICdQZW5kaW5nJyB8ICdWaXNpYmxlJztcbmV4cG9ydCB0eXBlIENhcnRhYmxlVGVtcGxhdGVLZXkgPSB7IFR5cGVEZWZJZDogc3RyaW5nOyBTZXR0aW5nc0lkOiBzdHJpbmcgfTtcbmV4cG9ydCBlbnVtIFNvcnREaXJlY3Rpb24ge1xuICAgIE5PTkUgPSAnbm9uZScsXG4gICAgQVNDID0gJ2FzYycsXG4gICAgREVTQyA9ICdkZXNjJ1xufVxuZXhwb3J0IGludGVyZmFjZSBDb2xsZWN0aW9uU29ydCB7XG4gICAgZmllbGQ6IHN0cmluZyB8IG51bGw7XG4gICAgZGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uO1xuICAgIGlzTnVtYmVyPzogYm9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoSW5wdXQge1xuICAgIHRleHQ6IHN0cmluZztcbiAgICBjYXRlZ29yeTogc3RyaW5nIHwgbnVsbDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ29sbGVjdGlvbkdyb3VwIHtcbiAgICBmaWVsZDogc3RyaW5nO1xuICAgIGRpcmVjdGlvbjogU29ydERpcmVjdGlvbjtcbiAgICBzaG93QXNDb2x1bW46IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sbGVjdGlvblBhZ2Uge1xuICAgIHBhZ2VTaXplOiBudW1iZXI7XG4gICAgY3VycmVudFBhZ2U6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2xsZWN0aW9uU3RhdGUge1xuICAgIHNvcnRCeTogQ29sbGVjdGlvblNvcnRbXTtcbiAgICBncm91cEJ5OiBDb2xsZWN0aW9uR3JvdXBbXTtcbiAgICBwYWdlOiBDb2xsZWN0aW9uUGFnZTtcbiAgICBzZWFyY2hJbnB1dDogU2VhcmNoSW5wdXQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVTdGF0ZSBleHRlbmRzIENvbGxlY3Rpb25TdGF0ZSB7XG4gICAgY29sdW1uczogc3RyaW5nW107XG4gICAgY29sdW1uS2V5czogc3RyaW5nW107XG4gICAgZnJlZXplVG9Db2x1bW46IHN0cmluZyB8IG51bGw7XG59XG5leHBvcnQgZW51bSBTZWxlY3Rpb25Nb2RlIHtcbiAgICBTSU5HTEUgPSAnc2luZ2xlJyxcbiAgICBNVUxUSVBMRSA9ICdtdWx0aXBsZScsXG4gICAgTk9ORSA9ICdub25lJ1xufVxuZXhwb3J0IGludGVyZmFjZSBUeXBlVWx2TWFpbkN0cmxyIHtcbiAgICBBZGFwdGVyOiBhbnk7XG4gICAgU2V0dGluZzogYW55O1xuICAgIFN5c3RlbTogYW55O1xuICAgIFVsdlBhcmFtczogYW55O1xuICAgIEZlYXR1cmVzOiBhbnk7XG4gICAgVWlPdmVycmlkZTogYW55O1xuICAgIFNlYXJjaFBhbmVsQ3RybHI6IGFueTtcbiAgICBTZWxlY3Rpb25BZGFwdGVyOiBhbnk7XG4gICAgRGF0YUN0cmxyOiBUeXBlVWx2RGF0YUN0cmxyO1xuICAgIENvbW1hbmRCYXJDdHJscjogYW55O1xuICAgIFZpZXdlckFkYXB0ZXI6IGFueTtcbiAgICBQYXJlbnRNbzogYW55O1xuICAgIEZpZWxkQ3RybHI6IGFueTtcbiAgICBpc01hbmRhdG9yeTogYm9vbGVhbjsgLy8gcG9ydGFsIHVzZSBpdC4gY29tcG9uZW50IG1hZGFyZWtcbiAgICAvLy8gUmVsYXRlZCBmaWVsZCBvZiBVbHZcbiAgICAvLyBQYXJlbnRGaWVsZEluZm9DdHJscjogbnVsbCxcbiAgICBJc1ByZXZpZXdTb3VyY2VGaWVsZDogYm9vbGVhbjtcbiAgICAvLy8gSW5kaWNhdGUgd2hldGhlciB0aGlzIFVsdiBpcyB1c2VkIGFzIHJlbGF0aW9uIGZpZWxkIHRoYXQgaXMgUHJldmlld1NvdXJjZSBmb3IgYSBzdWJmb3JtXG4gICAgU2hvd09rQ2FuY2VsQnV0dG9uczogYm9vbGVhbjtcbiAgICBfaXNFbmFibGU6IGJvb2xlYW47XG4gICAgX2lzUmVhZE9ubHk6IGJvb2xlYW47XG4gICAgX2lzVmlzaWJsZTogYm9vbGVhbjtcbiAgICBGb290dGVyQnV0dG9uczogYm9vbGVhbjtcbiAgICBSZWZyZXNoUm93c0J5TW9zTm9TZWxlY3Rpb25DaGFuZ2UoXG4gICAgICAgIGVkaWRlZE1vczogTWV0YW9iamVjdERhdGFNb2RlbFtdLFxuICAgICAgICBhZGRlZE1vczogTWV0YW9iamVjdERhdGFNb2RlbFtdLFxuICAgICAgICBkZWxldGVkTW9zOiBNZXRhb2JqZWN0RGF0YU1vZGVsW11cbiAgICApOiB2b2lkO1xuICAgIFJlZnJlc2hSb3dzQnlNb3MoXG4gICAgICAgIGVkaWRlZE1vczogTWV0YW9iamVjdERhdGFNb2RlbFtdLFxuICAgICAgICBhZGRlZE1vczogTWV0YW9iamVjdERhdGFNb2RlbFtdLFxuICAgICAgICBkZWxldGVkTW9zOiBNZXRhb2JqZWN0RGF0YU1vZGVsW11cbiAgICApOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVVbHZEYXRhQ3RybHIge1xuICAgIEdldEVkaXRGb3JtUGFyYW1zKG1vLCBpc1JlYWRPbmx5LCBpc05ldywgaW5oZXJpdGFuY2VDaGlsZFR5cGVEZWYsIGRvUmV0dXJuKTogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUNvbXBvbmVudFBhcmFtcyB7XG4gICAgZm9ybVNldHRpbmc/OiBGb3JtU2V0dGluZztcbiAgICBtb0lkOiBzdHJpbmc7XG4gICAgdHlwZURlZklkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgcmVwb3J0SWQ/OiBzdHJpbmc7XG4gICAgdmlld0lkPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIFZpZXdOYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGluRGlhbG9nPzogYm9vbGVhbjtcbiAgICBpc1NpbXBsZT86IGJvb2xlYW47XG4gICAgbG9hZEFjdGl2aXR5Vmlldz86IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIEJydWxlQWN0aW9uTWVzc2FnZSB7XG4gICAgTWVzc2FnZVR5cGU6IG51bWJlcjtcbiAgICBFc2NhcGVDaGFyYWN0ZXJzOiBib29sZWFuO1xuICAgIE1lc3NhZ2VFeHByZXNzaW9uOiBzdHJpbmc7XG4gICAgTWVzc2FnZUV4cHJlc3Npb25IdG1sOiBTYWZlSHRtbDtcbn1cbmV4cG9ydCB0eXBlIENvbHVtblN1bW1hcnlUeXBlID0ge1xuICAgIG1vQXJyOiBNZXRhb2JqZWN0RGF0YU1vZGVsW107XG4gICAgY29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uO1xuICAgIGdyb3VwTmFtZTogc3RyaW5nO1xuICAgIGdyb3VwTGV2ZWw6IG51bWJlcjtcbiAgICBzdW1tYXJ5Rm46ICh2YWwpID0+IHZvaWQ7XG59O1xuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLXdpdGgtZHluYW1pYy1jb21wb25lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etbm92aW4tcmF5LWNvcmUvc3JjL2xpYi9hYnN0cmFjdC1jbGFzc2VzL21vZHVsZS13aXRoLWR5bmFtaWMtY29tcG9uZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuZXhwb3J0IHR5cGUgTW9kdWxlV2l0aER5bmFtaWNDb21wb25lbnRzID0gVHlwZTxhbnk+ICYge1xyXG4gICAgZHluYW1pY0NvbXBvbmVudHNNYXA6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xyXG59O1xyXG4iXX0=