@reown/appkit-coinbase-react-native 0.0.0-feat-coinbase-20250722174423 → 0.0.0-feat-coinbase-20250722184953

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.
@@ -9,6 +9,7 @@ var _walletMobileSdk = require("@coinbase/wallet-mobile-sdk");
9
9
  var _utils = require("../utils");
10
10
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
11
  class CoinbaseProvider extends _events.default {
12
+ chainChangedListeners = new Map();
12
13
  constructor(config) {
13
14
  super();
14
15
  this.config = config;
@@ -37,9 +38,6 @@ class CoinbaseProvider extends _events.default {
37
38
  } else {
38
39
  accounts = this.provider.selectedAddress ? [this.provider.selectedAddress] : [];
39
40
  }
40
-
41
- //TODO: check switch chain
42
-
43
41
  return accounts;
44
42
  } catch (error) {
45
43
  console.warn('CoinbaseProvider: connect error', error);
@@ -59,10 +57,38 @@ class CoinbaseProvider extends _events.default {
59
57
  getChainId() {
60
58
  return this.provider.chainId;
61
59
  }
60
+ onChainChanged(hexChainId) {
61
+ const chainId = (0, _utils.hexToString)(hexChainId);
62
+ this.emit('chainChanged', {
63
+ chainId
64
+ });
65
+ }
62
66
  on(event, listener) {
67
+ if (event === 'chainChanged') {
68
+ // Create middleware that formats the chain ID before calling the original listener
69
+ const chainChangedMiddleware = hexChainId => {
70
+ const chainId = (0, _utils.hexToString)(hexChainId);
71
+ listener(chainId);
72
+ };
73
+
74
+ // Store the mapping between original listener and middleware
75
+ this.chainChangedListeners.set(listener, chainChangedMiddleware);
76
+ return this.provider.on('chainChanged', chainChangedMiddleware);
77
+ }
63
78
  return this.provider.on(event, listener);
64
79
  }
65
80
  off(event, listener) {
81
+ if (event === 'chainChanged') {
82
+ // Get the middleware wrapper for this listener
83
+ const middleware = this.chainChangedListeners.get(listener);
84
+ if (middleware) {
85
+ // Remove the middleware from the provider
86
+ this.provider.off('chainChanged', middleware);
87
+ // Remove the mapping
88
+ this.chainChangedListeners.delete(listener);
89
+ return this;
90
+ }
91
+ }
66
92
  return this.provider.off(event, listener);
67
93
  }
68
94
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_events","_interopRequireDefault","require","_walletMobileSdk","_utils","e","__esModule","default","CoinbaseProvider","EventEmitter","constructor","config","configure","hostURL","URL","callbackURL","redirect","hostPackageName","provider","WalletMobileSDKEVMProvider","jsonRpcUrl","rpcUrl","chainId","defaultChain","storage","connect","accounts","isConnected","connected","request","method","params","selectedAddress","error","console","warn","disconnect","Promise","resolve","args","isValidMethod","Error","getChainId","on","event","listener","off","exports"],"sourceRoot":"../../../src","sources":["providers/CoinbaseProvider.ts"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,gBAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AAAyC,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAGlC,MAAMG,gBAAgB,SAASC,eAAY,CAAqB;EAIrEC,WAAWA,CAACC,MAA8B,EAAE;IAC1C,KAAK,CAAC,CAAC;IACP,IAAI,CAACA,MAAM,GAAGA,MAAM;IACpB,IAAAC,0BAAS,EAAC;MACRC,OAAO,EAAE,IAAIC,GAAG,CAAC,oCAAoC,CAAC;MACtDC,WAAW,EAAE,IAAID,GAAG,CAAC,IAAI,CAACH,MAAM,CAACK,QAAQ,CAAC;MAAE;MAC5CC,eAAe,EAAE;IACnB,CAAC,CAAC;IACF,IAAI,CAACC,QAAQ,GAAG,IAAIC,2CAA0B,CAAC;MAC7C,GAAG,IAAI,CAACR,MAAM;MACdS,UAAU,EAAE,IAAI,CAACT,MAAM,CAACU,MAAM;MAC9BC,OAAO,EAAE,IAAI,CAACX,MAAM,CAACY,YAAY;MACjCC,OAAO,EAAE,IAAI,CAACb,MAAM,CAACa;IACvB,CAAC,CAAC;EACJ;EAEA,MAAMC,OAAOA,CAAA,EAA6B;IACxC,IAAI;MACF,IAAIC,QAAkB,GAAG,EAAE;MAC3B,MAAMC,WAAW,GAAG,IAAI,CAACT,QAAQ,CAACU,SAAS;MAE3C,IAAI,CAACD,WAAW,EAAE;QAChBD,QAAQ,GAAG,MAAM,IAAI,CAACR,QAAQ,CAACW,OAAO,CAAC;UACrCC,MAAM,EAAE,qBAAqB;UAC7BC,MAAM,EAAE;QACV,CAAC,CAAC;MACJ,CAAC,MAAM;QACLL,QAAQ,GAAG,IAAI,CAACR,QAAQ,CAACc,eAAe,GAAG,CAAC,IAAI,CAACd,QAAQ,CAACc,eAAe,CAAC,GAAG,EAAE;MACjF;;MAEA;;MAEA,OAAON,QAAQ;IACjB,CAAC,CAAC,OAAOO,KAAK,EAAE;MACdC,OAAO,CAACC,IAAI,CAAC,iCAAiC,EAAEF,KAAK,CAAC;MAEtD,MAAMA,KAAK;IACb;EACF;EACA,MAAMG,UAAUA,CAAA,EAAkB;IAChC,IAAI,CAAClB,QAAQ,CAACkB,UAAU,CAAC,CAAC;IAE1B,OAAOC,OAAO,CAACC,OAAO,CAAC,CAAC;EAC1B;EAEAT,OAAOA,CAAcU,IAAsB,EAAc;IACvD,IAAI,CAAC,IAAAC,oBAAa,EAACD,IAAI,CAACT,MAAM,CAAC,EAAE;MAC/B,MAAM,IAAIW,KAAK,CAAE,qCAAoCF,IAAI,CAACT,MAAO,EAAC,CAAC;IACrE;IAEA,OAAO,IAAI,CAACZ,QAAQ,CAACW,OAAO,CAACU,IAAI,CAAC;EACpC;EAEAG,UAAUA,CAAA,EAAkB;IAC1B,OAAO,IAAI,CAACxB,QAAQ,CAACI,OAAO;EAC9B;EAESqB,EAAEA,CAACC,KAAa,EAAEC,QAA8B,EAAO;IAC9D,OAAO,IAAI,CAAC3B,QAAQ,CAACyB,EAAE,CAACC,KAAK,EAAEC,QAAQ,CAAC;EAC1C;EAESC,GAAGA,CAACF,KAAa,EAAEC,QAA8B,EAAO;IAC/D,OAAO,IAAI,CAAC3B,QAAQ,CAAC4B,GAAG,CAACF,KAAK,EAAEC,QAAQ,CAAC;EAC3C;AACF;AAACE,OAAA,CAAAvC,gBAAA,GAAAA,gBAAA"}
1
+ {"version":3,"names":["_events","_interopRequireDefault","require","_walletMobileSdk","_utils","e","__esModule","default","CoinbaseProvider","EventEmitter","chainChangedListeners","Map","constructor","config","configure","hostURL","URL","callbackURL","redirect","hostPackageName","provider","WalletMobileSDKEVMProvider","jsonRpcUrl","rpcUrl","chainId","defaultChain","storage","connect","accounts","isConnected","connected","request","method","params","selectedAddress","error","console","warn","disconnect","Promise","resolve","args","isValidMethod","Error","getChainId","onChainChanged","hexChainId","hexToString","emit","on","event","listener","chainChangedMiddleware","set","off","middleware","get","delete","exports"],"sourceRoot":"../../../src","sources":["providers/CoinbaseProvider.ts"],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import EventEmitter from 'events';
2
2
  import { configure, WalletMobileSDKEVMProvider } from '@coinbase/wallet-mobile-sdk';
3
- import { isValidMethod } from '../utils';
3
+ import { hexToString, isValidMethod } from '../utils';
4
4
  export class CoinbaseProvider extends EventEmitter {
5
+ chainChangedListeners = new Map();
5
6
  constructor(config) {
6
7
  super();
7
8
  this.config = config;
@@ -30,9 +31,6 @@ export class CoinbaseProvider extends EventEmitter {
30
31
  } else {
31
32
  accounts = this.provider.selectedAddress ? [this.provider.selectedAddress] : [];
32
33
  }
33
-
34
- //TODO: check switch chain
35
-
36
34
  return accounts;
37
35
  } catch (error) {
38
36
  console.warn('CoinbaseProvider: connect error', error);
@@ -52,10 +50,38 @@ export class CoinbaseProvider extends EventEmitter {
52
50
  getChainId() {
53
51
  return this.provider.chainId;
54
52
  }
53
+ onChainChanged(hexChainId) {
54
+ const chainId = hexToString(hexChainId);
55
+ this.emit('chainChanged', {
56
+ chainId
57
+ });
58
+ }
55
59
  on(event, listener) {
60
+ if (event === 'chainChanged') {
61
+ // Create middleware that formats the chain ID before calling the original listener
62
+ const chainChangedMiddleware = hexChainId => {
63
+ const chainId = hexToString(hexChainId);
64
+ listener(chainId);
65
+ };
66
+
67
+ // Store the mapping between original listener and middleware
68
+ this.chainChangedListeners.set(listener, chainChangedMiddleware);
69
+ return this.provider.on('chainChanged', chainChangedMiddleware);
70
+ }
56
71
  return this.provider.on(event, listener);
57
72
  }
58
73
  off(event, listener) {
74
+ if (event === 'chainChanged') {
75
+ // Get the middleware wrapper for this listener
76
+ const middleware = this.chainChangedListeners.get(listener);
77
+ if (middleware) {
78
+ // Remove the middleware from the provider
79
+ this.provider.off('chainChanged', middleware);
80
+ // Remove the mapping
81
+ this.chainChangedListeners.delete(listener);
82
+ return this;
83
+ }
84
+ }
59
85
  return this.provider.off(event, listener);
60
86
  }
61
87
  }
@@ -1 +1 @@
1
- {"version":3,"names":["EventEmitter","configure","WalletMobileSDKEVMProvider","isValidMethod","CoinbaseProvider","constructor","config","hostURL","URL","callbackURL","redirect","hostPackageName","provider","jsonRpcUrl","rpcUrl","chainId","defaultChain","storage","connect","accounts","isConnected","connected","request","method","params","selectedAddress","error","console","warn","disconnect","Promise","resolve","args","Error","getChainId","on","event","listener","off"],"sourceRoot":"../../../src","sources":["providers/CoinbaseProvider.ts"],"mappings":"AAAA,OAAOA,YAAY,MAAM,QAAQ;AAEjC,SAASC,SAAS,EAAEC,0BAA0B,QAAQ,6BAA6B;AACnF,SAASC,aAAa,QAAQ,UAAU;AAGxC,OAAO,MAAMC,gBAAgB,SAASJ,YAAY,CAAqB;EAIrEK,WAAWA,CAACC,MAA8B,EAAE;IAC1C,KAAK,CAAC,CAAC;IACP,IAAI,CAACA,MAAM,GAAGA,MAAM;IACpBL,SAAS,CAAC;MACRM,OAAO,EAAE,IAAIC,GAAG,CAAC,oCAAoC,CAAC;MACtDC,WAAW,EAAE,IAAID,GAAG,CAAC,IAAI,CAACF,MAAM,CAACI,QAAQ,CAAC;MAAE;MAC5CC,eAAe,EAAE;IACnB,CAAC,CAAC;IACF,IAAI,CAACC,QAAQ,GAAG,IAAIV,0BAA0B,CAAC;MAC7C,GAAG,IAAI,CAACI,MAAM;MACdO,UAAU,EAAE,IAAI,CAACP,MAAM,CAACQ,MAAM;MAC9BC,OAAO,EAAE,IAAI,CAACT,MAAM,CAACU,YAAY;MACjCC,OAAO,EAAE,IAAI,CAACX,MAAM,CAACW;IACvB,CAAC,CAAC;EACJ;EAEA,MAAMC,OAAOA,CAAA,EAA6B;IACxC,IAAI;MACF,IAAIC,QAAkB,GAAG,EAAE;MAC3B,MAAMC,WAAW,GAAG,IAAI,CAACR,QAAQ,CAACS,SAAS;MAE3C,IAAI,CAACD,WAAW,EAAE;QAChBD,QAAQ,GAAG,MAAM,IAAI,CAACP,QAAQ,CAACU,OAAO,CAAC;UACrCC,MAAM,EAAE,qBAAqB;UAC7BC,MAAM,EAAE;QACV,CAAC,CAAC;MACJ,CAAC,MAAM;QACLL,QAAQ,GAAG,IAAI,CAACP,QAAQ,CAACa,eAAe,GAAG,CAAC,IAAI,CAACb,QAAQ,CAACa,eAAe,CAAC,GAAG,EAAE;MACjF;;MAEA;;MAEA,OAAON,QAAQ;IACjB,CAAC,CAAC,OAAOO,KAAK,EAAE;MACdC,OAAO,CAACC,IAAI,CAAC,iCAAiC,EAAEF,KAAK,CAAC;MAEtD,MAAMA,KAAK;IACb;EACF;EACA,MAAMG,UAAUA,CAAA,EAAkB;IAChC,IAAI,CAACjB,QAAQ,CAACiB,UAAU,CAAC,CAAC;IAE1B,OAAOC,OAAO,CAACC,OAAO,CAAC,CAAC;EAC1B;EAEAT,OAAOA,CAAcU,IAAsB,EAAc;IACvD,IAAI,CAAC7B,aAAa,CAAC6B,IAAI,CAACT,MAAM,CAAC,EAAE;MAC/B,MAAM,IAAIU,KAAK,CAAE,qCAAoCD,IAAI,CAACT,MAAO,EAAC,CAAC;IACrE;IAEA,OAAO,IAAI,CAACX,QAAQ,CAACU,OAAO,CAACU,IAAI,CAAC;EACpC;EAEAE,UAAUA,CAAA,EAAkB;IAC1B,OAAO,IAAI,CAACtB,QAAQ,CAACG,OAAO;EAC9B;EAESoB,EAAEA,CAACC,KAAa,EAAEC,QAA8B,EAAO;IAC9D,OAAO,IAAI,CAACzB,QAAQ,CAACuB,EAAE,CAACC,KAAK,EAAEC,QAAQ,CAAC;EAC1C;EAESC,GAAGA,CAACF,KAAa,EAAEC,QAA8B,EAAO;IAC/D,OAAO,IAAI,CAACzB,QAAQ,CAAC0B,GAAG,CAACF,KAAK,EAAEC,QAAQ,CAAC;EAC3C;AACF"}
1
+ {"version":3,"names":["EventEmitter","configure","WalletMobileSDKEVMProvider","hexToString","isValidMethod","CoinbaseProvider","chainChangedListeners","Map","constructor","config","hostURL","URL","callbackURL","redirect","hostPackageName","provider","jsonRpcUrl","rpcUrl","chainId","defaultChain","storage","connect","accounts","isConnected","connected","request","method","params","selectedAddress","error","console","warn","disconnect","Promise","resolve","args","Error","getChainId","onChainChanged","hexChainId","emit","on","event","listener","chainChangedMiddleware","set","off","middleware","get","delete"],"sourceRoot":"../../../src","sources":["providers/CoinbaseProvider.ts"],"mappings":"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"}
@@ -5,11 +5,13 @@ import type { CoinbaseProviderConfig } from '../types';
5
5
  export declare class CoinbaseProvider extends EventEmitter implements Provider {
6
6
  private readonly config;
7
7
  private provider;
8
+ private chainChangedListeners;
8
9
  constructor(config: CoinbaseProviderConfig);
9
10
  connect<T = string[]>(): Promise<T>;
10
11
  disconnect(): Promise<void>;
11
12
  request<T = unknown>(args: RequestArguments): Promise<T>;
12
13
  getChainId(): `0x${string}`;
14
+ onChainChanged(hexChainId: `0x${string}`): void;
13
15
  on(event: string, listener: (args?: any) => void): any;
14
16
  off(event: string, listener: (args?: any) => void): any;
15
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CoinbaseProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/CoinbaseProvider.ts"],"names":[],"mappings":";AAAA,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAGpF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvD,qBAAa,gBAAiB,SAAQ,YAAa,YAAW,QAAQ;IACpE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAChD,OAAO,CAAC,QAAQ,CAA6B;gBAEjC,MAAM,EAAE,sBAAsB;IAgBpC,OAAO,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC;IAuBnC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAMjC,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC;IAQxD,UAAU,IAAI,KAAK,MAAM,EAAE;IAIlB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,GAAG,GAAG;IAItD,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,GAAG,GAAG;CAGjE"}
1
+ {"version":3,"file":"CoinbaseProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/CoinbaseProvider.ts"],"names":[],"mappings":";AAAA,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAGpF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvD,qBAAa,gBAAiB,SAAQ,YAAa,YAAW,QAAQ;IACpE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAChD,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,qBAAqB,CAGzB;gBAEQ,MAAM,EAAE,sBAAsB;IAgBpC,OAAO,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC;IAqBnC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAMjC,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC;IAQxD,UAAU,IAAI,KAAK,MAAM,EAAE;IAI3B,cAAc,CAAC,UAAU,EAAE,KAAK,MAAM,EAAE,GAAG,IAAI;IAKtC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,GAAG,GAAG;IAiBtD,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,GAAG,GAAG;CAgBjE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reown/appkit-coinbase-react-native",
3
- "version": "0.0.0-feat-coinbase-20250722174423",
3
+ "version": "0.0.0-feat-coinbase-20250722184953",
4
4
  "main": "lib/commonjs/index.js",
5
5
  "types": "lib/typescript/index.d.ts",
6
6
  "module": "lib/module/index.js",
@@ -35,7 +35,7 @@
35
35
  "access": "public"
36
36
  },
37
37
  "dependencies": {
38
- "@reown/appkit-common-react-native": "0.0.0-feat-coinbase-20250722174423"
38
+ "@reown/appkit-common-react-native": "0.0.0-feat-coinbase-20250722184953"
39
39
  },
40
40
  "peerDependencies": {
41
41
  "@coinbase/wallet-mobile-sdk": ">=1.1.2"
@@ -1,12 +1,16 @@
1
1
  import EventEmitter from 'events';
2
2
  import type { Provider, RequestArguments } from '@reown/appkit-common-react-native';
3
3
  import { configure, WalletMobileSDKEVMProvider } from '@coinbase/wallet-mobile-sdk';
4
- import { isValidMethod } from '../utils';
4
+ import { hexToString, isValidMethod } from '../utils';
5
5
  import type { CoinbaseProviderConfig } from '../types';
6
6
 
7
7
  export class CoinbaseProvider extends EventEmitter implements Provider {
8
8
  private readonly config: CoinbaseProviderConfig;
9
9
  private provider: WalletMobileSDKEVMProvider;
10
+ private chainChangedListeners = new Map<
11
+ (args?: any) => void,
12
+ (hexChainId: `0x${string}`) => void
13
+ >();
10
14
 
11
15
  constructor(config: CoinbaseProviderConfig) {
12
16
  super();
@@ -38,8 +42,6 @@ export class CoinbaseProvider extends EventEmitter implements Provider {
38
42
  accounts = this.provider.selectedAddress ? [this.provider.selectedAddress] : [];
39
43
  }
40
44
 
41
- //TODO: check switch chain
42
-
43
45
  return accounts as T;
44
46
  } catch (error) {
45
47
  console.warn('CoinbaseProvider: connect error', error);
@@ -65,11 +67,42 @@ export class CoinbaseProvider extends EventEmitter implements Provider {
65
67
  return this.provider.chainId as `0x${string}`;
66
68
  }
67
69
 
70
+ onChainChanged(hexChainId: `0x${string}`): void {
71
+ const chainId = hexToString(hexChainId);
72
+ this.emit('chainChanged', { chainId });
73
+ }
74
+
68
75
  override on(event: string, listener: (args?: any) => void): any {
76
+ if (event === 'chainChanged') {
77
+ // Create middleware that formats the chain ID before calling the original listener
78
+ const chainChangedMiddleware = (hexChainId: `0x${string}`) => {
79
+ const chainId = hexToString(hexChainId);
80
+ listener(chainId);
81
+ };
82
+
83
+ // Store the mapping between original listener and middleware
84
+ this.chainChangedListeners.set(listener, chainChangedMiddleware);
85
+
86
+ return this.provider.on('chainChanged', chainChangedMiddleware);
87
+ }
88
+
69
89
  return this.provider.on(event, listener);
70
90
  }
71
91
 
72
92
  override off(event: string, listener: (args?: any) => void): any {
93
+ if (event === 'chainChanged') {
94
+ // Get the middleware wrapper for this listener
95
+ const middleware = this.chainChangedListeners.get(listener);
96
+ if (middleware) {
97
+ // Remove the middleware from the provider
98
+ this.provider.off('chainChanged', middleware);
99
+ // Remove the mapping
100
+ this.chainChangedListeners.delete(listener);
101
+
102
+ return this;
103
+ }
104
+ }
105
+
73
106
  return this.provider.off(event, listener);
74
107
  }
75
108
  }