@shrub/express-gateway 0.5.43 → 0.5.47

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/esm/proxy.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { createInjectable } from "@shrub/core";
2
2
  import { IControllerInvokerService } from "@shrub/express";
3
- import client from "@sprig/request-client";
3
+ import client from "@sprig/request-client/dist/polyfill";
4
4
  /** Creates an injectable proxy. */
5
5
  export function createProxy(key) {
6
6
  return createInjectable({
@@ -11,12 +11,12 @@ export function createProxy(key) {
11
11
  }
12
12
  /** A proxy where the client and enpoint are hosted in the same process. */
13
13
  export class LocalProxy {
14
- constructor(controllerInvokerConstructor, handler) {
14
+ constructor(controllerInvokerConstructor, options) {
15
15
  this.controllerInvokerConstructor = controllerInvokerConstructor;
16
- this.handler = handler;
16
+ this.options = options;
17
17
  }
18
18
  createClient(context) {
19
- return context.services.get(IControllerInvokerService).createControllerInvoker(this.controllerInvokerConstructor, this.handler);
19
+ return context.services.get(IControllerInvokerService).createControllerInvoker(this.controllerInvokerConstructor, this.options);
20
20
  }
21
21
  }
22
22
  /** A proxy where the client accesses an external REST endpoint. */
@@ -35,4 +35,4 @@ export class RemoteProxy {
35
35
  return new this.requestClientConstructor({ url: this.options.url, client: requestClient });
36
36
  }
37
37
  }
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJveHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFtQyxNQUFNLGFBQWEsQ0FBQztBQUNoRixPQUFPLEVBQWdDLHlCQUF5QixFQUFtQixNQUFNLGdCQUFnQixDQUFDO0FBQzFHLE9BQU8sTUFBb0MsTUFBTSx1QkFBdUIsQ0FBQztBQThCekUsbUNBQW1DO0FBQ25DLE1BQU0sVUFBVSxXQUFXLENBQWdFLEdBQVc7SUFDbEcsT0FBTyxnQkFBZ0IsQ0FBQztRQUNwQixHQUFHO1FBQ0gsWUFBWSxFQUFFLElBQUk7UUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLEdBQUcsOEZBQThGLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDM0osQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVELDJFQUEyRTtBQUMzRSxNQUFNLE9BQU8sVUFBVTtJQUNuQixZQUNxQiw0QkFBbUUsRUFDbkUsT0FBd0I7UUFEeEIsaUNBQTRCLEdBQTVCLDRCQUE0QixDQUF1QztRQUNuRSxZQUFPLEdBQVAsT0FBTyxDQUFpQjtJQUM3QyxDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQXdCO1FBQ2pDLE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BJLENBQUM7Q0FDSjtBQUVELG1FQUFtRTtBQUNuRSxNQUFNLE9BQU8sV0FBVztJQUNwQixZQUNxQix3QkFBMkQsRUFDM0QsT0FBNEI7UUFENUIsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUFtQztRQUMzRCxZQUFPLEdBQVAsT0FBTyxDQUFxQjtJQUNqRCxDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQXdCO1FBQ2pDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO1FBQ25ELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1FBRWpELE1BQU0sYUFBYSxHQUFtQjtZQUNsQyxPQUFPLEVBQUUsY0FBYyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPO1lBQzFHLE1BQU0sRUFBRSxhQUFhLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU07U0FDeEcsQ0FBQztRQUVGLE9BQU8sSUFBSSxJQUFJLENBQUMsd0JBQXdCLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDL0YsQ0FBQztDQUNKIn0=
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJveHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFtQyxNQUFNLGFBQWEsQ0FBQztBQUNoRixPQUFPLEVBQWdDLHlCQUF5QixFQUFvRCxNQUFNLGdCQUFnQixDQUFDO0FBQzNJLE9BQU8sTUFBb0MsTUFBTSxxQ0FBcUMsQ0FBQztBQTZCdkYsbUNBQW1DO0FBQ25DLE1BQU0sVUFBVSxXQUFXLENBQWdFLEdBQVc7SUFDbEcsT0FBTyxnQkFBZ0IsQ0FBQztRQUNwQixHQUFHO1FBQ0gsWUFBWSxFQUFFLElBQUk7UUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLEdBQUcsOEZBQThGLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDM0osQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVELDJFQUEyRTtBQUMzRSxNQUFNLE9BQU8sVUFBVTtJQUNuQixZQUNxQiw0QkFBbUUsRUFDbkUsT0FBeUM7UUFEekMsaUNBQTRCLEdBQTVCLDRCQUE0QixDQUF1QztRQUNuRSxZQUFPLEdBQVAsT0FBTyxDQUFrQztJQUM5RCxDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQXdCO1FBQ2pDLE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BJLENBQUM7Q0FDSjtBQUVELG1FQUFtRTtBQUNuRSxNQUFNLE9BQU8sV0FBVztJQUNwQixZQUNxQix3QkFBMkQsRUFDM0QsT0FBNEI7UUFENUIsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUFtQztRQUMzRCxZQUFPLEdBQVAsT0FBTyxDQUFxQjtJQUNqRCxDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQXdCO1FBQ2pDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO1FBQ25ELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1FBRWpELE1BQU0sYUFBYSxHQUFtQjtZQUNsQyxPQUFPLEVBQUUsY0FBYyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPO1lBQzFHLE1BQU0sRUFBRSxhQUFhLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU07U0FDeEcsQ0FBQztRQUVGLE9BQU8sSUFBSSxJQUFJLENBQUMsd0JBQXdCLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDL0YsQ0FBQztDQUNKIn0=
package/dist/proxy.d.ts CHANGED
@@ -1,9 +1,7 @@
1
- /// <reference types="qs" />
2
1
  import { IInjectable, IServiceCollection } from "@shrub/core";
3
- import { ControllerInvokerConstructor, IRequestContext } from "@shrub/express";
4
- import { IRequest } from "@sprig/request-client";
2
+ import { ControllerInvokerConstructor, ICreateControllerInvokerOptions, IRequestContext } from "@shrub/express";
3
+ import { IRequest } from "@sprig/request-client/dist/polyfill";
5
4
  import { RequestClientConstructor } from "@sprig/request-client-class";
6
- import { RequestHandler } from "express";
7
5
  /** The client type for a proxy. */
8
6
  export declare type ProxyClient<T> = T extends IProxy<infer C> ? C : never;
9
7
  export declare type ProxyFactory<TProxy extends IProxy<TClient>, TClient = ProxyClient<TProxy>> = (services: IServiceCollection) => TProxy;
@@ -30,8 +28,8 @@ export declare function createProxy<TProxy extends IProxy<TClient>, TClient = Pr
30
28
  /** A proxy where the client and enpoint are hosted in the same process. */
31
29
  export declare class LocalProxy<TClient> implements IProxy<TClient> {
32
30
  private readonly controllerInvokerConstructor;
33
- private readonly handler?;
34
- constructor(controllerInvokerConstructor: ControllerInvokerConstructor<TClient>, handler?: RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs> | undefined);
31
+ private readonly options?;
32
+ constructor(controllerInvokerConstructor: ControllerInvokerConstructor<TClient>, options?: ICreateControllerInvokerOptions | undefined);
35
33
  createClient(context: IRequestContext): TClient;
36
34
  }
37
35
  /** A proxy where the client accesses an external REST endpoint. */
package/dist/proxy.js CHANGED
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.RemoteProxy = exports.LocalProxy = exports.createProxy = void 0;
7
7
  const core_1 = require("@shrub/core");
8
8
  const express_1 = require("@shrub/express");
9
- const request_client_1 = __importDefault(require("@sprig/request-client"));
9
+ const polyfill_1 = __importDefault(require("@sprig/request-client/dist/polyfill"));
10
10
  /** Creates an injectable proxy. */
11
11
  function createProxy(key) {
12
12
  return core_1.createInjectable({
@@ -18,12 +18,12 @@ function createProxy(key) {
18
18
  exports.createProxy = createProxy;
19
19
  /** A proxy where the client and enpoint are hosted in the same process. */
20
20
  class LocalProxy {
21
- constructor(controllerInvokerConstructor, handler) {
21
+ constructor(controllerInvokerConstructor, options) {
22
22
  this.controllerInvokerConstructor = controllerInvokerConstructor;
23
- this.handler = handler;
23
+ this.options = options;
24
24
  }
25
25
  createClient(context) {
26
- return context.services.get(express_1.IControllerInvokerService).createControllerInvoker(this.controllerInvokerConstructor, this.handler);
26
+ return context.services.get(express_1.IControllerInvokerService).createControllerInvoker(this.controllerInvokerConstructor, this.options);
27
27
  }
28
28
  }
29
29
  exports.LocalProxy = LocalProxy;
@@ -37,11 +37,11 @@ class RemoteProxy {
37
37
  const prepareRequest = this.options.prepareRequest;
38
38
  const prepareStream = this.options.prepareStream;
39
39
  const requestClient = {
40
- request: prepareRequest && (options => prepareRequest(context, request_client_1.default.request(options))) || request_client_1.default.request,
41
- stream: prepareStream && (options => prepareStream(context, request_client_1.default.stream(options))) || request_client_1.default.stream,
40
+ request: prepareRequest && (options => prepareRequest(context, polyfill_1.default.request(options))) || polyfill_1.default.request,
41
+ stream: prepareStream && (options => prepareStream(context, polyfill_1.default.stream(options))) || polyfill_1.default.stream,
42
42
  };
43
43
  return new this.requestClientConstructor({ url: this.options.url, client: requestClient });
44
44
  }
45
45
  }
46
46
  exports.RemoteProxy = RemoteProxy;
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHJveHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsc0NBQWdGO0FBQ2hGLDRDQUEwRztBQUMxRywyRUFBeUU7QUE4QnpFLG1DQUFtQztBQUNuQyxTQUFnQixXQUFXLENBQWdFLEdBQVc7SUFDbEcsT0FBTyx1QkFBZ0IsQ0FBQztRQUNwQixHQUFHO1FBQ0gsWUFBWSxFQUFFLElBQUk7UUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLEdBQUcsOEZBQThGLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDM0osQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQU5ELGtDQU1DO0FBRUQsMkVBQTJFO0FBQzNFLE1BQWEsVUFBVTtJQUNuQixZQUNxQiw0QkFBbUUsRUFDbkUsT0FBd0I7UUFEeEIsaUNBQTRCLEdBQTVCLDRCQUE0QixDQUF1QztRQUNuRSxZQUFPLEdBQVAsT0FBTyxDQUFpQjtJQUM3QyxDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQXdCO1FBQ2pDLE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsbUNBQXlCLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BJLENBQUM7Q0FDSjtBQVRELGdDQVNDO0FBRUQsbUVBQW1FO0FBQ25FLE1BQWEsV0FBVztJQUNwQixZQUNxQix3QkFBMkQsRUFDM0QsT0FBNEI7UUFENUIsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUFtQztRQUMzRCxZQUFPLEdBQVAsT0FBTyxDQUFxQjtJQUNqRCxDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQXdCO1FBQ2pDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO1FBQ25ELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1FBRWpELE1BQU0sYUFBYSxHQUFtQjtZQUNsQyxPQUFPLEVBQUUsY0FBYyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLHdCQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSx3QkFBTSxDQUFDLE9BQU87WUFDMUcsTUFBTSxFQUFFLGFBQWEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSx3QkFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksd0JBQU0sQ0FBQyxNQUFNO1NBQ3hHLENBQUM7UUFFRixPQUFPLElBQUksSUFBSSxDQUFDLHdCQUF3QixDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQy9GLENBQUM7Q0FDSjtBQWpCRCxrQ0FpQkMifQ==
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHJveHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsc0NBQWdGO0FBQ2hGLDRDQUEySTtBQUMzSSxtRkFBdUY7QUE2QnZGLG1DQUFtQztBQUNuQyxTQUFnQixXQUFXLENBQWdFLEdBQVc7SUFDbEcsT0FBTyx1QkFBZ0IsQ0FBQztRQUNwQixHQUFHO1FBQ0gsWUFBWSxFQUFFLElBQUk7UUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLEdBQUcsOEZBQThGLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDM0osQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQU5ELGtDQU1DO0FBRUQsMkVBQTJFO0FBQzNFLE1BQWEsVUFBVTtJQUNuQixZQUNxQiw0QkFBbUUsRUFDbkUsT0FBeUM7UUFEekMsaUNBQTRCLEdBQTVCLDRCQUE0QixDQUF1QztRQUNuRSxZQUFPLEdBQVAsT0FBTyxDQUFrQztJQUM5RCxDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQXdCO1FBQ2pDLE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsbUNBQXlCLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BJLENBQUM7Q0FDSjtBQVRELGdDQVNDO0FBRUQsbUVBQW1FO0FBQ25FLE1BQWEsV0FBVztJQUNwQixZQUNxQix3QkFBMkQsRUFDM0QsT0FBNEI7UUFENUIsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUFtQztRQUMzRCxZQUFPLEdBQVAsT0FBTyxDQUFxQjtJQUNqRCxDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQXdCO1FBQ2pDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO1FBQ25ELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1FBRWpELE1BQU0sYUFBYSxHQUFtQjtZQUNsQyxPQUFPLEVBQUUsY0FBYyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLGtCQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxrQkFBTSxDQUFDLE9BQU87WUFDMUcsTUFBTSxFQUFFLGFBQWEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxrQkFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksa0JBQU0sQ0FBQyxNQUFNO1NBQ3hHLENBQUM7UUFFRixPQUFPLElBQUksSUFBSSxDQUFDLHdCQUF3QixDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQy9GLENBQUM7Q0FDSjtBQWpCRCxrQ0FpQkMifQ==
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@shrub/express-gateway",
3
3
  "description": "Express module that provides support for communicating between client and Api services.",
4
- "version": "0.5.43",
4
+ "version": "0.5.47",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
@@ -28,11 +28,11 @@
28
28
  "@types/express": "4.17.9"
29
29
  },
30
30
  "dependencies": {
31
- "@shrub/core": "0.5.43",
32
- "@shrub/express": "0.5.43",
33
- "@sprig/request-client": "^0.1.71",
34
- "@sprig/request-client-class": "^0.1.71",
31
+ "@shrub/core": "0.5.47",
32
+ "@shrub/express": "0.5.47",
33
+ "@sprig/request-client": "^0.2.0",
34
+ "@sprig/request-client-class": "^0.2.0",
35
35
  "express": "^4.17.1"
36
36
  },
37
- "gitHead": "e26d60479a38c6899dfd600ab7c46abedf6a3d6c"
37
+ "gitHead": "fc54ebb4aabb49bda42dab6456054cc7715b2070"
38
38
  }