__web_sw_.mjs raw

   1  // Package ./web/sw/
   2  // Generated by MoxieJS — Moxie JavaScript backend
   3  
   4  import * as $rt from './$runtime/index.mjs';
   5  
   6  import * as smesh$lol$web$common$helpers from './smesh_lol_web_common_helpers.mjs';
   7  import * as smesh$lol$web$common$jsbridge$idb from './smesh_lol_web_common_jsbridge_idb.mjs';
   8  import * as smesh$lol$web$common$jsbridge$schnorr from './smesh_lol_web_common_jsbridge_schnorr.mjs';
   9  import * as smesh$lol$web$common$jsbridge$subtle from './smesh_lol_web_common_jsbridge_subtle.mjs';
  10  import * as smesh$lol$web$common$jsbridge$sw from './smesh_lol_web_common_jsbridge_sw.mjs';
  11  import * as smesh$lol$web$common$nostr from './smesh_lol_web_common_nostr.mjs';
  12  import * as smesh$lol$web$common$relay from './smesh_lol_web_common_relay.mjs';
  13  
  14  // Package-level variables
  15  export let rpool = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
  16  export let writeRelays = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
  17  export let seckey = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
  18  export let hasKey = { $value: false, $get() { return this.$value; }, $set(v) { this.$value = v; } };
  19  export let myPubkey = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
  20  export let staticFiles = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
  21  export let currentVersion = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
  22  export let clientSubs = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
  23  export let proxySubs = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
  24  export let dmSubIDs = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
  25  export let dmRelayURLs = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
  26  export let cryptoCBs = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
  27  export let nextCryptoID = { $value: 0, $get() { return this.$value; }, $set(v) { this.$value = v; } };
  28  
  29  $rt.types.registerType('./web/sw/.DMRecord', {
  30    id: './web/sw/.DMRecord',
  31    kind: 'struct',
  32    methods: new Map(),
  33    fields: [
  34      { name: 'ID', type: 'string', tag: '', embedded: false },
  35      { name: 'Peer', type: 'string', tag: '', embedded: false },
  36      { name: 'From', type: 'string', tag: '', embedded: false },
  37      { name: 'Content', type: 'string', tag: '', embedded: false },
  38      { name: 'CreatedAt', type: 'int64', tag: '', embedded: false },
  39      { name: 'Protocol', type: 'string', tag: '', embedded: false },
  40      { name: 'EventID', type: 'string', tag: '', embedded: false },
  41    ],
  42    zero: () => ({ ID: '', Peer: '', From: '', Content: '', CreatedAt: 0n, Protocol: '', EventID: '' }),
  43  });
  44  $rt.types.registerType('./web/sw/.clientSub', {
  45    id: './web/sw/.clientSub',
  46    kind: 'struct',
  47    methods: new Map(),
  48    fields: [
  49      { name: 'filter', type: '*smesh.lol/web/common/nostr.Filter', tag: '', embedded: false },
  50      { name: 'filterRaw', type: 'string', tag: '', embedded: false },
  51      { name: 'clientID', type: 'string', tag: '', embedded: false },
  52    ],
  53    zero: () => ({ filter: null, filterRaw: '', clientID: '' }),
  54  });
  55  $rt.types.registerType('./web/sw/.proxySub', {
  56    id: './web/sw/.proxySub',
  57    kind: 'struct',
  58    methods: new Map(),
  59    fields: [
  60      { name: 'remoteIDs', type: 'map[string]bool', tag: '', embedded: false },
  61      { name: 'relayCount', type: 'int', tag: '', embedded: false },
  62      { name: 'eoseCount', type: 'int', tag: '', embedded: false },
  63      { name: 'timer', type: 'smesh.lol/web/common/jsbridge/sw.Timer', tag: '', embedded: false },
  64      { name: 'done', type: 'bool', tag: '', embedded: false },
  65    ],
  66    zero: () => ({ remoteIDs: null, relayCount: 0, eoseCount: 0, timer: 0, done: false }),
  67  });
  68  $rt.types.registerType('./web/sw/.mw', {
  69    id: './web/sw/.mw',
  70    kind: 'struct',
  71    methods: new Map(),
  72    fields: [
  73      { name: 's', type: 'string', tag: '', embedded: false },
  74      { name: 'i', type: 'int', tag: '', embedded: false },
  75    ],
  76    zero: () => ({ s: '', i: 0 }),
  77  });
  78  export function init() {
  79    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
  80    $t0_1 = { $value: $rt.builtin.makeSlice(5, 5, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
  81    $t1_2 = $t0_1.$get().addr(0);
  82    $t1_2.$set('/');
  83    $t2_3 = $t0_1.$get().addr(1);
  84    $t2_3.$set('/index.html');
  85    $t3_4 = $t0_1.$get().addr(2);
  86    $t3_4.$set('/style.css');
  87    $t4_5 = $t0_1.$get().addr(3);
  88    $t4_5.$set('/smesh-logo.svg');
  89    $t5_6 = $t0_1.$get().addr(4);
  90    $t5_6.$set('/sw-register.js');
  91    $t6_7 = $rt.builtin.sliceSlice($t0_1.$get(), undefined, undefined, undefined);
  92    staticFiles.$set($t6_7);
  93    return;
  94  }
  95  
  96  export function cacheQuery(filterRaw, cb) {
  97    let $t0_1;
  98    $t0_1 = smesh$lol$web$common$jsbridge$idb.QueryEvents(filterRaw, cb);
  99    return;
 100  }
 101  
 102  export function cacheStore(evJSON, cb) {
 103    let $t0_1;
 104    $t0_1 = smesh$lol$web$common$jsbridge$idb.SaveEvent(evJSON, cb);
 105    return;
 106  }
 107  
 108  export function cacheSaveDM(dmJSON, cb) {
 109    let $t0_1;
 110    $t0_1 = smesh$lol$web$common$jsbridge$idb.SaveDM(dmJSON, cb);
 111    return;
 112  }
 113  
 114  export function cacheGetConversationList(cb) {
 115    let $t0_1;
 116    $t0_1 = smesh$lol$web$common$jsbridge$idb.GetConversationList(cb);
 117    return;
 118  }
 119  
 120  export function cacheQueryDMs(peer, limit, until, cb) {
 121    let $t0_1;
 122    $t0_1 = smesh$lol$web$common$jsbridge$idb.QueryDMs(peer, limit, until, cb);
 123    return;
 124  }
 125  
 126  export function initRelayProxy() {
 127    let $t0_1;
 128    $t0_1 = smesh$lol$web$common$relay.NewPool();
 129    rpool.$set($t0_1);
 130    return;
 131  }
 132  
 133  export function getConn(url) {
 134    let $t0_1, $t1_2, $t2_3;
 135    $t0_1 = rpool.$get();
 136    $t1_2 = smesh$lol$web$common$relay.Pool$Connect($t0_1, url);
 137    $t2_3 = wireConn($t1_2, url);
 138    return $t1_2;
 139  }
 140  
 141  export function wireConn(c, url) {
 142    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
 143    $t0_1 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
 144    $t0_1.$set(url);
 145    $t1_2 = wireConn$1.bind(null, $t0_1);
 146    $t2_3 = smesh$lol$web$common$relay.Conn$SetOnEvent(c, $t1_2);
 147    $t3_4 = smesh$lol$web$common$relay.Conn$SetOnEOSE(c, wireConn$2);
 148    $t4_5 = smesh$lol$web$common$relay.Conn$SetOnOK(c, wireConn$3);
 149    $t5_6 = wireConn$4.bind(null, $t0_1);
 150    $t6_7 = smesh$lol$web$common$relay.Conn$SetOnAuth(c, $t5_6);
 151    return;
 152  }
 153  
 154  function wireConn$1(url, subID, ev) {
 155    let $t0_1, $t1_2;
 156    $t0_1 = url.$get();
 157    $t1_2 = routerOnRelayEvent($t0_1, subID, ev);
 158    return;
 159  }
 160  
 161  function wireConn$2(subID) {
 162    let $t0_1;
 163    $t0_1 = routerOnRelayEOSE(subID);
 164    return;
 165  }
 166  
 167  function wireConn$3(eventID, ok, msg) {
 168    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10;
 169    let $block = 0;
 170    while (true) {
 171      switch ($block) {
 172        case 0: {
 173          if (ok) {
 174            $t0_1 = 'true';
 175            $block = 2; break;
 176          }
 177          else {
 178            $block = 1; break;
 179          }
 180          break;
 181        }
 182        case 1: {
 183          $t0_1 = 'false';
 184          $block = 2; break;
 185          break;
 186        }
 187        case 2: {
 188          $t1_2 = jstr(eventID);
 189          $t2_3 = ('["OK",' + $t1_2);
 190          $t3_4 = ($t2_3 + ',');
 191          $t4_5 = ($t3_4 + $t0_1);
 192          $t5_6 = ($t4_5 + ',');
 193          $t6_7 = jstr(msg);
 194          $t7_8 = ($t5_6 + $t6_7);
 195          $t8_9 = ($t7_8 + ']');
 196          $t9_10 = broadcastToClients($t8_9);
 197          return;
 198          break;
 199        }
 200      }
 201    }
 202  }
 203  
 204  function wireConn$4(url, challenge) {
 205    let $t0_1, $t1_2;
 206    $t0_1 = url.$get();
 207    $t1_2 = onRelayAuth($t0_1, challenge);
 208    return;
 209  }
 210  
 211  export function onRelayAuth(relayURL, challenge) {
 212    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30;
 213    let $block = 0;
 214    while (true) {
 215      switch ($block) {
 216        case 0: {
 217          $t0_1 = hasKey.$get();
 218          if ($t0_1) {
 219            $block = 3; break;
 220          }
 221          else {
 222            $block = 1; break;
 223          }
 224          break;
 225        }
 226        case 1: {
 227          return;
 228          break;
 229        }
 230        case 2: {
 231          $t1_2 = { $value: { ID: '', PubKey: '', CreatedAt: 0n, Kind: 0, Tags: null, Content: '', Sig: '' }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
 232          $t2_3 = { $get() { return $t1_2.$get().Kind; }, $set(v) { const obj = $t1_2.$get(); obj.Kind = v; $t1_2.$set(obj); } };
 233          $t3_4 = { $get() { return $t1_2.$get().Content; }, $set(v) { const obj = $t1_2.$get(); obj.Content = v; $t1_2.$set(obj); } };
 234          $t4_5 = { $get() { return $t1_2.$get().Tags; }, $set(v) { const obj = $t1_2.$get(); obj.Tags = v; $t1_2.$set(obj); } };
 235          $t5_6 = { $value: $rt.builtin.makeSlice(2, 2, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
 236          $t6_7 = $t5_6.$get().addr(0);
 237          $t7_8 = { $value: $rt.builtin.makeSlice(2, 2, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
 238          $t8_9 = $t7_8.$get().addr(0);
 239          $t8_9.$set('relay');
 240          $t9_10 = $t7_8.$get().addr(1);
 241          $t9_10.$set(relayURL);
 242          $t10_11 = $rt.builtin.sliceSlice($t7_8.$get(), undefined, undefined, undefined);
 243          $t6_7.$set($t10_11);
 244          $t11_12 = $t5_6.$get().addr(1);
 245          $t12_13 = { $value: $rt.builtin.makeSlice(2, 2, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
 246          $t13_14 = $t12_13.$get().addr(0);
 247          $t13_14.$set('challenge');
 248          $t14_15 = $t12_13.$get().addr(1);
 249          $t14_15.$set(challenge);
 250          $t15_16 = $rt.builtin.sliceSlice($t12_13.$get(), undefined, undefined, undefined);
 251          $t11_12.$set($t15_16);
 252          $t16_17 = $rt.builtin.sliceSlice($t5_6.$get(), undefined, undefined, undefined);
 253          $t17_18 = { $get() { return $t1_2.$get().CreatedAt; }, $set(v) { const obj = $t1_2.$get(); obj.CreatedAt = v; $t1_2.$set(obj); } };
 254          $t18_19 = smesh$lol$web$common$jsbridge$sw.NowSeconds();
 255          $t2_3.$set(22242);
 256          $t3_4.$set('');
 257          $t4_5.$set($t16_17);
 258          $t17_18.$set($t18_19);
 259          $t19_20 = identitySignEvent($t1_2);
 260          if ($t19_20) {
 261            $block = 5; break;
 262          }
 263          else {
 264            $block = 4; break;
 265          }
 266          break;
 267        }
 268        case 3: {
 269          $t20_21 = myPubkey.$get();
 270          $t21_22 = $rt.builtin.stringEqual($t20_21, '');
 271          if ($t21_22) {
 272            $block = 1; break;
 273          }
 274          else {
 275            $block = 2; break;
 276          }
 277          break;
 278        }
 279        case 4: {
 280          return;
 281          break;
 282        }
 283        case 5: {
 284          $t22_23 = rpool.$get();
 285          $t23_24 = smesh$lol$web$common$relay.Pool$Get($t22_23, relayURL);
 286          $t24_25 = ($t23_24 !== null);
 287          if ($t24_25) {
 288            $block = 8; break;
 289          }
 290          else {
 291            $block = 7; break;
 292          }
 293          break;
 294        }
 295        case 6: {
 296          $t25_26 = smesh$lol$web$common$nostr.Event$ToJSON($t1_2);
 297          $t26_27 = ('["AUTH",' + $t25_26);
 298          $t27_28 = ($t26_27 + ']');
 299          $t28_29 = smesh$lol$web$common$relay.Conn$Send($t23_24, $t27_28);
 300          $block = 7; break;
 301          break;
 302        }
 303        case 7: {
 304          return;
 305          break;
 306        }
 307        case 8: {
 308          $t29_30 = smesh$lol$web$common$relay.Conn$IsOpen($t23_24);
 309          if ($t29_30) {
 310            $block = 6; break;
 311          }
 312          else {
 313            $block = 7; break;
 314          }
 315          break;
 316        }
 317      }
 318    }
 319  }
 320  
 321  export function relayPublish(ev) {
 322    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9;
 323    let $block = 0;
 324    while (true) {
 325      switch ($block) {
 326        case 0: {
 327          $t0_1 = writeRelays.$get();
 328          $t1_2 = $rt.builtin.len($t0_1);
 329          $t2_3 = -1;
 330          $block = 1; break;
 331          break;
 332        }
 333        case 1: {
 334          $t3_4 = ($t2_3 + 1);
 335          $t4_5 = ($t3_4 < $t1_2);
 336          if ($t4_5) {
 337            $block = 2; break;
 338          }
 339          else {
 340            $block = 3; break;
 341          }
 342          break;
 343        }
 344        case 2: {
 345          $t5_6 = $t0_1.addr($t3_4);
 346          $t6_7 = $t5_6.$get();
 347          $t7_8 = getConn($t6_7);
 348          $t8_9 = smesh$lol$web$common$relay.Conn$Publish($t7_8, ev);
 349          $t2_3 = $t3_4;
 350          $block = 1; break;
 351          break;
 352        }
 353        case 3: {
 354          return;
 355          break;
 356        }
 357      }
 358    }
 359  }
 360  
 361  export function urlSuffix(url) {
 362    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22;
 363    let $block = 0;
 364    while (true) {
 365      switch ($block) {
 366        case 0: {
 367          $t0_1 = $rt.builtin.len(url);
 368          $t1_2 = Math.min($t0_1, 8);
 369          $t2_3 = $rt.builtin.makeSlice(0, $t1_2, 0);
 370          $t3_4 = $rt.builtin.len(url);
 371          $t4_5 = ($t3_4 - $t1_2);
 372          $t5_6 = $t2_3;
 373          $t6_7 = $t4_5;
 374          $block = 1; break;
 375          break;
 376        }
 377        case 1: {
 378          $t7_8 = $rt.builtin.len(url);
 379          $t8_9 = ($t6_7 < $t7_8);
 380          if ($t8_9) {
 381            $block = 2; break;
 382          }
 383          else {
 384            $block = 3; break;
 385          }
 386          break;
 387        }
 388        case 2: {
 389          $t9_10 = url.addr($t6_7);
 390          $t10_11 = $t9_10.$get();
 391          $t11_12 = ($t10_11 >= 97);
 392          if ($t11_12) {
 393            $block = 7; break;
 394          }
 395          else {
 396            $block = 6; break;
 397          }
 398          break;
 399        }
 400        case 3: {
 401          $t12_13 = $rt.builtin.bytesToString($t5_6);
 402          return $t12_13;
 403          break;
 404        }
 405        case 4: {
 406          $t13_14 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
 407          $t14_15 = $t13_14.$get().addr(0);
 408          $t14_15.$set($t10_11);
 409          $t15_16 = $rt.builtin.sliceSlice($t13_14.$get(), undefined, undefined, undefined);
 410          $t16_17 = $rt.builtin.appendSlice($t5_6, $t15_16);
 411          $t17_18 = $t16_17;
 412          $block = 5; break;
 413          break;
 414        }
 415        case 5: {
 416          $t18_19 = ($t6_7 + 1);
 417          $t5_6 = $t17_18;
 418          $t6_7 = $t18_19;
 419          $block = 1; break;
 420          break;
 421        }
 422        case 6: {
 423          $t19_20 = ($t10_11 >= 48);
 424          if ($t19_20) {
 425            $block = 8; break;
 426          }
 427          else {
 428            $t17_18 = $t5_6;
 429            $block = 5; break;
 430          }
 431          break;
 432        }
 433        case 7: {
 434          $t20_21 = ($t10_11 <= 122);
 435          if ($t20_21) {
 436            $block = 4; break;
 437          }
 438          else {
 439            $block = 6; break;
 440          }
 441          break;
 442        }
 443        case 8: {
 444          $t21_22 = ($t10_11 <= 57);
 445          if ($t21_22) {
 446            $block = 4; break;
 447          }
 448          else {
 449            $t17_18 = $t5_6;
 450            $block = 5; break;
 451          }
 452          break;
 453        }
 454      }
 455    }
 456  }
 457  
 458  export function handleRelayInfo(clientID, relayURL) {
 459    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18;
 460    let $block = 0;
 461    while (true) {
 462      switch ($block) {
 463        case 0: {
 464          $t0_1 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
 465          $t0_1.$set(clientID);
 466          $t1_2 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
 467          $t1_2.$set(relayURL);
 468          $t2_3 = $t1_2.$get();
 469          $t3_4 = $rt.builtin.len($t2_3);
 470          $t4_5 = ($t3_4 > 6);
 471          if ($t4_5) {
 472            $block = 4; break;
 473          }
 474          else {
 475            $block = 3; break;
 476          }
 477          break;
 478        }
 479        case 1: {
 480          $t5_6 = $rt.builtin.stringSlice($t2_3, 6, undefined);
 481          $t6_7 = ('https://' + $t5_6);
 482          $t7_8 = $t6_7;
 483          $block = 2; break;
 484          break;
 485        }
 486        case 2: {
 487          $t8_9 = handleRelayInfo$1.bind(null, $t0_1, $t1_2);
 488          $t9_10 = smesh$lol$web$common$jsbridge$sw.Fetch($t7_8, $t8_9);
 489          return;
 490          break;
 491        }
 492        case 3: {
 493          $t10_11 = $rt.builtin.len($t2_3);
 494          $t11_12 = ($t10_11 > 5);
 495          if ($t11_12) {
 496            $block = 6; break;
 497          }
 498          else {
 499            $t7_8 = $t2_3;
 500            $block = 2; break;
 501          }
 502          break;
 503        }
 504        case 4: {
 505          $t12_13 = $rt.builtin.stringSlice($t2_3, undefined, 6);
 506          $t13_14 = $rt.builtin.stringEqual($t12_13, 'wss://');
 507          if ($t13_14) {
 508            $block = 1; break;
 509          }
 510          else {
 511            $block = 3; break;
 512          }
 513          break;
 514        }
 515        case 5: {
 516          $t14_15 = $rt.builtin.stringSlice($t2_3, 5, undefined);
 517          $t15_16 = ('http://' + $t14_15);
 518          $t7_8 = $t15_16;
 519          $block = 2; break;
 520          break;
 521        }
 522        case 6: {
 523          $t16_17 = $rt.builtin.stringSlice($t2_3, undefined, 5);
 524          $t17_18 = $rt.builtin.stringEqual($t16_17, 'ws://');
 525          if ($t17_18) {
 526            $block = 5; break;
 527          }
 528          else {
 529            $t7_8 = $t2_3;
 530            $block = 2; break;
 531          }
 532          break;
 533        }
 534      }
 535    }
 536  }
 537  
 538  function handleRelayInfo$1(clientID, relayURL, resp, ok) {
 539    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6;
 540    $t0_1 = clientID.$get();
 541    $t1_2 = relayURL.$get();
 542    $t2_3 = jstr($t1_2);
 543    $t3_4 = ('["RELAY_INFO",' + $t2_3);
 544    $t4_5 = ($t3_4 + ',null]');
 545    $t5_6 = sendToClient($t0_1, $t4_5);
 546    return;
 547  }
 548  
 549  export function makeDMRecord(peer, from, content, createdAt, protocol, eventID) {
 550    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8;
 551    $t0_1 = { $value: { ID: '', Peer: '', From: '', Content: '', CreatedAt: 0n, Protocol: '', EventID: '' }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
 552    $t1_2 = { $get() { return $t0_1.$get().ID; }, $set(v) { const obj = $t0_1.$get(); obj.ID = v; $t0_1.$set(obj); } };
 553    $t2_3 = { $get() { return $t0_1.$get().Peer; }, $set(v) { const obj = $t0_1.$get(); obj.Peer = v; $t0_1.$set(obj); } };
 554    $t3_4 = { $get() { return $t0_1.$get().From; }, $set(v) { const obj = $t0_1.$get(); obj.From = v; $t0_1.$set(obj); } };
 555    $t4_5 = { $get() { return $t0_1.$get().Content; }, $set(v) { const obj = $t0_1.$get(); obj.Content = v; $t0_1.$set(obj); } };
 556    $t5_6 = { $get() { return $t0_1.$get().CreatedAt; }, $set(v) { const obj = $t0_1.$get(); obj.CreatedAt = v; $t0_1.$set(obj); } };
 557    $t6_7 = { $get() { return $t0_1.$get().Protocol; }, $set(v) { const obj = $t0_1.$get(); obj.Protocol = v; $t0_1.$set(obj); } };
 558    $t7_8 = { $get() { return $t0_1.$get().EventID; }, $set(v) { const obj = $t0_1.$get(); obj.EventID = v; $t0_1.$set(obj); } };
 559    $t1_2.$set(eventID);
 560    $t2_3.$set(peer);
 561    $t3_4.$set(from);
 562    $t4_5.$set(content);
 563    $t5_6.$set(createdAt);
 564    $t6_7.$set(protocol);
 565    $t7_8.$set(eventID);
 566    return $t0_1;
 567  }
 568  
 569  export function identitySetKey(hexKey) {
 570    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6;
 571    let $block = 0;
 572    while (true) {
 573      switch ($block) {
 574        case 0: {
 575          $t0_1 = hexTo32(hexKey);
 576          seckey.$set($rt.builtin.cloneValue($t0_1));
 577          hasKey.$set(true);
 578          $t1_2 = $rt.builtin.sliceSlice(seckey.$get(), undefined, undefined, undefined);
 579          $t2_3 = smesh$lol$web$common$jsbridge$schnorr.PubKeyFromSecKey($t1_2);
 580          $t3_4 = $t2_3[0];
 581          $t4_5 = $t2_3[1];
 582          if ($t4_5) {
 583            $block = 1; break;
 584          }
 585          else {
 586            $block = 2; break;
 587          }
 588          break;
 589        }
 590        case 1: {
 591          $t5_6 = smesh$lol$web$common$helpers.HexEncode($t3_4);
 592          myPubkey.$set($t5_6);
 593          $block = 2; break;
 594          break;
 595        }
 596        case 2: {
 597          return;
 598          break;
 599        }
 600      }
 601    }
 602  }
 603  
 604  export function identitySetPubkey(hex) {
 605    myPubkey.$set(hex);
 606    return;
 607  }
 608  
 609  export function identityClearKey() {
 610    seckey.$set($rt.builtin.cloneValue($rt.builtin.makeSlice(32, 32, 0)));
 611    hasKey.$set(false);
 612    myPubkey.$set('');
 613    return;
 614  }
 615  
 616  export function identitySignEvent(ev) {
 617    let $t0_1, $t1_2, $t2_3, $t3_4;
 618    let $block = 0;
 619    while (true) {
 620      switch ($block) {
 621        case 0: {
 622          $t0_1 = hasKey.$get();
 623          if ($t0_1) {
 624            $block = 2; break;
 625          }
 626          else {
 627            $block = 1; break;
 628          }
 629          break;
 630        }
 631        case 1: {
 632          return false;
 633          break;
 634        }
 635        case 2: {
 636          $t1_2 = random32();
 637          $t2_3 = seckey.$get();
 638          $t3_4 = smesh$lol$web$common$nostr.Event$Sign(ev, $t2_3, $t1_2);
 639          return $t3_4;
 640          break;
 641        }
 642      }
 643    }
 644  }
 645  
 646  export function main() {
 647    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9;
 648    $t0_1 = initRouter();
 649    $t1_2 = initRelayProxy();
 650    $t2_3 = initSharedState();
 651    $t3_4 = smesh$lol$web$common$jsbridge$idb.Open(main$1);
 652    $t4_5 = smesh$lol$web$common$jsbridge$sw.OnInstall(onInstall);
 653    $t5_6 = smesh$lol$web$common$jsbridge$sw.OnActivate(onActivate);
 654    $t6_7 = smesh$lol$web$common$jsbridge$sw.OnFetch(onFetch);
 655    $t7_8 = smesh$lol$web$common$jsbridge$sw.OnMessage(onMessage);
 656    $t8_9 = connectSSE();
 657    return;
 658  }
 659  
 660  function main$1() {
 661    return;
 662  }
 663  
 664  export function onInstall(event) {
 665    let $t0_1;
 666    $t0_1 = smesh$lol$web$common$jsbridge$sw.WaitUntil(event, onInstall$1);
 667    return;
 668  }
 669  
 670  function onInstall$1(done) {
 671    let $t0_1, $t1_2, $t2_3;
 672    $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
 673    $t0_1.$set(done);
 674    $t1_2 = onInstall$1$1.bind(null, $t0_1);
 675    $t2_3 = smesh$lol$web$common$jsbridge$sw.CacheOpen('smesh', $t1_2);
 676    return;
 677  }
 678  
 679  function onInstall$1$1(done, cache) {
 680    let $t0_1, $t1_2, $t2_3;
 681    $t0_1 = staticFiles.$get();
 682    $t1_2 = onInstall$1$1$1.bind(null, done);
 683    $t2_3 = smesh$lol$web$common$jsbridge$sw.CacheFromManifests(cache, $t0_1, $t1_2);
 684    return;
 685  }
 686  
 687  function onInstall$1$1$1(done) {
 688    let $t0_1, $t1_2, $t2_3;
 689    $t0_1 = smesh$lol$web$common$jsbridge$sw.SkipWaiting();
 690    $t1_2 = done.$get();
 691    $t2_3 = $t1_2();
 692    return;
 693  }
 694  
 695  export function onActivate(event) {
 696    let $t0_1;
 697    $t0_1 = smesh$lol$web$common$jsbridge$sw.WaitUntil(event, onActivate$1);
 698    return;
 699  }
 700  
 701  function onActivate$1(done) {
 702    let $t0_1, $t1_2, $t2_3;
 703    $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
 704    $t0_1.$set(done);
 705    $t1_2 = onActivate$1$1.bind(null, $t0_1);
 706    $t2_3 = smesh$lol$web$common$jsbridge$sw.CacheDelete('sm3sh', $t1_2);
 707    return;
 708  }
 709  
 710  function onActivate$1$1(done) {
 711    let $t0_1, $t1_2;
 712    $t0_1 = onActivate$1$1$1.bind(null, done);
 713    $t1_2 = smesh$lol$web$common$jsbridge$sw.ClaimClients($t0_1);
 714    return;
 715  }
 716  
 717  function onActivate$1$1$1(done) {
 718    let $t0_1, $t1_2;
 719    $t0_1 = done.$get();
 720    $t1_2 = $t0_1();
 721    return;
 722  }
 723  
 724  export function onFetch(event) {
 725    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13;
 726    let $block = 0;
 727    while (true) {
 728      switch ($block) {
 729        case 0: {
 730          $t0_1 = smesh$lol$web$common$jsbridge$sw.GetRequestURL(event);
 731          $t1_2 = smesh$lol$web$common$jsbridge$sw.Origin();
 732          $t2_3 = $rt.builtin.len($t0_1);
 733          $t3_4 = $rt.builtin.len($t1_2);
 734          $t4_5 = ($t2_3 < $t3_4);
 735          if ($t4_5) {
 736            $block = 1; break;
 737          }
 738          else {
 739            $block = 3; break;
 740          }
 741          break;
 742        }
 743        case 1: {
 744          return;
 745          break;
 746        }
 747        case 2: {
 748          $t5_6 = smesh$lol$web$common$jsbridge$sw.GetRequestPath(event);
 749          $t6_7 = $rt.builtin.stringEqual($t5_6, '/__sse');
 750          if ($t6_7) {
 751            $block = 4; break;
 752          }
 753          else {
 754            $block = 6; break;
 755          }
 756          break;
 757        }
 758        case 3: {
 759          $t7_8 = $rt.builtin.len($t1_2);
 760          $t8_9 = $rt.builtin.stringSlice($t0_1, undefined, $t7_8);
 761          $t9_10 = !$rt.builtin.stringEqual($t8_9, $t1_2);
 762          if ($t9_10) {
 763            $block = 1; break;
 764          }
 765          else {
 766            $block = 2; break;
 767          }
 768          break;
 769        }
 770        case 4: {
 771          return;
 772          break;
 773        }
 774        case 5: {
 775          $t10_11 = isNavigationPath($t5_6);
 776          if ($t10_11) {
 777            $block = 7; break;
 778          }
 779          else {
 780            $block = 8; break;
 781          }
 782          break;
 783        }
 784        case 6: {
 785          $t11_12 = $rt.builtin.stringEqual($t5_6, '/__version');
 786          if ($t11_12) {
 787            $block = 4; break;
 788          }
 789          else {
 790            $block = 5; break;
 791          }
 792          break;
 793        }
 794        case 7: {
 795          return;
 796          break;
 797        }
 798        case 8: {
 799          $t12_13 = smesh$lol$web$common$jsbridge$sw.RespondWithCacheFirst(event);
 800          return;
 801          break;
 802        }
 803      }
 804    }
 805  }
 806  
 807  export function isNavigationPath(path) {
 808    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27;
 809    let $block = 0;
 810    while (true) {
 811      switch ($block) {
 812        case 0: {
 813          $t0_1 = $rt.builtin.stringEqual(path, '/');
 814          if ($t0_1) {
 815            $block = 1; break;
 816          }
 817          else {
 818            $block = 3; break;
 819          }
 820          break;
 821        }
 822        case 1: {
 823          return true;
 824          break;
 825        }
 826        case 2: {
 827          $t1_2 = $rt.builtin.len(path);
 828          $t2_3 = ($t1_2 > 2);
 829          if ($t2_3) {
 830            $block = 6; break;
 831          }
 832          else {
 833            $block = 5; break;
 834          }
 835          break;
 836        }
 837        case 3: {
 838          $t3_4 = $rt.builtin.stringEqual(path, '/index.html');
 839          if ($t3_4) {
 840            $block = 1; break;
 841          }
 842          else {
 843            $block = 2; break;
 844          }
 845          break;
 846        }
 847        case 4: {
 848          return true;
 849          break;
 850        }
 851        case 5: {
 852          $t4_5 = $rt.builtin.len(path);
 853          $t5_6 = ($t4_5 > 2);
 854          if ($t5_6) {
 855            $block = 9; break;
 856          }
 857          else {
 858            $block = 8; break;
 859          }
 860          break;
 861        }
 862        case 6: {
 863          $t6_7 = $rt.builtin.stringSlice(path, undefined, 2);
 864          $t7_8 = $rt.builtin.stringEqual($t6_7, '/p');
 865          if ($t7_8) {
 866            $block = 4; break;
 867          }
 868          else {
 869            $block = 5; break;
 870          }
 871          break;
 872        }
 873        case 7: {
 874          return true;
 875          break;
 876        }
 877        case 8: {
 878          $t8_9 = $rt.builtin.len(path);
 879          $t9_10 = ($t8_9 > 3);
 880          if ($t9_10) {
 881            $block = 12; break;
 882          }
 883          else {
 884            $block = 11; break;
 885          }
 886          break;
 887        }
 888        case 9: {
 889          $t10_11 = $rt.builtin.stringSlice(path, undefined, 2);
 890          $t11_12 = $rt.builtin.stringEqual($t10_11, '/t');
 891          if ($t11_12) {
 892            $block = 7; break;
 893          }
 894          else {
 895            $block = 8; break;
 896          }
 897          break;
 898        }
 899        case 10: {
 900          return true;
 901          break;
 902        }
 903        case 11: {
 904          $t12_13 = $rt.builtin.len(path);
 905          $t13_14 = ($t12_13 - 1);
 906          $t16_17 = $t13_14;
 907          $block = 13; break;
 908          break;
 909        }
 910        case 12: {
 911          $t14_15 = $rt.builtin.stringSlice(path, undefined, 4);
 912          $t15_16 = $rt.builtin.stringEqual($t14_15, '/msg');
 913          if ($t15_16) {
 914            $block = 10; break;
 915          }
 916          else {
 917            $block = 11; break;
 918          }
 919          break;
 920        }
 921        case 13: {
 922          $t17_18 = ($t16_17 >= 0);
 923          if ($t17_18) {
 924            $block = 16; break;
 925          }
 926          else {
 927            $t21_22 = false;
 928            $block = 15; break;
 929          }
 930          break;
 931        }
 932        case 14: {
 933          $t18_19 = path.addr($t16_17);
 934          $t19_20 = $t18_19.$get();
 935          $t20_21 = ($t19_20 === 46);
 936          if ($t20_21) {
 937            $block = 17; break;
 938          }
 939          else {
 940            $block = 18; break;
 941          }
 942          break;
 943        }
 944        case 15: {
 945          $t22_23 = !$t21_22;
 946          return $t22_23;
 947          break;
 948        }
 949        case 16: {
 950          $t23_24 = path.addr($t16_17);
 951          $t24_25 = $t23_24.$get();
 952          $t25_26 = ($t24_25 !== 47);
 953          if ($t25_26) {
 954            $block = 14; break;
 955          }
 956          else {
 957            $t21_22 = false;
 958            $block = 15; break;
 959          }
 960          break;
 961        }
 962        case 17: {
 963          $t21_22 = true;
 964          $block = 15; break;
 965          break;
 966        }
 967        case 18: {
 968          $t26_27 = ($t16_17 - 1);
 969          $t16_17 = $t26_27;
 970          $block = 13; break;
 971          break;
 972        }
 973      }
 974    }
 975  }
 976  
 977  export function onMessage(event) {
 978    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27;
 979    let $block = 0;
 980    while (true) {
 981      switch ($block) {
 982        case 0: {
 983          $t0_1 = smesh$lol$web$common$jsbridge$sw.GetMessageData(event);
 984          $t1_2 = smesh$lol$web$common$jsbridge$sw.GetMessageClientID(event);
 985          $t2_3 = $rt.builtin.stringEqual($t0_1, 'activate-update');
 986          if ($t2_3) {
 987            $block = 1; break;
 988          }
 989          else {
 990            $block = 2; break;
 991          }
 992          break;
 993        }
 994        case 1: {
 995          $t3_4 = refreshAndReload();
 996          return;
 997          break;
 998        }
 999        case 2: {
1000          $t4_5 = $rt.builtin.stringEqual($t0_1, 'CLAIM');
1001          if ($t4_5) {
1002            $block = 3; break;
1003          }
1004          else {
1005            $block = 4; break;
1006          }
1007          break;
1008        }
1009        case 3: {
1010          $t5_6 = smesh$lol$web$common$jsbridge$sw.ClaimClients(onMessage$1);
1011          return;
1012          break;
1013        }
1014        case 4: {
1015          $t6_7 = { $value: { s: '', i: 0 }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
1016          $t7_8 = newMW($t0_1);
1017          $t6_7.$set($rt.builtin.cloneValue($t7_8));
1018          $t8_9 = mw$str($t6_7);
1019          $t9_10 = $rt.builtin.stringEqual($t8_9, 'SKIP_WAITING');
1020          if ($t9_10) {
1021            $block = 6; break;
1022          }
1023          else {
1024            $block = 8; break;
1025          }
1026          break;
1027        }
1028        case 5: {
1029          return;
1030          break;
1031        }
1032        case 6: {
1033          $t10_11 = smesh$lol$web$common$jsbridge$sw.SkipWaiting();
1034          $block = 5; break;
1035          break;
1036        }
1037        case 7: {
1038          $t11_12 = clientSubs.$get();
1039          $t12_13 = $rt.builtin.len($t11_12);
1040          $t13_14 = BigInt($t12_13);
1041          $t14_15 = smesh$lol$web$common$helpers.Itoa($t13_14);
1042          $t15_16 = ('subs=' + $t14_15);
1043          $t16_17 = ($t15_16 + ' proxy=');
1044          $t17_18 = proxySubs.$get();
1045          $t18_19 = $rt.builtin.len($t17_18);
1046          $t19_20 = BigInt($t18_19);
1047          $t20_21 = smesh$lol$web$common$helpers.Itoa($t19_20);
1048          $t21_22 = ($t16_17 + $t20_21);
1049          $t22_23 = ('["DIAG","' + $t21_22);
1050          $t23_24 = ($t22_23 + '"]');
1051          $t24_25 = sendToClient($t1_2, $t23_24);
1052          $block = 5; break;
1053          break;
1054        }
1055        case 8: {
1056          $t25_26 = $rt.builtin.stringEqual($t8_9, 'DIAG');
1057          if ($t25_26) {
1058            $block = 7; break;
1059          }
1060          else {
1061            $block = 9; break;
1062          }
1063          break;
1064        }
1065        case 9: {
1066          $t26_27 = routeMessage($t1_2, $t6_7, $t8_9);
1067          $block = 5; break;
1068          break;
1069        }
1070      }
1071    }
1072  }
1073  
1074  function onMessage$1() {
1075    return;
1076  }
1077  
1078  export function connectSSE() {
1079    let $t0_1;
1080    $t0_1 = smesh$lol$web$common$jsbridge$sw.SSEConnect('/__version', connectSSE$1);
1081    return;
1082  }
1083  
1084  function connectSSE$1(data) {
1085    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9;
1086    let $block = 0;
1087    while (true) {
1088      switch ($block) {
1089        case 0: {
1090          $t0_1 = jsonFieldRaw(data, 'v');
1091          $t1_2 = $rt.builtin.stringEqual($t0_1, '');
1092          if ($t1_2) {
1093            $block = 1; break;
1094          }
1095          else {
1096            $t2_3 = $t0_1;
1097            $block = 2; break;
1098          }
1099          break;
1100        }
1101        case 1: {
1102          $t2_3 = data;
1103          $block = 2; break;
1104          break;
1105        }
1106        case 2: {
1107          $t3_4 = $rt.builtin.stringEqual($t2_3, '');
1108          if ($t3_4) {
1109            $block = 3; break;
1110          }
1111          else {
1112            $block = 4; break;
1113          }
1114          break;
1115        }
1116        case 3: {
1117          return;
1118          break;
1119        }
1120        case 4: {
1121          $t4_5 = currentVersion.$get();
1122          $t5_6 = $rt.builtin.stringEqual($t4_5, '');
1123          if ($t5_6) {
1124            $block = 5; break;
1125          }
1126          else {
1127            $block = 6; break;
1128          }
1129          break;
1130        }
1131        case 5: {
1132          currentVersion.$set($t2_3);
1133          return;
1134          break;
1135        }
1136        case 6: {
1137          $t6_7 = currentVersion.$get();
1138          $t7_8 = !$rt.builtin.stringEqual($t2_3, $t6_7);
1139          if ($t7_8) {
1140            $block = 7; break;
1141          }
1142          else {
1143            $block = 8; break;
1144          }
1145          break;
1146        }
1147        case 7: {
1148          currentVersion.$set($t2_3);
1149          $t8_9 = notifyUpdate();
1150          $block = 8; break;
1151          break;
1152        }
1153        case 8: {
1154          return;
1155          break;
1156        }
1157      }
1158    }
1159  }
1160  
1161  export function notifyUpdate() {
1162    let $t0_1;
1163    $t0_1 = smesh$lol$web$common$jsbridge$sw.MatchClients(notifyUpdate$1);
1164    return;
1165  }
1166  
1167  function notifyUpdate$1(client) {
1168    let $t0_1;
1169    $t0_1 = smesh$lol$web$common$jsbridge$sw.PostMessage(client, 'update-available');
1170    return;
1171  }
1172  
1173  export function refreshAndReload() {
1174    let $t0_1;
1175    $t0_1 = smesh$lol$web$common$jsbridge$sw.CacheOpen('smesh', refreshAndReload$1);
1176    return;
1177  }
1178  
1179  function refreshAndReload$1(cache) {
1180    let $t0_1, $t1_2;
1181    $t0_1 = staticFiles.$get();
1182    $t1_2 = smesh$lol$web$common$jsbridge$sw.CacheFromManifests(cache, $t0_1, refreshAndReload$1$1);
1183    return;
1184  }
1185  
1186  function refreshAndReload$1$1() {
1187    let $t0_1;
1188    $t0_1 = smesh$lol$web$common$jsbridge$sw.MatchClients(refreshAndReload$1$1$1);
1189    return;
1190  }
1191  
1192  function refreshAndReload$1$1$1(client) {
1193    let $t0_1;
1194    $t0_1 = smesh$lol$web$common$jsbridge$sw.Navigate(client, '');
1195    return;
1196  }
1197  
1198  export function initRouter() {
1199    let $t0_1, $t1_2;
1200    $t0_1 = $rt.builtin.makeMap('string');
1201    clientSubs.$set($t0_1);
1202    $t1_2 = $rt.builtin.makeMap('string');
1203    proxySubs.$set($t1_2);
1204    return;
1205  }
1206  
1207  export function routeMessage(clientID, w, msgType) {
1208    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68, $t68_69, $t69_70, $t70_71, $t71_72, $t72_73, $t73_74, $t74_75, $t75_76, $t76_77, $t77_78, $t78_79, $t79_80;
1209    let $block = 0;
1210    while (true) {
1211      switch ($block) {
1212        case 0: {
1213          $t0_1 = $rt.builtin.stringEqual(msgType, 'REQ');
1214          if ($t0_1) {
1215            $block = 2; break;
1216          }
1217          else {
1218            $block = 4; break;
1219          }
1220          break;
1221        }
1222        case 1: {
1223          return;
1224          break;
1225        }
1226        case 2: {
1227          $t1_2 = mw$str(w);
1228          $t2_3 = mw$raw(w);
1229          $t3_4 = routerReq(clientID, $t1_2, $t2_3);
1230          $block = 1; break;
1231          break;
1232        }
1233        case 3: {
1234          $t4_5 = mw$str(w);
1235          $t5_6 = routerClose($t4_5);
1236          $block = 1; break;
1237          break;
1238        }
1239        case 4: {
1240          $t6_7 = $rt.builtin.stringEqual(msgType, 'CLOSE');
1241          if ($t6_7) {
1242            $block = 3; break;
1243          }
1244          else {
1245            $block = 6; break;
1246          }
1247          break;
1248        }
1249        case 5: {
1250          $t7_8 = mw$raw(w);
1251          $t8_9 = routerPublish(clientID, $t7_8);
1252          $block = 1; break;
1253          break;
1254        }
1255        case 6: {
1256          $t9_10 = $rt.builtin.stringEqual(msgType, 'EVENT');
1257          if ($t9_10) {
1258            $block = 5; break;
1259          }
1260          else {
1261            $block = 8; break;
1262          }
1263          break;
1264        }
1265        case 7: {
1266          $t10_11 = mw$str(w);
1267          $t11_12 = mw$raw(w);
1268          $t12_13 = mw$strs(w);
1269          $t13_14 = routerProxy(clientID, $t10_11, $t11_12, $t12_13);
1270          $block = 1; break;
1271          break;
1272        }
1273        case 8: {
1274          $t14_15 = $rt.builtin.stringEqual(msgType, 'PROXY');
1275          if ($t14_15) {
1276            $block = 7; break;
1277          }
1278          else {
1279            $block = 10; break;
1280          }
1281          break;
1282        }
1283        case 9: {
1284          $t15_16 = mw$str(w);
1285          $t16_17 = handleRelayInfo(clientID, $t15_16);
1286          $block = 1; break;
1287          break;
1288        }
1289        case 10: {
1290          $t17_18 = $rt.builtin.stringEqual(msgType, 'RELAY_INFO');
1291          if ($t17_18) {
1292            $block = 9; break;
1293          }
1294          else {
1295            $block = 12; break;
1296          }
1297          break;
1298        }
1299        case 11: {
1300          $t18_19 = mw$str(w);
1301          $t19_20 = identitySetKey($t18_19);
1302          $t20_21 = sendToClient(clientID, '["KEY_SET"]');
1303          $block = 1; break;
1304          break;
1305        }
1306        case 12: {
1307          $t21_22 = $rt.builtin.stringEqual(msgType, 'SET_KEY');
1308          if ($t21_22) {
1309            $block = 11; break;
1310          }
1311          else {
1312            $block = 14; break;
1313          }
1314          break;
1315        }
1316        case 13: {
1317          $t22_23 = mw$str(w);
1318          $t23_24 = identitySetPubkey($t22_23);
1319          $block = 1; break;
1320          break;
1321        }
1322        case 14: {
1323          $t24_25 = $rt.builtin.stringEqual(msgType, 'SET_PUBKEY');
1324          if ($t24_25) {
1325            $block = 13; break;
1326          }
1327          else {
1328            $block = 16; break;
1329          }
1330          break;
1331        }
1332        case 15: {
1333          $t25_26 = identityClearKey();
1334          writeRelays.$set(null);
1335          $block = 1; break;
1336          break;
1337        }
1338        case 16: {
1339          $t26_27 = $rt.builtin.stringEqual(msgType, 'CLEAR_KEY');
1340          if ($t26_27) {
1341            $block = 15; break;
1342          }
1343          else {
1344            $block = 18; break;
1345          }
1346          break;
1347        }
1348        case 17: {
1349          $t27_28 = mw$strs(w);
1350          writeRelays.$set(null);
1351          $t28_29 = $rt.builtin.len($t27_28);
1352          $t34_35 = -1;
1353          $block = 21; break;
1354          break;
1355        }
1356        case 18: {
1357          $t29_30 = $rt.builtin.stringEqual(msgType, 'SET_WRITE_RELAYS');
1358          if ($t29_30) {
1359            $block = 17; break;
1360          }
1361          else {
1362            $block = 20; break;
1363          }
1364          break;
1365        }
1366        case 19: {
1367          $t30_31 = mw$str(w);
1368          $t31_32 = mw$raw(w);
1369          $t32_33 = routerSign(clientID, $t30_31, $t31_32);
1370          $block = 1; break;
1371          break;
1372        }
1373        case 20: {
1374          $t33_34 = $rt.builtin.stringEqual(msgType, 'SIGN');
1375          if ($t33_34) {
1376            $block = 19; break;
1377          }
1378          else {
1379            $block = 25; break;
1380          }
1381          break;
1382        }
1383        case 21: {
1384          $t35_36 = ($t34_35 + 1);
1385          $t36_37 = ($t35_36 < $t28_29);
1386          if ($t36_37) {
1387            $block = 22; break;
1388          }
1389          else {
1390            $block = 1; break;
1391          }
1392          break;
1393        }
1394        case 22: {
1395          $t37_38 = $t27_28.addr($t35_36);
1396          $t38_39 = $t37_38.$get();
1397          $t39_40 = isAllowedRelay($t38_39);
1398          if ($t39_40) {
1399            $block = 23; break;
1400          }
1401          else {
1402            $t34_35 = $t35_36;
1403            $block = 21; break;
1404          }
1405          break;
1406        }
1407        case 23: {
1408          $t40_41 = writeRelays.$get();
1409          $t41_42 = { $value: $rt.builtin.makeSlice(1, 1, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1410          $t42_43 = $t41_42.$get().addr(0);
1411          $t42_43.$set($t38_39);
1412          $t43_44 = $rt.builtin.sliceSlice($t41_42.$get(), undefined, undefined, undefined);
1413          $t44_45 = $rt.builtin.appendSlice($t40_41, $t43_44);
1414          writeRelays.$set($t44_45);
1415          $t34_35 = $t35_36;
1416          $block = 21; break;
1417          break;
1418        }
1419        case 24: {
1420          $t45_46 = mw$str(w);
1421          $t46_47 = mw$strs(w);
1422          $t47_48 = routerBroadcast(clientID, $t45_46, $t46_47);
1423          $block = 1; break;
1424          break;
1425        }
1426        case 25: {
1427          $t48_49 = $rt.builtin.stringEqual(msgType, 'BROADCAST');
1428          if ($t48_49) {
1429            $block = 24; break;
1430          }
1431          else {
1432            $block = 27; break;
1433          }
1434          break;
1435        }
1436        case 26: {
1437          $t49_50 = mw$str(w);
1438          $t50_51 = mw$str(w);
1439          $t51_52 = mw$strs(w);
1440          $t52_53 = routerSendDM(clientID, $t49_50, $t50_51, $t51_52);
1441          $block = 1; break;
1442          break;
1443        }
1444        case 27: {
1445          $t53_54 = $rt.builtin.stringEqual(msgType, 'SEND_DM');
1446          if ($t53_54) {
1447            $block = 26; break;
1448          }
1449          else {
1450            $block = 29; break;
1451          }
1452          break;
1453        }
1454        case 28: {
1455          $t54_55 = mw$strs(w);
1456          $t55_56 = routerDMSub(clientID, $t54_55);
1457          $block = 1; break;
1458          break;
1459        }
1460        case 29: {
1461          $t56_57 = $rt.builtin.stringEqual(msgType, 'DM_SUB');
1462          if ($t56_57) {
1463            $block = 28; break;
1464          }
1465          else {
1466            $block = 31; break;
1467          }
1468          break;
1469        }
1470        case 30: {
1471          $t57_58 = routerDMList(clientID);
1472          $block = 1; break;
1473          break;
1474        }
1475        case 31: {
1476          $t58_59 = $rt.builtin.stringEqual(msgType, 'DM_LIST');
1477          if ($t58_59) {
1478            $block = 30; break;
1479          }
1480          else {
1481            $block = 33; break;
1482          }
1483          break;
1484        }
1485        case 32: {
1486          $t59_60 = mw$str(w);
1487          $t60_61 = mw$num(w);
1488          $t61_62 = Number($t60_61);
1489          $t62_63 = ($t61_62 <= 0);
1490          if ($t62_63) {
1491            $block = 36; break;
1492          }
1493          else {
1494            $block = 38; break;
1495          }
1496          break;
1497        }
1498        case 33: {
1499          $t63_64 = $rt.builtin.stringEqual(msgType, 'DM_HISTORY');
1500          if ($t63_64) {
1501            $block = 32; break;
1502          }
1503          else {
1504            $block = 35; break;
1505          }
1506          break;
1507        }
1508        case 34: {
1509          $t64_65 = mw$num(w);
1510          $t65_66 = Number($t64_65);
1511          $t66_67 = mw$str(w);
1512          $t67_68 = mw$str(w);
1513          $t68_69 = cryptoCBs.$get();
1514          { const $r = $rt.builtin.mapLookup($t68_69, $t65_66); $t69_70 = [$r.value, $r.ok]; }
1515          $t70_71 = $t69_70[0];
1516          $t71_72 = $t69_70[1];
1517          if ($t71_72) {
1518            $block = 39; break;
1519          }
1520          else {
1521            $block = 1; break;
1522          }
1523          break;
1524        }
1525        case 35: {
1526          $t72_73 = $rt.builtin.stringEqual(msgType, 'CRYPTO_RESULT');
1527          if ($t72_73) {
1528            $block = 34; break;
1529          }
1530          else {
1531            $block = 1; break;
1532          }
1533          break;
1534        }
1535        case 36: {
1536          $t73_74 = 50;
1537          $block = 37; break;
1538          break;
1539        }
1540        case 37: {
1541          $t74_75 = mw$num(w);
1542          $t75_76 = routerDMHistory(clientID, $t59_60, $t73_74, $t74_75);
1543          $block = 1; break;
1544          break;
1545        }
1546        case 38: {
1547          $t76_77 = ($t61_62 > 500);
1548          if ($t76_77) {
1549            $block = 36; break;
1550          }
1551          else {
1552            $t73_74 = $t61_62;
1553            $block = 37; break;
1554          }
1555          break;
1556        }
1557        case 39: {
1558          $t77_78 = cryptoCBs.$get();
1559          $t78_79 = $rt.builtin.mapDelete($t77_78, $t65_66);
1560          $t79_80 = $t70_71($t66_67, $t67_68);
1561          $block = 1; break;
1562          break;
1563        }
1564      }
1565    }
1566  }
1567  
1568  export function routerReq(clientID, subID, filterRaw) {
1569    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13;
1570    let $block = 0;
1571    while (true) {
1572      switch ($block) {
1573        case 0: {
1574          $t0_1 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
1575          $t0_1.$set(clientID);
1576          $t1_2 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
1577          $t1_2.$set(subID);
1578          $t2_3 = smesh$lol$web$common$nostr.ParseFilter(filterRaw);
1579          $t3_4 = ($t2_3 === null);
1580          if ($t3_4) {
1581            $block = 1; break;
1582          }
1583          else {
1584            $block = 2; break;
1585          }
1586          break;
1587        }
1588        case 1: {
1589          return;
1590          break;
1591        }
1592        case 2: {
1593          $t4_5 = clientSubs.$get();
1594          $t5_6 = $t1_2.$get();
1595          $t6_7 = { $value: { filter: null, filterRaw: '', clientID: '' }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
1596          $t7_8 = { $get() { return $t6_7.$get().filter; }, $set(v) { const obj = $t6_7.$get(); obj.filter = v; $t6_7.$set(obj); } };
1597          $t8_9 = { $get() { return $t6_7.$get().filterRaw; }, $set(v) { const obj = $t6_7.$get(); obj.filterRaw = v; $t6_7.$set(obj); } };
1598          $t9_10 = { $get() { return $t6_7.$get().clientID; }, $set(v) { const obj = $t6_7.$get(); obj.clientID = v; $t6_7.$set(obj); } };
1599          $t10_11 = $t0_1.$get();
1600          $t7_8.$set($t2_3);
1601          $t8_9.$set(filterRaw);
1602          $t9_10.$set($t10_11);
1603          $rt.builtin.mapUpdate($t4_5, $t5_6, $t6_7);
1604          $t11_12 = routerReq$1.bind(null, $t0_1, $t1_2);
1605          $t12_13 = cacheQuery(filterRaw, $t11_12);
1606          return;
1607          break;
1608        }
1609      }
1610    }
1611  }
1612  
1613  function routerReq$1(clientID, subID, eventsJSON) {
1614    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22;
1615    let $block = 0;
1616    while (true) {
1617      switch ($block) {
1618        case 0: {
1619          $t0_1 = smesh$lol$web$common$nostr.ParseEventsJSON(eventsJSON);
1620          $t1_2 = $rt.builtin.len($t0_1);
1621          $t2_3 = -1;
1622          $block = 1; break;
1623          break;
1624        }
1625        case 1: {
1626          $t3_4 = ($t2_3 + 1);
1627          $t4_5 = ($t3_4 < $t1_2);
1628          if ($t4_5) {
1629            $block = 2; break;
1630          }
1631          else {
1632            $block = 3; break;
1633          }
1634          break;
1635        }
1636        case 2: {
1637          $t5_6 = $t0_1.addr($t3_4);
1638          $t6_7 = $t5_6.$get();
1639          $t7_8 = clientID.$get();
1640          $t8_9 = subID.$get();
1641          $t9_10 = jstr($t8_9);
1642          $t10_11 = ('["EVENT",' + $t9_10);
1643          $t11_12 = ($t10_11 + ',');
1644          $t12_13 = smesh$lol$web$common$nostr.Event$ToJSON($t6_7);
1645          $t13_14 = ($t11_12 + $t12_13);
1646          $t14_15 = ($t13_14 + ']');
1647          $t15_16 = sendToClient($t7_8, $t14_15);
1648          $t2_3 = $t3_4;
1649          $block = 1; break;
1650          break;
1651        }
1652        case 3: {
1653          $t16_17 = clientID.$get();
1654          $t17_18 = subID.$get();
1655          $t18_19 = jstr($t17_18);
1656          $t19_20 = ('["EOSE",' + $t18_19);
1657          $t20_21 = ($t19_20 + ']');
1658          $t21_22 = sendToClient($t16_17, $t20_21);
1659          return;
1660          break;
1661        }
1662      }
1663    }
1664  }
1665  
1666  export function routerClose(subID) {
1667    let $t0_1, $t1_2, $t2_3;
1668    $t0_1 = clientSubs.$get();
1669    $t1_2 = $rt.builtin.mapDelete($t0_1, subID);
1670    $t2_3 = routerCleanupProxy(subID);
1671    return;
1672  }
1673  
1674  export function routerPublish(clientID, eventRaw) {
1675    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15;
1676    let $block = 0;
1677    while (true) {
1678      switch ($block) {
1679        case 0: {
1680          $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
1681          $t1_2 = smesh$lol$web$common$nostr.ParseEvent(eventRaw);
1682          $t0_1.$set($t1_2);
1683          $t2_3 = $t0_1.$get();
1684          $t3_4 = ($t2_3 === null);
1685          if ($t3_4) {
1686            $block = 1; break;
1687          }
1688          else {
1689            $block = 2; break;
1690          }
1691          break;
1692        }
1693        case 1: {
1694          return;
1695          break;
1696        }
1697        case 2: {
1698          $t4_5 = routerPublish$1.bind(null, $t0_1);
1699          $t5_6 = cacheStore(eventRaw, $t4_5);
1700          $t6_7 = $t0_1.$get();
1701          $t7_8 = relayPublish($t6_7);
1702          $t8_9 = $t0_1.$get();
1703          $t9_10 = { $get() { return $t8_9.$get().ID; }, $set(v) { const obj = $t8_9.$get(); obj.ID = v; $t8_9.$set(obj); } };
1704          $t10_11 = $t9_10.$get();
1705          $t11_12 = jstr($t10_11);
1706          $t12_13 = ('["OK",' + $t11_12);
1707          $t13_14 = ($t12_13 + ',true,""]');
1708          $t14_15 = sendToClient(clientID, $t13_14);
1709          return;
1710          break;
1711        }
1712      }
1713    }
1714  }
1715  
1716  function routerPublish$1(ev, saved) {
1717    let $t0_1, $t1_2;
1718    let $block = 0;
1719    while (true) {
1720      switch ($block) {
1721        case 0: {
1722          if (saved) {
1723            $block = 1; break;
1724          }
1725          else {
1726            $block = 2; break;
1727          }
1728          break;
1729        }
1730        case 1: {
1731          $t0_1 = ev.$get();
1732          $t1_2 = pushToMatchingSubs($t0_1);
1733          $block = 2; break;
1734          break;
1735        }
1736        case 2: {
1737          return;
1738          break;
1739        }
1740      }
1741    }
1742  }
1743  
1744  export function isAllowedRelay(url) {
1745    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12;
1746    let $block = 0;
1747    while (true) {
1748      switch ($block) {
1749        case 0: {
1750          $t0_1 = $rt.builtin.len(url);
1751          $t1_2 = ($t0_1 >= 6);
1752          if ($t1_2) {
1753            $block = 3; break;
1754          }
1755          else {
1756            $block = 2; break;
1757          }
1758          break;
1759        }
1760        case 1: {
1761          return true;
1762          break;
1763        }
1764        case 2: {
1765          $t2_3 = $rt.builtin.len(url);
1766          $t3_4 = ($t2_3 >= 16);
1767          if ($t3_4) {
1768            $block = 6; break;
1769          }
1770          else {
1771            $block = 5; break;
1772          }
1773          break;
1774        }
1775        case 3: {
1776          $t4_5 = $rt.builtin.stringSlice(url, undefined, 6);
1777          $t5_6 = $rt.builtin.stringEqual($t4_5, 'wss://');
1778          if ($t5_6) {
1779            $block = 1; break;
1780          }
1781          else {
1782            $block = 2; break;
1783          }
1784          break;
1785        }
1786        case 4: {
1787          return true;
1788          break;
1789        }
1790        case 5: {
1791          $t6_7 = $rt.builtin.len(url);
1792          $t7_8 = ($t6_7 >= 15);
1793          if ($t7_8) {
1794            $block = 9; break;
1795          }
1796          else {
1797            $block = 8; break;
1798          }
1799          break;
1800        }
1801        case 6: {
1802          $t8_9 = $rt.builtin.stringSlice(url, undefined, 16);
1803          $t9_10 = $rt.builtin.stringEqual($t8_9, 'ws://localhost:');
1804          if ($t9_10) {
1805            $block = 4; break;
1806          }
1807          else {
1808            $block = 5; break;
1809          }
1810          break;
1811        }
1812        case 7: {
1813          return true;
1814          break;
1815        }
1816        case 8: {
1817          return false;
1818          break;
1819        }
1820        case 9: {
1821          $t10_11 = $rt.builtin.stringSlice(url, undefined, 15);
1822          $t11_12 = $rt.builtin.stringEqual($t10_11, 'ws://127.0.0.1:');
1823          if ($t11_12) {
1824            $block = 7; break;
1825          }
1826          else {
1827            $block = 8; break;
1828          }
1829          break;
1830        }
1831      }
1832    }
1833  }
1834  
1835  export function isHex(s) {
1836    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10;
1837    let $block = 0;
1838    while (true) {
1839      switch ($block) {
1840        case 0: {
1841          $t0_1 = 0;
1842          $block = 1; break;
1843          break;
1844        }
1845        case 1: {
1846          $t1_2 = $rt.builtin.len(s);
1847          $t2_3 = ($t0_1 < $t1_2);
1848          if ($t2_3) {
1849            $block = 2; break;
1850          }
1851          else {
1852            $block = 3; break;
1853          }
1854          break;
1855        }
1856        case 2: {
1857          $t3_4 = s.addr($t0_1);
1858          $t4_5 = $t3_4.$get();
1859          $t5_6 = ($t4_5 >= 48);
1860          if ($t5_6) {
1861            $block = 7; break;
1862          }
1863          else {
1864            $block = 6; break;
1865          }
1866          break;
1867        }
1868        case 3: {
1869          return true;
1870          break;
1871        }
1872        case 4: {
1873          return false;
1874          break;
1875        }
1876        case 5: {
1877          $t6_7 = ($t0_1 + 1);
1878          $t0_1 = $t6_7;
1879          $block = 1; break;
1880          break;
1881        }
1882        case 6: {
1883          $t7_8 = ($t4_5 >= 97);
1884          if ($t7_8) {
1885            $block = 8; break;
1886          }
1887          else {
1888            $block = 4; break;
1889          }
1890          break;
1891        }
1892        case 7: {
1893          $t8_9 = ($t4_5 <= 57);
1894          if ($t8_9) {
1895            $block = 5; break;
1896          }
1897          else {
1898            $block = 6; break;
1899          }
1900          break;
1901        }
1902        case 8: {
1903          $t9_10 = ($t4_5 <= 102);
1904          if ($t9_10) {
1905            $block = 5; break;
1906          }
1907          else {
1908            $block = 4; break;
1909          }
1910          break;
1911        }
1912      }
1913    }
1914  }
1915  
1916  export function routerProxy(clientID, subID, filterRaw, relayURLs) {
1917    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38;
1918    let $block = 0;
1919    while (true) {
1920      switch ($block) {
1921        case 0: {
1922          $t0_1 = routerCleanupProxy(subID);
1923          $t1_2 = smesh$lol$web$common$nostr.ParseFilter(filterRaw);
1924          $t2_3 = ($t1_2 === null);
1925          if ($t2_3) {
1926            $block = 1; break;
1927          }
1928          else {
1929            $block = 2; break;
1930          }
1931          break;
1932        }
1933        case 1: {
1934          return;
1935          break;
1936        }
1937        case 2: {
1938          $t3_4 = clientSubs.$get();
1939          $t4_5 = { $value: { filter: null, filterRaw: '', clientID: '' }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
1940          $t5_6 = { $get() { return $t4_5.$get().filter; }, $set(v) { const obj = $t4_5.$get(); obj.filter = v; $t4_5.$set(obj); } };
1941          $t6_7 = { $get() { return $t4_5.$get().filterRaw; }, $set(v) { const obj = $t4_5.$get(); obj.filterRaw = v; $t4_5.$set(obj); } };
1942          $t7_8 = { $get() { return $t4_5.$get().clientID; }, $set(v) { const obj = $t4_5.$get(); obj.clientID = v; $t4_5.$set(obj); } };
1943          $t5_6.$set($t1_2);
1944          $t6_7.$set(filterRaw);
1945          $t7_8.$set(clientID);
1946          $rt.builtin.mapUpdate($t3_4, subID, $t4_5);
1947          $t8_9 = $rt.builtin.makeMap('string');
1948          $t9_10 = ('p_' + subID);
1949          $t10_11 = ($t9_10 + '_');
1950          $t11_12 = proxySubs.$get();
1951          $t12_13 = { $value: { remoteIDs: null, relayCount: 0, eoseCount: 0, timer: 0, done: false }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
1952          $t13_14 = { $get() { return $t12_13.$get().remoteIDs; }, $set(v) { const obj = $t12_13.$get(); obj.remoteIDs = v; $t12_13.$set(obj); } };
1953          $t14_15 = { $get() { return $t12_13.$get().relayCount; }, $set(v) { const obj = $t12_13.$get(); obj.relayCount = v; $t12_13.$set(obj); } };
1954          $t15_16 = $rt.builtin.len(relayURLs);
1955          $t13_14.$set($t8_9);
1956          $t14_15.$set($t15_16);
1957          $rt.builtin.mapUpdate($t11_12, subID, $t12_13);
1958          $t16_17 = $rt.builtin.len(relayURLs);
1959          $t17_18 = -1;
1960          $block = 3; break;
1961          break;
1962        }
1963        case 3: {
1964          $t18_19 = ($t17_18 + 1);
1965          $t19_20 = ($t18_19 < $t16_17);
1966          if ($t19_20) {
1967            $block = 4; break;
1968          }
1969          else {
1970            $block = 5; break;
1971          }
1972          break;
1973        }
1974        case 4: {
1975          $t20_21 = relayURLs.addr($t18_19);
1976          $t21_22 = $t20_21.$get();
1977          $t22_23 = isAllowedRelay($t21_22);
1978          if ($t22_23) {
1979            $block = 7; break;
1980          }
1981          else {
1982            $block = 6; break;
1983          }
1984          break;
1985        }
1986        case 5: {
1987          $t23_24 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
1988          $t23_24.$set(subID);
1989          $t24_25 = proxySubs.$get();
1990          $t25_26 = $rt.builtin.mapLookup($t24_25, subID).value;
1991          $t26_27 = routerProxy$1.bind(null, $t23_24);
1992          $t27_28 = smesh$lol$web$common$jsbridge$sw.SetTimeout(15000, $t26_27);
1993          $t28_29 = { $get() { return $t25_26.$get().timer; }, $set(v) { const obj = $t25_26.$get(); obj.timer = v; $t25_26.$set(obj); } };
1994          $t28_29.$set($t27_28);
1995          return;
1996          break;
1997        }
1998        case 6: {
1999          $t29_30 = ('rejected relay URL: ' + $t21_22);
2000          $t30_31 = smesh$lol$web$common$jsbridge$sw.Log($t29_30);
2001          $t17_18 = $t18_19;
2002          $block = 3; break;
2003          break;
2004        }
2005        case 7: {
2006          $t31_32 = urlSuffix($t21_22);
2007          $t32_33 = ($t10_11 + $t31_32);
2008          $rt.builtin.mapUpdate($t8_9, $t32_33, true);
2009          $t33_34 = getConn($t21_22);
2010          $t34_35 = { $value: $rt.builtin.makeSlice(1, 1, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2011          $t35_36 = $t34_35.$get().addr(0);
2012          $t35_36.$set($t1_2);
2013          $t36_37 = $rt.builtin.sliceSlice($t34_35.$get(), undefined, undefined, undefined);
2014          $t37_38 = smesh$lol$web$common$relay.Conn$Subscribe($t33_34, $t32_33, $t36_37);
2015          $t17_18 = $t18_19;
2016          $block = 3; break;
2017          break;
2018        }
2019      }
2020    }
2021  }
2022  
2023  function routerProxy$1(proxyID) {
2024    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20;
2025    let $block = 0;
2026    while (true) {
2027      switch ($block) {
2028        case 0: {
2029          $t0_1 = proxySubs.$get();
2030          $t1_2 = proxyID.$get();
2031          { const $r = $rt.builtin.mapLookup($t0_1, $t1_2); $t2_3 = [$r.value, $r.ok]; }
2032          $t3_4 = $t2_3[0];
2033          $t4_5 = $t2_3[1];
2034          if ($t4_5) {
2035            $block = 3; break;
2036          }
2037          else {
2038            $block = 2; break;
2039          }
2040          break;
2041        }
2042        case 1: {
2043          $t5_6 = { $get() { return $t3_4.$get().done; }, $set(v) { const obj = $t3_4.$get(); obj.done = v; $t3_4.$set(obj); } };
2044          $t5_6.$set(true);
2045          $t6_7 = clientSubs.$get();
2046          $t7_8 = proxyID.$get();
2047          { const $r = $rt.builtin.mapLookup($t6_7, $t7_8); $t8_9 = [$r.value, $r.ok]; }
2048          $t9_10 = $t8_9[0];
2049          $t10_11 = $t8_9[1];
2050          if ($t10_11) {
2051            $block = 4; break;
2052          }
2053          else {
2054            $block = 2; break;
2055          }
2056          break;
2057        }
2058        case 2: {
2059          return;
2060          break;
2061        }
2062        case 3: {
2063          $t11_12 = { $get() { return $t3_4.$get().done; }, $set(v) { const obj = $t3_4.$get(); obj.done = v; $t3_4.$set(obj); } };
2064          $t12_13 = $t11_12.$get();
2065          if ($t12_13) {
2066            $block = 2; break;
2067          }
2068          else {
2069            $block = 1; break;
2070          }
2071          break;
2072        }
2073        case 4: {
2074          $t13_14 = { $get() { return $t9_10.$get().clientID; }, $set(v) { const obj = $t9_10.$get(); obj.clientID = v; $t9_10.$set(obj); } };
2075          $t14_15 = $t13_14.$get();
2076          $t15_16 = proxyID.$get();
2077          $t16_17 = jstr($t15_16);
2078          $t17_18 = ('["EOSE",' + $t16_17);
2079          $t18_19 = ($t17_18 + ']');
2080          $t19_20 = sendToClient($t14_15, $t18_19);
2081          $block = 2; break;
2082          break;
2083        }
2084      }
2085    }
2086  }
2087  
2088  export function routerCleanupProxy(proxyID) {
2089    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42;
2090    let $block = 0;
2091    while (true) {
2092      switch ($block) {
2093        case 0: {
2094          $t0_1 = proxySubs.$get();
2095          { const $r = $rt.builtin.mapLookup($t0_1, proxyID); $t1_2 = [$r.value, $r.ok]; }
2096          $t2_3 = $t1_2[0];
2097          $t3_4 = $t1_2[1];
2098          if ($t3_4) {
2099            $block = 2; break;
2100          }
2101          else {
2102            $block = 1; break;
2103          }
2104          break;
2105        }
2106        case 1: {
2107          return;
2108          break;
2109        }
2110        case 2: {
2111          $t4_5 = { $get() { return $t2_3.$get().timer; }, $set(v) { const obj = $t2_3.$get(); obj.timer = v; $t2_3.$set(obj); } };
2112          $t5_6 = $t4_5.$get();
2113          $t6_7 = smesh$lol$web$common$jsbridge$sw.ClearTimeout($t5_6);
2114          $t7_8 = { $get() { return $t2_3.$get().done; }, $set(v) { const obj = $t2_3.$get(); obj.done = v; $t2_3.$set(obj); } };
2115          $t8_9 = $t7_8.$get();
2116          if ($t8_9) {
2117            $block = 4; break;
2118          }
2119          else {
2120            $block = 3; break;
2121          }
2122          break;
2123        }
2124        case 3: {
2125          $t9_10 = clientSubs.$get();
2126          { const $r = $rt.builtin.mapLookup($t9_10, proxyID); $t10_11 = [$r.value, $r.ok]; }
2127          $t11_12 = $t10_11[0];
2128          $t12_13 = $t10_11[1];
2129          if ($t12_13) {
2130            $block = 5; break;
2131          }
2132          else {
2133            $block = 4; break;
2134          }
2135          break;
2136        }
2137        case 4: {
2138          $t13_14 = { $get() { return $t2_3.$get().remoteIDs; }, $set(v) { const obj = $t2_3.$get(); obj.remoteIDs = v; $t2_3.$set(obj); } };
2139          $t14_15 = $t13_14.$get();
2140          $t15_16 = { $entries: [...$t14_15.entries()], $pos: 0, next() { if (this.$pos >= this.$entries.length) return [false, null, null]; const [k, v] = this.$entries[this.$pos++]; return [true, k, v]; } };
2141          $block = 6; break;
2142          break;
2143        }
2144        case 5: {
2145          $t16_17 = { $get() { return $t11_12.$get().clientID; }, $set(v) { const obj = $t11_12.$get(); obj.clientID = v; $t11_12.$set(obj); } };
2146          $t17_18 = $t16_17.$get();
2147          $t18_19 = jstr(proxyID);
2148          $t19_20 = ('["EOSE",' + $t18_19);
2149          $t20_21 = ($t19_20 + ']');
2150          $t21_22 = sendToClient($t17_18, $t20_21);
2151          $block = 4; break;
2152          break;
2153        }
2154        case 6: {
2155          $t22_23 = $t15_16.next();
2156          $t23_24 = $t22_23[0];
2157          if ($t23_24) {
2158            $block = 7; break;
2159          }
2160          else {
2161            $block = 8; break;
2162          }
2163          break;
2164        }
2165        case 7: {
2166          $t24_25 = $t22_23[1];
2167          $t25_26 = rpool.$get();
2168          $t26_27 = smesh$lol$web$common$relay.Pool$URLs($t25_26);
2169          $t27_28 = $rt.builtin.len($t26_27);
2170          $t32_33 = -1;
2171          $block = 9; break;
2172          break;
2173        }
2174        case 8: {
2175          $t28_29 = proxySubs.$get();
2176          $t29_30 = $rt.builtin.mapDelete($t28_29, proxyID);
2177          $t30_31 = clientSubs.$get();
2178          $t31_32 = $rt.builtin.mapDelete($t30_31, proxyID);
2179          return;
2180          break;
2181        }
2182        case 9: {
2183          $t33_34 = ($t32_33 + 1);
2184          $t34_35 = ($t33_34 < $t27_28);
2185          if ($t34_35) {
2186            $block = 10; break;
2187          }
2188          else {
2189            $block = 6; break;
2190          }
2191          break;
2192        }
2193        case 10: {
2194          $t35_36 = $t26_27.addr($t33_34);
2195          $t36_37 = $t35_36.$get();
2196          $t37_38 = rpool.$get();
2197          $t38_39 = smesh$lol$web$common$relay.Pool$Get($t37_38, $t36_37);
2198          $t39_40 = ($t38_39 !== null);
2199          if ($t39_40) {
2200            $block = 12; break;
2201          }
2202          else {
2203            $t32_33 = $t33_34;
2204            $block = 9; break;
2205          }
2206          break;
2207        }
2208        case 11: {
2209          $t40_41 = smesh$lol$web$common$relay.Conn$CloseSubscription($t38_39, $t24_25);
2210          $t32_33 = $t33_34;
2211          $block = 9; break;
2212          break;
2213        }
2214        case 12: {
2215          $t41_42 = smesh$lol$web$common$relay.Conn$IsOpen($t38_39);
2216          if ($t41_42) {
2217            $block = 11; break;
2218          }
2219          else {
2220            $t32_33 = $t33_34;
2221            $block = 9; break;
2222          }
2223          break;
2224        }
2225      }
2226    }
2227  }
2228  
2229  export function routerOnRelayEvent(relayURL, remoteSubID, ev) {
2230    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15;
2231    let $block = 0;
2232    while (true) {
2233      switch ($block) {
2234        case 0: {
2235          $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
2236          $t0_1.$set(ev);
2237          $t1_2 = $t0_1.$get();
2238          $t2_3 = smesh$lol$web$common$nostr.Event$CheckID($t1_2);
2239          if ($t2_3) {
2240            $block = 2; break;
2241          }
2242          else {
2243            $block = 1; break;
2244          }
2245          break;
2246        }
2247        case 1: {
2248          return;
2249          break;
2250        }
2251        case 2: {
2252          $t3_4 = smesh$lol$web$common$jsbridge$sw.NowSeconds();
2253          $t4_5 = $t0_1.$get();
2254          $t5_6 = { $get() { return $t4_5.$get().CreatedAt; }, $set(v) { const obj = $t4_5.$get(); obj.CreatedAt = v; $t4_5.$set(obj); } };
2255          $t6_7 = $t5_6.$get();
2256          $t7_8 = BigInt.asIntN(64, $t3_4 + 3600n);
2257          $t8_9 = ($t6_7 > $t7_8);
2258          if ($t8_9) {
2259            $block = 3; break;
2260          }
2261          else {
2262            $block = 4; break;
2263          }
2264          break;
2265        }
2266        case 3: {
2267          return;
2268          break;
2269        }
2270        case 4: {
2271          $t9_10 = $t0_1.$get();
2272          $t10_11 = smesh$lol$web$common$nostr.Event$ToJSON($t9_10);
2273          $t11_12 = $t0_1.$get();
2274          $t12_13 = pushToProxySub(remoteSubID, relayURL, $t11_12);
2275          $t13_14 = routerOnRelayEvent$1.bind(null, $t0_1);
2276          $t14_15 = cacheStore($t10_11, $t13_14);
2277          return;
2278          break;
2279        }
2280      }
2281    }
2282  }
2283  
2284  function routerOnRelayEvent$1(ev, saved) {
2285    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12;
2286    let $block = 0;
2287    while (true) {
2288      switch ($block) {
2289        case 0: {
2290          if (saved) {
2291            $block = 4; break;
2292          }
2293          else {
2294            $block = 2; break;
2295          }
2296          break;
2297        }
2298        case 1: {
2299          $t0_1 = ev.$get();
2300          $t1_2 = routerDecryptDM($t0_1);
2301          $block = 2; break;
2302          break;
2303        }
2304        case 2: {
2305          return;
2306          break;
2307        }
2308        case 3: {
2309          $t2_3 = myPubkey.$get();
2310          $t3_4 = !$rt.builtin.stringEqual($t2_3, '');
2311          if ($t3_4) {
2312            $block = 1; break;
2313          }
2314          else {
2315            $block = 2; break;
2316          }
2317          break;
2318        }
2319        case 4: {
2320          $t4_5 = ev.$get();
2321          $t5_6 = { $get() { return $t4_5.$get().Kind; }, $set(v) { const obj = $t4_5.$get(); obj.Kind = v; $t4_5.$set(obj); } };
2322          $t6_7 = $t5_6.$get();
2323          $t7_8 = ($t6_7 === 4);
2324          if ($t7_8) {
2325            $block = 3; break;
2326          }
2327          else {
2328            $block = 5; break;
2329          }
2330          break;
2331        }
2332        case 5: {
2333          $t8_9 = ev.$get();
2334          $t9_10 = { $get() { return $t8_9.$get().Kind; }, $set(v) { const obj = $t8_9.$get(); obj.Kind = v; $t8_9.$set(obj); } };
2335          $t10_11 = $t9_10.$get();
2336          $t11_12 = ($t10_11 === 1059);
2337          if ($t11_12) {
2338            $block = 3; break;
2339          }
2340          else {
2341            $block = 2; break;
2342          }
2343          break;
2344        }
2345      }
2346    }
2347  }
2348  
2349  export function routerDecryptDM(ev) {
2350    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32;
2351    let $block = 0;
2352    while (true) {
2353      switch ($block) {
2354        case 0: {
2355          $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
2356          $t0_1.$set(ev);
2357          $t1_2 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
2358          $t2_3 = $t0_1.$get();
2359          $t3_4 = { $get() { return $t2_3.$get().PubKey; }, $set(v) { const obj = $t2_3.$get(); obj.PubKey = v; $t2_3.$set(obj); } };
2360          $t4_5 = $t3_4.$get();
2361          $t5_6 = myPubkey.$get();
2362          $t6_7 = $rt.builtin.stringEqual($t4_5, $t5_6);
2363          if ($t6_7) {
2364            $block = 1; break;
2365          }
2366          else {
2367            $block = 3; break;
2368          }
2369          break;
2370        }
2371        case 1: {
2372          $t7_8 = $t0_1.$get();
2373          $t8_9 = { $get() { return $t7_8.$get().Tags; }, $set(v) { const obj = $t7_8.$get(); obj.Tags = v; $t7_8.$set(obj); } };
2374          $t9_10 = $t8_9.$get();
2375          $t10_11 = smesh$lol$web$common$nostr.Tags$GetFirst($t9_10, 'p');
2376          $t11_12 = ($t10_11 === null);
2377          if ($t11_12) {
2378            $block = 4; break;
2379          }
2380          else {
2381            $block = 5; break;
2382          }
2383          break;
2384        }
2385        case 2: {
2386          $t12_13 = $t1_2.$get();
2387          $t13_14 = $rt.builtin.len($t12_13);
2388          $t14_15 = ($t13_14 !== 64);
2389          if ($t14_15) {
2390            $block = 6; break;
2391          }
2392          else {
2393            $block = 8; break;
2394          }
2395          break;
2396        }
2397        case 3: {
2398          $t15_16 = $t0_1.$get();
2399          $t16_17 = { $get() { return $t15_16.$get().PubKey; }, $set(v) { const obj = $t15_16.$get(); obj.PubKey = v; $t15_16.$set(obj); } };
2400          $t17_18 = $t16_17.$get();
2401          $t1_2.$set($t17_18);
2402          $block = 2; break;
2403          break;
2404        }
2405        case 4: {
2406          return;
2407          break;
2408        }
2409        case 5: {
2410          $t18_19 = smesh$lol$web$common$nostr.Tag$Value($t10_11);
2411          $t1_2.$set($t18_19);
2412          $block = 2; break;
2413          break;
2414        }
2415        case 6: {
2416          return;
2417          break;
2418        }
2419        case 7: {
2420          $t19_20 = $t0_1.$get();
2421          $t20_21 = { $get() { return $t19_20.$get().Kind; }, $set(v) { const obj = $t19_20.$get(); obj.Kind = v; $t19_20.$set(obj); } };
2422          $t21_22 = $t20_21.$get();
2423          $t22_23 = ($t21_22 === 1059);
2424          if ($t22_23) {
2425            $block = 9; break;
2426          }
2427          else {
2428            $t25_26 = 'nip04.decrypt';
2429            $block = 10; break;
2430          }
2431          break;
2432        }
2433        case 8: {
2434          $t23_24 = $t1_2.$get();
2435          $t24_25 = isHex($t23_24);
2436          if ($t24_25) {
2437            $block = 7; break;
2438          }
2439          else {
2440            $block = 6; break;
2441          }
2442          break;
2443        }
2444        case 9: {
2445          $t25_26 = 'nip44.decrypt';
2446          $block = 10; break;
2447          break;
2448        }
2449        case 10: {
2450          $t26_27 = $t1_2.$get();
2451          $t27_28 = $t0_1.$get();
2452          $t28_29 = { $get() { return $t27_28.$get().Content; }, $set(v) { const obj = $t27_28.$get(); obj.Content = v; $t27_28.$set(obj); } };
2453          $t29_30 = $t28_29.$get();
2454          $t30_31 = routerDecryptDM$1.bind(null, $t0_1, $t1_2);
2455          $t31_32 = requestCrypto('', $t25_26, $t26_27, $t29_30, $t30_31);
2456          return;
2457          break;
2458        }
2459      }
2460    }
2461  }
2462  
2463  function routerDecryptDM$1(ev, peer, plaintext, errMsg) {
2464    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20;
2465    let $block = 0;
2466    while (true) {
2467      switch ($block) {
2468        case 0: {
2469          $t0_1 = !$rt.builtin.stringEqual(errMsg, '');
2470          if ($t0_1) {
2471            $block = 1; break;
2472          }
2473          else {
2474            $block = 3; break;
2475          }
2476          break;
2477        }
2478        case 1: {
2479          return;
2480          break;
2481        }
2482        case 2: {
2483          $t1_2 = ev.$get();
2484          $t2_3 = { $get() { return $t1_2.$get().Kind; }, $set(v) { const obj = $t1_2.$get(); obj.Kind = v; $t1_2.$set(obj); } };
2485          $t3_4 = $t2_3.$get();
2486          $t4_5 = ($t3_4 === 1059);
2487          if ($t4_5) {
2488            $block = 4; break;
2489          }
2490          else {
2491            $t6_7 = 'nip04';
2492            $block = 5; break;
2493          }
2494          break;
2495        }
2496        case 3: {
2497          $t5_6 = $rt.builtin.stringEqual(plaintext, '');
2498          if ($t5_6) {
2499            $block = 1; break;
2500          }
2501          else {
2502            $block = 2; break;
2503          }
2504          break;
2505        }
2506        case 4: {
2507          $t6_7 = 'nip44';
2508          $block = 5; break;
2509          break;
2510        }
2511        case 5: {
2512          $t7_8 = peer.$get();
2513          $t8_9 = ev.$get();
2514          $t9_10 = { $get() { return $t8_9.$get().PubKey; }, $set(v) { const obj = $t8_9.$get(); obj.PubKey = v; $t8_9.$set(obj); } };
2515          $t10_11 = $t9_10.$get();
2516          $t11_12 = ev.$get();
2517          $t12_13 = { $get() { return $t11_12.$get().CreatedAt; }, $set(v) { const obj = $t11_12.$get(); obj.CreatedAt = v; $t11_12.$set(obj); } };
2518          $t13_14 = $t12_13.$get();
2519          $t14_15 = ev.$get();
2520          $t15_16 = { $get() { return $t14_15.$get().ID; }, $set(v) { const obj = $t14_15.$get(); obj.ID = v; $t14_15.$set(obj); } };
2521          $t16_17 = $t15_16.$get();
2522          $t17_18 = makeDMRecord($t7_8, $t10_11, plaintext, $t13_14, $t6_7, $t16_17);
2523          $t18_19 = DMRecord$ToJSON($t17_18);
2524          $t19_20 = routerSaveDMRecordJSON($t18_19);
2525          return;
2526          break;
2527        }
2528      }
2529    }
2530  }
2531  
2532  export function routerOnRelayEOSE(subID) {
2533    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34;
2534    let $block = 0;
2535    while (true) {
2536      switch ($block) {
2537        case 0: {
2538          $t0_1 = proxySubs.$get();
2539          $t1_2 = { $entries: [...$t0_1.entries()], $pos: 0, next() { if (this.$pos >= this.$entries.length) return [false, null, null]; const [k, v] = this.$entries[this.$pos++]; return [true, k, v]; } };
2540          $block = 1; break;
2541          break;
2542        }
2543        case 1: {
2544          $t2_3 = $t1_2.next();
2545          $t3_4 = $t2_3[0];
2546          if ($t3_4) {
2547            $block = 2; break;
2548          }
2549          else {
2550            $block = 3; break;
2551          }
2552          break;
2553        }
2554        case 2: {
2555          $t4_5 = $t2_3[1];
2556          $t5_6 = $t2_3[2];
2557          $t6_7 = { $get() { return $t5_6.$get().remoteIDs; }, $set(v) { const obj = $t5_6.$get(); obj.remoteIDs = v; $t5_6.$set(obj); } };
2558          $t7_8 = $t6_7.$get();
2559          $t8_9 = $rt.builtin.mapLookup($t7_8, subID).value;
2560          if ($t8_9) {
2561            $block = 4; break;
2562          }
2563          else {
2564            $block = 1; break;
2565          }
2566          break;
2567        }
2568        case 3: {
2569          return;
2570          break;
2571        }
2572        case 4: {
2573          $t9_10 = { $get() { return $t5_6.$get().eoseCount; }, $set(v) { const obj = $t5_6.$get(); obj.eoseCount = v; $t5_6.$set(obj); } };
2574          $t10_11 = $t9_10.$get();
2575          $t11_12 = ($t10_11 + 1);
2576          $t12_13 = { $get() { return $t5_6.$get().eoseCount; }, $set(v) { const obj = $t5_6.$get(); obj.eoseCount = v; $t5_6.$set(obj); } };
2577          $t12_13.$set($t11_12);
2578          $t13_14 = { $get() { return $t5_6.$get().eoseCount; }, $set(v) { const obj = $t5_6.$get(); obj.eoseCount = v; $t5_6.$set(obj); } };
2579          $t14_15 = $t13_14.$get();
2580          $t15_16 = { $get() { return $t5_6.$get().relayCount; }, $set(v) { const obj = $t5_6.$get(); obj.relayCount = v; $t5_6.$set(obj); } };
2581          $t16_17 = $t15_16.$get();
2582          $t17_18 = ($t14_15 >= $t16_17);
2583          if ($t17_18) {
2584            $block = 6; break;
2585          }
2586          else {
2587            $block = 1; break;
2588          }
2589          break;
2590        }
2591        case 5: {
2592          $t18_19 = { $get() { return $t5_6.$get().done; }, $set(v) { const obj = $t5_6.$get(); obj.done = v; $t5_6.$set(obj); } };
2593          $t18_19.$set(true);
2594          $t19_20 = { $get() { return $t5_6.$get().timer; }, $set(v) { const obj = $t5_6.$get(); obj.timer = v; $t5_6.$set(obj); } };
2595          $t20_21 = $t19_20.$get();
2596          $t21_22 = smesh$lol$web$common$jsbridge$sw.ClearTimeout($t20_21);
2597          $t22_23 = clientSubs.$get();
2598          { const $r = $rt.builtin.mapLookup($t22_23, $t4_5); $t23_24 = [$r.value, $r.ok]; }
2599          $t24_25 = $t23_24[0];
2600          $t25_26 = $t23_24[1];
2601          if ($t25_26) {
2602            $block = 7; break;
2603          }
2604          else {
2605            $block = 1; break;
2606          }
2607          break;
2608        }
2609        case 6: {
2610          $t26_27 = { $get() { return $t5_6.$get().done; }, $set(v) { const obj = $t5_6.$get(); obj.done = v; $t5_6.$set(obj); } };
2611          $t27_28 = $t26_27.$get();
2612          if ($t27_28) {
2613            $block = 1; break;
2614          }
2615          else {
2616            $block = 5; break;
2617          }
2618          break;
2619        }
2620        case 7: {
2621          $t28_29 = { $get() { return $t24_25.$get().clientID; }, $set(v) { const obj = $t24_25.$get(); obj.clientID = v; $t24_25.$set(obj); } };
2622          $t29_30 = $t28_29.$get();
2623          $t30_31 = jstr($t4_5);
2624          $t31_32 = ('["EOSE",' + $t30_31);
2625          $t32_33 = ($t31_32 + ']');
2626          $t33_34 = sendToClient($t29_30, $t32_33);
2627          $block = 1; break;
2628          break;
2629        }
2630      }
2631    }
2632  }
2633  
2634  export function pushToProxySub(remoteSubID, relayURL, ev) {
2635    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36;
2636    let $block = 0;
2637    while (true) {
2638      switch ($block) {
2639        case 0: {
2640          $t0_1 = proxySubs.$get();
2641          $t1_2 = { $entries: [...$t0_1.entries()], $pos: 0, next() { if (this.$pos >= this.$entries.length) return [false, null, null]; const [k, v] = this.$entries[this.$pos++]; return [true, k, v]; } };
2642          $block = 1; break;
2643          break;
2644        }
2645        case 1: {
2646          $t2_3 = $t1_2.next();
2647          $t3_4 = $t2_3[0];
2648          if ($t3_4) {
2649            $block = 2; break;
2650          }
2651          else {
2652            $block = 3; break;
2653          }
2654          break;
2655        }
2656        case 2: {
2657          $t4_5 = $t2_3[1];
2658          $t5_6 = $t2_3[2];
2659          $t6_7 = { $get() { return $t5_6.$get().remoteIDs; }, $set(v) { const obj = $t5_6.$get(); obj.remoteIDs = v; $t5_6.$set(obj); } };
2660          $t7_8 = $t6_7.$get();
2661          $t8_9 = $rt.builtin.mapLookup($t7_8, remoteSubID).value;
2662          if ($t8_9) {
2663            $block = 4; break;
2664          }
2665          else {
2666            $block = 1; break;
2667          }
2668          break;
2669        }
2670        case 3: {
2671          return;
2672          break;
2673        }
2674        case 4: {
2675          $t9_10 = clientSubs.$get();
2676          { const $r = $rt.builtin.mapLookup($t9_10, $t4_5); $t10_11 = [$r.value, $r.ok]; }
2677          $t11_12 = $t10_11[0];
2678          $t12_13 = $t10_11[1];
2679          if ($t12_13) {
2680            $block = 7; break;
2681          }
2682          else {
2683            $block = 6; break;
2684          }
2685          break;
2686        }
2687        case 5: {
2688          $t13_14 = { $get() { return $t11_12.$get().clientID; }, $set(v) { const obj = $t11_12.$get(); obj.clientID = v; $t11_12.$set(obj); } };
2689          $t14_15 = $t13_14.$get();
2690          $t15_16 = jstr($t4_5);
2691          $t16_17 = ('["EVENT",' + $t15_16);
2692          $t17_18 = ($t16_17 + ',');
2693          $t18_19 = smesh$lol$web$common$nostr.Event$ToJSON(ev);
2694          $t19_20 = ($t17_18 + $t18_19);
2695          $t20_21 = ($t19_20 + ']');
2696          $t21_22 = sendToClient($t14_15, $t20_21);
2697          $t22_23 = { $get() { return $t11_12.$get().clientID; }, $set(v) { const obj = $t11_12.$get(); obj.clientID = v; $t11_12.$set(obj); } };
2698          $t23_24 = $t22_23.$get();
2699          $t24_25 = { $get() { return ev.$get().ID; }, $set(v) { const obj = ev.$get(); obj.ID = v; ev.$set(obj); } };
2700          $t25_26 = $t24_25.$get();
2701          $t26_27 = jstr($t25_26);
2702          $t27_28 = ('["SEEN_ON",' + $t26_27);
2703          $t28_29 = ($t27_28 + ',');
2704          $t29_30 = jstr(relayURL);
2705          $t30_31 = ($t28_29 + $t29_30);
2706          $t31_32 = ($t30_31 + ']');
2707          $t32_33 = sendToClient($t23_24, $t31_32);
2708          $block = 6; break;
2709          break;
2710        }
2711        case 6: {
2712          return;
2713          break;
2714        }
2715        case 7: {
2716          $t33_34 = { $get() { return $t11_12.$get().filter; }, $set(v) { const obj = $t11_12.$get(); obj.filter = v; $t11_12.$set(obj); } };
2717          $t34_35 = $t33_34.$get();
2718          $t35_36 = smesh$lol$web$common$nostr.Filter$Matches($t34_35, ev);
2719          if ($t35_36) {
2720            $block = 5; break;
2721          }
2722          else {
2723            $block = 6; break;
2724          }
2725          break;
2726        }
2727      }
2728    }
2729  }
2730  
2731  export function pushToMatchingSubs(ev) {
2732    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18;
2733    let $block = 0;
2734    while (true) {
2735      switch ($block) {
2736        case 0: {
2737          $t0_1 = clientSubs.$get();
2738          $t1_2 = { $entries: [...$t0_1.entries()], $pos: 0, next() { if (this.$pos >= this.$entries.length) return [false, null, null]; const [k, v] = this.$entries[this.$pos++]; return [true, k, v]; } };
2739          $block = 1; break;
2740          break;
2741        }
2742        case 1: {
2743          $t2_3 = $t1_2.next();
2744          $t3_4 = $t2_3[0];
2745          if ($t3_4) {
2746            $block = 2; break;
2747          }
2748          else {
2749            $block = 3; break;
2750          }
2751          break;
2752        }
2753        case 2: {
2754          $t4_5 = $t2_3[1];
2755          $t5_6 = $t2_3[2];
2756          $t6_7 = { $get() { return $t5_6.$get().filter; }, $set(v) { const obj = $t5_6.$get(); obj.filter = v; $t5_6.$set(obj); } };
2757          $t7_8 = $t6_7.$get();
2758          $t8_9 = smesh$lol$web$common$nostr.Filter$Matches($t7_8, ev);
2759          if ($t8_9) {
2760            $block = 4; break;
2761          }
2762          else {
2763            $block = 1; break;
2764          }
2765          break;
2766        }
2767        case 3: {
2768          return;
2769          break;
2770        }
2771        case 4: {
2772          $t9_10 = { $get() { return $t5_6.$get().clientID; }, $set(v) { const obj = $t5_6.$get(); obj.clientID = v; $t5_6.$set(obj); } };
2773          $t10_11 = $t9_10.$get();
2774          $t11_12 = jstr($t4_5);
2775          $t12_13 = ('["EVENT",' + $t11_12);
2776          $t13_14 = ($t12_13 + ',');
2777          $t14_15 = smesh$lol$web$common$nostr.Event$ToJSON(ev);
2778          $t15_16 = ($t13_14 + $t14_15);
2779          $t16_17 = ($t15_16 + ']');
2780          $t17_18 = sendToClient($t10_11, $t16_17);
2781          $block = 1; break;
2782          break;
2783        }
2784      }
2785    }
2786  }
2787  
2788  export function routerSign(clientID, requestID, eventRaw) {
2789    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23;
2790    let $block = 0;
2791    while (true) {
2792      switch ($block) {
2793        case 0: {
2794          $t0_1 = hasKey.$get();
2795          if ($t0_1) {
2796            $block = 2; break;
2797          }
2798          else {
2799            $block = 1; break;
2800          }
2801          break;
2802        }
2803        case 1: {
2804          $t1_2 = jstr(requestID);
2805          $t2_3 = ('["SIGN_ERROR",' + $t1_2);
2806          $t3_4 = ($t2_3 + ',"no key"]');
2807          $t4_5 = sendToClient(clientID, $t3_4);
2808          return;
2809          break;
2810        }
2811        case 2: {
2812          $t5_6 = smesh$lol$web$common$nostr.ParseEvent(eventRaw);
2813          $t6_7 = ($t5_6 === null);
2814          if ($t6_7) {
2815            $block = 3; break;
2816          }
2817          else {
2818            $block = 4; break;
2819          }
2820          break;
2821        }
2822        case 3: {
2823          $t7_8 = jstr(requestID);
2824          $t8_9 = ('["SIGN_ERROR",' + $t7_8);
2825          $t9_10 = ($t8_9 + ',"parse error"]');
2826          $t10_11 = sendToClient(clientID, $t9_10);
2827          return;
2828          break;
2829        }
2830        case 4: {
2831          $t11_12 = identitySignEvent($t5_6);
2832          if ($t11_12) {
2833            $block = 5; break;
2834          }
2835          else {
2836            $block = 7; break;
2837          }
2838          break;
2839        }
2840        case 5: {
2841          $t12_13 = jstr(requestID);
2842          $t13_14 = ('["SIGNED",' + $t12_13);
2843          $t14_15 = ($t13_14 + ',');
2844          $t15_16 = smesh$lol$web$common$nostr.Event$ToJSON($t5_6);
2845          $t16_17 = ($t14_15 + $t15_16);
2846          $t17_18 = ($t16_17 + ']');
2847          $t18_19 = sendToClient(clientID, $t17_18);
2848          $block = 6; break;
2849          break;
2850        }
2851        case 6: {
2852          return;
2853          break;
2854        }
2855        case 7: {
2856          $t19_20 = jstr(requestID);
2857          $t20_21 = ('["SIGN_ERROR",' + $t19_20);
2858          $t21_22 = ($t20_21 + ',"sign failed"]');
2859          $t22_23 = sendToClient(clientID, $t21_22);
2860          $block = 6; break;
2861          break;
2862        }
2863      }
2864    }
2865  }
2866  
2867  export function routerSaveDMRecordJSON(dmJSON) {
2868    let $t0_1, $t1_2, $t2_3, $t3_4;
2869    $t0_1 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
2870    $t0_1.$set(dmJSON);
2871    $t1_2 = $t0_1.$get();
2872    $t2_3 = routerSaveDMRecordJSON$1.bind(null, $t0_1);
2873    $t3_4 = cacheSaveDM($t1_2, $t2_3);
2874    return;
2875  }
2876  
2877  function routerSaveDMRecordJSON$1(dmJSON, result) {
2878    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5;
2879    let $block = 0;
2880    while (true) {
2881      switch ($block) {
2882        case 0: {
2883          $t0_1 = !$rt.builtin.stringEqual(result, 'duplicate');
2884          if ($t0_1) {
2885            $block = 1; break;
2886          }
2887          else {
2888            $block = 2; break;
2889          }
2890          break;
2891        }
2892        case 1: {
2893          $t1_2 = dmJSON.$get();
2894          $t2_3 = ('["DM_RECEIVED",' + $t1_2);
2895          $t3_4 = ($t2_3 + ']');
2896          $t4_5 = broadcastToClients($t3_4);
2897          $block = 2; break;
2898          break;
2899        }
2900        case 2: {
2901          return;
2902          break;
2903        }
2904      }
2905    }
2906  }
2907  
2908  export function routerSendDM(clientID, recipientPubkey, content, relayURLs) {
2909    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10;
2910    let $block = 0;
2911    while (true) {
2912      switch ($block) {
2913        case 0: {
2914          $t0_1 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
2915          $t0_1.$set(clientID);
2916          $t1_2 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
2917          $t1_2.$set(recipientPubkey);
2918          $t2_3 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
2919          $t2_3.$set(relayURLs);
2920          $t3_4 = myPubkey.$get();
2921          $t4_5 = $rt.builtin.stringEqual($t3_4, '');
2922          if ($t4_5) {
2923            $block = 1; break;
2924          }
2925          else {
2926            $block = 3; break;
2927          }
2928          break;
2929        }
2930        case 1: {
2931          return;
2932          break;
2933        }
2934        case 2: {
2935          $t5_6 = $t0_1.$get();
2936          $t6_7 = $t1_2.$get();
2937          $t7_8 = routerSendDM$1.bind(null, $t0_1, $t1_2, $t2_3);
2938          $t8_9 = requestCrypto($t5_6, 'nip04.encrypt', $t6_7, content, $t7_8);
2939          return;
2940          break;
2941        }
2942        case 3: {
2943          $t9_10 = hasKey.$get();
2944          if ($t9_10) {
2945            $block = 2; break;
2946          }
2947          else {
2948            $block = 1; break;
2949          }
2950          break;
2951        }
2952      }
2953    }
2954  }
2955  
2956  function routerSendDM$1(clientID, recipientPubkey, relayURLs, ciphertext, errMsg) {
2957    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47;
2958    let $block = 0;
2959    while (true) {
2960      switch ($block) {
2961        case 0: {
2962          $t0_1 = !$rt.builtin.stringEqual(errMsg, '');
2963          if ($t0_1) {
2964            $block = 1; break;
2965          }
2966          else {
2967            $block = 2; break;
2968          }
2969          break;
2970        }
2971        case 1: {
2972          $t1_2 = clientID.$get();
2973          $t2_3 = recipientPubkey.$get();
2974          $t3_4 = jstr($t2_3);
2975          $t4_5 = ('["DM_SENT",' + $t3_4);
2976          $t5_6 = ($t4_5 + ',false,');
2977          $t6_7 = jstr(errMsg);
2978          $t7_8 = ($t5_6 + $t6_7);
2979          $t8_9 = ($t7_8 + ']');
2980          $t9_10 = sendToClient($t1_2, $t8_9);
2981          return;
2982          break;
2983        }
2984        case 2: {
2985          $t10_11 = { $value: { ID: '', PubKey: '', CreatedAt: 0n, Kind: 0, Tags: null, Content: '', Sig: '' }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
2986          $t11_12 = { $get() { return $t10_11.$get().Kind; }, $set(v) { const obj = $t10_11.$get(); obj.Kind = v; $t10_11.$set(obj); } };
2987          $t12_13 = { $get() { return $t10_11.$get().Content; }, $set(v) { const obj = $t10_11.$get(); obj.Content = v; $t10_11.$set(obj); } };
2988          $t13_14 = { $get() { return $t10_11.$get().CreatedAt; }, $set(v) { const obj = $t10_11.$get(); obj.CreatedAt = v; $t10_11.$set(obj); } };
2989          $t14_15 = smesh$lol$web$common$jsbridge$sw.NowSeconds();
2990          $t15_16 = { $get() { return $t10_11.$get().Tags; }, $set(v) { const obj = $t10_11.$get(); obj.Tags = v; $t10_11.$set(obj); } };
2991          $t16_17 = { $value: $rt.builtin.makeSlice(1, 1, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2992          $t17_18 = $t16_17.$get().addr(0);
2993          $t18_19 = { $value: $rt.builtin.makeSlice(2, 2, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2994          $t19_20 = $t18_19.$get().addr(0);
2995          $t19_20.$set('p');
2996          $t20_21 = $t18_19.$get().addr(1);
2997          $t21_22 = recipientPubkey.$get();
2998          $t20_21.$set($t21_22);
2999          $t22_23 = $rt.builtin.sliceSlice($t18_19.$get(), undefined, undefined, undefined);
3000          $t17_18.$set($t22_23);
3001          $t23_24 = $rt.builtin.sliceSlice($t16_17.$get(), undefined, undefined, undefined);
3002          $t11_12.$set(4);
3003          $t12_13.$set(ciphertext);
3004          $t13_14.$set($t14_15);
3005          $t15_16.$set($t23_24);
3006          $t24_25 = identitySignEvent($t10_11);
3007          if ($t24_25) {
3008            $block = 4; break;
3009          }
3010          else {
3011            $block = 3; break;
3012          }
3013          break;
3014        }
3015        case 3: {
3016          $t25_26 = clientID.$get();
3017          $t26_27 = recipientPubkey.$get();
3018          $t27_28 = jstr($t26_27);
3019          $t28_29 = ('["DM_SENT",' + $t27_28);
3020          $t29_30 = ($t28_29 + ',false,"sign failed"]');
3021          $t30_31 = sendToClient($t25_26, $t29_30);
3022          return;
3023          break;
3024        }
3025        case 4: {
3026          $t31_32 = relayURLs.$get();
3027          $t32_33 = $rt.builtin.len($t31_32);
3028          $t33_34 = -1;
3029          $block = 5; break;
3030          break;
3031        }
3032        case 5: {
3033          $t34_35 = ($t33_34 + 1);
3034          $t35_36 = ($t34_35 < $t32_33);
3035          if ($t35_36) {
3036            $block = 6; break;
3037          }
3038          else {
3039            $block = 7; break;
3040          }
3041          break;
3042        }
3043        case 6: {
3044          $t36_37 = $t31_32.addr($t34_35);
3045          $t37_38 = $t36_37.$get();
3046          $t38_39 = isAllowedRelay($t37_38);
3047          if ($t38_39) {
3048            $block = 8; break;
3049          }
3050          else {
3051            $t33_34 = $t34_35;
3052            $block = 5; break;
3053          }
3054          break;
3055        }
3056        case 7: {
3057          $t39_40 = clientID.$get();
3058          $t40_41 = recipientPubkey.$get();
3059          $t41_42 = jstr($t40_41);
3060          $t42_43 = ('["DM_SENT",' + $t41_42);
3061          $t43_44 = ($t42_43 + ',true,""]');
3062          $t44_45 = sendToClient($t39_40, $t43_44);
3063          return;
3064          break;
3065        }
3066        case 8: {
3067          $t45_46 = getConn($t37_38);
3068          $t46_47 = smesh$lol$web$common$relay.Conn$Publish($t45_46, $t10_11);
3069          $t33_34 = $t34_35;
3070          $block = 5; break;
3071          break;
3072        }
3073      }
3074    }
3075  }
3076  
3077  export function routerDMSub(_, relayURLs) {
3078    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68, $t68_69, $t69_70, $t70_71, $t71_72, $t72_73, $t73_74, $t74_75, $t75_76, $t76_77, $t77_78, $t78_79, $t79_80, $t80_81, $t81_82, $t82_83, $t83_84, $t84_85;
3079    let $block = 0;
3080    while (true) {
3081      switch ($block) {
3082        case 0: {
3083          $t0_1 = myPubkey.$get();
3084          $t1_2 = $rt.builtin.stringEqual($t0_1, '');
3085          if ($t1_2) {
3086            $block = 1; break;
3087          }
3088          else {
3089            $block = 3; break;
3090          }
3091          break;
3092        }
3093        case 1: {
3094          return;
3095          break;
3096        }
3097        case 2: {
3098          dmRelayURLs.$set(relayURLs);
3099          $t2_3 = dmSubIDs.$get();
3100          $t3_4 = { $entries: [...$t2_3.entries()], $pos: 0, next() { if (this.$pos >= this.$entries.length) return [false, null, null]; const [k, v] = this.$entries[this.$pos++]; return [true, k, v]; } };
3101          $block = 4; break;
3102          break;
3103        }
3104        case 3: {
3105          $t4_5 = $rt.builtin.len(relayURLs);
3106          $t5_6 = ($t4_5 === 0);
3107          if ($t5_6) {
3108            $block = 1; break;
3109          }
3110          else {
3111            $block = 2; break;
3112          }
3113          break;
3114        }
3115        case 4: {
3116          $t6_7 = $t3_4.next();
3117          $t7_8 = $t6_7[0];
3118          if ($t7_8) {
3119            $block = 5; break;
3120          }
3121          else {
3122            $block = 6; break;
3123          }
3124          break;
3125        }
3126        case 5: {
3127          $t8_9 = $t6_7[1];
3128          $t9_10 = rpool.$get();
3129          $t10_11 = smesh$lol$web$common$relay.Pool$URLs($t9_10);
3130          $t11_12 = $rt.builtin.len($t10_11);
3131          $t14_15 = -1;
3132          $block = 7; break;
3133          break;
3134        }
3135        case 6: {
3136          $t12_13 = $rt.builtin.makeMap('string');
3137          dmSubIDs.$set($t12_13);
3138          $t13_14 = $rt.builtin.len(relayURLs);
3139          $t24_25 = -1;
3140          $block = 11; break;
3141          break;
3142        }
3143        case 7: {
3144          $t15_16 = ($t14_15 + 1);
3145          $t16_17 = ($t15_16 < $t11_12);
3146          if ($t16_17) {
3147            $block = 8; break;
3148          }
3149          else {
3150            $block = 4; break;
3151          }
3152          break;
3153        }
3154        case 8: {
3155          $t17_18 = $t10_11.addr($t15_16);
3156          $t18_19 = $t17_18.$get();
3157          $t19_20 = rpool.$get();
3158          $t20_21 = smesh$lol$web$common$relay.Pool$Get($t19_20, $t18_19);
3159          $t21_22 = ($t20_21 !== null);
3160          if ($t21_22) {
3161            $block = 10; break;
3162          }
3163          else {
3164            $t14_15 = $t15_16;
3165            $block = 7; break;
3166          }
3167          break;
3168        }
3169        case 9: {
3170          $t22_23 = smesh$lol$web$common$relay.Conn$CloseSubscription($t20_21, $t8_9);
3171          $t14_15 = $t15_16;
3172          $block = 7; break;
3173          break;
3174        }
3175        case 10: {
3176          $t23_24 = smesh$lol$web$common$relay.Conn$IsOpen($t20_21);
3177          if ($t23_24) {
3178            $block = 9; break;
3179          }
3180          else {
3181            $t14_15 = $t15_16;
3182            $block = 7; break;
3183          }
3184          break;
3185        }
3186        case 11: {
3187          $t25_26 = ($t24_25 + 1);
3188          $t26_27 = ($t25_26 < $t13_14);
3189          if ($t26_27) {
3190            $block = 12; break;
3191          }
3192          else {
3193            $block = 13; break;
3194          }
3195          break;
3196        }
3197        case 12: {
3198          $t27_28 = relayURLs.addr($t25_26);
3199          $t28_29 = $t27_28.$get();
3200          $t29_30 = isAllowedRelay($t28_29);
3201          if ($t29_30) {
3202            $block = 14; break;
3203          }
3204          else {
3205            $t24_25 = $t25_26;
3206            $block = 11; break;
3207          }
3208          break;
3209        }
3210        case 13: {
3211          return;
3212          break;
3213        }
3214        case 14: {
3215          $t30_31 = urlSuffix($t28_29);
3216          $t31_32 = ('dm4in_' + $t30_31);
3217          $t32_33 = ('dm4out_' + $t30_31);
3218          $t33_34 = ('dm17_' + $t30_31);
3219          $t34_35 = dmSubIDs.$get();
3220          $rt.builtin.mapUpdate($t34_35, $t31_32, true);
3221          $t35_36 = dmSubIDs.$get();
3222          $rt.builtin.mapUpdate($t35_36, $t32_33, true);
3223          $t36_37 = dmSubIDs.$get();
3224          $rt.builtin.mapUpdate($t36_37, $t33_34, true);
3225          $t37_38 = getConn($t28_29);
3226          $t38_39 = { $value: $rt.builtin.makeSlice(1, 1, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
3227          $t39_40 = $t38_39.$get().addr(0);
3228          $t40_41 = { $value: { IDs: null, Authors: null, Kinds: null, Tags: null, Since: 0n, Until: 0n, Limit: 0, Proxy: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3229          $t41_42 = { $get() { return $t40_41.$get().Kinds; }, $set(v) { const obj = $t40_41.$get(); obj.Kinds = v; $t40_41.$set(obj); } };
3230          $t42_43 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
3231          $t43_44 = $t42_43.$get().addr(0);
3232          $t43_44.$set(4);
3233          $t44_45 = $rt.builtin.sliceSlice($t42_43.$get(), undefined, undefined, undefined);
3234          $t45_46 = { $get() { return $t40_41.$get().Tags; }, $set(v) { const obj = $t40_41.$get(); obj.Tags = v; $t40_41.$set(obj); } };
3235          $t46_47 = $rt.builtin.makeMap('string');
3236          $t47_48 = { $value: $rt.builtin.makeSlice(1, 1, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
3237          $t48_49 = $t47_48.$get().addr(0);
3238          $t49_50 = myPubkey.$get();
3239          $t48_49.$set($t49_50);
3240          $t50_51 = $rt.builtin.sliceSlice($t47_48.$get(), undefined, undefined, undefined);
3241          $rt.builtin.mapUpdate($t46_47, '#p', $t50_51);
3242          $t51_52 = { $get() { return $t40_41.$get().Limit; }, $set(v) { const obj = $t40_41.$get(); obj.Limit = v; $t40_41.$set(obj); } };
3243          $t41_42.$set($t44_45);
3244          $t45_46.$set($t46_47);
3245          $t51_52.$set(100);
3246          $t39_40.$set($t40_41);
3247          $t52_53 = $rt.builtin.sliceSlice($t38_39.$get(), undefined, undefined, undefined);
3248          $t53_54 = smesh$lol$web$common$relay.Conn$Subscribe($t37_38, $t31_32, $t52_53);
3249          $t54_55 = { $value: $rt.builtin.makeSlice(1, 1, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
3250          $t55_56 = $t54_55.$get().addr(0);
3251          $t56_57 = { $value: { IDs: null, Authors: null, Kinds: null, Tags: null, Since: 0n, Until: 0n, Limit: 0, Proxy: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3252          $t57_58 = { $get() { return $t56_57.$get().Kinds; }, $set(v) { const obj = $t56_57.$get(); obj.Kinds = v; $t56_57.$set(obj); } };
3253          $t58_59 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
3254          $t59_60 = $t58_59.$get().addr(0);
3255          $t59_60.$set(4);
3256          $t60_61 = $rt.builtin.sliceSlice($t58_59.$get(), undefined, undefined, undefined);
3257          $t61_62 = { $get() { return $t56_57.$get().Authors; }, $set(v) { const obj = $t56_57.$get(); obj.Authors = v; $t56_57.$set(obj); } };
3258          $t62_63 = { $value: $rt.builtin.makeSlice(1, 1, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
3259          $t63_64 = $t62_63.$get().addr(0);
3260          $t64_65 = myPubkey.$get();
3261          $t63_64.$set($t64_65);
3262          $t65_66 = $rt.builtin.sliceSlice($t62_63.$get(), undefined, undefined, undefined);
3263          $t66_67 = { $get() { return $t56_57.$get().Limit; }, $set(v) { const obj = $t56_57.$get(); obj.Limit = v; $t56_57.$set(obj); } };
3264          $t57_58.$set($t60_61);
3265          $t61_62.$set($t65_66);
3266          $t66_67.$set(100);
3267          $t55_56.$set($t56_57);
3268          $t67_68 = $rt.builtin.sliceSlice($t54_55.$get(), undefined, undefined, undefined);
3269          $t68_69 = smesh$lol$web$common$relay.Conn$Subscribe($t37_38, $t32_33, $t67_68);
3270          $t69_70 = { $value: $rt.builtin.makeSlice(1, 1, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
3271          $t70_71 = $t69_70.$get().addr(0);
3272          $t71_72 = { $value: { IDs: null, Authors: null, Kinds: null, Tags: null, Since: 0n, Until: 0n, Limit: 0, Proxy: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3273          $t72_73 = { $get() { return $t71_72.$get().Kinds; }, $set(v) { const obj = $t71_72.$get(); obj.Kinds = v; $t71_72.$set(obj); } };
3274          $t73_74 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
3275          $t74_75 = $t73_74.$get().addr(0);
3276          $t74_75.$set(1059);
3277          $t75_76 = $rt.builtin.sliceSlice($t73_74.$get(), undefined, undefined, undefined);
3278          $t76_77 = { $get() { return $t71_72.$get().Tags; }, $set(v) { const obj = $t71_72.$get(); obj.Tags = v; $t71_72.$set(obj); } };
3279          $t77_78 = $rt.builtin.makeMap('string');
3280          $t78_79 = { $value: $rt.builtin.makeSlice(1, 1, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
3281          $t79_80 = $t78_79.$get().addr(0);
3282          $t80_81 = myPubkey.$get();
3283          $t79_80.$set($t80_81);
3284          $t81_82 = $rt.builtin.sliceSlice($t78_79.$get(), undefined, undefined, undefined);
3285          $rt.builtin.mapUpdate($t77_78, '#p', $t81_82);
3286          $t82_83 = { $get() { return $t71_72.$get().Limit; }, $set(v) { const obj = $t71_72.$get(); obj.Limit = v; $t71_72.$set(obj); } };
3287          $t72_73.$set($t75_76);
3288          $t76_77.$set($t77_78);
3289          $t82_83.$set(100);
3290          $t70_71.$set($t71_72);
3291          $t83_84 = $rt.builtin.sliceSlice($t69_70.$get(), undefined, undefined, undefined);
3292          $t84_85 = smesh$lol$web$common$relay.Conn$Subscribe($t37_38, $t33_34, $t83_84);
3293          $t24_25 = $t25_26;
3294          $block = 11; break;
3295          break;
3296        }
3297      }
3298    }
3299  }
3300  
3301  export function routerDMList(clientID) {
3302    let $t0_1, $t1_2, $t2_3;
3303    $t0_1 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
3304    $t0_1.$set(clientID);
3305    $t1_2 = routerDMList$1.bind(null, $t0_1);
3306    $t2_3 = cacheGetConversationList($t1_2);
3307    return;
3308  }
3309  
3310  function routerDMList$1(clientID, listJSON) {
3311    let $t0_1, $t1_2, $t2_3, $t3_4;
3312    $t0_1 = clientID.$get();
3313    $t1_2 = ('["DM_LIST",' + listJSON);
3314    $t2_3 = ($t1_2 + ']');
3315    $t3_4 = sendToClient($t0_1, $t2_3);
3316    return;
3317  }
3318  
3319  export function routerDMHistory(clientID, peer, limit, until) {
3320    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
3321    let $block = 0;
3322    while (true) {
3323      switch ($block) {
3324        case 0: {
3325          $t0_1 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
3326          $t0_1.$set(clientID);
3327          $t1_2 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
3328          $t1_2.$set(peer);
3329          $t2_3 = (limit <= 0);
3330          if ($t2_3) {
3331            $block = 1; break;
3332          }
3333          else {
3334            $t3_4 = limit;
3335            $block = 2; break;
3336          }
3337          break;
3338        }
3339        case 1: {
3340          $t3_4 = 50;
3341          $block = 2; break;
3342          break;
3343        }
3344        case 2: {
3345          $t4_5 = $t1_2.$get();
3346          $t5_6 = routerDMHistory$1.bind(null, $t0_1, $t1_2);
3347          $t6_7 = cacheQueryDMs($t4_5, $t3_4, until, $t5_6);
3348          return;
3349          break;
3350        }
3351      }
3352    }
3353  }
3354  
3355  function routerDMHistory$1(clientID, peer, msgsJSON) {
3356    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8;
3357    $t0_1 = clientID.$get();
3358    $t1_2 = peer.$get();
3359    $t2_3 = jstr($t1_2);
3360    $t3_4 = ('["DM_HISTORY",' + $t2_3);
3361    $t4_5 = ($t3_4 + ',');
3362    $t5_6 = ($t4_5 + msgsJSON);
3363    $t6_7 = ($t5_6 + ']');
3364    $t7_8 = sendToClient($t0_1, $t6_7);
3365    return;
3366  }
3367  
3368  export function routerBroadcast(clientID, pubkey, relayURLs) {
3369    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9;
3370    $t0_1 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
3371    $t0_1.$set(clientID);
3372    $t1_2 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
3373    $t1_2.$set(pubkey);
3374    $t2_3 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3375    $t2_3.$set(relayURLs);
3376    $t3_4 = $t1_2.$get();
3377    $t4_5 = jstr($t3_4);
3378    $t5_6 = ('{"authors":[' + $t4_5);
3379    $t6_7 = ($t5_6 + '],"kinds":[0,3,10002,10050,10051]}');
3380    $t7_8 = routerBroadcast$1.bind(null, $t2_3, $t1_2, $t0_1);
3381    $t8_9 = cacheQuery($t6_7, $t7_8);
3382    return;
3383  }
3384  
3385  function routerBroadcast$1(relayURLs, pubkey, clientID, eventsJSON) {
3386    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68, $t68_69, $t69_70, $t70_71, $t71_72, $t72_73, $t73_74, $t74_75, $t75_76, $t76_77, $t77_78, $t78_79, $t79_80, $t80_81, $t81_82, $t82_83, $t83_84, $t84_85, $t85_86, $t86_87, $t87_88, $t88_89, $t89_90, $t90_91, $t91_92, $t92_93, $t93_94;
3387    let $block = 0;
3388    while (true) {
3389      switch ($block) {
3390        case 0: {
3391          $t0_1 = smesh$lol$web$common$nostr.ParseEventsJSON(eventsJSON);
3392          $t1_2 = $rt.builtin.makeMap('int');
3393          $t2_3 = $rt.builtin.len($t0_1);
3394          $t3_4 = -1;
3395          $block = 1; break;
3396          break;
3397        }
3398        case 1: {
3399          $t4_5 = ($t3_4 + 1);
3400          $t5_6 = ($t4_5 < $t2_3);
3401          if ($t5_6) {
3402            $block = 2; break;
3403          }
3404          else {
3405            $block = 3; break;
3406          }
3407          break;
3408        }
3409        case 2: {
3410          $t6_7 = $t0_1.addr($t4_5);
3411          $t7_8 = $t6_7.$get();
3412          $t8_9 = { $get() { return $t7_8.$get().Kind; }, $set(v) { const obj = $t7_8.$get(); obj.Kind = v; $t7_8.$set(obj); } };
3413          $t9_10 = $t8_9.$get();
3414          { const $r = $rt.builtin.mapLookup($t1_2, $t9_10); $t10_11 = [$r.value, $r.ok]; }
3415          $t11_12 = $t10_11[0];
3416          $t12_13 = $t10_11[1];
3417          if ($t12_13) {
3418            $block = 5; break;
3419          }
3420          else {
3421            $block = 4; break;
3422          }
3423          break;
3424        }
3425        case 3: {
3426          $t13_14 = relayURLs.$get();
3427          { const $r = $rt.builtin.mapLookup($t1_2, 10002); $t14_15 = [$r.value, $r.ok]; }
3428          $t15_16 = $t14_15[0];
3429          $t16_17 = $t14_15[1];
3430          if ($t16_17) {
3431            $block = 6; break;
3432          }
3433          else {
3434            $t28_29 = $t13_14;
3435            $block = 7; break;
3436          }
3437          break;
3438        }
3439        case 4: {
3440          $t17_18 = { $get() { return $t7_8.$get().Kind; }, $set(v) { const obj = $t7_8.$get(); obj.Kind = v; $t7_8.$set(obj); } };
3441          $t18_19 = $t17_18.$get();
3442          $rt.builtin.mapUpdate($t1_2, $t18_19, $t7_8);
3443          $t3_4 = $t4_5;
3444          $block = 1; break;
3445          break;
3446        }
3447        case 5: {
3448          $t19_20 = { $get() { return $t7_8.$get().CreatedAt; }, $set(v) { const obj = $t7_8.$get(); obj.CreatedAt = v; $t7_8.$set(obj); } };
3449          $t20_21 = $t19_20.$get();
3450          $t21_22 = { $get() { return $t11_12.$get().CreatedAt; }, $set(v) { const obj = $t11_12.$get(); obj.CreatedAt = v; $t11_12.$set(obj); } };
3451          $t22_23 = $t21_22.$get();
3452          $t23_24 = ($t20_21 > $t22_23);
3453          if ($t23_24) {
3454            $block = 4; break;
3455          }
3456          else {
3457            $t3_4 = $t4_5;
3458            $block = 1; break;
3459          }
3460          break;
3461        }
3462        case 6: {
3463          $t24_25 = { $get() { return $t15_16.$get().Tags; }, $set(v) { const obj = $t15_16.$get(); obj.Tags = v; $t15_16.$set(obj); } };
3464          $t25_26 = $t24_25.$get();
3465          $t26_27 = smesh$lol$web$common$nostr.Tags$GetAll($t25_26, 'r');
3466          $t27_28 = $rt.builtin.len($t26_27);
3467          $t31_32 = null;
3468          $t32_33 = -1;
3469          $block = 8; break;
3470          break;
3471        }
3472        case 7: {
3473          $t29_30 = $rt.builtin.len($t28_29);
3474          $t30_31 = ($t29_30 === 0);
3475          if ($t30_31) {
3476            $block = 10; break;
3477          }
3478          else {
3479            $t43_44 = $t28_29;
3480            $block = 11; break;
3481          }
3482          break;
3483        }
3484        case 8: {
3485          $t33_34 = ($t32_33 + 1);
3486          $t34_35 = ($t33_34 < $t27_28);
3487          if ($t34_35) {
3488            $block = 9; break;
3489          }
3490          else {
3491            $t28_29 = $t31_32;
3492            $block = 7; break;
3493          }
3494          break;
3495        }
3496        case 9: {
3497          $t35_36 = $t26_27.addr($t33_34);
3498          $t36_37 = $t35_36.$get();
3499          $t37_38 = smesh$lol$web$common$nostr.Tag$Value($t36_37);
3500          $t38_39 = { $value: $rt.builtin.makeSlice(1, 1, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
3501          $t39_40 = $t38_39.$get().addr(0);
3502          $t39_40.$set($t37_38);
3503          $t40_41 = $rt.builtin.sliceSlice($t38_39.$get(), undefined, undefined, undefined);
3504          $t41_42 = $rt.builtin.appendSlice($t31_32, $t40_41);
3505          $t31_32 = $t41_42;
3506          $t32_33 = $t33_34;
3507          $block = 8; break;
3508          break;
3509        }
3510        case 10: {
3511          $t42_43 = writeRelays.$get();
3512          $t43_44 = $t42_43;
3513          $block = 11; break;
3514          break;
3515        }
3516        case 11: {
3517          { const $r = $rt.builtin.mapLookup($t1_2, 10050); $t44_45 = [$r.value, $r.ok]; }
3518          $t45_46 = $t44_45[0];
3519          $t46_47 = $t44_45[1];
3520          if ($t46_47) {
3521            $block = 13; break;
3522          }
3523          else {
3524            $block = 15; break;
3525          }
3526          break;
3527        }
3528        case 12: {
3529          $t47_48 = pubkey.$get();
3530          $t48_49 = createRelayListEvent(10050, $t47_48, $t43_44);
3531          $t49_50 = ($t48_49 !== null);
3532          if ($t49_50) {
3533            $block = 16; break;
3534          }
3535          else {
3536            $block = 13; break;
3537          }
3538          break;
3539        }
3540        case 13: {
3541          { const $r = $rt.builtin.mapLookup($t1_2, 10051); $t50_51 = [$r.value, $r.ok]; }
3542          $t51_52 = $t50_51[0];
3543          $t52_53 = $t50_51[1];
3544          if ($t52_53) {
3545            $block = 18; break;
3546          }
3547          else {
3548            $block = 20; break;
3549          }
3550          break;
3551        }
3552        case 14: {
3553          $t53_54 = $rt.builtin.len($t43_44);
3554          $t54_55 = ($t53_54 > 0);
3555          if ($t54_55) {
3556            $block = 12; break;
3557          }
3558          else {
3559            $block = 13; break;
3560          }
3561          break;
3562        }
3563        case 15: {
3564          $t55_56 = hasKey.$get();
3565          if ($t55_56) {
3566            $block = 14; break;
3567          }
3568          else {
3569            $block = 13; break;
3570          }
3571          break;
3572        }
3573        case 16: {
3574          $t56_57 = smesh$lol$web$common$nostr.Event$ToJSON($t48_49);
3575          $t57_58 = cacheStore($t56_57, routerBroadcast$1$1);
3576          $rt.builtin.mapUpdate($t1_2, 10050, $t48_49);
3577          $block = 13; break;
3578          break;
3579        }
3580        case 17: {
3581          $t58_59 = pubkey.$get();
3582          $t59_60 = createRelayListEvent(10051, $t58_59, $t43_44);
3583          $t60_61 = ($t59_60 !== null);
3584          if ($t60_61) {
3585            $block = 21; break;
3586          }
3587          else {
3588            $block = 18; break;
3589          }
3590          break;
3591        }
3592        case 18: {
3593          $t61_62 = { $entries: [...$t1_2.entries()], $pos: 0, next() { if (this.$pos >= this.$entries.length) return [false, null, null]; const [k, v] = this.$entries[this.$pos++]; return [true, k, v]; } };
3594          $t67_68 = 0;
3595          $block = 22; break;
3596          break;
3597        }
3598        case 19: {
3599          $t62_63 = $rt.builtin.len($t43_44);
3600          $t63_64 = ($t62_63 > 0);
3601          if ($t63_64) {
3602            $block = 17; break;
3603          }
3604          else {
3605            $block = 18; break;
3606          }
3607          break;
3608        }
3609        case 20: {
3610          $t64_65 = hasKey.$get();
3611          if ($t64_65) {
3612            $block = 19; break;
3613          }
3614          else {
3615            $block = 18; break;
3616          }
3617          break;
3618        }
3619        case 21: {
3620          $t65_66 = smesh$lol$web$common$nostr.Event$ToJSON($t59_60);
3621          $t66_67 = cacheStore($t65_66, routerBroadcast$1$2);
3622          $rt.builtin.mapUpdate($t1_2, 10051, $t59_60);
3623          $block = 18; break;
3624          break;
3625        }
3626        case 22: {
3627          $t68_69 = $t61_62.next();
3628          $t69_70 = $t68_69[0];
3629          if ($t69_70) {
3630            $block = 23; break;
3631          }
3632          else {
3633            $block = 24; break;
3634          }
3635          break;
3636        }
3637        case 23: {
3638          $t70_71 = $t68_69[2];
3639          $t71_72 = relayURLs.$get();
3640          $t72_73 = $rt.builtin.len($t71_72);
3641          $t85_86 = -1;
3642          $block = 25; break;
3643          break;
3644        }
3645        case 24: {
3646          $t73_74 = clientID.$get();
3647          $t74_75 = BigInt($t67_68);
3648          $t75_76 = smesh$lol$web$common$helpers.Itoa($t74_75);
3649          $t76_77 = ('["BROADCAST_DONE",' + $t75_76);
3650          $t77_78 = ($t76_77 + ',');
3651          $t78_79 = relayURLs.$get();
3652          $t79_80 = $rt.builtin.len($t78_79);
3653          $t80_81 = BigInt($t79_80);
3654          $t81_82 = smesh$lol$web$common$helpers.Itoa($t80_81);
3655          $t82_83 = ($t77_78 + $t81_82);
3656          $t83_84 = ($t82_83 + ']');
3657          $t84_85 = sendToClient($t73_74, $t83_84);
3658          return;
3659          break;
3660        }
3661        case 25: {
3662          $t86_87 = ($t85_86 + 1);
3663          $t87_88 = ($t86_87 < $t72_73);
3664          if ($t87_88) {
3665            $block = 26; break;
3666          }
3667          else {
3668            $block = 27; break;
3669          }
3670          break;
3671        }
3672        case 26: {
3673          $t88_89 = $t71_72.addr($t86_87);
3674          $t89_90 = $t88_89.$get();
3675          $t90_91 = isAllowedRelay($t89_90);
3676          if ($t90_91) {
3677            $block = 28; break;
3678          }
3679          else {
3680            $t85_86 = $t86_87;
3681            $block = 25; break;
3682          }
3683          break;
3684        }
3685        case 27: {
3686          $t91_92 = ($t67_68 + 1);
3687          $t67_68 = $t91_92;
3688          $block = 22; break;
3689          break;
3690        }
3691        case 28: {
3692          $t92_93 = getConn($t89_90);
3693          $t93_94 = smesh$lol$web$common$relay.Conn$Publish($t92_93, $t70_71);
3694          $t85_86 = $t86_87;
3695          $block = 25; break;
3696          break;
3697        }
3698      }
3699    }
3700  }
3701  
3702  function routerBroadcast$1$1(_) {
3703    return;
3704  }
3705  
3706  function routerBroadcast$1$2(_) {
3707    return;
3708  }
3709  
3710  export function createRelayListEvent(kind, _, relays) {
3711    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22;
3712    let $block = 0;
3713    while (true) {
3714      switch ($block) {
3715        case 0: {
3716          $t0_1 = $rt.builtin.len(relays);
3717          $t1_2 = null;
3718          $t2_3 = -1;
3719          $block = 1; break;
3720          break;
3721        }
3722        case 1: {
3723          $t3_4 = ($t2_3 + 1);
3724          $t4_5 = ($t3_4 < $t0_1);
3725          if ($t4_5) {
3726            $block = 2; break;
3727          }
3728          else {
3729            $block = 3; break;
3730          }
3731          break;
3732        }
3733        case 2: {
3734          $t5_6 = relays.addr($t3_4);
3735          $t6_7 = $t5_6.$get();
3736          $t7_8 = { $value: $rt.builtin.makeSlice(2, 2, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
3737          $t8_9 = $t7_8.$get().addr(0);
3738          $t8_9.$set('relay');
3739          $t9_10 = $t7_8.$get().addr(1);
3740          $t9_10.$set($t6_7);
3741          $t10_11 = $rt.builtin.sliceSlice($t7_8.$get(), undefined, undefined, undefined);
3742          $t11_12 = { $value: $rt.builtin.makeSlice(1, 1, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
3743          $t12_13 = $t11_12.$get().addr(0);
3744          $t12_13.$set($t10_11);
3745          $t13_14 = $rt.builtin.sliceSlice($t11_12.$get(), undefined, undefined, undefined);
3746          $t14_15 = $rt.builtin.appendSlice($t1_2, $t13_14);
3747          $t1_2 = $t14_15;
3748          $t2_3 = $t3_4;
3749          $block = 1; break;
3750          break;
3751        }
3752        case 3: {
3753          $t15_16 = { $value: { ID: '', PubKey: '', CreatedAt: 0n, Kind: 0, Tags: null, Content: '', Sig: '' }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3754          $t16_17 = { $get() { return $t15_16.$get().Kind; }, $set(v) { const obj = $t15_16.$get(); obj.Kind = v; $t15_16.$set(obj); } };
3755          $t17_18 = { $get() { return $t15_16.$get().Content; }, $set(v) { const obj = $t15_16.$get(); obj.Content = v; $t15_16.$set(obj); } };
3756          $t18_19 = { $get() { return $t15_16.$get().Tags; }, $set(v) { const obj = $t15_16.$get(); obj.Tags = v; $t15_16.$set(obj); } };
3757          $t19_20 = { $get() { return $t15_16.$get().CreatedAt; }, $set(v) { const obj = $t15_16.$get(); obj.CreatedAt = v; $t15_16.$set(obj); } };
3758          $t20_21 = smesh$lol$web$common$jsbridge$sw.NowSeconds();
3759          $t16_17.$set(kind);
3760          $t17_18.$set('');
3761          $t18_19.$set($t1_2);
3762          $t19_20.$set($t20_21);
3763          $t21_22 = identitySignEvent($t15_16);
3764          if ($t21_22) {
3765            $block = 5; break;
3766          }
3767          else {
3768            $block = 4; break;
3769          }
3770          break;
3771        }
3772        case 4: {
3773          return null;
3774          break;
3775        }
3776        case 5: {
3777          return $t15_16;
3778          break;
3779        }
3780      }
3781    }
3782  }
3783  
3784  export function stringsToJSON(ss) {
3785    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15;
3786    let $block = 0;
3787    while (true) {
3788      switch ($block) {
3789        case 0: {
3790          $t0_1 = $rt.builtin.len(ss);
3791          $t1_2 = ($t0_1 === 0);
3792          if ($t1_2) {
3793            $block = 1; break;
3794          }
3795          else {
3796            $block = 2; break;
3797          }
3798          break;
3799        }
3800        case 1: {
3801          return '[]';
3802          break;
3803        }
3804        case 2: {
3805          $t2_3 = $rt.builtin.len(ss);
3806          $t3_4 = '[';
3807          $t4_5 = -1;
3808          $block = 3; break;
3809          break;
3810        }
3811        case 3: {
3812          $t5_6 = ($t4_5 + 1);
3813          $t6_7 = ($t5_6 < $t2_3);
3814          if ($t6_7) {
3815            $block = 4; break;
3816          }
3817          else {
3818            $block = 5; break;
3819          }
3820          break;
3821        }
3822        case 4: {
3823          $t7_8 = ss.addr($t5_6);
3824          $t8_9 = $t7_8.$get();
3825          $t9_10 = ($t5_6 > 0);
3826          if ($t9_10) {
3827            $block = 6; break;
3828          }
3829          else {
3830            $t12_13 = $t3_4;
3831            $block = 7; break;
3832          }
3833          break;
3834        }
3835        case 5: {
3836          $t10_11 = ($t3_4 + ']');
3837          return $t10_11;
3838          break;
3839        }
3840        case 6: {
3841          $t11_12 = ($t3_4 + ',');
3842          $t12_13 = $t11_12;
3843          $block = 7; break;
3844          break;
3845        }
3846        case 7: {
3847          $t13_14 = jstr($t8_9);
3848          $t14_15 = ($t12_13 + $t13_14);
3849          $t3_4 = $t14_15;
3850          $t4_5 = $t5_6;
3851          $block = 3; break;
3852          break;
3853        }
3854      }
3855    }
3856  }
3857  
3858  export function initSharedState() {
3859    let $t0_1, $t1_2;
3860    $t0_1 = $rt.builtin.makeMap('string');
3861    dmSubIDs.$set($t0_1);
3862    $t1_2 = $rt.builtin.makeMap('int');
3863    cryptoCBs.$set($t1_2);
3864    return;
3865  }
3866  
3867  export function sendToClient(clientID, msg) {
3868    let $t0_1, $t1_2, $t2_3;
3869    $t0_1 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
3870    $t0_1.$set(msg);
3871    $t1_2 = sendToClient$1.bind(null, $t0_1);
3872    $t2_3 = smesh$lol$web$common$jsbridge$sw.GetClientByID(clientID, $t1_2);
3873    return;
3874  }
3875  
3876  function sendToClient$1(msg, c, ok) {
3877    let $t0_1, $t1_2;
3878    let $block = 0;
3879    while (true) {
3880      switch ($block) {
3881        case 0: {
3882          if (ok) {
3883            $block = 1; break;
3884          }
3885          else {
3886            $block = 2; break;
3887          }
3888          break;
3889        }
3890        case 1: {
3891          $t0_1 = msg.$get();
3892          $t1_2 = smesh$lol$web$common$jsbridge$sw.PostMessageJSON(c, $t0_1);
3893          $block = 2; break;
3894          break;
3895        }
3896        case 2: {
3897          return;
3898          break;
3899        }
3900      }
3901    }
3902  }
3903  
3904  export function broadcastToClients(msg) {
3905    let $t0_1, $t1_2, $t2_3;
3906    $t0_1 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
3907    $t0_1.$set(msg);
3908    $t1_2 = broadcastToClients$1.bind(null, $t0_1);
3909    $t2_3 = smesh$lol$web$common$jsbridge$sw.MatchClients($t1_2);
3910    return;
3911  }
3912  
3913  function broadcastToClients$1(msg, c) {
3914    let $t0_1, $t1_2;
3915    $t0_1 = msg.$get();
3916    $t1_2 = smesh$lol$web$common$jsbridge$sw.PostMessageJSON(c, $t0_1);
3917    return;
3918  }
3919  
3920  export function genCryptoID() {
3921    let $t0_1, $t1_2, $t2_3;
3922    $t0_1 = nextCryptoID.$get();
3923    $t1_2 = ($t0_1 + 1);
3924    nextCryptoID.$set($t1_2);
3925    $t2_3 = nextCryptoID.$get();
3926    return $t2_3;
3927  }
3928  
3929  export function requestCrypto(clientID, method, peerPubkey, data, fn) {
3930    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21;
3931    $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3932    $t0_1.$set(fn);
3933    $t1_2 = genCryptoID();
3934    $t2_3 = cryptoCBs.$get();
3935    $t3_4 = $t0_1.$get();
3936    $rt.builtin.mapUpdate($t2_3, $t1_2, $t3_4);
3937    $t4_5 = BigInt($t1_2);
3938    $t5_6 = smesh$lol$web$common$helpers.Itoa($t4_5);
3939    $t6_7 = ('["CRYPTO_REQ",' + $t5_6);
3940    $t7_8 = ($t6_7 + ',');
3941    $t8_9 = jstr(method);
3942    $t9_10 = ($t7_8 + $t8_9);
3943    $t10_11 = ($t9_10 + ',');
3944    $t11_12 = jstr(peerPubkey);
3945    $t12_13 = ($t10_11 + $t11_12);
3946    $t13_14 = ($t12_13 + ',');
3947    $t14_15 = jstr(data);
3948    $t15_16 = ($t13_14 + $t14_15);
3949    $t16_17 = ($t15_16 + ']');
3950    $t17_18 = broadcastToClients($t16_17);
3951    $t18_19 = { $value: 0, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3952    $t18_19.$set($t1_2);
3953    $t19_20 = requestCrypto$1.bind(null, $t18_19, $t0_1);
3954    $t20_21 = smesh$lol$web$common$jsbridge$sw.SetTimeout(15000, $t19_20);
3955    return;
3956  }
3957  
3958  function requestCrypto$1(cbID, fn) {
3959    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10;
3960    let $block = 0;
3961    while (true) {
3962      switch ($block) {
3963        case 0: {
3964          $t0_1 = cryptoCBs.$get();
3965          $t1_2 = cbID.$get();
3966          { const $r = $rt.builtin.mapLookup($t0_1, $t1_2); $t2_3 = [$r.value, $r.ok]; }
3967          $t3_4 = $t2_3[0];
3968          $t4_5 = $t2_3[1];
3969          if ($t4_5) {
3970            $block = 1; break;
3971          }
3972          else {
3973            $block = 2; break;
3974          }
3975          break;
3976        }
3977        case 1: {
3978          $t5_6 = cryptoCBs.$get();
3979          $t6_7 = cbID.$get();
3980          $t7_8 = $rt.builtin.mapDelete($t5_6, $t6_7);
3981          $t8_9 = fn.$get();
3982          $t9_10 = $t8_9('', 'timeout: signer did not respond');
3983          $block = 2; break;
3984          break;
3985        }
3986        case 2: {
3987          return;
3988          break;
3989        }
3990      }
3991    }
3992  }
3993  
3994  export function jstr(s) {
3995    let $t0_1;
3996    $t0_1 = smesh$lol$web$common$helpers.JsonString(s);
3997    return $t0_1;
3998  }
3999  
4000  export function hexTo32(s) {
4001    let $t0_1, $t1_2, $t2_3;
4002    $t0_1 = smesh$lol$web$common$helpers.HexDecode32(s);
4003    $t1_2 = $t0_1[0];
4004    $t2_3 = $t0_1[1];
4005    return $t1_2;
4006  }
4007  
4008  export function random32() {
4009    let $t0_1, $t1_2, $t2_3, $t3_4;
4010    $t0_1 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
4011    $t1_2 = $rt.builtin.sliceSlice($t0_1.$get(), undefined, undefined, undefined);
4012    $t2_3 = smesh$lol$web$common$jsbridge$subtle.RandomBytes($t1_2);
4013    $t3_4 = $t0_1.$get();
4014    return $t3_4;
4015  }
4016  
4017  export function jsonFieldRaw(s, key) {
4018    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29;
4019    let $block = 0;
4020    while (true) {
4021      switch ($block) {
4022        case 0: {
4023          $t0_1 = ('"' + key);
4024          $t1_2 = ($t0_1 + '"');
4025          $t2_3 = 0;
4026          $block = 1; break;
4027          break;
4028        }
4029        case 1: {
4030          $t3_4 = $rt.builtin.len(s);
4031          $t4_5 = $rt.builtin.len($t1_2);
4032          $t5_6 = ($t3_4 - $t4_5);
4033          $t6_7 = ($t2_3 <= $t5_6);
4034          if ($t6_7) {
4035            $block = 2; break;
4036          }
4037          else {
4038            $block = 3; break;
4039          }
4040          break;
4041        }
4042        case 2: {
4043          $t7_8 = $rt.builtin.len($t1_2);
4044          $t8_9 = ($t2_3 + $t7_8);
4045          $t9_10 = $rt.builtin.stringSlice(s, $t2_3, $t8_9);
4046          $t10_11 = $rt.builtin.stringEqual($t9_10, $t1_2);
4047          if ($t10_11) {
4048            $block = 4; break;
4049          }
4050          else {
4051            $block = 5; break;
4052          }
4053          break;
4054        }
4055        case 3: {
4056          return '';
4057          break;
4058        }
4059        case 4: {
4060          $t11_12 = $rt.builtin.len($t1_2);
4061          $t12_13 = ($t2_3 + $t11_12);
4062          $t17_18 = $t12_13;
4063          $block = 8; break;
4064          break;
4065        }
4066        case 5: {
4067          $t13_14 = ($t2_3 + 1);
4068          $t2_3 = $t13_14;
4069          $block = 1; break;
4070          break;
4071        }
4072        case 6: {
4073          $t14_15 = ($t17_18 + 1);
4074          $t17_18 = $t14_15;
4075          $block = 8; break;
4076          break;
4077        }
4078        case 7: {
4079          $t15_16 = $rt.builtin.len(s);
4080          $t16_17 = ($t17_18 < $t15_16);
4081          if ($t16_17) {
4082            $block = 11; break;
4083          }
4084          else {
4085            $block = 5; break;
4086          }
4087          break;
4088        }
4089        case 8: {
4090          $t18_19 = $rt.builtin.len(s);
4091          $t19_20 = ($t17_18 < $t18_19);
4092          if ($t19_20) {
4093            $block = 9; break;
4094          }
4095          else {
4096            $block = 7; break;
4097          }
4098          break;
4099        }
4100        case 9: {
4101          $t20_21 = s.addr($t17_18);
4102          $t21_22 = $t20_21.$get();
4103          $t22_23 = ($t21_22 === 32);
4104          if ($t22_23) {
4105            $block = 6; break;
4106          }
4107          else {
4108            $block = 10; break;
4109          }
4110          break;
4111        }
4112        case 10: {
4113          $t23_24 = s.addr($t17_18);
4114          $t24_25 = $t23_24.$get();
4115          $t25_26 = ($t24_25 === 58);
4116          if ($t25_26) {
4117            $block = 6; break;
4118          }
4119          else {
4120            $block = 7; break;
4121          }
4122          break;
4123        }
4124        case 11: {
4125          $t26_27 = skipval(s, $t17_18);
4126          $t27_28 = ($t26_27 > 0);
4127          if ($t27_28) {
4128            $block = 12; break;
4129          }
4130          else {
4131            $block = 5; break;
4132          }
4133          break;
4134        }
4135        case 12: {
4136          $t28_29 = $rt.builtin.stringSlice(s, $t17_18, $t26_27);
4137          return $t28_29;
4138          break;
4139        }
4140      }
4141    }
4142  }
4143  
4144  export function newMW(s) {
4145    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24;
4146    let $block = 0;
4147    while (true) {
4148      switch ($block) {
4149        case 0: {
4150          $t0_1 = { $value: { s: '', i: 0 }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
4151          $t1_2 = { $get() { return $t0_1.$get().s; }, $set(v) { const obj = $t0_1.$get(); obj.s = v; $t0_1.$set(obj); } };
4152          $t1_2.$set(s);
4153          $block = 3; break;
4154          break;
4155        }
4156        case 1: {
4157          $t2_3 = { $get() { return $t0_1.$get().i; }, $set(v) { const obj = $t0_1.$get(); obj.i = v; $t0_1.$set(obj); } };
4158          $t3_4 = $t2_3.$get();
4159          $t4_5 = ($t3_4 + 1);
4160          $t5_6 = { $get() { return $t0_1.$get().i; }, $set(v) { const obj = $t0_1.$get(); obj.i = v; $t0_1.$set(obj); } };
4161          $t5_6.$set($t4_5);
4162          $block = 3; break;
4163          break;
4164        }
4165        case 2: {
4166          $t6_7 = { $get() { return $t0_1.$get().i; }, $set(v) { const obj = $t0_1.$get(); obj.i = v; $t0_1.$set(obj); } };
4167          $t7_8 = $t6_7.$get();
4168          $t8_9 = $rt.builtin.len(s);
4169          $t9_10 = ($t7_8 < $t8_9);
4170          if ($t9_10) {
4171            $block = 5; break;
4172          }
4173          else {
4174            $block = 6; break;
4175          }
4176          break;
4177        }
4178        case 3: {
4179          $t10_11 = { $get() { return $t0_1.$get().i; }, $set(v) { const obj = $t0_1.$get(); obj.i = v; $t0_1.$set(obj); } };
4180          $t11_12 = $t10_11.$get();
4181          $t12_13 = $rt.builtin.len(s);
4182          $t13_14 = ($t11_12 < $t12_13);
4183          if ($t13_14) {
4184            $block = 4; break;
4185          }
4186          else {
4187            $block = 2; break;
4188          }
4189          break;
4190        }
4191        case 4: {
4192          $t14_15 = { $get() { return $t0_1.$get().i; }, $set(v) { const obj = $t0_1.$get(); obj.i = v; $t0_1.$set(obj); } };
4193          $t15_16 = $t14_15.$get();
4194          $t16_17 = s.addr($t15_16);
4195          $t17_18 = $t16_17.$get();
4196          $t18_19 = ($t17_18 !== 91);
4197          if ($t18_19) {
4198            $block = 1; break;
4199          }
4200          else {
4201            $block = 2; break;
4202          }
4203          break;
4204        }
4205        case 5: {
4206          $t19_20 = { $get() { return $t0_1.$get().i; }, $set(v) { const obj = $t0_1.$get(); obj.i = v; $t0_1.$set(obj); } };
4207          $t20_21 = $t19_20.$get();
4208          $t21_22 = ($t20_21 + 1);
4209          $t22_23 = { $get() { return $t0_1.$get().i; }, $set(v) { const obj = $t0_1.$get(); obj.i = v; $t0_1.$set(obj); } };
4210          $t22_23.$set($t21_22);
4211          $block = 6; break;
4212          break;
4213        }
4214        case 6: {
4215          $t23_24 = $t0_1.$get();
4216          return $t23_24;
4217          break;
4218        }
4219      }
4220    }
4221  }
4222  
4223  export function skipval(s, i) {
4224    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56;
4225    let $block = 0;
4226    while (true) {
4227      switch ($block) {
4228        case 0: {
4229          $t0_1 = $rt.builtin.len(s);
4230          $t1_2 = (i >= $t0_1);
4231          if ($t1_2) {
4232            $block = 1; break;
4233          }
4234          else {
4235            $block = 2; break;
4236          }
4237          break;
4238        }
4239        case 1: {
4240          return -1;
4241          break;
4242        }
4243        case 2: {
4244          $t2_3 = s.addr(i);
4245          $t3_4 = $t2_3.$get();
4246          $t4_5 = ($t3_4 === 34);
4247          if ($t4_5) {
4248            $block = 3; break;
4249          }
4250          else {
4251            $block = 5; break;
4252          }
4253          break;
4254        }
4255        case 3: {
4256          $t5_6 = (i + 1);
4257          $t11_12 = $t5_6;
4258          $block = 8; break;
4259          break;
4260        }
4261        case 4: {
4262          $t6_7 = skipBrack(s, i, 123, 125);
4263          return $t6_7;
4264          break;
4265        }
4266        case 5: {
4267          $t7_8 = ($t3_4 === 123);
4268          if ($t7_8) {
4269            $block = 4; break;
4270          }
4271          else {
4272            $block = 14; break;
4273          }
4274          break;
4275        }
4276        case 6: {
4277          $t8_9 = s.addr($t11_12);
4278          $t9_10 = $t8_9.$get();
4279          $t10_11 = ($t9_10 === 92);
4280          if ($t10_11) {
4281            $block = 9; break;
4282          }
4283          else {
4284            $block = 10; break;
4285          }
4286          break;
4287        }
4288        case 7: {
4289          return -1;
4290          break;
4291        }
4292        case 8: {
4293          $t12_13 = $rt.builtin.len(s);
4294          $t13_14 = ($t11_12 < $t12_13);
4295          if ($t13_14) {
4296            $block = 6; break;
4297          }
4298          else {
4299            $block = 7; break;
4300          }
4301          break;
4302        }
4303        case 9: {
4304          $t14_15 = ($t11_12 + 2);
4305          $t11_12 = $t14_15;
4306          $block = 8; break;
4307          break;
4308        }
4309        case 10: {
4310          $t15_16 = s.addr($t11_12);
4311          $t16_17 = $t15_16.$get();
4312          $t17_18 = ($t16_17 === 34);
4313          if ($t17_18) {
4314            $block = 11; break;
4315          }
4316          else {
4317            $block = 12; break;
4318          }
4319          break;
4320        }
4321        case 11: {
4322          $t18_19 = ($t11_12 + 1);
4323          return $t18_19;
4324          break;
4325        }
4326        case 12: {
4327          $t19_20 = ($t11_12 + 1);
4328          $t11_12 = $t19_20;
4329          $block = 8; break;
4330          break;
4331        }
4332        case 13: {
4333          $t20_21 = skipBrack(s, i, 91, 93);
4334          return $t20_21;
4335          break;
4336        }
4337        case 14: {
4338          $t21_22 = ($t3_4 === 91);
4339          if ($t21_22) {
4340            $block = 13; break;
4341          }
4342          else {
4343            $block = 16; break;
4344          }
4345          break;
4346        }
4347        case 15: {
4348          $t22_23 = (i + 4);
4349          $t23_24 = $rt.builtin.len(s);
4350          $t24_25 = ($t22_23 <= $t23_24);
4351          if ($t24_25) {
4352            $block = 19; break;
4353          }
4354          else {
4355            $block = 20; break;
4356          }
4357          break;
4358        }
4359        case 16: {
4360          $t25_26 = ($t3_4 === 116);
4361          if ($t25_26) {
4362            $block = 15; break;
4363          }
4364          else {
4365            $block = 18; break;
4366          }
4367          break;
4368        }
4369        case 17: {
4370          $t26_27 = (i + 5);
4371          $t27_28 = $rt.builtin.len(s);
4372          $t28_29 = ($t26_27 <= $t27_28);
4373          if ($t28_29) {
4374            $block = 23; break;
4375          }
4376          else {
4377            $block = 24; break;
4378          }
4379          break;
4380        }
4381        case 18: {
4382          $t29_30 = ($t3_4 === 102);
4383          if ($t29_30) {
4384            $block = 17; break;
4385          }
4386          else {
4387            $block = 22; break;
4388          }
4389          break;
4390        }
4391        case 19: {
4392          $t30_31 = (i + 4);
4393          return $t30_31;
4394          break;
4395        }
4396        case 20: {
4397          return -1;
4398          break;
4399        }
4400        case 21: {
4401          $t31_32 = (i + 4);
4402          $t32_33 = $rt.builtin.len(s);
4403          $t33_34 = ($t31_32 <= $t32_33);
4404          if ($t33_34) {
4405            $block = 25; break;
4406          }
4407          else {
4408            $block = 26; break;
4409          }
4410          break;
4411        }
4412        case 22: {
4413          $t34_35 = ($t3_4 === 110);
4414          if ($t34_35) {
4415            $block = 21; break;
4416          }
4417          else {
4418            $t38_39 = i;
4419            $block = 29; break;
4420          }
4421          break;
4422        }
4423        case 23: {
4424          $t35_36 = (i + 5);
4425          return $t35_36;
4426          break;
4427        }
4428        case 24: {
4429          return -1;
4430          break;
4431        }
4432        case 25: {
4433          $t36_37 = (i + 4);
4434          return $t36_37;
4435          break;
4436        }
4437        case 26: {
4438          return -1;
4439          break;
4440        }
4441        case 27: {
4442          $t37_38 = ($t38_39 + 1);
4443          $t38_39 = $t37_38;
4444          $block = 29; break;
4445          break;
4446        }
4447        case 28: {
4448          return $t38_39;
4449          break;
4450        }
4451        case 29: {
4452          $t39_40 = $rt.builtin.len(s);
4453          $t40_41 = ($t38_39 < $t39_40);
4454          if ($t40_41) {
4455            $block = 34; break;
4456          }
4457          else {
4458            $block = 28; break;
4459          }
4460          break;
4461        }
4462        case 30: {
4463          $t41_42 = s.addr($t38_39);
4464          $t42_43 = $t41_42.$get();
4465          $t43_44 = ($t42_43 !== 10);
4466          if ($t43_44) {
4467            $block = 27; break;
4468          }
4469          else {
4470            $block = 28; break;
4471          }
4472          break;
4473        }
4474        case 31: {
4475          $t44_45 = s.addr($t38_39);
4476          $t45_46 = $t44_45.$get();
4477          $t46_47 = ($t45_46 !== 32);
4478          if ($t46_47) {
4479            $block = 30; break;
4480          }
4481          else {
4482            $block = 28; break;
4483          }
4484          break;
4485        }
4486        case 32: {
4487          $t47_48 = s.addr($t38_39);
4488          $t48_49 = $t47_48.$get();
4489          $t49_50 = ($t48_49 !== 93);
4490          if ($t49_50) {
4491            $block = 31; break;
4492          }
4493          else {
4494            $block = 28; break;
4495          }
4496          break;
4497        }
4498        case 33: {
4499          $t50_51 = s.addr($t38_39);
4500          $t51_52 = $t50_51.$get();
4501          $t52_53 = ($t51_52 !== 125);
4502          if ($t52_53) {
4503            $block = 32; break;
4504          }
4505          else {
4506            $block = 28; break;
4507          }
4508          break;
4509        }
4510        case 34: {
4511          $t53_54 = s.addr($t38_39);
4512          $t54_55 = $t53_54.$get();
4513          $t55_56 = ($t54_55 !== 44);
4514          if ($t55_56) {
4515            $block = 33; break;
4516          }
4517          else {
4518            $block = 28; break;
4519          }
4520          break;
4521        }
4522      }
4523    }
4524  }
4525  
4526  export function skipBrack(s, i, open, close) {
4527    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26;
4528    let $block = 0;
4529    while (true) {
4530      switch ($block) {
4531        case 0: {
4532          $t0_1 = (i + 1);
4533          $t2_3 = $t0_1;
4534          $t3_4 = 1;
4535          $t4_5 = false;
4536          $block = 3; break;
4537          break;
4538        }
4539        case 1: {
4540          if ($t4_5) {
4541            $block = 5; break;
4542          }
4543          else {
4544            $block = 7; break;
4545          }
4546          break;
4547        }
4548        case 2: {
4549          $t1_2 = ($t3_4 !== 0);
4550          if ($t1_2) {
4551            $block = 16; break;
4552          }
4553          else {
4554            $block = 17; break;
4555          }
4556          break;
4557        }
4558        case 3: {
4559          $t5_6 = $rt.builtin.len(s);
4560          $t6_7 = ($t2_3 < $t5_6);
4561          if ($t6_7) {
4562            $block = 4; break;
4563          }
4564          else {
4565            $block = 2; break;
4566          }
4567          break;
4568        }
4569        case 4: {
4570          $t7_8 = ($t3_4 > 0);
4571          if ($t7_8) {
4572            $block = 1; break;
4573          }
4574          else {
4575            $block = 2; break;
4576          }
4577          break;
4578        }
4579        case 5: {
4580          $t8_9 = s.addr($t2_3);
4581          $t9_10 = $t8_9.$get();
4582          $t10_11 = ($t9_10 === 92);
4583          if ($t10_11) {
4584            $block = 8; break;
4585          }
4586          else {
4587            $block = 9; break;
4588          }
4589          break;
4590        }
4591        case 6: {
4592          $t14_15 = ($t11_12 + 1);
4593          $t2_3 = $t14_15;
4594          $t3_4 = $t12_13;
4595          $t4_5 = $t13_14;
4596          $block = 3; break;
4597          break;
4598        }
4599        case 7: {
4600          $t15_16 = s.addr($t2_3);
4601          $t16_17 = $t15_16.$get();
4602          $t17_18 = ($t16_17 === 34);
4603          if ($t17_18) {
4604            $block = 11; break;
4605          }
4606          else {
4607            $block = 13; break;
4608          }
4609          break;
4610        }
4611        case 8: {
4612          $t18_19 = ($t2_3 + 1);
4613          $t11_12 = $t18_19;
4614          $t12_13 = $t3_4;
4615          $t13_14 = $t4_5;
4616          $block = 6; break;
4617          break;
4618        }
4619        case 9: {
4620          $t19_20 = s.addr($t2_3);
4621          $t20_21 = $t19_20.$get();
4622          $t21_22 = ($t20_21 === 34);
4623          if ($t21_22) {
4624            $block = 10; break;
4625          }
4626          else {
4627            $t11_12 = $t2_3;
4628            $t12_13 = $t3_4;
4629            $t13_14 = $t4_5;
4630            $block = 6; break;
4631          }
4632          break;
4633        }
4634        case 10: {
4635          $t11_12 = $t2_3;
4636          $t12_13 = $t3_4;
4637          $t13_14 = false;
4638          $block = 6; break;
4639          break;
4640        }
4641        case 11: {
4642          $t11_12 = $t2_3;
4643          $t12_13 = $t3_4;
4644          $t13_14 = true;
4645          $block = 6; break;
4646          break;
4647        }
4648        case 12: {
4649          $t22_23 = ($t3_4 + 1);
4650          $t11_12 = $t2_3;
4651          $t12_13 = $t22_23;
4652          $t13_14 = $t4_5;
4653          $block = 6; break;
4654          break;
4655        }
4656        case 13: {
4657          $t23_24 = ($t16_17 === open);
4658          if ($t23_24) {
4659            $block = 12; break;
4660          }
4661          else {
4662            $block = 15; break;
4663          }
4664          break;
4665        }
4666        case 14: {
4667          $t24_25 = ($t3_4 - 1);
4668          $t11_12 = $t2_3;
4669          $t12_13 = $t24_25;
4670          $t13_14 = $t4_5;
4671          $block = 6; break;
4672          break;
4673        }
4674        case 15: {
4675          $t25_26 = ($t16_17 === close);
4676          if ($t25_26) {
4677            $block = 14; break;
4678          }
4679          else {
4680            $t11_12 = $t2_3;
4681            $t12_13 = $t3_4;
4682            $t13_14 = $t4_5;
4683            $block = 6; break;
4684          }
4685          break;
4686        }
4687        case 16: {
4688          return -1;
4689          break;
4690        }
4691        case 17: {
4692          return $t2_3;
4693          break;
4694        }
4695      }
4696    }
4697  }
4698  
4699  export function DMRecord$ToJSON(r) {
4700    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35;
4701    $t0_1 = { $get() { return r.$get().ID; }, $set(v) { const obj = r.$get(); obj.ID = v; r.$set(obj); } };
4702    $t1_2 = $t0_1.$get();
4703    $t2_3 = jstr($t1_2);
4704    $t3_4 = ('{"id":' + $t2_3);
4705    $t4_5 = ($t3_4 + ',"peer":');
4706    $t5_6 = { $get() { return r.$get().Peer; }, $set(v) { const obj = r.$get(); obj.Peer = v; r.$set(obj); } };
4707    $t6_7 = $t5_6.$get();
4708    $t7_8 = jstr($t6_7);
4709    $t8_9 = ($t4_5 + $t7_8);
4710    $t9_10 = ($t8_9 + ',"from":');
4711    $t10_11 = { $get() { return r.$get().From; }, $set(v) { const obj = r.$get(); obj.From = v; r.$set(obj); } };
4712    $t11_12 = $t10_11.$get();
4713    $t12_13 = jstr($t11_12);
4714    $t13_14 = ($t9_10 + $t12_13);
4715    $t14_15 = ($t13_14 + ',"content":');
4716    $t15_16 = { $get() { return r.$get().Content; }, $set(v) { const obj = r.$get(); obj.Content = v; r.$set(obj); } };
4717    $t16_17 = $t15_16.$get();
4718    $t17_18 = jstr($t16_17);
4719    $t18_19 = ($t14_15 + $t17_18);
4720    $t19_20 = ($t18_19 + ',"created_at":');
4721    $t20_21 = { $get() { return r.$get().CreatedAt; }, $set(v) { const obj = r.$get(); obj.CreatedAt = v; r.$set(obj); } };
4722    $t21_22 = $t20_21.$get();
4723    $t22_23 = smesh$lol$web$common$helpers.Itoa($t21_22);
4724    $t23_24 = ($t19_20 + $t22_23);
4725    $t24_25 = ($t23_24 + ',"protocol":');
4726    $t25_26 = { $get() { return r.$get().Protocol; }, $set(v) { const obj = r.$get(); obj.Protocol = v; r.$set(obj); } };
4727    $t26_27 = $t25_26.$get();
4728    $t27_28 = jstr($t26_27);
4729    $t28_29 = ($t24_25 + $t27_28);
4730    $t29_30 = ($t28_29 + ',"eventId":');
4731    $t30_31 = { $get() { return r.$get().EventID; }, $set(v) { const obj = r.$get(); obj.EventID = v; r.$set(obj); } };
4732    $t31_32 = $t30_31.$get();
4733    $t32_33 = jstr($t31_32);
4734    $t33_34 = ($t29_30 + $t32_33);
4735    $t34_35 = ($t33_34 + '}');
4736    return $t34_35;
4737  }
4738  
4739  $rt.types.getType('./web/sw/.DMRecord')?.methods?.set('ToJSON', DMRecord$ToJSON);
4740  export function mw$num(w) {
4741    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56;
4742    let $block = 0;
4743    while (true) {
4744      switch ($block) {
4745        case 0: {
4746          $t0_1 = mw$sep(w);
4747          $t1_2 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4748          $t2_3 = $t1_2.$get();
4749          $t3_4 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4750          $t4_5 = $t3_4.$get();
4751          $t5_6 = $rt.builtin.len($t4_5);
4752          $t6_7 = ($t2_3 < $t5_6);
4753          if ($t6_7) {
4754            $block = 3; break;
4755          }
4756          else {
4757            $t11_12 = false;
4758            $block = 2; break;
4759          }
4760          break;
4761        }
4762        case 1: {
4763          $t7_8 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4764          $t8_9 = $t7_8.$get();
4765          $t9_10 = ($t8_9 + 1);
4766          $t10_11 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4767          $t10_11.$set($t9_10);
4768          $t11_12 = true;
4769          $block = 2; break;
4770          break;
4771        }
4772        case 2: {
4773          $t33_34 = 0n;
4774          $block = 6; break;
4775          break;
4776        }
4777        case 3: {
4778          $t12_13 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4779          $t13_14 = $t12_13.$get();
4780          $t14_15 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4781          $t15_16 = $t14_15.$get();
4782          $t16_17 = $t13_14.addr($t15_16);
4783          $t17_18 = $t16_17.$get();
4784          $t18_19 = ($t17_18 === 45);
4785          if ($t18_19) {
4786            $block = 1; break;
4787          }
4788          else {
4789            $t11_12 = false;
4790            $block = 2; break;
4791          }
4792          break;
4793        }
4794        case 4: {
4795          $t19_20 = BigInt.asIntN(64, $t33_34 * 10n);
4796          $t20_21 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4797          $t21_22 = $t20_21.$get();
4798          $t22_23 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4799          $t23_24 = $t22_23.$get();
4800          $t24_25 = $t21_22.addr($t23_24);
4801          $t25_26 = $t24_25.$get();
4802          $t26_27 = (($t25_26 - 48) & 0xFF);
4803          $t27_28 = BigInt($t26_27);
4804          $t28_29 = BigInt.asIntN(64, $t19_20 + $t27_28);
4805          $t29_30 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4806          $t30_31 = $t29_30.$get();
4807          $t31_32 = ($t30_31 + 1);
4808          $t32_33 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4809          $t32_33.$set($t31_32);
4810          $t33_34 = $t28_29;
4811          $block = 6; break;
4812          break;
4813        }
4814        case 5: {
4815          if ($t11_12) {
4816            $block = 9; break;
4817          }
4818          else {
4819            $t55_56 = $t33_34;
4820            $block = 10; break;
4821          }
4822          break;
4823        }
4824        case 6: {
4825          $t34_35 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4826          $t35_36 = $t34_35.$get();
4827          $t36_37 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4828          $t37_38 = $t36_37.$get();
4829          $t38_39 = $rt.builtin.len($t37_38);
4830          $t39_40 = ($t35_36 < $t38_39);
4831          if ($t39_40) {
4832            $block = 8; break;
4833          }
4834          else {
4835            $block = 5; break;
4836          }
4837          break;
4838        }
4839        case 7: {
4840          $t40_41 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4841          $t41_42 = $t40_41.$get();
4842          $t42_43 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4843          $t43_44 = $t42_43.$get();
4844          $t44_45 = $t41_42.addr($t43_44);
4845          $t45_46 = $t44_45.$get();
4846          $t46_47 = ($t45_46 <= 57);
4847          if ($t46_47) {
4848            $block = 4; break;
4849          }
4850          else {
4851            $block = 5; break;
4852          }
4853          break;
4854        }
4855        case 8: {
4856          $t47_48 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4857          $t48_49 = $t47_48.$get();
4858          $t49_50 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4859          $t50_51 = $t49_50.$get();
4860          $t51_52 = $t48_49.addr($t50_51);
4861          $t52_53 = $t51_52.$get();
4862          $t53_54 = ($t52_53 >= 48);
4863          if ($t53_54) {
4864            $block = 7; break;
4865          }
4866          else {
4867            $block = 5; break;
4868          }
4869          break;
4870        }
4871        case 9: {
4872          $t54_55 = -$t33_34;
4873          $t55_56 = $t54_55;
4874          $block = 10; break;
4875          break;
4876        }
4877        case 10: {
4878          return $t55_56;
4879          break;
4880        }
4881      }
4882    }
4883  }
4884  
4885  $rt.types.getType('./web/sw/.mw')?.methods?.set('num', mw$num);
4886  export function mw$raw(w) {
4887    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21;
4888    let $block = 0;
4889    while (true) {
4890      switch ($block) {
4891        case 0: {
4892          $t0_1 = mw$sep(w);
4893          $t1_2 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4894          $t2_3 = $t1_2.$get();
4895          $t3_4 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4896          $t4_5 = $t3_4.$get();
4897          $t5_6 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4898          $t6_7 = $t5_6.$get();
4899          $t7_8 = skipval($t4_5, $t6_7);
4900          $t8_9 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4901          $t8_9.$set($t7_8);
4902          $t9_10 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4903          $t10_11 = $t9_10.$get();
4904          $t11_12 = ($t10_11 < 0);
4905          if ($t11_12) {
4906            $block = 1; break;
4907          }
4908          else {
4909            $block = 2; break;
4910          }
4911          break;
4912        }
4913        case 1: {
4914          $t12_13 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4915          $t13_14 = $t12_13.$get();
4916          $t14_15 = $rt.builtin.len($t13_14);
4917          $t15_16 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4918          $t15_16.$set($t14_15);
4919          return '';
4920          break;
4921        }
4922        case 2: {
4923          $t16_17 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4924          $t17_18 = $t16_17.$get();
4925          $t18_19 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4926          $t19_20 = $t18_19.$get();
4927          $t20_21 = $rt.builtin.stringSlice($t17_18, $t2_3, $t19_20);
4928          return $t20_21;
4929          break;
4930        }
4931      }
4932    }
4933  }
4934  
4935  $rt.types.getType('./web/sw/.mw')?.methods?.set('raw', mw$raw);
4936  export function mw$sep(w) {
4937    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21;
4938    let $block = 0;
4939    while (true) {
4940      switch ($block) {
4941        case 0: {
4942          $block = 3; break;
4943          break;
4944        }
4945        case 1: {
4946          $t0_1 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4947          $t1_2 = $t0_1.$get();
4948          $t2_3 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4949          $t3_4 = $t2_3.$get();
4950          $t4_5 = $t1_2.addr($t3_4);
4951          $t5_6 = $t4_5.$get();
4952          $t6_7 = ($t5_6 !== 32);
4953          if ($t6_7) {
4954            $block = 8; break;
4955          }
4956          else {
4957            $block = 4; break;
4958          }
4959          break;
4960        }
4961        case 2: {
4962          return;
4963          break;
4964        }
4965        case 3: {
4966          $t7_8 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4967          $t8_9 = $t7_8.$get();
4968          $t9_10 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4969          $t10_11 = $t9_10.$get();
4970          $t11_12 = $rt.builtin.len($t10_11);
4971          $t12_13 = ($t8_9 < $t11_12);
4972          if ($t12_13) {
4973            $block = 1; break;
4974          }
4975          else {
4976            $block = 2; break;
4977          }
4978          break;
4979        }
4980        case 4: {
4981          $t13_14 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4982          $t14_15 = $t13_14.$get();
4983          $t15_16 = ($t14_15 + 1);
4984          $t16_17 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4985          $t16_17.$set($t15_16);
4986          $block = 3; break;
4987          break;
4988        }
4989        case 5: {
4990          $t17_18 = ($t5_6 !== 44);
4991          if ($t17_18) {
4992            $block = 2; break;
4993          }
4994          else {
4995            $block = 4; break;
4996          }
4997          break;
4998        }
4999        case 6: {
5000          $t18_19 = ($t5_6 !== 9);
5001          if ($t18_19) {
5002            $block = 5; break;
5003          }
5004          else {
5005            $block = 4; break;
5006          }
5007          break;
5008        }
5009        case 7: {
5010          $t19_20 = ($t5_6 !== 13);
5011          if ($t19_20) {
5012            $block = 6; break;
5013          }
5014          else {
5015            $block = 4; break;
5016          }
5017          break;
5018        }
5019        case 8: {
5020          $t20_21 = ($t5_6 !== 10);
5021          if ($t20_21) {
5022            $block = 7; break;
5023          }
5024          else {
5025            $block = 4; break;
5026          }
5027          break;
5028        }
5029      }
5030    }
5031  }
5032  
5033  $rt.types.getType('./web/sw/.mw')?.methods?.set('sep', mw$sep);
5034  export function mw$str(w) {
5035    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63;
5036    let $block = 0;
5037    while (true) {
5038      switch ($block) {
5039        case 0: {
5040          $t0_1 = mw$sep(w);
5041          $t1_2 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5042          $t2_3 = $t1_2.$get();
5043          $t3_4 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5044          $t4_5 = $t3_4.$get();
5045          $t5_6 = $rt.builtin.len($t4_5);
5046          $t6_7 = ($t2_3 >= $t5_6);
5047          if ($t6_7) {
5048            $block = 1; break;
5049          }
5050          else {
5051            $block = 3; break;
5052          }
5053          break;
5054        }
5055        case 1: {
5056          return '';
5057          break;
5058        }
5059        case 2: {
5060          $t7_8 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5061          $t8_9 = $t7_8.$get();
5062          $t9_10 = ($t8_9 + 1);
5063          $t10_11 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5064          $t10_11.$set($t9_10);
5065          $t11_12 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5066          $t12_13 = $t11_12.$get();
5067          $block = 6; break;
5068          break;
5069        }
5070        case 3: {
5071          $t13_14 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5072          $t14_15 = $t13_14.$get();
5073          $t15_16 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5074          $t16_17 = $t15_16.$get();
5075          $t17_18 = $t14_15.addr($t16_17);
5076          $t18_19 = $t17_18.$get();
5077          $t19_20 = ($t18_19 !== 34);
5078          if ($t19_20) {
5079            $block = 1; break;
5080          }
5081          else {
5082            $block = 2; break;
5083          }
5084          break;
5085        }
5086        case 4: {
5087          $t20_21 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5088          $t21_22 = $t20_21.$get();
5089          $t22_23 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5090          $t23_24 = $t22_23.$get();
5091          $t24_25 = $t21_22.addr($t23_24);
5092          $t25_26 = $t24_25.$get();
5093          $t26_27 = ($t25_26 === 92);
5094          if ($t26_27) {
5095            $block = 8; break;
5096          }
5097          else {
5098            $block = 9; break;
5099          }
5100          break;
5101        }
5102        case 5: {
5103          $t27_28 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5104          $t28_29 = $t27_28.$get();
5105          $t29_30 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5106          $t30_31 = $t29_30.$get();
5107          $t31_32 = $rt.builtin.len($t30_31);
5108          $t32_33 = ($t28_29 >= $t31_32);
5109          if ($t32_33) {
5110            $block = 10; break;
5111          }
5112          else {
5113            $block = 11; break;
5114          }
5115          break;
5116        }
5117        case 6: {
5118          $t33_34 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5119          $t34_35 = $t33_34.$get();
5120          $t35_36 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5121          $t36_37 = $t35_36.$get();
5122          $t37_38 = $rt.builtin.len($t36_37);
5123          $t38_39 = ($t34_35 < $t37_38);
5124          if ($t38_39) {
5125            $block = 7; break;
5126          }
5127          else {
5128            $block = 5; break;
5129          }
5130          break;
5131        }
5132        case 7: {
5133          $t39_40 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5134          $t40_41 = $t39_40.$get();
5135          $t41_42 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5136          $t42_43 = $t41_42.$get();
5137          $t43_44 = $t40_41.addr($t42_43);
5138          $t44_45 = $t43_44.$get();
5139          $t45_46 = ($t44_45 !== 34);
5140          if ($t45_46) {
5141            $block = 4; break;
5142          }
5143          else {
5144            $block = 5; break;
5145          }
5146          break;
5147        }
5148        case 8: {
5149          $t46_47 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5150          $t47_48 = $t46_47.$get();
5151          $t48_49 = ($t47_48 + 1);
5152          $t49_50 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5153          $t49_50.$set($t48_49);
5154          $block = 9; break;
5155          break;
5156        }
5157        case 9: {
5158          $t50_51 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5159          $t51_52 = $t50_51.$get();
5160          $t52_53 = ($t51_52 + 1);
5161          $t53_54 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5162          $t53_54.$set($t52_53);
5163          $block = 6; break;
5164          break;
5165        }
5166        case 10: {
5167          return '';
5168          break;
5169        }
5170        case 11: {
5171          $t54_55 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5172          $t55_56 = $t54_55.$get();
5173          $t56_57 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5174          $t57_58 = $t56_57.$get();
5175          $t58_59 = $rt.builtin.stringSlice($t55_56, $t12_13, $t57_58);
5176          $t59_60 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5177          $t60_61 = $t59_60.$get();
5178          $t61_62 = ($t60_61 + 1);
5179          $t62_63 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5180          $t62_63.$set($t61_62);
5181          return $t58_59;
5182          break;
5183        }
5184      }
5185    }
5186  }
5187  
5188  $rt.types.getType('./web/sw/.mw')?.methods?.set('str', mw$str);
5189  export function mw$strs(w) {
5190    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68, $t68_69, $t69_70, $t70_71, $t71_72, $t72_73, $t73_74, $t74_75, $t75_76, $t76_77, $t77_78, $t78_79, $t79_80, $t80_81, $t81_82, $t82_83, $t83_84, $t84_85, $t85_86, $t86_87, $t87_88, $t88_89, $t89_90, $t90_91, $t91_92, $t92_93, $t93_94, $t94_95, $t95_96, $t96_97;
5191    let $block = 0;
5192    while (true) {
5193      switch ($block) {
5194        case 0: {
5195          $t0_1 = mw$sep(w);
5196          $t1_2 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5197          $t2_3 = $t1_2.$get();
5198          $t3_4 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5199          $t4_5 = $t3_4.$get();
5200          $t5_6 = $rt.builtin.len($t4_5);
5201          $t6_7 = ($t2_3 >= $t5_6);
5202          if ($t6_7) {
5203            $block = 1; break;
5204          }
5205          else {
5206            $block = 3; break;
5207          }
5208          break;
5209        }
5210        case 1: {
5211          return null;
5212          break;
5213        }
5214        case 2: {
5215          $t7_8 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5216          $t8_9 = $t7_8.$get();
5217          $t9_10 = ($t8_9 + 1);
5218          $t10_11 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5219          $t10_11.$set($t9_10);
5220          $t18_19 = null;
5221          $block = 4; break;
5222          break;
5223        }
5224        case 3: {
5225          $t11_12 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5226          $t12_13 = $t11_12.$get();
5227          $t13_14 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5228          $t14_15 = $t13_14.$get();
5229          $t15_16 = $t12_13.addr($t14_15);
5230          $t16_17 = $t15_16.$get();
5231          $t17_18 = ($t16_17 !== 91);
5232          if ($t17_18) {
5233            $block = 1; break;
5234          }
5235          else {
5236            $block = 2; break;
5237          }
5238          break;
5239        }
5240        case 4: {
5241          $t19_20 = mw$sep(w);
5242          $t20_21 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5243          $t21_22 = $t20_21.$get();
5244          $t22_23 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5245          $t23_24 = $t22_23.$get();
5246          $t24_25 = $rt.builtin.len($t23_24);
5247          $t25_26 = ($t21_22 >= $t24_25);
5248          if ($t25_26) {
5249            $block = 5; break;
5250          }
5251          else {
5252            $block = 6; break;
5253          }
5254          break;
5255        }
5256        case 5: {
5257          return $t18_19;
5258          break;
5259        }
5260        case 6: {
5261          $t26_27 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5262          $t27_28 = $t26_27.$get();
5263          $t28_29 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5264          $t29_30 = $t28_29.$get();
5265          $t30_31 = $t27_28.addr($t29_30);
5266          $t31_32 = $t30_31.$get();
5267          $t32_33 = ($t31_32 === 93);
5268          if ($t32_33) {
5269            $block = 7; break;
5270          }
5271          else {
5272            $block = 8; break;
5273          }
5274          break;
5275        }
5276        case 7: {
5277          $t33_34 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5278          $t34_35 = $t33_34.$get();
5279          $t35_36 = ($t34_35 + 1);
5280          $t36_37 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5281          $t36_37.$set($t35_36);
5282          return $t18_19;
5283          break;
5284        }
5285        case 8: {
5286          $t37_38 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5287          $t38_39 = $t37_38.$get();
5288          $t39_40 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5289          $t40_41 = $t39_40.$get();
5290          $t41_42 = $t38_39.addr($t40_41);
5291          $t42_43 = $t41_42.$get();
5292          $t43_44 = ($t42_43 !== 34);
5293          if ($t43_44) {
5294            $block = 9; break;
5295          }
5296          else {
5297            $block = 10; break;
5298          }
5299          break;
5300        }
5301        case 9: {
5302          return $t18_19;
5303          break;
5304        }
5305        case 10: {
5306          $t44_45 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5307          $t45_46 = $t44_45.$get();
5308          $t46_47 = ($t45_46 + 1);
5309          $t47_48 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5310          $t47_48.$set($t46_47);
5311          $t48_49 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5312          $t49_50 = $t48_49.$get();
5313          $block = 13; break;
5314          break;
5315        }
5316        case 11: {
5317          $t50_51 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5318          $t51_52 = $t50_51.$get();
5319          $t52_53 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5320          $t53_54 = $t52_53.$get();
5321          $t54_55 = $t51_52.addr($t53_54);
5322          $t55_56 = $t54_55.$get();
5323          $t56_57 = ($t55_56 === 92);
5324          if ($t56_57) {
5325            $block = 15; break;
5326          }
5327          else {
5328            $block = 16; break;
5329          }
5330          break;
5331        }
5332        case 12: {
5333          $t57_58 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5334          $t58_59 = $t57_58.$get();
5335          $t59_60 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5336          $t60_61 = $t59_60.$get();
5337          $t61_62 = $rt.builtin.len($t60_61);
5338          $t62_63 = ($t58_59 < $t61_62);
5339          if ($t62_63) {
5340            $block = 17; break;
5341          }
5342          else {
5343            $t18_19 = $t18_19;
5344            $block = 4; break;
5345          }
5346          break;
5347        }
5348        case 13: {
5349          $t63_64 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5350          $t64_65 = $t63_64.$get();
5351          $t65_66 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5352          $t66_67 = $t65_66.$get();
5353          $t67_68 = $rt.builtin.len($t66_67);
5354          $t68_69 = ($t64_65 < $t67_68);
5355          if ($t68_69) {
5356            $block = 14; break;
5357          }
5358          else {
5359            $block = 12; break;
5360          }
5361          break;
5362        }
5363        case 14: {
5364          $t69_70 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5365          $t70_71 = $t69_70.$get();
5366          $t71_72 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5367          $t72_73 = $t71_72.$get();
5368          $t73_74 = $t70_71.addr($t72_73);
5369          $t74_75 = $t73_74.$get();
5370          $t75_76 = ($t74_75 !== 34);
5371          if ($t75_76) {
5372            $block = 11; break;
5373          }
5374          else {
5375            $block = 12; break;
5376          }
5377          break;
5378        }
5379        case 15: {
5380          $t76_77 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5381          $t77_78 = $t76_77.$get();
5382          $t78_79 = ($t77_78 + 1);
5383          $t79_80 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5384          $t79_80.$set($t78_79);
5385          $block = 16; break;
5386          break;
5387        }
5388        case 16: {
5389          $t80_81 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5390          $t81_82 = $t80_81.$get();
5391          $t82_83 = ($t81_82 + 1);
5392          $t83_84 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5393          $t83_84.$set($t82_83);
5394          $block = 13; break;
5395          break;
5396        }
5397        case 17: {
5398          $t84_85 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5399          $t85_86 = $t84_85.$get();
5400          $t86_87 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5401          $t87_88 = $t86_87.$get();
5402          $t88_89 = $rt.builtin.stringSlice($t85_86, $t49_50, $t87_88);
5403          $t89_90 = { $value: $rt.builtin.makeSlice(1, 1, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
5404          $t90_91 = $t89_90.$get().addr(0);
5405          $t90_91.$set($t88_89);
5406          $t91_92 = $rt.builtin.sliceSlice($t89_90.$get(), undefined, undefined, undefined);
5407          $t92_93 = $rt.builtin.appendSlice($t18_19, $t91_92);
5408          $t93_94 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5409          $t94_95 = $t93_94.$get();
5410          $t95_96 = ($t94_95 + 1);
5411          $t96_97 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5412          $t96_97.$set($t95_96);
5413          $t18_19 = $t92_93;
5414          $block = 4; break;
5415          break;
5416        }
5417      }
5418    }
5419  }
5420  
5421  $rt.types.getType('./web/sw/.mw')?.methods?.set('strs', mw$strs);
5422