studiokit-scaffolding-js 7.0.12-next.1.4 → 7.0.12-next.2.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 (258) hide show
  1. package/lib/components/ActionList.js +170 -34
  2. package/lib/components/AlertDialog.js +133 -9
  3. package/lib/components/AlertWithIcon.js +92 -25
  4. package/lib/components/ConnectedModal.js +43 -13
  5. package/lib/components/Dropdowns/GroupsDropdown.js +69 -44
  6. package/lib/components/Dropdowns/ManagedNavDropdown.js +100 -67
  7. package/lib/components/Dropdowns/UserDropdown.js +111 -21
  8. package/lib/components/Dropdowns/index.js +27 -9
  9. package/lib/components/EntityOwnerList.js +52 -18
  10. package/lib/components/Error.js +106 -11
  11. package/lib/components/ErrorBoundary.js +134 -35
  12. package/lib/components/ErrorMessage.js +44 -9
  13. package/lib/components/Forms/DateField.js +61 -42
  14. package/lib/components/Forms/TimeField.js +81 -42
  15. package/lib/components/Forms/index.js +27 -4
  16. package/lib/components/Groups/CreateEditCopySaveButtons.js +114 -11
  17. package/lib/components/Groups/ExternalGroups/Attach.js +212 -148
  18. package/lib/components/Groups/ExternalGroups/Table.js +181 -45
  19. package/lib/components/Groups/GroupCreateOrEditCommonProps.js +5 -1
  20. package/lib/components/Groups/RosterSyncInfo.js +147 -20
  21. package/lib/components/HOC/AccessibleAppComponent.js +98 -73
  22. package/lib/components/HOC/ActivityRequiredComponent.js +92 -49
  23. package/lib/components/HOC/AsyncComponent.js +54 -39
  24. package/lib/components/HOC/AuthenticatedComponent.js +58 -38
  25. package/lib/components/HOC/CollectionComponent.js +170 -110
  26. package/lib/components/HOC/CollectionFirstItemComponent.js +51 -38
  27. package/lib/components/HOC/CollectionItemComponent.js +168 -106
  28. package/lib/components/HOC/ConnectedModalComponent.js +109 -80
  29. package/lib/components/HOC/DataDependentComponent.js +29 -21
  30. package/lib/components/HOC/EntityComponent.js +71 -57
  31. package/lib/components/HOC/FullscreenModalComponent.js +163 -123
  32. package/lib/components/HOC/GroupActivityRequiredComponent.js +45 -31
  33. package/lib/components/HOC/GuidComponent.js +29 -22
  34. package/lib/components/HOC/ModelContextDependencyVerifyComponent.js +41 -31
  35. package/lib/components/HOC/ModelErrorRedirectComponent.js +51 -47
  36. package/lib/components/HOC/SearchPersistorComponent.js +240 -166
  37. package/lib/components/HOC/UnauthenticatedComponent.js +37 -25
  38. package/lib/components/HOC/UserComponent.js +12 -7
  39. package/lib/components/Icons/IconAlphaList.js +33 -5
  40. package/lib/components/Icons/IconExternalUser.js +33 -5
  41. package/lib/components/Icons/IconImpersonation.js +33 -5
  42. package/lib/components/Icons/IconStopImpersonating.js +33 -5
  43. package/lib/components/Icons/IconTable.js +35 -7
  44. package/lib/components/Icons/IconTableDeleteCol.js +33 -5
  45. package/lib/components/Icons/IconTableDeleteRow.js +33 -5
  46. package/lib/components/Icons/IconTableInsertCol.js +33 -5
  47. package/lib/components/Icons/IconTableInsertRow.js +33 -5
  48. package/lib/components/Impersonation/Button.js +77 -13
  49. package/lib/components/Impersonation/Link.js +77 -13
  50. package/lib/components/Impersonation/UserDetail.js +66 -9
  51. package/lib/components/Loading.js +26 -4
  52. package/lib/components/LockDownBrowser/Check.js +194 -49
  53. package/lib/components/LockDownBrowser/ExitButton.js +26 -9
  54. package/lib/components/LockDownBrowser/Launch.js +70 -62
  55. package/lib/components/Lti/Confirm.js +152 -11
  56. package/lib/components/Lti/CreateNonLtiGroupAlertDialog.js +170 -33
  57. package/lib/components/Lti/Launch.js +105 -24
  58. package/lib/components/Lti/LaunchGroup.js +85 -13
  59. package/lib/components/ManageTable.js +309 -87
  60. package/lib/components/ManageTableNoDataComponent.js +42 -4
  61. package/lib/components/NewVersionAlert.js +82 -46
  62. package/lib/components/NotFound.js +86 -10
  63. package/lib/components/Notifications.js +185 -126
  64. package/lib/components/PaginationNextButton.js +33 -6
  65. package/lib/components/PaginationPreviousButton.js +33 -6
  66. package/lib/components/Quill/CustomToolbar.js +432 -218
  67. package/lib/components/Quill/Formats/Image.js +73 -63
  68. package/lib/components/Quill/Formats/List.js +45 -45
  69. package/lib/components/Quill/Formats/Video.js +28 -24
  70. package/lib/components/Quill/ImageDropModule.js +147 -117
  71. package/lib/components/Quill/ImageWarning.js +47 -9
  72. package/lib/components/Quill/ImageWithAltTextModal.js +425 -86
  73. package/lib/components/Quill/Specs/CustomImageSpec.js +42 -34
  74. package/lib/components/Quill/Specs/CustomVideoSpec.js +34 -28
  75. package/lib/components/Quill/TableModule/Blots/BaseTableBlot.js +98 -98
  76. package/lib/components/Quill/TableModule/Blots/TableBlot.js +52 -47
  77. package/lib/components/Quill/TableModule/Blots/TableBodyBlot.js +53 -48
  78. package/lib/components/Quill/TableModule/Blots/TableCellBlot.js +224 -221
  79. package/lib/components/Quill/TableModule/Blots/TableContainer.js +80 -83
  80. package/lib/components/Quill/TableModule/Blots/TableRowBlot.js +75 -70
  81. package/lib/components/Quill/TableModule/constants.js +45 -41
  82. package/lib/components/Quill/TableModule/index.js +362 -301
  83. package/lib/components/Quill/TableModule/utils.js +42 -38
  84. package/lib/components/Quill/accessibilityFix.js +234 -232
  85. package/lib/components/Quill/index.js +34 -28
  86. package/lib/components/RefreshIndicator/Bordered.js +47 -6
  87. package/lib/components/RefreshIndicator/Inline.js +47 -8
  88. package/lib/components/RefreshIndicator/index.js +263 -59
  89. package/lib/components/SearchControls.js +216 -11
  90. package/lib/components/SentryRoute.js +11 -6
  91. package/lib/components/Tables/RoleFilter.js +69 -32
  92. package/lib/components/Tables/TextFilter.js +62 -13
  93. package/lib/components/UserRoles/Add.js +199 -96
  94. package/lib/components/UserRoles/Context.js +11 -7
  95. package/lib/components/UserRoles/RoleCell.js +181 -72
  96. package/lib/components/UserRoles/Select.js +157 -17
  97. package/lib/components/UserRoles/Table.js +221 -80
  98. package/lib/components/UserRoles/index.js +534 -384
  99. package/lib/config/eslint/index.js +32 -28
  100. package/lib/config/eslint/lib/order.js +26 -27
  101. package/lib/config/eslint/lib/prettier.js +20 -18
  102. package/lib/config/eslint/lib/typescript.js +93 -112
  103. package/lib/config/eslint/react.js +24 -14
  104. package/lib/constants/baseActivity.js +30 -26
  105. package/lib/constants/baseRole.js +14 -10
  106. package/lib/constants/configuration.js +33 -29
  107. package/lib/constants/externalProviderType.js +10 -6
  108. package/lib/constants/fetchErrorData.js +15 -11
  109. package/lib/constants/index.js +137 -14
  110. package/lib/constants/lockDownBrowser.js +28 -24
  111. package/lib/constants/mockData.js +382 -297
  112. package/lib/constants/modelStatus.js +15 -11
  113. package/lib/constants/notificationType.js +12 -8
  114. package/lib/constants/operatingSystem.js +12 -8
  115. package/lib/constants/shard.js +11 -7
  116. package/lib/constants/table.js +21 -21
  117. package/lib/constants/tier.js +12 -8
  118. package/lib/constants/userRole.js +15 -5
  119. package/lib/endpointMappings.js +197 -181
  120. package/lib/hooks/useCollection.js +82 -62
  121. package/lib/hooks/useCollectionConfiguration.js +228 -83
  122. package/lib/hooks/useCollectionItem.js +154 -54
  123. package/lib/hooks/useGuid.js +20 -8
  124. package/lib/hooks/usePrevious.js +19 -13
  125. package/lib/index.js +157 -25
  126. package/lib/redux/actionCreator.js +50 -28
  127. package/lib/redux/actions/AuthAction.js +44 -31
  128. package/lib/redux/actions/ModalAction.js +10 -6
  129. package/lib/redux/actions/ModelAction.js +77 -39
  130. package/lib/redux/actions/NotificationAction.js +10 -6
  131. package/lib/redux/actions/SearchAction.js +9 -5
  132. package/lib/redux/actions/index.js +60 -7
  133. package/lib/redux/configureReducers.js +60 -49
  134. package/lib/redux/configureStore.js +83 -87
  135. package/lib/redux/helpers.js +6 -2
  136. package/lib/redux/reducers/authReducer.js +50 -43
  137. package/lib/redux/reducers/index.js +41 -13
  138. package/lib/redux/reducers/modalsReducer.js +47 -29
  139. package/lib/redux/reducers/modelsReducer.js +178 -173
  140. package/lib/redux/reducers/notificationsReducer.js +24 -18
  141. package/lib/redux/reducers/searchReducer.js +25 -19
  142. package/lib/redux/sagas/appInsightsSaga.js +22 -18
  143. package/lib/redux/sagas/authSaga.js +253 -218
  144. package/lib/redux/sagas/caliperSaga.js +159 -143
  145. package/lib/redux/sagas/clockOffsetSaga.js +34 -31
  146. package/lib/redux/sagas/configurationSaga.js +11 -7
  147. package/lib/redux/sagas/downtimeApiErrorSaga.js +20 -17
  148. package/lib/redux/sagas/errorSaga.js +27 -21
  149. package/lib/redux/sagas/googleAnalyticsSaga.js +28 -24
  150. package/lib/redux/sagas/identityProviderSaga.js +22 -18
  151. package/lib/redux/sagas/initialDataLoadSaga.js +37 -28
  152. package/lib/redux/sagas/lockDownBrowserErrorSaga.js +29 -20
  153. package/lib/redux/sagas/modelFetchSaga.js +355 -322
  154. package/lib/redux/sagas/noStoreSaga.js +61 -48
  155. package/lib/redux/sagas/postLoginDataSaga.js +45 -34
  156. package/lib/redux/sagas/postLoginRedirectSaga.js +27 -27
  157. package/lib/redux/sagas/rootSaga.js +82 -57
  158. package/lib/redux/sagas/sentrySaga.js +29 -25
  159. package/lib/redux/sagas/userIdSaga.js +16 -12
  160. package/lib/services/codeProviderService.js +25 -19
  161. package/lib/services/dateService.js +12 -7
  162. package/lib/services/documentService.js +17 -12
  163. package/lib/services/fetchService.js +129 -112
  164. package/lib/services/persistenceService.js +33 -29
  165. package/lib/services/ticketProviderService.js +29 -23
  166. package/lib/services/tokenPersistenceService.js +12 -8
  167. package/lib/services/windowService.js +18 -14
  168. package/lib/startup.js +132 -114
  169. package/lib/types/AppConfiguration.js +5 -1
  170. package/lib/types/Artifact.js +11 -7
  171. package/lib/types/BaseReduxState.js +5 -1
  172. package/lib/types/Client.js +5 -1
  173. package/lib/types/Collection.js +5 -1
  174. package/lib/types/Configuration.js +5 -1
  175. package/lib/types/DeepLinkingResponseRequest.js +5 -1
  176. package/lib/types/DeletableModel.js +5 -1
  177. package/lib/types/Event.js +5 -1
  178. package/lib/types/ExternalGroup.js +5 -1
  179. package/lib/types/ExternalProvider.js +5 -1
  180. package/lib/types/ExternalTerm.js +5 -1
  181. package/lib/types/Group.js +5 -1
  182. package/lib/types/IdentityProvider.js +5 -1
  183. package/lib/types/LtiLaunch.js +5 -1
  184. package/lib/types/NameOnlyEntity.js +5 -1
  185. package/lib/types/Notification.js +5 -1
  186. package/lib/types/OptionalRecord.js +5 -1
  187. package/lib/types/OwnerSchedule.js +5 -1
  188. package/lib/types/PropertyOfType.js +5 -1
  189. package/lib/types/Quill.js +5 -1
  190. package/lib/types/RoleDescription.js +5 -1
  191. package/lib/types/Search.js +5 -1
  192. package/lib/types/SimpleLocation.js +5 -1
  193. package/lib/types/UniTime.js +5 -1
  194. package/lib/types/User.js +5 -1
  195. package/lib/types/UserRole.js +5 -1
  196. package/lib/types/auth/AuthState.js +5 -1
  197. package/lib/types/auth/CasV1LoginRequestBody.js +5 -1
  198. package/lib/types/auth/ClientCredentials.js +5 -1
  199. package/lib/types/auth/CodeProviderService.js +5 -1
  200. package/lib/types/auth/LocalLoginRequestBody.js +5 -1
  201. package/lib/types/auth/TicketProviderService.js +5 -1
  202. package/lib/types/auth/TokenPersistenceService.js +5 -1
  203. package/lib/types/auth/index.js +82 -9
  204. package/lib/types/externals.d.js +2 -0
  205. package/lib/types/index.js +313 -30
  206. package/lib/types/net/EndpointConfig.js +5 -1
  207. package/lib/types/net/EndpointMapping.js +5 -1
  208. package/lib/types/net/EndpointMappings.js +5 -1
  209. package/lib/types/net/ErrorHandler.js +5 -1
  210. package/lib/types/net/FetchConfig.js +5 -1
  211. package/lib/types/net/FetchErrorData.js +10 -6
  212. package/lib/types/net/FetchResult.js +5 -1
  213. package/lib/types/net/HTTPMethod.js +5 -1
  214. package/lib/types/net/HTTPStatusCode.js +16 -12
  215. package/lib/types/net/Metadata.js +5 -1
  216. package/lib/types/net/Model.js +5 -1
  217. package/lib/types/net/ModelCollection.js +5 -1
  218. package/lib/types/net/ModelsState.js +5 -1
  219. package/lib/types/net/OAuthToken.js +5 -1
  220. package/lib/types/net/OAuthTokenOrNull.js +5 -1
  221. package/lib/types/net/TokenAccessFunction.js +5 -1
  222. package/lib/types/net/index.js +181 -18
  223. package/lib/utils/baseActivity.js +133 -123
  224. package/lib/utils/baseRole.js +37 -33
  225. package/lib/utils/collection.js +425 -298
  226. package/lib/utils/cookies.js +22 -19
  227. package/lib/utils/date.js +303 -279
  228. package/lib/utils/dom.js +176 -165
  229. package/lib/utils/domainIdentifier.js +9 -5
  230. package/lib/utils/entityUserRole.js +6 -2
  231. package/lib/utils/error.js +17 -15
  232. package/lib/utils/events.js +40 -31
  233. package/lib/utils/externalGroup.js +22 -18
  234. package/lib/utils/externalProviders.js +8 -4
  235. package/lib/utils/externalTerms.js +10 -3
  236. package/lib/utils/fetch.js +179 -180
  237. package/lib/utils/group.js +18 -7
  238. package/lib/utils/groupDates.js +37 -33
  239. package/lib/utils/groupRoles.js +25 -21
  240. package/lib/utils/lockDownBrowser.js +15 -11
  241. package/lib/utils/logger.js +26 -22
  242. package/lib/utils/lti.js +9 -4
  243. package/lib/utils/model.js +36 -41
  244. package/lib/utils/number.js +21 -18
  245. package/lib/utils/promise.js +28 -21
  246. package/lib/utils/quill.js +65 -62
  247. package/lib/utils/route.js +58 -55
  248. package/lib/utils/search.js +76 -80
  249. package/lib/utils/shard.js +37 -37
  250. package/lib/utils/sort.js +50 -42
  251. package/lib/utils/string.js +13 -8
  252. package/lib/utils/table.js +38 -33
  253. package/lib/utils/timezone.js +10 -6
  254. package/lib/utils/url.js +142 -142
  255. package/lib/utils/user.js +58 -55
  256. package/lib/utils/userAgent.js +10 -10
  257. package/lib/utils/userRole.js +57 -49
  258. package/package.json +17 -3
@@ -1,50 +1,54 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.rangeRemovalWillDeleteCellWithoutRow = exports.isLineAfterTable = exports.isLineBeforeTable = exports.isLineInTableCell = exports.isInstanceOfBlot = void 0;
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isLineInTableCell = exports.isLineBeforeTable = exports.isLineAfterTable = exports.isInstanceOfBlot = void 0;
4
7
  exports.newId = newId;
5
- const logger_1 = require("../../../utils/logger");
6
- const constants_1 = require("./constants");
8
+ exports.rangeRemovalWillDeleteCellWithoutRow = void 0;
9
+ var _logger = require("../../../utils/logger");
10
+ var _constants = require("./constants");
7
11
  const isInstanceOfBlot = (blot, blotName) => blot.statics.blotName === blotName;
8
12
  exports.isInstanceOfBlot = isInstanceOfBlot;
9
- const isLineInTableCell = (line) => (0, exports.isInstanceOfBlot)(line.parent, constants_1.TABLE_BLOT_NAME.TD);
13
+ const isLineInTableCell = line => isInstanceOfBlot(line.parent, _constants.TABLE_BLOT_NAME.TD);
10
14
  exports.isLineInTableCell = isLineInTableCell;
11
- const isLineBeforeTable = (line) => (0, exports.isInstanceOfBlot)(line.next, constants_1.TABLE_BLOT_NAME.TABLE_CONTAINER);
15
+ const isLineBeforeTable = line => isInstanceOfBlot(line.next, _constants.TABLE_BLOT_NAME.TABLE_CONTAINER);
12
16
  exports.isLineBeforeTable = isLineBeforeTable;
13
- const isLineAfterTable = (line) => (0, exports.isInstanceOfBlot)(line.prev, constants_1.TABLE_BLOT_NAME.TABLE_CONTAINER);
17
+ const isLineAfterTable = line => isInstanceOfBlot(line.prev, _constants.TABLE_BLOT_NAME.TABLE_CONTAINER);
14
18
  exports.isLineAfterTable = isLineAfterTable;
15
19
  const rangeRemovalWillDeleteCellWithoutRow = (quill, range) => {
16
- const lines = quill.getLines(range);
17
- const willDeleteCellWithoutRow = lines.some((line) => {
18
- if ((0, exports.isLineInTableCell)(line)) {
19
- const cell = line.parent;
20
- const cellOffset = cell.offset(quill.scroll);
21
- const cellLength = cell.length();
22
- const willDeleteCell =
23
- // starts in cell and goes out of cell, or is exactly the cell
24
- (range.index >= cellOffset && range.index + range.length >= cellOffset + cellLength) ||
25
- // starts before cell and stops in cell
26
- (range.index < cellOffset && range.index + range.length < cellOffset + cellLength);
27
- const row = cell.row();
28
- if (!row)
29
- return false;
30
- const rowOffset = row.offset(quill.scroll);
31
- const rowLength = row.length();
32
- const willDeleteRow = range.index <= rowOffset && range.index + range.length >= rowOffset + rowLength;
33
- (0, logger_1.getLogger)().debug('rangeRemovalWillDeleteCellWithoutRow line', {
34
- range,
35
- line,
36
- cellOffset,
37
- cellLength,
38
- willDeleteCell,
39
- willDeleteRow
40
- });
41
- return willDeleteCell && !willDeleteRow;
42
- }
43
- return false;
44
- }, {});
45
- return willDeleteCellWithoutRow;
20
+ const lines = quill.getLines(range);
21
+ const willDeleteCellWithoutRow = lines.some(line => {
22
+ if (isLineInTableCell(line)) {
23
+ const cell = line.parent;
24
+ const cellOffset = cell.offset(quill.scroll);
25
+ const cellLength = cell.length();
26
+ const willDeleteCell =
27
+ // starts in cell and goes out of cell, or is exactly the cell
28
+ range.index >= cellOffset && range.index + range.length >= cellOffset + cellLength ||
29
+ // starts before cell and stops in cell
30
+ range.index < cellOffset && range.index + range.length < cellOffset + cellLength;
31
+ const row = cell.row();
32
+ if (!row) return false;
33
+ const rowOffset = row.offset(quill.scroll);
34
+ const rowLength = row.length();
35
+ const willDeleteRow = range.index <= rowOffset && range.index + range.length >= rowOffset + rowLength;
36
+ (0, _logger.getLogger)().debug('rangeRemovalWillDeleteCellWithoutRow line', {
37
+ range,
38
+ line,
39
+ cellOffset,
40
+ cellLength,
41
+ willDeleteCell,
42
+ willDeleteRow
43
+ });
44
+ return willDeleteCell && !willDeleteRow;
45
+ }
46
+ return false;
47
+ }, {});
48
+ return willDeleteCellWithoutRow;
46
49
  };
47
50
  exports.rangeRemovalWillDeleteCellWithoutRow = rangeRemovalWillDeleteCellWithoutRow;
48
51
  function newId(prefix) {
49
- return `${prefix}-${Math.random().toString(36).slice(2, 6)}`;
52
+ return `${prefix}-${Math.random().toString(36).slice(2, 6)}`;
50
53
  }
54
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9nZ2VyIiwicmVxdWlyZSIsIl9jb25zdGFudHMiLCJpc0luc3RhbmNlT2ZCbG90IiwiYmxvdCIsImJsb3ROYW1lIiwic3RhdGljcyIsImV4cG9ydHMiLCJpc0xpbmVJblRhYmxlQ2VsbCIsImxpbmUiLCJwYXJlbnQiLCJUQUJMRV9CTE9UX05BTUUiLCJURCIsImlzTGluZUJlZm9yZVRhYmxlIiwibmV4dCIsIlRBQkxFX0NPTlRBSU5FUiIsImlzTGluZUFmdGVyVGFibGUiLCJwcmV2IiwicmFuZ2VSZW1vdmFsV2lsbERlbGV0ZUNlbGxXaXRob3V0Um93IiwicXVpbGwiLCJyYW5nZSIsImxpbmVzIiwiZ2V0TGluZXMiLCJ3aWxsRGVsZXRlQ2VsbFdpdGhvdXRSb3ciLCJzb21lIiwiY2VsbCIsImNlbGxPZmZzZXQiLCJvZmZzZXQiLCJzY3JvbGwiLCJjZWxsTGVuZ3RoIiwibGVuZ3RoIiwid2lsbERlbGV0ZUNlbGwiLCJpbmRleCIsInJvdyIsInJvd09mZnNldCIsInJvd0xlbmd0aCIsIndpbGxEZWxldGVSb3ciLCJnZXRMb2dnZXIiLCJkZWJ1ZyIsIm5ld0lkIiwicHJlZml4IiwiTWF0aCIsInJhbmRvbSIsInRvU3RyaW5nIiwic2xpY2UiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9RdWlsbC9UYWJsZU1vZHVsZS91dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCbG90IH0gZnJvbSAncGFyY2htZW50L2Rpc3Qvc3JjL2Jsb3QvYWJzdHJhY3QvYmxvdCdcclxuaW1wb3J0IHsgUmFuZ2VTdGF0aWMgfSBmcm9tICdxdWlsbCdcclxuaW1wb3J0IHsgUXVpbGwgfSBmcm9tICdyZWFjdC1xdWlsbCdcclxuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvbG9nZ2VyJ1xyXG5pbXBvcnQgeyBUYWJsZUNlbGxCbG90IH0gZnJvbSAnLi9CbG90cy9UYWJsZUNlbGxCbG90J1xyXG5pbXBvcnQgeyBUQUJMRV9CTE9UX05BTUUgfSBmcm9tICcuL2NvbnN0YW50cydcclxuXHJcbmV4cG9ydCBjb25zdCBpc0luc3RhbmNlT2ZCbG90ID0gKGJsb3Q6IEJsb3QsIGJsb3ROYW1lOiBzdHJpbmcpID0+IChibG90IGFzIGFueSkuc3RhdGljcy5ibG90TmFtZSA9PT0gYmxvdE5hbWVcclxuXHJcbmV4cG9ydCBjb25zdCBpc0xpbmVJblRhYmxlQ2VsbCA9IChsaW5lOiBCbG90KSA9PiBpc0luc3RhbmNlT2ZCbG90KGxpbmUucGFyZW50LCBUQUJMRV9CTE9UX05BTUUuVEQpXHJcblxyXG5leHBvcnQgY29uc3QgaXNMaW5lQmVmb3JlVGFibGUgPSAobGluZTogQmxvdCkgPT4gaXNJbnN0YW5jZU9mQmxvdChsaW5lLm5leHQsIFRBQkxFX0JMT1RfTkFNRS5UQUJMRV9DT05UQUlORVIpXHJcblxyXG5leHBvcnQgY29uc3QgaXNMaW5lQWZ0ZXJUYWJsZSA9IChsaW5lOiBCbG90KSA9PiBpc0luc3RhbmNlT2ZCbG90KGxpbmUucHJldiwgVEFCTEVfQkxPVF9OQU1FLlRBQkxFX0NPTlRBSU5FUilcclxuXHJcbmV4cG9ydCBjb25zdCByYW5nZVJlbW92YWxXaWxsRGVsZXRlQ2VsbFdpdGhvdXRSb3cgPSAocXVpbGw6IFF1aWxsLCByYW5nZTogUmFuZ2VTdGF0aWMpID0+IHtcclxuXHRjb25zdCBsaW5lcyA9IHF1aWxsLmdldExpbmVzKHJhbmdlKVxyXG5cdGNvbnN0IHdpbGxEZWxldGVDZWxsV2l0aG91dFJvdyA9IGxpbmVzLnNvbWUoKGxpbmU6IEJsb3QpID0+IHtcclxuXHRcdGlmIChpc0xpbmVJblRhYmxlQ2VsbChsaW5lKSkge1xyXG5cdFx0XHRjb25zdCBjZWxsID0gbGluZS5wYXJlbnQgYXMgVGFibGVDZWxsQmxvdFxyXG5cdFx0XHRjb25zdCBjZWxsT2Zmc2V0ID0gY2VsbC5vZmZzZXQocXVpbGwuc2Nyb2xsKVxyXG5cdFx0XHRjb25zdCBjZWxsTGVuZ3RoID0gY2VsbC5sZW5ndGgoKVxyXG5cdFx0XHRjb25zdCB3aWxsRGVsZXRlQ2VsbCA9XHJcblx0XHRcdFx0Ly8gc3RhcnRzIGluIGNlbGwgYW5kIGdvZXMgb3V0IG9mIGNlbGwsIG9yIGlzIGV4YWN0bHkgdGhlIGNlbGxcclxuXHRcdFx0XHQocmFuZ2UuaW5kZXggPj0gY2VsbE9mZnNldCAmJiByYW5nZS5pbmRleCArIHJhbmdlLmxlbmd0aCA+PSBjZWxsT2Zmc2V0ICsgY2VsbExlbmd0aCkgfHxcclxuXHRcdFx0XHQvLyBzdGFydHMgYmVmb3JlIGNlbGwgYW5kIHN0b3BzIGluIGNlbGxcclxuXHRcdFx0XHQocmFuZ2UuaW5kZXggPCBjZWxsT2Zmc2V0ICYmIHJhbmdlLmluZGV4ICsgcmFuZ2UubGVuZ3RoIDwgY2VsbE9mZnNldCArIGNlbGxMZW5ndGgpXHJcblx0XHRcdGNvbnN0IHJvdyA9IGNlbGwucm93KClcclxuXHRcdFx0aWYgKCFyb3cpIHJldHVybiBmYWxzZVxyXG5cdFx0XHRjb25zdCByb3dPZmZzZXQgPSByb3cub2Zmc2V0KHF1aWxsLnNjcm9sbClcclxuXHRcdFx0Y29uc3Qgcm93TGVuZ3RoID0gcm93Lmxlbmd0aCgpXHJcblx0XHRcdGNvbnN0IHdpbGxEZWxldGVSb3cgPSByYW5nZS5pbmRleCA8PSByb3dPZmZzZXQgJiYgcmFuZ2UuaW5kZXggKyByYW5nZS5sZW5ndGggPj0gcm93T2Zmc2V0ICsgcm93TGVuZ3RoXHJcblx0XHRcdGdldExvZ2dlcigpLmRlYnVnKCdyYW5nZVJlbW92YWxXaWxsRGVsZXRlQ2VsbFdpdGhvdXRSb3cgbGluZScsIHtcclxuXHRcdFx0XHRyYW5nZSxcclxuXHRcdFx0XHRsaW5lLFxyXG5cdFx0XHRcdGNlbGxPZmZzZXQsXHJcblx0XHRcdFx0Y2VsbExlbmd0aCxcclxuXHRcdFx0XHR3aWxsRGVsZXRlQ2VsbCxcclxuXHRcdFx0XHR3aWxsRGVsZXRlUm93XHJcblx0XHRcdH0pXHJcblx0XHRcdHJldHVybiB3aWxsRGVsZXRlQ2VsbCAmJiAhd2lsbERlbGV0ZVJvd1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGZhbHNlXHJcblx0fSwge30pXHJcblx0cmV0dXJuIHdpbGxEZWxldGVDZWxsV2l0aG91dFJvd1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbmV3SWQocHJlZml4OiBzdHJpbmcpIHtcclxuXHRyZXR1cm4gYCR7cHJlZml4fS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIsIDYpfWBcclxufVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBR0EsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsVUFBQSxHQUFBRCxPQUFBO0FBRU8sTUFBTUUsZ0JBQWdCLEdBQUdBLENBQUNDLElBQVUsRUFBRUMsUUFBZ0IsS0FBTUQsSUFBSSxDQUFTRSxPQUFPLENBQUNELFFBQVEsS0FBS0EsUUFBUTtBQUFBRSxPQUFBLENBQUFKLGdCQUFBLEdBQUFBLGdCQUFBO0FBRXRHLE1BQU1LLGlCQUFpQixHQUFJQyxJQUFVLElBQUtOLGdCQUFnQixDQUFDTSxJQUFJLENBQUNDLE1BQU0sRUFBRUMsMEJBQWUsQ0FBQ0MsRUFBRSxDQUFDO0FBQUFMLE9BQUEsQ0FBQUMsaUJBQUEsR0FBQUEsaUJBQUE7QUFFM0YsTUFBTUssaUJBQWlCLEdBQUlKLElBQVUsSUFBS04sZ0JBQWdCLENBQUNNLElBQUksQ0FBQ0ssSUFBSSxFQUFFSCwwQkFBZSxDQUFDSSxlQUFlLENBQUM7QUFBQVIsT0FBQSxDQUFBTSxpQkFBQSxHQUFBQSxpQkFBQTtBQUV0RyxNQUFNRyxnQkFBZ0IsR0FBSVAsSUFBVSxJQUFLTixnQkFBZ0IsQ0FBQ00sSUFBSSxDQUFDUSxJQUFJLEVBQUVOLDBCQUFlLENBQUNJLGVBQWUsQ0FBQztBQUFBUixPQUFBLENBQUFTLGdCQUFBLEdBQUFBLGdCQUFBO0FBRXJHLE1BQU1FLG9DQUFvQyxHQUFHQSxDQUFDQyxLQUFZLEVBQUVDLEtBQWtCLEtBQUs7RUFDekYsTUFBTUMsS0FBSyxHQUFHRixLQUFLLENBQUNHLFFBQVEsQ0FBQ0YsS0FBSyxDQUFDO0VBQ25DLE1BQU1HLHdCQUF3QixHQUFHRixLQUFLLENBQUNHLElBQUksQ0FBRWYsSUFBVSxJQUFLO0lBQzNELElBQUlELGlCQUFpQixDQUFDQyxJQUFJLENBQUMsRUFBRTtNQUM1QixNQUFNZ0IsSUFBSSxHQUFHaEIsSUFBSSxDQUFDQyxNQUF1QjtNQUN6QyxNQUFNZ0IsVUFBVSxHQUFHRCxJQUFJLENBQUNFLE1BQU0sQ0FBQ1IsS0FBSyxDQUFDUyxNQUFNLENBQUM7TUFDNUMsTUFBTUMsVUFBVSxHQUFHSixJQUFJLENBQUNLLE1BQU0sQ0FBQyxDQUFDO01BQ2hDLE1BQU1DLGNBQWM7TUFDbkI7TUFDQ1gsS0FBSyxDQUFDWSxLQUFLLElBQUlOLFVBQVUsSUFBSU4sS0FBSyxDQUFDWSxLQUFLLEdBQUdaLEtBQUssQ0FBQ1UsTUFBTSxJQUFJSixVQUFVLEdBQUdHLFVBQVU7TUFDbkY7TUFDQ1QsS0FBSyxDQUFDWSxLQUFLLEdBQUdOLFVBQVUsSUFBSU4sS0FBSyxDQUFDWSxLQUFLLEdBQUdaLEtBQUssQ0FBQ1UsTUFBTSxHQUFHSixVQUFVLEdBQUdHLFVBQVc7TUFDbkYsTUFBTUksR0FBRyxHQUFHUixJQUFJLENBQUNRLEdBQUcsQ0FBQyxDQUFDO01BQ3RCLElBQUksQ0FBQ0EsR0FBRyxFQUFFLE9BQU8sS0FBSztNQUN0QixNQUFNQyxTQUFTLEdBQUdELEdBQUcsQ0FBQ04sTUFBTSxDQUFDUixLQUFLLENBQUNTLE1BQU0sQ0FBQztNQUMxQyxNQUFNTyxTQUFTLEdBQUdGLEdBQUcsQ0FBQ0gsTUFBTSxDQUFDLENBQUM7TUFDOUIsTUFBTU0sYUFBYSxHQUFHaEIsS0FBSyxDQUFDWSxLQUFLLElBQUlFLFNBQVMsSUFBSWQsS0FBSyxDQUFDWSxLQUFLLEdBQUdaLEtBQUssQ0FBQ1UsTUFBTSxJQUFJSSxTQUFTLEdBQUdDLFNBQVM7TUFDckcsSUFBQUUsaUJBQVMsRUFBQyxDQUFDLENBQUNDLEtBQUssQ0FBQywyQ0FBMkMsRUFBRTtRQUM5RGxCLEtBQUs7UUFDTFgsSUFBSTtRQUNKaUIsVUFBVTtRQUNWRyxVQUFVO1FBQ1ZFLGNBQWM7UUFDZEs7TUFDRCxDQUFDLENBQUM7TUFDRixPQUFPTCxjQUFjLElBQUksQ0FBQ0ssYUFBYTtJQUN4QztJQUNBLE9BQU8sS0FBSztFQUNiLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztFQUNOLE9BQU9iLHdCQUF3QjtBQUNoQyxDQUFDO0FBQUFoQixPQUFBLENBQUFXLG9DQUFBLEdBQUFBLG9DQUFBO0FBRU0sU0FBU3FCLEtBQUtBLENBQUNDLE1BQWMsRUFBRTtFQUNyQyxPQUFPLEdBQUdBLE1BQU0sSUFBSUMsSUFBSSxDQUFDQyxNQUFNLENBQUMsQ0FBQyxDQUFDQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUNDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7QUFDN0QiLCJpZ25vcmVMaXN0IjpbXX0=