@nethserver/ns8-ui-lib 0.0.50 → 0.0.54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ns8-ui-lib.esm.js +102 -38
- package/dist/ns8-ui-lib.min.js +1 -1
- package/dist/ns8-ui-lib.ssr.js +124 -60
- package/package.json +1 -1
- package/src/lib-components/NsBackupCardDetails.vue +1 -2
- package/src/lib-components/NsPasswordInput.vue +1 -1
- package/src/lib-components/NsProgressBar.vue +4 -4
- package/src/lib-components/NsStatusCard.vue +3 -3
- package/src/lib-components/NsSystemdServiceCard.vue +3 -3
- package/src/lib-components/NsToastNotification.vue +1 -1
package/dist/ns8-ui-lib.esm.js
CHANGED
|
@@ -1248,8 +1248,8 @@ var __vue_staticRenderFns__$n = [];
|
|
|
1248
1248
|
|
|
1249
1249
|
const __vue_inject_styles__$o = function (inject) {
|
|
1250
1250
|
if (!inject) return;
|
|
1251
|
-
inject("data-v-
|
|
1252
|
-
source: ".progress-bar-container[data-v-
|
|
1251
|
+
inject("data-v-57532057_0", {
|
|
1252
|
+
source: ".progress-bar-container[data-v-57532057]{width:100%;position:relative}.slider[data-v-57532057]{position:absolute;width:100%;height:5px;overflow-x:hidden}.line[data-v-57532057]{position:absolute;opacity:.4;width:100%;height:5px}.progress-line[data-v-57532057]{position:absolute;height:5px}.indeterminate-line[data-v-57532057]{position:absolute;opacity:.4;width:150%;height:5px}.indeterminate-subline[data-v-57532057]{position:absolute;height:5px}.inc[data-v-57532057]{animation:increase-data-v-57532057 2s infinite}.dec[data-v-57532057]{animation:decrease-data-v-57532057 2s .5s infinite}@keyframes increase-data-v-57532057{from{left:-5%;width:5%}to{left:130%;width:100%}}@keyframes decrease-data-v-57532057{from{left:-80%;width:80%}to{left:110%;width:10%}}",
|
|
1253
1253
|
map: undefined,
|
|
1254
1254
|
media: undefined
|
|
1255
1255
|
});
|
|
@@ -1257,7 +1257,7 @@ const __vue_inject_styles__$o = function (inject) {
|
|
|
1257
1257
|
/* scoped */
|
|
1258
1258
|
|
|
1259
1259
|
|
|
1260
|
-
const __vue_scope_id__$o = "data-v-
|
|
1260
|
+
const __vue_scope_id__$o = "data-v-57532057";
|
|
1261
1261
|
/* module identifier */
|
|
1262
1262
|
|
|
1263
1263
|
const __vue_module_identifier__$o = undefined;
|
|
@@ -6236,11 +6236,11 @@ var __vue_staticRenderFns__$l = [];
|
|
|
6236
6236
|
|
|
6237
6237
|
const __vue_inject_styles__$l = function (inject) {
|
|
6238
6238
|
if (!inject) return;
|
|
6239
|
-
inject("data-v-
|
|
6240
|
-
source: ".notification[data-v-
|
|
6239
|
+
inject("data-v-7385c86a_0", {
|
|
6240
|
+
source: ".notification[data-v-7385c86a]{margin-bottom:0;margin-right:0}.action[data-v-7385c86a]{padding-top:0;margin-bottom:0}.bx--toast-notification .bx--inline-notification__action-button.bx--btn--ghost[data-v-7385c86a]{margin-left:-16px}.notification-description-and-progress[data-v-7385c86a]{margin-top:.75rem;margin-bottom:.75rem}.fix-margin-bottom[data-v-7385c86a]{margin-bottom:0}.progress[data-v-7385c86a]{margin-top:.75rem}.progress-bar-spacer[data-v-7385c86a]{height:.5rem}.cv-notifiation.bx--toast-notification.notification[data-v-7385c86a]{width:26vw;min-width:20rem;margin-top:0}.notification-drawer .cv-notifiation.bx--toast-notification.notification[data-v-7385c86a]{margin-top:1rem}.notification-drawer .cv-notifiation.bx--toast-notification.notification[data-v-7385c86a]{width:100%;cursor:pointer}.notification-read[data-v-7385c86a]{border-color:#8d8d8d;color:#c6c6c6}.notification-read .bx--toast-notification__icon[data-v-7385c86a]{fill:currentColor}.notification-read .bx--toast-notification__subtitle[data-v-7385c86a]{color:#c6c6c6}.notification-read .bx--toast-notification__title[data-v-7385c86a]{font-weight:400}.cv-notifiation .timestamp[data-v-7385c86a]{margin-bottom:.75rem;line-height:1.29;color:#fff;text-decoration:underline}.cv-notifiation .timestamp button[data-v-7385c86a]{color:#c6c6c6}.bx--tooltip__trigger[data-v-7385c86a]:not(.bx--btn--icon-only){font-size:inherit}.cv-notifiation .timestamp .bx--tooltip__trigger[data-v-7385c86a]::before{border-bottom-color:#161616}div.row[data-v-7385c86a]:last-child{margin-bottom:1.5rem}.bx--toast-notification__details[data-v-7385c86a]{flex-grow:1}",
|
|
6241
6241
|
map: undefined,
|
|
6242
6242
|
media: undefined
|
|
6243
|
-
}), inject("data-v-
|
|
6243
|
+
}), inject("data-v-7385c86a_1", {
|
|
6244
6244
|
source: ".cv-notifiation .timestamp button span{background-color:#161616!important;border-left:1px solid #393939;border-right:1px solid #393939;border-bottom:1px solid #393939}",
|
|
6245
6245
|
map: undefined,
|
|
6246
6246
|
media: undefined
|
|
@@ -6249,7 +6249,7 @@ const __vue_inject_styles__$l = function (inject) {
|
|
|
6249
6249
|
/* scoped */
|
|
6250
6250
|
|
|
6251
6251
|
|
|
6252
|
-
const __vue_scope_id__$l = "data-v-
|
|
6252
|
+
const __vue_scope_id__$l = "data-v-7385c86a";
|
|
6253
6253
|
/* module identifier */
|
|
6254
6254
|
|
|
6255
6255
|
const __vue_module_identifier__$l = undefined;
|
|
@@ -6524,8 +6524,8 @@ var __vue_staticRenderFns__$j = [];
|
|
|
6524
6524
|
|
|
6525
6525
|
const __vue_inject_styles__$j = function (inject) {
|
|
6526
6526
|
if (!inject) return;
|
|
6527
|
-
inject("data-v-
|
|
6528
|
-
source: ".status-card[data-v-
|
|
6527
|
+
inject("data-v-496044f0_0", {
|
|
6528
|
+
source: ".status-card[data-v-496044f0]{display:flex;flex-direction:column;justify-content:center}.row[data-v-496044f0]{display:flex;align-items:center;justify-content:center;margin-bottom:.5rem}.value[data-v-496044f0]{margin-left:.25rem;margin-right:.25rem}.label[data-v-496044f0]{margin-left:.25rem;margin-right:.25rem}.success-icon[data-v-496044f0]{margin-right:.25rem}.error-icon[data-v-496044f0]{margin-right:.25rem}.warning-icon[data-v-496044f0]{margin-right:.25rem}.stats[data-v-496044f0]{display:flex;align-items:center;margin-left:.5rem;margin-right:.5rem}",
|
|
6529
6529
|
map: undefined,
|
|
6530
6530
|
media: undefined
|
|
6531
6531
|
});
|
|
@@ -6533,7 +6533,7 @@ const __vue_inject_styles__$j = function (inject) {
|
|
|
6533
6533
|
/* scoped */
|
|
6534
6534
|
|
|
6535
6535
|
|
|
6536
|
-
const __vue_scope_id__$j = "data-v-
|
|
6536
|
+
const __vue_scope_id__$j = "data-v-496044f0";
|
|
6537
6537
|
/* module identifier */
|
|
6538
6538
|
|
|
6539
6539
|
const __vue_module_identifier__$j = undefined;
|
|
@@ -6669,8 +6669,8 @@ var __vue_staticRenderFns__$i = [];
|
|
|
6669
6669
|
|
|
6670
6670
|
const __vue_inject_styles__$i = function (inject) {
|
|
6671
6671
|
if (!inject) return;
|
|
6672
|
-
inject("data-v-
|
|
6673
|
-
source: ".service-card[data-v-
|
|
6672
|
+
inject("data-v-3dfcfe29_0", {
|
|
6673
|
+
source: ".service-card[data-v-3dfcfe29]{display:flex;flex-direction:column;justify-content:center}.row[data-v-3dfcfe29]{display:flex;align-items:center;justify-content:center;margin-bottom:.5rem}.service-name[data-v-3dfcfe29]{margin-left:.25rem;margin-right:.25rem}.success-icon[data-v-3dfcfe29]{margin-right:.25rem}.error-icon[data-v-3dfcfe29]{margin-right:.25rem}.warning-icon[data-v-3dfcfe29]{margin-right:.25rem}.stats[data-v-3dfcfe29]{display:flex;align-items:center;margin-left:.5rem;margin-right:.5rem}",
|
|
6674
6674
|
map: undefined,
|
|
6675
6675
|
media: undefined
|
|
6676
6676
|
});
|
|
@@ -6678,7 +6678,7 @@ const __vue_inject_styles__$i = function (inject) {
|
|
|
6678
6678
|
/* scoped */
|
|
6679
6679
|
|
|
6680
6680
|
|
|
6681
|
-
const __vue_scope_id__$i = "data-v-
|
|
6681
|
+
const __vue_scope_id__$i = "data-v-3dfcfe29";
|
|
6682
6682
|
/* module identifier */
|
|
6683
6683
|
|
|
6684
6684
|
const __vue_module_identifier__$i = undefined;
|
|
@@ -6824,7 +6824,7 @@ var UtilService = {
|
|
|
6824
6824
|
},
|
|
6825
6825
|
|
|
6826
6826
|
/**
|
|
6827
|
-
* Get app description using the locale of
|
|
6827
|
+
* Get app description using the locale of core context
|
|
6828
6828
|
*/
|
|
6829
6829
|
getAppDescription(app, coreContext) {
|
|
6830
6830
|
const langCode = coreContext.$root.$i18n.locale;
|
|
@@ -6839,7 +6839,7 @@ var UtilService = {
|
|
|
6839
6839
|
},
|
|
6840
6840
|
|
|
6841
6841
|
/**
|
|
6842
|
-
* Get app categories using the locale of
|
|
6842
|
+
* Get app categories using the locale of core context
|
|
6843
6843
|
*/
|
|
6844
6844
|
getAppCategories(app, coreContext) {
|
|
6845
6845
|
let i18nCategories = [];
|
|
@@ -6860,6 +6860,58 @@ var UtilService = {
|
|
|
6860
6860
|
*/
|
|
6861
6861
|
toggleAccordion(ev) {
|
|
6862
6862
|
this.$refs.accordion.state.map((item, index) => index === ev.changedIndex);
|
|
6863
|
+
},
|
|
6864
|
+
|
|
6865
|
+
/**
|
|
6866
|
+
* Used in Backup section
|
|
6867
|
+
* */
|
|
6868
|
+
getBackupScheduleDescription(schedule) {
|
|
6869
|
+
if (!schedule) {
|
|
6870
|
+
return "-";
|
|
6871
|
+
}
|
|
6872
|
+
|
|
6873
|
+
switch (schedule.interval) {
|
|
6874
|
+
case "hourly":
|
|
6875
|
+
if (schedule.minute == 0) {
|
|
6876
|
+
return this.$t("backup.every_hour");
|
|
6877
|
+
} else {
|
|
6878
|
+
return this.$tc("backup.minutes_past_the_hour", schedule.minute, {
|
|
6879
|
+
minutes: schedule.minute
|
|
6880
|
+
});
|
|
6881
|
+
}
|
|
6882
|
+
|
|
6883
|
+
case "daily":
|
|
6884
|
+
if (this.time24HourPattern.test(schedule.time)) {
|
|
6885
|
+
return this.$t("backup.every_day_at", {
|
|
6886
|
+
time: schedule.time
|
|
6887
|
+
});
|
|
6888
|
+
} else {
|
|
6889
|
+
return "-";
|
|
6890
|
+
}
|
|
6891
|
+
|
|
6892
|
+
case "weekly":
|
|
6893
|
+
if (this.time24HourPattern.test(schedule.time)) {
|
|
6894
|
+
return this.$t("backup.every_weekday_at_hour", {
|
|
6895
|
+
weekDay: this.$t("calendar." + schedule.weekDay),
|
|
6896
|
+
time: schedule.time
|
|
6897
|
+
});
|
|
6898
|
+
} else {
|
|
6899
|
+
return "-";
|
|
6900
|
+
}
|
|
6901
|
+
|
|
6902
|
+
case "monthly":
|
|
6903
|
+
if (this.time24HourPattern.test(schedule.time)) {
|
|
6904
|
+
return this.$t("backup.every_month_at_time", {
|
|
6905
|
+
dayNum: schedule.monthDay,
|
|
6906
|
+
time: schedule.time
|
|
6907
|
+
});
|
|
6908
|
+
} else {
|
|
6909
|
+
return "-";
|
|
6910
|
+
}
|
|
6911
|
+
|
|
6912
|
+
default:
|
|
6913
|
+
return "-";
|
|
6914
|
+
}
|
|
6863
6915
|
}
|
|
6864
6916
|
|
|
6865
6917
|
}
|
|
@@ -7125,8 +7177,8 @@ var __vue_staticRenderFns__$h = [];
|
|
|
7125
7177
|
|
|
7126
7178
|
const __vue_inject_styles__$h = function (inject) {
|
|
7127
7179
|
if (!inject) return;
|
|
7128
|
-
inject("data-v-
|
|
7129
|
-
source: ".new-password-container[data-v-
|
|
7180
|
+
inject("data-v-6ed70bae_0", {
|
|
7181
|
+
source: ".new-password-container[data-v-6ed70bae]{margin-bottom:1rem}.new-password[data-v-6ed70bae]{margin-bottom:.25rem}.confirm-password[data-v-6ed70bae]{margin-bottom:.25rem}.password-meter[data-v-6ed70bae]{display:flex}@media (min-width:672px){.password-meter[data-v-6ed70bae]{max-width:38rem}}.requirement[data-v-6ed70bae]{padding:.2rem;margin-left:.2rem;margin-right:.2rem;background-color:#f4f4f4;text-align:center;font-size:.75rem;line-height:1.34;letter-spacing:.32px}.requirement-light[data-v-6ed70bae]{background-color:#fff}.requirement[data-v-6ed70bae]:first-child{margin-left:0}.requirement-ok[data-v-6ed70bae]{color:#fff;background-color:#198038}.requirement-disabled[data-v-6ed70bae]{color:#c6c6c6;background-color:#f4f4f4}",
|
|
7130
7182
|
map: undefined,
|
|
7131
7183
|
media: undefined
|
|
7132
7184
|
});
|
|
@@ -7134,7 +7186,7 @@ const __vue_inject_styles__$h = function (inject) {
|
|
|
7134
7186
|
/* scoped */
|
|
7135
7187
|
|
|
7136
7188
|
|
|
7137
|
-
const __vue_scope_id__$h = "data-v-
|
|
7189
|
+
const __vue_scope_id__$h = "data-v-6ed70bae";
|
|
7138
7190
|
/* module identifier */
|
|
7139
7191
|
|
|
7140
7192
|
const __vue_module_identifier__$h = undefined;
|
|
@@ -8248,7 +8300,7 @@ var __vue_render__$a = function () {
|
|
|
8248
8300
|
staticClass: "td label"
|
|
8249
8301
|
}, [_vm._v(_vm._s(_vm.totalFileCountLabel))]), _vm._v(" "), _c('div', {
|
|
8250
8302
|
staticClass: "td"
|
|
8251
|
-
}, [_vm.status[_vm.backup.id] && _vm.status[_vm.backup.id].total_file_count ? _c('span', [_vm._v("\n " + _vm._s(_vm.
|
|
8303
|
+
}, [_vm.status[_vm.backup.id] && _vm.status[_vm.backup.id].total_file_count ? _c('span', [_vm._v("\n " + _vm._s(_vm.status[_vm.backup.id].total_file_count) + "\n ")]) : _c('span', [_vm._v("-")])])])]);
|
|
8252
8304
|
};
|
|
8253
8305
|
|
|
8254
8306
|
var __vue_staticRenderFns__$a = [];
|
|
@@ -8256,8 +8308,8 @@ var __vue_staticRenderFns__$a = [];
|
|
|
8256
8308
|
|
|
8257
8309
|
const __vue_inject_styles__$a = function (inject) {
|
|
8258
8310
|
if (!inject) return;
|
|
8259
|
-
inject("data-v-
|
|
8260
|
-
source: ".ns-backup-card-details[data-v-
|
|
8311
|
+
inject("data-v-25453d1c_0", {
|
|
8312
|
+
source: ".ns-backup-card-details[data-v-25453d1c]{display:contents}.tr[data-v-25453d1c]{display:table-row}.td[data-v-25453d1c]{display:table-cell}.label[data-v-25453d1c]{padding-right:.75rem;font-weight:700;text-align:right;padding-bottom:.5rem}",
|
|
8261
8313
|
map: undefined,
|
|
8262
8314
|
media: undefined
|
|
8263
8315
|
});
|
|
@@ -8265,7 +8317,7 @@ const __vue_inject_styles__$a = function (inject) {
|
|
|
8265
8317
|
/* scoped */
|
|
8266
8318
|
|
|
8267
8319
|
|
|
8268
|
-
const __vue_scope_id__$a = "data-v-
|
|
8320
|
+
const __vue_scope_id__$a = "data-v-25453d1c";
|
|
8269
8321
|
/* module identifier */
|
|
8270
8322
|
|
|
8271
8323
|
const __vue_module_identifier__$a = undefined;
|
|
@@ -9195,7 +9247,7 @@ var __vue_component__$1 = __vue_component__;
|
|
|
9195
9247
|
var queryParam = {
|
|
9196
9248
|
name: "QueryParamService",
|
|
9197
9249
|
methods: {
|
|
9198
|
-
// used by
|
|
9250
|
+
// used by core and external apps to dynamically register a watch for every object inside data.q
|
|
9199
9251
|
watchQueryData(context) {
|
|
9200
9252
|
if (context.q) {
|
|
9201
9253
|
Object.keys(context.q).forEach(dataItem => {
|
|
@@ -9233,10 +9285,10 @@ var queryParam = {
|
|
|
9233
9285
|
queryParams.push(key + "=" + encodeURIComponent(value));
|
|
9234
9286
|
}
|
|
9235
9287
|
|
|
9236
|
-
const urlWithParams = window.parent.
|
|
9288
|
+
const urlWithParams = window.parent.core.$route.path + "?" + queryParams.join("&");
|
|
9237
9289
|
|
|
9238
|
-
if (window.parent.
|
|
9239
|
-
window.parent.
|
|
9290
|
+
if (window.parent.core.$route.fullPath != urlWithParams) {
|
|
9291
|
+
window.parent.core.$router.replace(urlWithParams);
|
|
9240
9292
|
}
|
|
9241
9293
|
},
|
|
9242
9294
|
|
|
@@ -9307,7 +9359,7 @@ var queryParam = {
|
|
|
9307
9359
|
}
|
|
9308
9360
|
},
|
|
9309
9361
|
|
|
9310
|
-
// used only by
|
|
9362
|
+
// used only by core to extract query parameters from URL
|
|
9311
9363
|
getQueryParamsForCore() {
|
|
9312
9364
|
if (!window.location.hash.includes("?") || window.location.hash.split("?").length < 2) {
|
|
9313
9365
|
return {};
|
|
@@ -9402,7 +9454,7 @@ var task = {
|
|
|
9402
9454
|
|
|
9403
9455
|
createClusterTaskForApp(taskData) {
|
|
9404
9456
|
const token = this.getFromStorage("loginInfo") ? this.getFromStorage("loginInfo").token : "";
|
|
9405
|
-
return this.axios.post(`${window.parent.
|
|
9457
|
+
return this.axios.post(`${window.parent.core.$root.apiUrl}/cluster/tasks`, taskData, {
|
|
9406
9458
|
headers: {
|
|
9407
9459
|
Authorization: `Bearer ${token}`
|
|
9408
9460
|
}
|
|
@@ -9411,7 +9463,7 @@ var task = {
|
|
|
9411
9463
|
|
|
9412
9464
|
createModuleTaskForApp(moduleId, taskData) {
|
|
9413
9465
|
const token = this.getFromStorage("loginInfo") ? this.getFromStorage("loginInfo").token : "";
|
|
9414
|
-
return this.axios.post(`${window.parent.
|
|
9466
|
+
return this.axios.post(`${window.parent.core.$root.apiUrl}/module/${moduleId}/tasks`, taskData, {
|
|
9415
9467
|
headers: {
|
|
9416
9468
|
Authorization: `Bearer ${token}`
|
|
9417
9469
|
}
|
|
@@ -9428,8 +9480,8 @@ var task = {
|
|
|
9428
9480
|
},
|
|
9429
9481
|
|
|
9430
9482
|
getTaskTitle(task) {
|
|
9431
|
-
if (task && task.context && task.context.
|
|
9432
|
-
return task.context.
|
|
9483
|
+
if (task && task.context && task.context.extra && task.context.extra.title) {
|
|
9484
|
+
return task.context.extra.title;
|
|
9433
9485
|
} else {
|
|
9434
9486
|
return "";
|
|
9435
9487
|
}
|
|
@@ -9470,28 +9522,40 @@ var task = {
|
|
|
9470
9522
|
},
|
|
9471
9523
|
|
|
9472
9524
|
getTaskStatusDescription(task, rootTask = true) {
|
|
9473
|
-
|
|
9525
|
+
let taskLabel = task.context.action; // use taskName instead of action, if available
|
|
9526
|
+
|
|
9527
|
+
if (task.context.extra && task.context.extra.taskName) {
|
|
9528
|
+
taskLabel = task.context.extra.taskName;
|
|
9529
|
+
}
|
|
9530
|
+
|
|
9474
9531
|
const taskOrSubtask = rootTask ? "task" : "subtask";
|
|
9532
|
+
let taskPrefix = "";
|
|
9533
|
+
|
|
9534
|
+
if (task.result && task.result.file) {
|
|
9535
|
+
taskPrefix = task.result.file.split("task/")[0];
|
|
9536
|
+
}
|
|
9537
|
+
|
|
9538
|
+
taskLabel = taskPrefix + taskLabel;
|
|
9475
9539
|
|
|
9476
9540
|
switch (task.status) {
|
|
9477
9541
|
case "aborted":
|
|
9478
9542
|
return this.$t("task." + taskOrSubtask + "_failed", {
|
|
9479
|
-
|
|
9543
|
+
task: taskLabel
|
|
9480
9544
|
});
|
|
9481
9545
|
|
|
9482
9546
|
case "validation-failed":
|
|
9483
9547
|
return this.$t("task." + taskOrSubtask + "_failed_validation", {
|
|
9484
|
-
|
|
9548
|
+
task: taskLabel
|
|
9485
9549
|
});
|
|
9486
9550
|
|
|
9487
9551
|
case "completed":
|
|
9488
9552
|
return this.$t("task." + taskOrSubtask + "_completed", {
|
|
9489
|
-
|
|
9553
|
+
task: taskLabel
|
|
9490
9554
|
});
|
|
9491
9555
|
|
|
9492
9556
|
case "pending":
|
|
9493
9557
|
return this.$t("task." + taskOrSubtask + "_pending", {
|
|
9494
|
-
|
|
9558
|
+
task: taskLabel
|
|
9495
9559
|
});
|
|
9496
9560
|
|
|
9497
9561
|
default:
|
|
@@ -9506,7 +9570,7 @@ var task = {
|
|
|
9506
9570
|
|
|
9507
9571
|
createErrorNotificationForApp(err, message) {
|
|
9508
9572
|
console.error(err);
|
|
9509
|
-
window.parent.
|
|
9573
|
+
window.parent.core.$root.$emit("createErrorNotification", err, message);
|
|
9510
9574
|
}
|
|
9511
9575
|
|
|
9512
9576
|
}
|
|
@@ -9583,7 +9647,7 @@ var pageTitle = {
|
|
|
9583
9647
|
const pageTitle = getPageTitle(this);
|
|
9584
9648
|
|
|
9585
9649
|
if (pageTitle) {
|
|
9586
|
-
// window.document would be ok for
|
|
9650
|
+
// window.document would be ok for core, but with window.parent.document we support external apps too (window.parent == window, if it's the root window)
|
|
9587
9651
|
window.parent.document.title = pageTitle;
|
|
9588
9652
|
}
|
|
9589
9653
|
}
|