From f7f1186a375ac72d79b8d84233db8bec3a0c87dd Mon Sep 17 00:00:00 2001 From: Eren Ertugrul Date: Mon, 25 Feb 2019 15:37:38 +0300 Subject: [PATCH] rex_firebase c3runtime close #4 --- .../plugins/rex_firebase_pack/README.md | 5 + .../rex_firebase_pack/firebase_cors_error.txt | 1 + .../rex_firebase/dist/rex_firebase.c3addon | Bin 0 -> 24756 bytes .../plugins/rex_firebase/source/aces.json | 663 +++++++ .../plugins/rex_firebase/source/addon.json | 26 + .../rex_firebase/source/c2runtime/runtime.js | 622 ++++++ .../rex_firebase/source/c3runtime/actions.js | 209 ++ .../source/c3runtime/conditions.js | 73 + .../source/c3runtime/expressions.js | 81 + .../rex_firebase/source/c3runtime/instance.js | 166 ++ .../rex_firebase/source/c3runtime/plugin.js | 81 + .../rex_firebase/source/c3runtime/type.js | 20 + .../plugins/rex_firebase/source/icon.png | Bin 0 -> 67646 bytes .../plugins/rex_firebase/source/instance.js | 26 + .../rex_firebase/source/lang/en-US.json | 449 +++++ .../plugins/rex_firebase/source/plugin.js | 43 + .../plugins/rex_firebase/source/type.js | 13 + .../dist/rex_firebase_api.c3addon | Bin 0 -> 78451 bytes .../plugins/rex_firebase_api/source/aces.json | 3 + .../rex_firebase_api/source/addon.json | 27 + .../source/c2runtime/runtime.js | 680 +++++++ .../source/c3runtime/actions.js | 8 + .../source/c3runtime/conditions.js | 8 + .../source/c3runtime/expressions.js | 8 + .../source/c3runtime/instance.js | 53 + .../source/c3runtime/plugin.js | 595 ++++++ .../rex_firebase_api/source/c3runtime/type.js | 20 + .../rex_firebase_api/source/firebase.js | 279 +++ .../plugins/rex_firebase_api/source/icon.png | Bin 0 -> 67646 bytes .../rex_firebase_api/source/instance.js | 26 + .../rex_firebase_api/source/lang/en-US.json | 31 + .../plugins/rex_firebase_api/source/plugin.js | 45 + .../plugins/rex_firebase_api/source/type.js | 13 + .../dist/rex_firebase_apiv3.c3addon | Bin 0 -> 150284 bytes .../rex_firebase_apiv3/source/aces.json | 22 + .../rex_firebase_apiv3/source/addon.json | 33 + .../source/c2runtime/runtime.js | 704 +++++++ .../source/c3runtime/actions.js | 11 + .../source/c3runtime/conditions.js | 8 + .../source/c3runtime/expressions.js | 8 + .../source/c3runtime/instance.js | 68 + .../source/c3runtime/plugin.js | 623 ++++++ .../source/c3runtime/type.js | 20 + .../rex_firebase_apiv3/source/firebase.js | 36 + .../rex_firebase_apiv3/source/icon.png | Bin 0 -> 67646 bytes .../rex_firebase_apiv3/source/instance.js | 26 + .../rex_firebase_apiv3/source/lang/en-US.json | 59 + .../rex_firebase_apiv3/source/plugin.js | 49 + .../plugins/rex_firebase_apiv3/source/type.js | 13 + .../dist/rex_firebase_authentication.c3addon | Bin 0 -> 22846 bytes .../source/aces.json | 588 ++++++ .../source/addon.json | 26 + .../source/c2runtime/runtime.js | 1076 ++++++++++ .../source/c3runtime/actions.js | 439 ++++ .../source/c3runtime/conditions.js | 142 ++ .../source/c3runtime/expressions.js | 165 ++ .../source/c3runtime/instance.js | 137 ++ .../source/c3runtime/plugin.js | 153 ++ .../source/c3runtime/type.js | 20 + .../source/icon.png | Bin 0 -> 9662 bytes .../source/instance.js | 26 + .../source/lang/en-US.json | 366 ++++ .../source/plugin.js | 41 + .../source/type.js | 13 + .../dist/rex_firebase_counter.c3addon | Bin 0 -> 15357 bytes .../rex_firebase_counter/source/aces.json | 222 +++ .../rex_firebase_counter/source/addon.json | 26 + .../source/c2runtime/runtime.js | 429 ++++ .../source/c3runtime/actions.js | 115 ++ .../source/c3runtime/conditions.js | 43 + .../source/c3runtime/expressions.js | 26 + .../source/c3runtime/instance.js | 196 ++ .../source/c3runtime/plugin.js | 77 + .../source/c3runtime/type.js | 20 + .../rex_firebase_counter/source/icon.png | Bin 0 -> 4286 bytes .../rex_firebase_counter/source/instance.js | 30 + .../source/lang/en-US.json | 173 ++ .../rex_firebase_counter/source/plugin.js | 44 + .../rex_firebase_counter/source/type.js | 13 + .../dist/rex_firebase_curTime.c3addon | Bin 0 -> 19928 bytes .../rex_firebase_curTime/source/aces.json | 96 + .../rex_firebase_curTime/source/addon.json | 26 + .../source/c2runtime/runtime.js | 226 +++ .../source/c3runtime/actions.js | 25 + .../source/c3runtime/conditions.js | 14 + .../source/c3runtime/expressions.js | 14 + .../source/c3runtime/instance.js | 115 ++ .../source/c3runtime/plugin.js | 44 + .../source/c3runtime/type.js | 20 + .../rex_firebase_curTime/source/icon.png | Bin 0 -> 67646 bytes .../rex_firebase_curTime/source/instance.js | 26 + .../source/lang/en-US.json | 80 + .../rex_firebase_curTime/source/plugin.js | 42 + .../rex_firebase_curTime/source/type.js | 13 + .../dist/rex_firebase_geofire.c3addon | Bin 0 -> 29866 bytes .../rex_firebase_geofire/source/aces.json | 346 ++++ .../rex_firebase_geofire/source/addon.json | 27 + .../source/c2runtime/runtime.js | 411 ++++ .../source/c3runtime/actions.js | 50 + .../source/c3runtime/conditions.js | 82 + .../source/c3runtime/expressions.js | 86 + .../source/c3runtime/instance.js | 182 ++ .../source/c3runtime/plugin.js | 16 + .../source/c3runtime/type.js | 20 + .../rex_firebase_geofire/source/geofire.js | 1221 ++++++++++++ .../rex_firebase_geofire/source/icon.png | Bin 0 -> 38078 bytes .../rex_firebase_geofire/source/instance.js | 26 + .../source/lang/en-US.json | 217 ++ .../rex_firebase_geofire/source/plugin.js | 45 + .../rex_firebase_geofire/source/type.js | 13 + .../dist/rex_firebase_itembook.c3addon | Bin 0 -> 29843 bytes .../rex_firebase_itembook/source/aces.json | 692 +++++++ .../rex_firebase_itembook/source/addon.json | 26 + .../source/c2runtime/runtime.js | 877 ++++++++ .../source/c3runtime/actions.js | 355 ++++ .../source/c3runtime/conditions.js | 159 ++ .../source/c3runtime/expressions.js | 161 ++ .../source/c3runtime/instance.js | 162 ++ .../source/c3runtime/plugin.js | 48 + .../source/c3runtime/type.js | 20 + .../rex_firebase_itembook/source/icon.png | Bin 0 -> 67646 bytes .../rex_firebase_itembook/source/instance.js | 26 + .../source/lang/en-US.json | 463 +++++ .../rex_firebase_itembook/source/plugin.js | 41 + .../rex_firebase_itembook/source/type.js | 13 + .../dist/rex_firebase_itemfilter.c3addon | Bin 0 -> 21063 bytes .../rex_firebase_itemfilter/source/aces.json | 376 ++++ .../rex_firebase_itemfilter/source/addon.json | 32 + .../source/c2runtime/runtime.js | 876 ++++++++ .../source/c3runtime/actions.js | 195 ++ .../source/c3runtime/conditions.js | 60 + .../source/c3runtime/expressions.js | 87 + .../source/c3runtime/instance.js | 237 +++ .../source/c3runtime/plugin.js | 287 +++ .../source/c3runtime/type.js | 20 + .../rex_firebase_itemfilter/source/icon.png | Bin 0 -> 9662 bytes .../source/instance.js | 26 + .../source/lang/en-US.json | 264 +++ .../rex_firebase_itemfilter/source/plugin.js | 42 + .../rex_firebase_itemfilter/source/type.js | 13 + .../dist/rex_firebase_itemmonitor.c3addon | Bin 0 -> 18364 bytes .../rex_firebase_itemmonitor/source/aces.json | 339 ++++ .../source/addon.json | 26 + .../source/c2runtime/runtime.js | 670 +++++++ .../source/c3runtime/actions.js | 41 + .../source/c3runtime/conditions.js | 96 + .../source/c3runtime/expressions.js | 131 ++ .../source/c3runtime/instance.js | 272 +++ .../source/c3runtime/plugin.js | 107 + .../source/c3runtime/type.js | 20 + .../rex_firebase_itemmonitor/source/icon.png | Bin 0 -> 16958 bytes .../source/instance.js | 26 + .../source/lang/en-US.json | 191 ++ .../rex_firebase_itemmonitor/source/plugin.js | 42 + .../rex_firebase_itemmonitor/source/type.js | 13 + .../dist/rex_firebase_itemtable.c3addon | Bin 0 -> 21235 bytes .../rex_firebase_itemtable/source/aces.json | 429 ++++ .../rex_firebase_itemtable/source/addon.json | 26 + .../source/c2runtime/runtime.js | 665 +++++++ .../source/c3runtime/actions.js | 176 ++ .../source/c3runtime/conditions.js | 83 + .../source/c3runtime/expressions.js | 85 + .../source/c3runtime/instance.js | 181 ++ .../source/c3runtime/plugin.js | 136 ++ .../source/c3runtime/type.js | 20 + .../rex_firebase_itemtable/source/icon.png | Bin 0 -> 9662 bytes .../rex_firebase_itemtable/source/instance.js | 26 + .../source/lang/en-US.json | 284 +++ .../rex_firebase_itemtable/source/plugin.js | 42 + .../rex_firebase_itemtable/source/type.js | 13 + .../dist/rex_firebase_leaderboard.c3addon | Bin 0 -> 32532 bytes .../rex_firebase_leaderboard/source/aces.json | 372 ++++ .../source/addon.json | 26 + .../source/c2runtime/runtime.js | 492 +++++ .../source/c3runtime/actions.js | 116 ++ .../source/c3runtime/conditions.js | 28 + .../source/c3runtime/expressions.js | 124 ++ .../source/c3runtime/instance.js | 152 ++ .../source/c3runtime/plugin.js | 71 + .../source/c3runtime/type.js | 20 + .../rex_firebase_leaderboard/source/icon.png | Bin 0 -> 67646 bytes .../source/instance.js | 26 + .../source/lang/en-US.json | 245 +++ .../rex_firebase_leaderboard/source/plugin.js | 44 + .../rex_firebase_leaderboard/source/type.js | 13 + .../dist/rex_firebase_message.c3addon | Bin 0 -> 62367 bytes .../rex_firebase_message/source/aces.json | 109 + .../rex_firebase_message/source/addon.json | 27 + .../source/c2runtime/runtime.js | 305 +++ .../source/c3runtime/actions.js | 26 + .../source/c3runtime/conditions.js | 11 + .../source/c3runtime/expressions.js | 61 + .../source/c3runtime/instance.js | 162 ++ .../source/c3runtime/plugin.js | 16 + .../source/c3runtime/type.js | 40 + .../rex_firebase_message/source/firebase.js | 267 +++ .../rex_firebase_message/source/icon.png | Bin 0 -> 9662 bytes .../rex_firebase_message/source/instance.js | 26 + .../source/lang/en-US.json | 99 + .../rex_firebase_message/source/plugin.js | 47 + .../rex_firebase_message/source/type.js | 13 + .../dist/rex_firebase_query.c3addon | Bin 0 -> 18722 bytes .../rex_firebase_query/source/aces.json | 142 ++ .../rex_firebase_query/source/addon.json | 26 + .../source/c2runtime/runtime.js | 221 +++ .../source/c3runtime/actions.js | 96 + .../source/c3runtime/conditions.js | 8 + .../source/c3runtime/expressions.js | 8 + .../source/c3runtime/instance.js | 69 + .../source/c3runtime/plugin.js | 49 + .../source/c3runtime/type.js | 20 + .../rex_firebase_query/source/icon.png | Bin 0 -> 67646 bytes .../rex_firebase_query/source/instance.js | 26 + .../rex_firebase_query/source/lang/en-US.json | 120 ++ .../rex_firebase_query/source/plugin.js | 41 + .../plugins/rex_firebase_query/source/type.js | 13 + .../dist/rex_firebase_rooms.c3addon | Bin 0 -> 42390 bytes .../rex_firebase_rooms/source/aces.json | 721 +++++++ .../rex_firebase_rooms/source/addon.json | 26 + .../source/c2runtime/runtime.js | 1761 +++++++++++++++++ .../source/c3runtime/actions.js | 238 +++ .../source/c3runtime/conditions.js | 150 ++ .../source/c3runtime/expressions.js | 213 ++ .../source/c3runtime/instance.js | 146 ++ .../source/c3runtime/plugin.js | 964 +++++++++ .../source/c3runtime/type.js | 20 + .../rex_firebase_rooms/source/icon.png | Bin 0 -> 164814 bytes .../rex_firebase_rooms/source/instance.js | 26 + .../rex_firebase_rooms/source/lang/en-US.json | 435 ++++ .../rex_firebase_rooms/source/plugin.js | 43 + .../plugins/rex_firebase_rooms/source/type.js | 13 + .../dist/rex_firebase_savedata.c3addon | Bin 0 -> 20722 bytes .../rex_firebase_savedata/source/aces.json | 433 ++++ .../rex_firebase_savedata/source/addon.json | 26 + .../source/c2runtime/runtime.js | 673 +++++++ .../source/c3runtime/actions.js | 140 ++ .../source/c3runtime/conditions.js | 176 ++ .../source/c3runtime/expressions.js | 76 + .../source/c3runtime/instance.js | 97 + .../source/c3runtime/plugin.js | 109 + .../source/c3runtime/type.js | 20 + .../rex_firebase_savedata/source/icon.png | Bin 0 -> 9662 bytes .../rex_firebase_savedata/source/instance.js | 26 + .../source/lang/en-US.json | 262 +++ .../rex_firebase_savedata/source/plugin.js | 42 + .../rex_firebase_savedata/source/type.js | 13 + .../dist/rex_firebase_simplemessage.c3addon | Bin 0 -> 17951 bytes .../source/aces.json | 119 ++ .../source/addon.json | 26 + .../source/c2runtime/runtime.js | 490 +++++ .../source/c3runtime/actions.js | 56 + .../source/c3runtime/conditions.js | 11 + .../source/c3runtime/expressions.js | 40 + .../source/c3runtime/instance.js | 113 ++ .../source/c3runtime/plugin.js | 256 +++ .../source/c3runtime/type.js | 20 + .../source/icon.png | Bin 0 -> 67646 bytes .../source/instance.js | 26 + .../source/lang/en-US.json | 116 ++ .../source/plugin.js | 44 + .../rex_firebase_simplemessage/source/type.js | 13 + .../dist/rex_firebase_singleLogin.c3addon | Bin 0 -> 13805 bytes .../rex_firebase_singleLogin/source/aces.json | 144 ++ .../source/addon.json | 26 + .../source/c2runtime/runtime.js | 334 ++++ .../source/c3runtime/actions.js | 35 + .../source/c3runtime/conditions.js | 34 + .../source/c3runtime/expressions.js | 28 + .../source/c3runtime/instance.js | 183 ++ .../source/c3runtime/plugin.js | 54 + .../source/c3runtime/type.js | 20 + .../rex_firebase_singleLogin/source/icon.png | Bin 0 -> 4286 bytes .../source/instance.js | 26 + .../source/lang/en-US.json | 113 ++ .../rex_firebase_singleLogin/source/plugin.js | 43 + .../rex_firebase_singleLogin/source/type.js | 13 + .../dist/rex_firebase_storage.c3addon | Bin 0 -> 23167 bytes .../firebase_cors_error.txt | 1 + .../rex_firebase_storage/source/aces.json | 374 ++++ .../rex_firebase_storage/source/addon.json | 32 + .../source/c2runtime/runtime.js | 685 +++++++ .../source/c3runtime/actions.js | 256 +++ .../source/c3runtime/conditions.js | 91 + .../source/c3runtime/expressions.js | 59 + .../source/c3runtime/instance.js | 137 ++ .../source/c3runtime/plugin.js | 157 ++ .../source/c3runtime/type.js | 20 + .../rex_firebase_storage/source/cors.json | 7 + .../rex_firebase_storage/source/icon.png | Bin 0 -> 67646 bytes .../rex_firebase_storage/source/instance.js | 26 + .../source/lang/en-US.json | 273 +++ .../rex_firebase_storage/source/plugin.js | 41 + .../rex_firebase_storage/source/type.js | 13 + .../dist/rex_firebase_syncqueue.c3addon | Bin 0 -> 55074 bytes .../rex_firebase_syncqueue/source/aces.json | 91 + .../rex_firebase_syncqueue/source/addon.json | 27 + .../source/c2runtime/runtime.js | 232 +++ .../source/c3runtime/actions.js | 35 + .../source/c3runtime/conditions.js | 17 + .../source/c3runtime/expressions.js | 11 + .../source/c3runtime/instance.js | 81 + .../source/c3runtime/plugin.js | 50 + .../source/c3runtime/type.js | 40 + .../rex_firebase_syncqueue/source/firebase.js | 246 +++ .../rex_firebase_syncqueue/source/icon.png | Bin 0 -> 4286 bytes .../rex_firebase_syncqueue/source/instance.js | 26 + .../source/lang/en-US.json | 74 + .../rex_firebase_syncqueue/source/plugin.js | 46 + .../rex_firebase_syncqueue/source/type.js | 13 + .../dist/rex_firebase_timer.c3addon | Bin 0 -> 27484 bytes .../rex_firebase_timer/source/aces.json | 258 +++ .../rex_firebase_timer/source/addon.json | 26 + .../source/c2runtime/runtime.js | 387 ++++ .../source/c3runtime/actions.js | 138 ++ .../source/c3runtime/conditions.js | 45 + .../source/c3runtime/expressions.js | 60 + .../source/c3runtime/instance.js | 67 + .../source/c3runtime/plugin.js | 72 + .../source/c3runtime/type.js | 20 + .../rex_firebase_timer/source/icon.png | Bin 0 -> 67646 bytes .../rex_firebase_timer/source/instance.js | 26 + .../rex_firebase_timer/source/lang/en-US.json | 177 ++ .../rex_firebase_timer/source/plugin.js | 42 + .../plugins/rex_firebase_timer/source/type.js | 13 + .../dist/rex_firebase_token.c3addon | Bin 0 -> 18848 bytes .../rex_firebase_token/source/aces.json | 86 + .../rex_firebase_token/source/addon.json | 33 + .../source/c2runtime/runtime.js | 359 ++++ .../source/c3runtime/actions.js | 22 + .../source/c3runtime/conditions.js | 26 + .../source/c3runtime/expressions.js | 11 + .../source/c3runtime/instance.js | 248 +++ .../source/c3runtime/plugin.js | 51 + .../source/c3runtime/type.js | 20 + .../rex_firebase_token/source/icon.png | Bin 0 -> 67646 bytes .../rex_firebase_token/source/instance.js | 26 + .../rex_firebase_token/source/lang/en-US.json | 80 + .../rex_firebase_token/source/plugin.js | 42 + .../plugins/rex_firebase_token/source/type.js | 13 + .../dist/rex_firebase_transaction.c3addon | Bin 0 -> 19356 bytes .../rex_firebase_transaction/source/aces.json | 162 ++ .../source/addon.json | 26 + .../source/c2runtime/runtime.js | 374 ++++ .../source/c3runtime/actions.js | 107 + .../source/c3runtime/conditions.js | 36 + .../source/c3runtime/expressions.js | 18 + .../source/c3runtime/instance.js | 66 + .../source/c3runtime/plugin.js | 146 ++ .../source/c3runtime/type.js | 20 + .../rex_firebase_transaction/source/icon.png | Bin 0 -> 370070 bytes .../source/instance.js | 26 + .../source/lang/en-US.json | 128 ++ .../rex_firebase_transaction/source/plugin.js | 40 + .../rex_firebase_transaction/source/type.js | 13 + .../dist/rex_firebase_userid2id.c3addon | Bin 0 -> 23103 bytes .../rex_firebase_userid2id/source/aces.json | 164 ++ .../rex_firebase_userid2id/source/addon.json | 26 + .../source/c2runtime/runtime.js | 432 ++++ .../source/c3runtime/actions.js | 165 ++ .../source/c3runtime/conditions.js | 36 + .../source/c3runtime/expressions.js | 32 + .../source/c3runtime/instance.js | 125 ++ .../source/c3runtime/plugin.js | 80 + .../source/c3runtime/type.js | 20 + .../rex_firebase_userid2id/source/icon.png | Bin 0 -> 67646 bytes .../rex_firebase_userid2id/source/instance.js | 26 + .../source/lang/en-US.json | 125 ++ .../rex_firebase_userid2id/source/plugin.js | 42 + .../rex_firebase_userid2id/source/type.js | 13 + .../dist/rex_firebase_userlist.c3addon | Bin 0 -> 63146 bytes .../rex_firebase_userlist/source/aces.json | 193 ++ .../rex_firebase_userlist/source/addon.json | 27 + .../source/c2runtime/runtime.js | 359 ++++ .../source/c3runtime/actions.js | 131 ++ .../source/c3runtime/conditions.js | 52 + .../source/c3runtime/expressions.js | 8 + .../source/c3runtime/instance.js | 112 ++ .../source/c3runtime/plugin.js | 21 + .../source/c3runtime/type.js | 41 + .../rex_firebase_userlist/source/firebase.js | 246 +++ .../rex_firebase_userlist/source/icon.png | Bin 0 -> 67646 bytes .../rex_firebase_userlist/source/instance.js | 26 + .../source/lang/en-US.json | 152 ++ .../rex_firebase_userlist/source/plugin.js | 45 + .../rex_firebase_userlist/source/type.js | 13 + .../Simple message/Simple chat v3.capx | Bin 0 -> 176327 bytes .../UserID2ID/UserID2ID v3 - manual ID.capx | Bin 0 -> 175641 bytes .../UserID2ID/UserID2ID v3 - random ID.capx | Bin 0 -> 175790 bytes .../authentication/auth - anonymous.capx | Bin 0 -> 175611 bytes .../auth - link to email@password.capx | Bin 0 -> 175666 bytes .../auth - link to facebook.capx | Bin 0 -> 175858 bytes .../auth -facebook - access token.capx | Bin 0 -> 175818 bytes .../auth -facebook or google.capx | Bin 0 -> 177447 bytes .../authentication/auth -facebook.capx | Bin 0 -> 175551 bytes .../authentication/email-password v3.capx | Bin 0 -> 181959 bytes .../firebase- auth - logout.capx | Bin 0 -> 175651 bytes .../send password reset email.capx | Bin 0 -> 176180 bytes .../send verification email.capx | Bin 0 -> 176174 bytes .../sample_capx/counter/counter v3.capx | Bin 0 -> 176007 bytes .../counter/custom counter v3.capx | Bin 0 -> 176036 bytes .../curTime/current timestamp.capx | Bin 0 -> 175907 bytes .../firebase v3 - message append.capx | Bin 0 -> 176370 bytes .../firebase v3 - my connection state.capx | Bin 0 -> 175493 bytes .../firebase/firebase v3 - online.capx | Bin 0 -> 176112 bytes .../firebase v3 - server time offset.capx | Bin 0 -> 175662 bytes .../firebase/firebase v3 - set value.capx | Bin 0 -> 175999 bytes .../sample_capx/geofire/geofire - basic.capx | Bin 0 -> 176483 bytes .../item book - pick random item.capx | Bin 0 -> 177125 bytes ... book - prepare items in tree or list.capx | Bin 0 -> 176295 bytes .../item book/item book - presence.capx | Bin 0 -> 176285 bytes .../item book/item book - requests queue.capx | Bin 0 -> 176371 bytes .../item book/item book - set JSON.capx | Bin 0 -> 176071 bytes .../item book - table to taffydb.capx | Bin 0 -> 176119 bytes ...book - update, load all, load by cond.capx | Bin 0 -> 176369 bytes .../item filter v3 - condition.capx | Bin 0 -> 176040 bytes .../item monitor/monitor all items.capx | Bin 0 -> 176069 bytes .../item monitor/monitor query items.capx | Bin 0 -> 176160 bytes .../sample_capx/item table/item table v3.capx | Bin 0 -> 176126 bytes ...mtable v3 - foreach item, foreach key.capx | Bin 0 -> 175866 bytes .../sample_capx/item table/presence v3.capx | Bin 0 -> 176310 bytes .../sample_capx/leaderboard/add to score.capx | Bin 0 -> 175660 bytes .../leaderboard/auto update v3.capx | Bin 0 -> 176549 bytes .../leaderboard/manual update v3.capx | Bin 0 -> 176664 bytes .../leaderboard/post if greater.capx | Bin 0 -> 175645 bytes .../sample_capx/leaderboard/post-get.capx | Bin 0 -> 175698 bytes .../leaderboard/test - auto update.capx | Bin 0 -> 176052 bytes .../sample_capx/query/orderByValue v3.capx | Bin 0 -> 175887 bytes .../sample_capx/rooms/rooms - basic.capx | Bin 0 -> 183356 bytes .../sample_capx/rooms/rooms - random.capx | Bin 0 -> 185617 bytes .../save slot/save user variables.capx | Bin 0 -> 176154 bytes .../save slot/saveslot v3 - auth.capx | Bin 0 -> 176192 bytes .../sample_capx/save slot/saveslot v3.capx | Bin 0 -> 176472 bytes .../single login/single login v3.capx | Bin 0 -> 175892 bytes .../storage/firebase_cors_error.txt | 1 + .../storage v3 - dataURI + metadata.capx | Bin 0 -> 177813 bytes .../storage/storage v3 - dataURI.capx | Bin 0 -> 177671 bytes .../storage/storage v3 - file chooser.capx | Bin 0 -> 176558 bytes .../storage/storage v3 - gif (objectURL).capx | Bin 0 -> 177100 bytes .../storage/storage v3 - sprite.capx | Bin 0 -> 177559 bytes .../timer/firebase timer - count down.capx | Bin 0 -> 176282 bytes .../sample_capx/timer/firebase timer v3.capx | Bin 0 -> 175979 bytes .../sample_capx/timer/off game time v3.capx | Bin 0 -> 175657 bytes .../sample_capx/timer/off game time.capx | Bin 0 -> 175603 bytes .../sample_capx/token/token v3 - master.capx | Bin 0 -> 176944 bytes 444 files changed, 46134 insertions(+) create mode 100644 ported_plugins/plugins/rex_firebase_pack/README.md create mode 100644 ported_plugins/plugins/rex_firebase_pack/firebase_cors_error.txt create mode 100644 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/dist/rex_firebase.c3addon create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/aces.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/addon.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/c2runtime/runtime.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/c3runtime/actions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/c3runtime/conditions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/c3runtime/expressions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/c3runtime/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/c3runtime/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/c3runtime/type.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/icon.png create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/lang/en-US.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/type.js create mode 100644 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/dist/rex_firebase_api.c3addon create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/aces.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/addon.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/c2runtime/runtime.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/c3runtime/actions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/c3runtime/conditions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/c3runtime/expressions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/c3runtime/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/c3runtime/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/c3runtime/type.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/firebase.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/icon.png create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/lang/en-US.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/type.js create mode 100644 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/dist/rex_firebase_apiv3.c3addon create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/aces.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/addon.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/c2runtime/runtime.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/c3runtime/actions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/c3runtime/conditions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/c3runtime/expressions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/c3runtime/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/c3runtime/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/c3runtime/type.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/firebase.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/icon.png create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/lang/en-US.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/type.js create mode 100644 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/dist/rex_firebase_authentication.c3addon create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/aces.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/addon.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/c2runtime/runtime.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/c3runtime/actions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/c3runtime/conditions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/c3runtime/expressions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/c3runtime/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/c3runtime/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/c3runtime/type.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/icon.png create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/lang/en-US.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/type.js create mode 100644 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/dist/rex_firebase_counter.c3addon create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/aces.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/addon.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/c2runtime/runtime.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/c3runtime/actions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/c3runtime/conditions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/c3runtime/expressions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/c3runtime/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/c3runtime/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/c3runtime/type.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/icon.png create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/lang/en-US.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/type.js create mode 100644 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/dist/rex_firebase_curTime.c3addon create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/aces.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/addon.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/c2runtime/runtime.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/c3runtime/actions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/c3runtime/conditions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/c3runtime/expressions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/c3runtime/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/c3runtime/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/c3runtime/type.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/icon.png create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/lang/en-US.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/type.js create mode 100644 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_geofire/dist/rex_firebase_geofire.c3addon create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_geofire/source/aces.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_geofire/source/addon.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_geofire/source/c2runtime/runtime.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_geofire/source/c3runtime/actions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_geofire/source/c3runtime/conditions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_geofire/source/c3runtime/expressions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_geofire/source/c3runtime/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_geofire/source/c3runtime/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_geofire/source/c3runtime/type.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_geofire/source/geofire.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_geofire/source/icon.png create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_geofire/source/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_geofire/source/lang/en-US.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_geofire/source/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_geofire/source/type.js create mode 100644 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itembook/dist/rex_firebase_itembook.c3addon create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itembook/source/aces.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itembook/source/addon.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itembook/source/c2runtime/runtime.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itembook/source/c3runtime/actions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itembook/source/c3runtime/conditions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itembook/source/c3runtime/expressions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itembook/source/c3runtime/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itembook/source/c3runtime/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itembook/source/c3runtime/type.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itembook/source/icon.png create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itembook/source/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itembook/source/lang/en-US.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itembook/source/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itembook/source/type.js create mode 100644 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemfilter/dist/rex_firebase_itemfilter.c3addon create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemfilter/source/aces.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemfilter/source/addon.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemfilter/source/c2runtime/runtime.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemfilter/source/c3runtime/actions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemfilter/source/c3runtime/conditions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemfilter/source/c3runtime/expressions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemfilter/source/c3runtime/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemfilter/source/c3runtime/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemfilter/source/c3runtime/type.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemfilter/source/icon.png create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemfilter/source/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemfilter/source/lang/en-US.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemfilter/source/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemfilter/source/type.js create mode 100644 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemmonitor/dist/rex_firebase_itemmonitor.c3addon create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemmonitor/source/aces.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemmonitor/source/addon.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemmonitor/source/c2runtime/runtime.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemmonitor/source/c3runtime/actions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemmonitor/source/c3runtime/conditions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemmonitor/source/c3runtime/expressions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemmonitor/source/c3runtime/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemmonitor/source/c3runtime/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemmonitor/source/c3runtime/type.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemmonitor/source/icon.png create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemmonitor/source/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemmonitor/source/lang/en-US.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemmonitor/source/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemmonitor/source/type.js create mode 100644 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemtable/dist/rex_firebase_itemtable.c3addon create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemtable/source/aces.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemtable/source/addon.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemtable/source/c2runtime/runtime.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemtable/source/c3runtime/actions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemtable/source/c3runtime/conditions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemtable/source/c3runtime/expressions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemtable/source/c3runtime/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemtable/source/c3runtime/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemtable/source/c3runtime/type.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemtable/source/icon.png create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemtable/source/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemtable/source/lang/en-US.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemtable/source/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_itemtable/source/type.js create mode 100644 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_leaderboard/dist/rex_firebase_leaderboard.c3addon create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_leaderboard/source/aces.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_leaderboard/source/addon.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_leaderboard/source/c2runtime/runtime.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_leaderboard/source/c3runtime/actions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_leaderboard/source/c3runtime/conditions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_leaderboard/source/c3runtime/expressions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_leaderboard/source/c3runtime/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_leaderboard/source/c3runtime/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_leaderboard/source/c3runtime/type.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_leaderboard/source/icon.png create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_leaderboard/source/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_leaderboard/source/lang/en-US.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_leaderboard/source/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_leaderboard/source/type.js create mode 100644 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_message/dist/rex_firebase_message.c3addon create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_message/source/aces.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_message/source/addon.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_message/source/c2runtime/runtime.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_message/source/c3runtime/actions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_message/source/c3runtime/conditions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_message/source/c3runtime/expressions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_message/source/c3runtime/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_message/source/c3runtime/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_message/source/c3runtime/type.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_message/source/firebase.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_message/source/icon.png create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_message/source/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_message/source/lang/en-US.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_message/source/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_message/source/type.js create mode 100644 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_query/dist/rex_firebase_query.c3addon create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_query/source/aces.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_query/source/addon.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_query/source/c2runtime/runtime.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_query/source/c3runtime/actions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_query/source/c3runtime/conditions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_query/source/c3runtime/expressions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_query/source/c3runtime/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_query/source/c3runtime/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_query/source/c3runtime/type.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_query/source/icon.png create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_query/source/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_query/source/lang/en-US.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_query/source/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_query/source/type.js create mode 100644 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_rooms/dist/rex_firebase_rooms.c3addon create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_rooms/source/aces.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_rooms/source/addon.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_rooms/source/c2runtime/runtime.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_rooms/source/c3runtime/actions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_rooms/source/c3runtime/conditions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_rooms/source/c3runtime/expressions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_rooms/source/c3runtime/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_rooms/source/c3runtime/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_rooms/source/c3runtime/type.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_rooms/source/icon.png create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_rooms/source/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_rooms/source/lang/en-US.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_rooms/source/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_rooms/source/type.js create mode 100644 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_savedata/dist/rex_firebase_savedata.c3addon create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_savedata/source/aces.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_savedata/source/addon.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_savedata/source/c2runtime/runtime.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_savedata/source/c3runtime/actions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_savedata/source/c3runtime/conditions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_savedata/source/c3runtime/expressions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_savedata/source/c3runtime/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_savedata/source/c3runtime/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_savedata/source/c3runtime/type.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_savedata/source/icon.png create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_savedata/source/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_savedata/source/lang/en-US.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_savedata/source/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_savedata/source/type.js create mode 100644 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_simplemessage/dist/rex_firebase_simplemessage.c3addon create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_simplemessage/source/aces.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_simplemessage/source/addon.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_simplemessage/source/c2runtime/runtime.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_simplemessage/source/c3runtime/actions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_simplemessage/source/c3runtime/conditions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_simplemessage/source/c3runtime/expressions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_simplemessage/source/c3runtime/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_simplemessage/source/c3runtime/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_simplemessage/source/c3runtime/type.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_simplemessage/source/icon.png create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_simplemessage/source/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_simplemessage/source/lang/en-US.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_simplemessage/source/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_simplemessage/source/type.js create mode 100644 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_singleLogin/dist/rex_firebase_singleLogin.c3addon create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_singleLogin/source/aces.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_singleLogin/source/addon.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_singleLogin/source/c2runtime/runtime.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_singleLogin/source/c3runtime/actions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_singleLogin/source/c3runtime/conditions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_singleLogin/source/c3runtime/expressions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_singleLogin/source/c3runtime/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_singleLogin/source/c3runtime/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_singleLogin/source/c3runtime/type.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_singleLogin/source/icon.png create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_singleLogin/source/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_singleLogin/source/lang/en-US.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_singleLogin/source/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_singleLogin/source/type.js create mode 100644 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_storage/dist/rex_firebase_storage.c3addon create mode 100644 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_storage/firebase_cors_error.txt create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_storage/source/aces.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_storage/source/addon.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_storage/source/c2runtime/runtime.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_storage/source/c3runtime/actions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_storage/source/c3runtime/conditions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_storage/source/c3runtime/expressions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_storage/source/c3runtime/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_storage/source/c3runtime/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_storage/source/c3runtime/type.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_storage/source/cors.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_storage/source/icon.png create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_storage/source/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_storage/source/lang/en-US.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_storage/source/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_storage/source/type.js create mode 100644 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_syncqueue/dist/rex_firebase_syncqueue.c3addon create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_syncqueue/source/aces.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_syncqueue/source/addon.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_syncqueue/source/c2runtime/runtime.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_syncqueue/source/c3runtime/actions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_syncqueue/source/c3runtime/conditions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_syncqueue/source/c3runtime/expressions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_syncqueue/source/c3runtime/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_syncqueue/source/c3runtime/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_syncqueue/source/c3runtime/type.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_syncqueue/source/firebase.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_syncqueue/source/icon.png create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_syncqueue/source/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_syncqueue/source/lang/en-US.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_syncqueue/source/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_syncqueue/source/type.js create mode 100644 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_timer/dist/rex_firebase_timer.c3addon create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_timer/source/aces.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_timer/source/addon.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_timer/source/c2runtime/runtime.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_timer/source/c3runtime/actions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_timer/source/c3runtime/conditions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_timer/source/c3runtime/expressions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_timer/source/c3runtime/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_timer/source/c3runtime/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_timer/source/c3runtime/type.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_timer/source/icon.png create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_timer/source/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_timer/source/lang/en-US.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_timer/source/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_timer/source/type.js create mode 100644 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_token/dist/rex_firebase_token.c3addon create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_token/source/aces.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_token/source/addon.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_token/source/c2runtime/runtime.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_token/source/c3runtime/actions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_token/source/c3runtime/conditions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_token/source/c3runtime/expressions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_token/source/c3runtime/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_token/source/c3runtime/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_token/source/c3runtime/type.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_token/source/icon.png create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_token/source/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_token/source/lang/en-US.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_token/source/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_token/source/type.js create mode 100644 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_transaction/dist/rex_firebase_transaction.c3addon create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_transaction/source/aces.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_transaction/source/addon.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_transaction/source/c2runtime/runtime.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_transaction/source/c3runtime/actions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_transaction/source/c3runtime/conditions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_transaction/source/c3runtime/expressions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_transaction/source/c3runtime/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_transaction/source/c3runtime/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_transaction/source/c3runtime/type.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_transaction/source/icon.png create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_transaction/source/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_transaction/source/lang/en-US.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_transaction/source/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_transaction/source/type.js create mode 100644 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_userid2id/dist/rex_firebase_userid2id.c3addon create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_userid2id/source/aces.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_userid2id/source/addon.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_userid2id/source/c2runtime/runtime.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_userid2id/source/c3runtime/actions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_userid2id/source/c3runtime/conditions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_userid2id/source/c3runtime/expressions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_userid2id/source/c3runtime/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_userid2id/source/c3runtime/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_userid2id/source/c3runtime/type.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_userid2id/source/icon.png create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_userid2id/source/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_userid2id/source/lang/en-US.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_userid2id/source/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_userid2id/source/type.js create mode 100644 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_userlist/dist/rex_firebase_userlist.c3addon create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_userlist/source/aces.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_userlist/source/addon.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_userlist/source/c2runtime/runtime.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_userlist/source/c3runtime/actions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_userlist/source/c3runtime/conditions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_userlist/source/c3runtime/expressions.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_userlist/source/c3runtime/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_userlist/source/c3runtime/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_userlist/source/c3runtime/type.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_userlist/source/firebase.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_userlist/source/icon.png create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_userlist/source/instance.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_userlist/source/lang/en-US.json create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_userlist/source/plugin.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_userlist/source/type.js create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/Simple message/Simple chat v3.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/UserID2ID/UserID2ID v3 - manual ID.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/UserID2ID/UserID2ID v3 - random ID.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/authentication/auth - anonymous.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/authentication/auth - link to email@password.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/authentication/auth - link to facebook.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/authentication/auth -facebook - access token.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/authentication/auth -facebook or google.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/authentication/auth -facebook.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/authentication/email-password v3.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/authentication/firebase- auth - logout.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/authentication/send password reset email.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/authentication/send verification email.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/counter/counter v3.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/counter/custom counter v3.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/curTime/current timestamp.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/firebase/firebase v3 - message append.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/firebase/firebase v3 - my connection state.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/firebase/firebase v3 - online.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/firebase/firebase v3 - server time offset.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/firebase/firebase v3 - set value.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/geofire/geofire - basic.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/item book/item book - pick random item.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/item book/item book - prepare items in tree or list.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/item book/item book - presence.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/item book/item book - requests queue.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/item book/item book - set JSON.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/item book/item book - table to taffydb.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/item book/item book - update, load all, load by cond.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/item filter/item filter v3 - condition.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/item monitor/monitor all items.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/item monitor/monitor query items.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/item table/item table v3.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/item table/itemtable v3 - foreach item, foreach key.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/item table/presence v3.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/leaderboard/add to score.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/leaderboard/auto update v3.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/leaderboard/manual update v3.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/leaderboard/post if greater.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/leaderboard/post-get.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/leaderboard/test - auto update.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/query/orderByValue v3.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/rooms/rooms - basic.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/rooms/rooms - random.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/save slot/save user variables.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/save slot/saveslot v3 - auth.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/save slot/saveslot v3.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/single login/single login v3.capx create mode 100644 ported_plugins/plugins/rex_firebase_pack/sample_capx/storage/firebase_cors_error.txt create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/storage/storage v3 - dataURI + metadata.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/storage/storage v3 - dataURI.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/storage/storage v3 - file chooser.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/storage/storage v3 - gif (objectURL).capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/storage/storage v3 - sprite.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/timer/firebase timer - count down.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/timer/firebase timer v3.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/timer/off game time v3.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/timer/off game time.capx create mode 100755 ported_plugins/plugins/rex_firebase_pack/sample_capx/token/token v3 - master.capx diff --git a/ported_plugins/plugins/rex_firebase_pack/README.md b/ported_plugins/plugins/rex_firebase_pack/README.md new file mode 100644 index 0000000..0165b12 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/README.md @@ -0,0 +1,5 @@ +Rex_firebase bundle for c3runtime. + +official plugin repo +https://github.com/rexrainbow/C3RexDoc/blob/master/repo/index.md + diff --git a/ported_plugins/plugins/rex_firebase_pack/firebase_cors_error.txt b/ported_plugins/plugins/rex_firebase_pack/firebase_cors_error.txt new file mode 100644 index 0000000..27de44f --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/firebase_cors_error.txt @@ -0,0 +1 @@ +https://stackoverflow.com/questions/37760695/firebase-storage-and-access-control-allow-origin/37765371#37765371 \ No newline at end of file diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/dist/rex_firebase.c3addon b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/dist/rex_firebase.c3addon new file mode 100644 index 0000000000000000000000000000000000000000..0430934abcaf12547ba7cae59dfda8908519da62 GIT binary patch literal 24756 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%0AOn$hZ1tgYBdP2t1(nFxBY8;Zt@vrwh4 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 literal 0 HcmV?d00001 diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/aces.json b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/aces.json new file mode 100755 index 0000000..587fa27 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/aces.json @@ -0,0 +1,663 @@ +{ + "domain": { + "conditions": [ + ], + "actions": [ + { + "c2id": 0, + "id": "setdomainref0", + "scriptName": "SetDomainRef", + "highlight": false, + "params": [ + {"id":"domain0", "type":"string", "initialValue":"\"\""} + ] + } + ], + "expressions": [ + { + "c2id": 0, + "id": "domain0", + "expressionName": "Domain", + "scriptName": "Domain", + "highlight": false, + "returnType": "string" + } + ] + }, + "send_-_set": { + "conditions": [ + ], + "actions": [ + { + "c2id": 1, + "id": "setvalue1", + "scriptName": "SetValue", + "highlight": false, + "params": [ + {"id":"dataref0", "type":"string", "initialValue":"\"\""}, + {"id":"value1", "type":"any", "initialValue":"0"}, + {"id":"on_complete2", "type":"string", "initialValue":"\"\""} + ] + }, + { + "c2id": 2, + "id": "setjson2", + "scriptName": "SetJSON", + "highlight": false, + "params": [ + {"id":"dataref0", "type":"string", "initialValue":"\"\""}, + {"id":"json_value1", "type":"string", "initialValue":"\"{}\""}, + {"id":"on_complete2", "type":"string", "initialValue":"\"\""} + ] + }, + { + "c2id": 10, + "id": "setbooleanvalue10", + "scriptName": "SetBooleanValue", + "highlight": false, + "params": [ + {"id":"dataref0", "type":"string", "initialValue":"\"\""}, + {"id":"boolean3", "type":"combo", "items":["false","true"]}, + {"id":"on_complete4", "type":"string", "initialValue":"\"\""} + ] + }, + { + "c2id": 12, + "id": "setservertimestamp12", + "scriptName": "SetServerTimestamp", + "highlight": false, + "params": [ + {"id":"dataref0", "type":"string", "initialValue":"\"\""}, + {"id":"on_complete1", "type":"string", "initialValue":"\"\""} + ] + } + ], + "expressions": [ + ] + }, + "send_-_update_json": { + "conditions": [ + ], + "actions": [ + { + "c2id": 3, + "id": "updatejson3", + "scriptName": "UpdateJSON", + "highlight": false, + "params": [ + {"id":"dataref0", "type":"string", "initialValue":"\"\""}, + {"id":"json_value1", "type":"string", "initialValue":"\"{}\""}, + {"id":"on_complete2", "type":"string", "initialValue":"\"\""} + ] + } + ], + "expressions": [ + ] + }, + "send_-_push": { + "conditions": [ + ], + "actions": [ + { + "c2id": 4, + "id": "pushvalue4", + "scriptName": "PushValue", + "highlight": false, + "params": [ + {"id":"dataref0", "type":"string", "initialValue":"\"\""}, + {"id":"value1", "type":"any", "initialValue":"0"}, + {"id":"on_complete2", "type":"string", "initialValue":"\"\""} + ] + }, + { + "c2id": 5, + "id": "pushjson5", + "scriptName": "PushJSON", + "highlight": false, + "params": [ + {"id":"dataref0", "type":"string", "initialValue":"\"\""}, + {"id":"json_value1", "type":"string", "initialValue":"\"{}\""}, + {"id":"on_complete2", "type":"string", "initialValue":"\"\""} + ] + }, + { + "c2id": 11, + "id": "pushbooleanvalue11", + "scriptName": "PushBooleanValue", + "highlight": false, + "params": [ + {"id":"dataref0", "type":"string", "initialValue":"\"\""}, + {"id":"boolean3", "type":"combo", "items":["false","true"]}, + {"id":"on_complete4", "type":"string", "initialValue":"\"\""} + ] + }, + { + "c2id": 13, + "id": "pushservertimestamp13", + "scriptName": "PushServerTimestamp", + "highlight": false, + "params": [ + {"id":"dataref0", "type":"string", "initialValue":"\"\""}, + {"id":"on_complete1", "type":"string", "initialValue":"\"\""} + ] + } + ], + "expressions": [ + ] + }, + "send_-_transaction": { + "conditions": [ + ], + "actions": [ + { + "c2id": 6, + "id": "transaction6", + "scriptName": "Transaction", + "highlight": false, + "params": [ + {"id":"dataref0", "type":"string", "initialValue":"\"\""}, + {"id":"on_transaction1", "type":"string", "initialValue":"\"_\""}, + {"id":"on_complete2", "type":"string", "initialValue":"\"\""} + ] + }, + { + "c2id": 7, + "id": "returntransactionvalue7", + "scriptName": "ReturnTransactionValue", + "highlight": false, + "params": [ + {"id":"value0", "type":"any", "initialValue":"0"} + ] + }, + { + "c2id": 8, + "id": "returntransactionjson8", + "scriptName": "ReturnTransactionJSON", + "highlight": false, + "params": [ + {"id":"json_value0", "type":"string", "initialValue":"\"{}\""} + ] + } + ], + "expressions": [ + { + "c2id": 1, + "id": "transactionın1", + "expressionName": "TransactionIn", + "scriptName": "TransactionIn", + "highlight": false, + "returnType": "any", + "isVariadicParameters": true + }, + { + "c2id": 5, + "id": "transactionresult5", + "expressionName": "TransactionResult", + "scriptName": "TransactionResult", + "highlight": false, + "returnType": "any", + "isVariadicParameters": true + } + ] + }, + "send_-_remove": { + "conditions": [ + ], + "actions": [ + { + "c2id": 9, + "id": "remove9", + "scriptName": "Remove", + "highlight": false, + "params": [ + {"id":"dataref0", "type":"string", "initialValue":"\"\""}, + {"id":"on_complete1", "type":"string", "initialValue":"\"\""} + ] + } + ], + "expressions": [ + ] + }, + "receive_-_add": { + "conditions": [ + ], + "actions": [ + { + "c2id": 21, + "id": "addreadingcallback21", + "scriptName": "AddReadingCallback", + "highlight": false, + "params": [ + {"id":"dataref0", "type":"string", "initialValue":"\"\""}, + {"id":"type6", "type":"combo", "items":["value changed","child added","child changed","child removed","child moved"]}, + {"id":"callback_function7", "type":"string", "initialValue":"\"_\""} + ] + } + ], + "expressions": [ + ] + }, + "receive_-_remove": { + "conditions": [ + ], + "actions": [ + { + "c2id": 22, + "id": "removereadingcallback22", + "scriptName": "RemoveReadingCallback", + "highlight": false, + "params": [ + {"id":"dataref0", "type":"string", "initialValue":"\"\""}, + {"id":"type6", "type":"combo", "items":["value changed","child added","child changed","child removed","child moved"]}, + {"id":"callback_function7", "type":"string", "initialValue":"\"_\""} + ] + }, + { + "c2id": 23, + "id": "removereadingcallback23", + "scriptName": "RemoveReadingCallback", + "highlight": false, + "params": [ + {"id":"dataref0", "type":"string", "initialValue":"\"\""}, + {"id":"type6", "type":"combo", "items":["value changed","child added","child changed","child removed","child moved"]} + ] + }, + { + "c2id": 24, + "id": "removereadingcallback24", + "scriptName": "RemoveReadingCallback", + "highlight": false, + "params": [ + {"id":"dataref0", "type":"string", "initialValue":"\"\""} + ] + }, + { + "c2id": 34, + "id": "removereadingcallback34", + "scriptName": "RemoveReadingCallback", + "highlight": false + } + ], + "expressions": [ + ] + }, + "receive_-_add_once": { + "conditions": [ + ], + "actions": [ + { + "c2id": 25, + "id": "addreadingcallbackonce25", + "scriptName": "AddReadingCallbackOnce", + "highlight": false, + "params": [ + {"id":"dataref0", "type":"string", "initialValue":"\"\""}, + {"id":"type6", "type":"combo", "items":["value changed","child added","child changed","child removed","child moved"]}, + {"id":"callback_function7", "type":"string", "initialValue":"\"_\""} + ] + } + ], + "expressions": [ + ] + }, + "on_disconnect": { + "conditions": [ + ], + "actions": [ + { + "c2id": 31, + "id": "removerefondisconnect31", + "scriptName": "RemoveRefOnDisconnect", + "highlight": false, + "params": [ + {"id":"dataref0", "type":"string", "initialValue":"\"\""} + ] + }, + { + "c2id": 32, + "id": "setvalueondisconnect32", + "scriptName": "SetValueOnDisconnect", + "highlight": false, + "params": [ + {"id":"dataref0", "type":"string", "initialValue":"\"\""}, + {"id":"value1", "type":"any", "initialValue":"0"} + ] + }, + { + "c2id": 33, + "id": "updatejsonondisconnect33", + "scriptName": "UpdateJSONOnDisconnect", + "highlight": false, + "params": [ + {"id":"dataref0", "type":"string", "initialValue":"\"/myref\""}, + {"id":"json_value1", "type":"string", "initialValue":"\"{}\""} + ] + }, + { + "c2id": 35, + "id": "cancelondisconnect35", + "scriptName": "CancelOnDisconnect", + "highlight": false, + "params": [ + {"id":"dataref0", "type":"string", "initialValue":"\"\""} + ] + } + ], + "expressions": [ + ] + }, + "query": { + "conditions": [ + ], + "actions": [ + { + "c2id": 51, + "id": "addquerycallback51", + "scriptName": "AddQueryCallback", + "highlight": false, + "params": [ + {"id":"query0", "type":"object"}, + {"id":"type6", "type":"combo", "items":["value changed","child added","child changed","child removed","child moved"]}, + {"id":"callback_function7", "type":"string", "initialValue":"\"_\""} + ] + }, + { + "c2id": 52, + "id": "addquerycallbackonce52", + "scriptName": "AddQueryCallbackOnce", + "highlight": false, + "params": [ + {"id":"query0", "type":"object"}, + {"id":"type6", "type":"combo", "items":["value changed","child added","child changed","child removed","child moved"]}, + {"id":"callback_function7", "type":"string", "initialValue":"\"_\""} + ] + } + ], + "expressions": [ + ] + }, + "online": { + "conditions": [ + ], + "actions": [ + { + "c2id": 61, + "id": "gooffline61", + "scriptName": "GoOffline", + "highlight": false + }, + { + "c2id": 62, + "id": "goonline62", + "scriptName": "GoOnline", + "highlight": false + } + ], + "expressions": [ + ] + }, + "transaction": { + "conditions": [ + { + "c2id": 1, + "id": "ontransaction1", + "scriptName": "OnTransaction", + "isTrigger": "true", + "highlight": false, + "params": [ + {"id":"callback_function0", "type":"string", "initialValue":"\"_\""} + ] + }, + { + "c2id": 6, + "id": "transactionınısnull6", + "scriptName": "TransactionInIsNull", + "highlight": false + } + ], + "actions": [ + ], + "expressions": [ + ] + }, + "receive": { + "conditions": [ + { + "c2id": 2, + "id": "onreading2", + "scriptName": "OnReading", + "isTrigger": "true", + "highlight": false, + "params": [ + {"id":"callback_function0", "type":"string", "initialValue":"\"_\""} + ] + }, + { + "c2id": 5, + "id": "lastdataısnull5", + "scriptName": "LastDataIsNull", + "highlight": false + } + ], + "actions": [ + ], + "expressions": [ + { + "c2id": 2, + "id": "lastdata2", + "expressionName": "LastData", + "scriptName": "LastData", + "highlight": false, + "returnType": "any", + "isVariadicParameters": true + }, + { + "c2id": 3, + "id": "lastkey3", + "expressionName": "LastKey", + "scriptName": "LastKey", + "highlight": false, + "returnType": "any", + "isVariadicParameters": true + }, + { + "c2id": 4, + "id": "prevchildname4", + "expressionName": "PrevChildName", + "scriptName": "PrevChildName", + "highlight": false, + "returnType": "any", + "isVariadicParameters": true + } + ] + }, + "send": { + "conditions": [ + { + "c2id": 3, + "id": "oncomplete3", + "scriptName": "OnComplete", + "isTrigger": "true", + "highlight": false, + "params": [ + {"id":"callback_function0", "type":"string", "initialValue":"\"_\""} + ] + }, + { + "c2id": 4, + "id": "onerror4", + "scriptName": "OnError", + "isTrigger": "true", + "highlight": false, + "params": [ + {"id":"callback_function0", "type":"string", "initialValue":"\"_\""} + ] + } + ], + "actions": [ + ], + "expressions": [ + ] + }, + "transaction_-_completed": { + "conditions": [ + { + "c2id": 7, + "id": "ıstransactionaborted7", + "scriptName": "IsTransactionAborted", + "isDeprecated": "true", + "highlight": false + }, + { + "c2id": 8, + "id": "ontransactioncomplete8", + "scriptName": "OnTransactionComplete", + "isTrigger": "true", + "highlight": false, + "params": [ + {"id":"callback_function0", "type":"string", "initialValue":"\"_\""} + ] + }, + { + "c2id": 9, + "id": "ontransactionerror9", + "scriptName": "OnTransactionError", + "isTrigger": "true", + "highlight": false, + "params": [ + {"id":"callback_function0", "type":"string", "initialValue":"\"_\""} + ] + }, + { + "c2id": 10, + "id": "ontransactionabort10", + "scriptName": "OnTransactionAbort", + "isTrigger": "true", + "highlight": false, + "params": [ + {"id":"callback_function0", "type":"string", "initialValue":"\"_\""} + ] + } + ], + "actions": [ + ], + "expressions": [ + ] + }, + "connection": { + "conditions": [ + { + "c2id": 11, + "id": "onconnected11", + "scriptName": "OnConnected", + "isTrigger": "true", + "highlight": false + }, + { + "c2id": 12, + "id": "ondisconnected12", + "scriptName": "OnDisconnected", + "isTrigger": "true", + "highlight": false + }, + { + "c2id": 13, + "id": "ısconnected13", + "scriptName": "IsConnected", + "highlight": false + } + ], + "actions": [ + ], + "expressions": [ + ] + }, + "push": { + "conditions": [ + ], + "actions": [ + ], + "expressions": [ + { + "c2id": 11, + "id": "lastpushref11", + "expressionName": "LastPushRef", + "scriptName": "LastPushRef", + "highlight": false, + "returnType": "string" + } + ] + }, + "ıtemıd": { + "conditions": [ + ], + "actions": [ + ], + "expressions": [ + { + "c2id": 21, + "id": "generatekey21", + "expressionName": "GenerateKey", + "scriptName": "GenerateKey", + "highlight": false, + "returnType": "string" + }, + { + "c2id": 22, + "id": "lastgeneratedkey22", + "expressionName": "LastGeneratedKey", + "scriptName": "LastGeneratedKey", + "highlight": false, + "returnType": "string" + } + ] + }, + "server_time_offset": { + "conditions": [ + ], + "actions": [ + ], + "expressions": [ + { + "c2id": 31, + "id": "servertimeoffset31", + "expressionName": "ServerTimeOffset", + "scriptName": "ServerTimeOffset", + "highlight": false, + "returnType": "number" + }, + { + "c2id": 32, + "id": "estimatedtime32", + "expressionName": "EstimatedTime", + "scriptName": "EstimatedTime", + "highlight": false, + "returnType": "number" + } + ] + }, + "error": { + "conditions": [ + ], + "actions": [ + ], + "expressions": [ + { + "c2id": 101, + "id": "lasterrorcode101", + "expressionName": "LastErrorCode", + "scriptName": "LastErrorCode", + "highlight": false, + "returnType": "string" + }, + { + "c2id": 102, + "id": "lasterrormessage102", + "expressionName": "LastErrorMessage", + "scriptName": "LastErrorMessage", + "highlight": false, + "returnType": "string" + } + ] + } +} diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/addon.json b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/addon.json new file mode 100755 index 0000000..f16278d --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/addon.json @@ -0,0 +1,26 @@ +{ + "is-c3-addon": true, + "type": "plugin", + "name": "Firebase", + "id": "Rex_Firebase", + "version": "1.3.1.0", + "author": "Rex.Rainbow", + "website": "http://c2rexplugins.weebly.com/rex_firebase.html", + "documentation": "http://c2rexplugins.weebly.com/rex_firebase.html", + "description": "Real time database-as-a-service. https://www.firebase.com/", + "editor-scripts": [ + "plugin.js", + "type.js", + "instance.js" + ], + "file-list": [ + "c2runtime/runtime.js", + "lang/en-US.json", + "aces.json", + "addon.json", + "icon.png", + "plugin.js", + "type.js", + "instance.js" + ] +} diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/c2runtime/runtime.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/c2runtime/runtime.js new file mode 100755 index 0000000..8ccebf6 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/c2runtime/runtime.js @@ -0,0 +1,622 @@ +// ECMAScript 5 strict mode +"use strict"; + +assert2(cr, "cr namespace not created"); +assert2(cr.plugins_, "cr.plugins_ not created"); + +///////////////////////////////////// +// Plugin class +cr.plugins_.Rex_Firebase = function(runtime) +{ + this.runtime = runtime; +}; + +(function () +{ + var pluginProto = cr.plugins_.Rex_Firebase.prototype; + + ///////////////////////////////////// + // Object type class + pluginProto.Type = function(plugin) + { + this.plugin = plugin; + this.runtime = plugin.runtime; + }; + + var typeProto = pluginProto.Type.prototype; + + typeProto.onCreate = function() + { + }; + + ///////////////////////////////////// + // Instance class + pluginProto.Instance = function(type) + { + this.type = type; + this.runtime = type.runtime; + }; + + var instanceProto = pluginProto.Instance.prototype; + + var EVENTTYPEMAP = ["value", "child_added", "child_changed", "child_removed","child_moved"]; + + instanceProto.onCreate = function() + { + this.rootpath = this.properties[0] + "/"; + + // push + this.lastPushRef = ""; + // transaction + this.onTransaction = {}; + this.onTransaction.cb = null; + this.onTransaction.input = null; + this.onTransaction.output = null; + // transaction completed + this.onTransaction.completedCB = null; + this.onTransaction.committedValue = null; + // on complete + this.onCompleteCb = null; + this.error = null; + // reading + if (!this.recycled) + this.callbackMap = new window.FirebaseCallbackMapKlass(); + else + this.callbackMap.Reset(); + + this.onReadCb = null; + this.snapshot = null; + this.prevChildName = null; + this.exp_LastGeneratedKey = ""; + this.exp_ServerTimeOffset = 0; + this.isConnected = false; + + + var self=this; + var setupFn = function () + { + if (self.properties[1] === 1) + self.connectionDetectingStart(); + + if (self.properties[2] === 1) + self.serverTimeOffsetDetectingStart(); + } + window.FirebaseAddAfterInitializeHandler(setupFn); + }; + + instanceProto.onDestroy = function () + { + this.callbackMap.Remove(); + }; + + // 2.x , 3.x + var isFirebase3x = function() + { + return (window["FirebaseV3x"] === true); + }; + + var isFullPath = function (p) + { + return (p.substring(0,8) === "https://"); + }; + + instanceProto.getRef = function(k) + { + if (k == null) + k = ""; + var path; + if (isFullPath(k)) + path = k; + else + path = this.rootpath + k + "/"; + + // 2.x + if (!isFirebase3x()) + { + return new window["Firebase"](path); + } + + // 3.x + else + { + var fnName = (isFullPath(path))? "refFromURL":"ref"; + return window["Firebase"]["database"]()[fnName](path); + } + + }; + + var getKey = function (obj) + { + return (!isFirebase3x())? obj["key"]() : obj["key"]; + }; + + var getRefPath = function (obj) + { + return (!isFirebase3x())? obj["ref"]() : obj["ref"]; + }; + + var getRoot = function (obj) + { + return (!isFirebase3x())? obj["root"]() : obj["root"]; + }; + + var serverTimeStamp = function () + { + if (!isFirebase3x()) + return window["Firebase"]["ServerValue"]["TIMESTAMP"]; + else + return window["Firebase"]["database"]["ServerValue"]; + }; + + var getTimestamp = function (obj) + { + return (!isFirebase3x())? obj : obj["TIMESTAMP"]; + }; + // 2.x , 3.x + + instanceProto.addCallback = function (query, type_, cbName) + { + var eventType = EVENTTYPEMAP[type_]; + var self = this; + var reading_handler = function (snapshot, prevChildName) + { + self.onReadCb = cbName; + self.snapshot = snapshot; + self.prevChildName = prevChildName; + self.runtime.trigger(cr.plugins_.Rex_Firebase.prototype.cnds.OnReading, self); + self.onReadCb = null; + }; + + this.callbackMap.Add(query, eventType, cbName, reading_handler); + }; + + instanceProto.addCallbackOnce = function (refObj, type_, cb) + { + var eventType = EVENTTYPEMAP[type_]; + + var self = this; + var reading_handler = function (snapshot, prevChildName) + { + self.onReadCb = cb; + self.snapshot = snapshot; + self.prevChildName = prevChildName; + self.runtime.trigger(cr.plugins_.Rex_Firebase.prototype.cnds.OnReading, self); + self.onReadCb = null; + }; + refObj["once"](eventType, reading_handler); + }; + + instanceProto.connectionDetectingStart = function () + { + var self = this; + var onValueChanged = function (snap) + { + var trig; + var isConnected = !!snap["val"](); + if ( isConnected ) + trig = cr.plugins_.Rex_Firebase.prototype.cnds.OnConnected; + else if (self.isConnected && !isConnected) // disconnected after connected + trig = cr.plugins_.Rex_Firebase.prototype.cnds.OnDisconnected; + + self.isConnected = isConnected; + + self.runtime.trigger(trig, self); + }; + + var p = getRoot(this.getRef()) + "/.info/connected"; + var ref = this.getRef(p); + ref.on("value", onValueChanged); + }; + + instanceProto.serverTimeOffsetDetectingStart = function () + { + var self = this; + var onValueChanged = function (snap) + { + self.exp_ServerTimeOffset = snap["val"]() || 0; + }; + + var p = getRoot(this.getRef()) + "/.info/serverTimeOffset"; + var ref = this.getRef(p); + ref.on("value", onValueChanged); + }; + /**BEGIN-PREVIEWONLY**/ + instanceProto.getDebuggerValues = function (propsections) + { + var prop = []; + this.callbackMap.getDebuggerValues(prop); + + propsections.push({ + "title": this.type.name, + "properties": prop + }); + }; + + instanceProto.onDebugValueEdited = function (header, name, value) + { + }; + /**END-PREVIEWONLY**/ + + ////////////////////////////////////// + // Conditions + function Cnds() {}; + pluginProto.cnds = new Cnds(); + + Cnds.prototype.OnTransaction = function (cb) + { + return cr.equals_nocase(cb, this.onTransaction.cb); + }; + + Cnds.prototype.OnReading = function (cb) + { + return cr.equals_nocase(cb, this.onReadCb); + }; + + Cnds.prototype.OnComplete = function (cb) + { + return cr.equals_nocase(cb, this.onCompleteCb); + }; + + Cnds.prototype.OnError = function (cb) + { + return cr.equals_nocase(cb, this.onCompleteCb); + }; + + Cnds.prototype.LastDataIsNull = function () + { + var data =(this.snapshot === null)? null: this.snapshot["val"](); + return (data === null); + }; + + Cnds.prototype.TransactionInIsNull = function () + { + var data =(this.onTransaction.input === null)? null: this.onTransaction.input; + return (data === null); + }; + + // cf_deprecated + Cnds.prototype.IsTransactionAborted = function () { return false; }; + // cf_deprecated + + Cnds.prototype.OnTransactionComplete = function (cb) + { + return cr.equals_nocase(cb, this.onTransaction.completedCB); + }; + + Cnds.prototype.OnTransactionError = function (cb) + { + return cr.equals_nocase(cb, this.onTransaction.completedCB); + }; + + Cnds.prototype.OnTransactionAbort = function (cb) + { + return cr.equals_nocase(cb, this.onTransaction.completedCB); + }; + + Cnds.prototype.OnConnected = function () + { + return true; + }; + + Cnds.prototype.OnDisconnected = function () + { + return true; + }; + + Cnds.prototype.IsConnected = function () + { + return this.isConnected; + }; + ////////////////////////////////////// + // Actions + function Acts() {}; + pluginProto.acts = new Acts(); + + Acts.prototype.SetDomainRef = function (ref) + { + this.rootpath = ref + "/"; + }; + + var getOnCompleteHandler = function (self, onCompleteCb) + { + if ((onCompleteCb === null) || (onCompleteCb === "")) + return; + + var handler = function(error) + { + self.onCompleteCb = onCompleteCb; + self.error = error; + var trig = (error)? cr.plugins_.Rex_Firebase.prototype.cnds.OnError: + cr.plugins_.Rex_Firebase.prototype.cnds.OnComplete; + self.runtime.trigger(trig, self); + self.onCompleteCb = null; + }; + return handler; + }; + + Acts.prototype.SetValue = function (k, v, onCompleteCb) + { + var handler = getOnCompleteHandler(this, onCompleteCb); + this.getRef(k)["set"](v, handler); + }; + + Acts.prototype.SetJSON = function (k, v, onCompleteCb) + { + var handler = getOnCompleteHandler(this, onCompleteCb); + this.getRef(k)["set"](JSON.parse(v), handler); + }; + + Acts.prototype.UpdateJSON = function (k, v, onCompleteCb) + { + var handler = getOnCompleteHandler(this, onCompleteCb); + this.getRef(k)["update"](JSON.parse(v), handler); + }; + + Acts.prototype.PushValue = function (k, v, onCompleteCb) + { + var handler = getOnCompleteHandler(this, onCompleteCb); + var ref = this.getRef(k)["push"](v, handler); + this.lastPushRef = k + "/" + getKey(ref); + }; + + Acts.prototype.PushJSON = function (k, v, onCompleteCb) + { + var handler = getOnCompleteHandler(this, onCompleteCb); + var ref = this.getRef(k)["push"](JSON.parse(v), handler); + this.lastPushRef = k + "/" + getKey(ref); + }; + + Acts.prototype.Transaction = function (k, onTransactionCb, onCompleteCb) + { + var self = this; + + var _onComplete = function(error, committed, snapshot) + { + self.onTransaction.completedCB = onCompleteCb; + self.error = error; + self.onTransaction.committedValue = snapshot["val"](); + + var cnds = cr.plugins_.Rex_Firebase.prototype.cnds; + var trig = (error)? cnds.OnTransactionError: + (!committed)? cnds.OnTransactionAbort: + cnds.OnTransactionComplete; + + self.runtime.trigger(trig, self); + self.onTransaction.completedCB = null; + }; + + var _onTransaction = function(current_value) + { + self.onTransaction.cb = onTransactionCb; + self.onTransaction.input = current_value; + self.onTransaction.output = null; + self.runtime.trigger(cr.plugins_.Rex_Firebase.prototype.cnds.OnTransaction, self); + self.onTransaction.cb = null; + + if (self.onTransaction.output === null) + return; + else + return self.onTransaction.output; + }; + this.getRef(k)["transaction"](_onTransaction, _onComplete); + }; + + Acts.prototype.ReturnTransactionValue = function (v) + { + this.onTransaction.output = v; + }; + + Acts.prototype.ReturnTransactionJSON = function (v) + { + this.onTransaction.output = JSON.parse(v); + }; + + Acts.prototype.Remove = function (k, onCompleteCb) + { + var handler = getOnCompleteHandler(this, onCompleteCb); + this.getRef(k)["remove"](handler); + }; + + Acts.prototype.SetBooleanValue = function (k, b, onCompleteCb) + { + var handler = getOnCompleteHandler(this, onCompleteCb); + this.getRef(k)["set"]((b===1), handler); + }; + + Acts.prototype.PushBooleanValue = function (k, b, onCompleteCb) + { + var handler = getOnCompleteHandler(this, onCompleteCb); + var ref = this.getRef(k)["push"]((b===1), handler); + this.lastPushRef = k + "/" + getKey(ref); + }; + + Acts.prototype.SetServerTimestamp = function (k, onCompleteCb) + { + var handler = getOnCompleteHandler(this, onCompleteCb); + this.getRef(k)["set"](serverTimeStamp(), handler); + }; + + Acts.prototype.PushServerTimestamp = function (k, onCompleteCb) + { + var handler = getOnCompleteHandler(this, onCompleteCb); + var ref = this.getRef(k)["push"](serverTimeStamp(), handler); + this.lastPushRef = k + "/" + getKey(ref); + }; + Acts.prototype.AddReadingCallback = function (k, type_, cbName) + { + this.addCallback(this.getRef(k), type_, cbName); + }; + + Acts.prototype.RemoveReadingCallback = function (k, type_, cbName) + { + var absRef = (k != null)? this.getRef(k)["toString"](): null; + var eventType = (type_ != null)? EVENTTYPEMAP[type_]: null; + this.callbackMap.Remove(absRef, eventType, cbName); + }; + + Acts.prototype.AddReadingCallbackOnce = function (k, type_, cbName) + { + this.addCallbackOnce(this.getRef(k), type_, cbName); + }; + + Acts.prototype.RemoveRefOnDisconnect = function (k) + { + this.getRef(k)["onDisconnect"]()["remove"](); + }; + + Acts.prototype.SetValueOnDisconnect = function (k, v) + { + this.getRef(k)["onDisconnect"]()["set"](v); + }; + + Acts.prototype.UpdateJSONOnDisconnect = function (k, v) + { + this.getRef(k)["onDisconnect"]()["update"](JSON.parse(v)); + }; + + Acts.prototype.CancelOnDisconnect = function (k) + { + this.getRef(k)["onDisconnect"]()["cancel"](); + }; + + + // query + var get_query = function (queryObjs) + { + if (queryObjs == null) + return null; + var query = queryObjs.getFirstPicked(); + if (query == null) + return null; + + return query.GetQuery(); + }; + Acts.prototype.AddQueryCallback = function (queryObjs, type_, cbName) + { + var refObj = get_query(queryObjs); + if (refObj == null) + return; + + this.addCallback(refObj, type_, cbName); + }; + + Acts.prototype.AddQueryCallbackOnce = function (queryObjs, type_, cbName) + { + var refObj = get_query(queryObjs); + if (refObj == null) + return; + + this.addCallbackOnce(refObj, type_, cbName); + }; + + Acts.prototype.GoOffline = function () + { + // 2.x + if (!isFirebase3x()) + { + window["Firebase"]["goOffline"](); + } + + // 3.x + else + { + window["Firebase"]["database"]()["goOffline"](); + } + }; + + Acts.prototype.GoOnline = function () + { + // 2.x + if (!isFirebase3x()) + { + window["Firebase"]["goOnline"](); + + } + + // 3.x + else + { + window["Firebase"]["database"]()["goOnline"](); + } + }; + ////////////////////////////////////// + // Expressions + function Exps() {}; + pluginProto.exps = new Exps(); + + Exps.prototype.Domain = function (ret) + { + ret.set_string(this.rootpath); + }; + + Exps.prototype.TransactionIn = function (ret, default_value) + { + ret.set_any(window.FirebaseGetValueByKeyPath(this.onTransaction.input, null, default_value)); + }; + + Exps.prototype.LastData = function (ret, default_value) + { + var data =(this.snapshot === null)? null: this.snapshot["val"](); + ret.set_any(window.FirebaseGetValueByKeyPath(data, null, default_value)); + }; + + Exps.prototype.LastKey = function (ret, default_value) + { + var key =(this.snapshot === null)? null: getKey(this.snapshot); + ret.set_any(window.FirebaseGetValueByKeyPath(key, null, default_value)); + }; + + Exps.prototype.PrevChildName = function (ret, default_value) + { + ret.set_any(window.FirebaseGetValueByKeyPath(this.prevChildName, null, default_value)); + }; + + Exps.prototype.TransactionResult = function (ret, default_value) + { + ret.set_any(window.FirebaseGetValueByKeyPath(this.onTransaction.committedValue, null, default_value)); + }; + + Exps.prototype.LastPushRef = function (ret) + { + ret.set_string(this.lastPushRef); + }; + + Exps.prototype.GenerateKey = function (ret) + { + var ref = this.getRef()["push"](); + this.exp_LastGeneratedKey = getKey(ref); + ret.set_string(this.exp_LastGeneratedKey); + }; + + Exps.prototype.LastGeneratedKey = function (ret) + { + ret.set_string(this.exp_LastGeneratedKey); + }; + + Exps.prototype.ServerTimeOffset = function (ret) + { + ret.set_int(this.exp_ServerTimeOffset); + }; + + Exps.prototype.EstimatedTime = function (ret) + { + ret.set_int(new Date().getTime() + this.exp_ServerTimeOffset); + }; + + Exps.prototype.LastErrorCode = function (ret) + { + var code; + if (this.error) + code = this.error["code"]; + ret.set_string(code || ""); + }; + + Exps.prototype.LastErrorMessage = function (ret) + { + var s; + if (this.error) + s = this.error["serverResponse"]; + ret.set_string(s || ""); + }; + +}()); \ No newline at end of file diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/c3runtime/actions.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/c3runtime/actions.js new file mode 100755 index 0000000..21d2d9a --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/c3runtime/actions.js @@ -0,0 +1,209 @@ +"use strict"; + +{ + C3.Plugins.Rex_Firebase.Acts = + { + + SetDomainRef(ref) + { + this.rootpath = ref + "/"; + }, + + + SetValue(k, v, onCompleteCb) + { + var handler = getOnCompleteHandler(this, onCompleteCb); + this.getRef(k)["set"](v, handler); + }, + + SetJSON(k, v, onCompleteCb) + { + var handler = getOnCompleteHandler(this, onCompleteCb); + this.getRef(k)["set"](JSON.parse(v), handler); + }, + + UpdateJSON(k, v, onCompleteCb) + { + var handler = getOnCompleteHandler(this, onCompleteCb); + this.getRef(k)["update"](JSON.parse(v), handler); + }, + + PushValue(k, v, onCompleteCb) + { + var handler = getOnCompleteHandler(this, onCompleteCb); + var ref = this.getRef(k)["push"](v, handler); + this.lastPushRef = k + "/" + getKey(ref); + }, + + PushJSON(k, v, onCompleteCb) + { + var handler = getOnCompleteHandler(this, onCompleteCb); + var ref = this.getRef(k)["push"](JSON.parse(v), handler); + this.lastPushRef = k + "/" + getKey(ref); + }, + + Transaction(k, onTransactionCb, onCompleteCb) + { + var self = this; + + var _onComplete = function(error, committed, snapshot) + { + self.onTransaction.completedCB = onCompleteCb; + self.error = error; + self.onTransaction.committedValue = snapshot["val"](); + + var cnds = C3.Plugins.Rex_Firebase.Cnds; + var trig = (error)? cnds.OnTransactionError: + (!committed)? cnds.OnTransactionAbort: + cnds.OnTransactionComplete; + + self.Trigger(trig, self); + self.onTransaction.completedCB = null; + }; + + var _onTransaction = function(current_value) + { + self.onTransaction.cb = onTransactionCb; + self.onTransaction.input = current_value; + self.onTransaction.output = null; + self.Trigger(C3.Plugins.Rex_Firebase.Cnds.OnTransaction, self); + self.onTransaction.cb = null; + + if (self.onTransaction.output === null) + return; + else + return self.onTransaction.output; + }; + this.getRef(k)["transaction"](_onTransaction, _onComplete); + }, + + ReturnTransactionValue(v) + { + this.onTransaction.output = v; + }, + + ReturnTransactionJSON(v) + { + this.onTransaction.output = JSON.parse(v); + }, + + Remove(k, onCompleteCb) + { + var handler = getOnCompleteHandler(this, onCompleteCb); + this.getRef(k)["remove"](handler); + }, + + SetBooleanValue(k, b, onCompleteCb) + { + var handler = getOnCompleteHandler(this, onCompleteCb); + this.getRef(k)["set"]((b===1), handler); + }, + + PushBooleanValue(k, b, onCompleteCb) + { + var handler = getOnCompleteHandler(this, onCompleteCb); + var ref = this.getRef(k)["push"]((b===1), handler); + this.lastPushRef = k + "/" + getKey(ref); + }, + + SetServerTimestamp(k, onCompleteCb) + { + var handler = getOnCompleteHandler(this, onCompleteCb); + this.getRef(k)["set"](serverTimeStamp(), handler); + }, + + PushServerTimestamp(k, onCompleteCb) + { + var handler = getOnCompleteHandler(this, onCompleteCb); + var ref = this.getRef(k)["push"](serverTimeStamp(), handler); + this.lastPushRef = k + "/" + getKey(ref); + }, + AddReadingCallback(k, type_, cbName) + { + this.addCallback(this.getRef(k), type_, cbName); + }, + + RemoveReadingCallback(k, type_, cbName) + { + var absRef = (k != null)? this.getRef(k)["toString"](): null; + var eventType = (type_ != null)? EVENTTYPEMAP[type_]: null; + this.callbackMap.Remove(absRef, eventType, cbName); + }, + + AddReadingCallbackOnce(k, type_, cbName) + { + this.addCallbackOnce(this.getRef(k), type_, cbName); + }, + + RemoveRefOnDisconnect(k) + { + this.getRef(k)["onDisconnect"]()["remove"](); + }, + + SetValueOnDisconnect(k, v) + { + this.getRef(k)["onDisconnect"]()["set"](v); + }, + + UpdateJSONOnDisconnect(k, v) + { + this.getRef(k)["onDisconnect"]()["update"](JSON.parse(v)); + }, + + CancelOnDisconnect(k) + { + this.getRef(k)["onDisconnect"]()["cancel"](); + }, + + + + AddQueryCallback(queryObjs, type_, cbName) + { + var refObj = get_query(queryObjs); + if (refObj == null) + return; + + this.addCallback(refObj, type_, cbName); + }, + + AddQueryCallbackOnce(queryObjs, type_, cbName) + { + var refObj = get_query(queryObjs); + if (refObj == null) + return; + + this.addCallbackOnce(refObj, type_, cbName); + }, + + GoOffline() + { + // 2.x + if (!isFirebase3x()) + { + window["Firebase"]["goOffline"](); + } + + // 3.x + else + { + window["Firebase"]["database"]()["goOffline"](); + } + }, + + GoOnline() + { + // 2.x + if (!isFirebase3x()) + { + window["Firebase"]["goOnline"](); + + } + + // 3.x + else + { + window["Firebase"]["database"]()["goOnline"](); + } + } + }; +} \ No newline at end of file diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/c3runtime/conditions.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/c3runtime/conditions.js new file mode 100755 index 0000000..65fd956 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/c3runtime/conditions.js @@ -0,0 +1,73 @@ +"use strict"; + +{ + C3.Plugins.Rex_Firebase.Cnds = + { + + OnTransaction (cb) + { + return C3.equalsNoCase(cb, this.onTransaction.cb); + }, + + OnReading (cb) + { + return C3.equalsNoCase(cb, this.onReadCb); + }, + + OnComplete (cb) + { + return C3.equalsNoCase(cb, this.onCompleteCb); + }, + + OnError (cb) + { + return C3.equalsNoCase(cb, this.onCompleteCb); + }, + + LastDataIsNull () + { + var data =(this.snapshot === null)? null: this.snapshot["val"](); + return (data === null); + }, + + TransactionInIsNull () + { + var data =(this.onTransaction.input === null)? null: this.onTransaction.input; + return (data === null); + }, + + // cf_deprecated + IsTransactionAborted () { return false; }, + // cf_deprecated + + OnTransactionComplete (cb) + { + return C3.equalsNoCase(cb, this.onTransaction.completedCB); + }, + + OnTransactionError (cb) + { + return C3.equalsNoCase(cb, this.onTransaction.completedCB); + }, + + OnTransactionAbort (cb) + { + return C3.equalsNoCase(cb, this.onTransaction.completedCB); + }, + + OnConnected () + { + return true; + }, + + OnDisconnected () + { + return true; + }, + + IsConnected () + { + return this.isConnected; + } + }; +} \ No newline at end of file diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/c3runtime/expressions.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/c3runtime/expressions.js new file mode 100755 index 0000000..066d2db --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/c3runtime/expressions.js @@ -0,0 +1,81 @@ +"use strict"; + +{ + C3.Plugins.Rex_Firebase.Exps = + { + Domain() + { + return (this.rootpath); + }, + + TransactionIn(default_value) + { + return (window.FirebaseGetValueByKeyPath(this.onTransaction.input, null, default_value)); + }, + + LastData(default_value) + { + var data =(this.snapshot === null)? null: this.snapshot["val"](); + return (window.FirebaseGetValueByKeyPath(data, null, default_value)); + }, + + LastKey(default_value) + { + var key =(this.snapshot === null)? null: getKey(this.snapshot); + return (window.FirebaseGetValueByKeyPath(key, null, default_value)); + }, + + PrevChildName(default_value) + { + return (window.FirebaseGetValueByKeyPath(this.prevChildName, null, default_value)); + }, + + TransactionResult(default_value) + { + return (window.FirebaseGetValueByKeyPath(this.onTransaction.committedValue, null, default_value)); + }, + + LastPushRef() + { + return (this.lastPushRef); + }, + + GenerateKey() + { + var ref = this.getRef()["push"](); + this.exp_LastGeneratedKey = getKey(ref); + return (this.exp_LastGeneratedKey); + }, + + LastGeneratedKey() + { + return (this.exp_LastGeneratedKey); + }, + + ServerTimeOffset() + { + return (this.exp_ServerTimeOffset); + }, + + EstimatedTime() + { + return (new Date().getTime() + this.exp_ServerTimeOffset); + }, + + LastErrorCode() + { + var code; + if (this.error) + code = this.error["code"]; + return (code || ""); + }, + + LastErrorMessage() + { + var s; + if (this.error) + s = this.error["serverResponse"]; + return (s || ""); + } + }; +} \ No newline at end of file diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/c3runtime/instance.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/c3runtime/instance.js new file mode 100755 index 0000000..59d41ca --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/c3runtime/instance.js @@ -0,0 +1,166 @@ +"use strict"; + +{ + C3.Plugins.Rex_Firebase.Instance = class Rex_FirebaseInstance extends C3.SDKInstanceBase + { + constructor(inst, properties) + { + super(inst); + + // Initialise object properties + + + // push + this.lastPushRef = ""; + // transaction + this.onTransaction = {}; + this.onTransaction.cb = null; + this.onTransaction.input = null; + this.onTransaction.output = null; + // transaction completed + this.onTransaction.completedCB = null; + this.onTransaction.committedValue = null; + // on complete + this.onCompleteCb = null; + this.error = null; + // reading + /* + if (!this.recycled) + this.callbackMap = new window.FirebaseCallbackMapKlass(); + else + this.callbackMap.Reset(); + */ + this.callbackMap = new window.FirebaseCallbackMapKlass(); + this.onReadCb = null; + this.snapshot = null; + this.prevChildName = null; + this.exp_LastGeneratedKey = ""; + this.exp_ServerTimeOffset = 0; + this.isConnected = false; + + if (properties) // note properties may be null in some cases + { + this.rootpath = properties[0] + "/"; + var self=this; + var setupFn = function () + { + if (properties[1] === 1) + self.connectionDetectingStart(); + + if (properties[2] === 1) + self.serverTimeOffsetDetectingStart(); + } + } + + + window.FirebaseAddAfterInitializeHandler(setupFn); + + } + + Release() + { + super.Release(); + } + + SaveToJson() + { + return { + // data to be saved for savegames + }; + } + + LoadFromJson(o) + { + // load state for savegames + } + getRef(k) + { + if (k == null) + k = ""; + var path; + if (isFullPath(k)) + path = k; + else + path = this.rootpath + k + "/"; + + // 2.x + if (!isFirebase3x()) + { + return new window["Firebase"](path); + } + + // 3.x + else + { + var fnName = (isFullPath(path))? "refFromURL":"ref"; + return window["Firebase"]["database"]()[fnName](path); + } + } + addCallback(query, type_, cbName) + { + var eventType = EVENTTYPEMAP[type_]; + var self = this; + var reading_handler = function (snapshot, prevChildName) + { + self.onReadCb = cbName; + self.snapshot = snapshot; + self.prevChildName = prevChildName; + self.Trigger(C3.Plugins.Rex_Firebase.Cnds.OnReading, self); + self.onReadCb = null; + }; + + this.callbackMap.Add(query, eventType, cbName, reading_handler); + } + + addCallbackOnce(refObj, type_, cb) + { + var eventType = EVENTTYPEMAP[type_]; + + var self = this; + var reading_handler = function (snapshot, prevChildName) + { + self.onReadCb = cb; + self.snapshot = snapshot; + self.prevChildName = prevChildName; + self.Trigger(C3.Plugins.Rex_Firebase.Cnds.OnReading, self); + self.onReadCb = null; + }; + refObj["once"](eventType, reading_handler); + } + + connectionDetectingStart() + { + var self = this; + var onValueChanged = function (snap) + { + var trig; + var isConnected = !!snap["val"](); + if ( isConnected ) + trig = C3.Plugins.Rex_Firebase.Cnds.OnConnected; + else if (self.isConnected && !isConnected) // disconnected after connected + trig = C3.Plugins.Rex_Firebase.Cnds.OnDisconnected; + + self.isConnected = isConnected; + + self.Trigger(trig, self); + }; + + var p = getRoot(this.getRef()) + "/.info/connected"; + var ref = this.getRef(p); + ref.on("value", onValueChanged); + } + + serverTimeOffsetDetectingStart() + { + var self = this; + var onValueChanged = function (snap) + { + self.exp_ServerTimeOffset = snap["val"]() || 0; + }; + + var p = getRoot(this.getRef()) + "/.info/serverTimeOffset"; + var ref = this.getRef(p); + ref.on("value", onValueChanged); + } + }; +} \ No newline at end of file diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/c3runtime/plugin.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/c3runtime/plugin.js new file mode 100755 index 0000000..ce66825 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/c3runtime/plugin.js @@ -0,0 +1,81 @@ +"use strict"; + var EVENTTYPEMAP = ["value", "child_added", "child_changed", "child_removed","child_moved"]; + var isFirebase3x = function() + { + return (window["FirebaseV3x"] === true); + }; + + var getKey = function (obj) + { + return (!isFirebase3x())? obj["key"]() : obj["key"]; + }; + + var getRefPath = function (obj) + { + return (!isFirebase3x())? obj["ref"]() : obj["ref"]; + }; + + var getRoot = function (obj) + { + return (!isFirebase3x())? obj["root"]() : obj["root"]; + }; + + var serverTimeStamp = function () + { + if (!isFirebase3x()) + return window["Firebase"]["ServerValue"]["TIMESTAMP"]; + else + return window["Firebase"]["database"]["ServerValue"]; + }; + + var getTimestamp = function (obj) + { + return (!isFirebase3x())? obj : obj["TIMESTAMP"]; + }; + // 2.x , 3.x + + var isFullPath = function (p) + { + return (p.substring(0,8) === "https://"); + }; + var getOnCompleteHandler = function (self, onCompleteCb) + { + if ((onCompleteCb === null) || (onCompleteCb === "")) + return; + + var handler = function(error) + { + self.onCompleteCb = onCompleteCb; + self.error = error; + var trig = (error)? C3.Plugins.Rex_Firebase.Cnds.OnError: + C3.Plugins.Rex_Firebase.Cnds.OnComplete; + self.Trigger(trig, self); + self.onCompleteCb = null; + }; + return handler; + }; + // query + var get_query = function (queryObjs) + { + if (queryObjs == null) + return null; + var query = queryObjs.GetFirstPicked(); + if (query == null) + return null; + + return query.GetSdkInstance().GetQuery();; + }; +{ + C3.Plugins.Rex_Firebase = class Rex_FirebasePlugin extends C3.SDKPluginBase + { + constructor(opts) + { + super(opts); + } + + Release() + { + super.Release(); + } + }; +} \ No newline at end of file diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/c3runtime/type.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/c3runtime/type.js new file mode 100755 index 0000000..3c7ec5d --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/c3runtime/type.js @@ -0,0 +1,20 @@ +"use strict"; + +{ + C3.Plugins.Rex_Firebase.Type = class Rex_FirebaseType extends C3.SDKTypeBase + { + constructor(objectClass) + { + super(objectClass); + } + + Release() + { + super.Release(); + } + + OnCreate() + { + } + }; +} \ No newline at end of file diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/icon.png b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase/source/icon.png new file mode 100755 index 0000000000000000000000000000000000000000..1f6724e6e4dc4dbae82c2a78a5adb4ab4bffccea GIT binary patch literal 67646 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

fNthxcd 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ν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 BVFdsH literal 0 HcmV?d00001 diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/aces.json b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/aces.json new file mode 100755 index 0000000..5ccf10f --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/aces.json @@ -0,0 +1,3 @@ +{ + +} diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/addon.json b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/addon.json new file mode 100755 index 0000000..9851851 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/addon.json @@ -0,0 +1,27 @@ +{ + "is-c3-addon": true, + "type": "plugin", + "name": "Firebase API", + "id": "Rex_FirebaseAPI", + "version": "2.4.2.0", + "author": "Rex.Rainbow", + "website": "http://c2rexplugins.weebly.com/rex_firebaseapi.html", + "documentation": "http://c2rexplugins.weebly.com/rex_firebaseapi.html", + "description": "API of real time database-as-a-service. https://www.firebase.com/", + "editor-scripts": [ + "plugin.js", + "type.js", + "instance.js" + ], + "file-list": [ + "firebase.js", + "c2runtime/runtime.js", + "lang/en-US.json", + "aces.json", + "addon.json", + "icon.png", + "plugin.js", + "type.js", + "instance.js" + ] +} diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/c2runtime/runtime.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/c2runtime/runtime.js new file mode 100755 index 0000000..17447d8 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/c2runtime/runtime.js @@ -0,0 +1,680 @@ +// ECMAScript 5 strict mode +"use strict"; + +assert2(cr, "cr namespace not created"); +assert2(cr.plugins_, "cr.plugins_ not created"); + +///////////////////////////////////// +// Plugin class +cr.plugins_.Rex_FirebaseAPI = function(runtime) +{ + this.runtime = runtime; +}; + +(function () +{ + var pluginProto = cr.plugins_.Rex_FirebaseAPI.prototype; + + ///////////////////////////////////// + // Object type class + pluginProto.Type = function(plugin) + { + this.plugin = plugin; + this.runtime = plugin.runtime; + }; + + var typeProto = pluginProto.Type.prototype; + + typeProto.onCreate = function() + { + }; + + ///////////////////////////////////// + // Instance class + pluginProto.Instance = function(type) + { + this.type = type; + this.runtime = type.runtime; + }; + + var instanceProto = pluginProto.Instance.prototype; + + instanceProto.onCreate = function() + { + window["Firebase"]["enableLogging"](this.properties[0] == 1); + runAfterInitializeHandlers(); + }; + + instanceProto.onDestroy = function () + { + }; + + // 2.x , 3.x + var isFirebase3x = function() + { + return (window["FirebaseV3x"] === true); + }; + + var isFullPath = function (p) + { + return (p.substring(0,8) === "https://"); + }; + + var get_ref = function(path) + { + // 2.x + if (!isFirebase3x()) + { + return new window["Firebase"](path); + } + + // 3.x + else + { + var fnName = (isFullPath(path))? "refFromURL":"ref"; + return window["Firebase"]["database"]()[fnName](path); + } + + }; + + instanceProto.get_ref = function(k) + { + if (k == null) + k = ""; + var path; + if (isFullPath(k)) + path = k; + else + path = this.rootpath + k + "/"; + + return get_ref(path); + }; + + var get_key = function (obj) + { + return (!isFirebase3x())? obj["key"]() : obj["key"]; + }; + + var get_refPath = function (obj) + { + return (!isFirebase3x())? obj["ref"]() : obj["ref"]; + }; + + var get_root = function (obj) + { + return (!isFirebase3x())? obj["root"]() : obj["root"]; + }; + + var serverTimeStamp = function () + { + if (!isFirebase3x()) + return window["Firebase"]["ServerValue"]["TIMESTAMP"]; + else + return window["Firebase"]["database"]["ServerValue"]; + }; + + var get_timestamp = function (obj) + { + return (!isFirebase3x())? obj : obj["TIMESTAMP"]; + }; + // 2.x , 3.x + + ////////////////////////////////////// + // Conditions + function Cnds() {}; + pluginProto.cnds = new Cnds(); + + ////////////////////////////////////// + // Actions + function Acts() {}; + pluginProto.acts = new Acts(); + + ////////////////////////////////////// + // Expressions + function Exps() {}; + pluginProto.exps = new Exps(); + + // -------------------------------------------------------------------------- + // -------------------------------------------------------------------------- + // -------------------------------------------------------------------------- + var __afterInitialHandler = []; + var addAfterInitialHandler = function(callback) + { + if (__afterInitialHandler === null) + callback() + else + __afterInitialHandler.push(callback); + }; + var runAfterInitializeHandlers = function() + { + var i, cnt=__afterInitialHandler.length; + for(i=0; i this.items.length - 1)) + end = this.items.length - 1; + + var current_frame = runtime.getCurrentEventStack(); + var current_event = current_frame.current_event; + var solModifierAfterCnds = current_frame.isModifierAfterCnds(); + + var i; + for(i=start; i<=end; i++) + { + if (solModifierAfterCnds) + { + runtime.pushCopySol(current_event.solModifiers); + } + + if (this.onGetIterItem) + this.onGetIterItem(this.items[i], i); + current_event.retrigger(); + + if (solModifierAfterCnds) + { + runtime.popSol(current_event.solModifiers); + } + } + + return false; + }; + // export + // -------------------------------------------------------------------------- + + // -------------------------------------------------------------------------- + // internal + ItemListKlassProto.add_item = function(snapshot, prevName, force_push) + { + var item; + if (this.snapshot2Item) + item = this.snapshot2Item(snapshot); + else + { + var k = get_key(snapshot); + item = snapshot["val"](); + item[this.keyItemID] = k; + } + + if (force_push === true) + { + this.items.push(item); + return; + } + + if (prevName == null) + { + this.items.unshift(item); + } + else + { + var i = this.itemID2Index[prevName]; + if (i == this.items.length-1) + this.items.push(item); + else + this.items.splice(i+1, 0, item); + } + + return item; + }; + + ItemListKlassProto.remove_item = function(snapshot) + { + var k = get_key(snapshot); + var i = this.itemID2Index[k]; + var item = this.items[i]; + cr.arrayRemove(this.items, i); + return item; + }; + + ItemListKlassProto.update_itemID2Index = function() + { + clean_table(this.itemID2Index); + var i,cnt = this.items.length; + for (i=0; i this.items.length - 1)) + end = this.items.length - 1; + + var current_frame = runtime.GetEventSheetManager().GetCurrentEventStackFrame(); + var current_event = current_frame.GetCurrentEvent(); + var solmod = current_event.GetSolModifiers(); + var solModifierAfterCnds = current_frame.IsSolModifierAfterCnds(); + var c = runtime.GetEventSheetManager().GetEventStack(); + var p = runtime.GetEventStack(); + var h = c.Push(current_event); + + var i; + for(i=start; i<=end; i++) + { + if (solModifierAfterCnds) + { + runtime.GetEventSheetManager().PushCopySol(solmod); + } + + if (this.onGetIterItem) + this.onGetIterItem(this.items[i], i); + current_event.Retrigger(current_frame,h); + + if (solModifierAfterCnds) + { + runtime.GetEventSheetManager().PopSol(solmod); + + } + } + p.Pop(); + + return false; + }; + // export + // -------------------------------------------------------------------------- + + // -------------------------------------------------------------------------- + // internal + ItemListKlassProto.add_item = function(snapshot, prevName, force_push) + { + var item; + if (this.snapshot2Item) + item = this.snapshot2Item(snapshot); + else + { + var k = get_key(snapshot); + item = snapshot["val"](); + item[this.keyItemID] = k; + } + + if (force_push === true) + { + this.items.push(item); + return; + } + + if (prevName == null) + { + this.items.unshift(item); + } + else + { + var i = this.itemID2Index[prevName]; + if (i == this.items.length-1) + this.items.push(item); + else + this.items.splice(i+1, 0, item); + } + + return item; + }; + + ItemListKlassProto.remove_item = function(snapshot) + { + var k = get_key(snapshot); + var i = this.itemID2Index[k]; + var item = this.items[i]; + C3.arrayRemove(this.items, i); + return item; + }; + + ItemListKlassProto.update_itemID2Index = function() + { + clean_table(this.itemID2Index); + var i,cnt = this.items.length; + for (i=0; ib?e+="000":256>b?e+="00":4096>b&&(e+="0");return Da[a]=e+b.toString(16)}),'"')};function Fa(){return Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^ja()).toString(36)};var w;a:{var Ga=n.navigator;if(Ga){var Ha=Ga.userAgent;if(Ha){w=Ha;break a}}w=""};function Ia(){this.Ya=-1};function Ja(){this.Ya=-1;this.Ya=64;this.P=[];this.pe=[];this.eg=[];this.Od=[];this.Od[0]=128;for(var a=1;ae;e++)d[e]=b.charCodeAt(c)<<24|b.charCodeAt(c+1)<<16|b.charCodeAt(c+2)<<8|b.charCodeAt(c+3),c+=4;else for(e=0;16>e;e++)d[e]=b[c]<<24|b[c+1]<<16|b[c+2]<<8|b[c+3],c+=4;for(e=16;80>e;e++){var f=d[e-3]^d[e-8]^d[e-14]^d[e-16];d[e]=(f<<1|f>>>31)&4294967295}b=a.P[0];c=a.P[1];for(var g=a.P[2],k=a.P[3],m=a.P[4],l,e=0;80>e;e++)40>e?20>e?(f=k^c&(g^k),l=1518500249):(f=c^g^k,l=1859775393):60>e?(f=c&g|k&(c|g),l=2400959708):(f=c^g^k,l=3395469782),f=(b<< +5|b>>>27)+f+m+l+d[e]&4294967295,m=k,k=g,g=(c<<30|c>>>2)&4294967295,c=b,b=f;a.P[0]=a.P[0]+b&4294967295;a.P[1]=a.P[1]+c&4294967295;a.P[2]=a.P[2]+g&4294967295;a.P[3]=a.P[3]+k&4294967295;a.P[4]=a.P[4]+m&4294967295} +Ja.prototype.update=function(a,b){if(null!=a){p(b)||(b=a.length);for(var c=b-this.Ya,d=0,e=this.pe,f=this.ec;dc?Math.max(0,a.length+c):c;if(q(a))return q(b)&&1==b.length?a.indexOf(b,c):-1;for(;cc?null:q(a)?a.charAt(c):a[c]}function Sa(a,b,c){for(var d=a.length,e=q(a)?a.split(""):a,f=0;f=arguments.length?x.slice.call(a,b):x.slice.call(a,b,c)} +function Va(a,b){a.sort(b||Wa)}function Wa(a,b){return a>b?1:aparseFloat(a))?String(b):a})();var kb=null,lb=null,mb=null;function nb(a,b){if(!ea(a))throw Error("encodeByteArray takes an array as a parameter");ob();for(var c=b?lb:kb,d=[],e=0;e>2,f=(f&3)<<4|k>>4,k=(k&15)<<2|l>>6,l=l&63;m||(l=64,g||(k=64));d.push(c[t],c[f],c[k],c[l])}return d.join("")} +function ob(){if(!kb){kb={};lb={};mb={};for(var a=0;65>a;a++)kb[a]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(a),lb[a]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.".charAt(a),mb[lb[a]]=a,62<=a&&(mb["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(a)]=a)}};function pb(a,b){this.N=qb;this.Rf=void 0;this.Ba=this.Ha=null;this.yd=this.ye=!1;if(a==rb)sb(this,tb,b);else try{var c=this;a.call(b,function(a){sb(c,tb,a)},function(a){if(!(a instanceof ub))try{if(a instanceof Error)throw a;throw Error("Promise rejected.");}catch(b){}sb(c,vb,a)})}catch(d){sb(this,vb,d)}}var qb=0,tb=2,vb=3;function rb(){}pb.prototype.then=function(a,b,c){return wb(this,r(a)?a:null,r(b)?b:null,c)};pb.prototype.then=pb.prototype.then;pb.prototype.$goog_Thenable=!0;h=pb.prototype; +h.gh=function(a,b){return wb(this,null,a,b)};h.cancel=function(a){this.N==qb&&$a(function(){var b=new ub(a);xb(this,b)},this)};function xb(a,b){if(a.N==qb)if(a.Ha){var c=a.Ha;if(c.Ba){for(var d=0,e=-1,f=0,g;g=c.Ba[f];f++)if(g=g.o)if(d++,g==a&&(e=f),0<=e&&1=e&&(e-=55296,d++,Kb(de?b[c++]=e:(2048>e?b[c++]=e>>6|192:(65536>e?b[c++]=e>>12|224:(b[c++]=e>>18|240,b[c++]=e>>12&63|128),b[c++]=e>>6&63|128),b[c++]=e&63|128)}return b}function Pb(a){for(var b=0,c=0;cd?b++:2048>d?b+=2:55296<=d&&56319>=d?(b+=4,c++):b+=3}return b};function D(a,b,c,d){var e;dc&&(e=0===c?"none":"no more than "+c);if(e)throw Error(a+" failed: Was called with "+d+(1===d?" argument.":" arguments.")+" Expects "+e+".");}function E(a,b,c){var d="";switch(b){case 1:d=c?"first":"First";break;case 2:d=c?"second":"Second";break;case 3:d=c?"third":"Third";break;case 4:d=c?"fourth":"Fourth";break;default:throw Error("errorPrefix called with argumentNumber > 4. Need to update it?");}return a=a+" failed: "+(d+" argument ")} +function F(a,b,c,d){if((!d||p(c))&&!r(c))throw Error(E(a,b,d)+"must be a valid function.");}function Qb(a,b,c){if(p(c)&&(!ga(c)||null===c))throw Error(E(a,b,!0)+"must be a valid context object.");};function Rb(a){return"undefined"!==typeof JSON&&p(JSON.parse)?JSON.parse(a):za(a)}function G(a){if("undefined"!==typeof JSON&&p(JSON.stringify))a=JSON.stringify(a);else{var b=[];Ba(new Aa,a,b);a=b.join("")}return a};function Sb(){this.Zd=H}Sb.prototype.j=function(a){return this.Zd.S(a)};Sb.prototype.toString=function(){return this.Zd.toString()};function Tb(){}Tb.prototype.uf=function(){return null};Tb.prototype.Ce=function(){return null};var Ub=new Tb;function Vb(a,b,c){this.bg=a;this.Oa=b;this.Nd=c}Vb.prototype.uf=function(a){var b=this.Oa.Q;if(Wb(b,a))return b.j().T(a);b=null!=this.Nd?new Xb(this.Nd,!0,!1):this.Oa.w();return this.bg.Bc(a,b)};Vb.prototype.Ce=function(a,b,c){var d=null!=this.Nd?this.Nd:Yb(this.Oa);a=this.bg.qe(d,b,1,c,a);return 0===a.length?null:a[0]};function Zb(){this.xb=[]}function $b(a,b){for(var c=null,d=0;db?c=c.left:0c?d=d.left:0e)a=this.Je?a.left:a.right;else if(0===e){this.Ta.push(a);break}else this.Ta.push(a),a=this.Je?a.right:a.left} +function Ic(a){if(0===a.Ta.length)return null;var b=a.Ta.pop(),c;c=a.Xd?a.Xd(b.key,b.value):{key:b.key,value:b.value};if(a.Je)for(b=b.left;!b.e();)a.Ta.push(b),b=b.right;else for(b=b.right;!b.e();)a.Ta.push(b),b=b.left;return c}function Jc(a){if(0===a.Ta.length)return null;var b;b=a.Ta;b=b[b.length-1];return a.Xd?a.Xd(b.key,b.value):{key:b.key,value:b.value}}function Kc(a,b,c,d,e){this.key=a;this.value=b;this.color=null!=c?c:!0;this.left=null!=d?d:Fc;this.right=null!=e?e:Fc}h=Kc.prototype; +h.$=function(a,b,c,d,e){return new Kc(null!=a?a:this.key,null!=b?b:this.value,null!=c?c:this.color,null!=d?d:this.left,null!=e?e:this.right)};h.count=function(){return this.left.count()+1+this.right.count()};h.e=function(){return!1};h.ka=function(a){return this.left.ka(a)||a(this.key,this.value)||this.right.ka(a)};function Lc(a){return a.left.e()?a:Lc(a.left)}h.Vc=function(){return Lc(this).key};h.jc=function(){return this.right.e()?this.key:this.right.jc()}; +h.Sa=function(a,b,c){var d,e;e=this;d=c(a,e.key);e=0>d?e.$(null,null,null,e.left.Sa(a,b,c),null):0===d?e.$(null,b,null,null,null):e.$(null,null,null,null,e.right.Sa(a,b,c));return Mc(e)};function Nc(a){if(a.left.e())return Fc;a.left.ha()||a.left.left.ha()||(a=Oc(a));a=a.$(null,null,null,Nc(a.left),null);return Mc(a)} +h.remove=function(a,b){var c,d;c=this;if(0>b(a,c.key))c.left.e()||c.left.ha()||c.left.left.ha()||(c=Oc(c)),c=c.$(null,null,null,c.left.remove(a,b),null);else{c.left.ha()&&(c=Pc(c));c.right.e()||c.right.ha()||c.right.left.ha()||(c=Qc(c),c.left.left.ha()&&(c=Pc(c),c=Qc(c)));if(0===b(a,c.key)){if(c.right.e())return Fc;d=Lc(c.right);c=c.$(d.key,d.value,null,null,Nc(c.right))}c=c.$(null,null,null,null,c.right.remove(a,b))}return Mc(c)};h.ha=function(){return this.color}; +function Mc(a){a.right.ha()&&!a.left.ha()&&(a=Rc(a));a.left.ha()&&a.left.left.ha()&&(a=Pc(a));a.left.ha()&&a.right.ha()&&(a=Qc(a));return a}function Oc(a){a=Qc(a);a.right.left.ha()&&(a=a.$(null,null,null,null,Pc(a.right)),a=Rc(a),a=Qc(a));return a}function Rc(a){return a.right.$(null,null,a.color,a.$(null,null,!0,null,a.right.left),null)}function Pc(a){return a.left.$(null,null,a.color,null,a.$(null,null,!0,a.left.right,null))} +function Qc(a){return a.$(null,null,!a.color,a.left.$(null,null,!a.left.color,null,null),a.right.$(null,null,!a.right.color,null,null))}function Sc(){}h=Sc.prototype;h.$=function(){return this};h.Sa=function(a,b){return new Kc(a,b,null)};h.remove=function(){return this};h.count=function(){return 0};h.e=function(){return!0};h.ka=function(){return!1};h.Vc=function(){return null};h.jc=function(){return null};h.ha=function(){return!1};var Fc=new Sc;function Tc(a,b){return a&&"object"===typeof a?(O(".sv"in a,"Unexpected leaf node or priority contents"),b[a[".sv"]]):a}function Uc(a,b){var c=new Vc;Wc(a,new P(""),function(a,e){c.rc(a,Xc(e,b))});return c}function Xc(a,b){var c=a.C().J(),c=Tc(c,b),d;if(a.L()){var e=Tc(a.Ea(),b);return e!==a.Ea()||c!==a.C().J()?new Yc(e,Q(c)):a}d=a;c!==a.C().J()&&(d=d.ia(new Yc(c)));a.R(R,function(a,c){var e=Xc(c,b);e!==c&&(d=d.W(a,e))});return d};function Zc(){this.Ac={}}Zc.prototype.set=function(a,b){null==b?delete this.Ac[a]:this.Ac[a]=b};Zc.prototype.get=function(a){return y(this.Ac,a)?this.Ac[a]:null};Zc.prototype.remove=function(a){delete this.Ac[a]};Zc.prototype.Af=!0;function $c(a){this.Ic=a;this.Sd="firebase:"}h=$c.prototype;h.set=function(a,b){null==b?this.Ic.removeItem(this.Sd+a):this.Ic.setItem(this.Sd+a,G(b))};h.get=function(a){a=this.Ic.getItem(this.Sd+a);return null==a?null:Rb(a)};h.remove=function(a){this.Ic.removeItem(this.Sd+a)};h.Af=!1;h.toString=function(){return this.Ic.toString()};function ad(a){try{if("undefined"!==typeof window&&"undefined"!==typeof window[a]){var b=window[a];b.setItem("firebase:sentinel","cache");b.removeItem("firebase:sentinel");return new $c(b)}}catch(c){}return new Zc}var bd=ad("localStorage"),cd=ad("sessionStorage");function dd(a,b,c,d,e){this.host=a.toLowerCase();this.domain=this.host.substr(this.host.indexOf(".")+1);this.ob=b;this.lc=c;this.jh=d;this.Rd=e||"";this.ab=bd.get("host:"+a)||this.host}function ed(a,b){b!==a.ab&&(a.ab=b,"s-"===a.ab.substr(0,2)&&bd.set("host:"+a.host,a.ab))} +function fd(a,b,c){O("string"===typeof b,"typeof type must == string");O("object"===typeof c,"typeof params must == object");if(b===gd)b=(a.ob?"wss://":"ws://")+a.ab+"/.ws?";else if(b===hd)b=(a.ob?"https://":"http://")+a.ab+"/.lp?";else throw Error("Unknown connection type: "+b);a.host!==a.ab&&(c.ns=a.lc);var d=[];v(c,function(a,b){d.push(b+"="+a)});return b+d.join("&")}dd.prototype.toString=function(){var a=(this.ob?"https://":"http://")+this.host;this.Rd&&(a+="<"+this.Rd+">");return a};var id=function(){var a=1;return function(){return a++}}(),O=Kb,jd=Lb; +function kd(a){try{var b;if("undefined"!==typeof atob)b=atob(a);else{ob();for(var c=mb,d=[],e=0;e>4);64!=k&&(d.push(g<<4&240|k>>2),64!=m&&d.push(k<<6&192|m))}if(8192>d.length)b=String.fromCharCode.apply(null,d);else{a="";for(c=0;ca.ec?a.update(a.Od,56-a.ec):a.update(a.Od,a.Ya-(a.ec-56));for(var d=a.Ya-1;56<=d;d--)a.pe[d]=c&255,c/=256;Ka(a,a.pe);for(d=c=0;5>d;d++)for(var e=24;0<=e;e-=8)b[c]=a.P[d]>>e&255,++c;return nb(b)} +function md(a){for(var b="",c=0;ca?c.push(a.substring(d,a.length)):c.push(a.substring(d,d+b));return c}function zd(a,b){if(da(a))for(var c=0;ca,a=Math.abs(a),a>=Math.pow(2,-1022)?(d=Math.min(Math.floor(Math.log(a)/Math.LN2),1023),c=d+1023,d=Math.round(a*Math.pow(2,52-d)-Math.pow(2,52))):(c=0,d=Math.round(a/Math.pow(2,-1074))));e=[];for(a=52;a;--a)e.push(d%2?1:0),d=Math.floor(d/2);for(a=11;a;--a)e.push(c%2?1:0),c=Math.floor(c/2);e.push(b?1:0);e.reverse();b=e.join("");c="";for(a=0;64>a;a+=8)d=parseInt(b.substr(a,8),2).toString(16),1===d.length&& +(d="0"+d),c+=d;return c.toLowerCase()}var Bd=/^-?\d{1,10}$/;function vd(a){return Bd.test(a)&&(a=Number(a),-2147483648<=a&&2147483647>=a)?a:null}function gc(a){try{a()}catch(b){setTimeout(function(){S("Exception was thrown by user callback.",b.stack||"");throw b;},Math.floor(0))}}function T(a,b){if(r(a)){var c=Array.prototype.slice.call(arguments,1).slice();gc(function(){a.apply(null,c)})}};function Cd(a){var b={},c={},d={},e="";try{var f=a.split("."),b=Rb(kd(f[0])||""),c=Rb(kd(f[1])||""),e=f[2],d=c.d||{};delete c.d}catch(g){}return{mh:b,Ec:c,data:d,bh:e}}function Dd(a){a=Cd(a).Ec;return"object"===typeof a&&a.hasOwnProperty("iat")?z(a,"iat"):null}function Ed(a){a=Cd(a);var b=a.Ec;return!!a.bh&&!!b&&"object"===typeof b&&b.hasOwnProperty("iat")};function Fd(a){this.Y=a;this.g=a.n.g}function Gd(a,b,c,d){var e=[],f=[];Ma(b,function(b){"child_changed"===b.type&&a.g.Dd(b.Oe,b.Na)&&f.push(new J("child_moved",b.Na,b.Za))});Hd(a,e,"child_removed",b,d,c);Hd(a,e,"child_added",b,d,c);Hd(a,e,"child_moved",f,d,c);Hd(a,e,"child_changed",b,d,c);Hd(a,e,ic,b,d,c);return e}function Hd(a,b,c,d,e,f){d=Na(d,function(a){return a.type===c});Va(d,u(a.qg,a));Ma(d,function(c){var d=Id(a,c,f);Ma(e,function(e){e.Qf(c.type)&&b.push(e.createEvent(d,a.Y))})})} +function Id(a,b,c){"value"!==b.type&&"child_removed"!==b.type&&(b.Td=c.wf(b.Za,b.Na,a.g));return b}Fd.prototype.qg=function(a,b){if(null==a.Za||null==b.Za)throw jd("Should only compare child_ events.");return this.g.compare(new L(a.Za,a.Na),new L(b.Za,b.Na))};function Jd(){this.ib={}} +function Kd(a,b){var c=b.type,d=b.Za;O("child_added"==c||"child_changed"==c||"child_removed"==c,"Only child changes supported for tracking");O(".priority"!==d,"Only non-priority child changes can be tracked.");var e=z(a.ib,d);if(e){var f=e.type;if("child_added"==c&&"child_removed"==f)a.ib[d]=new J("child_changed",b.Na,d,e.Na);else if("child_removed"==c&&"child_added"==f)delete a.ib[d];else if("child_removed"==c&&"child_changed"==f)a.ib[d]=new J("child_removed",e.Oe,d);else if("child_changed"==c&& +"child_added"==f)a.ib[d]=new J("child_added",b.Na,d);else if("child_changed"==c&&"child_changed"==f)a.ib[d]=new J("child_changed",b.Na,d,e.Oe);else throw jd("Illegal combination of changes: "+b+" occurred after "+e);}else a.ib[d]=b};function Ld(a){this.g=a}h=Ld.prototype;h.H=function(a,b,c,d,e,f){O(a.Mc(this.g),"A node must be indexed if only a child is updated");e=a.T(b);if(e.S(d).ea(c.S(d))&&e.e()==c.e())return a;null!=f&&(c.e()?a.Fa(b)?Kd(f,new J("child_removed",e,b)):O(a.L(),"A child remove without an old child only makes sense on a leaf node"):e.e()?Kd(f,new J("child_added",c,b)):Kd(f,new J("child_changed",c,b,e)));return a.L()&&c.e()?a:a.W(b,c).pb(this.g)}; +h.ya=function(a,b,c){null!=c&&(a.L()||a.R(R,function(a,e){b.Fa(a)||Kd(c,new J("child_removed",e,a))}),b.L()||b.R(R,function(b,e){if(a.Fa(b)){var f=a.T(b);f.ea(e)||Kd(c,new J("child_changed",e,b,f))}else Kd(c,new J("child_added",e,b))}));return b.pb(this.g)};h.ia=function(a,b){return a.e()?H:a.ia(b)};h.Ra=function(){return!1};h.$b=function(){return this};function Md(a){this.Fe=new Ld(a.g);this.g=a.g;var b;a.oa?(b=Nd(a),b=a.g.Sc(Od(a),b)):b=a.g.Wc();this.gd=b;a.ra?(b=Pd(a),a=a.g.Sc(Rd(a),b)):a=a.g.Tc();this.Jc=a}h=Md.prototype;h.matches=function(a){return 0>=this.g.compare(this.gd,a)&&0>=this.g.compare(a,this.Jc)};h.H=function(a,b,c,d,e,f){this.matches(new L(b,c))||(c=H);return this.Fe.H(a,b,c,d,e,f)}; +h.ya=function(a,b,c){b.L()&&(b=H);var d=b.pb(this.g),d=d.ia(H),e=this;b.R(R,function(a,b){e.matches(new L(a,b))||(d=d.W(a,H))});return this.Fe.ya(a,d,c)};h.ia=function(a){return a};h.Ra=function(){return!0};h.$b=function(){return this.Fe};function Sd(a){this.ua=new Md(a);this.g=a.g;O(a.la,"Only valid if limit has been set");this.ma=a.ma;this.Nb=!Td(a)}h=Sd.prototype;h.H=function(a,b,c,d,e,f){this.ua.matches(new L(b,c))||(c=H);return a.T(b).ea(c)?a:a.Hb()=this.g.compare(this.ua.gd,f):0>=this.g.compare(f,this.ua.Jc))d=d.W(f.name,f.U),e++;else break}}else{d=b.pb(this.g);d=d.ia(H);var k,m,l;if(this.Nb){b=d.xf(this.g);k=this.ua.Jc;m=this.ua.gd;var t=Vd(this.g);l=function(a,b){return t(b,a)}}else b=d.ac(this.g),k=this.ua.gd, +m=this.ua.Jc,l=Vd(this.g);for(var e=0,A=!1;0=l(k,f)&&(A=!0),(g=A&&e=l(f,m))?e++:d=d.W(f.name,H)}return this.ua.$b().ya(a,d,c)};h.ia=function(a){return a};h.Ra=function(){return!0};h.$b=function(){return this.ua.$b()}; +function Ud(a,b,c,d,e,f){var g;if(a.Nb){var k=Vd(a.g);g=function(a,b){return k(b,a)}}else g=Vd(a.g);O(b.Hb()==a.ma,"");var m=new L(c,d),l=a.Nb?Wd(b,a.g):Xd(b,a.g),t=a.ua.matches(m);if(b.Fa(c)){for(var A=b.T(c),l=e.Ce(a.g,l,a.Nb);null!=l&&(l.name==c||b.Fa(l.name));)l=e.Ce(a.g,l,a.Nb);e=null==l?1:g(l,m);if(t&&!d.e()&&0<=e)return null!=f&&Kd(f,new J("child_changed",d,c,A)),b.W(c,d);null!=f&&Kd(f,new J("child_removed",A,c));b=b.W(c,H);return null!=l&&a.ua.matches(l)?(null!=f&&Kd(f,new J("child_added", +l.U,l.name)),b.W(l.name,l.U)):b}return d.e()?b:t&&0<=g(l,m)?(null!=f&&(Kd(f,new J("child_removed",l.U,l.name)),Kd(f,new J("child_added",d,c))),b.W(c,d).W(l.name,H)):b};function Yd(a,b){this.me=a;this.og=b}function Zd(a){this.X=a} +Zd.prototype.gb=function(a,b,c,d){var e=new Jd,f;if(b.type===Bc)b.source.Ae?c=$d(this,a,b.path,b.Ja,c,d,e):(O(b.source.tf,"Unknown source."),f=b.source.ef||mc(a.w())&&!b.path.e(),c=ae(this,a,b.path,b.Ja,c,d,f,e));else if(b.type===be)b.source.Ae?c=ce(this,a,b.path,b.children,c,d,e):(O(b.source.tf,"Unknown source."),f=b.source.ef||mc(a.w()),c=de(this,a,b.path,b.children,c,d,f,e));else if(b.type===ee)if(b.Yd)if(b=b.path,null!=c.xc(b))c=a;else{f=new Vb(c,a,d);d=a.Q.j();if(b.e()||".priority"===K(b))lc(a.w())? +b=c.Aa(Yb(a)):(b=a.w().j(),O(b instanceof fe,"serverChildren would be complete if leaf node"),b=c.Cc(b)),b=this.X.ya(d,b,e);else{var g=K(b),k=c.Bc(g,a.w());null==k&&Wb(a.w(),g)&&(k=d.T(g));b=null!=k?this.X.H(d,g,k,N(b),f,e):a.Q.j().Fa(g)?this.X.H(d,g,H,N(b),f,e):d;b.e()&&lc(a.w())&&(d=c.Aa(Yb(a)),d.L()&&(b=this.X.ya(b,d,e)))}d=lc(a.w())||null!=c.xc(M);c=ge(a,b,d,this.X.Ra())}else c=he(this,a,b.path,b.Ub,c,d,e);else if(b.type===Dc)d=b.path,b=a.w(),f=b.j(),g=b.ga||d.e(),c=ie(this,new je(a.Q,new Xb(f, +g,b.Yb)),d,c,Ub,e);else throw jd("Unknown operation type: "+b.type);e=qa(e.ib);d=c;b=d.Q;b.ga&&(f=b.j().L()||b.j().e(),g=ke(a),(0b.compare(d,a);)Ic(c),d=Jc(c);return c};h.xf=function(a){return this.dc(a.Tc(),a)};h.dc=function(a,b){var c=Te(this,b);if(c)return c.dc(a,function(a){return a});for(var c=this.m.dc(a.name,wc),d=Jc(c);null!=d&&0f.status){try{b=Rb(f.responseText)}catch(c){S("Failed to parse JSON response for "+e+": "+f.responseText)}d(null,b)}else 401!==f.status&&404!== +f.status&&S("Got unsuccessful REST response for "+e+" Status: "+f.status),d(f.status);d=null}};f.open("GET",e,!0);f.send()};function ff(a){O(da(a)&&0f;f++)b[f]=Math.floor(64*Math.random());for(f=0;12>f;f++)c+="-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz".charAt(b[f]);O(20===c.length,"nextPushId: Length should be 20."); +return c}}();function jf(){ff.call(this,["online"]);this.oc=!0;if("undefined"!==typeof window&&"undefined"!==typeof window.addEventListener){var a=this;window.addEventListener("online",function(){a.oc||(a.oc=!0,a.ie("online",!0))},!1);window.addEventListener("offline",function(){a.oc&&(a.oc=!1,a.ie("online",!1))},!1)}}ka(jf,ff);jf.prototype.Ee=function(a){O("online"===a,"Unknown event type: "+a);return[this.oc]};ba(jf);function kf(){ff.call(this,["visible"]);var a,b;"undefined"!==typeof document&&"undefined"!==typeof document.addEventListener&&("undefined"!==typeof document.hidden?(b="visibilitychange",a="hidden"):"undefined"!==typeof document.mozHidden?(b="mozvisibilitychange",a="mozHidden"):"undefined"!==typeof document.msHidden?(b="msvisibilitychange",a="msHidden"):"undefined"!==typeof document.webkitHidden&&(b="webkitvisibilitychange",a="webkitHidden"));this.Sb=!0;if(b){var c=this;document.addEventListener(b, +function(){var b=!document[a];b!==c.Sb&&(c.Sb=b,c.ie("visible",b))},!1)}}ka(kf,ff);kf.prototype.Ee=function(a){O("visible"===a,"Unknown event type: "+a);return[this.Sb]};ba(kf);function P(a,b){if(1==arguments.length){this.u=a.split("/");for(var c=0,d=0;d=a.u.length?null:a.u[a.aa]}function le(a){return a.u.length-a.aa}function N(a){var b=a.aa;b=this.u.length)return null;for(var a=[],b=this.aa;b=this.u.length};h.ea=function(a){if(le(this)!==le(a))return!1;for(var b=this.aa,c=a.aa;b<=this.u.length;b++,c++)if(this.u[b]!==a.u[c])return!1;return!0}; +h.contains=function(a){var b=this.aa,c=a.aa;if(le(this)>le(a))return!1;for(;b=b&&Rf(g,c.path)?d=!1:c.path.contains(g.path)&&(e=!0));f--}if(d){if(e)this.V=Sf(this.pa,Tf,M),this.Pc=010485760/3&&10485760=a}else if(-1=a;return!1};function Gg(){var a=window.opener.frames,b;for(b=a.length-1;0<=b;b--)try{if(a[b].location.protocol===window.location.protocol&&a[b].location.host===window.location.host&&"__winchan_relay_frame"===a[b].name)return a[b]}catch(c){}return null}function Hg(a,b,c){a.attachEvent?a.attachEvent("on"+b,c):a.addEventListener&&a.addEventListener(b,c,!1)}function Ig(a,b,c){a.detachEvent?a.detachEvent("on"+b,c):a.removeEventListener&&a.removeEventListener(b,c,!1)} +function Jg(a){/^https?:\/\//.test(a)||(a=window.location.href);var b=/^(https?:\/\/[\-_a-zA-Z\.0-9:]+)/.exec(a);return b?b[1]:a}function Kg(a){var b="";try{a=a.replace(/.*\?/,"");var c=Jb(a);c&&y(c,"__firebase_request_key")&&(b=z(c,"__firebase_request_key"))}catch(d){}return b}function Lg(){try{var a=document.location.hash.replace(/&__firebase_request_key=([a-zA-z0-9]*)/,""),a=a.replace(/\?$/,""),a=a.replace(/^#+$/,"");document.location.hash=a}catch(b){}} +function Mg(){var a=sd(xg);return a.scheme+"://"+a.host+"/v2"}function Ng(a){return Mg()+"/"+a+"/auth/channel"};function Og(a){var b=this;this.hb=a;this.fe="*";Fg(8)?this.Uc=this.Cd=Gg():(this.Uc=window.opener,this.Cd=window);if(!b.Uc)throw"Unable to find relay frame";Hg(this.Cd,"message",u(this.nc,this));Hg(this.Cd,"message",u(this.Ff,this));try{Pg(this,{a:"ready"})}catch(c){Hg(this.Uc,"load",function(){Pg(b,{a:"ready"})})}Hg(window,"unload",u(this.Ng,this))}function Pg(a,b){b=G(b);Fg(8)?a.Uc.doPost(b,a.fe):a.Uc.postMessage(b,a.fe)} +Og.prototype.nc=function(a){var b=this,c;try{c=Rb(a.data)}catch(d){}c&&"request"===c.a&&(Ig(window,"message",this.nc),this.fe=a.origin,this.hb&&setTimeout(function(){b.hb(b.fe,c.d,function(a,c){b.mg=!c;b.hb=void 0;Pg(b,{a:"response",d:a,forceKeepWindowOpen:c})})},0))};Og.prototype.Ng=function(){try{Ig(this.Cd,"message",this.Ff)}catch(a){}this.hb&&(Pg(this,{a:"error",d:"unknown closed window"}),this.hb=void 0);try{window.close()}catch(b){}};Og.prototype.Ff=function(a){if(this.mg&&"die"===a.data)try{window.close()}catch(b){}};function Qg(a){this.tc=Fa()+Fa()+Fa();this.Kf=a}Qg.prototype.open=function(a,b){cd.set("redirect_request_id",this.tc);cd.set("redirect_request_id",this.tc);b.requestId=this.tc;b.redirectTo=b.redirectTo||window.location.href;a+=(/\?/.test(a)?"":"?")+Ib(b);window.location=a};Qg.isAvailable=function(){return!Eg()&&!Dg()};Qg.prototype.Fc=function(){return"redirect"};var Rg={NETWORK_ERROR:"Unable to contact the Firebase server.",SERVER_ERROR:"An unknown server error occurred.",TRANSPORT_UNAVAILABLE:"There are no login transports available for the requested method.",REQUEST_INTERRUPTED:"The browser redirected the page before the login request could complete.",USER_CANCELLED:"The user cancelled authentication."};function Sg(a){var b=Error(z(Rg,a),a);b.code=a;return b};function Tg(a){var b;(b=!a.window_features)||(b=Cg(),b=-1!==b.indexOf("Fennec/")||-1!==b.indexOf("Firefox/")&&-1!==b.indexOf("Android"));b&&(a.window_features=void 0);a.window_name||(a.window_name="_blank");this.options=a} +Tg.prototype.open=function(a,b,c){function d(a){g&&(document.body.removeChild(g),g=void 0);t&&(t=clearInterval(t));Ig(window,"message",e);Ig(window,"unload",d);if(l&&!a)try{l.close()}catch(b){k.postMessage("die",m)}l=k=void 0}function e(a){if(a.origin===m)try{var b=Rb(a.data);"ready"===b.a?k.postMessage(A,m):"error"===b.a?(d(!1),c&&(c(b.d),c=null)):"response"===b.a&&(d(b.forceKeepWindowOpen),c&&(c(null,b.d),c=null))}catch(e){}}var f=Fg(8),g,k;if(!this.options.relay_url)return c(Error("invalid arguments: origin of url and relay_url must match")); +var m=Jg(a);if(m!==Jg(this.options.relay_url))c&&setTimeout(function(){c(Error("invalid arguments: origin of url and relay_url must match"))},0);else{f&&(g=document.createElement("iframe"),g.setAttribute("src",this.options.relay_url),g.style.display="none",g.setAttribute("name","__winchan_relay_frame"),document.body.appendChild(g),k=g.contentWindow);a+=(/\?/.test(a)?"":"?")+Ib(b);var l=window.open(a,this.options.window_name,this.options.window_features);k||(k=l);var t=setInterval(function(){l&&l.closed&& +(d(!1),c&&(c(Sg("USER_CANCELLED")),c=null))},500),A=G({a:"request",d:b});Hg(window,"unload",d);Hg(window,"message",e)}}; +Tg.isAvailable=function(){var a;if(a="postMessage"in window&&!Eg())(a=Dg()||"undefined"!==typeof navigator&&(!!Cg().match(/Windows Phone/)||!!window.Windows&&/^ms-appx:/.test(location.href)))||(a=Cg(),a="undefined"!==typeof navigator&&"undefined"!==typeof window&&!!(a.match(/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i)||a.match(/CriOS/)||a.match(/Twitter for iPhone/)||a.match(/FBAN\/FBIOS/)||window.navigator.standalone)),a=!a;return a&&!Cg().match(/PhantomJS/)};Tg.prototype.Fc=function(){return"popup"};function Ug(a){a.method||(a.method="GET");a.headers||(a.headers={});a.headers.content_type||(a.headers.content_type="application/json");a.headers.content_type=a.headers.content_type.toLowerCase();this.options=a} +Ug.prototype.open=function(a,b,c){function d(){c&&(c(Sg("REQUEST_INTERRUPTED")),c=null)}var e=new XMLHttpRequest,f=this.options.method.toUpperCase(),g;Hg(window,"beforeunload",d);e.onreadystatechange=function(){if(c&&4===e.readyState){var a;if(200<=e.status&&300>e.status){try{a=Rb(e.responseText)}catch(b){}c(null,a)}else 500<=e.status&&600>e.status?c(Sg("SERVER_ERROR")):c(Sg("NETWORK_ERROR"));c=null;Ig(window,"beforeunload",d)}};if("GET"===f)a+=(/\?/.test(a)?"":"?")+Ib(b),g=null;else{var k=this.options.headers.content_type; +"application/json"===k&&(g=G(b));"application/x-www-form-urlencoded"===k&&(g=Ib(b))}e.open(f,a,!0);a={"X-Requested-With":"XMLHttpRequest",Accept:"application/json;text/plain"};ya(a,this.options.headers);for(var m in a)e.setRequestHeader(m,a[m]);e.send(g)};Ug.isAvailable=function(){var a;if(a=!!window.XMLHttpRequest)a=Cg(),a=!(a.match(/MSIE/)||a.match(/Trident/))||Fg(10);return a};Ug.prototype.Fc=function(){return"json"};function Vg(a){this.tc=Fa()+Fa()+Fa();this.Kf=a} +Vg.prototype.open=function(a,b,c){function d(){c&&(c(Sg("USER_CANCELLED")),c=null)}var e=this,f=sd(xg),g;b.requestId=this.tc;b.redirectTo=f.scheme+"://"+f.host+"/blank/page.html";a+=/\?/.test(a)?"":"?";a+=Ib(b);(g=window.open(a,"_blank","location=no"))&&r(g.addEventListener)?(g.addEventListener("loadstart",function(a){var b;if(b=a&&a.url)a:{try{var l=document.createElement("a");l.href=a.url;b=l.host===f.host&&"/blank/page.html"===l.pathname;break a}catch(t){}b=!1}b&&(a=Kg(a.url),g.removeEventListener("exit", +d),g.close(),a=new yg(null,null,{requestId:e.tc,requestKey:a}),e.Kf.requestWithCredential("/auth/session",a,c),c=null)}),g.addEventListener("exit",d)):c(Sg("TRANSPORT_UNAVAILABLE"))};Vg.isAvailable=function(){return Dg()};Vg.prototype.Fc=function(){return"redirect"};function Wg(a){a.callback_parameter||(a.callback_parameter="callback");this.options=a;window.__firebase_auth_jsonp=window.__firebase_auth_jsonp||{}} +Wg.prototype.open=function(a,b,c){function d(){c&&(c(Sg("REQUEST_INTERRUPTED")),c=null)}function e(){setTimeout(function(){window.__firebase_auth_jsonp[f]=void 0;va(window.__firebase_auth_jsonp)&&(window.__firebase_auth_jsonp=void 0);try{var a=document.getElementById(f);a&&a.parentNode.removeChild(a)}catch(b){}},1);Ig(window,"beforeunload",d)}var f="fn"+(new Date).getTime()+Math.floor(99999*Math.random());b[this.options.callback_parameter]="__firebase_auth_jsonp."+f;a+=(/\?/.test(a)?"":"?")+Ib(b); +Hg(window,"beforeunload",d);window.__firebase_auth_jsonp[f]=function(a){c&&(c(null,a),c=null);e()};Xg(f,a,c)}; +function Xg(a,b,c){setTimeout(function(){try{var d=document.createElement("script");d.type="text/javascript";d.id=a;d.async=!0;d.src=b;d.onerror=function(){var b=document.getElementById(a);null!==b&&b.parentNode.removeChild(b);c&&c(Sg("NETWORK_ERROR"))};var e=document.getElementsByTagName("head");(e&&0!=e.length?e[0]:document.documentElement).appendChild(d)}catch(f){c&&c(Sg("NETWORK_ERROR"))}},0)}Wg.isAvailable=function(){return"undefined"!==typeof document&&null!=document.createElement}; +Wg.prototype.Fc=function(){return"json"};function Yg(a,b,c,d){ff.call(this,["auth_status"]);this.G=a;this.hf=b;this.ih=c;this.Pe=d;this.wc=new Bg(a,[bd,cd]);this.qb=null;this.We=!1;Zg(this)}ka(Yg,ff);h=Yg.prototype;h.Be=function(){return this.qb||null};function Zg(a){cd.get("redirect_request_id")&&$g(a);var b=a.wc.get();b&&b.token?(ah(a,b),a.hf(b.token,function(c,d){bh(a,c,d,!1,b.token,b)},function(b,d){ch(a,"resumeSession()",b,d)})):ah(a,null)} +function dh(a,b,c,d,e,f){"firebaseio-demo.com"===a.G.domain&&S("Firebase authentication is not supported on demo Firebases (*.firebaseio-demo.com). To secure your Firebase, create a production Firebase at https://www.firebase.com.");a.hf(b,function(f,k){bh(a,f,k,!0,b,c,d||{},e)},function(b,c){ch(a,"auth()",b,c,f)})}function eh(a,b){a.wc.clear();ah(a,null);a.ih(function(a,d){if("ok"===a)T(b,null);else{var e=(a||"error").toUpperCase(),f=e;d&&(f+=": "+d);f=Error(f);f.code=e;T(b,f)}})} +function bh(a,b,c,d,e,f,g,k){"ok"===b?(d&&(b=c.auth,f.auth=b,f.expires=c.expires,f.token=Ed(e)?e:"",c=null,b&&y(b,"uid")?c=z(b,"uid"):y(f,"uid")&&(c=z(f,"uid")),f.uid=c,c="custom",b&&y(b,"provider")?c=z(b,"provider"):y(f,"provider")&&(c=z(f,"provider")),f.provider=c,a.wc.clear(),Ed(e)&&(g=g||{},c=bd,"sessionOnly"===g.remember&&(c=cd),"none"!==g.remember&&a.wc.set(f,c)),ah(a,f)),T(k,null,f)):(a.wc.clear(),ah(a,null),f=a=(b||"error").toUpperCase(),c&&(f+=": "+c),f=Error(f),f.code=a,T(k,f))} +function ch(a,b,c,d,e){S(b+" was canceled: "+d);a.wc.clear();ah(a,null);a=Error(d);a.code=c.toUpperCase();T(e,a)}function fh(a,b,c,d,e){gh(a);c=new yg(d||{},{},c||{});hh(a,[Ug,Wg],"/auth/"+b,c,e)} +function ih(a,b,c,d){gh(a);var e=[Tg,Vg];c=Ag(c);var f=625;"anonymous"===b||"password"===b?setTimeout(function(){T(d,Sg("TRANSPORT_UNAVAILABLE"))},0):("github"===b&&(f=1025),c.he.window_features="menubar=yes,modal=yes,alwaysRaised=yeslocation=yes,resizable=yes,scrollbars=yes,status=yes,height=625,width="+f+",top="+("object"===typeof screen?.5*(screen.height-625):0)+",left="+("object"===typeof screen?.5*(screen.width-f):0),c.he.relay_url=Ng(a.G.lc),c.he.requestWithCredential=u(a.uc,a),hh(a,e,"/auth/"+ +b,c,d))}function $g(a){var b=cd.get("redirect_request_id");if(b){var c=cd.get("redirect_client_options");cd.remove("redirect_request_id");cd.remove("redirect_client_options");var d=[Ug,Wg],b={requestId:b,requestKey:Kg(document.location.hash)},c=new yg(c,{},b);a.We=!0;Lg();hh(a,d,"/auth/session",c,function(){this.We=!1}.bind(a))}}h.ve=function(a,b){gh(this);var c=Ag(a);c.fb._method="POST";this.uc("/users",c,function(a,c){a?T(b,a):T(b,a,c)})}; +h.Xe=function(a,b){var c=this;gh(this);var d="/users/"+encodeURIComponent(a.email),e=Ag(a);e.fb._method="DELETE";this.uc(d,e,function(a,d){!a&&d&&d.uid&&c.qb&&c.qb.uid&&c.qb.uid===d.uid&&eh(c);T(b,a)})};h.se=function(a,b){gh(this);var c="/users/"+encodeURIComponent(a.email)+"/password",d=Ag(a);d.fb._method="PUT";d.fb.password=a.newPassword;this.uc(c,d,function(a){T(b,a)})}; +h.re=function(a,b){gh(this);var c="/users/"+encodeURIComponent(a.oldEmail)+"/email",d=Ag(a);d.fb._method="PUT";d.fb.email=a.newEmail;d.fb.password=a.password;this.uc(c,d,function(a){T(b,a)})};h.Ze=function(a,b){gh(this);var c="/users/"+encodeURIComponent(a.email)+"/password",d=Ag(a);d.fb._method="POST";this.uc(c,d,function(a){T(b,a)})};h.uc=function(a,b,c){jh(this,[Ug,Wg],a,b,c)}; +function hh(a,b,c,d,e){jh(a,b,c,d,function(b,c){!b&&c&&c.token&&c.uid?dh(a,c.token,c,d.qd,function(a,b){a?T(e,a):T(e,null,b)}):T(e,b||Sg("UNKNOWN_ERROR"))})} +function jh(a,b,c,d,e){b=Na(b,function(a){return"function"===typeof a.isAvailable&&a.isAvailable()});0===b.length?setTimeout(function(){T(e,Sg("TRANSPORT_UNAVAILABLE"))},0):(b=new (b.shift())(d.he),d=Gb(d.fb),d.v="js-"+Eb,d.transport=b.Fc(),d.suppress_status_codes=!0,a=Mg()+"/"+a.G.lc+c,b.open(a,d,function(a,b){if(a)T(e,a);else if(b&&b.error){var c=Error(b.error.message);c.code=b.error.code;c.details=b.error.details;T(e,c)}else T(e,null,b)}))} +function ah(a,b){var c=null!==a.qb||null!==b;a.qb=b;c&&a.ie("auth_status",b);a.Pe(null!==b)}h.Ee=function(a){O("auth_status"===a,'initial event must be of type "auth_status"');return this.We?null:[this.qb]};function gh(a){var b=a.G;if("firebaseio.com"!==b.domain&&"firebaseio-demo.com"!==b.domain&&"auth.firebase.com"===xg)throw Error("This custom Firebase server ('"+a.G.domain+"') does not support delegated login.");};var gd="websocket",hd="long_polling";function kh(a){this.nc=a;this.Qd=[];this.Wb=0;this.te=-1;this.Jb=null}function lh(a,b,c){a.te=b;a.Jb=c;a.tedocument.domain="'+document.domain+'";\x3c/script>');a=""+a+"";try{this.Ga.jb.open(),this.Ga.jb.write(a),this.Ga.jb.close()}catch(f){fc("frame writing exception"),f.stack&&fc(f.stack),fc(f)}} +qh.prototype.close=function(){this.oe=!1;if(this.Ga){this.Ga.jb.body.innerHTML="";var a=this;setTimeout(function(){null!==a.Ga&&(document.body.removeChild(a.Ga),a.Ga=null)},Math.floor(0))}var b=this.lb;b&&(this.lb=null,b())}; +function th(a){if(a.oe&&a.$d&&a.Te.count()<(0=a.cd[0].of.length+30+c.length){var e=a.cd.shift(),c=c+"&seg"+d+"="+e.Yg+"&ts"+d+"="+e.hh+"&d"+d+"="+e.of;d++}else break;uh(a,b+c,a.we);return!0}return!1}function uh(a,b,c){function d(){a.Te.remove(c);th(a)}a.Te.add(c,1);var e=setTimeout(d,Math.floor(25E3));sh(a,b,function(){clearTimeout(e);d()})} +function sh(a,b,c){setTimeout(function(){try{if(a.$d){var d=a.Ga.jb.createElement("script");d.type="text/javascript";d.async=!0;d.src=b;d.onload=d.onreadystatechange=function(){var a=d.readyState;a&&"loaded"!==a&&"complete"!==a||(d.onload=d.onreadystatechange=null,d.parentNode&&d.parentNode.removeChild(d),c())};d.onerror=function(){fc("Long-poll script failed to load: "+b);a.$d=!1;a.close()};a.Ga.jb.body.appendChild(d)}}catch(e){}},Math.floor(1))};var vh=null;"undefined"!==typeof MozWebSocket?vh=MozWebSocket:"undefined"!==typeof WebSocket&&(vh=WebSocket);function wh(a,b,c,d){this.ue=a;this.f=pd(this.ue);this.frames=this.Nc=null;this.rb=this.sb=this.ff=0;this.Xa=uc(b);a={v:"5"};"undefined"!==typeof location&&location.href&&-1!==location.href.indexOf("firebaseio.com")&&(a.r="f");c&&(a.s=c);d&&(a.ls=d);this.jf=fd(b,gd,a)}var xh; +wh.prototype.open=function(a,b){this.lb=b;this.Lg=a;this.f("Websocket connecting to "+this.jf);this.Kc=!1;bd.set("previous_websocket_failure",!0);try{this.La=new vh(this.jf)}catch(c){this.f("Error instantiating WebSocket.");var d=c.message||c.data;d&&this.f(d);this.bb();return}var e=this;this.La.onopen=function(){e.f("Websocket connected.");e.Kc=!0};this.La.onclose=function(){e.f("Websocket connection was disconnected.");e.La=null;e.bb()};this.La.onmessage=function(a){if(null!==e.La)if(a=a.data,e.rb+= +a.length,rc(e.Xa,"bytes_received",a.length),yh(e),null!==e.frames)zh(e,a);else{a:{O(null===e.frames,"We already have a frame buffer");if(6>=a.length){var b=Number(a);if(!isNaN(b)){e.ff=b;e.frames=[];a=null;break a}}e.ff=1;e.frames=[]}null!==a&&zh(e,a)}};this.La.onerror=function(a){e.f("WebSocket error. Closing connection.");(a=a.message||a.data)&&e.f(a);e.bb()}};wh.prototype.start=function(){}; +wh.isAvailable=function(){var a=!1;if("undefined"!==typeof navigator&&navigator.userAgent){var b=navigator.userAgent.match(/Android ([0-9]{0,}\.[0-9]{0,})/);b&&1parseFloat(b[1])&&(a=!0)}return!a&&null!==vh&&!xh};wh.responsesRequiredToBeHealthy=2;wh.healthyTimeout=3E4;h=wh.prototype;h.Hd=function(){bd.remove("previous_websocket_failure")};function zh(a,b){a.frames.push(b);if(a.frames.length==a.ff){var c=a.frames.join("");a.frames=null;c=Rb(c);a.Lg(c)}} +h.send=function(a){yh(this);a=G(a);this.sb+=a.length;rc(this.Xa,"bytes_sent",a.length);a=yd(a,16384);1=a.Tf?(a.f("Secondary connection is healthy."),a.Eb=!0,a.F.Hd(),a.F.start(),a.f("sending client ack on secondary"),a.F.send({t:"c",d:{t:"a",d:{}}}),a.f("Ending transmission on primary"),a.K.send({t:"c",d:{t:"n",d:{}}}),a.kd=a.F,Lh(a)):(a.f("sending ping on secondary."),a.F.send({t:"c",d:{t:"p",d:{}}}))}Fh.prototype.Ld=function(a){Nh(this);this.nc(a)};function Nh(a){a.Eb||(a.Ve--,0>=a.Ve&&(a.f("Primary connection is healthy."),a.Eb=!0,a.K.Hd()))} +function Kh(a,b){a.F=new b("c:"+a.id+":"+a.kf++,a.G,a.Uf);a.Tf=b.responsesRequiredToBeHealthy||0;a.F.open(Hh(a,a.F),Ih(a,a.F));setTimeout(function(){a.F&&(a.f("Timed out trying to upgrade."),a.F.close())},Math.floor(6E4))}function Jh(a,b,c){a.f("Realtime connection established.");a.K=b;a.N=1;a.Zc&&(a.Zc(c,a.Uf),a.Zc=null);0===a.Ve?(a.f("Primary connection is healthy."),a.Eb=!0):setTimeout(function(){Oh(a)},Math.floor(5E3))} +function Oh(a){a.Eb||1!==a.N||(a.f("sending ping on primary."),Qh(a,{t:"c",d:{t:"p",d:{}}}))}function Qh(a,b){if(1!==a.N)throw"Connection is not connected";a.kd.send(b)}Fh.prototype.close=function(){2!==this.N&&(this.f("Closing realtime connection."),this.N=2,Mh(this),this.na&&(this.na(),this.na=null))};function Mh(a){a.f("Shutting down all connections");a.K&&(a.K.close(),a.K=null);a.F&&(a.F.close(),a.F=null);a.Bd&&(clearTimeout(a.Bd),a.Bd=null)};function Rh(a,b,c,d){this.id=Sh++;this.f=pd("p:"+this.id+":");this.Bf=this.Ie=!1;this.ba={};this.sa=[];this.ad=0;this.Yc=[];this.qa=!1;this.eb=1E3;this.Id=3E5;this.Kb=b;this.Xc=c;this.Se=d;this.G=a;this.wb=this.Ca=this.Ma=this.Fb=this.$e=null;this.Sb=!1;this.Wd={};this.Xg=0;this.rf=!0;this.Oc=this.Ke=null;Th(this,0);kf.yb().Ib("visible",this.Og,this);-1===a.host.indexOf("fblocal")&&jf.yb().Ib("online",this.Mg,this)}var Sh=0,Uh=0;h=Rh.prototype; +h.Ia=function(a,b,c){var d=++this.Xg;a={r:d,a:a,b:b};this.f(G(a));O(this.qa,"sendRequest call when we're not connected not allowed.");this.Ma.Ia(a);c&&(this.Wd[d]=c)};h.Cf=function(a,b,c,d){var e=a.wa(),f=a.path.toString();this.f("Listen called for "+f+" "+e);this.ba[f]=this.ba[f]||{};O(Ie(a.n)||!He(a.n),"listen() called for non-default but complete query");O(!this.ba[f][e],"listen() called twice for same path/queryId.");a={I:d,Ad:b,Ug:a,tag:c};this.ba[f][e]=a;this.qa&&Vh(this,a)}; +function Vh(a,b){var c=b.Ug,d=c.path.toString(),e=c.wa();a.f("Listen on "+d+" for "+e);var f={p:d};b.tag&&(f.q=Ge(c.n),f.t=b.tag);f.h=b.Ad();a.Ia("q",f,function(f){var k=f.d,m=f.s;if(k&&"object"===typeof k&&y(k,"w")){var l=z(k,"w");da(l)&&0<=La(l,"no_index")&&S("Using an unspecified index. Consider adding "+('".indexOn": "'+c.n.g.toString()+'"')+" at "+c.path.toString()+" to your security rules for better performance")}(a.ba[d]&&a.ba[d][e])===b&&(a.f("listen response",f),"ok"!==m&&Wh(a,d,e),b.I&& +b.I(m,k))})}h.O=function(a,b,c){this.Ca={rg:a,sf:!1,Dc:b,od:c};this.f("Authenticating using credential: "+a);Xh(this);(b=40==a.length)||(a=Cd(a).Ec,b="object"===typeof a&&!0===z(a,"admin"));b&&(this.f("Admin auth credential detected. Reducing max reconnect time."),this.Id=3E4)};h.je=function(a){this.Ca=null;this.qa&&this.Ia("unauth",{},function(b){a(b.s,b.d)})}; +function Xh(a){var b=a.Ca;a.qa&&b&&a.Ia("auth",{cred:b.rg},function(c){var d=c.s;c=c.d||"error";"ok"!==d&&a.Ca===b&&(a.Ca=null);b.sf?"ok"!==d&&b.od&&b.od(d,c):(b.sf=!0,b.Dc&&b.Dc(d,c))})}h.$f=function(a,b){var c=a.path.toString(),d=a.wa();this.f("Unlisten called for "+c+" "+d);O(Ie(a.n)||!He(a.n),"unlisten() called for non-default but complete query");if(Wh(this,c,d)&&this.qa){var e=Ge(a.n);this.f("Unlisten on "+c+" for "+d);c={p:c};b&&(c.q=e,c.t=b);this.Ia("n",c)}}; +h.Qe=function(a,b,c){this.qa?Yh(this,"o",a,b,c):this.Yc.push({bd:a,action:"o",data:b,I:c})};h.Gf=function(a,b,c){this.qa?Yh(this,"om",a,b,c):this.Yc.push({bd:a,action:"om",data:b,I:c})};h.Md=function(a,b){this.qa?Yh(this,"oc",a,null,b):this.Yc.push({bd:a,action:"oc",data:null,I:b})};function Yh(a,b,c,d,e){c={p:c,d:d};a.f("onDisconnect "+b,c);a.Ia(b,c,function(a){e&&setTimeout(function(){e(a.s,a.d)},Math.floor(0))})}h.put=function(a,b,c,d){Zh(this,"p",a,b,c,d)}; +h.Df=function(a,b,c,d){Zh(this,"m",a,b,c,d)};function Zh(a,b,c,d,e,f){d={p:c,d:d};p(f)&&(d.h=f);a.sa.push({action:b,Pf:d,I:e});a.ad++;b=a.sa.length-1;a.qa?$h(a,b):a.f("Buffering put: "+c)}function $h(a,b){var c=a.sa[b].action,d=a.sa[b].Pf,e=a.sa[b].I;a.sa[b].Vg=a.qa;a.Ia(c,d,function(d){a.f(c+" response",d);delete a.sa[b];a.ad--;0===a.ad&&(a.sa=[]);e&&e(d.s,d.d)})} +h.Ye=function(a){this.qa&&(a={c:a},this.f("reportStats",a),this.Ia("s",a,function(a){"ok"!==a.s&&this.f("reportStats","Error sending stats: "+a.d)}))}; +h.Ld=function(a){if("r"in a){this.f("from server: "+G(a));var b=a.r,c=this.Wd[b];c&&(delete this.Wd[b],c(a.b))}else{if("error"in a)throw"A server-side error has occurred: "+a.error;"a"in a&&(b=a.a,c=a.b,this.f("handleServerMessage",b,c),"d"===b?this.Kb(c.p,c.d,!1,c.t):"m"===b?this.Kb(c.p,c.d,!0,c.t):"c"===b?ai(this,c.p,c.q):"ac"===b?(a=c.s,b=c.d,c=this.Ca,this.Ca=null,c&&c.od&&c.od(a,b)):"sd"===b?this.$e?this.$e(c):"msg"in c&&"undefined"!==typeof console&&console.log("FIREBASE: "+c.msg.replace("\n", +"\nFIREBASE: ")):qd("Unrecognized action received from server: "+G(b)+"\nAre you using the latest client?"))}};h.Zc=function(a,b){this.f("connection ready");this.qa=!0;this.Oc=(new Date).getTime();this.Se({serverTimeOffset:a-(new Date).getTime()});this.Fb=b;if(this.rf){var c={};c["sdk.js."+Eb.replace(/\./g,"-")]=1;Dg()?c["framework.cordova"]=1:"object"===typeof navigator&&"ReactNative"===navigator.product&&(c["framework.reactnative"]=1);this.Ye(c)}bi(this);this.rf=!1;this.Xc(!0)}; +function Th(a,b){O(!a.Ma,"Scheduling a connect when we're already connected/ing?");a.wb&&clearTimeout(a.wb);a.wb=setTimeout(function(){a.wb=null;ci(a)},Math.floor(b))}h.Og=function(a){a&&!this.Sb&&this.eb===this.Id&&(this.f("Window became visible. Reducing delay."),this.eb=1E3,this.Ma||Th(this,0));this.Sb=a};h.Mg=function(a){a?(this.f("Browser went online."),this.eb=1E3,this.Ma||Th(this,0)):(this.f("Browser went offline. Killing connection."),this.Ma&&this.Ma.close())}; +h.If=function(){this.f("data client disconnected");this.qa=!1;this.Ma=null;for(var a=0;af.Pc,"Stacking an older write on top of newer ones");p(g)||(g=!0);f.pa.push({path:b,Ja:c,md:d,visible:g});g&&(f.V=Jf(f.V,b,c));f.Pc=d;return e?qi(a,new Ac(Ef,b,c)):[]}function ri(a,b,c,d){var e=a.mb;O(d>e.Pc,"Stacking an older merge on top of newer ones");e.pa.push({path:b,children:c,md:d,visible:!0});e.V=Kf(e.V,b,c);e.Pc=d;c=sf(c);return qi(a,new bf(Ef,b,c))} +function si(a,b,c){c=c||!1;var d=Qf(a.mb,b);if(a.mb.Ud(b)){var e=qe;null!=d.Ja?e=e.set(M,!0):Fb(d.children,function(a,b){e=e.set(new P(a),b)});return qi(a,new Df(d.path,e,c))}return[]}function ti(a,b,c){c=sf(c);return qi(a,new bf(Gf,b,c))}function ui(a,b,c,d){d=vi(a,d);if(null!=d){var e=wi(d);d=e.path;e=e.Lb;b=lf(d,b);c=new Ac(new Ff(!1,!0,e,!0),b,c);return xi(a,d,c)}return[]} +function yi(a,b,c,d){if(d=vi(a,d)){var e=wi(d);d=e.path;e=e.Lb;b=lf(d,b);c=sf(c);c=new bf(new Ff(!1,!0,e,!0),b,c);return xi(a,d,c)}return[]} +oi.prototype.Tb=function(a,b){var c=a.path,d=null,e=!1;zf(this.va,c,function(a,b){var f=lf(a,c);d=d||b.kb(f);e=e||null!=li(b)});var f=this.va.get(c);f?(e=e||null!=li(f),d=d||f.kb(M)):(f=new ki,this.va=this.va.set(c,f));var g;null!=d?g=!0:(g=!1,d=H,Cf(this.va.subtree(c),function(a,b){var c=b.kb(M);c&&(d=d.W(a,c))}));var k=null!=ni(f,a);if(!k&&!He(a.n)){var m=zi(a);O(!(m in this.qc),"View does not exist, but we have a tag");var l=Ai++;this.qc[m]=l;this.df["_"+l]=m}g=f.Tb(a,b,new Uf(c,this.mb),d,g); +k||e||(f=ni(f,a),g=g.concat(Bi(this,a,f)));return g}; +oi.prototype.nb=function(a,b,c){var d=a.path,e=this.va.get(d),f=[];if(e&&("default"===a.wa()||null!=ni(e,a))){f=e.nb(a,b,c);e.e()&&(this.va=this.va.remove(d));e=f.Wg;f=f.vg;b=-1!==Sa(e,function(a){return He(a.n)});var g=xf(this.va,d,function(a,b){return null!=li(b)});if(b&&!g&&(d=this.va.subtree(d),!d.e()))for(var d=Ci(d),k=0;k=a)throw Error("Query.limit: First argument must be a positive integer.");if(this.n.la)throw Error("Query.limit: Limit was already set (by another call to limit, limitToFirst, orlimitToLast.");var b=this.n.Le(a);cj(b);return new Y(this.k,this.path,b,this.pc)}; +h.Me=function(a){D("Query.limitToFirst",1,1,arguments.length);if(!fa(a)||Math.floor(a)!==a||0>=a)throw Error("Query.limitToFirst: First argument must be a positive integer.");if(this.n.la)throw Error("Query.limitToFirst: Limit was already set (by another call to limit, limitToFirst, or limitToLast).");return new Y(this.k,this.path,this.n.Me(a),this.pc)}; +h.Ne=function(a){D("Query.limitToLast",1,1,arguments.length);if(!fa(a)||Math.floor(a)!==a||0>=a)throw Error("Query.limitToLast: First argument must be a positive integer.");if(this.n.la)throw Error("Query.limitToLast: Limit was already set (by another call to limit, limitToFirst, or limitToLast).");return new Y(this.k,this.path,this.n.Ne(a),this.pc)}; +h.Qg=function(a){D("Query.orderByChild",1,1,arguments.length);if("$key"===a)throw Error('Query.orderByChild: "$key" is invalid. Use Query.orderByKey() instead.');if("$priority"===a)throw Error('Query.orderByChild: "$priority" is invalid. Use Query.orderByPriority() instead.');if("$value"===a)throw Error('Query.orderByChild: "$value" is invalid. Use Query.orderByValue() instead.');ng("Query.orderByChild",a);dj(this,"Query.orderByChild");var b=new P(a);if(b.e())throw Error("Query.orderByChild: cannot pass in empty path. Use Query.orderByValue() instead."); +b=new ve(b);b=Fe(this.n,b);bj(b);return new Y(this.k,this.path,b,!0)};h.Rg=function(){D("Query.orderByKey",0,0,arguments.length);dj(this,"Query.orderByKey");var a=Fe(this.n,re);bj(a);return new Y(this.k,this.path,a,!0)};h.Sg=function(){D("Query.orderByPriority",0,0,arguments.length);dj(this,"Query.orderByPriority");var a=Fe(this.n,R);bj(a);return new Y(this.k,this.path,a,!0)}; +h.Tg=function(){D("Query.orderByValue",0,0,arguments.length);dj(this,"Query.orderByValue");var a=Fe(this.n,Be);bj(a);return new Y(this.k,this.path,a,!0)};h.ce=function(a,b){D("Query.startAt",0,2,arguments.length);gg("Query.startAt",a,this.path,!0);mg("Query.startAt",b);var c=this.n.ce(a,b);cj(c);bj(c);if(this.n.oa)throw Error("Query.startAt: Starting point was already set (by another call to startAt or equalTo).");p(a)||(b=a=null);return new Y(this.k,this.path,c,this.pc)}; +h.vd=function(a,b){D("Query.endAt",0,2,arguments.length);gg("Query.endAt",a,this.path,!0);mg("Query.endAt",b);var c=this.n.vd(a,b);cj(c);bj(c);if(this.n.ra)throw Error("Query.endAt: Ending point was already set (by another call to endAt or equalTo).");return new Y(this.k,this.path,c,this.pc)}; +h.tg=function(a,b){D("Query.equalTo",1,2,arguments.length);gg("Query.equalTo",a,this.path,!1);mg("Query.equalTo",b);if(this.n.oa)throw Error("Query.equalTo: Starting point was already set (by another call to endAt or equalTo).");if(this.n.ra)throw Error("Query.equalTo: Ending point was already set (by another call to endAt or equalTo).");return this.ce(a,b).vd(a,b)}; +h.toString=function(){D("Query.toString",0,0,arguments.length);for(var a=this.path,b="",c=a.aa;c.firebaseio.com instead");c&&"undefined"!=c||rd("Cannot parse Firebase url. Please use https://.firebaseio.com");d.ob||"undefined"!==typeof window&&window.location&&window.location.protocol&&-1!==window.location.protocol.indexOf("https:")&&S("Insecure Firebase access from a secure page. Please use https in calls to new Firebase()."); +c=new dd(d.host,d.ob,c,"ws"===d.scheme||"wss"===d.scheme);d=new P(d.bd);e=d.toString();var f;!(f=!q(c.host)||0===c.host.length||!eg(c.lc))&&(f=0!==e.length)&&(e&&(e=e.replace(/^\/*\.info(\/|$)/,"/")),f=!(q(e)&&0!==e.length&&!cg.test(e)));if(f)throw Error(E("new Firebase",1,!1)+'must be a valid firebase URL and the path can\'t contain ".", "#", "$", "[", or "]".');if(b)if(b instanceof aj)e=b;else if(q(b))e=aj.yb(),c.Rd=b;else throw Error("Expected a valid Firebase.Context for second argument to new Firebase()"); +else e=aj.yb();f=c.toString();var g=z(e.sc,f);g||(g=new Ji(c,e.ag),e.sc[f]=g);c=g}Y.call(this,c,d,De,!1);this.then=void 0;this["catch"]=void 0}ka(X,Y);var fj=X,gj=["Firebase"],hj=n;gj[0]in hj||!hj.execScript||hj.execScript("var "+gj[0]);for(var ij;gj.length&&(ij=gj.shift());)!gj.length&&p(fj)?hj[ij]=fj:hj=hj[ij]?hj[ij]:hj[ij]={};X.goOffline=function(){D("Firebase.goOffline",0,0,arguments.length);aj.yb().Cb()};X.goOnline=function(){D("Firebase.goOnline",0,0,arguments.length);aj.yb().vc()}; +X.enableLogging=od;X.ServerValue={TIMESTAMP:{".sv":"timestamp"}};X.SDK_VERSION=Eb;X.INTERNAL=U;X.Context=aj;X.TEST_ACCESS=Z;X.prototype.name=function(){S("Firebase.name() being deprecated. Please use Firebase.key() instead.");D("Firebase.name",0,0,arguments.length);return this.key()};X.prototype.name=X.prototype.name;X.prototype.key=function(){D("Firebase.key",0,0,arguments.length);return this.path.e()?null:me(this.path)};X.prototype.key=X.prototype.key; +X.prototype.o=function(a){D("Firebase.child",1,1,arguments.length);if(fa(a))a=String(a);else if(!(a instanceof P))if(null===K(this.path)){var b=a;b&&(b=b.replace(/^\/*\.info(\/|$)/,"/"));ng("Firebase.child",b)}else ng("Firebase.child",a);return new X(this.k,this.path.o(a))};X.prototype.child=X.prototype.o;X.prototype.parent=function(){D("Firebase.parent",0,0,arguments.length);var a=this.path.parent();return null===a?null:new X(this.k,a)};X.prototype.parent=X.prototype.parent; +X.prototype.root=function(){D("Firebase.ref",0,0,arguments.length);for(var a=this;null!==a.parent();)a=a.parent();return a};X.prototype.root=X.prototype.root;X.prototype.set=function(a,b){D("Firebase.set",1,2,arguments.length);og("Firebase.set",this.path);gg("Firebase.set",a,this.path,!1);F("Firebase.set",2,b,!0);var c=new B;this.k.Ob(this.path,a,null,C(c,b));return c.D};X.prototype.set=X.prototype.set; +X.prototype.update=function(a,b){D("Firebase.update",1,2,arguments.length);og("Firebase.update",this.path);if(da(a)){for(var c={},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 G_WuEIaH~E5 literal 0 HcmV?d00001 diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/instance.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/instance.js new file mode 100755 index 0000000..801a95f --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/instance.js @@ -0,0 +1,26 @@ +"use strict"; + +{ + const PLUGIN_CLASS = SDK.Plugins.Rex_FirebaseAPI; + + PLUGIN_CLASS.Instance = class Rex_FirebaseAPIInstance extends SDK.IInstanceBase + { + constructor(sdkType, inst) + { + super(sdkType, inst); + } + Release() + { + } + OnCreate() + { + } + OnPropertyChanged(id, value) + { + } + LoadC2Property(name, valueString) + { + return false; // not handled + } + }; +} diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/lang/en-US.json b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/lang/en-US.json new file mode 100755 index 0000000..9b93f93 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/lang/en-US.json @@ -0,0 +1,31 @@ +{ + "languageTag": "en-US", + "fileDescription": "Strings for Firebase API.", + "text": { + "plugins": { + "rex_firebaseapi": { + "name": "Firebase API", + "description": "API of real time database-as-a-service. https://www.firebase.com/", + "help-url": "http://c2rexplugins.weebly.com/rex_firebaseapi.html", + "properties": { + "log": { + "name": "Log", + "desc": "Enable log.", + "items": { + "no":"No", + "yes":"Yes" + } + } + }, + "aceCategories": { + }, + "conditions": { + }, + "actions": { + }, + "expressions": { + } + } + } + } +} diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/plugin.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/plugin.js new file mode 100755 index 0000000..4c84ba2 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/plugin.js @@ -0,0 +1,45 @@ +//Converted with C2C3AddonConverter v1.0.1.0 +"use strict"; + +{ + const PLUGIN_ID = "Rex_FirebaseAPI"; + const PLUGIN_VERSION = "2.4.2.0"; + const PLUGIN_CATEGORY = "web"; + + let app = null; + + const PLUGIN_CLASS = SDK.Plugins.Rex_FirebaseAPI = class Rex_FirebaseAPI extends SDK.IPluginBase + { + constructor() + { + super(PLUGIN_ID); + SDK.Lang.PushContext("plugins." + PLUGIN_ID.toLowerCase()); + this._info.SetIcon("icon.png", "image/png"); + this._info.SetName(lang(".name")); + this._info.SetDescription(lang(".description")); + this._info.SetVersion(PLUGIN_VERSION); + this._info.SetCategory(PLUGIN_CATEGORY); + this._info.SetAuthor("Rex.Rainbow"); + this._info.SetHelpUrl(lang(".help-url")); + this._info.SetIsSingleGlobal(false); + this._info.SetIsDeprecated(true); + this._info.SetSupportsEffects(false); + this._info.SetMustPreDraw(false); + this._info.SetCanBeBundled(false); + + this._info.SetSupportedRuntimes(["c2","c3"]); + + SDK.Lang.PushContext(".properties"); + this._info.SetProperties([ + new SDK.PluginProperty("combo", "log", {initialValue:"no", items:["no","yes"]}) + ]); + this._info.AddFileDependency({ + filename: "firebase.js", + type: "external-script" + }); + SDK.Lang.PopContext(); // .properties + SDK.Lang.PopContext(); + } + }; + PLUGIN_CLASS.Register(PLUGIN_ID, PLUGIN_CLASS); +} diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/type.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/type.js new file mode 100755 index 0000000..83cda30 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_api/source/type.js @@ -0,0 +1,13 @@ +"use strict"; + +{ + const PLUGIN_CLASS = SDK.Plugins.Rex_FirebaseAPI; + + PLUGIN_CLASS.Type = class Rex_FirebaseAPIType extends SDK.ITypeBase + { + constructor(sdkPlugin, iObjectType) + { + super(sdkPlugin, iObjectType); + } + }; +} diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/dist/rex_firebase_apiv3.c3addon b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/dist/rex_firebase_apiv3.c3addon new file mode 100644 index 0000000000000000000000000000000000000000..49051814f7c1cee20dc2a1a237de17952b597e4a GIT binary patch literal 150284 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

>hp#BlnhW6BIBBlu(qwj92xP_;HTq zSnar=mWMstJ^)sdC*i@9(fQr0R9QpX0DKzkp$5T^so`r)P&im9zIHlEvM3^i*(VGn zn5Ho{6tq}2GVy5*Y2NNO@3hd+DW~ydku^a>n)YUu;;nEfZgPS()w);n0E3qXErvZy z1}dT=d(sBRfV|hU0OODt{^5o;q;G@Qxnf#GS%~|9Nsil#H}62^<)f1u_j>9nU?R0* zep`u}uMFdU-5`|py3UI`5x~qVmd5m=pnh^1;B_{ zDWlX~TZE#?C0#6yq9(vPGd$^is}ZU)ZB@NY`u^K`AcAA{W{}5sq^YYa$n$&2nW;@s zZum?WrFC{=JjIc^MHLdnO4xQ8+EbUP_aT$4e86&)-0USIc8(`Ar&aFA!$B)s#}Ft? z!oV4EfHKR`aSihDSS(NcbNuu@(A7zFPXs$644Dlc>fClC zV+jvm=*zP&!n)=qawE8ddIqj`o z%q;#)-TriMr{81A!WGBAb?*%wZRK?d3}1wvg4uy8T@D0j25t8hD#HY9J0T&11We3> zgkr#wh6Iizz#aS7(?wLrVktv|K2bAEMS6ci$Mgetsk|PVovOY{k_TGSraof)8NF2h zz3r|~v?I?Q?740s>We)+!5Xd~e}~z{xOa$0RC8`&8Pe6a%hB-{YUnXaSuWkBUEq5D z`!R?1G1LWzINqJ$&aB&%UyAKjyU+a$m@tS7qtx^eiB)=4rYaBnB~B}EW~sAJ7$)iH z!*-kQ2=wf2U4u@lQPK7b9$g+mn-5n9Hmu^=K8rBfw(8wgUQ}~r&r`e5Q&xoB)`~XV z$xre9xWnMC*9ET=i431~K)hjtw0s!&1C7y z>P%Zfh24^UGE%00WX6F^tbW(M0XeeD(i3fU*LiKlj_d8~M&9MFV>UhSe!Gd>_!=|C zA6+Xq%@FK<55j00!yD6LX%*2hwxF`!Ka;YieflDi2`i2JN;!2H0rFrzG8U#&+D-UE zL!bVB#ZC%E&ANF!4dEq3Ep+?PsO#ki90}AhU(V0qz$aC}e7m>xP8#hX2M1`c87AR} zldq03mP35!$a(2gnm$82KtM3QmXP=i&ck%((q)gUzJFb<&{#0^XDp`PuM|-wdPS_^ z!bkyDYcLuxMg*7iFg(K9+YdFAbWSVvpy1;Cl6P!27xB)?VGpmP7MK`r{6)Lptvw>_ z3O!@_&=PA6>}rFKh^Sw3d{*f6d|d2;o#>|$z0lSD`r`7AUE#FZ7X6f5EuR30aZ=%H z?39F`9aqfC)rkuBwCZf2s$xlNnZ$dQM$rNHn(7)PN~nzr_D0RFb}FLmdfCoo#K$=8)J9N*f~Em-zWVZZGax zrrm;vc6t{T#$#wB0L{D~I?6t!$%hO|@HYZ35rZs!Hg}Y&=!I+@lWUu@8GRogp)rVT zu=uc@SP|yw*SH!ctp=M343%GxcR@_5#_3)c1O=_w=6>7InIy@S&lbxT z7>9i4j>|JFRqYp7iq!?6bzT~=+~9ECAWwBXN&`mk=@@!$9AuNj$;2u(_LwK#A(h%R zWd|~t$dWO<)>LN7wB)FJ%86jJ`@i1hx1sn;Lm&B1E;Mso;q*(3iP~VNsDiT;igTAR z8#uc;aK{)Wt7l?W`^-UAnl(mm55eC#0+7ASBs=H|rOQ+OnMQ)kNLilo4NESGvV!f4 zL3SGlGDgq+Ki^SRzxj%Vt&NE;CIy#?1zr229S8Yo_P?=tR?ZshUeFnc6-Y8@9B|5w zo$wqqN(u5>*cbUK0mURIUe-~Y53hycUJ~v@QUCG!C%(A8}p8M5f z!Y9F~`9Z3fj22tZl=I@CLe~UjckIp=%aXI3Bn8Kla{MOalJegC8O&V@bG&MiI3EaB z$Y~M;glLy%(lnt{?HfmblB3?O%bL8q(OH!}svQM>daBnl7pr+Cw9b!wFKg)|u}Fm$ zfZTVt!#H*9h?OytkMfAV0BAriYfdOozq~2><$kwRq$n$c3vi1~41W1QMOHeLU=7=N zBvl|2QjhQ1h~6ZC8N;pFR}@1W_)-MY&g-}?EKBNiH4ox8R*A_h3c6;b{)YsM)CRfk zS496J;!Ocf5;NI*9Q=n5o+oziKHddfb4syQX>35b1P6F7m(t$KCZnzFQ1$D;M>r#c^9fJi9YKWSGXBtYALG7 zcX+RR4UFUR&gbT!AK-%;SY9j=!Yq4sXHz2a=`K@8@T8qf87?s)&dP|Wy52&@7}!nC z9S~;ZNQKZ>gGe)~RrRIN1K#X6bEJ9eC-~Z351##ii=+70tX4L@3c|9x~txM%^;STS%a|?2)|U(u|)XMYi|I9(HiTrg6PL*2R(lr`l$=>dn`zbnU@0k!sMZ zGpbjH&$@cafM&n0t=vfjAW;mDoPoBVKrurHvebLTxC#4+b!L5^IMVNga|`R)>o9AH z+1zkzs8MaqbhAZ+x9>@5xM8Gh47E< z*)&dX&2BbPvoZFBmJ>%M$?!7Hke%Gi5Us$)@Zi-wc=z1!|^@`U|RO9%mb!@`@kevw?W%v5E!)V@PC~x0J6@-kVUQLbH z0afc_g}zy(IV*jj-bbL?NF3mdSomIVJ(j5)O_>1%AQ6bUqk4`ngmsZ#6{UTti@DDDq z%wVxmULs|ZB%rJF&=}CI3&;=I+p;22sVm?ZKV+lcL#WZ z@ey#ju2!tK<~Jp5IDVW(6uI;6pq)WkD=0}p@caTpkD&Yr(ewT;4YdPzbWl=Ys4k;f z4!On@m|&9%%rBGZmqe+dzYE#DCl+8-sO2XJT(0C_mvaR7z2gD`ozv1~n9I`vH@;EdferEVaOKqDAE58U^@*2a9- z7wuqhkY=9gO$6K)cBDGGG_-I7@|Q59 zHf^QNEQf?jsb+3Ue&v$6UY6wZ2?Yr1991@K>Fgu|L-t2((A>N=Mf|W|Tb|i=(W$t* zB+*F>H91=IV<3<}7av=hHT@3-lorsh_Z9v%{16wtO8RyiQ9aGKMe4j4R~ zhYVUiHe9XH`TB*JgR>wSo{L4DC0?ssxOcg$stM{>Y>rbPHh=jw)NMe~xj?=NmW;j0 zFKDLZw0GWnGd5MSj%G`(ppCM@+Q#Q6a5#KtQB07$xc;6_XH%}|V`O=u3i}v4r~3GW?s0=SD<_f4Sxw(n zc_nhUi^4|ER~3-ARsW!Xg|2x{b7nj7h=3$0-3p9Q_*f=jN3bt=d%RuKRJ>^JxQ*up z`P}Pufw%99RbhG{u7=OU#dH@7o{wLFaUL6gWJ7m^p-W}3?g+T25oT^r^4+miXIqgy8Mc^DJDE}vnc-cQZ}CgOg<`^L5VNRzFu(%E zZl%;aIDgb|_1iJ^$Fj%pnb-T4*37g9G~0ef3gI?RbI2N$&d`Y5e*UpW!@N4#o*l;b zMYH;*YKO6~uQ7W484b`cOQ=J>D7qxlIC-I(oo0;p83!wRT=R7&;nYd}lqXd#wCWCI z>*FJY)q=FaHI)8cD{9DaAv2D1abGPyM$x~M(z<)KKp44lI6Is3NRQx@_m7{{8R(6H zvWB>};2+NKH=uE;GKSdK*ib%Q-7GWsd`^E8xsw&=6|rVC4McDzD6PIV?)2mJpWX0U z@nYjS)f=qL43EZ2efFj9>Fmbx;V&3KkZvBr-2~rxLzx$T4<30wNA-KoXN(6skRYYe)h+gjsEDZA!KmkcU8;)G_J2R{`F7P1OvngPXr$)&xh;d< z&~Re}M<9aT)o1;7l-f3I1VGk!R7&qJDtPi#J`*!}R^Oia)t;%Q^f|!Z-OpwR9x@G|KpW zX1@9hHvRWRzx=0K{)e3Z*H`l22OWQ|F8<36&42QNKUCn){m%b0^7vn$7?k;6?{dQa zPR!K8(ZtZe>0ixRH~06;oaa7P+UrA0$4^h{E1sRYJl=Y2`>Ti=!5Wz(A~|GruJGqI?GuOQ#n_=h0As6$0R4ezbdwZTm8t&D z)ajTBlT9BUr+HYwqllRIWu5#uE6pvDS_W7e+RtIoLk5V+90opw%VjG~uYiyO`+9p+ z%_Vv7k1UVt2B-|(?3P29#wof?+JWP}Zyp)62U+lEi4X4Sxvxagq?0;T6t_-2_hy32 zdSIA)JJz`_7_{xwhXb0O7YD$dX)zzq#00HcQBw^QNA%q~&cpb{5F12GXl#a9Jx`vu z0ivR2>BXX2Kj}2h@DFS464^C7j5QsGhtprZw!LmP<-4cfz0EcauBB61Vsa3We$7~qU zUUD(yTW9I86?mk3TXWbfx#Bc3eyy_@zOe@Z=HmG2VW?ORz@h>%BnGB2XoXK3IO8y@ zS+zR!w93HDzANCz2&$n|0pi)XQwxN3#}@XWMJ-aHhAXj9`Px`?tW&@1-gnL9=jw+4 zH9K^9!sU=QiwnQ1o8Y8Mai~8q;%7~wxMmma7dtE$BnXgF{oKe4#2s16?q@}cj4;iq z$X=?b)g@FJ=(|o*A;vHz@5rF9xfidR6cJk0WuWbdQN&RcCcqyObEJj{KKFSdIii9~ znk{%4yHjC5^LO@vlM-Ono;7koVlzbP-|JB6Q)$!jCxO@76kIw&0W~|)OA&!+pK_Bi zD$fyaxh_iH_i8l2AIg9zRC0ryh7EBG=BU~++ALZuqCl_`xh@xap{yEsnUbM7`O#8h=IDYXxTz2x}M3P21@ z!Y$L(RbKZ^>p=Wf8kq8`tk0{@)ImdQ&E{?lLNUo|`fz5dGTT2Wa@^gi2|9KSuHwB{ z5)r>01kpAZGLP?a^WI!*_9wt@qIisqZ;MWhc>dhmDaWTn2ljn>Bk=3 zg+Y|mz|#)1x`SCaN50QwzrvL;{+MhAUk4(m2;k+{XJm6di5`gLVvJHm76FCyO4Z@K zMnFoO!tsa2gS;VD<$^BNIKx?f*-XI- zqgU|YC3XVxj@Fbn5ic6m{~}G^Gffw{0`L}&z4MNxwK(9|Cpd958e?!*cW_e*!dP%L z1+@Bt`eky0fz2`xEXHY{p3Xn*nuVjR(P!129`PIw!FsLi6t;`f(;WXOyMQGEwO92T zZaz@L!(n)e@QbZ1Wm~ysa`fH?sm5;qzzdWae{O1L zl<~wb5d6M_ITr?x4SNi3C`4Lr+Nk!ROkuo9g&3ec!?J7Fj=^1l!`T;pQKbWjUq5$p zCGBhD(ecq7P%xRQPW8_1+rI$$_ig>YvI1J5FzCUL)bqJ|mrL)*=j-Kq`|7++NVnni zo;ZKE*IF9J012d_?tpNAgAKXeH*u6lX(7gQ>y$^jN(elLZl+R7E3(<>7+Crm48JQ! z_Je}>SQHE0!WA-iQk~yu`2;>D@P$PxN|Uec26z(hut9h{2KeL$UK&mHs0BF0cwP7* z$^{82$8NYYklXV^7^rc7d$4XGg=2Th3!pN{Xdek#1zKAO6qo{RaJCicu5Ws@#|sC! zXi#9$6`22XJR% zRJP324=BLc$L#?T+D=oo0_t$gb)kF-=&tcuJN7Rxo}gGhUH;idNJ|wRAok$f%MYG5 zwaUq~3$RDry9y#@>*oZMdoeWR&Mh@a-vAb?y8K{2)q+4SyiGFi7+NhBHg`ye$-`n? z;Q5E=dP$i#shI)UhEpg`-+@5TcwEpx0s)3B_Xof63EjRFiGPeBYDv0~+85l3EHM=W%+-YF3R*||uh*&Hs_7&L%pS_$i zolua6jknh?ctFEv3$VC|Q9o8)k263PR~w#(yy_e;YRsN@xHaM_z^Or_uF_u6W&T(N zHg1`G2QqdMb%K@c6_q}ZV7?RL4a^DtcqF5vmbTKgBb1!I0!b24jij8Yf(o%Up=o7o zoJ{Ix83To*nnE6Er}{Luf@aKmTN=C2q6C(xMLJpxhh5R=E&`5bQR@tCU5&vWYj(p_ zSXW;{CWka?LO$!)feczh_uw0S^!BYb>2WbW`El@+pqh|pn$*yaJnc}=R0mK-Y#upW zB7b|MjIUu1AVK8^U=XnhDUs#&-^Gx9jb|9j;(>v)0LGVM8G=34i@o?El7n1RYkEjV zrpoS3uz3!eBR9a(u)u>dr8ZeSPJ(X}pb}p&lUt;pN$IC!oL!b3w{WO;?|5@ zUM3Q1R(~C#jg23;(MiGwdJRdx)d?%DCLw*jR&i7k63l1~fj=V$-VPChF#(?U$+7sg zej8rkbpLvP{(gP`PTR)s^YQ+Cdwei@bHX|H?fBvPr7}_3yK&^*?$VEk+wF< zM-W&evs906XS3bXF&)ju@w)|oNe_IO5O*Arhl>i zj`+O(YCsT_rDN&lHvP)!i}DS;*pBBA&H%2QKfdl+f$+P&ivHNFAof)`zqREb~!m&4* zbE5lode8L{u=3lhFRyjRFpta`?MxtM2nuUk%>5oAYGVw@1fjOkiKwoHlcxCLIN>ZC zP>wDM^MEbAh39je16Sys97xiF#}}Wf{6YkWHd|Gc#>G9YWT{)hY32TB`DOP8RAUZ}FXpLy2$vg}Y)?wE!ITAJTY62qG<>NLS8Vni^&pp^W4dythUW7WhX?gbn>g&*$Yl$P*SJfpVf*zPoP<*IFFDzG zJ-l{Z96TN#@815F0$2R3m?=_?#1Y^_HQX{yp6mg}=ZF`wfSbqJBD!`qey7 z-<%-FX-zZu@p*f=zMNm5yKjHt+1Tv`#gToN*^!vYv=m>_Wt^P|7dT#(amnN%h!vqj5EBSIQyA4LjN>p13elcHb9nR zx1``+F6%BR#3Lt!g8BelFF*$7JBTV4AjJSe2a-`I774q{l?}+aOr?KNdWv%k_#OnS z6bPjpBBBZJ+}=GL)HOc#gHd9g_hI8(pgq{h#isiV_$RN;(?cus$cZ*V&t%~9b{?X4 zbmx5J_m7VaRcHG;SY!WnuZ2j${2ppVgvWQ2y4HE>u-FF-W6P6AA2>w6$48sY-)oDJFM#Gf&Xsc|9u-CD6pn;=h z*g1Yq@cP-cVkdc*jT3?pT0gjTLb>^nY$Y6NUwhBz{oLBJ0)Ew|3nd<2K;i|Je_czu z+?_gjldSrYjdCQvFkkH1A+)Pbj~>Kk@P*%B#ET)S{T)H(RbX;RESaRgR@LVu!28Vfwuv209#h|5-+K0uu^#om?30{pS3^ z!Yl%Vm%h^R$rQtu2x47#gq%pc{2AhoM^0o@>L|5wW){44g< z%2SnC;IGAIiPwnu@ZglWJm2JD zEc9m117b^Go+x4jDUTMmN8$jp(!ypubjyW2tKDLUT9pM~V`J2ZO*$(cH^gIpnnhJ% zlT24Qy!05`zvLfWnMwZu8WAJWA0&ZD!&{YlUcklM{!m%5%a(hgCS18ueBA9B2zYk zmYj=wWa3b#(wlXJH+2SF6KV7_GKL&YIK6U??ZY^hkiF8MXUNJBJ5V%mKEM)L*GT>p z^P-N3+FZn-KbaKXV2AlY>U&$S&En3CzvX94VVy>`rG|SRR*_}y1YB90(u!cH#)S@8w;B!u-Fc|jW%$H)xaMN%R$Vp+QncPoMK z>-HUe!o+eOGVW@$nwg?wNYWygmAs9oB3kH`-u5#OuB8upms7e`)bhpekrnTyMw(UA zr0GF%K7=;xnR$wSF|LuV=I5cYQiV!c8{zo8^@h*dh@GF+*|LW=cQT=MGQkKnWFq_@)38#YlxY;Uazt-%9Q0$L?N$*&!V{IzU6o(!u5`Bk?9nvN0n zd|tSsfj{d7t)YRzO4RgAJ4`}jG{j3;oL=%+m@YxQQjpaX0^sd-fXVYZ0D;uX2mNI& z+AhUtbTFOxKQ@)Vbmt~We2Gv(s7uRK_tWT<)~1W%9G@hFOva!F^O zVv;TTyEGa$Qa29zqIstMfinA{E=x2>n&60LhqI$eUpEE#xWdr&0hh^AhSUK?#iBJi zQf=mB9zW(qnrKF0a$YWu5q)CxBnS)mRt){xYI!Vtc14yBnPy&jDSZQ}G~Hl?v{5FG zvs^qV7tDxVnG8URC&{le44kjOS9nBIkN{USn1}-H3kIYh<_v8S#KU7})g27QIl3GM zbbbK;v6mq>85G1}ln&g-qVLBS8bRf`Ci$@G@S)Q(w=Xe)=9t-wJc%$K3X%*e2BJqS z2xu3Z8g;QxZC#0suN;JJ6ObVdu?(|DEWiao+pKo2GzDBc)GAt2eDynFOYv-PWqt!4 zVVnvT_NSz`NdZF!QXN4cE1i-<{ojP8js=ARcUWZ18P zvzUal46&=Af{3SqusJ9cxBD?TQAwymQpuRv%)^CBxpMOTlMTY%o;V2jyico_of81* zG0T@BXS7Hi#>n3^Kfq-oog?pyRe2)CH%DS#Jjt`Is7ED2CO`@Gjv%yfCk?=}VSQ@= z!IwVKa%4|ua`7-G6k8K`H>)h)K}oc|tKdW?WYKPg(N=CE3xFzQ?sm}^u)hND_rnb? zyOU64H<=O#cEi_EA(h5z9T_4H8mEM&uLw%`MJ8luB zUIx%uj%kC6BgvHxv)8T6#TqrG?{gW7%rNw<-a*6_Q}&z7wfl$4+`DmbSJkXHsx+}= zkZV!*dh)zLl?4RTRoo4R`?uV|)pu7NFVewz6fogXwMV7xV>2wZau0OY3p6kgy=fW_ z6PrVaqEL*znGDdlH9hjf(s%W<%@u{tSXqHofO$FH*B^QP7M%v>u7SAXA8boLy66?z(EGVp z@nxd3_Lhh8#b-paJpohJIk7xJS}mHpZQ?)>dAaqccgjQ%A;lU(p}TPOwYJ9~Y^CoG zAn!RYC@AQ1E76yZB~1#2Nh&^r40is$n~%;*=|>jThNDCLTs&c0|KPWeg_-Yz187sy zjuX$fw7G;3FWSnoWS_sh&tBv#x?f-w;ubxAaeX(Y9$fVmrJ;(^ur9~SC6tdE0Jl+2 zlc^%K&l$LeL^qSmBA0zE4Qlv(aj#0Ai z=%v6?2gP0?EGE$3Osp^6$DJrR^;ULxVkna+t|g!{YBrMtsxfD{|1Kr9yg$*`b{9(4nQrkXrBTHb1`Y&;h>EG zAvHMh!-{+nf~Gg*XFqM09J{S`-I+) z4TBh2i{_owTw!#+QKEZa?3{JRW-!}(2i2N6 z0D1npsuG>{m`8R+wQcZ-{rTOeEqJ35uk?kwShlF0f0wpl;z-WSZ9jUVf6CRu?;hK>F+XGKPM~6u*=U#~qNFDe1T=tVk5o(G6FybK=Gr1V z$WU&OZ0R0brS_mV8oz&~=^MVnjHkWmGBxF|^XVQ- z+@0S`EB-DV7oNxVkS0*zK_r&LOl6#~V7D{;m9`%ytsk|31>Tnl^@FJ&$=m~RnCVym zJnbp~x)%lLf-xEr&o)4|@5+6Ks%n6}o{dxRIIN>G;RjmmVOQ#DrI~3nSiKrq!Idz5 zp|3r4a)EGL+vq4-Ef%%_S8(EYMS7oMgC8&{WPOiUPd$EnU*GHTTfaX%s^Zxm?3JB@ zT8l4xVZ(`VRopHy9!uh+@mg}P%i*pl;;qnNbAIWEfY#q4vo<}<&}H4x!*)g!vxdPV zG1}+2Fy21rzNos0MqrGT#85dZyvVC(Hx>}SX}WO76K{LiQ$*{a@*J<=&_T>P!J-*& zALO8p|Nj6+K)Ju*LAQE%%*Pl$tDx{%at|uJZ~EZ{(SOYBo(vQy=neVl)f&Iyg2B}A z2wZDF3>=4~EgafdCtogNVCGQCSpZ^^7G7>*nZdac%8phm2SdAjHd{|-3xnvQKZaI; ze_yTc*D??eylPE}0K$6=YsInwdRK+^rIzs3>1S(6+Ru1+Tm3~M@UjJTcohyuA~(`O)75p*p6JwjRPWu6;G?6;Utq8Fw{69 z@HE)`4h*K_QM8z}1J538naxb>(-JC4QQ$ww+E4a&yIs$ZTP-+?l2$7|z<4w9evt6t z=OvpSQjcrw95;vk(0HKEtiHRW47)nuEV!ER7io4KZklRYO~U9hyV+(F(5hTPqydr| zH5CS)tM3YL|8RO8Z${<%n}cm~`BI2={m1-Zc6zuG|14Q{$4RSNgDl0aC}TcWL43At ze}+p^7d=5nMIbxYcW+OQ((5JAO$lnk+D-t-ck@ez%I3kpT+)|Z>&R(2?Lyeow;YdX zLTl_b_OlWnX%VG71-AeAeYEWZ+K~7Ns;rF^fDEey0EN5)L|zvepeSIa00XVDqhDHO zak{{f(Q0w+%q6#t%nc=?WM%|N*8d|@=AZ$qOpOAp< zU)wBrYCZ0wHJ!P(s_%tsYdpBjWVPZfW#>6sNfn(F{_~0dyx>1C(cG%@mi|r_Y4q_d z{)?ff2;>0x2zvb|L)*8~$Tw`aGY>On7*sV45gRJMa%qW2r0Y4oBP^Oi24`Z2E_9{Xde6P|X) zydqr(mfwHU<-T?T@-C9Co$(*|^MwEOcE#@=;AU)TxBqna>E7f1(?@XVLp!VV;NSp| zyORIJ7>h1YOYG-?T3Npg)Pnl6K&_*{2-NxsPe9qPWPi6iO7{ERkqaB*kG$oUf6S18 z>OJZ`dDQLpcb~#ujD!3SNXO(SkDkKf?>yb{2Fd;&70X-YYSwb|Rfz@rKtnu*Ox-6| z!JVC_k9PN-K7P`d+t7{n_aC7v%t8OL*N)qZcG$)#Xz3{!E`phl4!ET?FZurdPIr}K zNes;r!F;4^4fN`%9T{~Q8$dm^^O_9(v7W_tS(9OBtf#g;tI4oC*7Mz77#ZySQ7)&O z9FGwBHUqZ7{YZh2u5b&EJst}0>Prl>DIBWlM|Ir@zQR9onS;iOsqdh+FFNGVP{nhT~ z7EgY;^=Qwtmd?%v=fOenXm6NpZShq(!J`0uZ-KMkM*KV!!{uL1VS85?2|Oa}0BzsZ z-yNn0D0|-uo{({qgv)GvaFDj3a-3N$B8FoIIE^2|e2&EA**xt1-vJw=5;C>_*3}B&Z z#MKw641*3UEbF%eiTo={hDu0DA@Tc+m`ZVHO8lQrctB2yddPQbqSjm|%52;xNYFC{ zhBBxwnGD2-rXm2K+M+&9PSe+_wL(|1xx(%Pi<+rO$@SU?wBV?OXNXlyGugInTuEhw zrKA;hZ6n;lSJb6@$4AGF)mWwK2)MRt2*A%*j>d1Qm|Lm7QoCBbdKWBl^l4`nu5U9B zQXNXyc3XcH=Q+mBko`lcR1)B(x^Qq79p7PGMD57FI%99d2KV@Nznf5|-7@cxKJ1hd_erFe_1m!PnS6%e_zy9={P5vts6ID`D-al%X&U ztlhP2pN-F4(<1%M>$ie&tVj>43jXKGYtK_+d49#gm%Np2%0(+897h=>2qT2vAPKS& zM$^j+9_bK%Z39cnkTaM`3}JZ2A8boY$^s+JFvmIlni+OQBWalxb8Lk_RLwE1=pXp= zCWB@EMA0RsKa(VcPRr{F%Nhrb-AMZK@4`p}eOtz$;V4hlc91~2 zicIKK$TdInQvzGJnXXnSwUX?M4v}tQeLl^p*LJiy3&l%Rcg0Z1ND6!1F@x8|4>Y%F zNb}VVN@I7Y>U_7^%qE4GDGD$1zOq4dbBCiyIAvn9{{oFhRfQPF;Hv6S?H7jgF}dsQ z7o#+A!lJQYA@s#*7lY&g&%HFD19^m3dtltoByC)$8Di})K`okx6Cgsp7;y1Rm|HOB zw39aZ|0N?0Bps-)p$T*cW}E@*IF|Ej>=C#L0v!C_qenY?Z8zNC?{&Sl zTj>a}&pZ9Dw~qIF{U;;gMII00{eE}%$;g!n2M2qr-qXG>-uHG|@d^rfkdf*)bN2eH zet*|DinjK4F!yF@v(%GSf4A$K)l`aot|lXJmRz)#G*=I-S9dcMR$GU`GG+)bE8tVp zZVwVZD@8kiV?eE5B32LPpdIY`SknNWc66WCWAx3I-tEKx`mgQ(JGXNo;ZS#Tm5UO~ z`^S6QXriFF2f#!Vqj>giwrkQ%UPh{j=j>c;1^&N z(p&T^kdgt}Q!5*FhjOh}&|^Hpjk!?%x0*^O^;pELq@_S=C;71oD34(pYCpIRufg#) zXF+vKy3>fB8ExTM|DDFMylz^Z>ReD+apFu&29sK@PNj;{VUR0Ywj>Vj!aVjh=<#90 z=}0arGDoh#3_lDjnG;wh4RJu1JhWz}d$n%U7@XZ~R0G{r#djh@v{W3_jnU8LW>tDF zoHc1|>y45#@$Ejhtp*n(> zN6H8#nK}3ym&<`4u%z@JNaxddV;Dasf!JK!KyjEzR+(PmC|egYMcGxh9g~5%7VDtm z$Q9CX;vYE?eH82St3gJcG(96gVBAKS;a5erGx?+}SZ{dwx z+$e?K4J|UFDuP1Ui!4juX@%FzA>QIx$-Tdkdy2V%l&Z;mu#x!&GhfwZ{?_@nn)wKBb$`22_Z4RU@13W0xqt6&WS>y>F6AzOOwi?+8Ey3j z#X&Oa4Z1ql9nY0W9Et8)H%3VEYdeH1hT0VCtLr%7b!dN;JJ)#u`~?8F({_sySz@B) zxaWT*pc$2)6N(n6h*XfEy(bKIlt^H9yg@<=m94FK*xe7}Av}07>P#~7>&6zOO6MXT z`>}7%)knH$W?*cSkAOx#-<)9K$T!K83Ywb6DC8K-+&$X)lHdl2S5vdrJzyi8-hpUC zg*Y4}mNW37wV*J_laf+&j$^Ty@(ZU(#YS{l0AtQ50Rq3gDwseQ* z@T#zFOgEZZ1BN8JPp}tkVil{M4BAoXgtgmd9G^1-H&kokk?#dq0ykZE9=b)`UhStjRhYMpV-WdIxxOb&*(r8B&l*?_p>{-H#hka%h zyHtJlNfjQ8&~3us2>OM5Y+;0LGZyLXR~1fbN*^qUQun zwP0{)r>$>i7TQjcL+38)Lc^)HKAD3OvHjG5k_YGFL#2xdk`G7HzmM%G`l_F?hvVRP z0&9&vZuzs)q!n0jR^lfAs>pa4Lx!$j7B!nx!#e}0-d#8iXYA5Vu`0tWb0_{>R&Lw+ zawy9YT2T$i=`69hil3FuU0EuBV5OoO6)No&(4@kVPM3aR^!t^G9qe!~ELfE8>#}Va zdUCN7Bp21xj2moUho4k5b3c|W1!3MUF*@kfsAOj$#i2$EbU%mL<&VQ@N-=|iZTI)- zcb@zEbNJKw&fD&=Pb_jnfY%H3ffxUyJy(6sd?P1xA-w306%vE@T)%rBjn8t(vol`b&SPM# zaoUs&49^1-?f%5|%#{dH)dY(c{|4nrm*ehO&C`qU-)eD(89Yd;qoG{~jj> zwr71b7IDb}U8AUq{AF(IN;rbbC3bb1!CMkdwOahw4oD%=ssR^Tt>znyvIw+%Dk$0t zds#eqbNR`Ow}-Ee9WG11TcDX3AcXKP;7SRU)@Bj1E2@G@`Qgi@ECTLXBxy@p{+uZSZ2wk*%5CT1tMX8tpm7o{MLCs)e4N$<+p=g_mxsTGt z$oUQ(o;K3k&h|FmU!gwCVRoT!3rl(mg_}X#YC$)%_$p4C81B5FKoL!pw{ia|JFEo7 z;~_Wmk3rZaSAsP+#9QHI?N?jAPQu)(Jf!=atjUt=UF_(d(J%m`s(Zi z7FJSZ6kU!^beKG5@YN5+$FLRQ+ztoHY5t^w7A+?jWP|TGy2R4-yTy=Ow8!q36JVyG zW&Z9bH32rdN+eXbFC_Fl7=Gg+2tPY|d-CSojKZO))GrkoCSQoNQTv@UZ5SLJ6~A~N zhZ$`HEl$;B`Gp9)@m0GE(Br@ygpHR9x|mC$p&vQo{k2@J-a|vr;Me`Nq$fBp=#qu9M68d>`K&V;!9TuwF@|snVoVHT-NbtiBP3&kz6hf+A}SP*ePPJe#u6F{ zHCAoRIH-BUU#)9;c{oq^8&6ov+FyBP-wd0j%O^vJD_X4}=hPsHfpvKiKezwzajzP@4bOUW@wY=yU-S*KeR=op(7pp(2*@B6 zCdAG0Ub*k7KlU!)h%7OI>5u_o&2(-sB@RwIe6kGgmx(x`9rHTEH8uSgHEkr%d2|o) zK~K*=H&1wbDz41)UQ#vY1Q&&*eYgKHH|{6*5p*cnM7X2lx&Z#vF~ z#>v0Av8oeBlkn*^sTF2u?i##^ntP!YEUb9EvFiFvJkhlsuqA$Umr$fIB|X`fY8SCf zv{2@PEMsGBaBbe!U67t)Ys=4&;bBNC!%>>h#ZyMK^g{I7FM+8jb(psjxQY~5%o3RC z!cG098{&oIIhW2hs2LPu_LyXOo%NI0=gr2Az*7M9Ap=pA)?LnOh&E z>jAy@e8Bj5nm_`M4ny-(IPwri66%qJDA0zHgfx;2MgsGMmsQB8o~H&CTZ0Maa{;R#!m!90sNDp)hi_1F+tJ|=(g`m zBwB$FQppg9;3y3DSLrY?7uv z#H}X6I$sMYhG@*7FTkZ<4J;T|Iw>>k3RjgieL< z$0P2I0&C!0`f{OtzF-MoJ!TJXwYn;JOlMPND%UOh3>v2K;(D%DumIeYjG`(xDLfQ% z(h6gXfX-B-_>Nj(b!w(Y;PKK;Rlx&$$ewok;0$2=H135v}elxS(QAt2DC_D z?GvB&n&bow9-a29OM9@&v)>py5m8tGuz+stP-zqT&%L|QL8NmvM2SM=!4nRUE|Lnp zgn*ou__}a;MI8T%85kuUVJwn#X5K($()01YG%l4T((FeY?Odz9k_3Qp0J})@lg`Y? zyUVb*@W)IvRC5YxUGcfK$l$A1%WB^a!9U@XZm5tqG za!Ye+$F$~Y6L|U!2N@3B6AG$8WSg+8Y@n3{Ace*e7WErffC|2K+C>|cbiRY1F1haj zWiWM=Cnf{|Zn@R*#!%X0LdALQ$dbrVGCer5^O}*JtC1zq7e{uUmB8Uo-!dL<^If*E zhN<#7Z8Rsb2fbO=oPk4|1So=IaoF<-Imc~NnF*0Y9Q3rFLlOfk!60v`L-Rmzjb`n1MogH zxS<+-V)SWJ7I;fL@B1R0umu!fF44MjMwQ`p^B4iR@ol?u0av2K!U4WPbz}w5M>K1L znn(;>y>BegX)WBv2Hc%J2zRG7aCfTUF8(syorSZ%2W+B%31P24)4fqKAf@;sgsyxD zT{M@3L9$4i3y?><6Hf51=9t6LfB$u~Nb@pdf5Gm4gPDxR-c&a9>BAfPsCHsAV`48K z?DsSN6o^c|`KH1Z&=h%9qx9tm@|^hUX{eB~hAND|dG9B%;dlS3Cg zzrU}Ij6NXaog=xL8|qy($%f4@B7Zc!uv7q$isls5J%lZkfI`|J*1;UO4OqNkh98pt zaM;XAL5OO?R;#-Y>?Krz48|yfq``UVzANBi^cvqn+X(EPlDvGz{F5?7n!K;O>Y@`D z?0U7@G?k_goXr1n1vT{iD+4{~&_pi^3Xt_PFeG%&>owQ<;=(eyexZm>6)!jOn1CEI zuNEe4mL0Z?07a!jJQJmn54wFyNr|lH!ZBU@}AVT=~Y=PTP^ zaTOM?Z49F!NukA_ax-n;Y7#sXVo6L-mD?xZ5 zs*Lj&ae^u{v?yxEu%l1OdIe$c|O$>;2v6Yglp)=aR+sqK^ejNMiE_fdl8jm;VFraLAyOKJsvSadhdq9 z{Waw8FU0!`LrU_i;EhwRfQBMXbdN0H-1TLH1;#Gqjp>#Y_QzhEG}AN54U$79o+O2D z3a|?}=2#*1?}ro12;c_}NVvzJ6$Vq70A{9TBaJH-%-90(^z@w9R@Z=%kHZ;Uq#^=k z4)~oV@6DHAg^pnn!-4ePeEC%x2Yh6Aim1D0MTj?U@*2>%QN4u={Tvn90$*gnfhC~D zf@LRDS*J)ir?b{EjSwU^B*MW6`)4|2N$^J6y6JgZMst>rstG_XP(;3=RI$kU5D$Qx zP&F?#{Yt?@`vACUsMaFwFafH~J` znX~kU&b4@i&CRm(TJ&QeK9`8=V+y$q9Ztnp5xLb~bLOjXWUjSnI`pSZ8mXrN>Nl_0 zufDbB8ztVW67NNc_r3)(iF^V=(6=BEND*TlWziiA|8BuPbBKm-Z_bUs_u+LKda80+oW(4^Bu`G z<8?5NF06#H?mr4;6X_@SCSz#kpaLjFu1SdfVu>v&!$KHDNK9rb-_XiL%o}Y~X=xiy9exAfmdR<@lCxyjN+i1Aw0GY_IS0eWi4WwPIJN*fCgrM3Bf4to3b8jirj)gR9WIxnJLhcUXmD}hSIx@$YI;)G%s8jqH;@(5WWfLz)20YY)+4gM)R28S9Z7;5VZ@ZfYL^>RDfdqjgdo`?w^Vc=2> z0IS=}Fi>0~WPv%69#_#g$O&o)u7Ru#end8qH;WnozX>cIpRu4oJ1uVg5ew*#^~#W< zref~oEhD;X(~Rblk>ZeSpK8pb91L?N=abtmnl}d7;)`R%!M{=@!~vw_0=>OCe+mjw@J z*Vo*u*rJAT#{$y(uYgZp;EV7%{d)N9R^XHU-7c}(F2zA@(;Gb{DP-vb+X4vGlgP8u~;MEIkm7KTP6n>W1&4tI2*bO3?P3sJB)Nok1+i3u!tdnLK@!HcS9{>0XE0p#q?XbXl!d zf|KLD$739AMYQ7@!Wz-HXs;0t6JdB}U)WWfibjQ~Zsn_i0ga|i?HCj#8m}%vH@b7) zMq67r)Ckqm-pGAV#}G{`BW)kk=W0TTho-_C(6MZ?i)m63>NY0PXo5V^fc^#!@ThIm zS2)pU3qM!5Qucv`;y{{ESSfU5A=5hyFr=WhFoVAVBbr)g4w{Sca|xg?PXK;m;E}5g9DOgaJ()Gr?_*My#U_IFd3PE7f?u80hGABvE)^sc+LKF1^ zibgoEjArP5)9oI_NSYy^u3gjdnp^Dc&vXwpu|i_edg2mwRft=S$v4ssM_p7A&|e zl0nOw@gVdOZ|hK;6yOR^zO;6dVbs$uVvD29Dj5t~N!em-}JA#F{Ji+xCRZ(0PN zSlG6MO63Tz<{jY&V4Fz6{5DOC#v;ACg4LUcIa(|%;2>T!pvUNF$K`q2iiPStMZW1Y z;wCSo`|*z>AYaD8Y2=?q(Djdz@UIz){dCNw#`lRVR7k`A!q%yBpT9zi$yvLHrxdm; zlMum>**^*#VYcwTHTXrp+=Q%6n19SA>+4Nc<)b-$6D1f4RjAnrHZt$nhC3(>rMEBc znfOQFtEd`~d}(m{7!~oVw4s>d#0&!}Cg{tskcD<^M?(+erQL(mO5%Qm5)=J@Oh&}8 zow%LX~PAZ;kL{x;4VE>X8ILfJ~FT)}%Vp_SnSO%KEFm zK9cy7;V~}SgfJAB(opOzjAPzj>r$Lh+h~aQTX^*XTyL}`oAHnF4!@XNWXeX!i9hI3 zTSKcY!wxC2Oqae&8)y5|pGsgt%MI8>?qQ^@pA7>Wb0dB%O&3^;9J2I8eox7sfZ%bu z$WwSVy4KeQZgiA3^G#A|1sGEiWeR2RM?ybE=J=+W$D3p$E{kxL2EZ-sbtZWMk41oF zIh;(dBXM;%k1v!dnHOP!?LRJl&wu|EcE{g+vt4iMB^7r3-lzuIH=)5)STwLDZs?_V z^-<#5n`@}9f5D5m;7~?iEwmDM_jb`hfqthE?}A>C(yA96IM5BK-?TD_XkyKH}Y^wG2)e$q0i*mCY5E8Ny% z3Q(nLmvUhTVWQXE3L0&I7h7Atk~mG!v=hBE^uA+coekrZ@+p|dSZzi8AVR|6jdXY= zN~jE*fGI+Mbd;0LM&Te;R_bIpL`L8!eMq(2K$G?@SzdGh?3|*h<(sZs+$cW)7S8?C z#kdnSwlCVdui}cJKM-LCjygF5EMAd( z*x+pq>zs!_z0l-n7}!MlLMS$c3`OY^&9HbssaW!pz|?R2X%k&rJz4fLlK21`dlx6g z6B31vaE$tuw>3Tl47T?ThXt0Gz`>}{|0H?H__*d ze2BaO{F4R>bQP3gYLQs6Qvx!hM|#(fRoGC)F{&6WK#I{#M(`kSGQvlGlMz1cplE3K zyO_s2!E226b`KJMT@X~dVt8HABZ~1t&wVNUamBa2vDbFp?BL+w@d{78N8TUw)_a1l zyUD&Cj&|@kSW3I=m7;<4DdVNZ-JKi7k)`e0-e#><`Ty@vj2_(z96xNm= zdt;$L(OgZ zy!IdA>tl~kSlEUsdqbF%-k}OgVmt*CQ@S;24kN^?kxHB>n1dWmKT(bcD;KsGD@4H| z-Iqi^?HD!WG=BmAX=fs(&r|y2b}mwOc*@SWU5b=lp0Yb`MPkB6Urz_)_eU>OgR;f6P2~FxNkObd>o_gGskElJOB(r@u9g@!MB1M3=gXAJ1 znW9++9zMSknoIFYG9{$QH;6_N4?tab&u!EiDT*U7+9oFvd8;Z83yy=GRWr(Jn zNc;64JvzYOFu+|9dS7TaY)tOph?I@00fu!0TCdSL63(^GRonDb|AB;(iD3!##D5nV zNaYuja+0gio7&r6AYFx=MYfR7ed6gv6{L(*tz=oLW$qLl$_Q*mLSbSVrDY!Siq+s( zjY})G-1oYZXAgApO!w!Ecd`lHt(8FGi0(yKff`Vzpx9Xw$q5u{v)LkCm#{|M?D1RI z3P|}^q72d0<(m(5U3~S-OFCst0LiZ#eLXK}vsgKFS81wXo_`UbA+4K*mu^Y|(rU~& zbk%LONMLGC`;Ug=1x{NX%duq$A&_flnwMibvN#&7>v#wOS*%LKGK`t0?H?c?7sep7 zijw4ER!xoDJt4i|1%{}K%0~QJR{Qc$ebeXf?d>Zc?Y;5NP)qIh-WZx8BwNViU)ue| z24^sr4)pTlj5rCC>Uy6j>6>wXG`iT%{BIKBpVpBl{DKZ|*?wo@|E99UnjQhto%DG^ zjD#dZ&V~$0!Vap{L*aCcA3i4J@<;J15+rK=DQc7#T+ESx=kr*Qk(`KybxlO*s|b~u za%{li$UZYT9>^G~*;Redn9Jad;5RUfK~UO`&ib1wzdKeVqD+r;Ce=qcDeOk(Jnv)P zh%|=dU6ayGnhx$6C__J3rZ@%%2dvu&DolJLg>fN>@{f@J&_FZzhHi&7>iA6qi})L$ z;fAn5Uah(Z6;qXG;k1EaUZngEjV^{r?qsDQDDe2?BIM8)EUf=Lxm zn>=jHEW0b7k5)}0GEw+yCf4 zLR~^e zvzl_6Jnhk+1XHG?rIOTH?6x6A+mag;)w~!Qg5RD^9^&o5V1j1?@OkyBR-dHgAsi-& zC$O8a?wo8HZAq$thoBRZbt<7HGu##kEnT$4`=I|Ftv5;Z&E;Cy`|vZpGBmJij>KU6 zuF@*ledm)RD|?MJJD(86AQ-AzyC-Bq<#X9iLN?(q(_5Au;cXM1?PxCwCM0pf{FSA{ zer#M6Zd;R@l@F691&f$58L-@6ibqC~1AMYgwc~DFGt1ZM%0dVfl!PBx6W5&miCyZJ zsaS|O4kN0VB0GP5_3{V6v2WR*CCeX($affF1gl@gy%UDy;lg=!1{L%>Sj+kOo6cUR z>-g2goti{Uh@&jc(^;X?#y%$^cTMUM!?_yq8%cs{b;ynRPz}mtJM`^j3HZT+i zcgnNNcjRm1I=-3{%QcO2w49v!$n8DBJ3sb{vqv=2t6>AsWk7iWWxqz&cZ3) z6DAR-5J#IRccR47H=F2Lh^0=X1Y4Qa^MvnZNGtj|R5i_{80*>+aQ_fVDLVa}T885% ztYYbi(rjy5FEET|CtZD)up`7VPo zw7J312(K)8w_M6?GjP5?K6gkwibo75w_)fgcIQLGx$24ln71SN*Fjh9XA%D3eM|xF z8vX@Ri8`taSBJ9Gzc7Xeff*{_IzRevarn;bB}qVoO+ScE#ZNr} zf*R{swb8saQe7u1o)Q^C-xKD-haCN^6O6j(I6}xKsQN;J5Cs|f3ssah21>=TK^nL$ z_~@p{2cw9%EITjK?D~0FgquQX`NeM@x<5ufMvu!@E9d~P&pG13EVs}d0`@LO!H#(d z$?Z>Dx3{-j7_MNe%ody|nhud*!RzVEVz%`J2)OhCjLAV98xbhz2O1wAflpX>!S%c- z2nE6+XWWIOvj92>0qiJa81yj?7r7%XWHEc?8{GzTDyph{!!LaGUlXS9su-Z0;jAFa9!j*G>l~PLm|A%mrr-E9&-(N=CHP5+j_(v)`c0x+4wW(m zf$=!R69JgTYqU4v@0ii6^x}*qq{b9Gi$myKLMUDU$wSW0Ey&!cqQO1+E3hcR&@j?4 z&!D5S)q3GR^=h4r#bB(9c+?OLqY0xzM}$k=B7^>bwARKMYS<7k71@d-fl!bLV%W4Q zECAmsA#WdO3J;Gr4NtUta=(hQFoEde5ZoUGU*_yFY9 zm1fYGh4*cu2PE6Sa2`Qw6shLu6 zON_gv9#s5WDY&hstAM$~GzhhUP^ioq;oJ|Je~EY?=_s|Km848@kddjd_W(@gWfZ|~ zlTPYdL)qV_MHkn+yZ&qXdE{d_H6X^W$!w!UpFG$cq!cSi9=}nYH3donVGQlHWMe7Bu{aVm z3g(fwYS7wsjh-7)akE?p6^phvHo+c__z4C*J;R=wccC2d?r0Ks695KVy=vUFEz^A9 zvRZ|1QJk4o2(sxD3y`cbHaI~IhEYV7!6FC)5)B>%k=HOF&M=TLSo-@lISk7%C99PR zSP};mxe5U7OHqn}Ex&&@8D#!(C~pbyxp3k#aX+DPGVB8a$ui(3M2S42M(Szsi0w$( zQ+K~49lHoOULX7X19Q`0-vD4mW|+tjtv^vJ-&mv}oz-~9^%CzujlJRX z#0A3QE&N48V+sa}gwk<{#swKbBo@NEmOmSUIWxctPGc-X%v&X0;UD`89DOv9r1Kh> zO6UeO9d-^~?x(V*Zd7iKS3}3Bq}JfSi6oIrQUAYk(5T7_WsIAAwE~d%;HLgP_tVF# zRJT8bHzBXY@daf$aNeE20MZi3+?QyGp5m0Dvkixumv}?H6_+K0ff)uj8V2P>H3=Lg z8vZ;Z@KFBj?mWCge|6XS;rQ^mgT}tyrcx1&5_Fc|h+S=1?l4#B7=*L%vx#|gHN0Z% zJ_*u9|L_)Dtq-`*nu3En4o#BmgOZ$ZxMp<3*@ieoc5+aP>5(rdf8GGB80D*UGt-f@5I}!@o?eG>BB&i{Tp>4tWRV|=XD)3q6lzq=H%HOR{6rtwfmP<$S1*m4 zLb)cw0OoAs8*+kBEtB|syYU$)lq;w@mpRTiau_THCcP6G46__XN*mLV)WQXwlpCog zUH%hOo}*c;qeLU0&}_cKIJmtacvY@e+Zb~E_wC=O?QI!O%`oX<`VvHdcU3eKO!R;WV>vz1-OZxTcnj&Da)%T4MMVL+9scAe@z1@B6m#Rof zOLcw5bx3BidNQv@;)5}Iqk?=JCIqz$+(d^%7Q-w;$L9P(F{0r(HNO3Oel*Y0Yglj> zR@~c;J7WvjYG{AAv5+?(A9!*761wwQB=}IDx}( z+wA-IOlZ(znBhy2rVD!PAxVf!Sy@R^s!89p*q@+& z5NHBeJ-YKneR3}OE=OHb>=H}>yv=z4B0w3aQygq>W3Lu?|B2&MsFf72a?dbOFuEZY zq=809Pqe>`$s42)1fib$;eI@a-6^5nh7ul^Fu zbtuAO(G)wxGCO>l#S2Wec*2QxFn|m0+pz5fKxAQn4Kv0SZ%h4V(yagCcX-bG_zjt z@Jy!R0%~owkZQf8c-cVMj9irRKEw$eIu*0m)1n$rtsqr7hJ+mPaFBz6rv?$nFNnV>%+v$VV%*BQ(mnMj9pV=($GkJUe5?7BH2@YM_j^IzI9;bzWgaBYMV6 z9gKgblUyfS#L-8TLKBgQUi~3mVuT2UXNl2S0U&r_c8Sj@$+5|OF+>0tgMz*C7LYDp z`RNSBjYb^bJNY?)37P@2m^%$284R56uu*1<;M+Fd;oAPz zIrtVzQm|1Rv79=7qtYc0?O~(~#OlFGEXU19OG6LIL>%>cQJGulSDY{g@9?8}@@!tZ zU^uyW_g9JAXFDFZw>GF~9-y%)x;0gCFi>6Sq9wjgFwOGc>qGc69*fWk&F=-~?Ro~K zH-dHs_DxyXvY#XZ_xr?4I;5hsd=}NEt86o?Z$&2k#vtc@Q{Ivz9L2_r)DOjA7>r@S zR;g!B5?AT`vT1q~Hf9;{P`7FJ5!F&W8b3?``C$3)4-$m}B*Q{fk8C8rwI9=m6U2)?V z954|i0JmNdl0QVitQ6g2M%vMkWRoD0u0y}wf(zo8-e)h#D`LHTVc9u3JwJYXdib&$ zAQ$C;QE^JwAvxa2d2755K36W`SCTu(U^)Zm8Gv362-7fJiq%*OO`2K_;C*v&q*E36 zY?w5~S{hZEP`SM(ZsI%Gn{XRXGVz+3FPsb+p~f%^;bg^BN%~>>$?+@x%s*Y{F;k@r zer?${&nI#);F2hXZfN3Zvlx(K`U#VP^rECZUVNl%XYe4hX&MzjJkxLdGf}+wZ=2&o>q$hO6pCZ-_8@bqGt_>2*eCq&Z zksV%47(Oz#9;Qu_-z!bxoW((Z#p{q)IT% z;_S7QEEX;0h8Bx!!wjRexc-Fsg)1usJ73HVD>Ji%zQL38`>$*n&O#&9jSG~EDso3# zGY$@Pud=B!rdL;8xonu)Ys;}%Xkld)a=q#10}?G*U7K11NBI6c18o?E)lZqkG)*o8 zA&Ty+&g5D)L4@sBkKL3L$}1azDV7bWjP$9}uhg;^n1GeQBnu zyf2LqP@SVUUUlaly)jW8zEi|`3xck!E-Tz2g+e&BGW4<$@gq%M#xM!1W=XrCX1@s9 zMuGvt81^<{)GYaIQXPiLTWkecDXKQuXLGdD0PGyzHS#%Gf=yUs!ScLO%z-KcUh|57 zZaN}7Y@|bGB*0-XvDPtNgNjc=s7%`hMp~gW44K)jHBFTZ4se!?Vcx`f3=~3KNX3jp zDGP25QTb}vn$%8Q%ntMT5${r3G*$hOE%Wx+B7@045*pED*n~ zYoi-JP{QUZn7T~(Z#HYP8z-?;gX+sCp5rx?TF6LOT9aLXu-iv950dm8J#Sz9(cOAF zR+4G$O;n`s&X0sqbq#xHZ;$g>#m1SBgqa~Xt5k>&zuyCB&*G~xlL9f8!0M?te(fHN zaDe#Flu3V#4NnBMf4M9-*}Ryd)uIkDE-N-{X$;c$UPWMp%9F|sjK_Z$rGFl6pX%;6 zVN*9HDP)IqGw$!UQB+dvWJGkAWgH&!bB{kcv^7Ypits?+%gXD z1sR=wSbtV?So!KZX>%Xzzy zA(;7P$*_9U`9(3dNyQ^`Ci#^#Q+?wy`H4W~iQ(3@oJ$ZuV+vtzP;rX5G;6(>%*VB! z0HSi|I?i*bc?+dSaZ<9a5{_xw`SP{_t*EKFKZE<@y z|90MX5VmMvn+~bGqQ>o<0Uf+#Q9O(3x>^-0{)z%tYk@dmgpFxuHPen^CY3G!7kYR1 zK<^S{>aUlOCR}zmyD64PTzR;bUclN{?+Zy(2k8LX#~Y!oSsG6eizNlSNiC z-dd72xKyiQ7=fd3Rh&UI*V;zRrZ6bXAtB9o*@9xoppQiI1BLTL|F)ClaJeM2XmnuZ zp#LU}KEiQ8cQ>IaBI)|Xw^wlzUzgWEvkdtMWEOn&?Sy-2@CvU`#~;5wdsbpoCsTBt z8CEGLPAqVZxsd0O`^o09{XA9?O(s05oIfiyXF&13=tRDZr^vO;gmecFL;2jv(c%Z`?icn0~2w|-(24DFxe?rzD9|Je2Zu`B#*xZtH|2T+@`@Qnk5 zXQt?11WYlG4ebX29pO({PVt9*TB@dz$d29ki$w9K*os?%bACKWX7+fFZ0Tue@b8o~ ztgYrl1*9&VSr{?c5g!4#uAOo4a}2bOgU%^2;`8x!;nvwUfS-dP0B89(!z3HAl6 z6KW8I3VO%5ORU3hxWjNu>(2zs2d*r}Ho}EXA{K}xU~Ny??K?Q0seivr^Ws@Ly&E`AJ7N^Lg&V29 z%i_VNy^?v!kjbMb5!Y_{AI03<>qZ8JALp+Rp?_~g+MwB83xefO9kKS8FmUOhCS2Tk z6`H=O@2XLQzo$9=#X=hX;at%{7h}VC4F#3on^|ovZU&r@=&1Q60@=~P)!@)KXsF9= zdn#IP0~%xv8h(Q>UxQZ3>xlRODDe>x5|JF=-B@Y5p7O8Q>*yxcMdaE(V{?$kA!1ra z{69Oy_g@&|Z#6^I2a#C%JapC3ZWo_XYDnS_2I58sd<)@!;C zGf!NiYo6mW2OQ$^yKw}{ zuixmeCa#j76S|Pe)3(WaCcj5Dg?S2KKh{+PHO^Wa_7V!?AiHb9*#qKznv^ZM1ST?> zXVuUcLJlNF|CONB%zV943K@YKgxJUD^10bVf;!nP>J`7!NK0pDf|LBag?Lj}Us1|1 z1+h?RKuo*OZwn%R2WN-h9aMCvFi^Nfr_2^_g(DQv%p8&87s7U}7V3=nvsYF8EHX{W zJ7t31N;AYZTT}Arf)h^0`Hlm|{nUdPuLyv@k-uSPAnuL5cAaw=euIB*sL#N+Hrx%< zgzfErJ7@&}|U6CV^`)1DR&lFk+6*Toi>anmN_~N>^kKKKN<=IQ ziUDBBZBGE+CwO)@ZbQC}NY0})igW}>5aSV=i2pA$MrZ4BGNo&Um0jQVHvdW_eTN^j z;gZzt*V{L}?ShL(M7$=eE@6hgS{=>hvGd8ba_~qx`D%438FGvwDv7h2zTDp4R{KDP z$uMwq&iWV^+c!Jg8C%=|C@#aSxZ8GgI8j-#>e$=4JmRop^0VsI^EnSa&+}Y3ziu7T zb<|rznd6Mr9mw?`J;l4A44$bQA>a*QEjBND5~O1?DtJp0Rc%oO76!E?1LN|`x*UeZ znX1h#9_Tm)6|Mi`4P3jWY8HJbLTwG^El&m=;-`M--J@CF$VE@hQ6cXHfCgWqk@4$! zQ0H55$49fqm@ibMUA{X#d-vwe>$m5}&&i$RW#T?(?qT7+ocs6OyL#|xjsvT85UHuc z)IFSJc65uHJHe!j5|{Wnh`X<{FexsP`ayNK^&K{vJap-pyNo!Vs}{oK5iKo+&=}!0 z-%eWv8#UsTVqjlOG(8d&)F^g;Mr?~Qq)g!@()w1PMo26TV)r3F+x(WW0{v*V#DZ*b zsRhlv^XB#0IiOD|y+k!^(OFQ8N$<1un{3s&1z6+qQJS#4Sffu0}ogjdJ4m# zq-a8IqXJgmAx^R5f`Cyda%CY`axcsO!`^%Ex2+@#gReqie09K4lcIuUn>skUw1O>L z$x05gMjuFmBrFP$5fm(OU+sIOeTA*64(LXp-9L8bcPs+v+||{U%g-?wN`Jw}Zx38OK9msm-C zwJsGy^HsPo$~(V;n&(80Zv96s2;v86xY=21R5SZC&%g;jeuTrtZ-s#mJbJ(~jlSPT zyWX{*6alFywa&YI83LK{Sh8a=im>&W?&%B%jo}@PVS00ly5%t+3T+-`>>z25ri+_2 zbG?j&)2JboT$y}*y+~(qe=W1r6WwYAnd2(OBk#lHLD0GDNQHigwcr zeIXFx^3yQLhuWhk(u8F*fQ9c^x-E1LA0 zAjKV2M`3U&VEBNei5uvq+UWa(frpVz8ainzA3M%N?gNCpN7?fgz%&#Zg*%(?+0 zgm9gFsxfFFwH26c{m?)$47=;aQ=`NpJ^j37)*I?9U?Y1zYA2eWo29rW}X2uMyBMJar^KUzj2=u=gWF$Sj9lpyE^iRoArSQtK@&;_Su7AI@`(Q zoD1WZTP>Eo)Z02WbUwBcJ&7Ou-#Gt#);gDzs2igXie)k1c>p>@7(BEy$hh_!M4$M; zJ|gOf-opKN=|K_q`kLe#+0A54xJj=sO^RS;@V5wnBB5s0a|#1h{5c=W_TFh{2e8lj z$FMy7%Zivucp$+-)_p81DkDPRMk&btPJt0{nU$@`>BEY@&5kB{*K(W&b!Vw05TFB(0zF0T8(;T2yW8so2h?6?{doJd zL#6xofqUim8e>1W~#(fU@|(Ex<>kt;iBwz_P$Fa zpkdhEBn%r@Zg4L-mDpmRH#;BoOm3q$@_Lt&cQWRg?YTK${iG>$X#iJ| z7S2%4`~AJmi@lTGw>sPtY2Of0LbcNYUmS=C{aG!37^^b@I;nZl;FZfZYdfWR)7jNN&?rhRA zkrn(fZgk07oF;U#*Eu4N%y|{w|>qLm6d`N}(~VcCo%gI95M~T))UgT?S07 zZyp|Byzd;n*Cy;mNn_;3BMW0=`iw-(=zCA5zrw}%UuXaN9-q&BkN??*|Lo>J>pW7z z!k=24%7t?gA~nn6ErcQi8{McprGAL&In4lO^TvE7!gCI#NyJT%Z#WF5La442*;`S; z1iUxEu6qMC0r&fkW&@r$^p-v3Mb^O5oVu(;u8!ia?xfso{9~qmP?}oZJL{|K{EYI6 zOMmLr=lkf{QEP||2w^c$rrGo<2u+Ma9EziVmsoXZib4=Q+>U@wY^(S@U0`xq8jahS zh(+Am+&v zL$U@3va}nAWB6uK^fs%p&}v=ZS&YYavlj5Ti0?)ZlL_m?3@8o`+7D(jFkg#%6y-zZ zga93O9rI37*ii~gj3cohVlR2`_r3jK$8&EyviJ}Q56a{Fcv5`3#|3HJ_L$^ncD|9IdgE0U0RR)O0xe8@oBl!-D5E^ja)YaT;+s@PUR?0%gI+fmD`F)d zY%xvGd_%L5YkSSpRT#y2_)aIWM+2q1@Dal&sM7!jTDL;iv=}8&%pKjPlqfZ5$E_t? zXedEGE18B=XG%q4AQgX}(!yyrEk4h0)byD(e{nI706FiA3T17n2;LGu92%uH!pr?80By$WjWk5^UC$4GSyca+EJERXJpJG(x;{wGArZ0EanxA z7G4Sizvf5RE=0_Nv1$g+#lfb!EvA^O)PI^LLnCD}BxgCwlK9*h4#zTS^;q{t)~uB^ zA?Z&o-W5sQi_)N^El#*cS{_Wx+r!K~nkOAk?5eVWM$$na6Q@O(q1|J#L*gMIHo`0` zXo3>l}K+&AV&c`j_3D!*_Gxob^cm)?Zl6@}UB?=VD+%41|>Bu9!>`Oj?n*O&mw| zPcNsqd10EOj@RJ7whjL{rD5@eL{c*rp=949SbhXVRD?x@mGP{i@|IG{bYU+Ek|F}5 z2w-U6_E8H$;lMF+Y&4CF?Bj^E00GrYVVQwAG-rF4S6(vi#!GWw{R4o{f7zY8zNk~=#U zZbXy`tcUtJ&BBD{C2jw5K1+k1psvcSSLD!9N@R%sgcyX>SMf3^9)yf8?yp(E)>v(8^YC#0&|)MMRzV_VDf6pt z?jCB+Fg&pSt=AO+vyQl|!BUj-i<0xNw&e?7kf2mxETb05_+6SuWb3?H=u(mTrC(R| ztum(L$sIM!tCi`G7HH743DQ0^JMn$clOe;ZY%WXegDBchjW_a4>mbc^KFng$>ye$K z(A0fPuUx=m6%ol?iEr|QhGlHTd|HMaN!TcTGbCxqUb#LTYB}1z3l3K^$>iA?aR7H<4sSdm`c{b1^unXpnA#I_dQ=a{FFD(gjC9 ztd#4K*8;919VcYq9Eb?JJT?zP0h$?%7>e}|fUE=dYdF#FaGo89x)OPNi~$DO(0C_x zL-F8-1`72Fh58Py5~3_EVpJUFR9c}qLfs5K%qd@CqCkztTuf@8LFsemtx@_N3W{sB z={Jy<_c~1Wp4zOWV%Buh`Lx%HE6}EBvdQmnsJ?O|8e4|OY;764&M>fFw^{-Xq3zO5 z4~>^{XbD!cr9>dJv&X5Kq82BDIgS-R3-T1Qb#%OcaIty1xp#~{uu}a3nBV5tWp_eZ zz~G-Imtop^70&!-_S2!b)vrV3nJ{FAX7TtO478&KJAA%<;%#PhylY2=9GGv zMa@1td`>tD`j3H^;sc$B=Cc=duf%7 zT70Rqnby=`xi_Jaq~uCML-+4O!x1->_@9M`VL3d+M&FvjWdS10lK(R>(VY$x!{2}j zbGZNWP;r|L9q7uWDI&c(LnP*LE>0JJX^{q<+kuKUa)#5?c;S1E+RIxnT%#c=M%C+i zJl7%;rOHn|+xwD&tH1yvS?i;Q!(((s&F+TXy@KW zMqFr$D8x5|;x>zVo}S-;$A!j{0s4{66pKkWBBGag?8!n=Z8x^V0()K*eRL$*luEMc zMv_fP+p!yznB8!R*)4Kc&dor^6Tx7!^@l!|=<^al09sPct>gC%v~4W=fUoi01sNPz z6f4kT3w0?!?GLyhh#N$sfN*_PP7v$n-%>>Cm6`0;V(6Xok3p->RF5`JH4sh2MW z{gm@ylOWVqXE$6G=`a8cvbVQ+k27Fpv>|u$Bo~_Kl6h(qbxL!#w}ww1C4kJ#DD$;E zM>T|z^I=oT4tSl=U{^+4tusEE=6b#P#nxS1_7r>~eVerf1dwPVIL}|hC>vF%bi)>b zl&A+WgnH9=C9e+rv92G1mJi;VYSfsjk=LUoMu8FoM-b{4-NZO8ur5h{!4-Z#MgL*!eP-F+gyNM zS4%ihv4ZGONvpi-&0uIfx#ph0rSB74aM`gut#C}+fH{cVZHuf4;kbWFF+P3Np7Ea^ zb46r^=9Nw4Fy$%G%ra?GJV7yOS=5x^oya3^+Ue7(JeXVE7h8Q`uGmGWj<=gd!NrrR znO2(IOqZnY+my(-+Jua}26f7QL*s&dyg`e?L<`Y}gxybo6220V^z;>dve&g*{$&Ee|HmA`=hUZd}KJ@#^?0gv^zd=8r3 zh7E5TFIVbyC0X{Jl_jY8CrXbS4VXMp9*Zwu&cdOahaW3c^h+Q_(@tyE2d)oF&&|~{ z@$}*{ES?jsMh)k6JvsB{=FTzwB((L{U(qZyCntFn7zbllL%F;q+#1I3z!7@D!5K!F ziIgHd2n`QflrW=4=xyqc`)J4Ayv_pKSu9Pz*RVI=0;duJ4-lHG=BXZKTp)EHQnpLaVIe*-$gykMm8DBlj;EIMKGnz zVjQ*?SE1*8k|J@`I*)1lXpivmis6Sa<3XBTw?zCdrS7AwT!-hYN0b*f-=c1^C<>Jo zaUaA^HLu6%&<_BiaM~VyU;Vg)iPg|VF@pfvh!&vsZ@>UgTe)h=K`37ILun_r_taof zQg;%KX`oe3CRHQy>|W;1@MPx{1yZm;)a~EuGoU1LfG}s!I$5R`!E|JgJaO40<|C^& z|G9rudv)=>Kkrk5h9^qC<|T=MabQ|3Sd$6o+SWyU4;<5##qU`hhjZ`67Rj`9Lu5gu z<|FTSjllbq4zSDh0;TByx6F%pK!n-Aset4P0iTht%Fl{Xexv3G7Zb<=BM0Y*e*WY- zB61gOYIOHU9sg^Q=aE=w4)deYWR^rTK@kR2ve)b~I8_wPuzCXeO8(5t2T^p2Cja5= zY$%0sbw;Brj)5a`Uj$+%RZbd>u>}=T1CtZOJ0?_-m`Iv@&d}h}LPQFW@FlLxSF5fl z(f7RT3w(Eh&Ny^aU`bb%e0&5l1qki<@iAnLg&AERsB+@ zIP``jIskq>irw)JOfDvu^&kd54TL>kp!BM)J{ z`nziVAiPemg~>>+>9S9%-Qq{r`6cFiBNkUIEj!WGRKE(8vzs=LHa=dQZXTiuFh^PP zzQ8<5gqai<7>O|Q@{iB4lQN-+m@ansAh~048DdIIpx07lcm2AGuGDlhdd}tdWqC3Z z*Kvf~G=g|8-^f?dncH0NqEL}K&t*y!wAeFo)^8HW-$Kf^!9@imGjN-CU6k7dIN_dd zc9PRDYtv7=!r9-jD6Ck)iCIdl%Y+)$j7GGx%u@+k{5lhu9cRb$E6#}cCwi1Xb$A8B z=j^-Ou}$RsU~u%8+la^tbw)2W(+^il8Fb6BfjaZLTHDOjpxI8ie3yr`AVZ=q;1y6s z*#_!HbDk@QkG4@aF7UGGX4g~qS93s~enYs6W`N%8N{Uk+-52v&(i9s-&_#tN4IqSG zxTq%&bn>&n?YaSit86w=gIc`)JW__D3%`sslc!R9W_qZepinbghNrp+WEX>~E(T^7 zgM1gEs|i5Y{56^tAO`B%6MrAjsf34;;$kt%g=Ja|x^7WZBJ4>~-_aCN0u>>N2m$Da zjZq`*Gq|x@EIlwXr@69V3 zc!~lXyqRei)N_q+kXjT--J>HPT6d%^zs6Qj)WhZ{m#hXVC4pG7=Sos4Q;WMMev-yL zqk`CPsM$rz^Bl?ReP%{pU4|*Aei;t_)5i)A%sub0_s4=Y#$yy}h zDZ>CO%MV5r?XhdxZcuy}hX=zLVjv72aTS5+pUxuw`HPEjd9gv=pu?_3YbdEDBLf6H z(M2WkiuQz*;|tS*Rr63ub5#2Ingec0zTc)#Hw`baVC-C9;KwePgX@Q-n-@jjxOxyM zxl;uM+;g5~it@&28Q0c8x&^R@O{Y%&5^c41ItXK39P_xgas@K?{0IJ|I+qP9eHOv=N&0 ziKENQq&z({zi~^v4pG;{W0w=;agNbot8Y!Tkm%y{t_p9cVtJ0;I5{E$lg79Wup${z zGP9C{-=-M<;>yz0)ouvncF7O4g~n0*rL#I0Byu_kp{qKB&gpJt^^x_<$Gi%O?C zB~VA6rsn6_S+aKg%&f5+3{zn9(dccRQX2Lt0wF9S7H|;Te#0nSQ%Y(oX4S)V%c`YQG1yaPsVwSR|3CRiPqmR&6w{Q#ZiVXv?6MghS>>3ow0+tO z%R(Wm;KY7hbERy(HW2ZQRftNAWBdoO=*@7>`eVijd$XU%MnIXA-Jn}GUX&$TYn|Vz zi1(B+Jvuj~bPdg318=3qlBd*Btv`dcpxv6VC2yI%S%H7>7S5Ey;tsyTP()*-LD8cC z&B7_)H0~p_=oZkn=A_QPCFLJ7@A4! z^osdVYEHV7f+qZH+)IJ3iOb(nK~w%TE~|h?_0r#+5^3)BoX#SmxhkkwC;C3Eph^Xsg_4Y2&oL3)9DJ*HBv<*d!*fh-Zu|>c2>^977SY&k9 zH+@S3;@=rV4zxci`oOjTW&l0FRqv5trzE$kN-nFZLFAd6L1~r!Y#1zqJ`?VyLtHhq zRl`{kaA4IX+^unRAs;Pvk1!}7frZL{=Wq&?NoofbTL9}K_Ibh`hyoyHcsn^VhG-aF z6z&@Pw^e{#jdRy#C=t$k-fI=g0SrJJZ)sI6N@^VBTz@5$B1J}V;oTWWJlI!6uOM+Y zCU;y|51>^|OkL+xoh0dauTRYVy~*{QaFXJ!9@=f9S>6xH@?I0>YfDG@>*U_ZOknlQ zO=u0zaM_U|Ye1K05TjV(TGAX5?GXOz@SF%Rj>gOkay+TG4R29%cC^uDSgB(ZvO$(x z6x}E-YGN)qOckdG1?&Qg>5_4E>^X^=Ms|?Jo^*a7%gs8z%>`Kr(;_|lEX(L7SF{~4 zB|bhz<1<56{lT2EfGM(8MsMS4g|Trne$|*TZnusk{J(GIK^K4z*KMS=h4N;hguU}^ z&p^#C8jvT5-R7)zyKRwX7WD}B%!rbmf8rUv6J#^Ie8_(|H!-&k0bTEZgZW3L(1HG$9ij4o4K#;>m9_;=PY<$xE21`zOr%*^2I`v$U z)2Zh&^m^l3**%mSla&(UcNR?R$8B~d7M9xA5`N zpaxR9BFMOcVuNw7Lnp|I{eoEA3ld8eGRy?d1OL)ilB-NU)z*boObD{tN~DG9?YZ3{ zrhSSNF6G>H19#|Abi>>$GZA0$vnd*_8)Nm5)N!UZ$vi`ZTvAy7EE%v&#OxF&ksA_m z@%8xyZ%H#NEW{ILW49xKU5vF4puFkYsBCA^lQctQs2t;`4N9W8XdtqeHxLQqTtFUfBC_{{ z>3Kq?UA7LJ1o^Q@IBR(7#-`v~6M5r+l|)rjC8x0vKkfv8x<}pT3>hK#93P3*fj;OPsSz?Ehgs-|FAZ#2VmN1{ai;dv2kX(3 zbe2IoYJ4Ui8QoBpmfb5`^(X^@H9Yyes9#o8bB9^;Rng$7qJb)U^whqu^p zcPCtJd?%Xgxw{VurygNdC}b*6HK2V!|DQHtXPzB-9fQwi8dDv<`?1dM6zr&IUcKfz zhkji}YQp~$&G204Z@JRiXlMM4!3Y52%1g8Q^|OaD6vOy;kEgC|%;NyGcO3}FZO+hW zR;f4gLX+Czg-nG3mlA5V+02nRz|HU)E1@7P|4QD56#=0|*k4RL^|v%L`R-FV#V z)%%04{{E+We`>ss)ceo!{e5ic$HZDIdqK7MTox*;^CwnP6Z42~NllC_-ZN$sI<1^; zu4@dUV;IR?(J3-CpQTDEwc%RqoncAcf|^KqU1=4&RFTK$fXNR0z*ACC^keH;>;YZr zN-z($^#X0uV*R_MLCBm7NYNm@0{#%lYl=F^l7iaqHa4Yy-N#3byPV2s=*n&FszqSc zpg1Fyz5FKv@YNvGkV5x>=uRraLyaZNggR8D>UeYFOyranY#%?)&hEH2{lXHr^#@dX zz+b5@ZQia5W#|j^x9yOQlRG}%GNJM80MR4fC+Gl-%a<{e6EmNVPUmO|xjix2(iLEy zek)WjpX4x{Y~HMFwPc?$2Im)&9}LzujW`giMUr&Kp(p&gX8#oH$8Q}Z>(RvLn9q~# zxVHAbgf(7|a~_eR=7Z?aK9udlI9<}=@yCJ|?%Mc@yxxXTn+P?n`B7&Cg~oYZf&xs2 zGMVp5B^vh3mAhrV@-HPlW*HX zSPa(Guoy`;ak$NILQv;8@Krtlp&UHPrwwGE)0}PcrqROkewuz8;|Nn8tDrrOxjjW) z3H=I_q4=p+{j zCGE)E5t$f?h@-K8|A1Vt|8$W{RN5`Q~Tc6ri;l07|)%RsaDR4PQ}s z0shyfeuRwo5Tkw|Z*t=IZBh|z>vqU!LX&-Fvh{7V^=;AmcGkMa?p;VR0#p-PV@4aA zH2uN`At=qxcF@Lvaclnk2n%BpJ(_!Qm}ialRNpS5TQhFTzCUHA!-1+0NZT!gHp}F4ZRtdlb#hO}Hdmj1p)E{^QT+ z@iF{UKGl84+Pu34+7sHg=IqFE!nFm*iPo$I)u7dm<}CFT(_@3;g=#PB@YGF{+AvI@ zA=&<%)wK9B;41Q{sh%D+l@IbP%9c(BQ^X+c7)y1AzV6!ifR3x&W;&osto0X6C;H3T zS0?tqztWf%!@t3`4Qg6opc>BzfT`%!EOBW)=nT8|9ot{CthT2uLk*U}<}p&%{;>X# z;ZpvvYJXs;lsQWV-?ZS%jwp>2vn((}5a>3g(GalPD#5i}cofG&#;S1Qpo_EM)#iGS-7>+$R&>L$(TY=Wr z597G<=92uFga@ZSrU2UMY3-a$Z%39Zw2^9U>`rR~*S}CZ)M}p=R)zN+)ZQQO?$m%X zXvE;VAaABxR<(M~)x1yzCb9_tx<_*-a?!ar zhx%T-!}Sq+;xs3SUTc8e3DfGQ+SfbQm6&kFphF@3)w}wvx>6oHO1Me^`gi6x(?cp1D%9RJ;wACfZT}+^{+6P(nLA}Dd)Yji$OkJVg7ai3O4aB zz57}`3e$0)!Xd(qBOs+uHo}o75)akfxE2Q7ia1R|%od4c&pj`W+7VF$t%?O@i{D6E z#ZzwzSr|%*p#nzuz>~p8dpLmmdn2KM&ph<-Xm*yK5i-|D{#e+ z_KP@k>`l|=P+^+2h51&yRaDfvn9C!2GK+_1m|`wOnMIXMe1i9)F$g#=#KQH+gr!@5 zNYgXmj`MJ3)FC~i6RdKU%J|fbD97Gv*~_d+BNVg~*&-xhcWw^0hj}&+z*C!&jeAvu z)f1zgh_Q4Mdm~Frf<|bgF(;oV^;MpsB+6$fsqBSWCjt3nBw-EPt6@3^{H`J2zK3BQ zfYb9mL`x_orJ;N3oIN9iI!~u;hQ8&)UT$EG+#Vd7wI{r^)z=VCgR+XKaMP2n!;p~ z586=TOeEsUu+Ook>+#Sp*@zgRf&%+lXD4&yZPE>gdLVa)-SePd$T zzyA8GRcE6VwUDW^;U-=)2yaVhia83^2;V2Gefx%yt9G5;XzPvJ>{#oRz?R2AqQx7h z&Jo?iT2XkuS}VH&=?j2h2|rOoE2`_U+w(BL-uL+Xo!dH}dsM$(%nupHL1fpdGd~Lt zefaw){Jnv{f5G1?_-n!6A^iOV{&wN-_q$dLe%`{*GyFaK=U>(z=kqYddv;T2_l4lII!HQq^(~l;+Eq=7{~F~;BNiPU!&c;a_?-+ ztt}*4e!UIH%+4(3F$c-)>;mcnWcooB@dz7kH+Ys5iqj~F8lQ{4D8e*SY7|}CQ71zt zM`|>QEvLQGx4U96^0JZ52hiGi3KQ6NIfGGcT&3R5Dm_$X`h8> z?m2UjMq-!6@m{&t&)q2~`ZtD4tzdLSw`}Awj68;s$1rl_25M+P9G=DJjvBuUPb^0F z2jxXKVV&Yk;_%9Q?o_bse}3r!YN}UX$}Cz^FtIRM71^vdQ>3*5_r@Qh)Dty7}I=&;IqjzIr}ax4+jP zSL^dl@6PL?1>gk~z-GVC+h^bV-?&zjm9e9HqMN#N(0+w0Q5iOe>mYs1ilPkrsas>+{i~Ro%mAW^YYnr$kyUhEwozo z)z3N_(#KqG^vi!_Lt}bwb*B*k=~`w zBKws(ORJxr?0;Z%J}e8Zg2)d?^I`f@ewx0N-*n1q>u=5#0EB*iDdJ>?Q?zk*@`(6JG$dtpkRC^QSYno37sKrN=HhwHvQ~xK0rq_-H0(NqIRH z%UkPs2|kDji0+&{Q{8_8<#%=s+w$HwwH_qq2&p-YPUc!Ih zzn?$;%k5(RSqcJd|KssRecoq552w0Uoa5fJ=eYOGIUc!#iivq*CUP=skLWU+gpY&d zy54>~`&aw>{MtXx{|VpE=ogF~2k+D14`83Pnc>}3oX+~Qr?dVW(|Mm=ZKP?u7a3OxmBK-c$l0RNlkc~PzZ`+xs$tG)(IE%b+sZR7jh!r=Set3iX8JD(r6OTXUHH+R z5(rHK0QX=|$DwT8bJpQXnc1?fHvn?iz1&bx77QRpZdW^$LJ6a9%#_+Po7z-NBFh4& z-0B$!IqTYuW6XtLYb&&+A)VKPY_X^ZTr;B$I z>)Y=W_BP>1uHSP;J^Nu1060v00QpO8i$b_B!+8h+j8SU*zOr5T;&+=p%{JX697(Zo z9Z^u{4K9VM=U-^*7$jS8MJTxnuI{);S`+k3Nuu#b@BZ;|VPWx4phPdd`*rfMTv%NC zD|_blSK`5GEEswgW=y06ok{dZlep<+vavC(IdXkmM3z%TJhtlW3Xj83uX9ydwu`5R z-C~XV9;!NI9a@+8Vh~hI;((MG1aQ14URNeDyy=}IhS%Sf0ZoqZL;f9u1#vn?$WqNl z3TGF-!k#B?Ay}ByoiPzCIi-+4WTnSNpKeA<`IN^aIcMCO%Ga%_=H@*1F0oO1s+1g} zG-exVOn45fLrHdb_2If%H27^;-_>qVO@(Wo=@z$>(xR_FK5qBs<`^kY?Rv&#$Ye(1 zqP!2Dby3!YH^Y_3f$NyN6Ws^4b+mc9dAMm&;vjaJy{N-#1!uf`t3H7EnH=cF^wA$t=oV!#Rm{j5BQD-vrpocDp z7IcH*vYTCIQ?5V}r<_b7F&OJn;$B@F515I7m%WNVV`@`Ck^_J2MZ0cviS=x1nY7T} zY8~V7iX*s5=VXs-23LXSxC~6D<3L~Oj+mgbb;MjY(j=6&%d`sRM)S0ocU;h0EFPNNZ^iEkDLfTNomzWO&A+7qGG>uq6(F(VY&E-pNsrPF|INLV=( zXcp~fC{dU(=c_X51}0@x^*HZrRO%RORP3om?5t6xl=&xwjAlVjPH)a5LpurT9y4;~ zPPA`YC>REDr@>m5(4)<>iLsCyQwupV`)FSP;nKHv17wVMjn&{edmRf%1TR91VKgw1 zCNTqY+cIki)eA4N?qZM>u6}_IPN{>_=^bFsRX$*B`?T2hy7(xX-3qE{EmZXiAY1PV z)FN!3x*YxwdTgC2=f3?jU>}1FXI=E1m1TC=b1r&~1-3yU&v)=5+v)vz*n@xJz-{!- zcHp|_t_*iQ=g3}Id<|vmt3RjQb^@q|(x^*9D`F0@*2UcOplZ&nuGynY4c z*}}`#>o>1jZ{94i#pRbv(88!sIFe_>@2elE6F*y75<@@pv3T4GC!%dZ!q z9yaxQ>E+U!7PhtAf_IC{uU;)f*<~0hRD=$eU&9Ds9bdg_Exv?qVW^ACZ(z6!i;FPo zmoV;yl{fJ7&6}0h%JQ4n(ACSA%ZrPx*RL000*ec;m!P#bZ1K&@MJV$c)@2D6U}<4# z1s7v!Y31cBSSa}U^7ZmdnDN2_TUdZaTEWFwT6(>>44+@Jm6eqxm~QJO3}p$MT7XU$ z-z>j^g?t4+mtZkrTF?-T=Oy$C6atLuHPnOkT7b2{DZs+EaD}1BN^9vATYLpO^ZF%h z368b3)Pmk%D2p%Oz=zk+!qU?6%U3I~EI7agnBvRV3$I`|S}hpF>((-?+Z!mc@TLV* zd<7GS3h)vdT7+>f14Xj(X8HBX!U|h?`KGnfdiipNy?(v)=FO|uuU@e?(ApA!0t^~< z8Fys?_VOi;9X1Wt`qeU&TYB~C4NL_VdjSz( zIvBNwf*40Hx%RQw-lCcCwk;|6(%M+F(3nehJkq}W!(!CxmmWFts?3bE%BKJ|Xa4{Q zS^IC4uWaGt_kVm}Yva>L`GgNYac;s~6blQ;uyCdQsnNgzylaQ}L8WsvagtFQ1sPKpNF zG_)j{g~9W-Xk-&(WJO9}%8rb!kz4A>F(h?1RzKANXgJz%le+Xel9Ql-B#d(P^73;I zH~OB=s=!`x8ub$45l5%B}2R?0&XG9C&;kcpkXPbhK(=K63vo#IT<3oMSoGTv^*t zfa4*70?@P6n4lxkz${uOU3msssbm>%d#FP47={SwdWO8CfY@&(+^WzzNYizCm@nfC zmsV1w9aJao?z~Tu>qBmjIWe2=7Mso@0mx1ereJT0`8iv_zbK4kZ@IhzM%=gW0V{}0 z_k9ly1U~nidmT}|>p91;0K+gGHUlqdei=pEA#BO#Uh{+Vu17V0;g!nuA}{8B_5p5h z>tO%r*kabf$+2~g*zZ1v{Wi_TAx$`JTAT`o(Uk{c=vWv5tX~UL>60kX`e4qwidoI= zhEYPghCRVxe_)65T=Cn5hjbm0KZVRmBMuZ+wqMsdzN4oiN)|)Hv>e4Qtd8tovF^$b zqnGiWqNjSMJI=<0RszV8SlT$LIJ`I#d&viA3jEB4>Z%{l>tD4^7bb%Z%8L%E%U|6> zm!T`g7w;YbPC&80ANf5h{`S`P#CSR5J?PnDVl(A=Y72Q7+5Dbq= zhu#5^sABn2G;AOzwCd&sRz(JTLHJM_djR$}Wvx%VyCln6Z&o~pZ#=iXi|kf69RNRS zwXyT7@RuAiv0`uex2mC(7oTXC=m&)mD4K6Lw2yme)z2%{@YG1KAJ186`HUVZnJa0? z`>Kg7vzEy5#>ucu&MrF1pcq+aY6>=?CMS+gpNZtdMH50_jwk(W&TahaG`<1pchQ{r z$BX}({o|kC=bg2G{jZ0|$^X?jpZjn7OqD<#Z?is^y#P9qtt?Gm%(EBB=YH!s3xGaP zJd^|U?Ol#Wcb`C`Mf^xG0UJHaJosYT549CkA`Q4MsGsG|{KBJ3h;|g5p@_&^H8LBW zXui90p#g+gpqz+b0aT< zf~Isla;b4!nRLWn&@agBc>3aemh7aYPhO^mal#SuRDW4_*Z~TXxXF?BZYo}tI7w1b zVhi4TuHlYRf5@YWe2FZJCAwsx{{X3c3wc71nT*jbc$>UF%} zl;8@sCGhF8Fn_6R@?~k0aQo(3I4QPp+ZF3|Jaxdbp#_CvJL9prd~p#{jpb`ggk!9i zF!Vq?@V)=Az?LT8o0UJ{kS8O@LLc5icxSNy9@YW8FdwToavs)uZA&`%u7{D=xb?ag z+tl8kY}32RYS-7*gQo1vK(;~<&+nfeAFe-Q(Fh47=`<12Q@M6H9O3QT>s#zWrOl<_ zRxKmcRg00Xri~%5{v!=7Vi4Ssv*dCXf)uXZVln&#EVap>Qg{+r z;h4-FdRfU4{2aili=qQ~cJp_|i4tKws~-B}fg)X|c%gi;3HUzY!0B z_l#ze@WavmUe(UMmBs|uFe-|PW3fK$Q{E{Eo#H8_1qP$Wa$$r{Kk)t-Z$S9MYGgl4 zi4|(ydvY!10mf>#BM&g9pZpQmMj;wBF?p9}EulkI8hfVGJGRGtjca(zP@Br*wR5mt zyY%jxwL|a5M^#{$M);y;3?O^QT zwgW!GJB*svlQ{AkxY!Zg$3tkIx1LYP+P2pDyPAsAC)bw>h+1(&iwPp3SdbS5LXYYw z3P+_y@Ph{0gNVvm0dl(*%bH(9x7PQO3`K`)G|jKMJqidzU631)2#kH@$F#;`&Gn4~H(PiQWhC+dpJjUENa<~cu5pm%Ku}|3}U08Zqug2@qAY92cwIrBVmjg!)%fb({JsBzT7&LA?7S1MMB*GBs{z=za(kbu=m_VL=PIe zoq}y+ajLq=?nKm4MM-tlh>IVWMxPLZiXWt2BaM8C(Zs9T$>EN6Rq-<~K};L5(Hh74 z#zilh9fad?c#CI3-UHX;bcj$YgEVE=EUX!~VXIO26xv2W6YZMpfLCpFQ-2J1{UBuO zOBw*SjAA%vh}dFLk`-$58zphOg-?C}z$oz?||PlKcVX&f9J4E0SV@KGXJ)!Cq*C z0D=upzzu@JH4=?}QWK*c-y73~1#G}kk$2(I`%Yt_hHp6(62=`FH8wR?|&2aNqmysPUmE<_1wig%m5oK)l#5jJV$M(_=WiRaEwVBWkF z1uX;r4v+LO)F@p#DrUb(LG*NLJAY^E6A1|^s-Q@1i#Q}beo;}<#u2%GSt1HHE>BuX zQ6m-yT6Pi_`|rWl15KnZ6kdV91?qeX@r;{OLI-F2E*TT(GYv8hM}%9J*S;XKi;NJ? zm5)YEE~b~n;HZ_AcUf%{C?10n*V+<=)lVfUKc5rYoI)8{(xVz zqMSNC8lNG~ktDN-%)yHb2XGs~-P%Coa3I&^hR8>)W67V;#jCb}P>8F_8%Gqc!G^G8 zmG=YT#&DqBlOiObi9qs*(+hY8^;{*q^<|^U$mORR12duLA>LwA8tf?-G57<%KBPCT^Z@?!cjz&!kG0{0?npNcU! zpNVgYN`U<{IB?Z&@tP<>z%d1U`FHS^MrZQIL^Fsjf!F&V#aaeQrm%)V2?5slJERzN z0?b|vV{N!xaL~BE95!%9oM@EdgaaW?z)<0en#q8cL$oYRFYAWP1}Q8a6vYT-%Xd7Qh})>t1{6^UNH-DFJ3Q_%`JKmfpao!pm`^m<1* z(z#<2&P6aV2xz?_p9CTeN~-)UZbVfK;|3R7alpr#`$x66Qj%2)i!eb1!J`DF15gGw zrfeDW7+PSO!ivO9R!3B?BVftnDP&Z+OX}4A?jGe%xfC4A?7recFAJcFOQ3}Uqw-Xp z%M=>k9o*S*1G{S|A&v>~u-c-ux;%NUOe7j3LNHM<#_Y|cLV~f;W*awaM}lch`Dsza zQbA@#xY%eOr%(~P3L#W{5@2P=DUe8bcW^5J#^EkXudxS!=0IR!D4PZ_Lm*3$Cqq$j zy#SO!_`6Is)W8ww6emXUru|0xfoC`6QWmw;YHf$W=P6Mt@w8@QMi;T05^eI*a=EWH zdR8XG%ShQ0N{%z5eo}=QSuLe&k2YO&a^(TF2g7%}lBnUlEML^(fTw4YZ2wV|4w|I6 z7@Af|T-F+{#fv8m0+LJtnx$a!G#XM%^un>Fa0XhiF#0z}0O*mTs)13}0^)>_Grsk@ zHDGTey!>Q6&barRe=v(n)w`dq?kWmA$>xp0|h=WArrO>;S9f$8$i zsmo*ZlR+^?*F*I=q8inUJProrN`xtDKzjlQ@gbTcOQgXQF>b{amH$EUU=oInD>t~8 z$TNnS?nBQ~JyJswH!3ipC6YM7iH4Gi z)5r^P`Ze87vnHu*^-|XvO(E$tg-ey}M9OJ(o|+>ffo_wK*VX1X#rKEh(IYKEgx{?iQT8Y1~^21wVap9q|`ce7+6Q656t|j z8RV(^DI+T6y+RrbxS+3q2nQM)qd}>ba>^tn`O@eCSZ7+DZ1j?ILg!>ZOk)(U03h=# zKni%NdH%YA7Jj5BzV+P8N_Ji%@D*MBgr^75{}mtrk_dR+hQRp0qo~6smLgQVV#KOm z7+(4w7h#hb4K6qIESIclP1p^py*bNdu`75Oxk%Nbv-EaA(a(n%1bP3+VqN%=Mq`WJ zQdneSq^QI_JmacgrB@<)lEt>+olyTGyJoRtc)^M2ZRqI|Z2<68Uf=;ivxEy2mGV~< zWI_DKrF9eJ!*b6T;@;=45qHJtS}LE3hvC0(#F(_`TdXs3&MYqMy1#X4u3Bj;hG*M8V_+dNYYl>Ozl(ZuH7ZLh$eJ@_(kdtMhd0V6V5 z?1kIzj3#W0S0l4*t;!;=GK8x+?HU!{iGD_7-p9gAs_1kjWy7`D5$>Lf!HzZ>yFNSd(N^x%XS?)cOaAyMfBfV> z-s;vDw{D5SRBZ#JQ@{6>k*QIon=>Zo#`dywmUv8z)(O~7#8VBK?exlx(!cojozXqn ztG%tXJP~%z*>Z4elk8bpK+}6MD)NCL_}do4)W1qQU_C*yEZ@mqI{8wf9?-VXWmbj0 z9nniiD?oPFpN)x??gmx)*>&!0k(d%gLcH^#YMs5)tH-6)JHiu}9E^qSmT)T;tr?Bn zlo%`4_N6y(u5gB+bDK#vy0f!0!BY{|H9|!u7aTY@A~)8gj_dl%hZ$1ZH27s59PXcPZ)_f3Y;V9=4Sazo z>Z>aJwNO~Y6j=0|D*CNhG{X^CG>K?yG1`BWFRJ5)I)fii9pw`WG(TVu#2~i?D9GDR z7-ZwrjkfY4i(0pIjS5VF(-;O3l6oKVyg@n zk=8D%T)QHwv`ExsnJCh29+3Y)QLS6Mjt%wp~j$`^=u!Y$wlekAH_^b`^zgJ^D9%t+oRiH{xwLR=bF z3#`P1?p&4`GMZuA@FsG};1%zoal{UYYP;q?uAe&9&oRB_midG`>73CoCwnQgE@x0v zejK$Ib(x-#dRCXYjPRje;KbC4oSpr_)3^cz854Wj7#LRMCL(u`o2beiM56`7jbIio zcgNt7en;#;r?l63e(kPrFL}#s#aphk3p77o7dG+7TsWXH>hpJv+uPd)sz)0D1>D6D zE**AQY-;0)rhde5jwY*D`rysLBUyeR?&fG=VjDbqKAf`H3EP9}nvykqeyLV=kN0Lw$||TX&zEK>5ivy;JUMdU}F%c9tBRWlO1y zKBf{SBn|>VleE+Jg>-Wh1X@0cflM|7$AtRi7PiwnWM4!)P*qEg{+aa{^(vC7vTe`C zNH07n6$hc6k%KWfd3?+HdG{I*yQ1)5Pv<#f+x!u)@uVNle~IiL6QJqtMi^gg@MJ0# z6DraYsNgWc1N^M+j|!PFZ+&R$wmF0mHpP%&mphcl!Va6=y2v)9mm~Z;1X#f10Vlff zEtcPSLZ6a8gw)D@xQ6+(6UGGvZI5-s{(akLBkqXOju`PyJMixVTZrANy8kq#D zN8pORN(k2*8C0MieR|+H_(5SyN@>a;9v`js{llY+lf9#pgM4#+u z(+Q{F*e4*C3pFmMkk?r0g+^f~g2E08t&E>&<(tupqLHy79uWqRPv4KP$L{?eWnJ6Y zK04Uxe7)G~>~2~NaC{P;MB}z~@P7Yz|Kj9u2T)O%I{F~cjp(YJ7|!~hFv?OThPQ72 z7-?if2BwsEgC|08!Zly=sO?B(E1*=IPKc*YI(XyDCKpR~5+IPeY2rC>S!xUEi6CDU ziv<^_<{$%e?HnC_-ap*9INUtiJhmizGhyPwk}ZE8$;iXqXSRI0dAPmx^PjiaeGc5^j& z{FV{CcOJZ;e;xWk(zX!UaB(r_M7G#Q`$xovZd-ULO`v1FIMI%B=%Vz#feLuyXsV5Q zeVW?(PfwMFB-fTXHh&nT*L&VAPno`v@8=RjWU(2{)6NH!>%bH-!N#w(%e;Qu}aPwsXaCF;eia0r+urE^=)F{nFThfTpIxo&@1{1=Y#qw-X z$;!Po1~D`TF#&+iecngN2!N!&QXFGpth(1)$w1B1G~@i%UK=p>`T3)JYD_uY@q43M zC5SS|_727tbh&GwHo^n05~WcNEq32+TkoL13Hw!EUZsIMa3l9Bt5AA+6z_E8Ctg`1 ztitwxc=D9$bNZTt*r0!!lOBlG)_4p()ujM^YEyDl9L`=m|199{b>wmU_IvemOV;@} z5W%NuC`T)o4D@nbjG&Sh;Tm5cCOnkIgJ%`bdww@*M|U~xGdpXY905PPw|{)GwSTg= zL2lD}iQF`E+DDNKzNEr#lz-0y#+)6D@+n4(2ba&!duo2Usa?n|lG6RBy3y7$D(Q=- z!xEUPh(po6ysVcJ-v|>N!jiu9lk~e+kZHAS_T`rKrJuNs_I^YaCMUqbVvB?Ia}JaHe=WvOc!BdPMC`SPEm`>9!wCXm01>b;6#z7(HlkyVrg=MU9_e z@qphK93C-y$mL0Mmn00wmwqyTvos%hWAs2I-S51`+-}xD?DbM0p-7jJYv^WSp2G@| zjBV>0M*1<=dz`pKv?at*#K0YP!@GZTG@?O$R22=Iql;m5JH@qWWR)5i0X^5)-xwjb z^83R}fPGs%897^#4IK97_Qu79RbNv-MdlqIx_7a0Obh5yPb4sI>^ zk;lDaRz24O6sa>6SPux7r{*MbREjpPm^FWKF;DLO+`b_aHwY9!TUL}vSTbfglW(uN zblxzTY(R5?21a6cIJ{-n94BbT!oP4xLm<;Xih4s)PYB;F8QM$Lksm~P zUzC?8$InV;heib?bZatnQUOoj$-McnN)uWLOaaAg~50jC~S82ok!YUoRnN=l>JJ6|lweY2IHnICNq?so8e*Tt zq1k?&%kpr+N&@FazS39BjC>noG0xohw#-abBJ;yk9q=jbmI~+rLO5k4$K@rqxgXL% zxK5}KkLw7tUl&$cTcV);z*jM{DNi^G{R7O;!Ox)#$mTjY;Zl-+Vo zBi$DjX8x2OoYIZhGC><@9cha?#RKy6g89!`upTW1pPmoX^I>{E#;k{4equI8fQD>( zeiPF!|67yu3zO@XL`Ks`{z6QvFm`44;5Waz`J*VwZ;|Wnsr=w#EE{FVgvYH-O#vcD z+*0OCB|exX_C(}IrbD61$L@&fJ6>oaLo@hkRwI$*3l!J}UIUXXRB6L8{@yj6eHE3g zT;iIw8p~Gk_QbfdRPoF7q44xCax_%KH+GX=^$V{Y|2HRnmYhE^6IIR$2%}UF-$<`Q zDPLsqr^n7S8VyjZ5ap&&92t>kj8ZH_21L7w?S`d5oz2I?c{p)sM=ZsEJRaY&7XmHD zW9k+!5~WnlS5wJ)*X)odXMxtCDYUCgpc;_JcGPq+84bqT3^A2RcosE>=T1UD#^A}hh+4HeVat09WB2{5h%$Ay?3mn<{X;$ijHVC?cY+~V!BL>>HEIio1Y6r6EAjbb1^p|K{K zU6YNX5#bs$|1=Xff_BlC2D5Xm*+Nwoh&(|+U`rnf>^MP6hhc*xb1`-)uz5tsM7Bvq zC@q)JnO4mHLFn`_6)oOIB2iRXfb262j(wH@@B=LKpJU{2-XiHsmTU0G@nno;e^Nvq zFjDMAXHaKnN1+i%+qgRVrB_F<`s!fC_Bp{N|H|Ab*3t3)!Nun3=H9WzFPy;>xVLyB z5kXenzSqbc8kbV#os-4+pV}}7GP;GNcGX|=nqN@0>KQkcU!QW6pX?{dUtr}MnWjyy zv7ep&me}eEP4|i4uvqyXYW1Ms>Uz%2wEfVpLT8%P`(xI~Du4)S z9DXUn7Sl#7y$%dR)a;_1DWH`%hI(aeC`#Y(iXW=Ig{`~v?q$k!OeCVRjVVEiYZ&2n z&%EFze8X zSLYF%;TYvB%Ci)}S!(A$YKJ4x(rofo2+sL3swJhV2noTeX6$8zOgBr<&W5t3>KOqa zEJ{t8bqISw0FT*Pcj3PU=mh^(*Ac5P7YgAkdlDbRai1R7G>b!zEwlg;p=m5F$#Dv2 zX)JGb&ZXy|xh!=!(1f$ISXc2XMj5*-7*VQ z>gY~HAHH+j;;-|_dmISVBcR722H zDk^PN$>9n~WwaqrakV#Obc}8m89oq`B$CG${}b~+DObLkiCus@okn(X;oeqQcG0Rr zyYQKbjER+n%9z1|*e-CMI3^^(C!kgHu3O)%%9^?HW54T<{p7wkasy-`Qf#mwkQIyj5jVatMP*yU(ciE{0++14C$VJ_7(c-KJoIu7@VT4xd)LD1w~#brK@*8~JOS;mA*rHF z?SXhX$*mTu7R%OaPcGIJQUANCtjkPNVSc4Upi-*~K_w<46I)ZvM#euNLj%qG&9G}@ zM(qSHDw4_x3LV~^(|U}ERc0v5TT8E&)NT*;!VuG++ zNp1Gvo1I^ul8aWP5H?u$w^cx=x&Sl^jfpmLfClSA;E-GS--0NmL39!ZKpvG1g*We) zh$oF&9>*Bx#ZjjC)mY=Z8 z0WtJ-f#o&_l%~Xe5{GrQ1d%EQn48@d0+|WPm(gH8gJhMiy6hkceY0}zBp5=-7t$v< zD99oA5Zs6cp*yC^$bhqfP5;;3_XrIaxK&uw~ccNGze>lz?T<0rYQgepr{HYI%W^rGUb_4LvAxS4*b z^S%=cOB&OMoh9-Rkg8yyH%Eadi}|R8UVvRINP&tsdc`u=U~aP}Tz_F1B5wf4VIzN{^3&)UN-< zdv3t(Bhq87b;bN2C_WX%;X!MEn%0G|vNRsWGy&sEVLSeKcGyK%CE zsYE)7>_CLglrLQJus(L#+XOwVFI`M`$u9MVgA&?#1hBw{krF#0qSouYsJfF!Zm#6V zvg=#KSUJo$`>vSYaZGs~rNmO&IF308Q*y;)-_{#3?Gr8OPLBp%sbdrbT0HW|rgbVt z`Xr#?#GP(U@&ylC)yEB2v)}sRaz+pau=Rv$;klgy8J78~mRO2a(uz4F^$f9PusZ`7 z>>BUb3%t7%GYZfc@i8`c?AjI`hIQiL`egF>5o=gFcv}qBx!H5wY*4Ptw1Xdw&eXOx z(SxJ}VNje;?;3q+5-p`sN+GE$tBL?gBQDCnsc}o=)-9=(9`*`siVdf#i6}X)lgFaS>-+>fLZ!3TIlGe>IraPPgv;FF ziqn01lcx40TzU_8+7!}(ynCgCEBBh@Pa>v9zda+pDdiic#}hH)LNEjCHnk@m`8L(> ziOzj}rno;PnV?U_3^5gSef6Vwvi!Icgu(q)n8p^H;Yd&fwaC0--n+3(Kr3U@{JxfR%ld4|kTA|aTRu83&DW>j0vyd`9TbNxlXC}u&Hz6ud?(Da3koj}B; z%!s7XCUs7bz`#enQi1@-^sN*NOGWN)PWYXgxMtv9je@sI#-AA=|G&2HtQlwD1F_$NG;Vu@aqySSI#Npf{W7@5iuj$Hf5MbaF(#Ifzc zaF|zDSD;@W7OJerX(H=FFW*Ej3TiI9&%A5}F00;3*hXj#X!`P-Hg^Ja=oUGpd;h7C zJPW9*2QvPTF3I@cSdy!5{>IRhxf*6SRKgO=OFm9gNvr?nM6Pfm4^Q1L(YT!rp+rVg zoHi$iw3d(>(jIy67gxiJvG#If2=p=VXncC_ zLAK6#oPd-KbW)b@-~Dqz`b#+_n{7bH-gSwoudl5~9Jm=;@fKHC8tBO`P~WX4i)0I` zcOM_mOy#$CrmqN+ToYPP-fONT5P(|}12gZ;jhb2jE%*p)6)@9*n{SXqfU<$dv*27=73%34>Z@GBN-MUP{e&uLE1EQ~kRV1ioO9EwxsIDw#{29J+|e0hF((YjL8XcfL?74(LmD9YzE zC=`r1|2N;!FJS13_+ zL-~R6bR$fX%Z&j_b|i3eBVH56Fmab#!?a5`rm|Y1sy%OirgZnrnyN?AS5i9or*P$0 zNm&`|0hCRV?0Ls|@@LSe0wYaG@r%RwQA$OtzH`f3+B>(wkOWrusd>G~%_~!3K5uH- z*e^@R{-QAU={=akkEf8n&w_hlm{H0)m80fNW3m$g$=YKN!oBDu^4p0PM=?-gl*+V0 z*$Vi`KX@kpP)d_!HRMf`{0~ll8sW~PU{9Sq-o3aOy6{GyrMT}lF86ErhxB<-k;)F{pciq4p%Fai)JWQJZZ0bQ$#jRk*9=`Gtw@+dk42x#G z!j_08EeLQ7JAuTM?T`j+)90opEa3{(J!LkcoXRQYj$t$6#=3y7oY-W6(~E6sL%iCL zIjEN-)oPE+9#AH{4GbF9Yp$bak5s@US{Aot33q^&$r6;~7->Oi&Rig_(Kbk^tZ5C7 zG}9TCqGZ|9iwzq!y5 zWer8O!7zmb8zZ}*9?n|8$7Rp>8#$gG^^6e-`Mu-)M`evg~{y^h?9MbtNi5>**I zPfUcHMvT(l7hh&)gKY;o@z$2Mw5w(TPMNlKuow~( zHX{tpROD@C!aIeB$~8+=y=)U5H2%NDC>7U;4&2l^DCSghCi?}>WPchB=v32Z&zr7B zAYud#ihi0TS6dCikbSD`5c)OIC~l~O3*en_R5ph&ZOiplgD$=EZG(4WzSGBO z6@1}WZ3?;Z`1lDuXJ==poP9)=xrjpOT;+U<>}eRI3gMU-BoDBRi-4G)L!W}Jt_#qnqhWO6_F2|sG<9PT2h=2eO4L6|+isKBqb7D1ohZJ-sgu}Ad!9yd-s*?B{T3HQN zMKIyye;!ulw#l9=HZN23#K7E)rfm_o+$_P7bmIBMOgpsy?7Wh{H81j6E3?Pc2r*+b zg)X!tqEA`(oCm7v9PjM6zWU-T{Pp19iOy~O zbnSgXaWmc_u=cC`9pI%pDpg`0*&1Va?~on=ICK{noOhadS{F_;T1K9k1I1aTF{TG< z)x^zlVC?mJtov?W@==bsgCG<>H45{Fx`KiKJmuS$N}V8;gUhcY6MZQM4uks&yt@R) zlDRy5t!(n5$UBua;Pr9@n{KOaaMhn@XW`}$`DL0SwM+>^nj*YYFFwFBDvq#Mbfs0@ z`<#y^nLt-`%XKpU@zMCrL&rxB@x<@L9sPTQdv6Tx@F|tc)5#Qx|~u^J(LR zC#T@y6p+T%a+4WJ3Z~9RH_rI@v~kAsN3%8hH%AjzTj314&o($2JO!`M0FeaqsRihu zB4Y(TaVb``$vY>+uI$m##YKamwV=I+$R1@^!)`IlmhQe2C^!uAaM;3o;ZoP6SKP@e zavw(yWpaQb;|-UfkT_DxgKkk^QHsUkT5A0{$D;~_S#z_q2l>0@s`6Y*q2-m~_u+A+ zTr#^`um>zE@f?mk#Hc23rn%xmg(cBLdYPvFG>1z8<{vMWZI z*gg;!6z{lVTxHH)SJUIVm8kr=91Yz}q^3P_TB`|n;o6hR_5_vf^yVz7(zomIzehTD zy8Ce_97&;t!rx28_Z+!$?X%QfhNhipkg{uzX0ul+Qk09mso9td-9j~1*?z)|jYQ{! z(!@$ur3*2(x(CJRYo$`8JZDI*k?Dg&ZepLu)vHg*Dw1pSsKS`BUY_WscpJ#}rpe@$ z9x6aRRFKm{1ts@^rpJOo_PRV9WA#9zie#8_bfe7SNQSx?2+@@E3)>$!)|MZ|N$tq% zVMgrZkstMITVWa{quQ1~fPattJN%cNXhyY7e>j3adp6Q=sOJb9Dx|r##O1j-ya_z%;P^tdiM9GHRY=M7Tcd{ z##g1=HA2XMOGaznyYqS}1~-I7olLZAH0SIor_2PSE(OiTI->TAe-M}v6WW!w!Y^R7 zDnoc}b{mbdD|J}7QiuALT5_T=I0~kUAGvX@>v$Yr{y*%!dwbiq zvN!tw{uDCb9#>kT6*);SOA71bBu?Vimn_?9+PdC;XbHC1$fQbANxWj8&wl0tfB*0FF0JMoGConZnD-6v6!WBuf9dUCzU|G~#XRe(=+AJWyCcv)S}! zn?{%O*!(d#-765n1AcVQ?!sMNbTkp8cZ-UiR7E+;Q6&O7!g+Pdhxn(F*NbZS=|a~) zK^JJ1f18w(9TWw&({YtqMApR_dbqNgS<`{8=~BQrDtmYFBFm{Vw+8qm*5uQUVN2r? z0aj9JC^8Ov~qY1Jik1bd16s{ zP>)pZ$uT{KwuI4^jMMo-EsgY8VQM35(!668a@$l{tk=V_D9a?hk~-0TLClu^UQ`e} zYBXQIHt+Riv*uktesEcRK!#yh7)PSa6Ob3seF7KEGkwcLwfqT#1Rq}2K9qXg^hV8a zHnNK}S2pvNG_&kT>Sfj(_~K8`7x!P;xu+H@@rxQY<5?$s%0w5wkNGA7KKq3Wm7YSC z<-IC5v4-<-uD1zaVXK$?OVOoP1r*!X?SOXuT)a<4LfzG?nx5(+c4{G7oL(+u0@{#> zY61Rf09%aCqKhj!4+;EE9)LL*y1@J8lviTZR zg6Bm$2~YDgbbe=p0ha_lF%;?i8f3tWslXIRa5&sKta_?PK>0Orw|~4Cz&6~&-M>#P zzASPubF)87Mu_AIMsIelQ zf2m1*Ver}AakX1M%3Uf$8jVu5GQVhEjoy(fGl1VN%+H$3eN`*B@(znfwNKssbx|wg z+g-ouF4}I8D|dD>@>kIOMY7vS?2SWx@ zFiy?C>*QLI&)rmfE+uDPJ$^b&1cySCKc9_Z2%5x{sZ*|Ya#*Luzei4KXBz)h(@3SS z-MaJaGMVzm{euan-^^!W)Bk4f`9ceC2xS(aFG;nF@$W!>HL_TR6c!!XQFrIPn`)68 z7xQ+KhelGhAoQ9hP(ebgA{sWrMJFp!_V2{%P$edh$H$loNK-|LfoRO0#?`VbpVbl( z$&up>MeKV~z13a$cVc(tM>sGPdnYkZixEWTum2%3e|5%^~w&2AN83 z#zPb6Rar9Wg>jl1mtnlysY9iiwdm8|LTl+P;xum1Q(aZY}vEcz#DO=`g zV2^~(Z;K3Z$sqkr^A|f~QsiNc6;Oh#2L3=J6I*ljFHM&xRpNrdbzkl*)cx`B^6|Si5S7z9D-+Yir};$Y>z>bu23slNI@}+M`GBz5UpaKi&lwA z<3`i@xGJ_0&t|n-_SmqaYfnTixWZkg~{ALz7`H++_I(CWDB;(M2 z_c94BF=CgGF)m9B+%6B>>huM!YE`CY{(|=A75n*_Hn}!MJKJ_Di_^ihUCKLD3BTLwdbS zuNyA-sKhlvB;7IEnL{3;GqYKWg0VZ8eleA~7OOmq__5h@@eyhtAE-s#{zN|3?+_M> zJjC#-!oYdoDhEE;m_kf1x9~sSx13gDi~kw0L7wVOL($&+CweD^r{8^hW{~OIdu;mz zmRp+p3i^i|Ys1`qD0bJj9vMCHa^b)J>%l+P{;Tzm*8e+&xlUmZzfha`{o~%Zy@&XY zP`d}MT)f{HU0n3P8$ZIQCnCQt1}$Y3)zCGDX|%*551{aa|H2vgATAL0`^O?nXR4Vt zBF&r{_tu1f_X*7mtpZdh&?y?#`{4Xs6#LnDj$-d8%1%R?xrF~u+kJGvrGGO1C+2?& z{%6krOyQr+hn;XjKZj*+@6GP>m$=R_n8Cei5|PeKShp*PZujnvu4IZyycxN+{xT|h z1tlvz$)4VTewgR+4SG5=%5B^`hOdTck0p9^h>$($jgu=;lx-tt0}kG|k9(lr!$DeA zmdm?4%QsNlRp|1WOzv@hMex;yX?4fg`$)fm9|nj{5QLl_RG8^OsZn&*;GUf3XPw(y z{AYbV$Y|Os%q00ZagI1vZ zN$^@^nq6H9>4=S8n&H)c2?K~0ojrJI<&YJ`<$5vY{cf+Na6aO(Dd68t{5Qm%_;uOh z*+^R~CbhVcqNVMiQc&@h?t}5LcLAKFEgyJ>$|#Ed2C4>g zWg0~YWtTiEr@dpgB^hZYFc6J~>6{0Rt@tEas+Oz; zd$>paq{VnT0w@+y#GmzEA0F?X?EbuSzI*Uu_h9$rSM%k;&dY77u$1wU;I4HoZn}o8cH^sd0Nq553ZH>AjprUEWenwt ztbf3^ZqD2|s46bYc*N;`5MI^uxE*9E4NHN;qS7*$`)SEYQYMbOiZZ)uNtWdJ`@09{ z2iyBQQE;mMJVV&4{q0}$bNMGdNA3O@G#{H=Tu60Gpf8)6mi|yasT#SxP5HO1Q5N0U zq=a8iQQ<4v+LY38*#l()6xl-TLbpVR;GxY&Y2`@F{ww*G&X$#LBvI7gQbO#8!h;;Z zi^0a`Ko{H`h$rb5JlVvtVmZ^(dlN+vb;3S;R_f0%;tY7kPvXY;hSQ&MVl$nB8`1x* zlVm>uK_tCu$!f-}cjBhi4!XcdI`}CId&tmDNw{RWiM6Ja>`j{dId@244Oz;Hnla0; zYm`(KO_qeM0?1A)y#T#%TB4IGmm^SKiVQJ=b%`VjJ_VqE^@mvnzL~*+hKCJ$BPSrL zhae&+wmhGnW@q#;7zFr_r$cQ_{+XSfRj~e0`YxdPLf6A%s_f~_aq@3>&bT95mBBUm zM5A`#Jm?PMu`KhB4v~yb(k*{Tw{nSnP60;L4rS2m47@Mkn<|BCPD~W`WqnOJ>Qtv= zgM4XvyC6&;w?iRUrE%*)*&V3WLjN~yHEm8Bgsr2}@Ju>h`d4#_@Cm3|V1`EgWSq@G z);-B~cXoEZ`{pr^t$pffZOMB=;Z6$NJORcY5zmh=C}vpvz&~f%hxWs8W3&J8VP~ry^TX>TZ5sy! z{mEL-1NwXK;9)0(PaYvpiM#k0G)=Ga3?!Mh_=i#XHxD=B&W81XQZqBb=2s7FlD>P4 zNDJW{msSyd^Ke)Ui;ZZrGv}p~{XY+>gQ^lHHhb`pH&qdBZaQBi>WjquBEc_YiIm@? zuOFsv!}Lp2*lvGhFd~7RfeGmNvW5Pzc=GMzVbP7g=e;tDW{SH`<;rds;rE^JA?8Nn z#n9gTwlhTKxJq){9z{VP#LZ4P0nJ{yTTbkBN-WVl1IBkPcF+V@(DeYFx5uMAnR&9O zuGP60A9Ap6}rFK$cHW5-ahzme)gbOqH)EQFDJRU>`3a~(z^mxLa{xY)d{L8 z-tr5N9YntAz1h`z*NcqIt%7nRds$WRhT$6cXb6TunPuk}$yGp`1m2%aKu`otrzNAD z;j|DRM?#DXve941ACv3(bqjr};Xz!2WSgR$kmX^4VrV%*i5O;bDpW1Kfbd(c6Viy! z$0AKAg$6bGY?{Cnfp{tkG=)s!_o7u5Mxj{>+epAz6m*19yg-1q(fECwOi_UjC_uC= zJ5jLRnI+|_jIxFC(TJin^daaXAagnC2CQId7E8G~fWMd78`Q0Np@qzOqa$&(^KsS= z{(EEV_ut2#Het)(eHEbYZb%XCX$c?lG6AkE=cG#>N$C&K#>36W-#z~R(YKGk2LbF! zq99Pf94XP1&OL^V*P#g?_!5e&|FXcllgBEblK~XbDY%VZIY-~CP37@@)%qiBG zn0*ztzM86IOrTJf#~-G`6QtFy?L0^G)PObhClo}seFYTb$aZ>#h;vN&#>VZ7ti0vF zS|7y4b&S^~u-vn0aSLbW6~4ZSCt0@EDyH*%c6$*g<9RW|s~vcO+A0C&+7s;Lo{-~6nMpCF#|l!{l;*7Nxp6=k4&{>4zlzqu(WrMbyG7ID-Eg+!K)1& zh2+gaIl0t-v@yff-4`<5ZyKh1(^?|`YzZwhRgi8nW{Wljhn_sJvT*gK-Hc0_tCXKq zhUg#qDoid#GopSSqGfSteIKPVcn#){1TjT}dR(fl-!yZ<&h@Ok37UKr$twmAX~zRG z)JgM{M`9@KlmRdDEcIm`XTpAntbUM+G>|>z66o-2*SN=BZm3dKwZWg;U(d2xjh-r^ zqL=8{9ea9!FLb*hj{(1+xO|7Mrxts1I%-$AWp+_hym=<^c+85GVB&eB3Ii@17!1l~G5MoI(6Fh>9AC4j3y;n%mRODC#+E7xmp>UdI6n)X0GB2z5 zCA=q|i#OT0Lh(i69HG^kkei~-)+qJ2ZT47S&#HOKRPM((%1zT689u@UtsgiJXeCi8 z*jurdBGusogQWOcf1sY~Mx-6eoL>;@<7rV7ZYkVK@%J`mm^XiS6qK8>>3BVa*mYz* zQH}S|VW}!dzCyLq?$gyNj5%lXvHOZmrl(a8xv@-Scsbi8;*V{a9Cofa-Ox7uSTC8SQ3YLC0BmNG zeddD1;y9?c-B~Jtpr!To_Q|XB=R2=YUNuT0j~*@;L6*0%w{!3k{(1WA$h$5|?d_-Ya~g#6 zb94?h6Yvy`}yJRbUQbT8IH9m?4Z8|%*|&hq-2#wrS!4% z7Gr0zZ#v-!e|>{f4r7fso*;=_6DVxXTKIna5g$j1^f|I@D5~?Nq3vnlG-dOk2y<;e zk?Fk^OV0=l(HtKot~6YDq(BUwkgxM3gH3ir;FP8BaY9Mhsjia@uXd`<5hYtwOJ)%a zEXj9-ok4PEQIr(V*$3b-^(YN%PQywBWy7#h3))S@_-C9N8C~nWx~SF1A`g3_R*#+9 zuaoq3R`|5#Ne?|j$2g04Md^GNe{A@SGNM2R>?HdQv%N>(G2eS6`5qLW z;m?0|!ZGu~@Dl!g3}2r&3&mk7N8w!A$ZnK;e5H(O*G8i88+1l|&j+ed%ZwK{y_O=? zdBrzC&#JB>sfEljJ0-8Ar+ zdegRaV0FefDNSRif+O_)NW-yVxJU+?lp8+wk(R{*FdL!-7aX5t|+Bfd*#F>(p*XX5Prplq7 z6Jv~(9Y%h5drQ9OriH_pk=FIRC~@{sx55m$tx{$TMvex0h`vK@SfFXg?1r^QtD7Nn zuHEm${C?KNb5qtczXLW$RpugX{&tkjIhU0A<$KfBw=^utsv*mS%yaYU4vnZG`)#cC zwW2E>YPfR~N1&-B8PEhLe1}X!wf}ud1oBM8mde^N!X1$188a!(;by? zT&=GsPaggwR|Y}D!Kz>=jQF%Ti&FTHngwkNgwNONT+ciV+v%yXq|PEwX(Su{{%f3Q z;@BV*qoYGwNn&*M+)M$cyX!`QqF@kornkS7Ib`Y{FXAZIn#+qLJ!6k~z@4OvbkA&0A7*BTq{nS}Jp z6|hO})PgQ;F0(`yQu()SC8S~TU6s8X>Q%W%1M(3KcI6OjnOC3T5s90iLS6&)2&=Ra zT9Fio3RP}F%T2A;$TJS=a;tub7>8il>3FX1kW0p&+1>c#YTcFPnj2owTZ_2A+F5gN zcn_eetEx|1aKffpJ{I{&9-~(n>^G0hQ7Y}8jR%%C6E+_=%HR>+ z)~YxhI-V75mR;1(l26$x4_mFB&_j_h^2XdGLTMDHJ)sv@QBX`TCSseDPPwkEZ)MC?^T#4@_vMdrV86jF*%cWoRp zV2x#U4JQ>Z^S*DneXo-Jw5Ujvp?{gzw=OHHi5F}pU0gz5ZOdhsMaCi=!Ya-9zLAe` zbbhBlZg1BTHowY#WXxu(-Y=-u^eT*WY7O`+Q&*Oo)gRWZJX>LI4VR!Rj)DxN?}msT z{CB&5d%C&t&$Hjh|LA=6K;3*Ov7PJ==QMM6;DOKREjR?8EZr*@NX~ne(Zy#du}$Q8 zqlw(V;nm87?Y(ImMm;Op`Nl54+^SM5zrg4rKQlY;n%NtaEu8!Eu6>U4qwXVa!ip`C zhJNF{x=lbWHh6IOX@B=%AWes^loIO*9&3hR!9YU`K2m1!iXeh@fQ2a7oZLG@XQk?x|TIW@PK^dLv~nSPqfnx8pV6XdyZ69c6${$i!g}Wxs9_B<{0|Z`IM<7 zQRobY89{v?1H+(*3D9*flaKUy*1;MYo3q=BS)iRqvFVSOlS2>bUAc34-;Uw*7{o)< z(>S#}9YiF9ZtNt~RG4K9y7%N<4Lqev8PqsTxz5U33GYNK#VV-Ij3A89BX&! z7-_LFT=V>Adx8PSYbLY8p?Al^a9%+pEeFQQ2v71(^mYB~UaJN5724RFX6XjsWARWF z6jMHm)8D_=?lG;P7lf_g|KNYV!v8$L|D3{qvb+_X1z%TjVx5Lv1e+%h=NLgo4o+}B zPuJHcPM5x}x}-*~MTc_hYws+gWm=~7b5n0p{!L^NRUr3wo`(HixMv zZ?6QqFoJUv9l9>z@2s2vD^Mc?X5<&$kfiSA0Km06_CM6 z=!O)+Gdm*J>D?4MqGl&f9iKF0Zg>-;mNTw!dCvEA#O3MPuwp=2=vmJZA4+r-Njs%~ zgHE9@1^caIqB`fQE>U3;cq6b@6C2#4Vd`J4w5QP#9X;TZZt!*3`Y=gGlWG)NTu{Sp z=*y|L;`ku~2PUPE;lE*vf$+I*TBno?6US&G9oNZBzkm-w-zPS&@Q6b!Xz=pPybF8mVqSisk+2wyp0t(7`yvEcgH8Ann1R{3{g8*~T5gPX z+L39N6c9MyH8Y{I$MX2dUA?Momw3l(To| zt0;Q)fz#EPO}>S#i;h2b)Qt*?45(`I(J=f6Y7*#WoJ>JiiCPS1cb$!s%Nq_OM@=Sg zJ)n9X*vj0SeCl*jomBxaLJG(>l?HvBQui}V-QJsIMR|KmGj2bWvc~PLEl(MxG{`I{ zqm)nBRKvZRHy($JSI^p}hYe_0+c!shv^elIr$x2$DslEg1?BJOlrF0Tt->9{bYV}3 zpVc^ih0k2EdWB%6NPC)PQxT^t({;h+KbJ81xkE&K`+V`S;W`{T*e2F+nzeI-U!}LV zUPV*qxK0-@JwH)gotG$y>|3~yLc}35^h7}#Q;#s4(oKUF)UiJ-`N*4w;bJ;7wL{dZ z$K8O(isY}b(xI|KnOBlt5nqaznA05^B6gtdOi@w6fNJvQrge%+xYLUz)UuOBYO4^- z7zP$9q<>qb^pr&gMn_cwlo~m4+18>V(Nc0C4xY*wA@yX5sUHa_pK)FXy&UqHxfg*IMk}{(7iAZnulL)h6$}IH@ z{E_j1W(T7@yGFzdWrN4xjLV`tl>eNI{APEo{FKZ13d0bRu);n9)dB&+=|u~RC!!KM z2z8K!>R#nrEPB)^+wswI#L%P!F(-PG0Qq(^gaXFfONAW6E&dDX^SR=hpO*;Rs_zQ) zh#hD1d?cde|MK035|Ma7an|JME9XEe*S#td6=3t9I>0g zT4b<`rxrYty!AYLwSDlC>ybX0RMYo!*noQpp{ zaL)L&T~rc zFKtw@Djn_|7#?<&<3!Bc&`k|ehjb0sQp>XrFK&JbDFB>8>x9)>k-ia7{xuB1$n3FsP|2YQD_9mRLbK2p--miv-n%DQ0-N)4zhC3U17I0^ud779x zZiW;?CXbJf<<@DF-@c|LDdT^Yk6incv3m#4?n3Lg+ZHAWU)sQ^?tpjqc>)8*j!JK$ zZ!D?7&eig`&ta$-XF8Jcr!x*q9dk~P)DFa-xxx9EeBleJ$=}PIGv9Ao$aNCdu>rDQ z;Sy@|7C*pcFJlJu105uQecCO>bvsaY%0YofzEn(uFc`u169j3=Qg~BIULSey`Qg4y zcOkP;pf7)gKxwaneW)_Ok>xS9icU3K%7;2hUvF@ zFAk4h?ts?wA_^|6-!PQhyU>st>?A{p5Z~`@AJ;0MQtfYdo*o}Q`)TJS3O^V!U8N z^@B7|2{(*iJg9u;sLv>F#|s1gm&W8bcC%6M%jRF(}*v@1cX)dpCpCmd&#Gc>@)|1q5)~H7+dw3JLW%`i1BROJX@KtHixS?iY-2 zEoy#X2)dREwx$6FRvQk#NRRZmjjDaMJfgh;)zQI0$hXo(y~w#2?ZhAPo^zOc`T1e) zVRMXn9^Py4S65;i&zlR>95@ieYbqf7Y2xLeNsxW2CkqZ*c$Ze zog1Ki=YI9qV#seSEzgM?j~n8~Z_HS61^6M&1H=x8P!WZEhgf5E5m|0!{=^oNjml8h z6LkP)D~5*CP&6_2lcmvz2CpQ%hgBBr*5<&5m~H+F!w{>@S6ZflP$wE7SRABK?WYf% zS;mT9v}l&0baLQf)N*?kKz5Pl{PUAvUxV6w^nB+?XYV3VkOl861Tsx}_CwUK2%bVG zh+xhIPzfq=bFmx+swj%LjQikxt1qYh33LJnOA18DlTI)!Y!Gi`OT##wK(8eMmQ8}f z=SNQ}xEc$$Lv}*mhTK%KlUk}`uHw!@bgBj@)R*p|+DM@?>YOP-SPMeMf9Nt%OTGza z7?So->hrF;Dm;o3{^QWZ+sLBL;hGV{JM7SK3s@%Q7W4saxxj)4n<2V%W&emaP*Zx+ z???d9T}mx=S;85eCs&h_)0!cWZ$w_m+@eAr9g?f!o&7L0s-ijuT;*MZ+J&K@4vXz8 z{(9&G&L)nlV8ah3Vkvc#2ZjZcBUlyGSw0;)gHP~lz|VL>|oo*@U+y2{AlTyRKJcXcaIx)ILzgLsBu>vKvyB&-G2z>`%|mf#^#x|(#d>KIrZ`kycKWhkpqDryp{RyrKjtn|21HqAH{>l*O792!2_c`h+< zVPxf-WGflOrhS?U&gb%K?sF!AnYx2nVsI<&F?=ptq`0uB%XHGB<&fw)HyB^;v6BG+XRRyP&1)aJn3&Gv|~71aP^-=tp^fkxK4W0 z8ITLD^;sF(Uv~!nN@dMz$rx3m==9v}*}fNz+L|a0Q}14#FsIZkn?KuQv<&*YdO+c@ zFA$6h|M1Z*KiO}~A%F)pV%g~JvmS;yC!C}Szz(N0{BVG$PH%2+Q-iLwMrazPOlV3# zxt;-5+kg=3kOU@Jiv(5uWS&cVAE`Qb`C;SyXwUrNkn#?{r9(@1inT4bI`1qYR2G-p zZW}$yX@BPi`&C`z!uyC`*w}xwq%jKBol_{@RL13=o+Ou5;YIQn)S;5aA@xf&v*QVs8RlN1Lgm!R)vwNQgoiEv6X_5UE9BE zwP}DJT2EEi_ngp^;7E+wzJLh|Fe@O3ElN~<;5l7TD!Y|jLAh9T?Ro<`mEvO=Z=7AW z7S@KLr_e4}+BPQ;#-gJxF}R_BxeYy?#-n$fwV-H?lgmp=Vyd=PR}TT23TOskEm8{V z-qXG9XFs8$fHn1cA%1SyrfFL>fALhlp2EP5&}b3;_pGHA#~QnLC~s6 z#nHk4ss~uVBSH>4x<3_KGwN8Lo&%Ag(R+)LZkHv7V6toKWs;(=pB?}Tb-_5A7-KcX zM|Lp5r@dC|Ey4#}CGSPC72FSV_-Pa7@Ir&YQ@`TBSo3_^0EfC*`Fz@_TCQk2c=|UQ z0G=+_;+KGYk~cLJbuj1cHhgS5C8m*-R-2eopiR7IUoM{J?DIQD04n+ z_WPLh0c!bYC%mBt@WFfZCxRDO^Z@F;Mz0lU?^(m~RRc}tOTkwvBq*NElob<$l;7|j zEp6OBKYnRsj`)dz?Rtby@UOX;%UXVoWU{qijKcqp*jMzJ5}hB**rStN$d7)EwBeUA zIcB}>c{w@3yJr~v_n6#Q0z6asucC49xQxqUKThK-k+Xx;bSl(Z3Cr8tiIu{b&@tcO>F*mQHVuL{W0CZLaziQzT4RDvQ?A(59 zQS%^JqvPaMf=eZr2*Of1CffNPrNej(^{DSLXBW;5xs1csyHk@1BmCZQTzr7M#ONAZV_NY-N^2H{k0IfL1*3Cb{oW?TlhXWjOMlmm(`Y?>G z6>nN6VO_pMv7p}p4tEz8Wj6B=2wIiueIeS2cau__OhBQP^nCsq-PJyVzxAe6j1UG& z4?cYsCG=yM_kQZ-aZ)gnO7Q}nkjVd$QGd9*8P3(|Sz~wjID=N_scsjYcso7;zd2e( zE`J!3(L5Jh!K5r_#o)n%U_gK3U!ATjgMbZ=hl}MmWy=z;D(D6$oiGQmCibU>eZp8Y z9CtzE!Wb71s;>_(FJVCtibf>ZCFJ&2ckW%O^K{(wq8h->b<*Z%$0uvI;Tb}sMP^L$j%l&7B78B-DI}YaYUUY`hVQglZ)JMCq7EvOQDMOK&!3%4uws`S0%u%BK5CgNt(P)8+4j*fnAqv`4p*}HDHhPD2y(OA}9+=s9@ll9k zZcJ$5hbe{|Oa*XC_;rEEb{T08a+Kxvyrj$;YNw7@+Nh^zURPM}t#0P50xs%X2r8E- zT7s7?flqhH!$&%hu5<$F;z*+6r=ATqKNV-omP?A<2!^sV=}ogMMRvO*ql4KypW(6a zNb0p(&ogx3A7`yNy#eAmESC9=e>T#Pq_ClJN-SKR%&=jth0`U=@|sH0*ji#$1w*A4 zWKu0i?%{$piEyCqnw*Afs8?yg&ma0*8LlJI8Hi!Fa2XXSpJvU2L%<9eJ?EKY%~vy8 zzY^3D69G}{sg~Lo?-g9fj*Y89!m8G9mOf7kdAM-3ft5n9VacWq3yx%F*01sYJ3;9r zRb8f+d~Ebc@^`pP5)obzD0?slO$RhNEJ)jiz~O@F#H-DAmE38WYQJa{E%FkFFPMY% z4E=7W-qW!f;om%;@Iuz#(G8AVz&Qr${u_sjQ~iZ$(|RfyA8rAC$D+Y4g(Th*J)?#-gT zoy%jWxi@c`&l73(BJQvB;VRRM%I$?4>s%$csw4{j#kBBV>{?b)fOG5QH7Yu`gSb}DXywK5?7#M zGis7lzSL>fRKmk)wo6mJca!k&4cFh@1EbdFPAn>P?|vj{3CF>FW?ikYSxo9HKUQVh z0m3|<>)-C(4jeIa+e+Zn#08dBQ=lo#^{Lmlrks=kZ9u+QZG_s%rb>$%iY-3gULyLK zG(f{)bI#^AZRcZ?a7R0Ryrg_O9T;=|{T2U~GMzN-BQ`5$jfKN>4oaQ(;zB2tRLGfh zzW{=Lv+!7@;8GbZhWV4U`*4_dyB&;=X$3>sOJX+yB&0i6lAs~nO-Hy}(Rw<^v97DC zU%}kkWytc)_Dp;?osR_$Rqa~Ij-pgF3$!DaQGZxI(KtY=6D5*=TAoGv4g8QJs=|wY zq`O$P?8cm2lDMjb7?R0oPt!9kdbn4|elAqw=CF)FyZ$&5WaNH1kMpr*q`Yi1rz|_{ z0BuOhdDKRD6aoYcI=wP`gCY6P;zDpbvmsvWCz#2S6Fx9IWh;1sLgI*0zk~v9<;WKs zB4rJ%A`@bG9qLPto*tr`G zHuqjMct;d3V7_j4(*!Y9lYjf-cw`K(W6gmtlPPS1<}cpYzEBGdxW9w-%b`H^t9&-- z*N9}~cWy+bRP)4e%CC)PRr=}$lr^TST7eenGk#u$?E3DQ{c+WDRSNAa^9+G6bmpV~ zMTaBt?tdaW9Nq+f!xzxs%NyuTc>(>1FQ6ZN%NNj_-|-FfL%xCD?0?61(BJVDbf0ga z)&28#c>ioU&ZzMyb^7zQwiPNlCEnvW`C$i-P?Z%a8dO_p)js)Fbijb)3i7Meq5}i|sdiCwSSkG+`aAf4|4bSOX<&=T~&XqI0FB znsCR$KK#!;E9DVPQeqY6P^J4*;v*-Fuz}7-OcS)YNlOZJ{6%3@k9M z3F+eK?`}j8yOQp#0hHZKi@?zzRG+L;oFQ}M6+6nA##oLd_v+LV`@y6O+r4PG@y7ikcET41bJCoYH5O{7(l8Y!|0d94})bRQGWgDRNMq)Tlo zKYUXcNRGkoY-pVbO6VfSkv>j^Qxa8jRnS`^iXboE@3sa0I} zqlXOQJFKo>E_=%GHmr@0bD`0$no~g?y$^XjtE@>Bh5{pbow$SQF@+OLT|BhPD*m~n ztG+h|*iOtNtZc5I?!p{&g#3wCaJt>Rlb&LFg0o1R=4V5UhK!|Y_;p+qn5`#H`P4>l zL^W%baV06x0XI$JBbY~5t@)`u9AhGeZwnI;LKg8UY-a$KX779du@ zHEgFrB^6H@4>wf)LF`626{~pW@%A-!6H&~-R7-|`5oqZ!vtWku*Vx&ssZ>*Wclcqi(p`)+elo)2Uc7m6AoE9;4>Ha&! z_!!&!yxn0{vT`q-ro{@Y+4@8>B7;7e$E5L#zj5sw^?uH}w}UhkJFRU6PrgvPT#?JW z$F7j3Q(GG&fdV0ZFasAH+C5KUl-$~-eJHsb?z_OA;QMJ#vMOE zj`(>4&R^g64CSw!gR{SE%=s&8u){nu2e$In3zG;PdOw!0;iKJgn-GH7j3QGjhOzxy zD_s&7Lu}Dh(Gd1PNK4yw-6g*33|`9}to9+@DPs93rGMC`IOUs0*yQ$OzP{@>ZP3)m z7|1pG30)Ycd%q_Rzei^ytftmg(~TmT6O2Y_DK-UZG(!pDb!qvH8EH zHKp+{X;A6Re@mOJ$S-LTZ3C;cSKhVfY~f;azFZ{HO(-At&d+o8)PN&{0_Wsl{W=3> zsIkzOOKe2ZFyC3hFprv%RsFXHSNhiAy5ZKqg6A`QiR&yD`JVDp!Pg6Ic<0j7+3_&` zh$hOPKd(vs@hS~-Dk00YoM5*8Nyw%~HEHz@gP!eo)?V6M{IaR5YpSnJQG<1q z(`5}xb7Dg;(d-Gzu+Jjtt7Vf_KtqC%ez;|)@-mc1RcgV-OO5=z0&B&yrU+vP1ilXF z=(+4!)@SuqlL2^z4x3d7-RIJAjhE5WwXT(&rWsre#k;g;SEf9-c)R$}GkuVsK2XI; z1#GgEBw0<Nyi;FwHGdv8 z|9nq4PJNQ zv{_;?Kp{9o(7dgJRu~&l82R;ZU6qvxgGmeBjHsG133iRGXRdL*j!>&1`<2PAF+dHJ zg;fLi&3iv0TSdGmD|iEoM`!_*V)wJ6+()$tMh+?1PR9;Xue#2Vh=gWC?dq5Ev|uNH z%SBi^`|F~2L%)xP4kk`5Ck&;Q>K>t67)KS$n>6j@o-ged?w1O;y0mTw5iya;Hzp+Q zD5X}aaon3kc7?DZn(-@4a;SZvqvo+i0ik~J4fNAeOrJPt)CLSttg3#lYhyJvipyy5oda&d|envc}#Sw5JNgaF$F}-Y`|Tq{F3a`7&GJsrJkXNO2v}p84Y+KiPJ0 zgD?k(#g>WF)BFrG!c{RoxjYiddRX~ZaL>L)?Zl_d0SMNxMB z8pLp)<{_8P#a^lBenk(NBMVz_31Rrgo)wxo4TpVT9%^MRdaX3PFw9 z^O?doxap3D?KB=@Uf1eRm`x)9a%sThUuZ=JN4kM_^5PuhaJOeO?-DAJ!MkX2Z;tjX zFQ%+_32&zD;8{%3#sd0u4KuHOX`*7jN0oVK?^F-%hhq_MTjjr3gaiw+dlHZ}N5mqP*enZbwXF zFcyW;)wxdIE8Qb;rAi3kZ#fgrhHW1~lzEyVbI~xp1g?bbTF8}*I{5Sx|(j# z#-FbcUK??}<0-nm-GIai6UfAku}i{S?jgTum8Z2v&zzf9JqX?zXbaWk; z%6ofktsAs}g2>6y`yj>W*D|u75~IqS09p$|aWzUUaq3Wh7R6y))4WEaLX)g3UmrwN zovYY}V)auDrdt+I_u2e@lleU|c;jB=p}ZKuV*um99)4>9l75HbV2c&1UA)(@LWm0L z)$MJrr;?BnaClo1AWjYW820L@1WjP0HRGwozG?FeDAeOTk?Kain)1}=h(!KD4zZjdO7u6?Wu84*LuDiXN?~! z*r4}R2THLa@2Pv}UE*N`YuP70nGMQfGPwH)!C!ntmj0V?ji6*78Nf0o*71O!>nQ8A zc9vv>gQ#)_>DKJ9o8qrX^qC5%h3DyjC7XqKCxaC%=l(pAYw9V$$@%D_d6 zKAr6D?;M|O@4p^=3VOx+U=V1K$e_yerg%;?8Zt=XVy33U?Y*`lo}wnLNp}}}!bPDU zbCcDZQZewhN~mbtHS8)J2jhtWr>vho^*yXuVC@}0a(!bvwb9zesZTLC=4^=?Vgy8+ zIQr;kg_p0zY?{DIco1}C&{(QbF}hts(LBx1H2#;mc*2K-Oq@hxfp80Nj&|`fK1+7*(4XI*BN#P5L)?yD%z>{AO-yF4G>>lkr z-9Fy=p{Ht25TN3kj%5%KaopF}EvS|J_BM7{5fNO;&+~k0HKkB$7dIK8QJsNpu?39& z+r4}ZtA4jQrl)O%&=`Cuxc>#nWYJ=^Zpqy16h%d`5lWp2+)l z;?XRyA;3yCFJ8Mrn38WG{wKr#NGL&u=nX(ddi?kiUdO0(tW`91M*{E(olQ4D9N*#e zhX|oei-@k#`LlLEoMKW_VLhC7A4-_DiB$_!vVq{E6R2jQ0c9A0*Q|1a%M>x4s)rL< z;Rx2F+=QsdJ%ZXsvYssv+()OIXVB@VMY@z6|9162&m^plu0rNcB>P9PD#{EX_v13lV|J}; z2Q*=bL@O~y2(a37YNkSriwc~f>G(9|Jd=PLFbaZ@prB3E)hY{$4IN!(R-?M!4kKR2fB5FTFy>uPT7AvbK%F%Hzs-FaR9#*s)fsCTsE`}@hfP0G)RM)}W~9E< z>BUuf{pF0{K=ik=pj1wVGTC?Bd%N@W`0&|JJ13nqY8$(A3)vXsvwtWIbau0|-QYp* zL$MX;%#%3yac}SN;N|)2!@a%TgO@h=iOQ8;jf&2gjs_KnfM$qzmx$?XE8q+a&W@w} zgJmz3F6)}rD6Q*MCsj@wJq$CMK)V}6L6;p1L3{cmOVW0*?rJJN0DJ>g!?L7U#&es$ z;Y}FGa!=%1vtM?DAA(vEMWf~>@crfEDuMSaI}HhXU+n6`4v~@O`2ND9#k9cCUxy;{ zvfh!4o9d4yFhj}YH%-HJg?#=><~R~6_Vf;M#zaizxN0oD>Lk&3`1RgjOwT@ONVFyaLY>LQ(?E@;8dT~ z;!u69>g7$55=%$60lnq^!zz}9_O1?SzuE||0-~|%XnSxp?m6-eKpJuujA$Yqw7sl9 z<;wHt1=CR0!TZc*J(!#3wG6X5o<-)L*(Nxir8Bx1k!Piev_N@q{+2-U6j6Uzn2SPqqM(r)GNZHQ^xtkB921uXG!#r(vq@$!mOYJ@b1k(KiNg53S63o#V`n zb;;t0Ny3+mqEV`D-|(-4f4=9-qQ?&47$}@ zdL6XyOB2H=5}f=_xlA1+#0QJ)QRS*bPdRXdeAS@fPCAy!?WuZQ? z|1+{K!@=zKR{Iuu-lq;YXVZKs{1cuuI51!eR-3w3!`!i7h^n_moT$YCESQ*&`}hLJXo_s)7y>jnm6 zL~Aco?{L2O?C~10kse1Z)euLdaqrnYrN%)_HbH;yCD#ePS)-rZ>1dL{IVB%^>1KbU zQFeWS-bOxR<8<7bat$mF(2tXhdJObKXXKN;m>$TxiP{C{i&}Tq`pVY!Tv*fzy!HJR z7}UrjPrHfGx_x>>m#jtoCRLOMSZtF)a$D5C@(1P4Jn|r8ax93(CEvFOJdOr97dzvH z6HbAq=4L_|&+D;=j*p5!N`2;$hs>%|4H|$>z8|eRkT&9Zw86=I%Fc6H zN{1CSjEN?s@c{qGKpgy78nEp##sS6TzbR8`rsQJFAIH9rbu^_rbXBVjAv!oY<6c$F z&D6l#KTP>wnZ$$8j+zo$`o5iXR3rVSpxuodqE1%Q+f8ll(>hKg*q&{_Ea*ygZ4>r6tOFQ~DezK^)*$4rSZ{v3e4lF<2Mo!u zv@sgTsg(rNs4$ky1h3}#ucqoH;@_REtQm7>9)@m=Z}Y5~UoFG+UNfW;%2;wa&F~EA z;3d%QZTTeXdro$%iJEv)$!N2zNXq2BPzpNUBC9mq+on*lybUS{s(j_Wiir%{AX>&C z;7maIC!Z*giRin~5+p)Ljxe#{jj&Yv&{P_vMMzsE+Ij9qc^K8-d#doGFFRA%!WW(> zZsI>bPb4TdPLmYwoS403^JIS2I8k3Au#6N?szLg?Uc;cpWzig#u!DQAMbfWTmH=q9 z!230eL0@Sk$yHm@A1rCELO`muX~|wo8|2bUT9cLrv#IJtF`=gX6Hr#Ez+VV&A=8LI zQOH{a*I|SWdsegEn~`#IDzG;)cN>Kptk5SN`@m`2wMNOY4{F)Uk5RYRw{ZJ{qN*F0 zd=l2s-Ks@nY8gwH^iNANQPf5kKd=%{8eK5WL{?|YMV%=dJL7}@TH2$PK)-6;(qA?8 zt!6s;J38oq+^o<$`r>|F<4>CUWmz-+TBoFf@4!_!_(mM}-P})ENfUnUsQD_&`5u`> zMJ}oa)wjr6-SQ7Dr9cgnGFp(XL`IT5#JM1&EP+B)N2D?ydYFo=WzeEBXcOZ&q*cyI z`K@8sF^@&h=t`sTqRGn}PDirK{I&U`Dn5Jmw37 z>)f)BkYpGHGRAneeVqS%=PF(4@Mhx+=WRuHVFS zZCVU0TG)}Lw?x4xdQuO~Q&ADeKDKCxwlP=i8g z7hwn?+QRGWX(v}6Xr<4DB*I6bDnTqKSLT%{ZL|T3@Nrd+jtq4lRCXxsr+ZZcbTG(V z*{SL;wYO%4@ZNCYH|tTV(AT-ROg<9L&}cW{=@SWY7E-{uBgAE}dwg#t8?5eahSiwp zoOJ&oNKVdoe15M8pCl5W8BRkE1$_sVb4X4<`|(H4DoK88EX2Qxi^&O2RXuXjlh95+ z8U)?AH_qmWLX_?9?CgB^&11Qb?9DumBuFjAR4mt8@Oi7u~q3xMF=3s;NL<<^-=gwQ?K=`f?R7L{lB& zD6cq&^>1w)Wuqod62kNp^5Sh0zbD(1(F$ycByVLO$QNhH+WOxlq5s(=p_`A{&*vL! zTW)SzXt{QpPY13D6M74o-kI($^jWz)@#cu}b-joKg3{NkA}1O8ufqd zf;-GjkuXpY@^cz8h8LPcRfc7PZD?QIY3*^}@S&%*J!coTsq|=@;5A+&yn%MFf2ZB+ z-x}`qjgDu}rRcfT(`j@6CvYOuGs=paF9ty8X0toz#JUhqQn)9X_OgpYdG`{GF63_5E}<2&k8CjuBsi6 z$4(6lxT;1UW6Y+NjWY~Dlb{bkZTt}56zr*5kXK7m;2C!f8DVB)i3XCBQFXwBeMAbk?s zLx3ENzo~tNZH|ZIXug&8F6M-K2LC}{b`+)vE{mCCr!$yP=}W|{D#LS_&e1eWg&NGx z@ci@=4mK)uW50b@&D{+a8cVy>O?X}(evrI~c^0k_N+0&NAteUpHPcJVU=DK?Sz9f< z9A|w_t4`18Gz|6=_Gsp1mtf{}JcH;aUar152HnE4Be8C3jj=phs^fozlQ>&Cf8%Io z%*1%u8PmxFdIbHuzCPkf8@oki_vPyn9nkH$8--JQ?iBZ#-0>7jG-5vKU@kQV*(C@l z=h3+aUWO4aOa{+KZFLJ~Ow`n#&>tJI>qc0V-g;@rwYy)(cJI$^bTxT)D#0aenKK7=gq;+kg^B}_z z>ASYjp}BuZ`v_IDu_-SE7F8z$2A~ERuD1yX$wR2Lsz*Af{0s+PcXPcVi1%apG%0tB zLmT&lMf0_`tYCff$rDMZZBqL~Y;1&;AG@{OYq+Z@rWaXGaN7(SU@SM~_!7pzXOoQ* zc>zd+a|;|9o^2Y>vIuegP%79;+gWFjvGm;A+dFznD+>L`a0`Uhv)NmQ`k$O!(Jb~i%;OAJ#J@uZq|dPz;xr=$2sDp6gVAu>cBr0(Bc@uq zIZZI+*LKuNwtz)X#U;iVClScw?M(i42Lsk0PM(y!`i9-^gvmm%0&}6Y@wB7uFv~u) zABOUSjrIgqb7wf(ngb#3xIshS$D#A|Xy(mTd>|Pd$}qdjlv&eIV!(oC z3v`q_{Y|py8?-%t7OTn>XbF0upC2CV{d)fFaR2r8(e}yV5t&=)h4E||?BxGy?EhJf zy>EpHqyAnn4ECH=ovGB{Cr$dhp<$z?k`dBaRoCmk_bZW%a|twqdZkle!rFm+7;KvdBLQfz{vt04*P1b1`G zYLL6OkGc_qIl}##EI5J&UN^R#=^&eW-tOiLI@v(4m?i|o#e&fTj1wsDK!DZ8484Y< z$rq0QmrzrW71Y!>rY#Q57em}?DJmlZV_V70Qh2umqKOi^um(hnjK2}Elff8anZv@D znR&@1F5P97bFMFclWN2h_#(F26($E7veDZr4Bk{`XASd?EI@Mrx+6);0+De}#VLJy zc80Qj14(v56=6HeXT4(*(NwZAEL^$7NPG**mSTWKAu5kiA*R$rqMD@QLu8$=fezmz)m44bglqj_ZE!v*51bR5!Ke%brWfML(5TsPP|(W1y=RjJ zdlvH;R-I*q(@JGXEpd-Ac_Rgc$ArvX*Qsuh7WUXnM`g#u7BDLm-j50#ad}Evy~Q4$?S(*D>st72p4I2|B(v z6oLi78EX2nc|H<8;EV#cpgIi67LoT3XM)2MG1RYj`18)uTj0ezzU`5zqA#+%9%*BN zwpp1QwhZrBrY%gYyl{#%ZziD5p#FK)h|9sTnu_rpD!`d2`-16(zqb;P^^Nqx@bG&! z!2Gjs8DM;T=}%#>rN0ZzB>u}_Cc1{Tys33x`U%DsMw`M)SSYJ7n!;u@f7b4K(d9(1 z=LQ!=A=i*{bo8bAE$mzEKk;5^=nkmN>Kg{fH|Yq^wAK}RKFtflWSG$%Bl&SMq{W}o zV-sy?7M+s3I~RDdu$j@HZi4qLqOkT+jPTdqDv?iRwY%6_T(W!Dl7}%51mX+V+(Gd| zqc%JfzVsjQcX&-Yil-yAQQ`3;!PiCOJ8S_n$%Z#3EW>GtJl6 z*ZdQNc)RrFVq6dzaKgUbo$wQPZ9K?AL5ph;-_^uTA_H6Th(o5TCQl)hn>5d*t9;MF zFK}?mv%8K=SJ$qKv}@uX1Lq2F()j_$hm$_g)@(q~T7ii&%ovLEc|+YC#P10E?_tyw zG(%m>@fEUh{;ylaf7UJH+m0DtWNYP{tdu`wu+q)Gge%?bKe7NzzjpTasbt)7~^LfMFH|^lEpk9%lM= zEI%(wZe?Cl?NeP~qW>DnqBAZsE)oA}+Pl;R&gEaQXV%b|j_m7r{LT&c-JYY%2=L%M z8N-g7i4h7)V_exXYidaO+t9$Fb0uL;wG{rJSmGZ=Yc`Eb%nw;qp}y1JO-cC!(4ebfk7LM^%bRur$3mff z;>kn^+stT%qopZ7><966E@*fq@-Pf9{(=J82TnUmHB3vBOhP|V7b8V^nqy8-+e2eY z?6qc+P^zxaAdykVWzv6izXE2{M6r%G$hraiH<6_Mh#rkm^(Q$<6c&J}Em@Mw5NgY) z)U7R*^}~SsBD0A~DqsO_NTr)r=tznbY#$1Y8Ca`GL!Gl$TlpawQG(M}fmsf*`w!&c zsKDSj`jn+gXo2Ymjz4*k4$6?q!CENet3fJPgK7!5jhuXWZe5q{*mdTq$Aa)3ADa7k ziYRYZmy`HnDk_gs<4zXrO_&~-BspEW6SF~bHxxaf7WMevpQ<(;3?BC=+fjUlf1=rn zd#a7X#u5zv41ghP>ZPfxh~nNDy{^`|1Yf=RGOXB->Qy0`Z|zr(_qjFzV4RwwO&EzcE1k3=E-Io z#BeS#<=-eo`FUz`X!xjyIITJ1zPCOkz*8ep@&VN>{gkIv@=<+ zAn(la?QK9100FS2NhwiuaO1)>E#rHhUh}In%PvtkEr~iV7S-8j^&Z4@gMT4mP0M;1L=^^y#Q7TOU zP7eXf3}Usy$&rQ$oE5q6U`PX)D!XYjJHzXFUCfgG;eCFLX~%+)U-4cSC0lSm8A%C6 z7*ibsEQ~A=&ST@0PVW}bKv^qRpyK*oWL)2yj%RKXDQ(ZP$QU6R>|eARB_l}*$E{Sv zlrAyHzBQrey9~!#tid&6l8%ccOg!_Cfh(4^aecjDSJ-S`ni#Z{RTEb27-%veJNxPs zuc(~WmW*Dy@JeOW1-(s9SKVpaGvEFyuA8bbO4Tp=w5w1xXgYT|x<6(hOsTQ@O1eLM zlCvekoJVeunNyXkGwU}{Ql$W=zUPx^V{>RNl@pXN2YRxe&Mz-H!2pmxpq*^@=)@O@ zOu}cXS~?YHJtk8*+Ve9>u|mM%hZXTd<0%xJi*cm%pv4CSP6-l^thbT{@orMy9dV`5 zjo&cnjbPW{Ps+hZN_i)Q;ZERW0=W|xR>u`fP=zJ?Q$yd4!&Mz4pGL^|^tc*z1Z1MA zF+hCo24_lP7FK)}Br+bB^%?_G&0AO@&Ru~|arV$Z(LMb>)Z7z;oIJw~zJ8f!*H9Z8 zTCo~aQ5Bu)sw7vF4(eoiHcXxSI(iyHE4_=3ye7of`0S<@$*vG=%ceF^xNOmDa%#v% zlq!BqnHU-MXBfovr98xT@pz3xY{2Q|t}D&!zD+>Fok}b6z9@?LO3?O&V|Gjk<-9Qj zhPBS1PP~wYe}IVw*A4Ic^8Ltoe^ko%f5MB{eDj(T@8XvTfn&CLh!WRe&RxaR6~(`+ z6wTMISX%zXNF?u309Z6d-Qf3hI~SBPW=@&_it*F9Btrs8^IL(l%(ojy%t(w$UM5Pi zD9M7v=G8LtMlsOK=Ve<-dA2o6?(DIWN%plT(VqTmOjavyPqYai)1>;Qi60FeU4B}I z!SM(*g!z;-BV{`=O)AQZMw?Y0K+!GL-3-VimpyeX$*1~t~sgcb>D9y9d`*qZT;Rw2mVC`U#*LzDSU zzK+XC*o0jVx zWyrS4{b*fSC<;rpf%Q_Nu@fL)rwPQRQmC*@^d3&EB*Oar8bhIR{ecmD*em1 zGd5(Iq4)tbIW>erQBI&B#dg3pX1!(SZRgPoB+96q{FsUu%F6gpkyU1fDx0LNC|wtdMpzMPMJ_jz$ON%K z_h#?WKjh2Kon{4_&WykC&Nxqyre{BXXKjCEYH?X&Fr*@;VSub@85%cWA4*O}fIm9w zMBKI>N;&AG^-#(|d}Gipdw-POZpir~LMgUc>@u9SU?HwuOz()B*6bwe8QD88;qmeq7APMDA{;PM`Po({lxu<>J>A^9T zTK+B5ExKiC2f9>8>$zjndJ$oi5&Uoq584aL_gc^J`m4@UGPENgO98=k1mjI#;!tx& z5nUGTiM>~-SD6ARjIA`gp$6Ozx=^MYbf{iR3Z2hqDB;mzef|!(8lJr|sw~`Lno+a5 zjMnN4!l}f)1D#<*7bm3-r?{l?h`-6hL^!|y`uez7Xm&#yu3t@-oRup?G5Jb3;({EIS_QIzvp7HbF_bRB9J4ZdR*E@i8sp<}WxN^^q9ZLngH- zRxdX;I(Ir57%Nj;2K6bsGe_PCXgD-r!Px$6m7CGr3om=8B7?tzjjr7%O^oWDvdxjv z=yG88F}M0S6Zv&QZ1sFB(gYcYP4kYIX5ixioLuC9DkGt6%y1Q<^P@P;&$imB@e5TU zb2RnCKIMY6gE8nOti{>~ok1FLQ=tQ=_u8dc?hMOF{vQ5ib&5ig)DE1OV$P^EwzS&H zVIW?n|QG}ni71$31cS-#5^OJ?oN!(my!1V|*K zNlF3{y)Le#N*K&j<@&C%W6?n(nGtssYnD(0D*4lR1WV)h6x8Y8 zQ=^1S(_Vusj5MsM3kP5>me0$N!ikot-lxtRyyI(A1Wg5GR>I~l-OUdYLr3k+@=P+$ z6T<1i@0cP{s^T^>0w|%A|o=RckQymNHC zdw8Iy^1<)D2UlUR5p>R?O+?o!_OlB(QJ-b`IC~$rJ6llQWe(cXhb({B8}Z`+3Jh$9$PuKsnvq;6GUE+#lEbBn&|pJ=zaFHzR~*^DODP&m#Tq zG(D@|>&h;`3EAmX*n`zm1#JNX(jO*Ia@9Zr4dkcESx>=KOYByDCQ-FrKVwgP4Yl-V zWoY>qd(`PaZ*Nb}j5pGntQsAZ6=3+CmGr@hmY@@lvxUgc?uFsPGx_=2C3X{DkC~NQw|MHc8_}rZlz|ky?qbbScCdx18xl1DSY1 z`P0#lm!(YTev-#&fxLDC&+PsEiv$v1KZsTx1mDxm@vJv8YDaW zp|8ZgJcX&P8ac?)r_*eNMi{%jT#^QoA#CurLBPdLiQ~g|?;ke%4X; z1bVPYa>!!>S|lR@UMFbNIm&!)y`Z?$?_R65ALs8JRZ>=orUF6Z)(@$QYbaWgAmC4=xRm&vPZdd@O3;miaI7yNr)e$55ww(NQxT{0nIQ+dNCdy>n}#x#x`jy1 zN0m(-%{wVAuo-!fK}*+J=~`OpLYY6N^`Lp-ucfNg;!|!wlKR^i(3e4w^OK6&muS<(yJCUY73i$o z(tN4buQ2&xhN&ZrrnR|#mTqi>ns|5S=c#AHbF%Tk=|SnE$^dB*erb#^^J+~?%Sj=`L8~@ z`g(pExUiH6Xs=gIs5|mm(li55BNl4oK0=?E0sb+gKkn}CTn;#{_X;cE3|(QZS$Xe7 z`Dl#B7q%ViwyXMNlC2Wu5ov8UPts{75|d>-E5#uFBQZ5{F=KX?p5=i0~kO<9YcJg?6S3Kkn1Quu;}XKu>ZJaDV8y9KAe1L?Ek zP;p4O!Oz&+1D{S*o>;U(>phDoS}>XPs=D9;Dd+tdQ>ran8%j1TQ>~S;64tn_rEb>k zCLJ|RO=UqhYvvDH0ccoh*twuE*!X*1BDwMCiXU+X-K|`?Ot8U&xfeUYC=R^kXTWk$ z^bA*P>Y5lwUO8hhCq#`i2Szx9EiB0A@){02=_+N<{Ects5&t8^seMmCgEDHO(CQSr zx3LBxLquO?9J|q%XUr>onBeX<`OLFaJr4=P{`Jw}$>FoZJ!Kh#QwsBlNe}VYilx6t zn-B~IER}0a`L3OjwFhZhThu$LUt>a5X+FEkZ{1R1#?m6ii~!2zae&Wh5!v$IweJlu@*vf45w7kOg7*4yEyvbG4G`8}ws z$z$SR++h$*&WgaN7t;j&^?TJ(rOgp#w5hBRYN=D!QSXdztJ_0;8})BJrVAVJ7v8h>VM#RVJH zetc|(DaB1=4kH5O2057L%I!fGCqQXrjzEWQfsj2uQix#QmGIBSemuQ_Xkp!p>x!GG zN%iUFJR38?APS*f%mKV2*$Ce^n`&L}6u7_36}j&W>-e9#q0Tn5X-P)XfKK>ZZX0*O zaQASe9*OzJBC@6-br{=RDN!X|-H?QY z6>Z!!M>HD!G(@}KOh*JI;1)$dDV++VPh@p(NFw!K$+9wMosziIAFL$C#I>j--joI9 zHe?#>=NyZ@!Lis>_)(fXhkJ(yAC3<9_J)JwZvS|Qr3m&thgc2AwYA&cI~-8eg8lBn zjz=n$prR$W8E(I$9O0fb+dJCk3u6CZr+eJhTKA8k{X2Wp-5ojAu%ff0FS5n##@=Gk z>+g2=)RKdwVj11Ny?5R1PuiHH^Qs;{?Dr0ihX*J7dAAo!+YW}i2heu=Q}5Vw(7n5I zV?>8ld$&8-K0G)WzVBmE3E7t2J09~zzxU6R-arAsn9QG!s7|uf(2!>*AeJ__j_yX2 zSXvu0$slUs?KT60FhnTLr!*QE`djrdQm$o1qk_b!PrR73NeJTs`(8|^fi(JXvw1Ro zZ!1qw%QRi)Nq?`NHgW%kxPiL|A27jaMgB&EU5Zo!F~u&8=E)$qKpW%1{7Nq9Pq`^q zizDLj4wG?^1c|VO@H4Rs`5FiLHXKJ4e#v1agQ~fZhRvIZvK}8Z8Z$T_j6p<}IQSNf z=2`INGKh8#_xtEWZ45N2uY@oq95Njx;Ve7$FFwZ8u~@}OZ=5?jkyUo1$|_6AG7Oun zNHKW2apq!`pBAQI3r;u5SR0%^KXZfA7iTV3M#OC@O{GCK%#KUg9G__$fPbEo8X!S6 z?oy=L2+_(G!xu9@O>g34?Da;X6#0ra#T|BHEb~)X8WD4l295yA zQv{5#2u)1jx@ZWf$F2b+c>cg?w#8pYh^%o~?4eRRtc(sT(+?{<6EYYbRzio>$q%MD zH;&lo3#m>Roy&8CFX_%UI?@591LH0~p)-$^FZN~{EjaTuux|yg|6w>hTcD{qC%-jW zTRRUSB~Ow^(Uddq@x7vJOxhH3zWh8bX#g<(vV?VMMt~>!-Gjl=A?(bcH_*GWeS<4D zu(ar8uRE}OUod~JO!edu@srcayi5Bnc_L%>1Z z-GhdhQor}U*YEZ7P2ooHSQc;>a6?)44K^OI;dSW4T%wEh8QdMjji^(y95>ck^e=Qz zE({>QFXquBCaRqBxp-Z%)gFwB7na${a4ZxY0+Gltjqz9ul7$JsM;cx62~GuW>?r7> zKes-MpxH;1rW!z>e!0z|Y!jy4YY@p${IcZW!p=3 zS65dsx%D<6z^kB#$(vF#9#UjVbh!n-XpgWtjch2MSLP)e)Sst^!wG+MjGJO+|)q9)e z?Z&nPx(Wkd1GclkSGmfdTUKErO|+;U z=SCo1$7DU%Jn2g*SV_P=qlCbfGm!(4rp80G*&~lFiUcYZdjtcV`)Tm%MK2mr20xV4 z*kdVUhs$@10T6gVC9T&lsJz%lCw?1BavDpQ&mw>Y5xI8@4zgb6C|%iy8)7OIx7?y= zl(%D-0vC(iopIO12^C<_e#z@j$WnzAU4dvPR`R$+G+`oc|12k_K}8EG6rSabwm$J@ znvA?$AgCwSD+WNbmZ@C@9_-o_<0f<}7ONxn21b9?~66O~HkVt15IyGRv9_xzZ#4WkMsCri5t&&<=XJqS8~iF{GZz zqNwuu8}4HOqPf*b_{9!_B=n~b@MS_}taHDZ^UTa`Mv^Kq)7$SP5X6zNR>7l~d3Ih$ z1p@|Gc<*F)=L1&+i!n9U4G|?fuV<=3)|PgSfVreET|@FvN3n$6UA~k-b0-p^e{;_f z%0KxQAs-0%@BX#VxTft$y{_J*naK;Cyi~&vk)EKF){MPzTw>!!U(u9CWr6u83c_3^_+C>0>{wLt z528ZKW^BbMD+Wpt`rIAytcK52ZGkY)ecG&j@k1(^o zkeE_DbkpfnV=| z=`bGFff4;H>$>JZeZo-CDMH^<3LAKuKNlz8xo-d(aPl(~E0No}MR4Mkp0^8YF19P| zL_28ajBj1Gm5;cn$uhP_Gp?y{WAyS726lR2AHJy9WET&2SSx6 zQxr8LN))dX%L6dzAZOJnbD_GZS1_j{&!|=)wWv5pN!-QxZ!q58N1z92Hu~Q;@Q(pF zS|&6}9mOLHedans^~T$JkuIyKjIGUfOEP~3jTWhBmS|*bCuVPHIk88nZ_2aMSaR*K zsSqpN4s?a7T&dV5?bYeVS#vDjuRY&blYtCxz1HiWHae>MVX;RUfd%}-nzM>g;E%8% zV6r_Aqm0ww;-RlJTY~y5ODn(1tqQ93*bPB0klD!Buu3(qVhp zW-kgxmwt3nqJM#hb})O8WRHH|9qcx~=nDp~k7+8#K1n$mKZ6 z+;LB=Efcz?(E~PTBOF_ac?lJ?^Mb!t_r9DGyv25CG)&KhJ(>;CoD^K-1mDmzf@9hZ zn>ukn{_{(4K8Vp|ur>DdpKV)v^%hwhPyIq?EVvo!_bxz^mx#JWHp!Pl%{h;o#oGBb z2xf$(@Tw)6+XgZDsrCRaw?BQ)Pj%DggSO6b;Q6|NQ=5e{b*9Tqol^0J-<R(U z;&c@zg^wx{T;HlJ^~veHXnUBKZ4WE6AEWl4m(>0^pMu(duBrXqOth&qd1Ra_8{60{ z8WDxa7)IcE^GomD;1KC-DGQ)!`qg$&BS;3TSWrQzJXx6kCpb@I;d!cz6l9jrPqLvK z!!Iq4Q2^+5XO;xlVLVTVH?q?q;;VUrg60OxbwCkjrgD!tnW;Udo73AKP(Zgs|G;g( zy#&MyQ)u5hCuxwZcP~&m+IA$8dIl1H30x>afi=LJ-T+w?8RY3_45%>mkjJc}~_AJ?A%;hj!gVJVqyeBxokN&=U= zyMQA0RajE)gEwh#SR(x05}s;k*rx^juq<(+rjT$vyYPCTG0ujP|V$x0EvwHfuHM#b!9KspN;n-Of-S z#0vdHn#!|fraydLX>H4-wJoc%wlP1n(xM0f3o4EL>+k|qk*llf&n6K1gsz|D8=rNf zae^RGKiyb=b9TGo-v4(~{n>a1(vaor=9SRaaH16<7qwPbsn+m&;B|ljK5d;f-o9wQ zpcpu<1alzme%=_9+rdJ4qZk=Y7o7IUVpy~xvM}8RGm$(u?Z{$Nwc1K#@j7J&T{U-$O9zWa=si#7_v0pL)gAY&EL~F z>H)u2ml0ix?r;c~k(bEg_o}lmfx+UOo)uDHlvWz+^*p6=nZI`7LaKy}mss4>udzz@ zoO0BX9##t3ujJC#0;+`x1j|3DXJ*N_ujJdMS2&W7Tcmx{r)ohZ#kuPhxf!|SAs&Pf ztqex7t|YBYX~AH3aO4V;(7Ki8fvzTh`h zkrBRFKX^$QlVT#DQR41>B%L<%j>o*ug(?2k;a8{f=@c*efCqkfT3} zQ%eqvn&`1ym@^tL`{E=jda3~e2+Z@)+h3s`;tExke0lX*!McJ5g*g|S3N|gD4r~lG zv=t~NrK6>G0s4Cw6XA(c;>);s08GeO7AS2r0M8>0uPBQtw)=CW4{3~Kn;6#j#E!~# z1ds{#0)N6KJ}G@%_0TfaRr4myE*TocW|2)sjCGWRF%~qcKhRNXqyx!hem|kOZ65V^ z5Bt0D#qPmQ@7F?2@9HhY*SLlGe0HzkU8rqU^}HJQ#qE_F2cIQwG0fgvZvkD%TTqB^ zr&~rEqO=UwD;uRNVBF5Ci}1O8b?CdQ_E$8kKS~k?RU;d4lyuIY%iib(?sT49FVOG; z9Ld*!?nmJhE|W~va;%?)5#K7D(>wc|dPt|sGlIw8H=mv?+FU&w|C^c(Bl134KjZ%IpGk`&C;MoHOG7wD9_ zRn;N;K%X={ww5VTe*7MIA$0!@2(EAYvSfQZZK}Ursn<`#H`E$MK1Rp{=OFyFLV zqNXbva+C!ppIlShImKAeFKR^ldgr3;n{PZ&=v9?L*dcwZ;<5D^<0TLN#AE}BHC5@-2JT4vyDtcDw-=fptteyYq zWy{ZBTKw_~nBrUDHMg`L%Z1-92VI(o+I(|?|A~#yOW>eyFy{1BrrlH`o6MSOHvVOB zcwpgEk|rg(2L7s>TyU~)hmxdl(q&9xKh4DFj=SNu++r+U!@X6LX`6F%<)qri6h(Jr zj1XH}8uCYOFN_xj-$1raFLw==2cr(%$U8kNCE-)$)k0J( zcVL-J5bjgG&*-bhdVGxXrR^pkE@5C5-MB#UawobVYu>ZrW2 zXle*u2c&CsxkY6?mP4hK2cB2kaHMawrie$iH~aSaUaLhzudcp&j>W5CaGC}FfswE9 z&)OQB4Y@r`@@;Fg*Qoest~H9zCl8 zP|c@ftQotxf!d=v)`|aNnt)B#1iXG(E+@Yv{#@MKUlm>bGm<9sUm`EEU0T*}jnm`U zg6$ld8rA74_~^3#({<6EEoXR_lijMyhab7^u5YZ~thsV$hN-4gPC;89Fb^3moiu8{39VbM_>@|Lk zYl31uClIP@Q7oItM9z*>>xR~KFGgnCfaeFOZZrH%g8_DPa|A~&d%fsoFNRbjSM z)47K~qb(7Vk~gR2Q>{1)eJiPIv<`*!ekAHg*HfsypnQ5B!tw zPb%@NFnFp~&HT=&`_6sTwZ0Hb{w16fki+ImiY}U z1~RtkVSIrmV*^)kc%>L05eEFzkeW4RVP;%`h(Zt^y`Btyfh{9Tof&w=IiisJkX~uj z2oMaWrlhZd1{=@BmtqH2>LK8o1aa6CG@}Z2GyEOm-~3QwBYLXTR59*nqI%T1h)7Gf z@`MBvnBjdMT2*u||1O;PB*%$#`N}wP{-2RJv;xBl(j>|aN|VeA;)w7YlmO=?6?O|O zT~v`MPRR`t$#jY=kU6<6u9e;v{i5eIARK&TM+&r{3Kg#E^l|va^0B@ie(kScvu5=58&-_I zX0_;xSLE4V2RR4znJ=IZ)Kat?Ot8YF{x&7oCHCWssqU^TVxa+ zHoss9EWQ;fFB7FvO7Kq`@KBK#blE)wG)*D27UQ>m92q4-QLR-YHxVVf60&a1nt78^ z^Kce0JPhJ_G76eFAaPiYHhPd*CuBE&YjdCm;<-4n;wGWz1Rp*+MCr>A)4XhQFO^eF zN(neeU-8wK(pCYIrE(xL7reL9GWd~m*ae%U{FcjLii&s0QVW}+*r&MJ)z)3-;$d!rCn%uGdXB91 zw}X}mR*wQ3?v4ScaL_Af4i zF$n~gtrmA!i+PO`40u)kjY^9K-6a?V8WtAvy0MZ_FWfZ=wcEMkHa2><~eMzn~~wc!QZasxMPbYd??nTG@_UMeq&G85yO zr(TK;Kr)dHK8L{#CesrN7dZ{|ONS2UTXp(mUjD?T!RA$i>9`$>UGPavnuA3&I*P+6 zQ;dQf60v#+o6A#~3U}am3yVin3F#ILS?N{cs&3}z82~%XUhXA(q*N+HADn#$(C+td370Fb_q69%M=pn2tzVhc*T5DddiyVEK1;?n;D^DxX4Li1AP zuu>mknR3A%HCzYJp*D^K&aDyPkS>>>4y3Xs^Dl&wVFn#e6ImiGNlr&+-b}Jxr_Rt> zo1J;1dp1r>LQgc9C}@fpXaTFU!8oC@p&J7lRO=L;|JPze^sQKU3sj1Yd?E2)!aCh+ zMVM;~n~`q$#WIm7shk9w&;dHe3vf!wH+?u#Rjrpa6#|>c#5DEB-JNegOL0VV0LF^B zi79n_RTWbean=A{#AU=1;$f?V;;@sVKLcss1XyvbA=Lt8y_tnX2M>YPJu>M{?E# zWQ3h6gYDtUx{2+8i)DV9*4oHOh6QpksJ;R*O5Q}wH@wgFw-vJ`pS}#)`=Vmn#%3ZV zE+A`>(2c5vmjF^sEm9dcPE!TPHkNG}*3aE(8tr)Kz$XtEdS_@=WRNU*Tojj9Y zRw_JL44KyCG=cwuf`B$Lk+n$pEg5Y=f}5#72|fg}W`=Y~pW2kjL35E5GnA%DHGvk4 zXrQt6k?ZVZK{P-)n1`k|L*WRK3hx)P@USL76W9q(m9wn5DYj#RW`FSev-TNd)gAt`}h~>7y9b{?GCkmyMlQbir$jp3oRmeP3FWO>1 zR8vy)**@=HdSdJFOOz{hVF-3Rb>}X$%28t|06AgWv8|83nl;n@INFL#c#c(wzAi#)}I7$BUf z?E+AmiaO&Id=i@t;>!K>aX%M{*HYnTa6?g*<}H4(1xHj;e~sMH!xlNRwTVmWPbQSN zf~J|t@NC#}WsIdnSaGfbJEqX$?N7s#L9ajj(%(H6+LV-ZV|r7~)=*JU#5|6YCxM); zcIorL_0s&ATWb_aOu1bSWU^b=(Hlq~7F3jwY6PfeGKFI&PERzf;lxszpIbMD7-LE9 zk{wo9YHAp6EI~cgEgO-32Jg||d_&gOS{tXA*8ymJOxNebt& z-|K()3#U+pDzrPPuDpI9E{+3*H>U6%lVq^)YbMMzS`S9 zN|W#uj+IzIDJ4ksTNP@Z?$LUU0(uh=1D!;k-^Dnp>Q%0P7N}r7Z17S z@Z8m7InbKZ$Q>Wp5bs-v# zm~S)WSXf7-eQ%O$jxqXQWi}uTcj%JZp)Nj-(zx>j!E#bNLuxsrX@{&XS)&noSF%u0@vwE z$6mo@ieFgllf8ixt@E_03X90SN95X(6D?U6a1mbCk-FfLw>Th4)XIar#)}L=#JNZ5 zI@d;rDCBa{7IQN@YimOE^5r(4#%v%{vHw9Mj}X`VS&4H8{!15Lq2F|hvD5Kd3$Ecg zO!ezM2MdKfIbWpr+s4qvJo(_ZuF#Au4g`uIl^m?tPn^=LSy&I1*DVkqzi=#B8*tzb=fF%esU101!9n)US0YD zTNKYPE;X}m$|dEgjngo|=^&9s!+S|lt|d>TqW?-y3L=6~f$VZE5vDeK?P(cb+0Zgz z3=3wnB5>yrfH_|l`iN0VD6vbL3LeBOY;h6S*ni%Ym|mNn$TN!3*_=~3bqkZ%X=IUV zSyDXEROy>^Ij%KmZ)9je)F?(K5aFyL-WaJlX3JA^h`T-la*Ru4&Z~=ID*S*mbf8n5 zb;}j9P#q9wCBD@rC9RaOosp|OcZ;a>yr^rE_O58_G!oIg+lc{rN4RN3c=;lvBnr@p zQ5Q)rDj^B?#y?m<+F%CqjS!ID2nJGQgBE3p(R=oir6^(`pCjk>5bLO*PjZj~Ftuo1 zUZ-O9L>TO>!*=uKezybQOs&4M`n@(Ye#mRR^2S4cQK z)i5JtlE4-vgi6dW-|Cf7L1dQp)EoP}Sk24?ddUtDDdp9VVfEvx)$igcV;*Ikd+?Ta zVEot}7=Pyu$mRB{C-TT8oBB{*`vlfL_a;JX#@-@_IMPIT8}T~nc~^TrF*R@8>|Pe# z5+qzDLae>ap|JCWR}x5G%Rb@=Zij zP^(NDMi#5QQ!OdO2 z0{d#H$CbktlzD}!zZT3GqEDDGAOizXUL0V%SgxvFGw z(b3(bOx1&*Sv#OfYw91lT zT)B=$hzkHdeHg%V`Y_gZcL-vD>UJU6X9L5|8l9mcQ|2~|vGqIBpRTSha=rLi6!|hV z=Ua>RqIAcq85-33P9$$SY&2lwIy&*Q;Pq+g!d(IwbZlFGUA5&^h+9zva-(@)bc@s7 zPz#KDi4qr6rtF&D#RVe3-c0~*xpSfj1u`_WK*Qy;`c9f%nO|^ zS?JhU=*R@aZWU!zGHvpZOzYdGZ779OOAB3SX8(>`lZdXarWNc%YUQsC=hYi_UQNyI zQ@e(1^xe2bw}pPu3jVo&a)rfU-u%?F8w*CLNfa^jmzJ3MKF@Zf=9O!u`I;@AP*lc4 zfvyu8$(r1@eM=C%&b%4TFR*V|(r6T?I?JbOfYVO3$E!swh;3|Rs8Pi55e#HlU^oga zVNA1F!o? zDMe5kk4d%0$aPphC7;!9WOhlVzzQd|Y2Z(4Sb*E1Y$;3BNFa-ky|Fv1V#%ikz0J_r zNq1ot;fGcco-zFb>%csQI1KUbEtn53V0K_0Q9EW;vM^Y>qXGE!m~RU9hMbVjHtci^ugQ5MuvalJ2fPgA$doa2bq z3Y6T4stk-j&YCJb*xzXRQSIhSVZHoXmFkB=T{L^0H5Q4I1V(!H!j7uomU&(%_3(^y zyE{9*9l+nE7uz4Z2OsRO`n~^wHdRddjgB-S<) zy+m=euGFe#mm@zyWJ7&X^-00xBxYRFR}4`g&81}6ecB7c()M)&M^m-9hUoJ&I?G#( z@~xL%1(93GyXYG~b7ffNHrggZvuo(_t2C3p)|oiT>J{}l#$K(+Z^l3nVHL|}FM6$> zedTbvQ$}(71m(gJS1KVgt$HO4f^o?pxI3K&7yc9p)_EAQNidc+nv^PjuQ|1NG@2*C zwA6gmR>MPII8Od0FpztAuX%NGN9Ejk!q#ZbM-HzkCu}OgJjY*l)BTSNQ)sZO(c`(3#_AE>;3 zpOeb0e${JV>MA7}%MybUoQ?Z&jg-4&5j4)da$kP&YE3{lJbs*poI@VM(~UC? zY^nu<9~Xo2^07=oQ1Z6F3M!rKl@X_2;jnG@E~|21xTKg!iU-Yo_X4X&uJSsqq7w-g zHxo`vpK~7obdnaRvPcV7SAF5YYhd1ejacb9nhRem3HhHWb5^i0m?t?~(vC>kgRQtP z|AAIwCzkZ~xx07LlkW?mtN*m=g=9uFIw<7fnbWl=HxTEO-D4UaV0Z=J^hctVl0=@q zI-5(}JVC83nt95tFw3NtP#h2#x!RxnYV#p#u!zAp4kP=abnl*YWe-CW01DZ z)Z*&RR?x2J8J$^pJOZ*FFrU9I0cHvC$a_}y>inZPJE4H^bcUOS7Eh{rD6w=EYcgOr z-k4ZvF8#;+?@(kL&$Eg%`qpaBRRcfbmO^W7GC(9vrppN0$V(7LaMTJ-nsFgNj>*_C zd{3q8=_~dszom|AvKTb#cNm-t!Cz;y;03raPRbpRV;hIIUzV&38z@~SW%JdGoAp;rt_La9zx zHX3qWeAjL{-!s*lX=g6=wL5M{?sb@k=hL8#`AQNQ?D9@{%D^1Y_hi+=VtTt^#7MoWwA`w?Zx zL!V{QfkZX2T3aOY*1#OFxHoA?TY0f=%)lv*fs!^#Z&S5j>#dHzx;n?oJ<_BiyPltQ zrt)L7DE_SKoPVP11f2P0%ZF~;{39o^%B!e2=LR$-leM_T1MU3`%>zDq;#?>Kt+Oljoqa#Fx0Fv4aqx$ zJ!XnfOeyw2x-`W`pj+zQU1&r;y%VV=3@j=$H-^ZZmGYEOy@*ih>@by(meon_ik=@s zsA|e<1nMS$1LuY1SYU!H|4*WF?F16+8(go^gpiDk66zU*7`& zC1c+0>6)ul*Gc7u1tQO_(ti}4pbZmW`an>S7ggmbC1YPCA{e#ALH6U&c%<)|05dhA ztxGLBA8>=%dpPzbb53y1VM(!oMwNzDD68(P88O$078}}$`vPjQZo&^5x&&g&9Y>e) zQ~)Bb(*ptrECtawU_F#opcdy3bA1B4WYcp+00Wg)N9B2kO(|ct{9eLc={$%%V+BVV z_S{NzTX@?SuwXo0g4ma7SMp`JVda%ejC!CeUbq#uBfIm&){?a)5{RRvx+yFfP)01K zb?5KWJY6AVbEnXpW0%6aJN4$J0SyG3W8*2h$13%;5CCNg!!t@?EAKe6Dk=JgsCwp@ zSX;Lwrv}=~d&yHPg8VXKzw&J%t)YQ3+#-j8KE~suSe2E8H7vP|dVTbiyP#^Y=3{s4 zak7Ho8+s~^S65{g!?#JNv9aQLBXYFE=fszfi=T)yD#W6Hs`PN9st0A7-CkK?W*18s zmx6=q`{5cOG=iWONb*^eBWqmXNW*j(Z!`36}m98#c*#q&Korvxix5In&)h( ziu$5H`@twq#zuuU>K8G;>VgY=8tZO6a@i@ZTg^oo$c!z(prIvuFfv@~^}Y)mVh$sm zigUAP-hfk;NM94;9HqyJzN325rB3xpjL}o|UeCZ>P?UR9k%ar9FyCL4&iYAWFU0$Z zgwA@IG486$RY8m?g8ILobA7}(lIc-HS%?!`LhLxD3(*7-<6`lRed$en89>i3dW z>rxEcj4^Tg81)Z@08D-zZI_3(^7?= zaaj#)X0erB#!3>(^!)M(OGCMCHHWgqA^=%6gSxse7aRmD(5_lbVsle1uCFN6RN3f- zmG&Y2yYRls>b(qRf`ULIBFmp}u3*lXuDQe7Ku4ri53It5MT#w#T0{eZnku`B7bjIp zUGhlPfJoCrtTZR}(#$kmJ*BO1+#|i<4cBdDbhGp>oVzU%5M>dll!DNnnpn^LW>J8d z=!ECFWxt$i*)oS=N%F1Ej3qx+Q?w+;uwAI2`LD#xPbzv6G=#@nf(+3;1YHpSRgA&W zoc5z)=GH<$ig+!OT9GnAd6Pc^1Ta+X)^tCPw(4`Ups~WX&XEdWCd9@H5Ru90Jji`{ z(I6Ab&l+tMnP9J^2YZCI2NI6^(Nq<>9Lr*`7v9}bMt)<_q8Dw}Fjxa~=_~&x0~V)0 zisrsp=G8>75MW-0su(l7>rV;y=};Pk`Gytor|`d*^AcHlVvx`YAG!shP5aj$>S-BXQG37K8Ozm)#kCRMMlI{rMn ze3oJJ^(fBP!`z{my#z*>2cZsfdwfxMKEwd}l^@io;y|-jJ4WXPGGnGh0BY2nk_=N7 z9N4t0Fh%N3<>Z2r4g$zOt$=+!_CzJ@a%w(()$mOhrbge%FDi2OeRtpd*~8t#hJ=&F z`#9N+;QYgJ;mjntd16*7~E%3PJJYADB z!v||mof>*TggjQWb__3T^K|Y{rwdGZguMd7TEz2&db#makqs$7vQeBQa0b&wv-Y&( ztIo1+@x#=I&X5uQ~AH2FO*2e12X7vW9_rNs+4*QcE z_#<>Rq2AJ2Fv9u~uu@F#aqg$VNq-L(8IAEfO!q_W#GG*)x`|KQ6mCj zU^bHgM{8ch@x_#UT%I+b0_D2#(b%YE{FXOD0Q3(;p1P~cQu-5x6%hep1kieg$^ty@ zpj2qXtY?eJT2qs9&%h%CbrwIchP!kop z84)kT1=5r{Ka!3{z;vHRXRgQ$#KFd+}P!pgb)a} z>&SFx$ZOPrna{*A=ARb04Ij81UQM@9wLZT|+LDznEe-9?OJe$EhDjSqc`A?p9V6zj z3>y_Jvm2#h`O5j>+FB<+yOj-ba&p(o=O^BvGZp&W1$FHt8(a1KH7{8vkf29=YHg}T zey`F~6V%BX7UBB3>7@Bj+zao4NC&Z+LzRJZj(t|>49mMP4=WN#;|h#1#ZCpVNx@tB zt=ObMZjwMub3|vkzR=6mXo%*Ni9OO1>-FbRM7fHHoxcbY#8$-Ellv@X;zt2B_%;fN zZTc|x6O>)=?@NTu1TIq;ISkBAMq2P7Da+4a+$umg-++XS)4RJ8h89>VMQ>#>sl&f$$E$AhKe#a z?xhaGR5d9uN+cFUCM!$kBXkVT?pcY2;i+;Rp1?ZMmRKaaf}_F*E`!!A|C@BXfRAv? z{}TR2R^VmJ7G4o(OUT6blfK3y3&fP}n0x97^Q?1*y1iV@>&zpb$=F%(aH?{@_JT~)3r;S#T$zF*uf3lczZ1XegRF@~NC+os3J zqh9312lj<2b*MZKbVUCu?niZ~DCH^p?a{L;zB=%LM*uDajJ#M&`3Jk)W^+Hp&C3CKK7|Vm~?G2Cn-Gjl=VgGmlgTvOBYtx=4&38$B1N(gxPp8{4@Ojh#1j;YL z`2eIyG&RYm7|$62F-Uxl32^}*Ou~z~{Eg-=-RP-t_FA=aOUJ9L*2i#fy4QX<#qO!- zE;L-Rx5QAiFrKH=#e4Vwvs!R~?~QDW84!?Y-rdElj&g2N)Lqq1`g=7v%CTEJpJ%mm z-i=zAVlG++xh$3`7i!R5O5LTTu3m7=&Em$V`m!7)lyLCF2zY(_F6N#_!jBc3o^|3T z2o^@mG_+y)G@*c-VS?$3HPsq z7*j-WS82_cb13G=pU*B5e;imxHAj#mx3=Vvtutv%W43Py;rA&PGYwLup%8dSzBrg)c_NSHXd0*NYb0NK>n$OMM%(z3$fwnVOMPmS%Pk!T zX1`h04Bl4ESqZ`1ffARsd6qmJqVY6P6R33KuQLn$On6da zxx#Wkp{)~H;QrC=%{VsAPc&<+=(sNc?iq#Vf`qJ1Gy>qNV>7(O!lTDFCPjaj53-@C zr#K@x!B9KC&^$X=Y*xoM#M&BOy+%jf!6VEH11&~Dc>M@n{r};H|3`4cIx|fFD8Dvf zH(p{yRt1Y($Y7`VV{UO*Dff;G%~awWS21)tPIf&2E|j#T0|^hSU^5vFeOiCTTbR*JaN{t zcA@NmndTu(cY=vOpQ0Au(Vd-rDvuscYGL-2Eu(&I%uTs`I`RSz*0(1oDw8jr5K9Mm0V~_&YHjGAQLRhi=jnz5~8NAA=2^TcGN|>z1w^4>=$%hSMJ4@ zg=aA!1AfM}I_XV->AhsB$Z=SQv75iAapbs{mVhk4_K3k=Y`j4BU8Q(&15-r~Z-DIy z>X_F7oR@$ec>qPk>xP*6q2-aQKO@$h=RRK3W7!wOkmhcWzsaj)@(X9LDNhE z(kU1cZ>f$Job#2Rc~0;R?}fu;_*3rKQ3uJ4oi$X?p$zy8k*#JkGqvrcBwE`crqRvbfrfEq`IlxytVwYvI(D(z7_L=7k`(x5b$ zq+D_|xDyGJs&TW1-OkfC0BMu|#9(c1PY>mfW1vtxO@`18#T)P^KYN=S8yJ_vKi@vz z*Z_o-EN%nOrz_9{BwR1_bw5HgI>LaIH&`%1X=3IlFx_7UhX=K!GymYo;KN&zDp;VBKy#XbHm&lh*h?yAuRIQk*!V+dg01pC{h=arxKFf6h8(s zj6Re=4S{Wx`7ChdHhHhVpq;-SGvF2cV#cU3M-*<5|-L`qtRuY1mg$30|^j?KLL@Y zC0BiIu60sc>lDAUuJ)>8U#q5gRqzErF1e7fw?L4qpC`f%b%IIvuEdWk{4o?ihWMi= ztFPjZh4`_cM1A7N0sgoaKd$k|k@#_hKQ6?N3;b~|ew@>wG7%bPG};d3_PPa^rK!2Q zW*owCSZ^3>A{{m?NA!t^&C=a*{60+5%%Vgr^%{v@BibbRXFIeZq+%F|7-rA^w~f-@ z{qV6g455*3(a*SYkRc7C*g@o;72AwQ9k?<&q8<^+!5QH}gIpO28Wb@hDFwd3&3*ht zu9r>Z2q&TmRTz>k=5j9Qav|n&Zk-D`+P_;o4r;DQsa3jgB&9I7P`*rfHspY%@(T<@ zcB*O;)f^6vyZz%KrGz`nZxCM|OGCtFXYxMD)J@lB%ih6`(cw`jQDdo@*4?@4ZUXE( zHrw0X-#tE)7hcn;0MK=a6mwoGdSsIBI@Ufn0l%FUVH8f|RC{>lCHE$-fc7mDykQ)ZjkcMqLQ^!@9rtMr$w4aQgj24Wb+D;<+ zY&)TY)4YLc%HwT2f_gY^0Y;rCD%Q!>VbXcR*)8211f3^e1860W7uLpv+Hv_va1CSp zY3?k{R%1`Jx45_JB{CH>?VaBH?#bRUvvyLYu4&wUTvB`#XG0FYiaEkrQwYClRJ&^n zA$M11xHQmI&`@G%pdmjc;O5-6eAo}MbWjmyZ8EDCYgG<@r_$Ow-r5bD6s!=WBGXeL z#Pja19#O7bYfzb}0$WO*BfVv###Yb{n$i3!Ps8+9EOJYZe^DyvSd14_Q)jGr7>bAZ z$QG3*>p9p}g)(im8565Tj8?B#ONApbrb?}``46$Mx0$(Mwl*6@)8RWfhVL7PmD?gM ziil|M!!A}O($TgTq|~E0Rj>rTwX;%&9j!gd`-LyGWQs665@^n;v%2cb6YWT?X`H9r zapzhlmzDZFpEviblDJk3pElll8|`A_)U~Y+n>HF`mFwhToCV-aIj>jBdA(eJZH+VE z-=e;{yzOq@kt%yweI0~CSk!91lz+%s?FIb~kzjO=!u85xm81pqOf2j-!l(WQNYBl{dQIC94r)S&^B4T3r=+7I8-)WHlqiX_6Cp#QWobcVNiUEYF`v5=1^AMN&dBLtWELZo5I^)rR%+=k zygV{JuS6inamSJc;DDMHtQ1vW5C~IjjW!%VZNNo(pwC6#Cr<5J7}^(Gt@gCOaCse* z)zy_quhew?v$vsV5?t}-tE=-;!Jm4%qy`B>3YMuF*{>!QiF|zDW>J_7d!_|lc$NJx zLEpyG7D5)*j(5@6sy}{idIcFi7iw2IGAaD45tL=q0OlN zo!d3$(Z+I8-?buQ50@UJ{mu9x+}mj9F)W7I|APYPj6Ckb<70D^Is8qwcC}i<>EpSu zcCoGN#dEfG{Y16ou#X8f#uCINGA!`tPe8(S{akPwH2Wt9-o}~dz`u@*4+g!1W3L5I z@DF|@tHbPgoA6xy%G(bQdcB>&u>0-1bvzyn=#2z zy7Uz7>9D3I1~fLip||-`{?OD-hAo8d&kl<~^CqStxi5c05~DU)k*uVmAGB6yc{9w+ zj^4|H6VOJzcNYTH_k&3Q5GGQ3VXc)#6Pk!34M460^3y(s29t@_;@-XRWPW#s=XU1C zkxU-bhWWAOm+XurQMWIfdnda)st5t_LX_2IFGkOkMLTujQYQG-S^XP`qOVYk} z{qr~hPS8)|h&vRnWnW}EdF|P5G@EBKfrjzsaGq(e`u@$bw?P_D0VN2R(JLlt`{*Fu zxoFyk@~&vtwmpf%>Q|U~MP&3-s_t#_Jb*TGd3D5kRWoEWZPj}*N7*Rfe&#N?W|H4T zHKY8dZlAns1&j-JGjgW|Z5?hwJ{WrtthC&o;7x94O|o$z8z|!TNz-Y7>4bb1+BJMr zV{DFD3fyfq>VKljGUmB@VODz7ih{rwp?L5WA_ z4c8G#IBKd^o?7_%qNeRmv!-(VP;#GhbPeNAS%>G=Cg^}208PF+4-&V=MLs#Nf{W=g zaV1R$sK&X++|9fyT_Xk34lC&n7hn;KXfQ~-=iWJO=0K*6;>twqpdkvLHQZxwLNpWw zY4k~f-GW`X0Ujh_(A`0JOGHH>1)|69K)Yn+J8}Hrg}BLE2o%BdoJkgW*OPlfDCi{B z6Ep^H`FnVvBP-#o_Nh9|8G6|jYJ$D6j^6Vn48LFDPx#Prx!JMM!i& zj|3|47#ZA4gUr`Z6bHb32*QUcP<+48GX-X5H^cc84~K)-OS|^9cs$D6mwhSG2lC3F z+2?CQ&%F}+k%9pE1pa6Q%n^wwIQIz%=aaXY^zxp_$m*e&oleg3eH|7y!UdeVIF50P zHCBN_$cOD3jD3}&Ycg%IOsfmZ*yTBOS}Pj75TVaPcbNOHuzF>##OX!{Ig;xetCix?hrDxA23b5{`k z-f$<4#yz#tc$51G5kO>;T)eA@)Zm}x7%-FoO0ni3k&glCwhf$FQDI;#EukzZbC`oWKTQd|r@_ z{^07+{TX_}(wcQer0rgN!|y_(nAlC15LFY z77{9MqsK0wK@D@JClN?0NKpZO>itUOi9Y$~f#j}WENzY20XKT+uX5mB>4yxPHkSxQ zu^&1PxhgUp7<;QMDOZL4Y|yhDTmS4S8B`AMT>0Oqf%7-UraeDW4`_>~heN zV6*X%q$qS$5`|#@&l`VBQaG0jOmC|Wp< zOkP;%)NZ`e-t8`Bi~A2Tzyn|%^W7~ozyr7HrDTBnZgEaI1MFVQYGBu@9Met1Z8fYg zQf7|@0F;M-2L_L9?@$N28;&j~2$vuWhX@D#7XkKOYS@?2r3@J`LSQ`#&$_TudmTsR zDX;)HYH6-;MD9S5OkkYxw?^~vp2}6h-92C=c37c{!H*e#b@>Ka#q}K<`R}@i7V;m7 zR6pjdO60%g?#PpP@Cy!>I%wcmoIm$oiV9MEP-Kyjc%&oo65WqrBq32%$x2^L5k^Hv z$})R9q0o+lw98V8ES10)9)smH*`?FKoZgb7$>7l7qrAR?(s)~D^35hp<@I%GHlIUL zxR5Kg+6`RnrMRB)zZjEa8SQhCENcQtVu)i};-#dK2fPC1d#manhRBqNg080_?D-PW zD3YtN3P4Gz-k%Xv4jMbm9Go8J4J=3IfsAp97HK$V9hX< zj`(CJNJk*k`B7H!kqt8cX*-h&5XlPsoTwAM-U2CSqm$-*Y)X7=x|F>}y||^xR?czx z=-3CHJ6#Yy@tu%O1y_aoE##{%!YD#j0T5~uS&_x^z0}ovFAvYJb#B@rUwSPFvp78x zolm0R+YGn^44u;W4Q_^FGj)kR`S`W2u#K^-5!Qj2HrSaS{FKzO9@Fe=8#wVE%!$EoEJwq>mAsz*Q-sMk>?e zyQv#1%{I;{FHsa>I(S|Kx{s7eWm*WI}gfo=BqJT_siIw0GxX!j8p(q9) zu+AHUAM;d7(kE98BDecpSoH1~O#{DNT}*wK2gzxBp|2LUH3a11?nE8Z zi%3KvYKV`#;%D`f5W%AGG{w2&V%OJme3nU5G&U_1**mm}qfh@UNXZFmQ8WzzZ z?L>Gf{vl#CPeMUM)|_X;W&V$1xJ6`-1{95pvq_8uUS{i)LhE-%sGHmxZYhieFu{*P zGWjF4m3;qL!DQ#oC4lteLhfz-LIBeTV3%yw^@x70!D(=2K^g1oIm&3XvG%FV{A+#+ z6B!1U@7LC}@3pi>KrVhd>IkOS{O2!d}8O??UCdvPNz`m@^E!1L`xt{03pR*a^<(7uzt@ zIWU3+XyV)>&0m^f=26zVw2*{EYecUoZL?^$yF5p{{#mi9=mr%JCv2V}LS-aT(7+d&ULZ9?YdL=5XZ6Y+{?_J~K zK4Prw9(N#ree5S##2_KzcQ=~E@V1bo#tz}7Og7jrr)jZOu&=3G`%9n@kd|jc|01Tz zh%|C~>PoJzt$#-ro-_CKr`Km%A`c@6kzj3^ug{Q**JSyNby;3UbPLx zfaQSet=3O)7V!V2cLvf>qL>ER$f2A7ih51CyENU4NL6~C#eSW`8=F|`1SH>N8{H*D zscT~Ifp)6C= z_+|HC=kQA#bD%EPRief9Fk0tLb6lhOz}hs0W`mE1Cwn`?ci8M>ufKcT+i8nzR_o`% zdJNwk)9P|z_zHS%VocrT-#CSon9*!{*Z~L&{?`mp;8(eB;e;r1t-pw{jjYgvG_=$;%5PL41oW)GIr zKm0Q2_1g}nx1rRW0W60Z497hlDo6hLxps4dzjys zZS^)VspH}ML)fUcqqm|GWfQE6r`iv;50845_9-G2z5Tln!;jsAojtf8?@tc43ovnh zvCgS7lXZ!^G`N60;+sF*-rGe5>ha-lfA9feS6uw{5m6|Z=K587fwzKi0JQ7()L!Gg zAS3{-l0fY;_5U8OFRvYT*Zc?unZO<99e^!1zZLfcMlyFq70E6!3FYKd}5U0wS^2U$Zw zHTVXUzueK_;Z6ibsxeA3I9FfC-yE)pM8LsBucahPHQ8W1SCKQ47GNy2w`Ej~0mwvi@z3Np>~I1VV$ zw9GG!y8|HjG|dM`m1)Yg-Q*tC20Nd43_D4~I0^j)r>&&)MWTrSx+SC!`uGx1oj^t< zI1kAK(PU)COA`>Awc96Ral|MyI~CkBTvpLT7_3`_XuTzsAjCnHDJVokJMTdi$>dXn z1>nbi#8oD1HCBes-z#BS-!SLA;V20X2>rUJO8>xj6PSoazdVb>|gW*#& zj!|hpY%c3q=6j&gVgYQ0)t?7A8O%#gY5EXf(K@dDF#@Len7gbX+O(-4rosHKYVim& zJdR=c@UAA?(k8&*bA&}$1JH&x9N?9HXq5yW`iJ(puTK>7I(dt$hQO8Br>(O9#lHPW zmaELu7t%0req1p$!pZ9!UBxRv*T2Pc_Si?!7iVV33iU>fKcd&zxk|R#z!eCrM}-gz zr$%)&#qF|lANuHs{#3*OZyljR{y>cAg0LSnX$!dtRfEiD#A8+PE&{gbE&E1h!PSiO za&m7Y-Cqvy9OfIv{Z6$JW&Ka;(-^PF`z#x;uvPTw1H*G0%kWE?C@~4b5R|(=$ligZ zdy(Mx0v~fo@#ym9@A zBH|Kg+-c?-6h!s%{d1&=RdAaIDpvY^05Dkwq>PCTjugH}%R77%&o8+8=|l7=&#UTU zdwFmQ8R{S;qOeQQIitmSaT(>@1m{$L^~#UJNswX+>ZkDCkiQ#-z;`KI z>(kc8^EWS_zuwq*x$)Ce$x0}#QVuUUn@60uohI>h%r6WFIn^-l1UiP`R5Lg-nr`C5 zT}<+RbN*TMJ)56T!%>YG?ixJ*i~Snxznr%AtQ47r^j#YXF44cznv`6Co zepZ{t@z;4?7uiJNJo~&`ou9!(k{BY;`0O~V+j4C-r43}@Pfor)rp;Pp-yv1_e zY1?H7X3A1hc6>3hK|iXBU{AAb;@RYxrc{c=QY(4KXqM*gJjUzHGUz z7q8vT7eBe1o6p_WtCqX@{H5Fa34d?6_+-<4^TOSPcCF{|&l~rrP57tfzIX*Kf1>|d zKfQKeZqm!v>*wxIE%)VXx3vj9!}o8X-3D~93BAH+uQuQ@{P%p52ZYA0*U)rh(}j^X zUu@!soA~kbH}2+3{166t0X?@~yEw}Yck{LT=8X#@Y`mf_Ux@j_FKqV{4*1G_2~XcZ zH!rc##+f_uZV`ih=89yPQ55Utph8nH6fD{W^(e*_Tza>?gPo(pUDVzvrS9lT z=yTzWF~;S}al1!HdqU9#!fpR^uTR43*fo?(hxE^&J-K&ho&)_12~>ydc0C*b?1A(> z)lF<==beD`xM`Ev`u9FoJy;l8P-j2?dyWAF!bu>jENfDk@q?}V&8%IQJ;2aMT>V`$ zvdbz3kr#4ukezp&pE_vnyrV2+ZVP=80e9e}O_+v88CfZs^b&R*8w#Xu+WGUQOwmMJ zQRXHJ0+5)kPJPB#=m#W9K(MZu_PsuHZ{c&cFZ~u?N9Z=2G$Fbr&RK}iP_B`DTTe%amRLKg=F;P3o;T#NCF89 zjkY*U>0xil=R%X+VQC7(1#dsy{MITqGWXJ=@>jGM83 zNa&vxvLn8>tK|1cg`R^($G5^+RE9IZ0?v{$oZXkaK>pKPAQqcGcCqQ-S#10tT`c+9 zhJ;bJ=ShmW5dP*NYfdZ1+B;Yjl)c%S+TCXV#gv^-#d{3rLuFqWQFL!Rsi(G`Q_S>n z3=D@?wApF?>9IHDy4FC8>dtKQ<*V@}77PuI=U6lXpQaxD87G*GbBJczY~eXr8e$bD zJ&S>k!OyHIf6(($vLIe-2#5~e#^yt+N8zl6RJb`^^PE*&?;yaA5;l|hL;yYpfNhf$ zvnI{3K2sf}kO&FXJA3GX(efDkr=H><^m#g)8GKJxQ!5KR;_0lb?LEFyJ;o#VD zFS%#nf6n9aqMha?fC9ArUN$8)UUQHPKO3>3`rRt!cOAxVPfNc5+VvH!A>hh_o7y?noMW$RmA)BNE_P zzN-VNc9%BaTbe^#%*7R5wpHi%ML@2Iz7G_Hp~IW{vAR0sQa(D+QVaase5*j6-t(`* zB`Vw-HzF?zijcS!v>K*Pa*->i&`#8BTpYALO~f+9M^fJ=W&VPp<@@RU(wOi|!r6&w z((NxX84%sQ+R)|oHKBdWVX-N%C>`A0k&n3Wq2J1x5?n6xo+ThR%;YlVGkPQx4j@s% zxrqwSO>eGpofAM&1cU&x)m8qfLBKuT%5^LR6UnS*$!T38CJjxDLr08U1JIC2m|d$9YB@6y;0;~ z>9YqQ2&4WU01G+SzXBbcIP`Jw+4!!3s&}EoQ3rA7kq2H$wlK4-{;8sNKoD*6rS;q; z67m4!6u1&9uT}ac%nN&aA$}t=X~lwM#EK4;KGjNsX9A`Sh|m=4RjF1)shfWbrm#6B zNQ6-(;FR$QU*DBLkln02j@_X_tDR7$4#{%rpwYQxIdwphpg~0HiO(OF0YY5_Vj~TwasoV3Mk|o>097*uQ5ruXfo^jY#**m$cl)K&?{m?~e{<(cETw;K zYX-#;s!<37xS@3{Dh213?{q(xX6~nB*Cxsm;#I>7GBEIt-E;5u__w3p@bEqR-zleU zg~ibtyq=NbVW)fCt!zRWCGOp8@0Mg?=nWXR?cVNZ@^eMw5Vn#PD^2HB^a3pVuA)Vn z{Cw`+UAuIgAo5O5&zssB&H%yVBb@9Ra$_8?fmt(ekGlQt{-AyCV*7zy^tH=pdl200 zrx)#AOie1Xcs;W$Hoa;7o;ofGFM10&)A?9y#|AOhbGrxs1M5U56?LK$t`nVLo#@0~ zCpyu%0~M%Rt`nVD>qIAoI?)N$(8`->HKQpLXhe0Q-5WFKh8#YtD@jMI;Y?Wxb;^=7 z$C%In{=4KrS{Oxac0Cm{8Aw#$Fy#dJBp{o^RDOE#=ufBO(_;+VlYGNLxgc~E`(UAu z11x-nf1H=dpGMBhU5nj$v;b;xL~j&I3!hh5OeBXmY3LK5ba+MMcr?ezFph#50Io!s zsXv{D(bv-?m|~_VHu^hfPtBxZ6JU>6SqWg91d~T;BMYLwYEm}NR0{N2)9^i5U3GMq z1BU}(^%jD64Q%3)HNv1_vlfZ)<6@}`7+Olj#IV7UdUfxW&a3UPW=5k8AVgN;acSmwiqZ4D@U^?ZfQL2=^j8P&L zNAO4$$5LLfN~K}sBcpG}OFOEFACR@ny}(>uHLs@Mu$g#R{B|inrgv~*?clnC^QXK) zw5Q~Qh(g7UA78FAv3^PsU+2FiQ_E5!+P9y#`X0`~-~3sCwMjw%f>p-Wzs96e=#C9dG^t;M6eok`2o{W85@fNNSpjmMZ;MdlyG7+Ly?srnvctlQjO`XYZmW2XaE2~f- ztO@yO#M*a)=4BJTCJ~R{-@7ZV!hR0Q^3T$(bdGXW0ls2~R(P(H8RG>pBKng`f?y_K z(V1-wV!1I!0PefwyjT4>o7EgHN(nJxvJ)U3?oU!nwQx`mIXSh zOcg|1IYW=GAJR);f47~c4mY4tJugcbZ=-sv|DN?ta{(w?-V9T+8@TlQD7UMXjlilW zT?d^g^KF^LS8jndVl{VH34}?;1f3$=Tvat3!8tH)0ag~!e+#m1dDujV0cwk=JI&&m z%Fl#I*}q_5M=wU>OX1wuk=U=YTNkff;ZwjcLpH4$_mH4}r(W7s!#GRe!eJ#TIjM16 zY29K|RXD<&fGYwe%%^NW#&pS=_OJd3h6E^0ZgcFib+>SgF|j22K^_)m$p9FLVm@ed zSLJyN0_KBMdlA)d?+YiRO$Lv_tFu;A9tWyJ0ZR)ls5z;}D#FEd8oLtKP99|Mm_z@X}HT_DJ}*iGA!=_5j*Z}V|*5}`9;5>GLCH#!8D zAxCj45@Bw1qCDSww6=z+lhssCqqF8bnevQ0N?{7O0-koLwkgqxoJvgM(L5y$VBvmu zA9VUzF7zr1G_G45S1Q8nF_n6A7N?mwa!kuenlf{4Hx>iJzj@E|&^3S0hw*(+7pas*P6d)z!Pj8wZJADL8@B2Xx%v0UP=&}o*4 zt&$YF-i~|ZCG}UBtxAg6%3$xsZd^ZVis)xdqIKG8z4}XOg7WaI|Ig(K+N3-|uiKh5 zf@g7y1q9zvo}f3SclJC%Nv-~ECbYUO3)I!uLX zPhrw)&Qpr$rywf|05y8_tv&wpKF#iYj;ZZb&zRd6BTdxG zu0!bL4{8p*FFVs2Y&yW%Gh;fbePg>P#~%SDB5lX%V7g?CYo<7~IbQV)>8myk{b_AZ z0gnnEyZJlXfe4d0FKWO{g^@9txpi-NHi!M)f2pac{iVRsTvxA!;EN42`XAXA+wUFs ze;e-Y?(ZIJ2e9vd!@zTxW)@xrbP_0&^9o9bU|-JEHr#giV7s@cRx(26!4zXsG2C^A zK=}+1ZG?Xqon2b@MoJPub@P&S@WZ1w!wjm02bn4@31RQ0pl$%LJT9O?oCj| zEEDp0@tjg)fNO~*D-WsL|8TO8wZGKy_{jyC3sHmgzbFRde_^~V1u50&tg!e|q>XaU zqeydA?1qX*Mn+<*4x)z}dM)y{a%BHbTm6}0zV_I2&V%d*(}~b1bgf~0_)>4^R`k`ZRK6zhp#J?&agX8fSI5iI7k=D0QKE&;!jHOJV=E89_ZkB)@<-wq#>!cZ7W zjj^^WAXe+@V(G2v9|DXY9`%HhoVv{sg~Zw;27DvE0b;^h6318`P1F@}Ys@T(>;dLW zfmJD|tc!8yml$8qIcDom5!RZs=;CR^nEZm&P}S3af7sve!WnSly&PDH{lnXN<*O^- zred{u-~HT_pm)rEg2P_Ff7r*v1y&;Rr%ZRTi%jdHhg}GTc_vij5uoJmm$v--U3buX z^`h_-ZjO3_`fj{=ZDH&Y_^M4aa}?xY=(tG75}>-ThD;)GL8ky?G$KM2{mnxZe!>9i zi5zjwIcqxi`D$)>v+e8Ajvxu@Cs>-T^WYlIkGkwN->F!+Y<7S(#tw0Sdp;dtp7Kea z=xON#3~ysuF4JW>WziUkER0<=B%pR8dF!<{e`*AxGD%+Y3SMk(yijjiZ#M6epMQSk zwl-hiy?VZ?wS4(<^UW*ItG{~jvb6~>l-^OzVZF7w`tsHD%?;JcoXJ{??UT8Gvg@0Z zU0XxR-+T4)}i{Js{<8`ZGTfi<$dlZQhs8Us!2f$5A zPlpaGobT=ub@p4(wheDOa-vyI7*xgw#6&UTQ_2FiJoGjwe%)G%F^;8F}CwRV~c|Or0n8iHbB$1aHMjzyL9Mc)3QL}=V}o7pKviO3 z^Cfm0VG&=de;S=>AM6QxI@=v(z{c%;hr#AnSvIj}O=keSaB!NPdC`5t)lTZDBG6lh zq;FcAqTWYuw_|O`o_|`ieSJtOU7)EazGyFVAEo^LJ59f#^u$WBtu_3hH7x4CwPwF- ze|tdh^Kbvu zCiyGYLor&v0}(NA`)ls0ke829%67Bu=OTH;I+Iwgf`LSlMeRT(-TMQO>Q+FN$@2a_ z3HaSWS4J};5E}|GhF5-??dtS{8&LtMV9RkZP?+jDZW#CJUwofrC@$7~%;@`4%~q}S zxT>Re-)R0Ghmk%Y*Eo`aYEe6*f*(;n;x9SQF3s9ih;p;AfK1Il03Iyw?VsAbK4)wH z%5>e`Z`#XG#g|XaFMly!W?4Q~Jdb_!WnQB0E#;w(QOR~D@BcTgqnZaZQ#>;&K z#Q(RpXKicSSo-_<6`+%+mCD+fl=ht1QT>pFG-(1!2_$I=rNYSAiLqRHO+o_y{hiyc zc6Bl2Jb6EWby@9Yc6N4lu4||ZbqqYH0I8TC!)w%F8Z0oLqlZVLyQ@O1*pvms6ku3c zvTj&^miH)(lraPp$JjLH`#%6nP7t2}q<~l%U1m|V1{3xrfvqPXohcv^d9brC0y;gj z3Yl3ds#46xD4{KYj*rqX;C9gkzVt#;w2~E2<>h&*lcfbPtqlgik)Z^fG*`G!w@lQ_ z+MkduCTCTuBQs`+rXb3UinTVD@~J65uC$Iq#D{dYKdtE-TfWu3IY0dgGera@@prYv zAQ_A>+XO0OmK9?T>d|;U%jRQ((T#<-5rN1(@urf`lj+%l?B{MO$w4|AOW`zfPT63v znCt9($3CblZbWHheK3cQ%mWmy1(bsi<1D1Hv*l#61U;)M6OcuaK6j8_F@8*ttH~X{ z_B{EJzG7WPkr*~xk^&%4hk^QXmg+A0Bo`_MZKQs@B9Iqqll4`ALY=_o`a{bcUhIl< zg=Ul_^oztsIUK`MI!xLVOzC?RCybO~u2Oi&I*ucIxC0>MnDx|wOH%5`YbQs8H5bE+ zF7+5g={RZxUE&By%WfHQNhF$622nY)r-#{5Z`?*7Vhq{H=|fFNV-43l65D6m!kIZ4 z4=+Qv`GuDKc@-FrRpfS}lK98q(F$`_?E;(J6B55 z?C<>#zh43RI-@v!*G2&HzNle`U-FkEy>*3!$<%h&;ob*!q6($F1L)L8lGIHoi>3;I zC*lU2Oi(R9E_Cv%D8(^Ih6yiaYl|~u%ya^1lc6WRVS+3exwWa=8gX9OoFop1l8B|1 zv#aMeKq}MzML335Qe#~lb>%_iz+vL=rLNNjN~=^#wy%W(rMm6~XCBw!iwUksXYbtl zNyWMk&BE~}>P|_tJ;Y>s?jAlXZ}+lYdyH*y059>!^z6Z62=wIYs-7XPbQK@20RB8i z5pdwjj)wk8XQ)H}*aYtvTDe6|8+!kQ4iNg6xKn99Sz)GsrGuR~qfIVf+K=PvOcBX%{q7mk+b2Rjy(6K@E;1E05)i z%5YN;sweu!qYG*3)4cCock9Z&Nl%`QwfjZoNtc1(C_`vcO&V?#`KGW~)B9FUV-{^n z34~MFJj@%UhD;c744w;)M}NpTSg5>}BqOoUO_(kXM=x~L z^K2;UBj%^+IYoDt$oZr`L3)Z+%snlRC7Sm5^f5j8FxIc|1km^H$f5*Y8?w*lt+_O> z=JI@AJoFEYmmYB<$)dKBMNf<3E=oS2J0@sYz4c5i)F#?JFS_;iI2I7ey=K(6sdA4t zAB&ALs#6YBS7xCnj1%7XozzX*ERifynOy>ol)AjG3jU%Xshb@-Tv7l6%I6$LefaBc zcJ5Z5C!yid@coaK_X~KBUNA_Wb58n){KTHvb|5s&nAlst%x#S<{Uf z$7W}<+#AZTHa0zqFkx?Phw_FFWn%M9Q0!GZw_D=aQsP;;frETP$*+IMT;*fHk@Mu! z3!|6ZLoGLEsS7D5A1t|JU|m)4>-K)22nS&M9NQ)n4$ER}AGeU4s>G4m>XJserYB?Q zNk(B|G@+E5$6x%&eO)hd9~!~;NRSOMix+y>`fqTp7E1;)FasH@;N{l-!zVHnXlr4I zGH6Sbzj&?&ZH)65CvZ_SzJViXuHhW;{`wn%opsUy<>W13F5z!b@IH?Z?{+#E)A&f; zG#Rgau86#IowL`~6~+;x^F$VfEJk1e@jECBx!`rcv*Rv;6SD}8mBipQ#OK07`UDM$UnY5SK95h;iCw=5T+{lU zwb@h$1BPIo{`%Ob_2Ec{pSyb}35Uh`!%$xiFdCL{ifMY_h>l_NL$A7GD}*f{5d4sx zRRJ4F_TX%WFFmAoO$@O=&xy!?Wv>qQo-ggv`BO zS!fuD>m1MVfhrYxn4O=)WI!2UCIRr(x5r}uYHQELnW^Fq(^^uLJe}fJz0q;mz18u2H`#?n&4yhUxZ4&p#odXK z9h8d77*ikvMYjOZCrtpK8-Py@z%!K;Zc-M+V>PdX?A+1tISUVFEm3m^!VA_ivL#&7 z2w~{Xpe=bs)<&>Q%&1L=vbY$2(m%ijHIAt6E_+NcxaMl%z$sAzDP~?SP!-W3Dx35} z+g_ZQD_~XNWROhY3H?T0r&PzjHGPZh+yIL%FNJKM3fZ2R=Pg?itcFQ1`=tZy>nNsu z@O(TCN6=ONWL7`|DEthdaS@MTFq3}3lvu6M08vKXl}7=_Qfk75i}D(OF&tv9jIM15 z;}hkw3D4BAyAPe0_Mx*lt;eU!3O+5=nVr5%i%%!&l9%kczp>D{>?}u?%;XNAUtQ7M zURDrLLwQGc?4I#zm=MPdt8yksb1d|nan9t^qu!@*wNvA5=O)X=cpi@U>rEjwEUfNr zr|_gT^3CmMz^u*U)sFH~@Y-IuDy}igZ-A9aHNrYuXtz@X_88J(qM$*H=2fMnxZyc;@&TbK?*oNJg78by-PBb% z0%&x5OCrJ3{u&3?rq(wWeebAptqAF@HZC;%;%+k3AlyXV$yW}*)C^dZm* zQ-4czFRj;@n4I(ed`wT?&)1=0#|ol!ctMqNu~$c=-h|t=98PP`F>Df30ZSKP_+xbB zevg5!iHINInGNG!VC;CF8rGes3UA2my*o}7TXZ}oYv1k^?+LWstyEdn zR`)W!?&;=K*e_D`7(2$3i`u#dO<1}-8TMzb-s*T7{v4^-a5yVFw1{_5B?r#4uPFN` zlwH5*1nM_)@w<*U?xvgS4;}vuKX-K8y4UIaXXDLBkxUSf*c}cO!wa6{Q2U54p%e@!nieNnDntXpbJWT)(+cJJxln~qXV53ynuHTv| z!CqzNH77I)RGmv09&v$;wR_ixI8Hu?a4HUzwcQMiyI1ku z_G@&7!8BFHm*k+(VzhTWyov&_W4YC?0#)yF)fIeeq2WU7W1e9^P&@{xl9v>>EVdf{XpDDIF%Ij2R4KzAMAecl@*twb zXvX1(qyUm1&w;-0zEjkMt~V{~$5WJNf0?2jd&uB>*X;%0v)fB6Wr_})bNmI}K!QB^ zh`GqgXg*-uXmd}1vDWMyQI?^FmITN6>{{hFZ$lL5Kr0go$O>CiKCWClGE9{am3^5F^f7yuGH!ILp<=w*FjVrg;Taab*#lZ*2tmtA2`Fy zmuRjY`$px~UqA)XS|NTT@Qz{HU+n`40{XDE`zzuh1&TZ72t^pZH$lu06Z0TnOs8aV zWsJ;&Swena{Dh(fCzvl1mY|r72f}w6GDBZ6ouTjQh>u{YLC$$&7jDzwvZ{Nl-mZVB z(O;5^#2rjfE;oUqSKIqr!p7GFU43QqI?AiFmc{gi;|3{~`$#XzuHR&q;NGD!0hdM883!wP8t1 z?c#PbXeN8Lhe|TmdOOOWW;G`}B!-JrYM$K8b}$EN7>`Aq+E{oupHpUJlD+J7vbe?R z#2K2Wl6Si!NDU1NhT>`SU3Mk?N=?S`UV66uX%+^5ouRxZJltyi znY2E4TKC%T-nD@74A;Z<4^h;=13cN7d^^7|fV&%tau@uF<^Z-95*+oblB0L;9N7`v zU=)>$qOs$nHJH+2b`fB0Ab-$y@0&<)#*MNKaT@gYppS^B9vR=`LCgfIamg`dh! z$HU7moXVxZ+!k241@h}7HHkaD$^C&5mQRe8^(-D7PB0JktW9;a(@*I@LN*V%2yFI; zv$oVMXn2IFzn!Pp*`wYu@L0!jz}Wx^rB2mxq-O1+Gw3P7*2LGA?Kk_$$gwBSgsO~| zP!;Aoc<-iFWhe`oh2vpH?u`X`yt+E&C+v=aIe4_kjmw!u4VMzLBG4u?h}L@9TMAQa zME%`&t8d^5^oLguZKCoH`jmQIIK4&F9hC!^d*~b24<${LrWlnJs|1}Bkn8}P(_lK> z57WMr-pO(I)h4KP^-cTaQm4Rd(vqaS_e;KT|BPnxQka6gG9+8SEuL# zH1x>c#q9=fOc?|KY|S9!H#P;Q1)VqEVo2&MlC6`aP0|v6KpvbsM7(#{DF@}?crwxs zl#Jla$d1lul)q{!Vka9-8Aw2{s3E5x_e-uU=ik~Yb9*TR@=Jm&kD zvk}Ngo}PLTeSj|wSVf^tziwAUlJEg|itzgT_O(5lC*xAOkHVpMC_=Q<4@{OUDES=h`V8_sv{xnTgwt$9(a^OzT4i@GIVBwq$qx5EsEN zBZs>VR-L<_3BsZIPWQLIzTQ*4nfCzS?WrKU%I5=JqKQK+izzu9H$qP@&U19Us z1PkLzKys6DjAo%Un+GbV`AlhMfqb^#Ai9?lFu?M>h{e7|yM#xqtINO~tBiq}Ai=x= z4c?-dx&fRH9N{>KLBZ|TsH7vJnn7c+X7Ijs!RtZv{*OQY^wZ|%k9Q5#I75Rs|LcFg zcERj=3+CG`lwHC+Z`jz=PnGdL`Pv>o{eNEK-17%$GiQ;tW+c^_d(c2@Vbc+gL%4t$ zTj#{WcrB{p5;(S0JEUHGmDhO_wvdZS8mB+zJtLJT21%_q1Y-qdFd)dGw6qcuSz@ma~InTIO&@LrXB>{ z?Wu9ID@r!)cXrPdKwaO;q-s7*X7f>|tDHG6lvk$j?g{_Ap5iKj$u9i}UmAU#xZX|E zSmy;HnQZ{u#xNzWLcJ1-p*hZH`BRSH={n-TaxGMAMCk`!xTtH|Iffy+D*SNaQy%24&@ef|~5H8pD>2?&PySM`lUHsG@Lm^CMLnOmvv_CT{0(rT94=-TUA9SFbX(-JhvInfjFAO+y3 zKm{r*UDxm@oWst2hVeZeFKfF~%bcKK$?FB#QI$JE4{z>+i6>gup7f>C9y4O)2Kni& zTfF_SEz`msL802^%|-)gcKasB7$Kg156i`#&S8@F)9xfK>$+Hd3 zfj|YMOAgk&K8Qk;q9^({whKG(UOFr(ib^W@O7c67|1_`ZYtFywS$E`Qzgy31KC9`WYc{HDB5f|~ zyS`oD(_65pw-_5*3O9{xSuca&cHPw9rklpRdzpz%sf*vF-6G!Nty<<)^$prx>NE0N z9mahde+xDoSw324dQD>D@GH+tvxTl_8B2UR@fM0Ungz`MAx0-t!wP@Pg!d0F#oErZ zG%SvD9zwdH6P1Nfv5-GKrJQMHb``2F(`DnCSL!pVgKe)ZwMGJ`;NLd!>dOZqADM)V zA1NRgI?xxfOICNn%ryj$fTi%GlTZL3&sN-j{SDxhlggV0l$GGcz6#~-o1d2VE;Dj@ z>+a{hCd^wZptmwHjD6z|%Z|xOt?1TUmXmq%u`*{5?@Xk`@<^RmO~ZAIe8VyCHjkNX zG z@u<-EHt=wMp(W_ymXa3^(p1Lm#Kd-$&W9bclR-lP!;7S1F?n1a!5?KgD;ZqY>^NM* zS!m67_il2=c@$%``Z}h!0BMsQ%A@6{1MSdZI;h5+Gamc3-E3A&Ro}5jCR)dLbY1_F z(^EkKuSrMP6@9UZXzv_OkKBCMTI?#cUR&dKutY3rTSdZ9BZp6`G86Q$cL(#7S%Etx zp96Ap7fCkS{0Q#gKm{frn_%LY3m6%Ds+|M>R9jLoP?msBRaAicoo-#-T0T z4cjD(^^0fXma>JLb4)AjmoY)DVJu6SYl%>u6}kr=+@lR>jL%(E_t56-7T=J%S9Qz3 z)M_6{J6S!^2W(uT8p>Zs-A^p*tFsO-iLe9}ga(|4{$ZdDBjFO8mi9uIPnFfs)XlCF zS{Rth(bQ7y607NS-#Omyr6C5s=sD|FLP`rh`a>LPhbCaS-f12Cvo-U4&g}x~*acK9 zEU1x|clp>{jRw^{>%Du(s7@-GmL^>SB@#CPA*g#mrTiz`I!;7~ zq+?;L4|F^b>n0s9EPb0eV)>rzk7e7R5!wEX$o6N%wm)^-)6OzMmA%isq#1w|=_x6P z*=!X378YcQ4pf5-?YgZEaY~J+FbIsOO@X0u^212I5HuKeg-!+gDP5Te`6fjH4A}M8 z0fI5b`OB2oK-TQ#gb^t-@sNWVQ*g}3e`ombT-PweUd79unXvAuMW-}Qd&ctD_n8CU z!gZt^`|(mKm`?`#N_z{Vt(dK_z7q1D?A-*xM2wK<@g)!$KtK$!i6=)>aE_rTud6vY zB&>1!5;{3;?Pi7M6A(|nwfQN?4ni)l#XwO!7>xSxGnpVmXddW-Rx|VxAAYSofN|B)d;SOPZ zB(ohGtB`4AzO82lr%_=y&3?u01L2gAv{4+5Ze>_|1%J4xAB@YuF;vd}AMm9t>o$qEQYS0QpZAC)CW3~z#Sm*_x4%#*vf|);pr!qB{ zjHZD+aMoDNVo=tUnSm^a+v=?WhXP>ANL_%ffTe|A0X8zuE9rSEi7boiIpJZo5ll(P z@3JXoMYwjP2gM-m#B7u%#s}l=v>a7FbGaD!pf*n7*U5oz=1_6KwWVO}r?tYQgZf&- z+k>IXyWRp4bz!pq7hv4LI2Z7!>*Wm~sp;b_p_0sIH-xbIHu@HG$X(vp?kyUlZDjW* ziPQp*AT^Y?D!uj(tN>Db!h?1`NnQz&IQ7yZz8q7*_z6pUUZk;Avh<$lu!tLoO8>)+ zjsG51vfc_wmF)AZQ`Te5vu*r+TP9T8`}s->W6{hP7{MZ2ku>pA3MLUtz&$YIL3I7E zf32_odu5(2@@6aWYS2mlCZ zJWc=r0000000000000O85CCaoZ*DGdZf8|k3;=D+b6l{}PF(c?6aejA1z;4{*4_kb zsZoR1_u5i@?W>_Rio1JocL}Z`A@1(Jv5f;E2@ql=gg8MG+zAk%g;KOYi=6*EcXpCt z30m6Fzufk)nPhk5e&>AWJNMq1RjKswpSigT|GuaC^f^6MLzPPPDGa~jUy9#9YtP!V z_N+Z?&)T#0tUYVb+OzhoJ!^lw84MWmHZ1NB*xZ`FhG*^38Zi4etgqH)!sriJo?>6J zy;sxM_^jQ#0Uv`ui1~wTMonMivsQfrHb-Dr|785H!7gddrKYd>SrfSThWY&k*z4LZ z?Q!3#=|1=;H}t>RUyQr1jfQ<$)BW&IZBGIIY}qy45C61=K7So{40ho$F)M_&Sq90?w2{7ZD=#PI|`-Av@{t)}`W*}+2 zE04JEGk?YP|I^!_jlbeJ+0XEQ`WpJVHmvDAtfU6sT!v)BU^tBYgH@thUzb!0O(|>L{$X!XD-r_qztARd*fwgZd5b1dK-A zt0RXD9NG)E97d05TVcVlmmUn)6KV1_>h^m*g*~UR=e1V<9`=I5Uep?2%gYLTMQaTd zKg-*%!d{2H3FA4E|G?hS+S>~IH|$@qM%wqj0eemR`38!8zpP^~DbDK!?K#WWq`c

%l<9nF5@iY#(l?q$$iRw z%YDqZBXFO~xUex6jLo}Rdk^+L>;u?Gu#Z*JEe!vIasBkA)|$YY!kWRF!&<<;fwh9Q zgLQ@VfenBS(%L{+e^@_QZ&-I&7gz^aYuIkI9%`5Zpcp3{fg^K7iW zhX1Il{HdX;%BNmcRrwV6iR?f1+qG{0pU1?wCh=GD8e`9~F5}ME_qw(p-q!XF_tSr2 zpQ)sNm1vR`$yXAm+@|??IXszjke#o|2R&2z|2@ z4TX8ZoM2WkQ`j=t64*kO~9lQlK=6!u|M?Ho_`lrl`pVQf31>uiFt~B;S+72 zyr+_4qtRDiH2Lon!oCO=@&_<|l%~`)j6dfy&V9^j%yG>!yyZ?>(_rFOeJB?^Cyfo``C2YB-l8W!~x7X9RHj{*gtz| z&#ja8e1A|?AOD=UnEN=Fy{D4$9Ontn5pUpJK6*m<8~g!0AGhh|0QLjcLhJ|31)TFZ z|0#1m8~cVb=Qq~cd#b9u&wj(a$$iKE!+ptp%6XY{2Kx&4J##R}-@t}%HZpC|^y@3F zzWITE__htKHMLUM55n3|t8ZG<_g}Z7?^=G(KJha?#~dQ#$$5u;P{xyeRMrDcwC5n} z06w>mwCCGcRfVmrD;uh+biiw>Ds5S*0iJvAx%y4MY}x>|fbHK9f4Nns|JfImT3@O6 z<)3AZudDfAKzrjq|9<-O-t^4Y`Z#Vv^ z{`2)4YR~H>#Wg7F0A;8(_g&>-&UoecX1xI=;G^xzcLau3hKj z4?q4KScZS`>6ay+ee!u1^m!fCoprrjuUGaba(F#(dw91_-EZ{l+>5$*=|MfZ_N1O& zdsQ0$u6ySmm9O18^`Oq}yWak`#djgEzxD>>sKi8fOh6p_jo04j`o;ggEcon`&*HxP ztjQNRZXMXejsxiSOXcr?*;oT<%tqIWAHx^IU>#s}{se6Ql!jbfx5*bx-}~zGCZ^55 zYI*MKX5R>Y{-)Wt2f)>>AM|}K2lpF7 zgZmB@%49_Uy;LkqZ0pe*1@y)N0xE>((urv@H6%`8UM&)#qPbYT4v#bDZDD zEt`Gw+>`5#s%G$bmifibiUUe;$Uv@q75a1_Oq&AC&g* zHL%V7_TT2awoQO@7V-tP{*E=o5A)?TGVt*N)u;NB8X7o9$NT z_Fa;@cItLd9~j)Tfp2K|Q)yVt(E zb?Npl{4cRnd*}+7&=p$!@clQf2;4y6g$pg3wp$P6pdq;w=Kd5ehh~uRrhm5{7ZsY_S&o)YHqZL2v*tn77Y3zt`G;+wO8$$;VUpR8u zsM@;wMV@E`9TAFixzVpze?p#-^aE>$c3p(O3O)cYaK1twIR15uZ`3%?QRx5X2Gy?- znOF^0e%im?bq;r4=Og2v4r>Z~@kwF#M;c<~HN^Yk=1p4e`tIxRe{0*SozUuxdyg(X zsZWo-)UVe7f*!8qagI?oT+bEoybp4_xbI=u;Nf);^WO~~U@#Bw-2zN+O&U9y*d~vk zLQ}?1y{AnYFTIa#+^F$5&ae_3a|vEsBS)|XR1Fz4v_b#g16&RI54k+tV1$@kF<@VW zw&>S$fbi4K9lD6xg8dhHO7H>v;rBl)XFmr1vbFyU;C*02-u$XvtM(#CI;=VomUjny^x(u8v z`jYjSz#Z{6Vax>4=Yq?D`P7Ni5U0~=I^vZvn#EX82i7y@(cGCZ!+A7s_I#Q@X93Nh zy^t2pUGzYkKYM|&d9xNs`+)KOW=)4LOp|Qokg>Oxr{esEn~T8{$g6PaEaEIlF=d~*s^=u;$^gC(NgjL#S50u zqIrvH;XG+y>_@zRJ`Nvmmf!|MaUOg=Q*d6B#z}s_e8A_<*TH&a5d67suYSx2`=JxN z%hwDnX8Zw7@Ywb=;t&1y9QrF0dixICrC677pCMw8`+oK`3G;cg=F@^X3k6P$7vsiQ zE?Z(O%w*|uT5e=Y%a@swnXx&UnV3tjx@IDo{9gW?ypN^u8}=XBANY8DT;>J#1w(KH zYlmr*rVC$~G-k3mcUd0{hfZa`2Ct>}>Cvw;mjjEp45WK}j{ei}=Z5~8!yGyRHgW7E zp~)F{)^LVe%xBM-Bl>hbqIijio*QZcCP?)?{gBrTwgh*bnb-xse$eFEycMi;aaZ2!5Em zMBxi_#rd&z->O;DJ|DIb z!6Sg210u;YB7ywkQzEDTg%$R1DSSfm2UFn-%r%SWFA?X(xG$iLHKL07>r-|G(aqPs3F(bzQaIb6E z@__s-hs%E={+EG!_+N?Zqcrqc-Zb>v%&CS#bFnt(oX)viiM!0_7Km>da~n%rvbJ&{ zdv{4}5ihFL=f{4)+L8T$wJ2)@ z&RgKIP4Iz-nh!AeWA~Ch$e!x)f8=^s&ZXRc^JXuo)N!oMM64T0xO4wA=C)RLWW(m* zP7Xn_{FGAi-u@GO>j=3fWRtbCkMKP^8+)NC*cU`@zx$yNy1X#>q@FwuzBv-_QWe}t{181dso>!HZSS# zbMU@-Zur?%>nBd6Ki837UgAL?S_RXH=p1q=`H|d;PLNIHTC%ZqB1bzXvbVJt`G?Pw zHKV8>xSm|FR9uhYv{|>{+uO&D9^XT^pAZ)f(Kn;ox9O13wpF{suwUA@?Qm?=@X@1} zEm`(B_mh9w_<;}h!M@_I*u zP`|+`{d*6%%;R2_b4i_hh%v)X?K@`;=sWOB^x5Ca2RgLw_&l&*+NDFci#%_`*z;Hj z_>U%{CYmx~Dr$N$R&sm%=n1DMkDpvI*Kpo##-4L1=TgRBF|J9lGgtXw$J}$F`k{_&Np;FaY+WL=DViIb7GVzT>)XF5-Qj;e5f5te+Ws zGcDJ1%sZfdb9QtlS7$e}cJ!nre(^L_lR@n~SJF!hfH(8}eCBo!#4BQTagY?_9M2{z zB|I5l%M4Q4mtOWgNN)xnp?`-Qqj$oN)BE8S^nOGIy&Ha< z8U~e9gMdR+*K5Cczsjjp@)es+q_T!Dn1VNqS4g>IiCW?q!3VD5d_J&H)2Qe?TCyUa z%)LScU%5ECO4*8?`u7kLy=W%q_#Y@l!oEur=$$Za!#j)e+ z3{e6$j`^7ys83TZzmxdv zVN$v6A(hKE$(NWD%-2@=0s9^Ej?f3r)L^kE8H8og{McMF^9&&uXUTv0df2BqAMkjE z=`wRMRw>4f-~&AO$m0Y&m&D_rBZiG6gMpF{@EX<59XelvFMMCq_&%t0Y}ctiVn2oF zJ$a1=`|?CFCo6IOtQo+5mKJ;Hd*(yAmS^qEvBF&M?&3inu3lv2=tWa}R#0#ERfsXf zJ9GX5^z|b2`BKE7339YKaJNnehZjgVc_V&(j*-g$N74`eg&IX(q$aC>rS7TMX!NGv z$T0tRT3T|0%(nkdmZdky9JXxB4VqnigT`#SL0!^+qt91grB@>_lYYo~QU#nPmEQ?c zc^uI4!e(&7M&y;Xl1^aW;heC*OK8vM7P?U%|8-;-l}*dN!pP0V6MpO=xPbE+*DyR@ zWs2+Oe8>GDcmOdmbDE*x0q9}Dn}hos2p{0J1l_yz$bx=)D%R^%*ZTJvsMone*Acw_ zg?*Rj@7R}l?uN1FnqJQJtb>^EMO|lREoym3J8jIndXksBH(5D*(`2_8>gp0lb?0fZ zUj)8gg1$CFpD#xYT7l;s@(`ooY9HX^UqPxM;1zs{RAJYtmgWZiEB+=mUvry!X51u$ zoLe*|pJ-wc(X?VB!_BY~qUrc~GJZD_f9t*BHnm8;NpHm6B)#w(q*7leRmiWT3WP8C zpC*;pQHc{Ai=@23yu*5fwE^cMaMO#6+^DNpB25WN6FlJI>RsgnT)RTs$UY!6f$RgE z3z!GcXRMWZ{(E4*!NLcC|0TT6!rz|gTGA)gdUfyfcGphbxA3}$5kp6c`FeppIA6@! z0DCc>vygS3lfN;TaAV80Z6yBxf02~B2) zzIR3}x&sUUuahh72hzmY2Z7O6BustBUzqKMvzCu$UTn;K}Y()0dj>1CgCdei#= zz2&us8hP)d2Eg>Cz#r*#&1HIPgj2{Z2f+o%Gxj-B zO~Kk@DQbm9s1v{e4UD|0vu6@bf@ZOD3&3^xihRb`De41j$p@JKjFox-nwa~HwKA_I z5NnG14yN8c`rZcqc_W98{05r{4Hr88rc_k|2N@ZSHUyqz&YjMf}IivS)raZ1t%GCz32y@ zb)z?oe5ku8c)&Z3T;06I_3?E|KHw;>U-khW>tY|64}AXmyL#%2)Yx_d z^;qUh#@-RMa!m>qZ{AG%_wT2pM~~9+JI5%97a*hW$$f*#zfa?Tk0;3Q~pU!ik#>T$X&utaWcM2BQ=62#M=5-o#W-72>B4N+hTB-G15ceLQhzmao3J4;14__K&9Ztn~{T@bzZPKXgbh!MSy=-n`5{3h@77J2^P`~N=H8P=?IU+X&i>~r=$<-ShlBw>?$ zjKiVrgsbqa(H^azu^GoJ5YX7q8tY&1tU$^N2hinlB0{pG-(!7{+O$AD>vQOS_;dTo zaR;!1omD&*x0h-^05d2?+@N}6oFEdhC7*Iv>!;PTrdQMu7N10*n==166V3J=#m~b5 zt9xYZuE8ncDTU5!Rm_u}hWIWZmrQb>*PO5$iC>!=FzJ2<9=h8!uwU}2`ltH~Thbi? zlGeSmpU%OQsNoel*BIy#vtLa8`_p}2#Vr@iCLxyZ)vH_kgr9Be(G&dwZ;Xv1(mU== z@yhx)7=||DobnWI`Du*fX2vbYRzbA({Sd0F`{M$ALg_NHvcDF)Lfw|W;EH+frg!S} z8VL33!PGJ(6xr0$@1%G3W{J9Ql0Rgt$f@cbJ`NioE~fWTJ;Z*=_&W9#u~t^Fi40le z7yQ!6mDVMIyxkJOkhcD1`DfA>(yQA`3c+aU)u^rYEo+85?!oywRFx$AUN@0JdY&SV z!)3p;t?B5*eGHMQy=SI0wNb$1d03z2)@yp*r~b|soRe0sceL|QB%adUxWLnVrcror ze9tQ9^I3|QvX3)?TaxXKi@W+G1Sju>D|G?L*F6S#Lc5l9+2`mrE%~rfqBK`9?mFM@ zS$FfNPs_w)qB*F0^guVg)p!2L(|5C-0hNw3Le&S5Y|3)lqRfkgRWKikO)U_Mh{LN> zlo1|t@mkbtfc@G2l);fvQB4)&P~A~ZP|&Me$An{>*y>#XCB|1VJu5j;>%3_H`BGf( zakdc~koR&@$5#Yn!+8zW1`9;+X*(o%xTD`(JpE|Lk-lfDFz?9!DdU?P;R%63sl9p^ zno;@bM_oweCBQ&e){9YX;=&zCO&ETE`c=!DwseSW`MCIK$iSspVQp=#{;X(NvIsaD zysNA4?JY_#>MFP2JKu)18OfB?pW&+QD$*|aYX8dcZk@YYZu2IW=Q_@5@M9DYmQNR< zXg{fYu=`!V5AZvvBB9L>>g!F~R}afqSC`c92j_e_^KbRzw3ppwj3v$FmvZ!S{Aso# zNNB~23K%|aQoo$aa*`c}$)W;p%!V$)8dhB-g{eG){jmD+%@k_Xfm=@n)TeC zlD4$8Tuk7b)~rwTFke71%;WDR`bUAoog>2LJqOFa0ApF_s zx6H*V4o%(PDXO2a&jfg%7jqcWWAEg$g7&ZuW&GJ8M0y5#jJ0}B=a~HOsDlW;P$GRK z9A*T@-m6(ZIXVpAE8%z~kp77|_uCK98?g{t+F`c`mrr-^?iu8Ux#H~k=Jb+CM55o! zM>TmX4407|a;er6<_#78x<}TVvNM{~9a2DTO>N(s5+fRNppzOc3JXYIv7Bjl6!&`- zzKDf>v}bUN-J1nzn&^tk1pnmyk;zB$81(i?gtRtjgrUgF^wRDwG4Xy5Rl&@6DA}XF zzR5%Z(|GdF#8ekB62Z8FmV(jH^#N{9m1q^8NdXV_Pap4bGvcE=x_lt^Cd21B(x!O? zusC_Lr-bzWzgBEdbs+GgXunQm{NklxM218U@PhZ4tq0}&T;F6dFtNSbKwVK$G34lM z55(l9->YZK*DLP1OYSlx!sUqBnbOhHVn!7f7CxI=A9`4uZxOYRji%cR^?!FB>K`Qf z_T;Not93+j>gK^zrF<8*1VfjYV5Q+0Pwc)WVL3r);UpcEkNboxjR-82nfX&^FwHF@ z;#{T)kXiKTR{+WxjEgXs_+1C=t2@?gDF(*7#)bZXymZFm92-@Ex62nq(Hgp{)j884 zNX;#S`=>@4vdHX(iN4%;s)zHs(NLj%Nj2p~;lVSyJ*8+%^m|dmSo_|OF@nq;CZ`l= zx(>*bkrA$-HEmODq_oQ#(z^q*@)^AiaOJrfZKRqd>X6hMzUC5PGg+|zQzKJ+Ix6+C zdcU>RBG!cP2~G zu;@-T0(aTwA0e2>->rJ$vRX1Z>N#Foh<;!{X0Z9Tm67u#QCws^Q22s`jwYXf_wEI4 zUCqmG!P83I z8mmEKqsPvs!`1n{zT2fc72p`M?6MO9(s*)OY6Y%k-8gQyD}(N6#lT2zvxO|3^}-Z- z?e8X|s$G3Z(mv#O;SvGR#p%N=G6AR&%i|gR*8aHMd=XyUbpzaahqt(Ib+F7IojXTU zY>NR?@VBE)jZAk;=S-sxkPe71b!4NlD73^r798gkd;QKS??-$+?MjA4iB2@xow@{| z2Sz)mJqia_p`BXhKYjIo2Ox%Hj`= zrqh>U?DZ&A5Cr!RbpCk8!Y;-awrsXyyB7IeVEju=Car^9ot0=X z?T-z{*B!JM99Spddjf&v0)fY6oc=Lr$Mq!D?}{8a>ahxnE!e(25?~SY_gTD4?Hp_= z^^SAHbx6lobtEE?H*MG@_+->R$7SfrNY!H9MLM-`m}BE zvJbr4N|_41aSmMlm1rFyn47B*z0`E_1w^~GIlX$IJ$&Q??9GH?F1$>DA9KMyYQfED zAe#J>{C0OkuHci!%jBdFanA@!5{l;XEH}dQH%KN>lZydx^4FFGB4l;o2aTZJ&!6Ty zo>pAY=Qaf^h6IYDR}t3!y4BuCoTqcheKXx7Gmi(_)cx%e7^7s#NWR# zUO#2t2*yDqB>=oir9@df^_d@uWzM_sk{#W7jsOqK5Z{ypsLkLSB|cok;$IEYv^rMG z!d+dZc!PfS2{A?SDewbe0{gxU{xk5`ax;|(s74bc-#fTz`6K@96@S6K$$RMS@YdMp zrEAM468oCQuuk*VK@%WDdml2wU(k%PE;HgXnII`WNu@-$BEKSxmnk`z)DA6mOt}1o z=wM0rRwjtYwm^?M&^YiwylqcYp5ci-=az48@WHE?UVX@sBpBVhO~?6E4U4DYz*yPl zR3VkW8)@=}JG{NMcO@uY`2%2TW3c!@6VV^eVZYhJlhlQwO9d3&%F)+QFj za6{^KI__rBll5c2igSzQMOpiV$uZ7jWkZ$Lje^R>*H08yyH_ydn=wn5cMv?RvEm#p z6Hrf3K^in)Oo}Q{OZUixl^mo}w3~#&9`B1DO5hmo~tvICi+tX!4;(@i{hpdN; z?02RwI|H6r84!cc8T5dMA~e8p$||GY1Mc3?MRg@2c6+SetgSo10Jf2sJVrmwRKigk zf2nALB~NVpXKMsRi#Lg05fMH98J4*v30a@<$_8n%+qx%gFfx#>xJd5`8}oM3bsqGz z_M`g2p?=Oei$NUx-m#7H`{8>TaKT&2v(ArPI_|-rUNS=iZVGV2giFC9r?3a*ITJ}b zO8PaK=y7YYeUlI`sX2IUs?NM&ZWtr+wVS397Y`ma& z-D|1`#T|V`>^Iq|KJS~p1?Y8NsUc{!3W6sMXMxl^P=`^7kAYCu5w4miY|*Fc1!Cw? zZqmpqtX>d}A!V3PFTQ&W|E3h}M6ksA4|^eM{l>8i_pL5$`y2Q@)xIPZz_ON`-?o4e(K{|v%2#L`o6Hwy}Ka`DS_!$B^Tf7>OJo55l`hEsqP4%zk zuTgGm{mDu#e&>8f&2B}m?O8C-N@pxt(0(^91neJiLgleDP0=%Tc;Iz)co1-T0&9r| zcMUF{=#1>u)>;WHpJpIR267zhX^=7U}M0Hix)0jzT~n4jC@U=&lM^P>di!3)fj0HZ&%7O? z%(MK(z1{izB$N5Z`8jZ1W((ouT12?$7c|F&UfE27^DCE-7Vb{FX8&Ksn)#*S%? z+sax|=6|*vn~`LVx7#-(2yAd44bVreA*fJ+%A4vV+Q)U;c==9!l!(pcieo^pVp<|u z&fK1l@pN}>>ujrM_W4~A$YcD+3;b7G7s1gW2qA>z##Ia8N~*{A4Kdo3EgM?{;A0^J zC};Yivl`fQWvJ{q9aklNJTNV2Z+p_;qeS1gA|0F#nDy^zy>nEe$B0ulWdHQ*QMncD zHhRD9s8kkVC^zJ6$?F!WbA%fq3S@voBC*aY^f-=H`=`m5wtl{(<&cz&0&W7(!dPgb zc+ZuQ3-#!nFF2aAzUg_N)o3~HyN5R&N`N|nolR1|0O`(C_)}in zMbs6#uK{T3QRGsGa$OYNRn8)AN7-F8ac5u>!H+#)=yuzWTGE3~x}c*sKw~bqYFCK} zsJb^=#q&`F80*+GW)ZTIX-%8}2CeWmE(|C{pS{glhunftnzy+Qv4O8X$E2}~`;wic zH%A{|46#TaX%GaO^fF%X9+F>dS0@3yj5=sQzB(GRa7PQw-LV4b(0yz3!LhNi;ow01 zVD%Hm^=8bZ?AT>^M|-ji#11)#s6w->C4;ZF@k^h444)dAV!R8p9t-CwyfVr;YQkGZ zYIqSd;h|}v=Rrp}$5{oGfg724lApD0CT=~kipM2>W=a2{G4^g8*GqoeFD&_@*sEB^ z;$5hInjmOMPn$X6`)bCCo9JHU7?Kb7J{qq0(yY}PwZ_Ik%R>P&d8sC3EN;JR%18&D z&1&ILk1kT-b9rzH49go?$=Myf3MjqOyn31**L%fWp|r&b;JJl5aqt{_w&z}Jz1J@8 zHr3{e1-C1QY3lC%kdvz?A|hznGt`d|%X9M5^FlUGH98t%IyM6gaX3xl-5P!wX|KAD zvyL5*Wj^R*w`v%I;Ds#*8ZGl?0wTNW-q7Qr5iJT~0+Tn7f))n2(IW5f65~jH2uon)x$}ra{9cQ2SqxJJ)5@ENv?>a7wZbuWnGE-si zsO`L4Qrn7Zb7e|I>dt^rX2QMDti-)Tl8X1Zsyw789pa;IldjJ-oXw6$izG4RE;sz4XD0Xe z!mluIG7GzgtT6a=vqI8I?a#)s(o?9ZdW|#T@Pk*!JIU;-ZdGE>=qc~qSzO)NXk_mM zbrL_J3~L-QY4Dh%$XqcsTtkNB33i2Z!jW#?LH-V^FL><8_M5pO2fEMvzS?&R&>?m6 z4ju_E6zByZOw>7Lt+m`!W#rWYw$sdp6p3A#F*mQ1ol$LeE-ckRM+5|yJ1J&22?@VyH$JNltwD^S_T@f3;XcqD=YvhSXf`v3q19CoKmIM~0%H)Sw zE;UE7iCsDw{qNm~z5TRQ4&#gMBP)?_I$*Yo9gKC$lr%dvVfF8Kyk2ed#~w}-V^%g2 z;kUihy~aPQ3iI>x^DdouGAyh;F$w^|UA-mZ-NTO0#bJa4y}&-C;oVH73O#HCUmL2k z#JgxxSnUzakBIG|@zK!3WI`{eXzCwZk1?VdWuz_|L0*fEuZTVn$2?dEER#iQ;-5-^ z0wU24A2S36ixgfB^u z$vz0Y0gW0(Fzmbh;?8t7KAl(B!B(zvXh7Yv>D+djMq9fewRqK{g*-@&EHkKockY(8FJd?0 zACiYHG06;rD_7mcrl%(+9z`+Fopm9=j*cX;g4}t=P8>S78MR^u`rWhWkkRpjKU#-; zR40jk#4J@Gpr?`oI@|MFg`@XKF$>RB)1He=L&VE)DW>wWpo)R}h{waCs|iUhBBw0s zn2Vem<(3<~jq_l(cZX`-sJ6(whVHJ6Txz|$O0Bbw1IWXEugT=ZqG8Q-9PnfW6%|F4 zXdQjNIQv7EG<|h}Px`V{iTwobnoM?Bf}5)mfV<9i!-@#}%%{XyY$8FlgTmU}D=`+I z6)C)5z9f9?6rD0S=bHJ#EbwIWxhdw{SiyovV{@{j_4BQ&mouY&VjpsC-}=2*3+A_dKMm`04Kel0@KVmDEs3ft{W zxu}~EuZKXMcEfiddxl_8#T+Mh?oSV(PRG^*EpAMg?@Mr%x;Fw~NbC*y5)hxc*Lh~v zLU$vadGbA6+q}f>mT?-3nf7{s<@Uf7|BL3S0R)#SjB3@tn(;Agz`WBhdK+bS(ZzwQ z&rs#u^!!k{;ubd={&0Sb>69g|Mn;1Q(Ose1t@zdu2L8;kwo370*a$4aeqch{V5aM! zvTYt?08%A#S7zC;r!pK!R@rH+;6azREGJBkvxUOr?DC$7+-(wIC-K({LyH&2Fe0QL zBNiADExAIK;m#jYG#nFSCi*#ImW9Y8F|Qn~iKLiaeehaa7!V77@_ae)^5R6PC5wa| z{(cHSvfiNpxLcHGeZxfX>GsU_gJiDPr;^-~fvidHgvNq}xU!_kuC)AS=VJP{X>W<2 zxHg3SO49Wn$01>Xz+Tdz?XN&Z))4Z$Er%haoH`oww1yS9#L7R^T zK6wlm)iSe~yy70Y>^o_akT2-TJV5U>ENq-D1XA^aYQA9%ehNT;tQz5(SGsH+D~u%t zA@TLU(p2reY3?D^!$&=sE4YWQaT{LpTVOT=VWAz!l#7QGi+1uXlfnX~YJ4G$9S-*I z$gj+9VGU6yUs8A47oB_4 zDty(8>-S0P1NbQO{o*fiU#;;0(2KY=CR8L(@z?VWSARq3!ts@WuZTs0C93&YAYx)= z4=?j2!fF%;kS%ppkRw7d7E{K{+&mN617Sh41xB>Q^amREG`V4EnqL93+~}G5`4|u+ z*`?!c_?rb+Pxpll_|C$Yfw`@m-U|C_QSs)DnVFxSZtgCam6?|>zE&`oUs4CQ^LTGV z4y@-BSF#S^2ZH=(QpIyFI6s!*Ex4aXzC`9r+^ILwC+oBS0toI97U`s*d)1&E397*v zGkLGdOIwhjDJN!0<*cxsbyxJtcuF_CW9$RVhcnUjhTU0N50{SdEvsvZf@=FRikKNMd><}K3(e?`?F?daQ3q65E>=CFzUoJf9CVyG zp_Dzh^PHiN$jw)nNeaJvnodh#RNZWY+ESsqoO$rdCWbpe4Se8!!gK64hxT{Ie8bsJ zY1?#8zEM>;iEVU=^w&dEFS4`@S(ypS44?B3! zejPU;MKeFA_9`1(HdbEkAtoe|@6r-;!Ju>#4$uG_vx@dR(1^7%$|MHO)j}4?VDio| zLna2P%GOr3o(EmQ&UvfFa8rR{w34zgZgL!Xzqb{lVT9-$P!sIzIE_ z=P~1vfZa-KCgoEr&E;OR={9TUHGZSjCWD`=2QuXp2tz)?hPb(Yx=r{;B}To{f-p+j z4aXVPiK(18^jhm%n#QE>N9DeX3o+hVP~^+3PG+vWs;!&*TI?|7=*`43#UEAzAHDI+ z7w}7<9hFK~QKDFjBbW7jPWhc#FinIHa=yC3eQIfWRg8U<7g0n@D3{51c(C7gw`a>= zmZb+JxB%;fRjFC;Ruonu%IhX(d84m_L&JOc$xL>|;*a4zOrD=eWb3?{%ou;!_ZPkB zAt){YO7q@e$Q8zcjEZC9Z;S^?PD}*i`!iO?Oe3kZX|r(bmaE^P&EpjrU*>7q7wDu? zyjOH0_(`6Ts{HLGZc==rI)^B(jQ9oX+UQu{?aif3`7FK9qk$^HZH_{Mo+G)={!xWR zn47^z%xT-;ZBgi*7Kky4h{_2dR@)I_Ru-Y12c0ExdNy{pR>dD3Y{d=qixFAdBDcG!Ipw6afxNxFM?LTBJ0 zOgh`*Jx5Y;9{nyddD4#$t$$fTceQfgAT}9L6&VnEp zwo$UR(BX)QnODO@ zIM8NET#Pya+Nvbz>oeyKGv$f8NQs8VDl?QSq{RgURH@EVPHwX21?P;O7fSmSH)y4d zYS~fLCh8ZSjZvB6Z>+?z96Q;FUJ};*vj5KZ>nrA_bgcKTCB%SdCTjqHV49w{- zZpY*Jh@BGlu*?7?<$Kn5MxPRS5ZJzeh&=$=uo49R%DiJNOTAsuzOzTBfulN?_qnQF z_vq+=wu1QfxuoGNoQiuGb2If09m)Vcw1gAOZpov0nKml}&9ZXsPQd-e35Oz9sc8T7 z$}FG!tnBt*Y_`uXIB4F&2y7_?_%B6<6nP82eq5`4v~u&KH3RDaQFtGXRf>DWHb03{ z{SwnpO9rNyV}M0Qd)A`^yVPb#wAShOkUFI8DGg#|I#l5PIa7=(P)0VfzsQ6S_2~S8 zy9)5BVIz6f>~bnE-K2PrW0 zn#IArpf@0pNvI$bT;@E}?jgGL$Dy!uZe~qRPP2MSX5DTIhd_?;l+cC8kaTJS;oy2!Kl;5jeeT!FCh9ed4=(AfRyv~_gNXtHE96AaDzfJ*cWo7Z zb(EZGOA>*y9);^D<0w`j$?ZhVc%D8iqdLp!JL*$_=q!z#al7oU&^(iHenkcg5d9R` zLnD=WWfadONh?M64Pin^aJ#I^odGh2S!=I&ix++_CoeZod4|He68vVLN25`C72k{1 zw7%9vvL^YXby&VP3%c8gN48Qn<1zZ0#kx4W{YTm^`w&?;rRLmz*@V~{7PX_O;^d54 zqU2!N@on$qjE8}(c-<3~abt`eIG;I?@yr8iiB{q>9FebPJR)W4GxLIm*uE7Y9(YrB zJKtIY?XxIP9ip^r1@;7n-co;I?HXZqD$b6lg?w)*Iny#C+CsT$4ZUW54p%&$+we|G zNLHp`Q-3~8b#T%*@_uD&b;}af;4sge$`5!I{YTAE8j%XdW^Cwlp zZk&wj+c8}k zFG#%z%B#^^MOeGE!J8D51tx!QgeJ6H_W!6bta%Y{!oJq$tt940jCPGRGu;N6`i^Mb z@$2@aLcKyN^2rS&9>hc42*3KNmHl+mY3bIxD7+G=J|rkOTw&wfBT347$_@p>gr{2r zDZH;RoAYU0w{G34=vxUmoM!aCv~F$0XIdAw30$dM+%Iq~gI((D$Q@gYToJic9W>m{ z!9Jg-bR=%Pl>xr#!$$88dFU!7{<@QGQI^qWnd@u?i(wpofJ&&Iv#{BcjlsXCwbKqR zq;w0;v}d+^qpCyVH_B$t_|mZ=`$MQTN6Rt}MMk^a%&_6-9gxvy$I3F0@h9%egmJ2( zjn$|9;x55L^dNOnHXbe3N4V(fi^qsp3+k(S9+6g*bkb#2+F$1UiGCgMW3FE^ZWwbe z7cBeMM+z_OF{VZ?|CAXOUc4M=9KJIJZ`^%x?v1-H`cw4d2IO+F*W{exan7aJrL)TH z&WFA!RTs?zlOF=_A>%lgdbFl6sW#-A$|VyFygYL z5h%EAex7Tp_Q=mG903{ntGeYc~fcc zEKR96lmD4>(#Ou?_e6fdP?GLjzkX~C9e?lNnP4u8o-UhvYBaf*vs+o-N1dT{HcDde zDWj02wSp)+mU&>O((!0)1zBt58)p~I@yoPB!gFC@G+IKCpca=-$D6?`85Z7GWm4yH z9Fcw|Sb4VRzSG$uv>%8+yMR3ll5}xjZXJvs^hDEHpqnYl=#R7v9cE=Ay3D-8mXhoc z{4LiYzrEyECvD?`=K;$P9H$MHKF^y@_-y<6G#!bIt+<2&$I`3kEoh5trcyTbo@yCE zpXq^igmyJLm$sL%TB#GXB6ze9#=f0Q#==N+ke`bZ%Ddbaj@@g zNAh@+$*^uYei5{eB~i43V;(FOPHOX ztF8QMQbUPJqcY)i##_LTKw6Ouyg_}n`u3%ycmp{$HMAU@SBGBV%ozOfEO|>VIW_A5 z>h8$N$?3xh-_3mgJ}nJq(;Y_CaWM4(70vb$u!`Ibknj&=95q_`+UwqZYUFDpx#?=` z`KvgVm1|F<`uNs;t`Fu?H*kAPKPPVqYkaTIaBE$jptr{@F`z0o}FxTj(VFD>qo+uVo(d5vaCV z#p>l|rFCG~WJk!B!EkEDXXLr918oi1PWtM>(KJ>jmF2Ks97&%~+);%gRbQ%lm#SX>Esv^R7Qu(^ zBdK|U^mfe^S-oM+(8t_@moinu;D)_5Ks9SpN4N4Rwh?Ibyhi(w&06;8Al6%GVOaGg<-xR-%xCVU+rrLVQ#tOA|>}&rDUfKpo2xlV) z=UV(05d_6jbI=3)mRsV4D&<^RuZ@UU>fbN>Ej;&zWV%wb8oZQXNmsh+dwB;7Tn zUDd*;jFoRgRQ8J+F#DjuZv3-;P(d)&6(J-0;t2_6PY&35^a(|GHs+WwL(&iIJW1LH z_(8%?fmtQ{;WuCLF&u2*MQiOJ5ifeYEFxw2THCzKcUl*Yx#zz5MS9_f$Q9gfo_>3= z)hd5rh0=E2k$C#RJ*3~x1@R6)@K!cB73P+OS&eGC;_m6?o9M$A#;m6`nHfj##ZUmV zhj2>^PItiCRZ(n*$lNkw++>{c?X7V3@CJ*%SIj{P78jqNOrY9+@L#~qh#M(WKuCdMIk zGnMzbXn?Qt$MA)8&pU~`0ArrjE?F$=PG9(fWeIz(jLsCW#LZuMzC7~>KEgnRdaKu-;y+nml;_!^5ETVzWDB@>pXTkj|!qvgb z0oZ$xBBu^i2DZp9n@Bj|@a!3fs7a4xC0x*`F_ym25xNKuE5y#c@b$_J3j>aaQ+fd^ zz@yH-n9=(3^TeBNe9VbOw$VLq(!jHcvAz-RY$A_=g|jcLAYnb&>K;K75nTtF$AUf) z)HxU|db7o-=){ZL*=g4~%~gmVYj@x^{r1Sn>%hSt&)cAQG$R5%Z$l=GE{r@=O@pdM(q*NM8=Gq0l`SZ!aV~@3W_$uK(F2tb{BSoRfz5b5wfDqN1FfB%69TnwZ( z6=%2}eOAi%?AX~75naRYueyvJ_Gm*oq?PQ><}?+b(CgZl^YO!e@^si6c;htB$Wax~ zwcDQ3s(sG*dE!CUL!j&7-sU>rUcPglxgJtGU2+j15N#h1gMFLl?> z_tb`r=sK8;t~e%B*Ka9GzT4R<_MjBb--+QQOWwo*Ic>nYf> zX9Et5XK2^d7n1;1jGYek9>O66e$JD8DQ9d_TE~!&H>NXYFqo7w5#n-vE{G3R@i06@X`o=*!(iQ@33HX))AH&TqV43So%%^( z29Gqi2FCWk6uNA+O5ujeSXjWD*w+-gOg(k~Q0OB3tY zB3+Jgn#$de$=_xfYy>uL7k$}~VvHiGk>#M|F1ZjhbJdM{Lf!Pvp%2~Ckl}8g8h&H= za=0m61?PU8XU1`&#JfZU*E<$lBJaWyc*~*bbDg8l!S*(kXD`cSXQ=z%HyX`(5S!pG zwepyhSmp1q})ds9kUE< ztbf?<);~1OekA;9J6w$I988_8d4F5&$tc)R+VU@}{YMb3EAh`qNdEPRr4#paZH&R4 zo&II=bE|)vTxZU1<}rEu@T)y0H+peZ*OZnqCk^)8M_XUnAF>a>0~b0FC@Lntm6(_} zB@z1e-trvZ;U{oGbm9E$WGjVWt#lCbDBR>x0hdgUiZRS>GfvXg>qZ7g65i8aqjj2k z>#5ssnHMy>-rF*r@v5)Zs@SsttTDH%ochZ=1g-0BuKUVRqzn5xLmyh6_*hDM61H8rq?}{FdqDjUvm)W z3cFDyHd5Tx`qfFzTcRnp_y8P-^ZaV+ym$tcE6p18_a-W3YzVCWW z$AcOjxK{IJw5FLFY?&ldWvj_>yIs>KmU~uMdbq{p88~0+TJ)heDEhWW;G`G#7*=5N z?BedK1rUPhJ9IHj7D1bINT{f|HE@Q%&*^^VMLt1P^=*a^!G?wN5h$d=C+Xe;b&54@;(EQj(O3wN)dbko)LOp+ifpDJb?kJxRb=JUbr`(Ok*R%XhDO5l9BFdM0h{!(7fz zQL!g6$T`jwp1UP(qpo3Nn;)6+>09e^++XM$Mc+@Prl+uq<*vIY!F2wab2-r4nXb;R z@O`%IAVsZ^pEx`W_*zt30FTymH|VwBxS>_v4q5vvYPY$Z_pgU2@7x?@yu*2rHUXs% zQWO~BhVIk4T{wwJr3MMbR*H}6+w?uMP^t*I!ZRS;rSga^b5DtgrB2bVE4^xBWI8n9 zHs;D)snWJ_$)4@&F|@)df0N2bI{4x7Yb=ok&uXv=e+U3{WrWanS-1yoHrWO_$ zjn2P<(O(#=Hvhu-EA;KTzWgI?xK86z`WuFriHWMTth%-yCK%rQM=<;y5dTg?=n1sQ z5W~3=Qz)*{$P3285c@X-kIDbe=taPvQlo#=O1c6AXU^y9?&N0cX!&nSc^7JbQ2Omf zU%vD21d(82Oyo)p)3%L!&Vu{*geg?lfOmqAF~I*JhtZO?u>E_rpZ~ks{{g(tl=&K9UT`Gke_{H6!uG}} z#>hsyF8_<{y=&Mz!7fzS$y$27cC`e9|JF#Sj{j<;zu5jpyv~;88e(4X&3pfa?f(tD zGfh{`ZPE5n0@FkJaR2OdJHh)H@c-EMk7>YP4t3N0Pp-e=CVu$~{O-TEF#`wFA6x@z z{|ndu1M)_`p4#U%b$KcxEUaF6EUfFUx)U5jcb(|9)a51?7~}W3Q?7rw>Tj^?CS~}8 z<_X7tq4~e!&V1BWb7e-Gr(&wVhbg4jaCd^IIIolZcQpFTk^wG%TJks4b&7P?pz?yd zxc&>p{{{8;5Of{&`tXq#{OQp(R34LmxBS0G?7t62ztxpT-)a_V@&_}=S=Re;PrbZcfA(B=W*9_Ym#fV=nOXh*W=e`b${{rJ*&G8^g9*5 zp3+C^^S>Z|C+627e%s@Ex`2O;%T92MG|qoAq3gE5#UxNzSag_Qots!# LpJXs20@nWn4n=V! literal 0 HcmV?d00001 diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/aces.json b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/aces.json new file mode 100755 index 0000000..f1398cc --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/aces.json @@ -0,0 +1,22 @@ +{ + "ınitialize": { + "conditions": [ + ], + "actions": [ + { + "c2id": 1, + "id": "initializeapp1", + "scriptName": "initializeApp", + "highlight": false, + "params": [ + {"id":"api_key0", "type":"string", "initialValue":"\"\""}, + {"id":"auth_domain1", "type":"string", "initialValue":"\"\""}, + {"id":"database_url2", "type":"string", "initialValue":"\"\""}, + {"id":"storage_bucket3", "type":"string", "initialValue":"\"\""} + ] + } + ], + "expressions": [ + ] + } +} diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/addon.json b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/addon.json new file mode 100755 index 0000000..702af7c --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/addon.json @@ -0,0 +1,33 @@ +{ + "is-c3-addon": true, + "type": "plugin", + "name": "Firebase API v3", + "id": "Rex_FirebaseAPIV3", + "version": "3.3.0.0", + "author": "Rex.Rainbow", + "website": "http://c2rexplugins.weebly.com/rex_firebaseapiv3.html", + "documentation": "http://c2rexplugins.weebly.com/rex_firebaseapiv3.html", + "description": "3.x API of real time database-as-a-service. https://firebase.google.com/", + "editor-scripts": [ + "plugin.js", + "type.js", + "instance.js" + ], + "file-list": [ + "firebase.js", + "c2runtime/runtime.js", + "c3runtime/plugin.js", + "c3runtime/type.js", + "c3runtime/instance.js", + "c3runtime/conditions.js", + "c3runtime/actions.js", + "c3runtime/expressions.js", + "lang/en-US.json", + "aces.json", + "addon.json", + "icon.png", + "plugin.js", + "type.js", + "instance.js" + ] +} diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/c2runtime/runtime.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/c2runtime/runtime.js new file mode 100755 index 0000000..7fff8f5 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/c2runtime/runtime.js @@ -0,0 +1,704 @@ +// ECMAScript 5 strict mode +"use strict"; + +assert2(cr, "cr namespace not created"); +assert2(cr.plugins_, "cr.plugins_ not created"); + +// 2.x: window["Firebase"] +// 3.x: window["firebase"] +window["Firebase"] = window["firebase"]; +window["FirebaseV3x"] = true; + +///////////////////////////////////// +// Plugin class +cr.plugins_.Rex_FirebaseAPIV3 = function(runtime) +{ + this.runtime = runtime; +}; + +(function () +{ + var pluginProto = cr.plugins_.Rex_FirebaseAPIV3.prototype; + + ///////////////////////////////////// + // Object type class + pluginProto.Type = function(plugin) + { + this.plugin = plugin; + this.runtime = plugin.runtime; + }; + + var typeProto = pluginProto.Type.prototype; + + typeProto.onCreate = function() + { + }; + + ///////////////////////////////////// + // Instance class + pluginProto.Instance = function(type) + { + this.type = type; + this.runtime = type.runtime; + }; + + var instanceProto = pluginProto.Instance.prototype; + + instanceProto.onCreate = function() + { + window["Firebase"]["database"]["enableLogging"](this.properties[4] === 1); + if (this.properties[0] !== "") + { + this.initializeApp(this.properties[0], this.properties[1], this.properties[2], this.properties[3]); + } + }; + + instanceProto.onDestroy = function () + { + }; + instanceProto.initializeApp = function (apiKey, authDomain, databaseURL, storageBucket) + { + var config = { + "apiKey": apiKey, + "authDomain": authDomain, + "databaseURL": databaseURL, + "storageBucket": storageBucket, + }; + window["Firebase"]["initializeApp"](config); + runAfterInitializeHandlers(); + }; + + // 2.x , 3.x + var isFirebase3x = function() + { + return (window["FirebaseV3x"] === true); + }; + + var isFullPath = function (p) + { + return (p.substring(0,8) === "https://"); + }; + + var getRef = function(path) + { + // 2.x + if (!isFirebase3x()) + { + return new window["Firebase"](path); + } + + // 3.x + else + { + var fnName = (isFullPath(path))? "refFromURL":"ref"; + return window["Firebase"]["database"]()[fnName](path); + } + + }; + + instanceProto.getRef = function(k) + { + if (k == null) + k = ""; + var path; + if (isFullPath(k)) + path = k; + else + path = this.rootpath + k + "/"; + + return getRef(path); + }; + + var getKey = function (obj) + { + return (!isFirebase3x())? obj["key"]() : obj["key"]; + }; + + var getRefPath = function (obj) + { + return (!isFirebase3x())? obj["ref"]() : obj["ref"]; + }; + + var getRoot = function (obj) + { + return (!isFirebase3x())? obj["root"]() : obj["root"]; + }; + + var serverTimeStamp = function () + { + if (!isFirebase3x()) + return window["Firebase"]["ServerValue"]["TIMESTAMP"]; + else + return window["Firebase"]["database"]["ServerValue"]; + }; + + var getTimestamp = function (obj) + { + return (!isFirebase3x())? obj : obj["TIMESTAMP"]; + }; + // 2.x , 3.x + ////////////////////////////////////// + // Conditions + function Cnds() {}; + pluginProto.cnds = new Cnds(); + + ////////////////////////////////////// + // Actions + function Acts() {}; + pluginProto.acts = new Acts(); + + Acts.prototype.initializeApp = function (apiKey, authDomain, databaseURL, storageBucket) + { + this.initializeApp(apiKey, authDomain, databaseURL, storageBucket); + }; + + ////////////////////////////////////// + // Expressions + function Exps() {}; + pluginProto.exps = new Exps(); + + // -------------------------------------------------------------------------- + // -------------------------------------------------------------------------- + // -------------------------------------------------------------------------- + var __afterInitialHandler = []; + var addAfterInitialHandler = function(callback) + { + if (__afterInitialHandler === null) + callback() + else + __afterInitialHandler.push(callback); + }; + var runAfterInitializeHandlers = function() + { + var i, cnt=__afterInitialHandler.length; + for(i=0; i this.items.length - 1)) + end = this.items.length - 1; + + var current_frame = runtime.getCurrentEventStack(); + var current_event = current_frame.current_event; + var solModifierAfterCnds = current_frame.isModifierAfterCnds(); + + var i; + for(i=start; i<=end; i++) + { + if (solModifierAfterCnds) + { + runtime.pushCopySol(current_event.solModifiers); + } + + if (this.onGetIterItem) + this.onGetIterItem(this.items[i], i); + current_event.retrigger(); + + if (solModifierAfterCnds) + { + runtime.popSol(current_event.solModifiers); + } + } + + return false; + }; + // export + // -------------------------------------------------------------------------- + + // -------------------------------------------------------------------------- + // internal + ItemListKlassProto.addItem = function(snapshot, prevName, force_push) + { + var item; + if (this.snapshot2Item) + item = this.snapshot2Item(snapshot); + else + { + var k = getKey(snapshot); + item = snapshot["val"](); + item[this.keyItemID] = k; + } + + if (force_push === true) + { + this.items.push(item); + return; + } + + if (prevName == null) + { + this.items.unshift(item); + } + else + { + var i = this.itemID2Index[prevName]; + if (i == this.items.length-1) + this.items.push(item); + else + this.items.splice(i+1, 0, item); + } + + return item; + }; + + ItemListKlassProto.removeItem = function(snapshot) + { + var k = getKey(snapshot); + var i = this.itemID2Index[k]; + var item = this.items[i]; + cr.arrayRemove(this.items, i); + return item; + }; + + ItemListKlassProto.updateItemID2Index = function() + { + cleanTable(this.itemID2Index); + var i,cnt = this.items.length; + for (i=0; i this.items.length - 1)) + end = this.items.length - 1; + var current_frame = runtime.GetEventSheetManager().GetCurrentEventStackFrame(); + var current_event = current_frame.GetCurrentEvent(); + var solmod = current_event.GetSolModifiers(); + var solModifierAfterCnds = current_frame.IsSolModifierAfterCnds(); + var c = runtime.GetEventSheetManager().GetEventStack(); + var p = runtime.GetEventStack(); + var h = c.Push(current_event); + + var i; + for(i=start; i<=end; i++) + { + if (solModifierAfterCnds) + { + runtime.GetEventSheetManager().PushCopySol(solmod); + } + + if (this.onGetIterItem) + this.onGetIterItem(this.items[i], i); + current_event.Retrigger(current_frame,h); + + if (solModifierAfterCnds) + { + runtime.GetEventSheetManager().PopSol(solmod); + } + } + p.Pop(); + + return false; + }; + // export + // -------------------------------------------------------------------------- + + // -------------------------------------------------------------------------- + // internal + ItemListKlassProto.addItem = function(snapshot, prevName, force_push) + { + var item; + if (this.snapshot2Item) + item = this.snapshot2Item(snapshot); + else + { + var k = getKey(snapshot); + item = snapshot["val"](); + item[this.keyItemID] = k; + } + + if (force_push === true) + { + this.items.push(item); + return; + } + + if (prevName == null) + { + this.items.unshift(item); + } + else + { + var i = this.itemID2Index[prevName]; + if (i == this.items.length-1) + this.items.push(item); + else + this.items.splice(i+1, 0, item); + } + + return item; + }; + + ItemListKlassProto.removeItem = function(snapshot) + { + var k = getKey(snapshot); + var i = this.itemID2Index[k]; + var item = this.items[i]; + C3.arrayRemove(this.items, i); + return item; + }; + + ItemListKlassProto.updateItemID2Index = function() + { + cleanTable(this.itemID2Index); + var i,cnt = this.items.length; + for (i=0; i1)for(var r=1;r255;)t[r++]=255&o,o>>=8;t[r++]=o}return t},o=function(e){if(e.length<8192)return String.fromCharCode.apply(null,e);for(var t="",r=0;r>2,l=(3&i)<<4|c>>4,h=(15&c)<<2|u>>6,p=63&u;s||(p=64,a||(h=64)),n.push(r[f],r[l],r[h],r[p])}return n.join("")},encodeString:function(e,t){return this.HAS_NATIVE_SUPPORT&&!t?btoa(e):this.encodeByteArray(n(e),t)},decodeString:function(e,t){return this.HAS_NATIVE_SUPPORT&&!t?atob(e):o(this.decodeStringToByteArray(e,t))},decodeStringToByteArray:function(e,t){this.O();for(var r=t?this.g:this.b,n=[],o=0;o>4;if(n.push(h),64!=u){var p=c<<4&240|u>>2;if(n.push(p),64!=l){var d=u<<6&192|l;n.push(d)}}}return n},O:function(){if(!this.y){this.y={},this.b={},this._={},this.g={};for(var e=0;e=this.ENCODED_VALS_BASE.length&&(this.b[this.ENCODED_VALS_WEBSAFE.charAt(e)]=e,this.g[this.ENCODED_VALS.charAt(e)]=e)}}},t.base64Encode=function(e){var r=n(e);return t.base64.encodeByteArray(r,!0)},t.base64Decode=function(e){try{return t.base64.decodeString(e,!0)}catch(e){console.error("base64Decode failed: ",e)}return null}},function(e,t,r){"use strict";function n(e){return JSON.parse(e)}function o(e){return JSON.stringify(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.jsonEval=n,t.stringify=o},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.contains=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.safeGet=function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]},t.forEach=function(e,t){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t(r,e[r])},t.extend=function(e,r){return t.forEach(r,function(t,r){e[t]=r}),e},t.clone=function(e){return t.extend({},e)},t.isNonNullObject=function(e){return"object"==typeof e&&null!==e},t.isEmpty=function(e){for(var t in e)return!1;return!0},t.getCount=function(e){var t=0;for(var r in e)t++;return t},t.map=function(e,t,r){var n={};for(var o in e)n[o]=t.call(r,e[o],o,e);return n},t.findKey=function(e,t,r){for(var n in e)if(t.call(r,e[n],n,e))return n},t.findValue=function(e,r,n){var o=t.findKey(e,r,n);return o&&e[o]},t.getAnyKey=function(e){for(var t in e)return t},t.getValues=function(e){var t=[],r=0;for(var n in e)t[r++]=e[n];return t},t.every=function(e,t){for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)&&!t(r,e[r]))return!1;return!0}},,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,r){r(58),e.exports=r(6).default},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(59),o=(r.n(n),r(63)),i=(r.n(o),r(64));r.n(i)},function(t,r,n){(function(t){var r=function(){if(void 0!==t)return t;if(void 0!==e)return e;if("undefined"!=typeof self)return self;throw Error("unable to locate global object")}();"undefined"==typeof Promise&&(r.Promise=Promise=n(60))}).call(r,n(19))},function(e,t,r){(function(t){!function(r){function n(){}function o(e,t){return function(){e.apply(t,arguments)}}function i(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=void 0,this.T=[],l(e,this)}function a(e,t){for(;3===e._state;)e=e._value;if(0===e._state)return void e.T.push(t);e._handled=!0,i.A(function(){var r=1===e._state?t.onFulfilled:t.onRejected;if(null===r)return void(1===e._state?c:s)(t.promise,e._value);var n;try{n=r(e._value)}catch(e){return void s(t.promise,e)}c(t.promise,n)})}function c(e,t){try{if(t===e)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var r=t.then;if(t instanceof i)return e._state=3,e._value=t,void u(e);if("function"==typeof r)return void l(o(r,t),e)}e._state=1,e._value=t,u(e)}catch(t){s(e,t)}}function s(e,t){e._state=2,e._value=t,u(e)}function u(e){2===e._state&&0===e.T.length&&i.A(function(){e._handled||i.j(e._value)});for(var t=0,r=e.T.length;t=0&&(e.N=setTimeout(function(){e.M&&e.M()},t))},n(62),r.setImmediate=setImmediate,r.clearImmediate=clearImmediate},function(e,t,r){(function(e,t){!function(e,r){"use strict";function n(e){"function"!=typeof e&&(e=Function(""+e));for(var t=Array(arguments.length-1),r=0;r>>0;if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var n=arguments[1],o=0;o>>0;if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var n=arguments[1],o=0;o"}),r=this.serviceName+": "+r+" ("+o+").";var i=new a(o,r);for(var c in t)t.hasOwnProperty(c)&&"_"!==c.slice(-1)&&(i[c]=t[c]);return i},e}();t.ErrorFactory=c},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(29),o=r(30);t.decode=function(e){var t={},r={},i={},a="";try{var c=e.split(".");t=o.jsonEval(n.base64Decode(c[0])||""),r=o.jsonEval(n.base64Decode(c[1])||""),a=c[2],i=r.d||{},delete r.d}catch(e){}return{header:t,claims:r,data:i,signature:a}},t.isValidTimestamp=function(e){var r,n,o=t.decode(e).claims,i=Math.floor((new Date).getTime()/1e3);return"object"==typeof o&&(o.hasOwnProperty("nbf")?r=o.nbf:o.hasOwnProperty("iat")&&(r=o.iat),n=o.hasOwnProperty("exp")?o.exp:r+86400),i&&r&&n&&i>=r&&i<=n},t.issuedAtTime=function(e){var r=t.decode(e).claims;return"object"==typeof r&&r.hasOwnProperty("iat")?r.iat:null},t.isValidFormat=function(e){var r=t.decode(e),n=r.claims;return!!r.signature&&!!n&&"object"==typeof n&&n.hasOwnProperty("iat")},t.isAdmin=function(e){var r=t.decode(e).claims;return"object"==typeof r&&!0===r.admin}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(31);t.querystring=function(e){var t=[];return n.forEach(e,function(e,r){Array.isArray(r)?r.forEach(function(r){t.push(encodeURIComponent(e)+"="+encodeURIComponent(r))}):t.push(encodeURIComponent(e)+"="+encodeURIComponent(r))}),t.length?"&"+t.join("&"):""},t.querystringDecode=function(e){var t={};return e.replace(/^\?/,"").split("&").forEach(function(e){if(e){var r=e.split("=");t[r[0]]=r[1]}}),t}},function(e,t,r){"use strict";var n=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])};return function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=r(72),i=function(e){function t(){var t=e.call(this)||this;t.D=[],t.I=[],t.x=[],t.F=[],t.L=0,t.R=0,t.blockSize=64,t.F[0]=128;for(var r=1;r>>31)}for(var i,a,c=this.D[0],s=this.D[1],u=this.D[2],f=this.D[3],l=this.D[4],n=0;n<80;n++){n<40?n<20?(i=f^s&(u^f),a=1518500249):(i=s^u^f,a=1859775393):n<60?(i=s&u|f&(s|u),a=2400959708):(i=s^u^f,a=3395469782);var o=(c<<5|c>>>27)+i+l+a+r[n]&4294967295;l=f,f=u,u=4294967295&(s<<30|s>>>2),s=c,c=o}this.D[0]=this.D[0]+c&4294967295,this.D[1]=this.D[1]+s&4294967295,this.D[2]=this.D[2]+u&4294967295,this.D[3]=this.D[3]+f&4294967295,this.D[4]=this.D[4]+l&4294967295},t.prototype.update=function(e,t){if(null!=e){void 0===t&&(t=e.length);for(var r=t-this.blockSize,n=0,o=this.I,i=this.L;n=56;r--)this.I[r]=255&t,t/=256;this.B(this.I);for(var n=0,r=0;r<5;r++)for(var o=24;o>=0;o-=8)e[n]=this.D[r]>>o&255,++n;return e},t}(o.Hash);t.Sha1=i},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(){this.blockSize=-1}return e}();t.Hash=n},function(e,t,r){"use strict";function n(e,t){var r=new c(e,t);return r.subscribe.bind(r)}function o(e,t){return function(){for(var r=[],n=0;n 4. Need to update it?")}var o=e+" failed: ";return o+=n+" argument "}function o(e,t,r,o){if((!o||r)&&"string"!=typeof r)throw Error(n(e,t,o)+"must be a valid firebase namespace.")}function i(e,t,r,o){if((!o||r)&&"function"!=typeof r)throw Error(n(e,t,o)+"must be a valid function.")}function a(e,t,r,o){if((!o||r)&&("object"!=typeof r||null===r))throw Error(n(e,t,o)+"must be a valid context object.")}Object.defineProperty(t,"__esModule",{value:!0}),t.validateArgCount=function(e,t,r,n){var o;if(nr&&(o=0===r?"none":"no more than "+r),o){var i=e+" failed: Was called with "+n+(1===n?" argument.":" arguments.")+" Expects "+o+".";throw Error(i)}},t.errorPrefix=n,t.validateNamespace=o,t.validateCallback=i,t.validateContextObject=a},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(28);t.stringToByteArray=function(e){for(var t=[],r=0,o=0;o=55296&&i<=56319){var a=i-55296;o++,n.assert(o>6|192,t[r++]=63&i|128):i<65536?(t[r++]=i>>12|224,t[r++]=i>>6&63|128,t[r++]=63&i|128):(t[r++]=i>>18|240,t[r++]=i>>12&63|128,t[r++]=i>>6&63|128,t[r++]=63&i|128)}return t},t.stringLength=function(e){for(var t=0,r=0;r=55296&&n<=56319?(t+=4,r++):t+=3}return t}}])}().default; + +/*! + * @license Firebase v4.6.2 + * Build: rev-cbb07d3 + * Terms: https://firebase.google.com/terms/ + */ +try{webpackJsonpFirebase([4],{76:function(t,n,e){e(77)},77:function(t,n,e){(function(t){(function(){function t(t){return"string"==typeof t}function n(t){return"boolean"==typeof t}function i(){}function r(t){var n=typeof t;if("object"==n){if(!t)return"null";if(t instanceof Array)return"array";if(t instanceof Object)return n;var e=Object.prototype.toString.call(t);if("[object Window]"==e)return"object";if("[object Array]"==e||"number"==typeof t.length&&void 0!==t.splice&&void 0!==t.propertyIsEnumerable&&!t.propertyIsEnumerable("splice"))return"array";if("[object Function]"==e||void 0!==t.call&&void 0!==t.propertyIsEnumerable&&!t.propertyIsEnumerable("call"))return"function"}else if("function"==n&&void 0===t.call)return"object";return n}function o(t){return null===t}function a(t){return"array"==r(t)}function s(t){var n=r(t);return"array"==n||"object"==n&&"number"==typeof t.length}function u(t){return"function"==r(t)}function c(t){var n=typeof t;return"object"==n&&null!=t||"function"==n}function h(t,n,e){return t.call.apply(t.bind,arguments)}function f(t,n,e){if(!t)throw Error();if(2")&&(t=t.replace(vu,">")),-1!=t.indexOf('"')&&(t=t.replace(mu,""")),-1!=t.indexOf("'")&&(t=t.replace(gu,"'")),-1!=t.indexOf("\0")&&(t=t.replace(bu,"�")),t):t}function b(t,n){return-1!=t.indexOf(n)}function w(t,n){return tn?1:0}function y(t,n){n.unshift(t),v.call(this,m.apply(null,n)),n.shift()}function I(t,n){throw new y("Failure"+(t?": "+t:""),Array.prototype.slice.call(arguments,1))}function T(n,e){var i=n.length,r=t(n)?n.split(""):n;for(--i;0<=i;--i)i in r&&e.call(void 0,r[i],i,n)}function k(n){t:{for(var e=ke,i=n.length,r=t(n)?n.split(""):n,o=0;oe?null:t(n)?n.charAt(e):n[e]}function A(t,n){return 0<=Iu(t,n)}function E(t,n){n=Iu(t,n);var e;return(e=0<=n)&&Array.prototype.splice.call(t,n,1),e}function N(t,n){var e=0;T(t,function(i,r){n.call(void 0,i,r,t)&&1==Array.prototype.splice.call(t,r,1).length&&e++})}function S(t){return Array.prototype.concat.apply([],arguments)}function O(t){var n=t.length;if(0"),s=s.join("")}return s=o.createElement(s),u&&(t(u)?s.className=u:a(u)?s.className=u.join(" "):Lt(s,u)),2i.keyCode||void 0!=i.returnValue)){t:{var r=!1;if(0==i.keyCode)try{i.keyCode=-1;break t}catch(t){r=!0}(r||void 0==i.returnValue)&&(i.returnValue=!0)}for(i=[],r=n.b;r;r=r.parentNode)i.push(r);for(t=t.type,r=i.length-1;0<=r;r--){n.b=i[r];var o=an(i[r],t,!0,n);e=e&&o}for(r=0;r>4),64!=a&&(n(o<<4&240|a>>2),64!=s&&n(a<<6&192|s))}}function Cn(){if(!Sc){Sc={},Oc={};for(var t=0;65>t;t++)Sc[t]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(t),Oc[Sc[t]]=t,62<=t&&(Oc["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.".charAt(t)]=t)}}function _n(t,n){this.g=[],this.v=t,this.o=n||null,this.f=this.a=!1,this.c=void 0,this.u=this.w=this.i=!1,this.h=0,this.b=null,this.l=0}function Rn(t,n,e){t.a=!0,t.c=e,t.f=!n,Un(t)}function Dn(t){if(t.a){if(!t.u)throw new Mn;t.u=!1}}function Ln(t,n){xn(t,null,n,void 0)}function xn(t,n,e,i){t.g.push([n,e,i]),t.a&&Un(t)}function jn(t){return Au(t.g,function(t){return u(t[1])})}function Un(t){if(t.h&&t.a&&jn(t)){var n=t.h,e=Cc[n];e&&(uu.clearTimeout(e.a),delete Cc[n]),t.h=0}t.b&&(t.b.l--,delete t.b),n=t.c;for(var i=e=!1;t.g.length&&!t.i;){var r=t.g.shift(),o=r[0],a=r[1];if(r=r[2],o=t.f?a:o)try{var s=o.call(r||t.o,n);void 0!==s&&(t.f=t.f&&(s==n||s instanceof Error),t.c=n=s),(q(n)||"function"==typeof uu.Promise&&n instanceof uu.Promise)&&(i=!0,t.i=!0)}catch(i){n=i,t.f=!0,jn(t)||(e=!0)}}t.c=n,i&&(s=l(t.m,t,!0),i=l(t.m,t,!1),n instanceof _n?(xn(n,s,i),n.w=!0):n.then(s,i)),e&&(n=new Fn(n),Cc[n.a]=n,t.h=n.a)}function Mn(){v.call(this)}function Vn(){v.call(this)}function Fn(t){this.a=uu.setTimeout(l(this.c,this),0),this.b=t}function Kn(){this.b=-1}function qn(t,n){this.b=-1,this.b=_c,this.f=uu.Uint8Array?new Uint8Array(this.b):Array(this.b),this.g=this.c=0,this.a=[],this.i=t,this.h=n,this.l=uu.Int32Array?new Int32Array(64):Array(64),Pc||(Pc=uu.Int32Array?new Int32Array(jc):jc),this.reset()}function Xn(t){for(var n=t.f,e=t.l,i=0,r=0;rn;n++){r=0|e[n-15],i=0|e[n-2];var o=(0|e[n-16])+((r>>>7|r<<25)^(r>>>18|r<<14)^r>>>3)|0,a=(0|e[n-7])+((i>>>17|i<<15)^(i>>>19|i<<13)^i>>>10)|0;e[n]=o+a|0}i=0|t.a[0],r=0|t.a[1];var s=0|t.a[2],u=0|t.a[3],c=0|t.a[4],h=0|t.a[5],f=0|t.a[6];for(o=0|t.a[7],n=0;64>n;n++){var l=((i>>>2|i<<30)^(i>>>13|i<<19)^(i>>>22|i<<10))+(i&r^i&s^r&s)|0;a=c&h^~c&f,o=o+((c>>>6|c<<26)^(c>>>11|c<<21)^(c>>>25|c<<7))|0,a=a+(0|Pc[n])|0,a=o+(a+(0|e[n])|0)|0,o=f,f=h,h=c,c=u+a|0,u=s,s=r,r=i,i=a+l|0}t.a[0]=t.a[0]+i|0,t.a[1]=t.a[1]+r|0,t.a[2]=t.a[2]+s|0,t.a[3]=t.a[3]+u|0,t.a[4]=t.a[4]+c|0,t.a[5]=t.a[5]+h|0,t.a[6]=t.a[6]+f|0,t.a[7]=t.a[7]+o|0}function Bn(n,e,i){void 0===i&&(i=e.length);var r=0,o=n.c;if(t(e))for(;r=a&&a==(0|a)))throw Error("message must be a byte array");n.f[o++]=a,o==n.b&&(Xn(n),o=0)}}n.c=o,n.g+=i}function Hn(){qn.call(this,8,Uc)}function Wn(n){if(n.P&&"function"==typeof n.P)return n.P();if(t(n))return n.split("");if(s(n)){for(var e=[],i=n.length,r=0;rn)throw Error("Bad port number "+n);t.i=n}else t.i=null}function Qn(t,n,e){n instanceof se?(t.a=n,ve(t.a,t.f)):(e||(n=oe(n,qc)),t.a=new se(n,0,t.f))}function te(t,n,e){t.a.set(n,e)}function ne(t,n){return t.a.get(n)}function ee(t){return t instanceof Yn?new Yn(t):new Yn(t,void 0)}function ie(t,n){var e=new Yn(null,void 0);return $n(e,"https"),t&&(e.b=t),n&&(e.g=n),e}function re(t,n){return t?n?decodeURI(t.replace(/%25/g,"%2525")):decodeURIComponent(t):""}function oe(n,e,i){return t(n)?(n=encodeURI(n).replace(e,ae),i&&(n=n.replace(/%25([0-9a-fA-F]{2})/g,"%$1")),n):null}function ae(t){return t=t.charCodeAt(0),"%"+(t>>4&15).toString(16)+(15&t).toString(16)}function se(t,n,e){this.b=this.a=null,this.c=t||null,this.f=!!e}function ue(t){t.a||(t.a=new kn,t.b=0,t.c&&Jn(t.c,function(n,e){he(t,decodeURIComponent(n.replace(/\+/g," ")),e)}))}function ce(t){var n=Gn(t);if(void 0===n)throw Error("Keys are undefined");var e=new se(null,0,void 0);t=Wn(t);for(var i=0;i2*t.c&&An(t)))}function le(t,n){return ue(t),n=de(t,n),En(t.a.b,n)}function pe(t,n,e){fe(t,n),0t||Cu&&Mu&&!(9',t=Rt(t),a.document.write(_t(t)),a.document.close())):a=t.open(St(n),e,a),a)try{a.focus()}catch(t){}return a}function Je(t){return new Z(function(n){function e(){gn(2e3).then(function(){if(t&&!t.closed)return e();n()})}return e()})}function Ye(){var t=null;return new Z(function(n){"complete"==uu.document.readyState?n():(t=function(){n()},nn(window,"load",t))}).s(function(n){throw en(window,"load",t),n})}function $e(){return Ze(void 0)?Ye().then(function(){return new Z(function(t,n){var e=uu.document,i=setTimeout(function(){n(Error("Cordova framework is not ready."))},1e3);e.addEventListener("deviceready",function(){clearTimeout(i),t()},!1)})}):et(Error("Cordova must run in an Android or iOS file scheme."))}function Ze(t){return t=t||ri(),!("file:"!==ci()||!t.toLowerCase().match(/iphone|ipad|ipod|android/))}function Qe(){var t=uu.window;try{return!(!t||t==t.top)}catch(t){return!1}}function ti(){return au.INTERNAL.hasOwnProperty("reactNative")?"ReactNative":au.INTERNAL.hasOwnProperty("node")?"Node":"Browser"}function ni(){var t=ti();return"ReactNative"===t||"Node"===t}function ei(t){var n=t.toLowerCase();return b(n,"opera/")||b(n,"opr/")||b(n,"opios/")?"Opera":b(n,"iemobile")?"IEMobile":b(n,"msie")||b(n,"trident/")?"IE":b(n,"edge/")?"Edge":b(n,"firefox/")?th:b(n,"silk/")?"Silk":b(n,"blackberry")?"Blackberry":b(n,"webos")?"Webos":!b(n,"safari/")||b(n,"chrome/")||b(n,"crios/")||b(n,"android")?!b(n,"chrome/")&&!b(n,"crios/")||b(n,"edge/")?b(n,"android")?"Android":(t=t.match(/([a-zA-Z\d\.]+)\/[a-zA-Z\d\.]*$/))&&2==t.length?t[1]:"Other":nh:"Safari"}function ii(t,n){n=n||[];var e,i=[],r={};for(e in eh)r[eh[e]]=!0;for(e=0;en)throw Error("Short delay should be less than long delay!");this.c=t,this.b=n,t=e||ri(),i=i||ti(),this.a=We(t)||"ReactNative"===i}function wi(){var t=uu.document;return!t||void 0===t.visibilityState||"visible"==t.visibilityState}function yi(){var t=uu.document,n=null;return wi()||!t?nt():new Z(function(e){n=function(){wi()&&(t.removeEventListener("visibilitychange",n,!1),e())},t.addEventListener("visibilitychange",n,!1)}).s(function(e){throw t.removeEventListener("visibilitychange",n,!1),e})}function Ii(t){try{var n=new Date(parseInt(t,10));if(!isNaN(n.getTime())&&!/[^0-9]/.test(t))return n.toUTCString()}catch(t){}return null}function Ti(t,n,e){ih?Object.defineProperty(t,n,{configurable:!0,enumerable:!0,value:e}):t[n]=e}function ki(t,n){if(n)for(var e in n)n.hasOwnProperty(e)&&Ti(t,e,n[e])}function Ai(t){var n={};return ki(n,t),n}function Ei(t){var n,e={};for(n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}function Ni(t,n){if(!n||!n.length)return!0;if(!t)return!1;for(var e=0;e Auth section -> Sign in method tab.",t):"http"==i||"https"==i?e=m("This domain (%s) is not authorized to run this operation. Add it to the OAuth redirect domains list in the Firebase console -> Auth section -> Sign in method tab.",t):n="operation-not-supported-in-this-environment",Pi.call(this,n,e)}function pr(t,n,e){Pi.call(this,t,e),t=n||{},t.rb&&Ti(this,"email",t.rb),t.Y&&Ti(this,"phoneNumber",t.Y),t.credential&&Ti(this,"credential",t.credential)}function dr(t){if(t.code){var n=t.code||"";0==n.indexOf(ph)&&(n=n.substring(ph.length));var e={credential:ur(t)};if(t.email)e.rb=t.email;else{if(!t.phoneNumber)return new Pi(n,t.message||void 0);e.Y=t.phoneNumber}return new pr(n,e,t.message)}return null}function vr(t){this.f=t}function mr(t,n,e){var i="Node"==ti();if(!(i=uu.XMLHttpRequest||i&&au.INTERNAL.node&&au.INTERNAL.node.XMLHttpRequest))throw new Pi("internal-error","The XMLHttpRequest compatibility library was not found.");this.b=t,t=n||{},this.i=t.secureTokenEndpoint||"https://securetoken.googleapis.com/v1/token",this.l=t.secureTokenTimeout||Ch,this.c=x(t.secureTokenHeaders||_h),this.g=t.firebaseEndpoint||"https://www.googleapis.com/identitytoolkit/v3/relyingparty/",this.h=t.firebaseTimeout||Rh,this.a=x(t.firebaseHeaders||Dh),e&&(this.a["X-Client-Version"]=e,this.c["X-Client-Version"]=e),this.f=new Me,this.o=new vr(i)}function gr(t,n){n?t.a["X-Firebase-Locale"]=n:delete t.a["X-Firebase-Locale"]}function br(t,n){n?(t.a["X-Client-Version"]=n,t.c["X-Client-Version"]=n):(delete t.a["X-Client-Version"],delete t.c["X-Client-Version"])}function wr(t,n,e,i,r,o,a){gi()?(He()?t=l(t.m,t):(Oh||(Oh=new Z(function(t,n){yr(t,n)})),t=l(t.u,t)),t(n,e,i,r,o,a)):e&&e(null)}function yr(t,n){((window.gapi||{}).client||{}).request?t():(uu[xh]=function(){((window.gapi||{}).client||{}).request?t():n(Error("CORS_UNSUPPORTED"))},Ln(De(At(Lh,{onload:xh})),function(){n(Error("CORS_UNSUPPORTED"))}))}function Ir(t,n){return new Z(function(e,i){"refresh_token"==n.grant_type&&n.refresh_token||"authorization_code"==n.grant_type&&n.code?wr(t,t.i+"?key="+encodeURIComponent(t.b),function(t){t?t.error?i(Vr(t)):t.access_token&&t.refresh_token?e(t):i(new Pi("internal-error")):i(new Pi("network-request-failed"))},"POST",""+ce(n),t.c,t.l.get()):i(new Pi("internal-error"))})}function Tr(t,n,e,i,r,o){var a=ee(t.g+n);te(a,"key",t.b),o&&te(a,"cb",""+fu());var s="GET"==e;if(s)for(var u in i)i.hasOwnProperty(u)&&te(a,u,i[u]);return new Z(function(n,o){wr(t,""+a,function(t){t?t.error?o(Vr(t,r||{})):n(t):o(new Pi("network-request-failed"))},e,s?void 0:Mt(li(i)),t.a,t.h.get())})}function kr(t){if(!Yc.test(t.email))throw new Pi("invalid-email")}function Ar(t){"email"in t&&kr(t)}function Er(t,n){return Ur(t,Kh,{identifier:n,continueUri:ui()?qe():"http://localhost"}).then(function(t){return t.allProviders||[]})}function Nr(t){return Ur(t,Gh,{}).then(function(t){return t.authorizedDomains||[]})}function Sr(t){if(!t[Ph])throw new Pi("internal-error")}function Or(t){if(t.phoneNumber||t.temporaryProof){if(!t.phoneNumber||!t.temporaryProof)throw new Pi("internal-error")}else{if(!t.sessionInfo)throw new Pi("missing-verification-id");if(!t.code)throw new Pi("missing-verification-code")}}function Pr(t,n){return Ur(t,Yh,n)}function Cr(t,n,e){return Ur(t,Xh,{idToken:n,deleteProvider:e})}function _r(t){if(!t.requestUri||!t.sessionId&&!t.postBody)throw new Pi("internal-error")}function Rr(t){var n=null;if(t.needConfirmation?(t.code="account-exists-with-different-credential",n=dr(t)):"FEDERATED_USER_ID_ALREADY_LINKED"==t.errorMessage?(t.code="credential-already-in-use",n=dr(t)):"EMAIL_EXISTS"==t.errorMessage?(t.code="email-already-in-use",n=dr(t)):t.errorMessage&&(n=Mr(t.errorMessage)),n)throw n;if(!t[Ph])throw new Pi("internal-error")}function Dr(t,n){return n.returnIdpCredential=!0,Ur(t,tf,n)}function Lr(t,n){return n.returnIdpCredential=!0,Ur(t,ef,n)}function xr(t,n){return n.returnIdpCredential=!0,n.autoCreate=!1,Ur(t,nf,n)}function jr(t){if(!t.oobCode)throw new Pi("invalid-action-code")}function Ur(t,n,e){if(!Ni(e,n.ea))return et(new Pi("internal-error"));var i,r=n.yb||"POST";return nt(e).then(n.D).then(function(){return n.T&&(e.returnSecureToken=!0),Tr(t,n.endpoint,r,e,n.Lb,n.nb||!1)}).then(function(t){return i=t}).then(n.O).then(function(){if(!n.ga)return i;if(!(n.ga in i))throw new Pi("internal-error");return i[n.ga]})}function Mr(t){return Vr({error:{errors:[{message:t}],code:400,message:t}})}function Vr(t,n){var e=(t.error&&t.error.errors&&t.error.errors[0]||{}).reason||"",i={keyInvalid:"invalid-api-key",ipRefererBlocked:"app-not-authorized"};if(e=i[e]?new Pi(i[e]):null)return e;e=t.error&&t.error.message||"",i={INVALID_CUSTOM_TOKEN:"invalid-custom-token",CREDENTIAL_MISMATCH:"custom-token-mismatch",MISSING_CUSTOM_TOKEN:"internal-error",INVALID_IDENTIFIER:"invalid-email",MISSING_CONTINUE_URI:"internal-error",INVALID_EMAIL:"invalid-email",INVALID_PASSWORD:"wrong-password",USER_DISABLED:"user-disabled",MISSING_PASSWORD:"internal-error",EMAIL_EXISTS:"email-already-in-use",PASSWORD_LOGIN_DISABLED:"operation-not-allowed",INVALID_IDP_RESPONSE:"invalid-credential",FEDERATED_USER_ID_ALREADY_LINKED:"credential-already-in-use",INVALID_MESSAGE_PAYLOAD:"invalid-message-payload",INVALID_RECIPIENT_EMAIL:"invalid-recipient-email",INVALID_SENDER:"invalid-sender",EMAIL_NOT_FOUND:"user-not-found",EXPIRED_OOB_CODE:"expired-action-code",INVALID_OOB_CODE:"invalid-action-code",MISSING_OOB_CODE:"internal-error",CREDENTIAL_TOO_OLD_LOGIN_AGAIN:"requires-recent-login",INVALID_ID_TOKEN:"invalid-user-token",TOKEN_EXPIRED:"user-token-expired",USER_NOT_FOUND:"user-token-expired",CORS_UNSUPPORTED:"cors-unsupported",DYNAMIC_LINK_NOT_ACTIVATED:"dynamic-link-not-activated",INVALID_APP_ID:"invalid-app-id",TOO_MANY_ATTEMPTS_TRY_LATER:"too-many-requests",WEAK_PASSWORD:"weak-password",OPERATION_NOT_ALLOWED:"operation-not-allowed",USER_CANCELLED:"user-cancelled",CAPTCHA_CHECK_FAILED:"captcha-check-failed",INVALID_APP_CREDENTIAL:"invalid-app-credential",INVALID_CODE:"invalid-verification-code",INVALID_PHONE_NUMBER:"invalid-phone-number",INVALID_SESSION_INFO:"invalid-verification-id",INVALID_TEMPORARY_PROOF:"invalid-credential",MISSING_APP_CREDENTIAL:"missing-app-credential",MISSING_CODE:"missing-verification-code",MISSING_PHONE_NUMBER:"missing-phone-number",MISSING_SESSION_INFO:"missing-verification-id",QUOTA_EXCEEDED:"quota-exceeded",SESSION_EXPIRED:"code-expired",INVALID_CONTINUE_URI:"invalid-continue-uri",MISSING_ANDROID_PACKAGE_NAME:"missing-android-pkg-name",MISSING_IOS_BUNDLE_ID:"missing-ios-bundle-id",UNAUTHORIZED_DOMAIN:"unauthorized-continue-uri",INVALID_OAUTH_CLIENT_ID:"invalid-oauth-client-id",INVALID_CERT_HASH:"invalid-cert-hash"},j(i,n||{}),n=(n=e.match(/^[^\s]+\s*:\s*(.*)$/))&&1n.c?Bn(n,xc,56-n.c):Bn(n,xc,n.b-(n.c-56));for(var i=63;56<=i;i--)n.f[i]=255&e,e/=256;for(Xn(n),i=e=0;i>r&255;return Sn(t)}function Mo(t,n,e,i){var r=jo(),o=new hr(n,i,null,r,new Pi("no-auth-event")),a=oi("BuildInfo.packageName",uu);if("string"!=typeof a)throw new Pi("invalid-cordova-configuration");var s=oi("BuildInfo.displayName",uu),u={};if(ri().toLowerCase().match(/iphone|ipad|ipod/))u.ibi=a;else{if(!ri().toLowerCase().match(/android/))return et(new Pi("operation-not-supported-in-this-environment"));u.apn=a}s&&(u.appDisplayName=s),r=Uo(r),u.sessionId=r;var c=Qr(t.u,t.i,t.l,n,e,null,i,t.m,u,t.o);return t.ba().then(function(){var n=t.h;return t.A.a.set(If,o.B(),n)}).then(function(){var n=oi("cordova.plugins.browsertab.isAvailable",uu);if("function"!=typeof n)throw new Pi("invalid-cordova-configuration");var e=null;n(function(n){if(n){if("function"!=typeof(e=oi("cordova.plugins.browsertab.openUrl",uu)))throw new Pi("invalid-cordova-configuration");e(c)}else{if("function"!=typeof(e=oi("cordova.InAppBrowser.open",uu)))throw new Pi("invalid-cordova-configuration");n=ri(),n=!(!n.match(/(iPad|iPhone|iPod).*OS 7_\d/i)&&!n.match(/(iPad|iPhone|iPod).*OS 8_\d/i)),t.a=e(c,n?"_blank":"_system","location=yes")}})})}function Vo(t,n){for(var e=0;et.f&&(t.a=t.f),n)}function pa(t,n){da(t),t.b=gn(la(t,n)).then(function(){return t.l?nt():yi()}).then(function(){return t.h()}).then(function(){pa(t,!0)}).s(function(n){t.i(n)&&pa(t,!1)})}function da(t){t.b&&(t.b.cancel(),t.b=null)}function va(t){this.f=t,this.b=this.a=null,this.c=0}function ma(t,n){var e=n[Ph],i=n.refreshToken;n=ga(n.expiresIn),t.b=e,t.c=n,t.a=i}function ga(t){return fu()+1e3*parseInt(t,10)}function ba(t,n){return Ir(t.f,n).then(function(n){return t.b=n.access_token,t.c=ga(n.expires_in),t.a=n.refresh_token,{accessToken:t.b,expirationTime:t.c,refreshToken:t.a}}).s(function(n){throw"auth/user-token-expired"==n.code&&(t.a=null),n})}function wa(t,n){this.a=t||null,this.b=n||null,ki(this,{lastSignInTime:Ii(n||null),creationTime:Ii(t||null)})}function ya(t){return new wa(t.a,t.b)}function Ia(t,n,e,i,r,o){ki(this,{uid:t,displayName:i||null,photoURL:r||null,email:e||null,phoneNumber:o||null,providerId:n})}function Ta(t,n){Bt.call(this,t);for(var e in n)this[e]=n[e]}function ka(t,n,e){this.A=[],this.G=t.apiKey,this.o=t.appName,this.w=t.authDomain||null,t=au.SDK_VERSION?ii(au.SDK_VERSION):null,this.c=new mr(this.G,Fr(Uh),t),this.h=new va(this.c),_a(this,n[Ph]),ma(this.h,n),Ti(this,"refreshToken",this.h.a),xa(this,e||{}),fn.call(this),this.I=!1,this.w&&si()&&(this.a=Qo(this.w,this.G,this.o)),this.N=[],this.i=null,this.l=Oa(this),this.U=l(this.Ga,this);var i=this;this.ha=null,this.ra=function(t){i.na(t.h)},this.W=null,this.R=[],this.qa=function(t){Ea(i,t.f)},this.V=null}function Aa(t,n){t.W&&en(t.W,"languageCodeChanged",t.ra),(t.W=n)&&Zt(n,"languageCodeChanged",t.ra)}function Ea(t,n){t.R=n,br(t.c,au.SDK_VERSION?ii(au.SDK_VERSION,t.R):null)}function Na(t,n){t.V&&en(t.V,"frameworkChanged",t.qa),(t.V=n)&&Zt(n,"frameworkChanged",t.qa)}function Sa(t){try{return au.app(t.o).auth()}catch(n){throw new Pi("internal-error","No firebase.auth.Auth instance is available for the Firebase App '"+t.o+"'!")}}function Oa(t){return new fa(function(){return t.F(!0)},function(t){return!(!t||"auth/network-request-failed"!=t.code)},function(){var n=t.h.c-fu()-3e5;return 0r||r>=Of.length)throw new Pi("internal-error","Argument validator received an unsupported number of arguments.");e=Of[r],i=(i?"":e+" argument ")+(n.name?'"'+n.name+'" ':"")+"must be "+n.K+".";break t}i=null}}if(i)throw new Pi("argument-error",t+" failed: "+i)}function Ls(n,e){return{name:n||"",K:"a valid string",optional:!!e,M:t}}function xs(){return{name:"opt_forceRefresh",K:"a boolean",optional:!0,M:n}}function js(t,n){return{name:t||"",K:"a valid object",optional:!!n,M:c}}function Us(t,n){return{name:t||"",K:"a function",optional:!!n,M:u}}function Ms(t,n){return{name:t||"",K:"null",optional:!!n,M:o}}function Vs(){return{name:"",K:"an HTML element",optional:!1,M:function(t){return!!(t&&t instanceof Element)}}}function Fs(){return{name:"auth",K:"an instance of Firebase Auth",optional:!0,M:function(t){return!!(t&&t instanceof vs)}}}function Ks(){return{name:"app",K:"an instance of Firebase App",optional:!0,M:function(t){return!!(t&&t instanceof au.app.App)}}}function qs(t){return{name:t?t+"Credential":"credential",K:t?"a valid "+t+" credential":"a valid credential",optional:!1,M:function(n){if(!n)return!1;var e=!t||n.providerId===t;return!(!n.wa||!e)}}}function Xs(){return{name:"authProvider",K:"a valid Auth provider",optional:!1,M:function(t){return!!(t&&t.providerId&&t.hasOwnProperty&&t.hasOwnProperty("isOAuthProvider"))}}}function Bs(){return{name:"applicationVerifier",K:"an implementation of firebase.auth.ApplicationVerifier",optional:!1,M:function(n){return!!(n&&t(n.type)&&u(n.verify))}}}function Hs(t,n,e,i){return{name:e||"",K:t.K+" or "+n.K,optional:!!i,M:function(e){return t.M(e)||n.M(e)}}}function Ws(t,n,e,i,r,o){if(Ti(this,"type","recaptcha"),this.b=this.c=null,this.m=!1,this.l=n,this.a=e||{theme:"light",type:"image"},this.g=[],this.a[_f])throw new Pi("argument-error","sitekey should not be provided for reCAPTCHA as one is automatically provisioned for the current project.");if(this.h="invisible"===this.a[Rf],!Dt(n)||!this.h&&Dt(n).hasChildNodes())throw new Pi("argument-error","reCAPTCHA container is either not found or already contains inner elements!");this.u=new mr(t,o||null,r||null),this.o=i||function(){return null};var a=this;this.i=[];var s=this.a[Pf];this.a[Pf]=function(t){if(Gs(a,t),"function"==typeof s)s(t);else if("string"==typeof s){var n=oi(s,uu);"function"==typeof n&&n(t)}};var u=this.a[Cf];this.a[Cf]=function(){if(Gs(a,null),"function"==typeof u)u();else if("string"==typeof u){var t=oi(u,uu);"function"==typeof t&&t()}}}function Gs(t,n){for(var e=0;e>>0),hu=0,fu=Date.now||function(){return+new Date};d(v,Error),v.prototype.name="CustomError";var lu=String.prototype.trim?function(t){return t.trim()}:function(t){return t.replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},pu=/&/g,du=//g,mu=/"/g,gu=/'/g,bu=/\x00/g,wu=/[\x00&<>"']/;d(y,v),y.prototype.name="AssertionError";var yu,Iu=Array.prototype.indexOf?function(t,n,e){return Array.prototype.indexOf.call(t,n,e)}:function(n,e,i){if(i=null==i?0:0>i?Math.max(0,n.length+i):i,t(n))return t(e)&&1==e.length?n.indexOf(e,i):-1;for(;iparseFloat(xu)){Ou=Uu+"";break t}}Ou=xu}var Mu,Vu={},Fu=uu.document;Mu=Fu&&Cu?V()||("CSS1Compat"==Fu.compatMode?parseInt(Ou,10):5):void 0,X.prototype.get=function(){if(0"),Rt(""),Rt("
");var oc={cellpadding:"cellPadding",cellspacing:"cellSpacing",colspan:"colSpan",frameborder:"frameBorder",height:"height",maxlength:"maxLength",nonce:"nonce",role:"role",rowspan:"rowSpan",type:"type",usemap:"useMap",valign:"vAlign",width:"width"},ac={'"':'\\"',"\\":"\\\\","/":"\\/","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\u000b"},sc=/\uffff/.test("￿")?/[\\\"\x00-\x1f\x7f-\uffff]/g:/[\\\"\x00-\x1f\x7f-\xff]/g,uc=0,cc={};qt.prototype.oa=!1,qt.prototype.ta=function(){if(this.Fa)for(;this.Fa.length;)this.Fa.shift()()};var hc=Object.freeze||function(t){return t},fc=!Cu||9<=+Mu,lc=Cu&&!F("9"),pc=function(){if(!uu.addEventListener||!Object.defineProperty)return!1;var t=!1,n=Object.defineProperty({},"passive",{get:function(){t=!0}});return uu.addEventListener("test",i,n),uu.removeEventListener("test",i,n),t}();Bt.prototype.c=function(){this.Ab=!1},d(Ht,Bt);var dc=hc({2:"touch",3:"pen",4:"mouse"});Ht.prototype.c=function(){Ht.ib.c.call(this);var t=this.a;if(t.preventDefault)t.preventDefault();else if(t.returnValue=!1,lc)try{(t.ctrlKey||112<=t.keyCode&&123>=t.keyCode)&&(t.keyCode=-1)}catch(t){}},Ht.prototype.g=function(){return this.a};var vc="closure_listenable_"+(1e6*Math.random()|0),mc=0,gc="closure_lm_"+(1e6*Math.random()|0),bc={},wc=0,yc="__closure_events_fn_"+(1e9*Math.random()>>>0);d(fn,qt),fn.prototype[vc]=!0,fn.prototype.removeEventListener=function(t,n,e,i){en(this,t,n,e,i)},fn.prototype.ta=function(){if(fn.ib.ta.call(this),this.u){var t,n=this.u,e=0;for(t in n.a){for(var i=n.a[t],r=0;r=In(this).value)for(u(n)&&(n=n()),t=new bn(t,n+"",this.f),e&&(t.a=e),e="log:"+t.b,(t=uu.console)&&t.timeStamp&&t.timeStamp(e),(t=uu.msWriteProfilerMark)&&t(e),e=this;e;)e=e.a};var Ec={},Nc=null;ou=kn.prototype,ou.P=function(){An(this);for(var t=[],n=0;n=--n.l&&n.cancel()}this.v?this.v.call(this.o,this):this.u=!0,this.a||(t=new Vn,Dn(this),Rn(this,!1,t))}},_n.prototype.m=function(t,n){this.i=!1,Rn(this,t,n)},_n.prototype.A=function(t){Dn(this),Rn(this,!0,t)},_n.prototype.then=function(t,n,e){var i,r,o=new Z(function(t,n){i=t,r=n});return xn(this,i,function(t){t instanceof Vn?o.cancel():r(t)}),o.then(t,n,e)},K(_n),d(Mn,v),Mn.prototype.message="Deferred has already fired",Mn.prototype.name="AlreadyCalledError",d(Vn,v),Vn.prototype.message="Deferred was canceled",Vn.prototype.name="CanceledError",Fn.prototype.c=function(){throw delete Cc[this.a],this.b};var Pc,Cc={};d(qn,Kn);for(var _c=64,Rc=_c-1,Dc=[],Lc=0;Lcthis.c-3e4?this.a?ba(this,{grant_type:"refresh_token",refresh_token:this.a}):nt(null):nt({accessToken:this.b,expirationTime:this.c,refreshToken:this.a})},wa.prototype.B=function(){return{lastLoginAt:this.b,createdAt:this.a}},d(Ta,Bt),d(ka,fn),ka.prototype.na=function(t){this.ha=t,gr(this.c,t)},ka.prototype.$=function(){return this.ha},ka.prototype.Ka=function(){return O(this.R)},ka.prototype.Ga=function(){this.l.b&&(da(this.l),this.l.start())},Ti(ka.prototype,"providerId","firebase"),ou=ka.prototype,ou.reload=function(){var t=this;return Qa(this,Ua(this).then(function(){return Xa(t).then(function(){return Da(t)}).then(ja)}))},ou.F=function(t){var n=this;return Qa(this,Ua(this).then(function(){return n.h.getToken(t)}).then(function(t){if(!t)throw new Pi("internal-error");return t.accessToken!=n.pa&&(_a(n,t.accessToken),ln(n,new Ta("tokenChanged"))),Ka(n,"refreshToken",t.refreshToken),t.accessToken}))},ou.getToken=function(t){return rh["firebase.User.prototype.getToken is deprecated. Please use firebase.User.prototype.getIdToken instead."]||(rh["firebase.User.prototype.getToken is deprecated. Please use firebase.User.prototype.getIdToken instead."]=!0,"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn("firebase.User.prototype.getToken is deprecated. Please use firebase.User.prototype.getIdToken instead.")),this.F(t)},ou.gc=function(t){if(!(t=t.users)||!t.length)throw new Pi("internal-error");t=t[0],xa(this,{uid:t.localId,displayName:t.displayName,photoURL:t.photoUrl,email:t.email,emailVerified:!!t.emailVerified,phoneNumber:t.phoneNumber,lastLoginAt:t.lastLoginAt,createdAt:t.createdAt});for(var n=Wa(t),e=0;ethis.o&&(this.o=0),0==this.o&&Os(this)&&Ca(Os(this)),this.removeAuthTokenListener(t)},ou.addAuthTokenListener=function(t){var n=this;this.m.push(t),Rs(this,this.i.then(function(){n.l||A(n.m,t)&&t(Ps(n))}))},ou.removeAuthTokenListener=function(t){N(this.m,function(n){return n==t})},ou.delete=function(){this.l=!0;for(var t=0;tn?r.push(e.substring(i,n)):r.push(e.substring(i,i+t));return r},t.each=function(e,t){if(Array.isArray(e))for(var n=0;n=Math.pow(2,-1022)?(a=Math.min(Math.floor(Math.log(e)/Math.LN2),1023),i=a+1023,o=Math.round(e*Math.pow(2,52-a)-Math.pow(2,52))):(i=0,o=Math.round(e/Math.pow(2,-1074)))),u=[],s=52;s;s-=1)u.push(o%2?1:0),o=Math.floor(o/2);for(s=11;s;s-=1)u.push(i%2?1:0),i=Math.floor(i/2);u.push(n?1:0),u.reverse(),l=u.join("");var h="";for(s=0;s<64;s+=8){var c=parseInt(l.substr(s,8),2).toString(16);1===c.length&&(c="0"+c),h+=c}return h.toLowerCase()},t.isChromeExtensionContentScript=function(){return!("object"!=typeof window||!window.chrome||!window.chrome.extension||/^chrome/.test(window.location.href))},t.isWindowsStoreApp=function(){return"object"==typeof Windows&&"object"==typeof Windows.UI},t.errorForServerCode=function(e,t){var n="Unknown Error";"too_big"===e?n="The data requested exceeds the maximum size that can be accessed with a single request.":"permission_denied"==e?n="Client doesn't have permission to access the desired data.":"unavailable"==e&&(n="The service is unavailable");var r=Error(e+" at "+t.path+": "+n);return r.code=e.toUpperCase(),r},t.e=RegExp("^-?\\d{1,10}$"),t.tryParseInt=function(e){if(t.e.test(e)){var n=+e;if(n>=-2147483648&&n<=2147483647)return n}return null},t.exceptionGuard=function(e){try{e()}catch(e){setTimeout(function(){var n=e.stack||"";throw t.warn("Exception was thrown by user callback.",n),e},Math.floor(0))}},t.callUserCallback=function(e){for(var n=[],r=1;r=0},t.exportPropGetter=function(e,t,n){Object.defineProperty(e,t,{get:n})},t.setTimeoutNonBlocking=function(e,t){var n=setTimeout(e,t);return"object"==typeof n&&n.unref&&n.unref(),n}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(1),i=n(0),o=function(){function e(e,t){if(void 0===t){this.n=e.split("/");for(var n=0,r=0;r0&&(this.n[n]=this.n[r],n++);this.n.length=n,this.i=0}else this.n=e,this.i=t}return Object.defineProperty(e,"Empty",{get:function(){return new e("")},enumerable:!0,configurable:!0}),e.prototype.getFront=function(){return this.i>=this.n.length?null:this.n[this.i]},e.prototype.getLength=function(){return this.n.length-this.i},e.prototype.popFront=function(){var t=this.i;return t=this.n.length)return null;for(var t=[],n=this.i;n0&&n.push(i[r]);return new e(n,0)},e.prototype.isEmpty=function(){return this.i>=this.n.length},e.relativePath=function(t,n){var r=t.getFront(),i=n.getFront();if(null===r)return n;if(r===i)return e.relativePath(t.popFront(),n.popFront());throw Error("INTERNAL ERROR: innerPath ("+n+") is not within outerPath ("+t+")")},e.comparePaths=function(e,t){for(var n=e.slice(),i=t.slice(),o=0;oe.getLength())return!1;for(;t0&&(this.l+=1),this.u.push(e),this.l+=i.stringLength(e),this.f()},e.prototype.pop=function(){var e=this.u.pop();this.l-=i.stringLength(e),this.u.length>0&&(this.l-=1)},e.prototype.f=function(){if(this.l>e.MAX_PATH_LENGTH_BYTES)throw Error(this.o+"has a key path longer than "+e.MAX_PATH_LENGTH_BYTES+" bytes ("+this.l+").");if(this.u.length>e.MAX_PATH_DEPTH)throw Error(this.o+"path specified exceeds the maximum depth that can be written ("+e.MAX_PATH_DEPTH+") or object contains a cycle "+this.toErrorString())},e.prototype.toErrorString=function(){return 0==this.u.length?"":"in property '"+this.u.join(".")+"'"},e}();t.ValidationPath=a},function(e,t,n){"use strict";function r(e){a=e}function i(e){s=e}var o=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(t,"__esModule",{value:!0});var a,s,u=n(14),l=n(1),h=n(5),c=n(15);t.setNodeFromJSON=r,t.setMaxNode=i;var p=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),t.prototype.compare=function(e,t){var n=e.node.getPriority(),r=t.node.getPriority(),i=n.compareTo(r);return 0===i?l.nameCompare(e.name,t.name):i},t.prototype.isDefinedOn=function(e){return!e.getPriority().isEmpty()},t.prototype.indexedValueChanged=function(e,t){return!e.getPriority().equals(t.getPriority())},t.prototype.minPost=function(){return h.NamedNode.MIN},t.prototype.maxPost=function(){return new h.NamedNode(l.MAX_NAME,new c.LeafNode("[PRIORITY-POST]",s))},t.prototype.makePost=function(e,t){var n=a(e);return new h.NamedNode(t,new c.LeafNode("[PRIORITY-POST]",n))},t.prototype.toString=function(){return".priority"},t}(u.Index);t.PriorityIndex=p,t.PRIORITY_INDEX=new p},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(t,"__esModule",{value:!0});var i,o=n(0),a=n(1),s=n(16),u=n(5),l=n(37),h=n(3),c=n(10),p=n(39),d=n(15),f=n(41),_=function(){function e(e,t,n){this._=e,this.y=t,this.g=n,this.m=null,this.y&&l.validatePriorityNode(this.y),this._.isEmpty()&&o.assert(!this.y||this.y.isEmpty(),"An empty node cannot have a priority")}return Object.defineProperty(e,"EMPTY_NODE",{get:function(){return i||(i=new e(new s.SortedMap(f.NAME_COMPARATOR),null,p.IndexMap.Default))},enumerable:!0,configurable:!0}),e.prototype.isLeafNode=function(){return!1},e.prototype.getPriority=function(){return this.y||i},e.prototype.updatePriority=function(t){return this._.isEmpty()?this:new e(this._,t,this.g)},e.prototype.getImmediateChild=function(e){if(".priority"===e)return this.getPriority();var t=this._.get(e);return null===t?i:t},e.prototype.getChild=function(e){var t=e.getFront();return null===t?this:this.getImmediateChild(t).getChild(e.popFront())},e.prototype.hasChild=function(e){return null!==this._.get(e)},e.prototype.updateImmediateChild=function(t,n){if(o.assert(n,"We should always be passing snapshot nodes"),".priority"===t)return this.updatePriority(n);var r=new u.NamedNode(t,n),a=void 0,s=void 0,l=void 0;return n.isEmpty()?(a=this._.remove(t),s=this.g.removeFromIndexes(r,this._)):(a=this._.insert(t,n),s=this.g.addToIndexes(r,this._)),l=a.isEmpty()?i:this.y,new e(a,l,s)},e.prototype.updateChild=function(e,t){var n=e.getFront();if(null===n)return t;o.assert(".priority"!==e.getFront()||1===e.getLength(),".priority must be the last token in a path");var r=this.getImmediateChild(n).updateChild(e.popFront(),t);return this.updateImmediateChild(n,r)},e.prototype.isEmpty=function(){return this._.isEmpty()},e.prototype.numChildren=function(){return this._.count()},e.prototype.val=function(t){if(this.isEmpty())return null;var n={},r=0,i=0,o=!0;if(this.forEachChild(h.PRIORITY_INDEX,function(a,s){n[a]=s.val(t),r++,o&&e.e.test(a)?i=Math.max(i,+a):o=!1}),!t&&o&&i<2*r){var a=[];for(var s in n)a[s]=n[s];return a}return t&&!this.getPriority().isEmpty()&&(n[".priority"]=this.getPriority().val()),n},e.prototype.hash=function(){if(null===this.m){var e="";this.getPriority().isEmpty()||(e+="priority:"+l.priorityHashText(this.getPriority().val())+":"),this.forEachChild(h.PRIORITY_INDEX,function(t,n){var r=n.hash();""!==r&&(e+=":"+t+":"+r)}),this.m=""===e?"":a.sha1(e)}return this.m},e.prototype.getPredecessorChildName=function(e,t,n){var r=this.C(n);if(r){var i=r.getPredecessorKey(new u.NamedNode(e,t));return i?i.name:null}return this._.getPredecessorKey(e)},e.prototype.getFirstChildName=function(e){var t=this.C(e);if(t){var n=t.minKey();return n&&n.name}return this._.minKey()},e.prototype.getFirstChild=function(e){var t=this.getFirstChildName(e);return t?new u.NamedNode(t,this._.get(t)):null},e.prototype.getLastChildName=function(e){var t=this.C(e);if(t){var n=t.maxKey();return n&&n.name}return this._.maxKey()},e.prototype.getLastChild=function(e){var t=this.getLastChildName(e);return t?new u.NamedNode(t,this._.get(t)):null},e.prototype.forEachChild=function(e,t){var n=this.C(e);return n?n.inorderTraversal(function(e){return t(e.name,e.node)}):this._.inorderTraversal(t)},e.prototype.getIterator=function(e){return this.getIteratorFrom(e.minPost(),e)},e.prototype.getIteratorFrom=function(e,t){var n=this.C(t);if(n)return n.getIteratorFrom(e,function(e){return e});for(var r=this._.getIteratorFrom(e.name,u.NamedNode.Wrap),i=r.peek();null!=i&&t.compare(i,e)<0;)r.getNext(),i=r.peek();return r},e.prototype.getReverseIterator=function(e){return this.getReverseIteratorFrom(e.maxPost(),e)},e.prototype.getReverseIteratorFrom=function(e,t){var n=this.C(t);if(n)return n.getReverseIteratorFrom(e,function(e){return e});for(var r=this._.getReverseIteratorFrom(e.name,u.NamedNode.Wrap),i=r.peek();null!=i&&t.compare(i,e)>0;)r.getNext(),i=r.peek();return r},e.prototype.compareTo=function(e){return this.isEmpty()?e.isEmpty()?0:-1:e.isLeafNode()||e.isEmpty()?1:e===t.MAX_NODE?-1:0},e.prototype.withIndex=function(t){if(t===c.KEY_INDEX||this.g.hasIndex(t))return this;var n=this.g.addIndex(t,this._);return new e(this._,this.y,n)},e.prototype.isIndexed=function(e){return e===c.KEY_INDEX||this.g.hasIndex(e)},e.prototype.equals=function(e){if(e===this)return!0;if(e.isLeafNode())return!1;var t=e;if(this.getPriority().equals(t.getPriority())){if(this._.count()===t._.count()){for(var n=this.getIterator(h.PRIORITY_INDEX),r=t.getIterator(h.PRIORITY_INDEX),i=n.getNext(),o=r.getNext();i&&o;){if(i.name!==o.name||!i.node.equals(o.node))return!1;i=n.getNext(),o=r.getNext()}return null===i&&null===o}return!1}return!1},e.prototype.C=function(e){return e===c.KEY_INDEX?null:this.g.get(""+e)},e.e=/^(0|[1-9]\d*)$/,e}();t.ChildrenNode=_;var y=function(e){function t(){return e.call(this,new s.SortedMap(f.NAME_COMPARATOR),_.EMPTY_NODE,p.IndexMap.Default)||this}return r(t,e),t.prototype.compareTo=function(e){return e===this?0:1},t.prototype.equals=function(e){return e===this},t.prototype.getPriority=function(){return this},t.prototype.getImmediateChild=function(e){return _.EMPTY_NODE},t.prototype.isEmpty=function(){return!1},t}(_);t.MaxNode=y,t.MAX_NODE=new y,Object.defineProperties(u.NamedNode,{MIN:{value:new u.NamedNode(a.MIN_NAME,_.EMPTY_NODE)},MAX:{value:new u.NamedNode(a.MAX_NAME,t.MAX_NODE)}}),c.KeyIndex.__EMPTY_NODE=_.EMPTY_NODE,d.LeafNode.__childrenNodeConstructor=_,l.setMaxNode(t.MAX_NODE),h.setMaxNode(t.MAX_NODE)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){this.name=e,this.node=t}return e.Wrap=function(t,n){return new e(t,n)},e}();t.NamedNode=r},,function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2),i=n(0),o=n(1),a=n(0),s=n(0);t.N=/[\[\].#$\/\u0000-\u001F\u007F]/,t.P=/[\[\].#$\u0000-\u001F\u007F]/,t.S=10485760,t.isValidKey=function(e){return"string"==typeof e&&0!==e.length&&!t.N.test(e)},t.isValidPathString=function(e){return"string"==typeof e&&0!==e.length&&!t.P.test(e)},t.isValidRootPathString=function(e){return e&&(e=e.replace(/^\/*\.info(\/|$)/,"/")),t.isValidPathString(e)},t.isValidPriority=function(e){return null===e||"string"==typeof e||"number"==typeof e&&!o.isInvalidJSONNumber(e)||e&&"object"==typeof e&&i.contains(e,".sv")},t.validateFirebaseDataArg=function(e,n,r,i,o){o&&void 0===r||t.validateFirebaseData(a.errorPrefix(e,n,o),r,i)},t.validateFirebaseData=function(e,n,a){var u=a instanceof r.Path?new r.ValidationPath(a,e):a;if(void 0===n)throw Error(e+"contains undefined "+u.toErrorString());if("function"==typeof n)throw Error(e+"contains a function "+u.toErrorString()+" with contents = "+n);if(o.isInvalidJSONNumber(n))throw Error(e+"contains "+n+" "+u.toErrorString());if("string"==typeof n&&n.length>t.S/3&&s.stringLength(n)>t.S)throw Error(e+"contains a string greater than "+t.S+" utf8 bytes "+u.toErrorString()+" ('"+n.substring(0,50)+"...')");if(n&&"object"==typeof n){var l=!1,h=!1;if(i.forEach(n,function(n,r){if(".value"===n)l=!0;else if(".priority"!==n&&".sv"!==n&&(h=!0,!t.isValidKey(n)))throw Error(e+" contains an invalid key ("+n+") "+u.toErrorString()+'. Keys must be non-empty strings and can\'t contain ".", "#", "$", "/", "[", or "]"');u.push(n),t.validateFirebaseData(e,r,u),u.pop()}),l&&h)throw Error(e+' contains ".value" child '+u.toErrorString()+" in addition to actual children.")}},t.validateFirebaseMergePaths=function(e,n){var i,o;for(i=0;i=0,"Unknown leaf type: "+n),i.assert(a>=0,"Unknown leaf type: "+r),o===a?"object"===r?0:this.T0},e.prototype.peek=function(){if(0===this.O.length)return null;var e=this.O[this.O.length-1];return this.R?this.R(e.key,e.value):{key:e.key,value:e.value}},e}();t.SortedMapIterator=r;var i=function(){function e(t,n,r,i,o){this.key=t,this.value=n,this.color=null!=r?r:e.RED,this.left=null!=i?i:a.EMPTY_NODE,this.right=null!=o?o:a.EMPTY_NODE}return e.prototype.copy=function(t,n,r,i,o){return new e(null!=t?t:this.key,null!=n?n:this.value,null!=r?r:this.color,null!=i?i:this.left,null!=o?o:this.right)},e.prototype.count=function(){return this.left.count()+1+this.right.count()},e.prototype.isEmpty=function(){return!1},e.prototype.inorderTraversal=function(e){return this.left.inorderTraversal(e)||e(this.key,this.value)||this.right.inorderTraversal(e)},e.prototype.reverseTraversal=function(e){return this.right.reverseTraversal(e)||e(this.key,this.value)||this.left.reverseTraversal(e)},e.prototype.A=function(){return this.left.isEmpty()?this:this.left.A()},e.prototype.minKey=function(){return this.A().key},e.prototype.maxKey=function(){return this.right.isEmpty()?this.key:this.right.maxKey()},e.prototype.insert=function(e,t,n){var r,i;return i=this,r=n(e,i.key),i=r<0?i.copy(null,null,null,i.left.insert(e,t,n),null):0===r?i.copy(null,t,null,null,null):i.copy(null,null,null,null,i.right.insert(e,t,n)),i.D()},e.prototype.M=function(){if(this.left.isEmpty())return a.EMPTY_NODE;var e=this;return e.left.L()||e.left.left.L()||(e=e.F()),e=e.copy(null,null,null,e.left.M(),null),e.D()},e.prototype.remove=function(e,t){var n,r;if(n=this,t(e,n.key)<0)n.left.isEmpty()||n.left.L()||n.left.left.L()||(n=n.F()),n=n.copy(null,null,null,n.left.remove(e,t),null);else{if(n.left.L()&&(n=n.x()),n.right.isEmpty()||n.right.L()||n.right.left.L()||(n=n.k()),0===t(e,n.key)){if(n.right.isEmpty())return a.EMPTY_NODE;r=n.right.A(),n=n.copy(r.key,r.value,null,null,n.right.M())}n=n.copy(null,null,null,null,n.right.remove(e,t))}return n.D()},e.prototype.L=function(){return this.color},e.prototype.D=function(){var e=this;return e.right.L()&&!e.left.L()&&(e=e.W()),e.left.L()&&e.left.left.L()&&(e=e.x()),e.left.L()&&e.right.L()&&(e=e.j()),e},e.prototype.F=function(){var e=this.j();return e.right.left.L()&&(e=e.copy(null,null,null,null,e.right.x()),e=e.W(),e=e.j()),e},e.prototype.k=function(){var e=this.j();return e.left.left.L()&&(e=e.x(),e=e.j()),e},e.prototype.W=function(){var t=this.copy(null,null,e.RED,null,this.right.left);return this.right.copy(null,null,this.color,t,null)},e.prototype.x=function(){var t=this.copy(null,null,e.RED,this.left.right,null);return this.left.copy(null,null,this.color,null,t)},e.prototype.j=function(){var e=this.left.copy(null,null,!this.left.color,null,null),t=this.right.copy(null,null,!this.right.color,null,null);return this.copy(null,null,!this.color,e,t)},e.prototype.V=function(){var e=this.Q();return Math.pow(2,e)<=this.count()+1},e.prototype.Q=function(){var e;if(this.L()&&this.left.L())throw Error("Red node has red child("+this.key+","+this.value+")");if(this.right.L())throw Error("Right child of ("+this.key+","+this.value+") is red");if((e=this.left.Q())!==this.right.Q())throw Error("Black depths differ");return e+(this.L()?0:1)},e.RED=!0,e.BLACK=!1,e}();t.LLRBNode=i;var o=function(){function e(){}return e.prototype.copy=function(e,t,n,r,i){return this},e.prototype.insert=function(e,t,n){return new i(e,t,null)},e.prototype.remove=function(e,t){return this},e.prototype.count=function(){return 0},e.prototype.isEmpty=function(){return!0},e.prototype.inorderTraversal=function(e){return!1},e.prototype.reverseTraversal=function(e){return!1},e.prototype.minKey=function(){return null},e.prototype.maxKey=function(){return null},e.prototype.Q=function(){return 0},e.prototype.L=function(){return!1},e}();t.LLRBEmptyNode=o;var a=function(){function e(t,n){void 0===n&&(n=e.EMPTY_NODE),this.U=t,this.B=n}return e.prototype.insert=function(t,n){return new e(this.U,this.B.insert(t,n,this.U).copy(null,null,i.BLACK,null,null))},e.prototype.remove=function(t){return new e(this.U,this.B.remove(t,this.U).copy(null,null,i.BLACK,null,null))},e.prototype.get=function(e){for(var t,n=this.B;!n.isEmpty();){if(0===(t=this.U(e,n.key)))return n.value;t<0?n=n.left:t>0&&(n=n.right)}return null},e.prototype.getPredecessorKey=function(e){for(var t,n=this.B,r=null;!n.isEmpty();){if(0===(t=this.U(e,n.key))){if(n.left.isEmpty())return r?r.key:null;for(n=n.left;!n.right.isEmpty();)n=n.right;return n.key}t<0?n=n.left:t>0&&(r=n,n=n.right)}throw Error("Attempted to find predecessor key for a nonexistent key. What gives?")},e.prototype.isEmpty=function(){return this.B.isEmpty()},e.prototype.count=function(){return this.B.count()},e.prototype.minKey=function(){return this.B.minKey()},e.prototype.maxKey=function(){return this.B.maxKey()},e.prototype.inorderTraversal=function(e){return this.B.inorderTraversal(e)},e.prototype.reverseTraversal=function(e){return this.B.reverseTraversal(e)},e.prototype.getIterator=function(e){return new r(this.B,null,this.U,!1,e)},e.prototype.getIteratorFrom=function(e,t){return new r(this.B,e,this.U,!1,t)},e.prototype.getReverseIteratorFrom=function(e,t){return new r(this.B,e,this.U,!0,t)},e.prototype.getReverseIterator=function(e){return new r(this.B,null,this.U,!0,e)},e.EMPTY_NODE=new o,e}();t.SortedMap=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(43),i=n(11),o=n(2),a=n(44),s=n(86),u=n(97),l=n(0),h=n(1),c=n(0),p=n(98),d=n(25),f=n(100),_=n(49),y=n(101),v=n(50),g=n(106),m=n(32),C=function(){function e(e,t,n){var r=this;this.H=e,this.app=n,this.dataUpdateCount=0,this.G=null,this.K=new y.EventQueue,this.Y=1,this.X=null,this.z=new a.SparseSnapshotTree,this.J=null;var i=new p.AuthTokenProvider(n);if(this.$=d.StatsManager.getCollection(e),t||h.beingCrawled())this.Z=new g.ReadonlyRestClient(this.H,this.ee.bind(this),i),setTimeout(this.te.bind(this,!0),0);else{var o=n.options.databaseAuthVariableOverride;if(void 0!==o&&null!==o){if("object"!=typeof o)throw Error("Only objects are supported for option databaseAuthVariableOverride");try{l.stringify(o)}catch(e){throw Error("Invalid authOverride provided: "+e)}}this.J=new v.PersistentConnection(this.H,this.ee.bind(this),this.te.bind(this),this.ne.bind(this),i,o),this.Z=this.J}i.addTokenChangeListener(function(e){r.Z.refreshAuthToken(e)}),this.re=d.StatsManager.getOrCreateReporter(e,function(){return new f.StatsReporter(r.$,r.Z)}),this.ie(),this.oe=new u.SnapshotHolder,this.ae=new s.SyncTree({startListening:function(e,t,n,i){var o=[],a=r.oe.getNode(e.path);return a.isEmpty()||(o=r.ae.applyServerOverwrite(e.path,a),setTimeout(function(){i("ok")},0)),o},stopListening:function(){}}),this.se("connected",!1),this.ue=new s.SyncTree({startListening:function(e,t,n,i){return r.Z.listen(e,n,t,function(t,n){var o=i(t,n);r.K.raiseEventsForChangedPath(e.path,o)}),[]},stopListening:function(e,t){r.Z.unlisten(e,t)}})}return e.prototype.toString=function(){return(this.H.secure?"https://":"http://")+this.H.host},e.prototype.name=function(){return this.H.namespace},e.prototype.serverTime=function(){var e=this.oe.getNode(new o.Path(".info/serverTimeOffset")),t=e.val()||0;return(new Date).getTime()+t},e.prototype.generateServerValues=function(){return r.generateWithValues({timestamp:this.serverTime()})},e.prototype.ee=function(e,t,n,r){this.dataUpdateCount++;var a=new o.Path(e);t=this.X?this.X(e,t):t;var s=[];if(r)if(n){var u=c.map(t,function(e){return i.nodeFromJSON(e)});s=this.ue.applyTaggedQueryMerge(a,u,r)}else{var l=i.nodeFromJSON(t);s=this.ue.applyTaggedQueryOverwrite(a,l,r)}else if(n){var h=c.map(t,function(e){return i.nodeFromJSON(e)});s=this.ue.applyServerMerge(a,h)}else{var p=i.nodeFromJSON(t);s=this.ue.applyServerOverwrite(a,p)}var d=a;s.length>0&&(d=this.le(a)),this.K.raiseEventsForChangedPath(d,s)},e.prototype.he=function(e){this.X=e},e.prototype.te=function(e){this.se("connected",e),!1===e&&this.ce()},e.prototype.ne=function(e){var t=this;h.each(e,function(e,n){t.se(n,e)})},e.prototype.se=function(e,t){var n=new o.Path("/.info/"+e),r=i.nodeFromJSON(t);this.oe.updateSnapshot(n,r);var a=this.ae.applyServerOverwrite(n,r);this.K.raiseEventsForChangedPath(n,a)},e.prototype.pe=function(){return this.Y++},e.prototype.setWithPriority=function(e,t,n,o){var a=this;this.de("set",{path:""+e,value:t,priority:n});var s=this.generateServerValues(),u=i.nodeFromJSON(t,n),l=r.resolveDeferredValueSnapshot(u,s),c=this.pe(),p=this.ue.applyUserOverwrite(e,l,c,!0);this.K.queueEvents(p),this.Z.put(""+e,u.val(!0),function(t,n){var r="ok"===t;r||h.warn("set at "+e+" failed: "+t);var i=a.ue.ackUserWrite(c,!r);a.K.raiseEventsForChangedPath(e,i),a.callOnCompleteCallback(o,t,n)});var d=this.fe(e);this.le(d),this.K.raiseEventsForChangedPath(d,[])},e.prototype.update=function(e,t,n){var o=this;this.de("update",{path:""+e,value:t});var a=!0,s=this.generateServerValues(),u={};if(c.forEach(t,function(e,t){a=!1;var n=i.nodeFromJSON(t);u[e]=r.resolveDeferredValueSnapshot(n,s)}),a)h.log("update() called with empty data. Don't do anything."),this.callOnCompleteCallback(n,"ok");else{var l=this.pe(),p=this.ue.applyUserMerge(e,u,l);this.K.queueEvents(p),this.Z.merge(""+e,t,function(t,r){var i="ok"===t;i||h.warn("update at "+e+" failed: "+t);var a=o.ue.ackUserWrite(l,!i),s=a.length>0?o.le(e):e;o.K.raiseEventsForChangedPath(s,a),o.callOnCompleteCallback(n,t,r)}),c.forEach(t,function(t){var n=o.fe(e.child(t));o.le(n)}),this.K.raiseEventsForChangedPath(e,[])}},e.prototype.ce=function(){var e=this;this.de("onDisconnectEvents");var t=this.generateServerValues(),n=r.resolveDeferredValueTree(this.z,t),i=[];n.forEachTree(o.Path.Empty,function(t,n){i=i.concat(e.ue.applyServerOverwrite(t,n));var r=e.fe(t);e.le(r)}),this.z=new a.SparseSnapshotTree,this.K.raiseEventsForChangedPath(o.Path.Empty,i)},e.prototype.onDisconnectCancel=function(e,t){var n=this;this.Z.onDisconnectCancel(""+e,function(r,i){"ok"===r&&n.z.forget(e),n.callOnCompleteCallback(t,r,i)})},e.prototype.onDisconnectSet=function(e,t,n){var r=this,o=i.nodeFromJSON(t);this.Z.onDisconnectPut(""+e,o.val(!0),function(t,i){"ok"===t&&r.z.remember(e,o),r.callOnCompleteCallback(n,t,i)})},e.prototype.onDisconnectSetWithPriority=function(e,t,n,r){var o=this,a=i.nodeFromJSON(t,n);this.Z.onDisconnectPut(""+e,a.val(!0),function(t,n){"ok"===t&&o.z.remember(e,a),o.callOnCompleteCallback(r,t,n)})},e.prototype.onDisconnectUpdate=function(e,t,n){var r=this;if(c.isEmpty(t))return h.log("onDisconnect().update() called with empty data. Don't do anything."),void this.callOnCompleteCallback(n,"ok");this.Z.onDisconnectMerge(""+e,t,function(o,a){"ok"===o&&c.forEach(t,function(t,n){var o=i.nodeFromJSON(n);r.z.remember(e.child(t),o)}),r.callOnCompleteCallback(n,o,a)})},e.prototype.addEventCallbackForQuery=function(e,t){var n;n=".info"===e.path.getFront()?this.ae.addEventRegistration(e,t):this.ue.addEventRegistration(e,t),this.K.raiseEventsAtPath(e.path,n)},e.prototype.removeEventCallbackForQuery=function(e,t){var n;n=".info"===e.path.getFront()?this.ae.removeEventRegistration(e,t):this.ue.removeEventRegistration(e,t),this.K.raiseEventsAtPath(e.path,n)},e.prototype.interrupt=function(){this.J&&this.J.interrupt("repo_interrupt")},e.prototype.resume=function(){this.J&&this.J.resume("repo_interrupt")},e.prototype.stats=function(e){if(void 0===e&&(e=!1),"undefined"!=typeof console){var t;e?(this.G||(this.G=new _.StatsListener(this.$)),t=this.G.get()):t=this.$.get();var n=Object.keys(t).reduce(function(e,t){return Math.max(t.length,e)},0);c.forEach(t,function(e,t){for(var r=e.length;r0){var i=n[r];try{i=decodeURIComponent(i.replace(/\+/g," "))}catch(e){}t+="/"+i}return t}Object.defineProperty(t,"__esModule",{value:!0});var i=n(2),o=n(34),a=n(1);t.parseRepoInfo=function(e){var n=t.parseURL(e),r=n.subdomain;"firebase"===n.domain&&a.fatal(n.host+" is no longer supported. Please use .firebaseio.com instead"),r&&"undefined"!=r||a.fatal("Cannot parse Firebase url. Please use https://.firebaseio.com"),n.secure||a.warnIfPageIsSecure();var s="ws"===n.scheme||"wss"===n.scheme;return{repoInfo:new o.RepoInfo(n.host,n.secure,r,s),path:new i.Path(n.pathString)}},t.parseURL=function(e){var t="",n="",i="",o="",a=!0,s="https",u=443;if("string"==typeof e){var l=e.indexOf("//");l>=0&&(s=e.substring(0,l-1),e=e.substring(l+2));var h=e.indexOf("/");-1===h&&(h=e.length),t=e.substring(0,h),o=r(e.substring(h));var c=t.split(".");3===c.length?(n=c[1],i=c[0].toLowerCase()):2===c.length&&(n=c[0]),(l=t.indexOf(":"))>=0&&(a="https"===s||"wss"===s,u=parseInt(t.substring(l+1),10))}return{host:t,port:u,domain:n,subdomain:i,secure:a,scheme:s,pathString:o}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),i=n(0),o=n(12),a=n(13),s=function(){function e(e,t,n,r,i){void 0===i&&(i=""),this.secure=t,this.namespace=n,this.webSocketOnly=r,this.persistenceKey=i,this.host=e.toLowerCase(),this.domain=this.host.substr(this.host.indexOf(".")+1),this.internalHost=o.PersistentStorage.get("host:"+e)||this.host}return e.prototype.needsQueryParam=function(){return this.host!==this.internalHost},e.prototype.isCacheableHost=function(){return"s-"===this.internalHost.substr(0,2)},e.prototype.isDemoHost=function(){return"firebaseio-demo.com"===this.domain},e.prototype.isCustomHost=function(){return"firebaseio.com"!==this.domain&&"firebaseio-demo.com"!==this.domain},e.prototype.updateHost=function(e){e!==this.internalHost&&(this.internalHost=e,this.isCacheableHost()&&o.PersistentStorage.set("host:"+this.host,this.internalHost))},e.prototype.connectionURL=function(e,t){r.assert("string"==typeof e,"typeof type must == string"),r.assert("object"==typeof t,"typeof params must == object");var n;if(e===a.WEBSOCKET)n=(this.secure?"wss://":"ws://")+this.internalHost+"/.ws?";else{if(e!==a.LONG_POLLING)throw Error("Unknown connection type: "+e);n=(this.secure?"https://":"http://")+this.internalHost+"/.lp?"}this.needsQueryParam()&&(t.ns=this.namespace);var o=[];return i.forEach(t,function(e,t){o.push(e+"="+t)}),n+o.join("&")},e.prototype.toString=function(){var e=this.toURLString();return this.persistenceKey&&(e+="<"+this.persistenceKey+">"),e},e.prototype.toURLString=function(){return(this.secure?"https://":"http://")+this.host},e}();t.RepoInfo=s},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),i=n(7),o=n(1),a=n(0),s=function(){function e(e,t){this.Ie=e,this.Oe=t}return e.prototype.cancel=function(e){r.validateArgCount("OnDisconnect.cancel",0,1,arguments.length),r.validateCallback("OnDisconnect.cancel",1,e,!0);var t=new a.Deferred;return this.Ie.onDisconnectCancel(this.Oe,t.wrapCallback(e)),t.promise},e.prototype.remove=function(e){r.validateArgCount("OnDisconnect.remove",0,1,arguments.length),i.validateWritablePath("OnDisconnect.remove",this.Oe),r.validateCallback("OnDisconnect.remove",1,e,!0);var t=new a.Deferred;return this.Ie.onDisconnectSet(this.Oe,null,t.wrapCallback(e)),t.promise},e.prototype.set=function(e,t){r.validateArgCount("OnDisconnect.set",1,2,arguments.length),i.validateWritablePath("OnDisconnect.set",this.Oe),i.validateFirebaseDataArg("OnDisconnect.set",1,e,this.Oe,!1),r.validateCallback("OnDisconnect.set",2,t,!0);var n=new a.Deferred;return this.Ie.onDisconnectSet(this.Oe,e,n.wrapCallback(t)),n.promise},e.prototype.setWithPriority=function(e,t,n){r.validateArgCount("OnDisconnect.setWithPriority",2,3,arguments.length),i.validateWritablePath("OnDisconnect.setWithPriority",this.Oe),i.validateFirebaseDataArg("OnDisconnect.setWithPriority",1,e,this.Oe,!1),i.validatePriority("OnDisconnect.setWithPriority",2,t,!1),r.validateCallback("OnDisconnect.setWithPriority",3,n,!0);var o=new a.Deferred;return this.Ie.onDisconnectSetWithPriority(this.Oe,e,t,o.wrapCallback(n)),o.promise},e.prototype.update=function(e,t){if(r.validateArgCount("OnDisconnect.update",1,2,arguments.length),i.validateWritablePath("OnDisconnect.update",this.Oe),Array.isArray(e)){for(var n={},s=0;s3e4&&(this.nt=v),this._t=null}}else this.de("Window isn't visible. Delaying reconnect."),this.nt=this.rt,this.ft=(new Date).getTime();var t=(new Date).getTime()-this.ft,n=Math.max(0,this.nt-t);n=Math.random()*n,this.de("Trying to reconnect in "+n+"ms"),this.yt(n),this.nt=Math.min(this.rt,1.3*this.nt)}this.te(!1)},t.prototype.Ft=function(){if(this.Wt()){this.de("Making a connection attempt"),this.ft=(new Date).getTime(),this._t=null;var e=this.wt.bind(this),n=this.At.bind(this),r=this.xt.bind(this),i=this.id+":"+t.jt++,o=this,a=this.lastSessionId,l=!1,h=null,c=function(){h?h.close():(l=!0,r())},p=function(e){s.assert(h,"sendRequest call when we're not connected not allowed."),h.sendRequest(e)};this.lt={close:c,sendRequest:p};var _=this.ct;this.ct=!1,this.Ke.getToken(_).then(function(t){l?u.log("getToken() completed but was canceled"):(u.log("getToken() completed. Creating connection."),o.ht=t&&t.accessToken,h=new d.Connection(i,o.H,e,n,r,function(e){u.warn(e+" ("+o.H+")"),o.interrupt("server_kill")},a))}).then(null,function(e){o.de("Failed to get token: "+e),l||(f.CONSTANTS.NODE_ADMIN&&u.warn(e),c())})}},t.prototype.interrupt=function(e){u.log("Interrupting connection for reason: "+e),this.ze[e]=!0,this.lt?this.lt.close():(this.ot&&(clearTimeout(this.ot),this.ot=null),this.tt&&this.xt())},t.prototype.resume=function(e){u.log("Resuming connection for reason: "+e),delete this.ze[e],o.isEmpty(this.ze)&&(this.nt=v,this.lt||this.yt(0))},t.prototype.Dt=function(e){var t=e-(new Date).getTime();this.ne({serverTimeOffset:t})},t.prototype.kt=function(){for(var e=0;e=3&&(this.nt=3e4,this.Ke.notifyForInvalidToken())},t.prototype.Ot=function(e){this.it?this.it(e):"msg"in e&&"undefined"!=typeof console&&console.log("FIREBASE: "+e.msg.replace("\n","\nFIREBASE: "))},t.prototype.Lt=function(){var e=this;this.tryAuth(),o.forEach(this.Je,function(t,n){o.forEach(n,function(t,n){e.mt(n)})});for(var t=0;t0,"Requires a non-empty array")}return e.prototype.trigger=function(e){for(var t=[],n=1;n0&&(this.rn=r.setTimeoutNonBlocking(function(){e.rn=null,e.nn||(e.Yt&&e.Yt.bytesReceived>102400?(e.de("Connection exceeded healthy timeout but has received "+e.Yt.bytesReceived+" bytes. Marking connection healthy."),e.nn=!0,e.Yt.markConnectionHealthy()):e.Yt&&e.Yt.bytesSent>10240?e.de("Connection exceeded healthy timeout but has sent "+e.Yt.bytesSent+" bytes. Leaving connection alive."):(e.de("Closing unhealthy connection after timeout."),e.close()))},Math.floor(o)))},e.prototype.Xt=function(){return"c:"+this.id+":"+this.connectionCount++},e.prototype.$t=function(e){var t=this;return function(n){e===t.Yt?t.in(n):e===t.tn?(t.de("Secondary connection lost."),t.an()):t.de("closing an old connection")}},e.prototype.Jt=function(e){var t=this;return function(n){2!=t.Ht&&(e===t.en?t.sn(n):e===t.tn?t.un(n):t.de("message on old connection"))}},e.prototype.sendRequest=function(e){var t={t:"d",d:e};this.ln(t)},e.prototype.tryCleanupConnection=function(){this.Zt===this.tn&&this.en===this.tn&&(this.de("cleaning up and promoting a connection: "+this.tn.connId),this.Yt=this.tn,this.tn=null)},e.prototype.hn=function(e){if("t"in e){var t=e.t;"a"===t?this.cn():"r"===t?(this.de("Got a reset on secondary, closing it"),this.tn.close(),this.Zt!==this.tn&&this.en!==this.tn||this.close()):"o"===t&&(this.de("got pong on secondary."),this.pn--,this.cn())}},e.prototype.un=function(e){var t=r.requireKey("t",e),n=r.requireKey("d",e);if("c"==t)this.hn(n);else{if("d"!=t)throw Error("Unknown protocol layer: "+t);this.pendingDataMessages.push(n)}},e.prototype.cn=function(){this.pn<=0?(this.de("Secondary connection is healthy."),this.nn=!0,this.tn.markConnectionHealthy(),this.dn()):(this.de("sending ping on secondary."),this.tn.send({t:"c",d:{t:"p",d:{}}}))},e.prototype.dn=function(){this.tn.start(),this.de("sending client ack on secondary"),this.tn.send({t:"c",d:{t:"a",d:{}}}),this.de("Ending transmission on primary"),this.Yt.send({t:"c",d:{t:"n",d:{}}}),this.Zt=this.tn,this.tryCleanupConnection()},e.prototype.sn=function(e){var t=r.requireKey("t",e),n=r.requireKey("d",e);"c"==t?this.fn(n):"d"==t&&this.wt(n)},e.prototype.wt=function(e){this._n(),this.Ut(e)},e.prototype._n=function(){this.nn||--this.zt<=0&&(this.de("Primary connection is healthy."),this.nn=!0,this.Yt.markConnectionHealthy())},e.prototype.fn=function(e){var t=r.requireKey("t",e);if("d"in e){var n=e.d;if("h"===t)this.yn(n);else if("n"===t){this.de("recvd end transmission on primary"),this.en=this.tn;for(var i=0;idocument.domain="'+document.domain+'";<\/script>');var h=""+u+"";try{this.myIFrame.doc.open(),this.myIFrame.doc.write(h),this.myIFrame.doc.close()}catch(e){r.log("frame writing exception"),e.stack&&r.log(e.stack),r.log(e)}}}return e.Dn=function(){var e=document.createElement("iframe");if(e.style.display="none",!document.body)throw"Document body has not initialized. Wait to initialize Firebase until after the document is ready.";document.body.appendChild(e);try{e.contentWindow.document||r.log("No IE domain setting required")}catch(n){var t=document.domain;e.src="javascript:void((function(){document.open();document.domain='"+t+"';document.close();})())"}return e.contentDocument?e.doc=e.contentDocument:e.contentWindow?e.doc=e.contentWindow.document:e.document&&(e.doc=e.document),e},e.prototype.close=function(){var n=this;if(this.alive=!1,this.myIFrame&&(this.myIFrame.doc.body.innerHTML="",setTimeout(function(){null!==n.myIFrame&&(document.body.removeChild(n.myIFrame),n.myIFrame=null)},Math.floor(0))),l.isNodeSdk()&&this.myID){var r={};r[t.FIREBASE_LONGPOLL_DISCONN_FRAME_PARAM]="t",r[t.FIREBASE_LONGPOLL_ID_PARAM]=this.myID,r[t.FIREBASE_LONGPOLL_PW_PARAM]=this.myPW;var i=this.urlFn(r);e.nodeRestRequest(i)}var o=this.onDisconnect;o&&(this.onDisconnect=null,o())},e.prototype.startLongPoll=function(e,t){for(this.myID=e,this.myPW=t,this.alive=!0;this.Mn(););},e.prototype.Mn=function(){if(this.alive&&this.sendNewPolls&&this.outstandingRequests.count()<(this.pendingSegs.length>0?2:1)){this.currentSerial++;var e={};e[t.FIREBASE_LONGPOLL_ID_PARAM]=this.myID,e[t.FIREBASE_LONGPOLL_PW_PARAM]=this.myPW,e[t.FIREBASE_LONGPOLL_SERIAL_PARAM]=this.currentSerial;for(var n=this.urlFn(e),r="",i=0;this.pendingSegs.length>0&&this.pendingSegs[0].d.length+30+r.length<=1870;){var o=this.pendingSegs.shift();r=r+"&"+t.FIREBASE_LONGPOLL_SEGMENT_NUM_PARAM+i+"="+o.seg+"&"+t.FIREBASE_LONGPOLL_SEGMENTS_IN_PACKET+i+"="+o.ts+"&"+t.FIREBASE_LONGPOLL_DATA_PARAM+i+"="+o.d,i++}return n+=r,this.Ln(n,this.currentSerial),!0}return!1},e.prototype.enqueueSegment=function(e,t,n){this.pendingSegs.push({seg:e,ts:t,d:n}),this.alive&&this.Mn()},e.prototype.Ln=function(e,t){var n=this;this.outstandingRequests.add(t,1);var r=function(){n.outstandingRequests.remove(t),n.Mn()},i=setTimeout(r,Math.floor(25e3)),o=function(){clearTimeout(i),r()};this.addTag(e,o)},e.prototype.addTag=function(e,t){var n=this;l.isNodeSdk()?this.doNodeLongPoll(e,t):setTimeout(function(){try{if(!n.sendNewPolls)return;var i=n.myIFrame.doc.createElement("script");i.type="text/javascript",i.async=!0,i.src=e,i.onload=i.onreadystatechange=function(){var e=i.readyState;e&&"loaded"!==e&&"complete"!==e||(i.onload=i.onreadystatechange=null,i.parentNode&&i.parentNode.removeChild(i),t())},i.onerror=function(){r.log("Long-poll script failed to load: "+e),n.sendNewPolls=!1,n.close()},n.myIFrame.doc.body.appendChild(i)}catch(e){}},Math.floor(1))},e}();t.FirebaseIFrameScriptHolder=c},function(e,t,n){"use strict";(function(e){function r(e){d=e}Object.defineProperty(t,"__esModule",{value:!0});var i=n(6),o=n(0),a=n(1),s=n(25),u=n(13),l=n(0),h=n(12),c=n(0),p=n(0),d=null;"undefined"!=typeof MozWebSocket?d=MozWebSocket:"undefined"!=typeof WebSocket&&(d=WebSocket),t.setWebSocketImpl=r;var f=function(){function t(e,n,r,i){this.connId=e,this.keepaliveTimer=null,this.frames=null,this.totalFrames=0,this.bytesSent=0,this.bytesReceived=0,this.de=a.logWrapper(this.connId),this.$=s.StatsManager.getCollection(n),this.connURL=t.Fn(n,r,i)}return t.Fn=function(e,t,n){var r={};return r[u.VERSION_PARAM]=u.PROTOCOL_VERSION,!p.isNodeSdk()&&"undefined"!=typeof location&&location.href&&-1!==location.href.indexOf(u.FORGE_DOMAIN)&&(r[u.REFERER_PARAM]=u.FORGE_REF),t&&(r[u.TRANSPORT_SESSION_PARAM]=t),n&&(r[u.LAST_SESSION_PARAM]=n),e.connectionURL(u.WEBSOCKET,r)},t.prototype.open=function(t,n){var r=this;this.onDisconnect=n,this.onMessage=t,this.de("Websocket connecting to "+this.connURL),this.bn=!1,h.PersistentStorage.set("previous_websocket_failure",!0);try{if(p.isNodeSdk()){var o=l.CONSTANTS.NODE_ADMIN?"AdminNode":"Node",a={headers:{"User-Agent":"Firebase/"+u.PROTOCOL_VERSION+"/"+i.default.SDK_VERSION+"/"+e.platform+"/"+o}},s=e.env,c=0==this.connURL.indexOf("wss://")?s.HTTPS_PROXY||s.https_proxy:s.HTTP_PROXY||s.http_proxy;c&&(a.proxy={origin:c}),this.mySock=new d(this.connURL,[],a)}else this.mySock=new d(this.connURL)}catch(e){this.de("Error instantiating WebSocket.");var f=e.message||e.data;return f&&this.de(f),void this.wn()}this.mySock.onopen=function(){r.de("Websocket connected."),r.bn=!0},this.mySock.onclose=function(){r.de("Websocket connection was disconnected."),r.mySock=null,r.wn()},this.mySock.onmessage=function(e){r.handleIncomingFrame(e)},this.mySock.onerror=function(e){r.de("WebSocket error. Closing connection.");var t=e.message||e.data;t&&r.de(t),r.wn()}},t.prototype.start=function(){},t.forceDisallow=function(){t.On=!0},t.isAvailable=function(){var e=!1;if("undefined"!=typeof navigator&&navigator.userAgent){var n=/Android ([0-9]{0,}\.[0-9]{0,})/,r=navigator.userAgent.match(n);r&&r.length>1&&parseFloat(r[1])<4.4&&(e=!0)}return!e&&null!==d&&!t.On},t.previouslyFailed=function(){return h.PersistentStorage.isInMemoryStorage||!0===h.PersistentStorage.get("previous_websocket_failure")},t.prototype.markConnectionHealthy=function(){h.PersistentStorage.remove("previous_websocket_failure")},t.prototype.xn=function(e){if(this.frames.push(e),this.frames.length==this.totalFrames){var t=this.frames.join("");this.frames=null;var n=c.jsonEval(t);this.onMessage(n)}},t.prototype.kn=function(e){this.totalFrames=e,this.frames=[]},t.prototype.Wn=function(e){if(o.assert(null===this.frames,"We already have a frame buffer"),e.length<=6){var t=+e;if(!isNaN(t))return this.kn(t),null}return this.kn(1),e},t.prototype.handleIncomingFrame=function(e){if(null!==this.mySock){var t=e.data;if(this.bytesReceived+=t.length,this.$.incrementCounter("bytes_received",t.length),this.resetKeepAlive(),null!==this.frames)this.xn(t);else{var n=this.Wn(t);null!==n&&this.xn(n)}}},t.prototype.send=function(e){this.resetKeepAlive();var t=c.stringify(e);this.bytesSent+=t.length,this.$.incrementCounter("bytes_sent",t.length);var n=a.splitStringBySize(t,16384);n.length>1&&this.jn(n.length+"");for(var r=0;r=0;a--)s[a]=e.charAt(i%64),i=Math.floor(i/64);r.assert(0===i,"Cannot push at time == 0");var u=s.join("");if(o){for(a=11;a>=0&&63===n[a];a--)n[a]=0;n[a]++}else for(a=0;a<12;a++)n[a]=Math.floor(64*Math.random());for(a=0;a<12;a++)u+=e.charAt(n[a]);return r.assert(20===u.length,"nextPushId: Length should be 20."),u}}()},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(22),i=n(85),o=n(0),a=n(0),s=function(){function e(e,t,n){this.Xn=e,this.zn=t,this.Jn=n}return e.prototype.respondsTo=function(e){return"value"===e},e.prototype.createEvent=function(e,t){var n=t.getQueryParams().getIndex();return new i.DataEvent("value",this,new r.DataSnapshot(e.snapshotNode,t.getRef(),n))},e.prototype.getEventRunner=function(e){var t=this.Jn;if("cancel"===e.getEventType()){a.assert(this.zn,"Raising a cancel event on a listener with no cancel callback");var n=this.zn;return function(){n.call(t,e.error)}}var r=this.Xn;return function(){r.call(t,e.snapshot)}},e.prototype.createCancelEvent=function(e,t){return this.zn?new i.CancelEvent(this,e,t):null},e.prototype.matches=function(t){return t instanceof e&&(!t.Xn||!this.Xn||t.Xn===this.Xn&&t.Jn===this.Jn)},e.prototype.hasAnyCallback=function(){return null!==this.Xn},e}();t.ValueEventRegistration=s;var u=function(){function e(e,t,n){this.$n=e,this.zn=t,this.Jn=n}return e.prototype.respondsTo=function(e){var t="children_added"===e?"child_added":e;return t="children_removed"===t?"child_removed":t,o.contains(this.$n,t)},e.prototype.createCancelEvent=function(e,t){return this.zn?new i.CancelEvent(this,e,t):null},e.prototype.createEvent=function(e,t){a.assert(null!=e.childName,"Child events should have a childName.");var n=t.getRef().child(e.childName),o=t.getQueryParams().getIndex();return new i.DataEvent(e.type,this,new r.DataSnapshot(e.snapshotNode,n,o),e.prevName)},e.prototype.getEventRunner=function(e){var t=this.Jn;if("cancel"===e.getEventType()){a.assert(this.zn,"Raising a cancel event on a listener with no cancel callback");var n=this.zn;return function(){n.call(t,e.error)}}var r=this.$n[e.eventType];return function(){r.call(t,e.snapshot,e.prevName)}},e.prototype.matches=function(t){if(t instanceof e){if(!this.$n||!t.$n)return!0;if(this.Jn===t.Jn){var n=o.getCount(t.$n);if(n===o.getCount(this.$n)){if(1===n){var r=o.getAnyKey(t.$n),i=o.getAnyKey(this.$n);return!(i!==r||t.$n[r]&&this.$n[i]&&t.$n[r]!==this.$n[i])}return o.every(this.$n,function(e,n){return t.$n[e]===n})}}}return!1},e.prototype.hasAnyCallback=function(){return null!==this.$n},e}();t.ChildEventRegistration=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),i=function(){function e(e,t,n,r){this.eventType=e,this.eventRegistration=t,this.snapshot=n,this.prevName=r}return e.prototype.getPath=function(){var e=this.snapshot.getRef();return"value"===this.eventType?e.path:e.getParent().path},e.prototype.getEventType=function(){return this.eventType},e.prototype.getEventRunner=function(){return this.eventRegistration.getEventRunner(this)},e.prototype.toString=function(){return this.getPath()+":"+this.eventType+":"+r.stringify(this.snapshot.exportVal())},e}();t.DataEvent=i;var o=function(){function e(e,t,n){this.eventRegistration=e,this.error=t,this.path=n}return e.prototype.getPath=function(){return this.path},e.prototype.getEventType=function(){return"cancel"},e.prototype.getEventRunner=function(){return this.eventRegistration.getEventRunner(this)},e.prototype.toString=function(){return this.path+":cancel"},e}();t.CancelEvent=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),i=n(1),o=n(87),a=n(4),s=n(0),u=n(23),l=n(88),h=n(89),c=n(8),p=n(46),d=n(2),f=n(47),_=n(95),y=function(){function e(e){this.Zn=e,this.er=u.ImmutableTree.Empty,this.tr=new _.WriteTree,this.nr={},this.rr={}}return e.prototype.applyUserOverwrite=function(e,t,n,r){return this.tr.addOverwrite(e,t,n,r),r?this.ir(new p.Overwrite(c.OperationSource.User,e,t)):[]},e.prototype.applyUserMerge=function(e,t,n){this.tr.addMerge(e,t,n);var r=u.ImmutableTree.fromObject(t);return this.ir(new h.Merge(c.OperationSource.User,e,r))},e.prototype.ackUserWrite=function(e,t){void 0===t&&(t=!1);var n=this.tr.getWrite(e);if(this.tr.removeWrite(e)){var r=u.ImmutableTree.Empty;return null!=n.snap?r=r.set(d.Path.Empty,!0):s.forEach(n.children,function(e,t){r=r.set(new d.Path(e),t)}),this.ir(new o.AckUserWrite(n.path,r,t))}return[]},e.prototype.applyServerOverwrite=function(e,t){return this.ir(new p.Overwrite(c.OperationSource.Server,e,t))},e.prototype.applyServerMerge=function(e,t){var n=u.ImmutableTree.fromObject(t);return this.ir(new h.Merge(c.OperationSource.Server,e,n))},e.prototype.applyListenComplete=function(e){return this.ir(new l.ListenComplete(c.OperationSource.Server,e))},e.prototype.applyTaggedQueryOverwrite=function(t,n,r){var i=this.or(r);if(null!=i){var o=e.ar(i),a=o.path,s=o.queryId,u=d.Path.relativePath(a,t),l=new p.Overwrite(c.OperationSource.forServerTaggedQuery(s),u,n);return this.sr(a,l)}return[]},e.prototype.applyTaggedQueryMerge=function(t,n,r){var i=this.or(r);if(i){var o=e.ar(i),a=o.path,s=o.queryId,l=d.Path.relativePath(a,t),p=u.ImmutableTree.fromObject(n),f=new h.Merge(c.OperationSource.forServerTaggedQuery(s),l,p);return this.sr(a,f)}return[]},e.prototype.applyTaggedListenComplete=function(t,n){var r=this.or(n);if(r){var i=e.ar(r),o=i.path,a=i.queryId,s=d.Path.relativePath(o,t),u=new l.ListenComplete(c.OperationSource.forServerTaggedQuery(a),s);return this.sr(o,u)}return[]},e.prototype.addEventRegistration=function(t,n){var i=t.path,o=null,s=!1;this.er.foreachOnPath(i,function(e,t){var n=d.Path.relativePath(e,i);o=o||t.getCompleteServerCache(n),s=s||t.hasCompleteView()});var u=this.er.get(i);u?(s=s||u.hasCompleteView(),o=o||u.getCompleteServerCache(d.Path.Empty)):(u=new f.SyncPoint,this.er=this.er.set(i,u));var l;null!=o?l=!0:(l=!1,o=a.ChildrenNode.EMPTY_NODE,this.er.subtree(i).foreachChild(function(e,t){var n=t.getCompleteServerCache(d.Path.Empty);n&&(o=o.updateImmediateChild(e,n))}));var h=u.viewExistsForQuery(t);if(!h&&!t.getQueryParams().loadsAllData()){var c=e.ur(t);r.assert(!(c in this.rr),"View does not exist, but we have a tag");var p=e.lr();this.rr[c]=p,this.nr["_"+p]=c}var _=this.tr.childWrites(i),y=u.addEventRegistration(t,n,_,o,l);if(!h&&!s){var v=u.viewForQuery(t);y=y.concat(this.hr(t,v))}return y},e.prototype.removeEventRegistration=function(t,n,r){var i=this,o=t.path,a=this.er.get(o),s=[];if(a&&("default"===t.queryIdentifier()||a.viewExistsForQuery(t))){var u=a.removeEventRegistration(t,n,r);a.isEmpty()&&(this.er=this.er.remove(o));var l=u.removed;s=u.events;var h=-1!==l.findIndex(function(e){return e.getQueryParams().loadsAllData()}),c=this.er.findOnPath(o,function(e,t){return t.hasCompleteView()});if(h&&!c){var p=this.er.subtree(o);if(!p.isEmpty())for(var d=this.cr(p),f=0;f0&&!r&&(h?this.Zn.stopListening(e.dr(t),null):l.forEach(function(t){var n=i.rr[e.ur(t)];i.Zn.stopListening(e.dr(t),n)})),this._r(l)}return s},e.prototype.calcCompleteEventCache=function(e,t){var n=this.tr,r=this.er.findOnPath(e,function(t,n){var r=d.Path.relativePath(t,e),i=n.getCompleteServerCache(r);if(i)return i});return n.calcCompleteEventCache(e,r,t,!0)},e.prototype.cr=function(e){return e.fold(function(e,t,n){if(t&&t.hasCompleteView())return[t.getCompleteView()];var r=[];return t&&(r=t.getQueryViews()),s.forEach(n,function(e,t){r=r.concat(t)}),r})},e.prototype._r=function(t){for(var n=0;n0||!e.getEventCache().isFullyInitialized()||i&&!r.getNode().equals(o)||!r.getNode().getPriority().equals(o.getPriority()))&&n.push(a.Change.valueChange(t.getCompleteEventSnap()))}},e.prototype.Lr=function(e,t,n,r,o){var a=e.getEventCache();if(null!=n.shadowingWrite(t))return e;var u=void 0,l=void 0;if(t.isEmpty())if(i.assert(e.getServerCache().isFullyInitialized(),"If change path is empty, we must have complete server data"),e.getServerCache().isFiltered()){var h=e.getCompleteServerSnap(),c=h instanceof s.ChildrenNode?h:s.ChildrenNode.EMPTY_NODE,p=n.calcCompleteEventChildren(c);u=this.Sr.updateFullNode(e.getEventCache().getNode(),p,o)}else{var d=n.calcCompleteEventCache(e.getCompleteServerSnap());u=this.Sr.updateFullNode(e.getEventCache().getNode(),d,o)}else{var f=t.getFront();if(".priority"==f){i.assert(1==t.getLength(),"Can't have a priority with additional path components");var _=a.getNode();l=e.getServerCache().getNode();var y=n.calcEventCacheAfterServerOverwrite(t,_,l);u=null!=y?this.Sr.updatePriority(_,y):a.getNode()}else{var v=t.popFront(),g=void 0;if(a.isCompleteForChild(f)){l=e.getServerCache().getNode();var m=n.calcEventCacheAfterServerOverwrite(t,a.getNode(),l);g=null!=m?a.getNode().getImmediateChild(f).updateChild(v,m):a.getNode().getImmediateChild(f)}else g=n.calcCompleteChild(f,e.getServerCache());u=null!=g?this.Sr.updateChild(a.getNode(),f,g,v,r,o):a.getNode()}}return e.updateEventSnap(u,a.isFullyInitialized()||t.isEmpty(),this.Sr.filtersNodes())},e.prototype.wr=function(e,t,n,r,i,o,a){var s,u=e.getServerCache(),l=o?this.Sr:this.Sr.getIndexedFilter();if(t.isEmpty())s=l.updateFullNode(u.getNode(),n,null);else if(l.filtersNodes()&&!u.isFiltered()){var h=u.getNode().updateChild(t,n);s=l.updateFullNode(u.getNode(),h,null)}else{var p=t.getFront();if(!u.isCompleteForPath(t)&&t.getLength()>1)return e;var d=t.popFront(),f=u.getNode().getImmediateChild(p),_=f.updateChild(d,n);s=".priority"==p?l.updatePriority(u.getNode(),_):l.updateChild(u.getNode(),p,_,d,c.NO_COMPLETE_CHILD_SOURCE,null)}var y=e.updateServerSnap(s,u.isFullyInitialized()||t.isEmpty(),l.filtersNodes()),v=new c.WriteTreeCompleteChildSource(r,y,i);return this.Lr(y,t,r,v,a)},e.prototype.Tr=function(e,t,n,r,i,o){var a,u,l=e.getEventCache(),h=new c.WriteTreeCompleteChildSource(r,e,i);if(t.isEmpty())u=this.Sr.updateFullNode(e.getEventCache().getNode(),n,o),a=e.updateEventSnap(u,!0,this.Sr.filtersNodes());else{var p=t.getFront();if(".priority"===p)u=this.Sr.updatePriority(e.getEventCache().getNode(),n),a=e.updateEventSnap(u,l.isFullyInitialized(),l.isFiltered());else{var d=t.popFront(),f=l.getNode().getImmediateChild(p),_=void 0;if(d.isEmpty())_=n;else{var y=h.getCompleteChild(p);_=null!=y?".priority"===d.getBack()&&y.getChild(d.parent()).isEmpty()?y:y.updateChild(d,n):s.ChildrenNode.EMPTY_NODE}if(f.equals(_))a=e;else{var v=this.Sr.updateChild(l.getNode(),p,_,d,h,o);a=e.updateEventSnap(v,l.isFullyInitialized(),this.Sr.filtersNodes())}}}return a},e.Fr=function(e,t){return e.getEventCache().isCompleteForChild(t)},e.prototype.Ir=function(t,n,r,i,o,a){var s=this,u=t;return r.foreach(function(r,l){var h=n.child(r);e.Fr(t,h.getFront())&&(u=s.Tr(u,h,l,i,o,a))}),r.foreach(function(r,l){var h=n.child(r);e.Fr(t,h.getFront())||(u=s.Tr(u,h,l,i,o,a))}),u},e.prototype.xr=function(e,t){return t.foreach(function(t,n){e=e.updateChild(t,n)}),e},e.prototype.Rr=function(e,t,n,r,i,o,a){var s=this;if(e.getServerCache().getNode().isEmpty()&&!e.getServerCache().isFullyInitialized())return e;var u,c=e;u=t.isEmpty()?n:l.ImmutableTree.Empty.setTree(t,n);var p=e.getServerCache().getNode();return u.children.inorderTraversal(function(t,n){if(p.hasChild(t)){var u=e.getServerCache().getNode().getImmediateChild(t),l=s.xr(u,n);c=s.wr(c,new h.Path(t),l,r,i,o,a)}}),u.children.inorderTraversal(function(t,n){var u=!e.getServerCache().isCompleteForChild(t)&&null==n.value;if(!p.hasChild(t)&&!u){var l=e.getServerCache().getNode().getImmediateChild(t),d=s.xr(l,n);c=s.wr(c,new h.Path(t),d,r,i,o,a)}}),c},e.prototype.Ar=function(e,t,n,r,i,o){if(null!=r.shadowingWrite(t))return e;var a=e.getServerCache().isFiltered(),s=e.getServerCache();if(null!=n.value){if(t.isEmpty()&&s.isFullyInitialized()||s.isCompleteForPath(t))return this.wr(e,t,s.getNode().getChild(t),r,i,a,o);if(t.isEmpty()){var c=l.ImmutableTree.Empty;return s.getNode().forEachChild(u.KEY_INDEX,function(e,t){c=c.set(new h.Path(e),t)}),this.Rr(e,t,c,r,i,a,o)}return e}var p=l.ImmutableTree.Empty;return n.foreach(function(e,n){var r=t.child(e);s.isCompleteForPath(r)&&(p=p.set(e,s.getNode().getChild(r)))}),this.Rr(e,t,p,r,i,a,o)},e.prototype.Dr=function(e,t,n,r){var i=e.getServerCache(),o=e.updateServerSnap(i.getNode(),i.isFullyInitialized()||t.isEmpty(),i.isFiltered());return this.Lr(o,t,n,c.NO_COMPLETE_CHILD_SOURCE,r)},e.prototype.Or=function(e,t,n,r,o){var a;if(null!=n.shadowingWrite(t))return e;var u=new c.WriteTreeCompleteChildSource(n,e,r),l=e.getEventCache().getNode(),p=void 0;if(t.isEmpty()||".priority"===t.getFront()){var d=void 0;if(e.getServerCache().isFullyInitialized())d=n.calcCompleteEventCache(e.getCompleteServerSnap());else{var f=e.getServerCache().getNode();i.assert(f instanceof s.ChildrenNode,"serverChildren would be complete if leaf node"),d=n.calcCompleteEventChildren(f)}d=d,p=this.Sr.updateFullNode(l,d,o)}else{var _=t.getFront(),y=n.calcCompleteChild(_,e.getServerCache());null==y&&e.getServerCache().isCompleteForChild(_)&&(y=l.getImmediateChild(_)),p=null!=y?this.Sr.updateChild(l,_,y,t.popFront(),u,o):e.getEventCache().getNode().hasChild(_)?this.Sr.updateChild(l,_,s.ChildrenNode.EMPTY_NODE,t.popFront(),u,o):l,p.isEmpty()&&e.getServerCache().isFullyInitialized()&&(a=n.calcCompleteEventCache(e.getCompleteServerSnap()),a.isLeafNode()&&(p=this.Sr.updateFullNode(p,a,o)))}return a=e.getServerCache().isFullyInitialized()||null!=n.shadowingWrite(h.Path.Empty),e.updateEventSnap(p,a,this.Sr.filtersNodes())},e}();t.ViewProcessor=d},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),i=n(9),o=n(0),a=function(){function e(){this.kr={}}return e.prototype.trackChildChange=function(e){var t=e.type,n=e.childName;o.assert(t==i.Change.CHILD_ADDED||t==i.Change.CHILD_CHANGED||t==i.Change.CHILD_REMOVED,"Only child changes supported for tracking"),o.assert(".priority"!==n,"Only non-priority child changes can be tracked.");var a=r.safeGet(this.kr,n);if(a){var s=a.type;if(t==i.Change.CHILD_ADDED&&s==i.Change.CHILD_REMOVED)this.kr[n]=i.Change.childChangedChange(n,e.snapshotNode,a.snapshotNode);else if(t==i.Change.CHILD_REMOVED&&s==i.Change.CHILD_ADDED)delete this.kr[n];else if(t==i.Change.CHILD_REMOVED&&s==i.Change.CHILD_CHANGED)this.kr[n]=i.Change.childRemovedChange(n,a.oldSnap);else if(t==i.Change.CHILD_CHANGED&&s==i.Change.CHILD_ADDED)this.kr[n]=i.Change.childAddedChange(n,e.snapshotNode);else{if(t!=i.Change.CHILD_CHANGED||s!=i.Change.CHILD_CHANGED)throw o.assertionError("Illegal combination of changes: "+e+" occurred after "+a);this.kr[n]=i.Change.childChangedChange(n,e.snapshotNode,a.oldSnap)}}else this.kr[n]=e},e.prototype.getChanges=function(){return r.getValues(this.kr)},e}();t.ChildChangeAccumulator=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(18),i=function(){function e(){}return e.prototype.getCompleteChild=function(e){return null},e.prototype.getChildAfterChild=function(e,t,n){return null},e}();t.Wr=i,t.NO_COMPLETE_CHILD_SOURCE=new i;var o=function(){function e(e,t,n){void 0===n&&(n=null),this.jr=e,this.Nr=t,this.Vr=n}return e.prototype.getCompleteChild=function(e){var t=this.Nr.getEventCache();if(t.isCompleteForChild(e))return t.getNode().getImmediateChild(e);var n=null!=this.Vr?new r.CacheNode(this.Vr,!0,!1):this.Nr.getServerCache();return this.jr.calcCompleteChild(e,n)},e.prototype.getChildAfterChild=function(e,t,n){var r=null!=this.Vr?this.Vr:this.Nr.getCompleteServerSnap(),i=this.jr.calcIndexedSlice(r,t,1,n,e);return 0===i.length?null:i[0]},e}();t.WriteTreeCompleteChildSource=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(5),i=n(9),o=n(0),a=function(){function e(e){this.mr=e,this.me=this.mr.getQueryParams().getIndex()}return e.prototype.generateEventsForChanges=function(e,t,n){var r=this,o=[],a=[];return e.forEach(function(e){e.type===i.Change.CHILD_CHANGED&&r.me.indexedValueChanged(e.oldSnap,e.snapshotNode)&&a.push(i.Change.childMovedChange(e.childName,e.snapshotNode))}),this.Qr(o,i.Change.CHILD_REMOVED,e,n,t),this.Qr(o,i.Change.CHILD_ADDED,e,n,t),this.Qr(o,i.Change.CHILD_MOVED,a,n,t),this.Qr(o,i.Change.CHILD_CHANGED,e,n,t),this.Qr(o,i.Change.VALUE,e,n,t),o},e.prototype.Qr=function(e,t,n,r,i){var o=this,a=n.filter(function(e){return e.type===t});a.sort(this.qr.bind(this)),a.forEach(function(t){var n=o.Ur(t,i);r.forEach(function(r){r.respondsTo(t.type)&&e.push(r.createEvent(n,o.mr))})})},e.prototype.Ur=function(e,t){return"value"===e.type||"child_removed"===e.type?e:(e.prevName=t.getPredecessorChildName(e.childName,e.snapshotNode,this.me),e)},e.prototype.qr=function(e,t){if(null==e.childName||null==t.childName)throw o.assertionError("Should only compare child_ events.");var n=new r.NamedNode(e.childName,e.snapshotNode),i=new r.NamedNode(t.childName,t.snapshotNode);return this.me.compare(n,i)},e}();t.EventGenerator=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),i=n(0),o=n(2),a=n(96),s=n(3),u=n(4),l=function(){function e(){this.Br=a.CompoundWrite.Empty,this.Hr=[],this.Gr=-1}return e.prototype.childWrites=function(e){return new h(e,this)},e.prototype.addOverwrite=function(e,t,n,r){i.assert(n>this.Gr,"Stacking an older write on top of newer ones"),void 0===r&&(r=!0),this.Hr.push({path:e,snap:t,writeId:n,visible:r}),r&&(this.Br=this.Br.addWrite(e,t)),this.Gr=n},e.prototype.addMerge=function(e,t,n){i.assert(n>this.Gr,"Stacking an older merge on top of newer ones"),this.Hr.push({path:e,children:t,writeId:n,visible:!0}),this.Br=this.Br.addWrites(e,t),this.Gr=n},e.prototype.getWrite=function(e){for(var t=0;t=0,"removeWrite called with nonexistent writeId.");var o=this.Hr[n];this.Hr.splice(n,1);for(var a=o.visible,s=!1,u=this.Hr.length-1;a&&u>=0;){var l=this.Hr[u];l.visible&&(u>=n&&this.Kr(l,o.path)?a=!1:o.path.contains(l.path)&&(s=!0)),u--}if(a){if(s)return this.Yr(),!0;if(o.snap)this.Br=this.Br.removeWrite(o.path);else{var h=o.children;r.forEach(h,function(e){t.Br=t.Br.removeWrite(o.path.child(e))})}return!0}return!1},e.prototype.getCompleteWriteData=function(e){return this.Br.getCompleteNode(e)},e.prototype.calcCompleteEventCache=function(t,n,r,i){if(r||i){var a=this.Br.childCompoundWrite(t);if(!i&&a.isEmpty())return n;if(i||null!=n||a.hasCompleteWrite(o.Path.Empty)){var s=function(e){return(e.visible||i)&&(!r||!~r.indexOf(e.writeId))&&(e.path.contains(t)||t.contains(e.path))},l=e.Xr(this.Hr,s,t),h=n||u.ChildrenNode.EMPTY_NODE;return l.apply(h)}return null}var c=this.Br.getCompleteNode(t);if(null!=c)return c;var p=this.Br.childCompoundWrite(t);if(p.isEmpty())return n;if(null!=n||p.hasCompleteWrite(o.Path.Empty)){var h=n||u.ChildrenNode.EMPTY_NODE;return p.apply(h)}return null},e.prototype.calcCompleteEventChildren=function(e,t){var n=u.ChildrenNode.EMPTY_NODE,r=this.Br.getCompleteNode(e);if(r)return r.isLeafNode()||r.forEachChild(s.PRIORITY_INDEX,function(e,t){n=n.updateImmediateChild(e,t)}),n;if(t){var i=this.Br.childCompoundWrite(e);return t.forEachChild(s.PRIORITY_INDEX,function(e,t){var r=i.childCompoundWrite(new o.Path(e)).apply(t);n=n.updateImmediateChild(e,r)}),i.getCompleteChildren().forEach(function(e){n=n.updateImmediateChild(e.name,e.node)}),n}return this.Br.childCompoundWrite(e).getCompleteChildren().forEach(function(e){n=n.updateImmediateChild(e.name,e.node)}),n},e.prototype.calcEventCacheAfterServerOverwrite=function(e,t,n,r){i.assert(n||r,"Either existingEventSnap or existingServerSnap must exist");var o=e.child(t);if(this.Br.hasCompleteWrite(o))return null;var a=this.Br.childCompoundWrite(o);return a.isEmpty()?r.getChild(t):a.apply(r.getChild(t))},e.prototype.calcCompleteChild=function(e,t,n){var r=e.child(t),i=this.Br.getCompleteNode(r);return null!=i?i:n.isCompleteForChild(t)?this.Br.childCompoundWrite(r).apply(n.getNode().getImmediateChild(t)):null},e.prototype.shadowingWrite=function(e){return this.Br.getCompleteNode(e)},e.prototype.calcIndexedSlice=function(e,t,n,r,i,a){var s,u=this.Br.childCompoundWrite(e),l=u.getCompleteNode(o.Path.Empty);if(null!=l)s=l;else{if(null==t)return[];s=u.apply(t)}if(s=s.withIndex(a),s.isEmpty()||s.isLeafNode())return[];for(var h=[],c=a.getCompare(),p=i?s.getReverseIteratorFrom(n,a):s.getIteratorFrom(n,a),d=p.getNext();d&&h.length0?this.Gr=this.Hr[this.Hr.length-1].writeId:this.Gr=-1},e.zr=function(e){return e.visible},e.Xr=function(e,t,n){for(var s=a.CompoundWrite.Empty,u=0;u0&&r.contains(e.ri,t)&&(n[t]=i,o=!0)}),o&&this.Z.reportStats(n),i.setTimeoutNonBlocking(this.ii.bind(this),Math.floor(2*Math.random()*3e5))},e}();t.StatsReporter=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(1),i=function(){function e(){this.oi=[],this.ai=0}return e.prototype.queueEvents=function(e){for(var t=null,n=0;n0)return this.ci[0];throw Error("No transports available")},e.prototype.upgradeTransport=function(){return this.ci.length>1?this.ci[1]:null},e}();t.TransportManager=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(1),i=function(){function e(e){this.Ut=e,this.pendingResponses=[],this.currentResponseNum=0,this.closeAfterResponse=-1,this.onClose=null}return e.prototype.closeAfter=function(e,t){this.closeAfterResponse=e,this.onClose=t,this.closeAfterResponse=200&&h.status<300){try{e=a.jsonEval(h.responseText)}catch(e){o.warn("Failed to parse JSON response for "+l+": "+h.responseText)}n(null,e)}else 401!==h.status&&404!==h.status&&o.warn("Got unsuccessful REST response for "+l+" Status: "+h.status),n(h.status);n=null}},h.open("GET",l,!0),h.send()})},t}(l.ServerActions);t.ReadonlyRestClient=h},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),i=n(1),o=n(10),a=n(3),s=n(38),u=n(42),l=n(24),h=n(108),c=n(56),p=n(0),d=function(){function e(){this.fi=!1,this._i=!1,this.yi=!1,this.vi=!1,this.gi=!1,this.mi=0,this.Ci="",this.Ei=null,this.Ni="",this.Pi=null,this.bi="",this.me=a.PRIORITY_INDEX}return e.prototype.hasStart=function(){return this._i},e.prototype.isViewFromLeft=function(){return""===this.Ci?this._i:this.Ci===e.Si.VIEW_FROM_LEFT},e.prototype.getIndexStartValue=function(){return r.assert(this._i,"Only valid if start has been set"),this.Ei},e.prototype.getIndexStartName=function(){return r.assert(this._i,"Only valid if start has been set"),this.yi?this.Ni:i.MIN_NAME},e.prototype.hasEnd=function(){return this.vi},e.prototype.getIndexEndValue=function(){return r.assert(this.vi,"Only valid if end has been set"),this.Pi},e.prototype.getIndexEndName=function(){return r.assert(this.vi,"Only valid if end has been set"),this.gi?this.bi:i.MAX_NAME},e.prototype.hasLimit=function(){return this.fi},e.prototype.hasAnchoredLimit=function(){return this.fi&&""!==this.Ci},e.prototype.getLimit=function(){return r.assert(this.fi,"Only valid if limit has been set"),this.mi},e.prototype.getIndex=function(){return this.me},e.prototype.Ti=function(){var t=new e;return t.fi=this.fi,t.mi=this.mi,t._i=this._i,t.Ei=this.Ei,t.yi=this.yi,t.Ni=this.Ni,t.vi=this.vi,t.Pi=this.Pi,t.gi=this.gi,t.bi=this.bi,t.me=this.me,t.Ci=this.Ci,t},e.prototype.limit=function(e){var t=this.Ti();return t.fi=!0,t.mi=e,t.Ci="",t},e.prototype.limitToFirst=function(t){var n=this.Ti();return n.fi=!0,n.mi=t,n.Ci=e.Si.VIEW_FROM_LEFT,n},e.prototype.limitToLast=function(t){var n=this.Ti();return n.fi=!0,n.mi=t,n.Ci=e.Si.VIEW_FROM_RIGHT,n},e.prototype.startAt=function(e,t){var n=this.Ti();return n._i=!0,void 0===e&&(e=null),n.Ei=e,null!=t?(n.yi=!0,n.Ni=t):(n.yi=!1,n.Ni=""),n},e.prototype.endAt=function(e,t){var n=this.Ti();return n.vi=!0,void 0===e&&(e=null),n.Pi=e,void 0!==t?(n.gi=!0,n.bi=t):(n.gi=!1,n.bi=""),n},e.prototype.orderBy=function(e){var t=this.Ti();return t.me=e,t},e.prototype.getQueryObject=function(){var t=e.Si,n={};if(this._i&&(n[t.INDEX_START_VALUE]=this.Ei,this.yi&&(n[t.INDEX_START_NAME]=this.Ni)),this.vi&&(n[t.INDEX_END_VALUE]=this.Pi,this.gi&&(n[t.INDEX_END_NAME]=this.bi)),this.fi){n[t.LIMIT]=this.mi;var r=this.Ci;""===r&&(r=this.isViewFromLeft()?t.VIEW_FROM_LEFT:t.VIEW_FROM_RIGHT),n[t.VIEW_FROM]=r}return this.me!==a.PRIORITY_INDEX&&(n[t.INDEX]=""+this.me),n},e.prototype.loadsAllData=function(){return!(this._i||this.vi||this.fi)},e.prototype.isDefault=function(){return this.loadsAllData()&&this.me==a.PRIORITY_INDEX},e.prototype.getNodeFilter=function(){return this.loadsAllData()?new l.IndexedFilter(this.getIndex()):this.hasLimit()?new h.LimitedFilter(this):new c.RangedFilter(this)},e.prototype.toRestQueryStringParameters=function(){var t=e.wi,n={};if(this.isDefault())return n;var i;return this.me===a.PRIORITY_INDEX?i=t.PRIORITY_INDEX:this.me===s.VALUE_INDEX?i=t.VALUE_INDEX:this.me===o.KEY_INDEX?i=t.KEY_INDEX:(r.assert(this.me instanceof u.PathIndex,"Unrecognized index type!"),i=""+this.me),n[t.ORDER_BY]=p.stringify(i),this._i&&(n[t.START_AT]=p.stringify(this.Ei),this.yi&&(n[t.START_AT]+=","+p.stringify(this.Ni))),this.vi&&(n[t.END_AT]=p.stringify(this.Pi),this.gi&&(n[t.END_AT]+=","+p.stringify(this.bi))),this.fi&&(this.isViewFromLeft()?n[t.LIMIT_TO_FIRST]=this.mi:n[t.LIMIT_TO_LAST]=this.mi),n},e.Si={INDEX_START_VALUE:"sp",INDEX_START_NAME:"sn",INDEX_END_VALUE:"ep",INDEX_END_NAME:"en",LIMIT:"l",VIEW_FROM:"vf",VIEW_FROM_LEFT:"l",VIEW_FROM_RIGHT:"r",INDEX:"i"},e.wi={ORDER_BY:"orderBy",PRIORITY_INDEX:"$priority",VALUE_INDEX:"$value",KEY_INDEX:"$key",START_AT:"startAt",END_AT:"endAt",LIMIT_TO_FIRST:"limitToFirst",LIMIT_TO_LAST:"limitToLast"},e.DEFAULT=new e,e}();t.QueryParams=d},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(56),i=n(4),o=n(5),a=n(0),s=n(9),u=function(){function e(e){this.Ii=new r.RangedFilter(e),this.me=e.getIndex(),this.mi=e.getLimit(),this.Ri=!e.isViewFromLeft()}return e.prototype.updateChild=function(e,t,n,r,a,s){return this.Ii.matches(new o.NamedNode(t,n))||(n=i.ChildrenNode.EMPTY_NODE),e.getImmediateChild(t).equals(n)?e:e.numChildren()=0)return null!=u&&u.trackChildChange(s.Change.childChangedChange(t,n,_)),c.updateImmediateChild(t,n);null!=u&&u.trackChildChange(s.Change.childRemovedChange(t,_));var g=c.updateImmediateChild(t,i.ChildrenNode.EMPTY_NODE);return null!=y&&this.Ii.matches(y)?(null!=u&&u.trackChildChange(s.Change.childAddedChange(y.name,y.node)),g.updateImmediateChild(y.name,y.node)):g}return n.isEmpty()?e:f&&l(d,p)>=0?(null!=u&&(u.trackChildChange(s.Change.childRemovedChange(d.name,d.node)),u.trackChildChange(s.Change.childAddedChange(t,n))),c.updateImmediateChild(t,n).updateImmediateChild(d.name,i.ChildrenNode.EMPTY_NODE)):e},e}();t.LimitedFilter=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,i=n(0),o=n(21),a=n(22),s=n(2),u=n(110),l=n(3),h=n(1),c=n(43),p=n(7),d=n(0),f=n(11),_=n(4),y=n(17);!function(e){e[e.RUN=0]="RUN",e[e.SENT=1]="SENT",e[e.COMPLETED=2]="COMPLETED",e[e.SENT_NEEDS_ABORT=3]="SENT_NEEDS_ABORT",e[e.NEEDS_ABORT=4]="NEEDS_ABORT"}(r=t.TransactionStatus||(t.TransactionStatus={})),y.Repo.Ai=25,y.Repo.prototype.ie=function(){this.Di=new u.Tree},y.Repo.prototype.startTransaction=function(e,t,n,s){this.de("transaction on "+e);var u=function(){},y=new o.Reference(this,e);y.on("value",u);var v=function(){y.off("value",u)},g={path:e,update:t,onComplete:n,status:null,order:h.LUIDGenerator(),applyLocally:s,retryCount:0,unwatcher:v,abortReason:null,currentWriteId:null,currentInputSnapshot:null,currentOutputSnapshotRaw:null,currentOutputSnapshotResolved:null},m=this.Mi(e);g.currentInputSnapshot=m;var C=g.update(m.val());if(void 0===C){if(g.unwatcher(),g.currentOutputSnapshotRaw=null,g.currentOutputSnapshotResolved=null,g.onComplete){var E=new a.DataSnapshot(g.currentInputSnapshot,new o.Reference(this,g.path),l.PRIORITY_INDEX);g.onComplete(null,!1,E)}}else{p.validateFirebaseData("transaction failed: Data returned ",C,g.path),g.status=r.RUN;var N=this.Di.subTree(e),P=N.getValue()||[];P.push(g),N.setValue(P);var b=void 0;"object"==typeof C&&null!==C&&d.contains(C,".priority")?(b=d.safeGet(C,".priority"),i.assert(p.isValidPriority(b),"Invalid priority returned by transaction. Priority must be a valid string, finite number, server value, or null.")):b=(this.ue.calcCompleteEventCache(e)||_.ChildrenNode.EMPTY_NODE).getPriority().val(),b=b;var S=this.generateServerValues(),T=f.nodeFromJSON(C,b),w=c.resolveDeferredValueSnapshot(T,S);g.currentOutputSnapshotRaw=T,g.currentOutputSnapshotResolved=w,g.currentWriteId=this.pe();var I=this.ue.applyUserOverwrite(e,w,g.currentWriteId,g.applyLocally);this.K.raiseEventsForChangedPath(e,I),this.Li()}},y.Repo.prototype.Mi=function(e,t){return this.ue.calcCompleteEventCache(e,t)||_.ChildrenNode.EMPTY_NODE},y.Repo.prototype.Li=function(e){var t=this;if(void 0===e&&(e=this.Di),e||this.Fi(e),null!==e.getValue()){var n=this.xi(e);i.assert(n.length>0,"Sending zero length transaction queue"),n.every(function(e){return e.status===r.RUN})&&this.ki(e.path(),n)}else e.hasChildren()&&e.forEachChild(function(e){t.Li(e)})},y.Repo.prototype.ki=function(e,t){for(var n=this,u=t.map(function(e){return e.currentWriteId}),c=this.Mi(e,u),p=c,d=c.hash(),f=0;f=y.Repo.Ai)E=!0,N="maxretry",u=u.concat(this.ue.ackUserWrite(m.currentWriteId,!0));else{var P=this.Mi(m.path,v);m.currentInputSnapshot=P;var b=e[g].update(P.val());if(void 0!==b){p.validateFirebaseData("transaction failed: Data returned ",b,m.path);var S=f.nodeFromJSON(b),T="object"==typeof b&&null!=b&&d.contains(b,".priority");T||(S=S.updatePriority(P.getPriority()));var w=m.currentWriteId,I=this.generateServerValues(),R=c.resolveDeferredValueSnapshot(S,I);m.currentOutputSnapshotRaw=S,m.currentOutputSnapshotResolved=R,m.currentWriteId=this.pe(),v.splice(v.indexOf(w),1),u=u.concat(this.ue.applyUserOverwrite(m.path,R,m.currentWriteId,m.applyLocally)),u=u.concat(this.ue.ackUserWrite(w,!0))}else E=!0,N="nodata",u=u.concat(this.ue.ackUserWrite(m.currentWriteId,!0))}if(this.K.raiseEventsForChangedPath(t,u),u=[],E&&(e[g].status=r.COMPLETED,function(e){setTimeout(e,Math.floor(0))}(e[g].unwatcher),e[g].onComplete))if("nodata"===N){var O=new o.Reference(this,e[g].path),A=e[g].currentInputSnapshot,D=new a.DataSnapshot(A,O,l.PRIORITY_INDEX);n.push(e[g].onComplete.bind(null,null,!1,D))}else n.push(e[g].onComplete.bind(null,Error(N),!1,null))}this.Fi(this.Di);for(var g=0;g0?n:null)}e.forEachChild(function(e){t.Fi(e)})},y.Repo.prototype.fe=function(e){var t=this,n=this.Wi(e).path(),r=this.Di.subTree(e);return r.forEachAncestor(function(e){t.Qi(e)}),this.Qi(r),r.forEachDescendant(function(e){t.Qi(e)}),n},y.Repo.prototype.Qi=function(e){var t=e.getValue();if(null!==t){for(var n=[],o=[],a=-1,s=0;s0},e.prototype.isEmpty=function(){return null===this.getValue()&&!this.hasChildren()},e.prototype.forEachChild=function(t){var n=this;o.forEach(this._e.children,function(r,i){t(new e(r,n,i))})},e.prototype.forEachDescendant=function(e,t,n){t&&!n&&e(this),this.forEachChild(function(t){t.forEachDescendant(e,!0,n)}),t&&n&&e(this)},e.prototype.forEachAncestor=function(e,t){for(var n=t?this:this.parent();null!==n;){if(e(n))return!0;n=n.parent()}return!1},e.prototype.forEachImmediateDescendantWithValue=function(e){this.forEachChild(function(t){null!==t.getValue()?e(t):t.forEachImmediateDescendantWithValue(e)})},e.prototype.path=function(){return new i.Path(null===this.Ui?this.qi:this.Ui.path()+"/"+this.qi)},e.prototype.name=function(){return this.qi},e.prototype.parent=function(){return this.Ui},e.prototype.Bi=function(){null!==this.Ui&&this.Ui.Hi(this.qi,this)},e.prototype.Hi=function(e,t){var n=t.isEmpty(),r=o.contains(this._e.children,e);n&&r?(delete this._e.children[e],this._e.childCount--,this.Bi()):n||r||(this._e.children[e]=t._e,this._e.childCount++,this.Bi())},e}();t.Tree=s},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(54),i=n(53);t.forceLongPolling=function(){r.WebSocketConnection.forceDisallow(),i.BrowserPollConnection.forceAllow()},t.forceWebSockets=function(){i.BrowserPollConnection.forceDisallow()},t.isWebSocketsAvailable=function(){return r.WebSocketConnection.isAvailable()},t.setSecurityDebugCallback=function(e,t){e.repo.J.it=t},t.stats=function(e,t){e.repo.stats(t)},t.statsIncrementCounter=function(e,t){e.repo.statsIncrementCounter(t)},t.dataUpdateCount=function(e){return e.repo.dataUpdateCount},t.interceptServerData=function(e,t){return e.repo.he(t)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(34),i=n(50),o=n(26),a=n(52);t.DataConnection=i.PersistentConnection,i.PersistentConnection.prototype.simpleListen=function(e,t){this.sendRequest("q",{p:e},t)},i.PersistentConnection.prototype.echo=function(e,t){this.sendRequest("echo",{d:e},t)},t.RealTimeConnection=a.Connection,t.hijackHash=function(e){var t=i.PersistentConnection.prototype.put;return i.PersistentConnection.prototype.put=function(n,r,i,o){void 0!==o&&(o=e()),t.call(this,n,r,i,o)},function(){i.PersistentConnection.prototype.put=t}},t.ConnectionTarget=r.RepoInfo,t.queryIdentifier=function(e){return e.queryIdentifier()},t.listens=function(e){return e.repo.J.Je},t.forceRestClient=function(e){o.RepoManager.getInstance().forceRestClient(e)}}],[78])}catch(e){throw Error("Cannot instantiate firebase-database.js - be sure to load firebase-app.js first.")} + +/*! + * @license Firebase v4.6.2 + * Build: rev-cbb07d3 + * Terms: https://firebase.google.com/terms/ + */ +try{webpackJsonpFirebase([3],{116:function(e,t,r){r(117)},117:function(e,t,r){"use strict";function n(e){var t=new Uint8Array(e);return window.btoa(String.fromCharCode.apply(null,t))}function o(e){var t=function(e){return self&&"ServiceWorkerGlobalScope"in self?new A(e):new k(e)},r={Messaging:k};e.INTERNAL.registerService("messaging",t,r)}Object.defineProperty(t,"__esModule",{value:!0});var i,s=r(0),a={AVAILABLE_IN_WINDOW:"only-available-in-window",AVAILABLE_IN_SW:"only-available-in-sw",SHOULD_BE_INHERITED:"should-be-overriden",BAD_SENDER_ID:"bad-sender-id",INCORRECT_GCM_SENDER_ID:"incorrect-gcm-sender-id",PERMISSION_DEFAULT:"permission-default",PERMISSION_BLOCKED:"permission-blocked",UNSUPPORTED_BROWSER:"unsupported-browser",NOTIFICATIONS_BLOCKED:"notifications-blocked",FAILED_DEFAULT_REGISTRATION:"failed-serviceworker-registration",SW_REGISTRATION_EXPECTED:"sw-registration-expected",GET_SUBSCRIPTION_FAILED:"get-subscription-failed",INVALID_SAVED_TOKEN:"invalid-saved-token",SW_REG_REDUNDANT:"sw-reg-redundant",TOKEN_SUBSCRIBE_FAILED:"token-subscribe-failed",TOKEN_SUBSCRIBE_NO_TOKEN:"token-subscribe-no-token",TOKEN_SUBSCRIBE_NO_PUSH_SET:"token-subscribe-no-push-set",USE_SW_BEFORE_GET_TOKEN:"use-sw-before-get-token",INVALID_DELETE_TOKEN:"invalid-delete-token",DELETE_TOKEN_NOT_FOUND:"delete-token-not-found",DELETE_SCOPE_NOT_FOUND:"delete-scope-not-found",BG_HANDLER_FUNCTION_EXPECTED:"bg-handler-function-expected",NO_WINDOW_CLIENT_TO_MSG:"no-window-client-to-msg",UNABLE_TO_RESUBSCRIBE:"unable-to-resubscribe",NO_FCM_TOKEN_FOR_RESUBSCRIBE:"no-fcm-token-for-resubscribe",FAILED_TO_DELETE_TOKEN:"failed-to-delete-token",NO_SW_IN_REG:"no-sw-in-reg",BAD_SCOPE:"bad-scope",BAD_VAPID_KEY:"bad-vapid-key",BAD_SUBSCRIPTION:"bad-subscription",BAD_TOKEN:"bad-token",BAD_PUSH_SET:"bad-push-set",FAILED_DELETE_VAPID_KEY:"failed-delete-vapid-key"},c=(i={},i[a.AVAILABLE_IN_WINDOW]="This method is available in a Window context.",i[a.AVAILABLE_IN_SW]="This method is available in a service worker context.",i["should-be-overriden"]="This method should be overriden by extended classes.",i["bad-sender-id"]="Please ensure that 'messagingSenderId' is set correctly in the options passed into firebase.initializeApp().",i["permission-default"]="The required permissions were not granted and dismissed instead.",i["permission-blocked"]="The required permissions were not granted and blocked instead.",i["unsupported-browser"]="This browser doesn't support the API's required to use the firebase SDK.",i["notifications-blocked"]="Notifications have been blocked.",i[a.FAILED_DEFAULT_REGISTRATION]="We are unable to register the default service worker. {$browserErrorMessage}",i["sw-registration-expected"]="A service worker registration was the expected input.",i["get-subscription-failed"]="There was an error when trying to get any existing Push Subscriptions.",i["invalid-saved-token"]="Unable to access details of the saved token.",i["sw-reg-redundant"]="The service worker being used for push was made redundant.",i["token-subscribe-failed"]="A problem occured while subscribing the user to FCM: {$message}",i["token-subscribe-no-token"]="FCM returned no token when subscribing the user to push.",i["token-subscribe-no-push-set"]="FCM returned an invalid response when getting an FCM token.",i["use-sw-before-get-token"]="You must call useServiceWorker() before calling getToken() to ensure your service worker is used.",i["invalid-delete-token"]="You must pass a valid token into deleteToken(), i.e. the token from getToken().",i["delete-token-not-found"]="The deletion attempt for token could not be performed as the token was not found.",i["delete-scope-not-found"]="The deletion attempt for service worker scope could not be performed as the scope was not found.",i["bg-handler-function-expected"]="The input to setBackgroundMessageHandler() must be a function.",i["no-window-client-to-msg"]="An attempt was made to message a non-existant window client.",i["unable-to-resubscribe"]="There was an error while re-subscribing the FCM token for push messaging. Will have to resubscribe the user on next visit. {$message}",i["no-fcm-token-for-resubscribe"]="Could not find an FCM token and as a result, unable to resubscribe. Will have to resubscribe the user on next visit.",i["failed-to-delete-token"]="Unable to delete the currently saved token.",i["no-sw-in-reg"]="Even though the service worker registration was successful, there was a problem accessing the service worker itself.",i["incorrect-gcm-sender-id"]="Please change your web app manifest's 'gcm_sender_id' value to '103953800507' to use Firebase messaging.",i["bad-scope"]="The service worker scope must be a string with at least one character.",i["bad-vapid-key"]="The public VAPID key must be a string with at least one character.",i["bad-subscription"]="The subscription must be a valid PushSubscription.",i["bad-token"]="The FCM Token used for storage / lookup was not a valid token string.",i["bad-push-set"]="The FCM push set used for storage / lookup was not not a valid push set string.",i["failed-delete-vapid-key"]="The VAPID key could not be deleted.",i),u={codes:a,map:c},_=function(e){return n(e).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")},d=[4,51,148,247,223,161,235,177,220,3,162,94,21,113,219,72,211,46,237,237,178,52,219,183,71,58,12,143,196,204,225,111,60,140,132,223,171,182,102,62,242,12,212,139,254,227,249,118,47,20,28,99,8,106,111,45,177,26,149,176,206,55,192,156,110],f={userVisibleOnly:!0,applicationServerKey:new Uint8Array(d)},h={ENDPOINT:"https://fcm.googleapis.com",APPLICATION_SERVER_KEY:d,SUBSCRIPTION_OPTIONS:f},p="fcm_token_object_Store",l=function(){function e(){this.e=new s.ErrorFactory("messaging","Messaging",u.map),this.t=null}return e.prototype.r=function(){return this.t?this.t:(this.t=new Promise(function(t,r){var n=indexedDB.open(e.DB_NAME,1);n.onerror=function(e){r(e.target.error)},n.onsuccess=function(e){t(e.target.result)},n.onupgradeneeded=function(e){var t=e.target.result,r=t.createObjectStore(p,{keyPath:"swScope"});r.createIndex("fcmSenderId","fcmSenderId",{unique:!1}),r.createIndex("fcmToken","fcmToken",{unique:!0})}}),this.t)},e.prototype.closeDatabase=function(){var e=this;return this.t?this.t.then(function(t){t.close(),e.t=null}):Promise.resolve()},e.prototype.getTokenDetailsFromToken=function(e){return this.r().then(function(t){return new Promise(function(r,n){var o=t.transaction([p]),i=o.objectStore(p),s=i.index("fcmToken"),a=s.get(e);a.onerror=function(e){n(e.target.error)},a.onsuccess=function(e){r(e.target.result)}})})},e.prototype.n=function(e){return this.r().then(function(t){return new Promise(function(r,n){var o=t.transaction([p]),i=o.objectStore(p),s=i.get(e);s.onerror=function(e){n(e.target.error)},s.onsuccess=function(e){r(e.target.result)}})})},e.prototype.o=function(e){return this.r().then(function(t){return new Promise(function(r,n){var o=t.transaction([p]),i=o.objectStore(p),s=[],a=i.openCursor();a.onerror=function(e){n(e.target.error)},a.onsuccess=function(t){var n=t.target.result;n?(n.value.fcmSenderId===e&&s.push(n.value),n.continue()):r(s)}})})},e.prototype.subscribeToFCM=function(e,t,r){var n=this,o=_(t.getKey("p256dh")),i=_(t.getKey("auth")),s="authorized_entity="+e+"&endpoint="+t.endpoint+"&encryption_key="+o+"&encryption_auth="+i;r&&(s+="&pushSet="+r);var a=new Headers;a.append("Content-Type","application/x-www-form-urlencoded");var c={method:"POST",headers:a,body:s};return fetch(h.ENDPOINT+"/fcm/connect/subscribe",c).then(function(e){return e.json()}).then(function(e){var t=e;if(t.error){var r=t.error.message;throw n.e.create(u.codes.TOKEN_SUBSCRIBE_FAILED,{message:r})}if(!t.token)throw n.e.create(u.codes.TOKEN_SUBSCRIBE_NO_TOKEN);if(!t.pushSet)throw n.e.create(u.codes.TOKEN_SUBSCRIBE_NO_PUSH_SET);return{token:t.token,pushSet:t.pushSet}})},e.prototype.i=function(e,t){return e.endpoint===t.endpoint&&_(e.getKey("auth"))===t.auth&&_(e.getKey("p256dh"))===t.p256dh},e.prototype.s=function(e,t,r,n,o){var i={swScope:t.scope,endpoint:r.endpoint,auth:_(r.getKey("auth")),p256dh:_(r.getKey("p256dh")),fcmToken:n,fcmPushSet:o,fcmSenderId:e};return this.r().then(function(e){return new Promise(function(t,r){var n=e.transaction([p],"readwrite"),o=n.objectStore(p),s=o.put(i);s.onerror=function(e){r(e.target.error)},s.onsuccess=function(e){t()}})})},e.prototype.getSavedToken=function(e,t){var r=this;return t instanceof ServiceWorkerRegistration?"string"!=typeof e||0===e.length?Promise.reject(this.e.create(u.codes.BAD_SENDER_ID)):this.o(e).then(function(r){if(0!==r.length){var n=r.findIndex(function(r){return t.scope===r.swScope&&e===r.fcmSenderId});if(-1!==n)return r[n]}}).then(function(e){if(e)return t.pushManager.getSubscription().catch(function(e){throw r.e.create(u.codes.GET_SUBSCRIPTION_FAILED)}).then(function(t){if(t&&r.i(t,e))return e.fcmToken})}):Promise.reject(this.e.create(u.codes.SW_REGISTRATION_EXPECTED))},e.prototype.createToken=function(e,t){var r=this;if("string"!=typeof e||0===e.length)return Promise.reject(this.e.create(u.codes.BAD_SENDER_ID));if(!(t instanceof ServiceWorkerRegistration))return Promise.reject(this.e.create(u.codes.SW_REGISTRATION_EXPECTED));var n,o;return t.pushManager.getSubscription().then(function(e){return e||t.pushManager.subscribe(h.SUBSCRIPTION_OPTIONS)}).then(function(t){return n=t,r.subscribeToFCM(e,n)}).then(function(i){return o=i,r.s(e,t,n,o.token,o.pushSet)}).then(function(){return o.token})},e.prototype.deleteToken=function(e){var t=this;return"string"!=typeof e||0===e.length?Promise.reject(this.e.create(u.codes.INVALID_DELETE_TOKEN)):this.getTokenDetailsFromToken(e).then(function(e){if(!e)throw t.e.create(u.codes.DELETE_TOKEN_NOT_FOUND);return t.r().then(function(r){return new Promise(function(n,o){var i=r.transaction([p],"readwrite"),s=i.objectStore(p),a=s.delete(e.swScope);a.onerror=function(e){o(e.target.error)},a.onsuccess=function(r){if(0===r.target.result)return void o(t.e.create(u.codes.FAILED_TO_DELETE_TOKEN));n(e)}})})})},e}(),g=l,E="messagingSenderId",T=function(){function e(e){var t=this;if(this.e=new s.ErrorFactory("messaging","Messaging",u.map),!e.options[E]||"string"!=typeof e.options[E])throw this.e.create(u.codes.BAD_SENDER_ID);this.a=e.options[E],this.c=new g,this.app=e,this.INTERNAL={},this.INTERNAL.delete=function(){return t.delete}}return e.prototype.getToken=function(){var e=this,t=this.u();return"granted"!==t?"denied"===t?Promise.reject(this.e.create(u.codes.NOTIFICATIONS_BLOCKED)):Promise.resolve(null):this._().then(function(t){return e.c.getSavedToken(e.a,t).then(function(r){return r||e.c.createToken(e.a,t)})})},e.prototype.deleteToken=function(e){var t=this;return this.c.deleteToken(e).then(function(){return t._().then(function(e){if(e)return e.pushManager.getSubscription()}).then(function(e){if(e)return e.unsubscribe()})})},e.prototype._=function(){throw this.e.create(u.codes.SHOULD_BE_INHERITED)},e.prototype.requestPermission=function(){throw this.e.create(u.codes.AVAILABLE_IN_WINDOW)},e.prototype.useServiceWorker=function(e){throw this.e.create(u.codes.AVAILABLE_IN_WINDOW)},e.prototype.onMessage=function(e,t,r){throw this.e.create(u.codes.AVAILABLE_IN_WINDOW)},e.prototype.onTokenRefresh=function(e,t,r){throw this.e.create(u.codes.AVAILABLE_IN_WINDOW)},e.prototype.setBackgroundMessageHandler=function(e){throw this.e.create(u.codes.AVAILABLE_IN_SW)},e.prototype.delete=function(){return this.c.closeDatabase()},e.prototype.u=function(){return Notification.permission},e.prototype.getTokenManager=function(){return this.c},e}(),S=T,b={TYPE_OF_MSG:"firebase-messaging-msg-type",DATA:"firebase-messaging-msg-data"},v={PUSH_MSG_RECEIVED:"push-msg-received",NOTIFICATION_CLICKED:"notification-clicked"},I=function(e,t){return r={},r[b.TYPE_OF_MSG]=e,r[b.DATA]=t,r;var r},m={PARAMS:b,TYPES_OF_MSG:v,createNewMsg:I},y={path:"/firebase-messaging-sw.js",scope:"/firebase-cloud-messaging-push-scope"},N=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])};return function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),w=function(e){function t(t){var r=e.call(this,t)||this;return r.d,r.f,r.h=null,r.p=Object(s.createSubscribe)(function(e){r.h=e}),r.l=null,r.g=Object(s.createSubscribe)(function(e){r.l=e}),r.T(),r}return N(t,e),t.prototype.getToken=function(){var t=this;return this.S()?this.b().then(function(){return e.prototype.getToken.call(t)}):Promise.reject(this.e.create(u.codes.UNSUPPORTED_BROWSER))},t.prototype.b=function(){var e=this;if(this.f)return this.f;var t=document.querySelector('link[rel="manifest"]');return this.f=t?fetch(t.href).then(function(e){return e.json()}).catch(function(){return Promise.resolve()}).then(function(t){if(t&&t.gcm_sender_id&&"103953800507"!==t.gcm_sender_id)throw e.e.create(u.codes.INCORRECT_GCM_SENDER_ID)}):Promise.resolve(),this.f},t.prototype.requestPermission=function(){var e=this;return"granted"===Notification.permission?Promise.resolve():new Promise(function(t,r){var n=function(n){return"granted"===n?t():r("denied"===n?e.e.create(u.codes.PERMISSION_BLOCKED):e.e.create(u.codes.PERMISSION_DEFAULT))},o=Notification.requestPermission(function(e){o||n(e)});o&&o.then(n)})},t.prototype.useServiceWorker=function(e){if(!(e instanceof ServiceWorkerRegistration))throw this.e.create(u.codes.SW_REGISTRATION_EXPECTED);if(void 0!==this.d)throw this.e.create(u.codes.USE_SW_BEFORE_GET_TOKEN);this.d=e},t.prototype.onMessage=function(e,t,r){return this.p(e,t,r)},t.prototype.onTokenRefresh=function(e,t,r){return this.g(e,t,r)},t.prototype.v=function(e){var t=this,r=e.installing||e.waiting||e.active;return new Promise(function(n,o){if(!r)return void o(t.e.create(u.codes.NO_SW_IN_REG));if("activated"===r.state)return void n(e);if("redundant"===r.state)return void o(t.e.create(u.codes.SW_REG_REDUNDANT));var i=function(){if("activated"===r.state)n(e);else{if("redundant"!==r.state)return;o(t.e.create(u.codes.SW_REG_REDUNDANT))}r.removeEventListener("statechange",i)};r.addEventListener("statechange",i)})},t.prototype._=function(){var e=this;return this.d?this.v(this.d):(this.d=null,navigator.serviceWorker.register(y.path,{scope:y.scope}).catch(function(t){throw e.e.create(u.codes.FAILED_DEFAULT_REGISTRATION,{browserErrorMessage:t.message})}).then(function(t){return e.v(t).then(function(){return e.d=t,t.update(),t})}))},t.prototype.T=function(){var e=this;"serviceWorker"in navigator&&navigator.serviceWorker.addEventListener("message",function(t){if(t.data&&t.data[m.PARAMS.TYPE_OF_MSG]){var r=t.data;switch(r[m.PARAMS.TYPE_OF_MSG]){case m.TYPES_OF_MSG.PUSH_MSG_RECEIVED:case m.TYPES_OF_MSG.NOTIFICATION_CLICKED:var n=r[m.PARAMS.DATA];e.h.next(n)}}},!1)},t.prototype.S=function(){return"serviceWorker"in navigator&&"PushManager"in window&&"Notification"in window&&"fetch"in window&&ServiceWorkerRegistration.prototype.hasOwnProperty("showNotification")&&PushSubscription.prototype.hasOwnProperty("getKey")},t}(S),k=w,O=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])};return function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),D=function(e){function t(t){var r=e.call(this,t)||this;return self.addEventListener("push",function(e){return r.I(e)},!1),self.addEventListener("pushsubscriptionchange",function(e){return r.m(e)},!1),self.addEventListener("notificationclick",function(e){return r.y(e)},!1),r.N=null,r}return O(t,e),t.prototype.I=function(e){var t,r=this;try{t=e.data.json()}catch(e){return}var n=this.w().then(function(e){if(e){if(t.notification||r.N)return r.k(t)}else{var n=r.O(t);if(n){var o=n.title||"";return self.registration.showNotification(o,n)}if(r.N)return r.N(t)}});e.waitUntil(n)},t.prototype.m=function(e){var t=this,r=this.getToken().then(function(e){if(!e)throw t.e.create(u.codes.NO_FCM_TOKEN_FOR_RESUBSCRIBE);var r=null,n=t.getTokenManager();return n.getTokenDetailsFromToken(e).then(function(e){if(!(r=e))throw t.e.create(u.codes.INVALID_SAVED_TOKEN);return self.registration.pushManager.subscribe(h.SUBSCRIPTION_OPTIONS)}).then(function(e){return n.subscribeToFCM(r.fcmSenderId,e,r.fcmPushSet)}).catch(function(e){return n.deleteToken(r.fcmToken).then(function(){throw t.e.create(u.codes.UNABLE_TO_RESUBSCRIBE,{message:e})})})});e.waitUntil(r)},t.prototype.y=function(e){var t=this;if(e.notification&&e.notification.data&&e.notification.data.FCM_MSG){e.stopImmediatePropagation(),e.notification.close();var r=e.notification.data.FCM_MSG,n=r.notification.click_action;if(n){var o=this.D(n).then(function(e){return e||self.clients.openWindow(n)}).then(function(e){if(e){r.notification,delete r.notification;var n=m.createNewMsg(m.TYPES_OF_MSG.NOTIFICATION_CLICKED,r);return t.A(e,n)}});e.waitUntil(o)}}},t.prototype.O=function(e){if(e&&"object"==typeof e.notification){var t=Object.assign({},e.notification);return t.data=(r={},r.FCM_MSG=e,r),t;var r}},t.prototype.setBackgroundMessageHandler=function(e){if(e&&"function"!=typeof e)throw this.e.create(u.codes.BG_HANDLER_FUNCTION_EXPECTED);this.N=e},t.prototype.D=function(e){var t=new URL(e).href;return self.clients.matchAll({type:"window",includeUncontrolled:!0}).then(function(e){for(var r=null,n=0;n>6,128|63&r);else if(55296==(64512&r)){var o=n>18,128|r>>12&63,128|r>>6&63,128|63&r)}else e.push(239,191,189)}else 56320==(64512&r)?e.push(239,191,189):e.push(224|r>>12,128|r>>6&63,128|63&r)}return new Uint8Array(e)}function T(t){var e;try{e=decodeURIComponent(t)}catch(t){throw y(ne.DATA_URL,"Malformed data URL.")}return U(e)}function A(t,e){switch(t){case ne.BASE64:var n=-1!==e.indexOf("-"),r=-1!==e.indexOf("_");if(n||r){var o=n?"-":"_";throw y(t,"Invalid character '"+o+"' found: is it base64url encoded?")}break;case ne.BASE64URL:var i=-1!==e.indexOf("+"),a=-1!==e.indexOf("/");if(i||a){var o=i?"+":"/";throw y(t,"Invalid character '"+o+"' found: is it base64 encoded?")}e=e.replace(/-/g,"+").replace(/_/g,"/")}var s;try{s=atob(e)}catch(e){throw y(t,"Invalid character found")}for(var u=new Uint8Array(s.length),c=0;c=e.length)&&t.substring(t.length-e.length)===e}function S(t){switch(t){case ae.RUNNING:case ae.PAUSING:case ae.CANCELING:return se.RUNNING;case ae.PAUSED:return se.PAUSED;case ae.SUCCESS:return se.SUCCESS;case ae.CANCELED:return se.CANCELED;case ae.ERROR:default:return se.ERROR}}function k(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function I(t,e){for(var n in t)k(t,n)&&e(n,t[n])}function L(t){if(null==t)return{};var e={};return I(t,function(t,n){e[t]=n}),e}function P(t){return new Promise(t)}function x(t){return Promise.resolve(t)}function D(t){return Promise.reject(t)}function M(t){return null!=t}function W(t){return void 0!==t}function B(t){return"function"==typeof t}function G(t){return"object"==typeof t}function j(t){return G(t)&&null!==t}function q(t){return G(t)&&!Array.isArray(t)}function F(t){return"string"==typeof t||t instanceof String}function H(t){return"number"==typeof t||t instanceof Number}function z(t){return X()&&t instanceof Blob}function X(){return"undefined"!=typeof Blob}function V(t){var e;try{e=JSON.parse(t)}catch(t){return null}return q(e)?e:null}function K(t){if(0==t.length)return null;var e=t.lastIndexOf("/");return-1===e?"":t.slice(0,e)}function Z(t,e){var n=e.split("/").filter(function(t){return t.length>0}).join("/");return 0===t.length?n:t+"/"+n}function J(t){var e=t.lastIndexOf("/",t.length-2);return-1===e?t:t.slice(e+1)}function Q(t){return Vt+Zt+t}function Y(t){return Kt+Zt+t}function $(t){return Vt+Jt+t}function tt(t){var e=encodeURIComponent,n="?";return I(t,function(t,r){var o=e(t)+"="+e(r);n=n+o+"&"}),n=n.slice(0,-1)}function et(t,e){return e}function nt(t){return!F(t)||t.length<2?t:(t=t,J(t))}function rt(){function t(t,e){return nt(e)}function e(t,e){return M(e)?+e:e}function n(t,e){if(!(F(e)&&e.length>0))return[];var n=encodeURIComponent;return e.split(",").map(function(e){var r=t.bucket,o=t.fullPath;return Y("/b/"+n(r)+"/o/"+n(o))+tt({alt:"media",token:e})})}if(pe)return pe;var r=[];r.push(new he("bucket")),r.push(new he("generation")),r.push(new he("metageneration")),r.push(new he("name","fullPath",!0));var o=new he("name");o.xform=t,r.push(o);var i=new he("size");return i.xform=e,r.push(i),r.push(new he("timeCreated")),r.push(new he("updated")),r.push(new he("md5Hash",null,!0)),r.push(new he("cacheControl",null,!0)),r.push(new he("contentDisposition",null,!0)),r.push(new he("contentEncoding",null,!0)),r.push(new he("contentLanguage",null,!0)),r.push(new he("contentType",null,!0)),r.push(new he("metadata","customMetadata",!0)),r.push(new he("downloadTokens","downloadURLs",!1,n)),pe=r}function ot(t,e){function n(){var n=t.bucket,r=t.fullPath,o=new le(n,r);return e.makeStorageReference(o)}Object.defineProperty(t,"ref",{get:n})}function it(t,e,n){var r={};r.type="file";for(var o=n.length,i=0;i=0))throw"Expected a number 0 or greater."}return new fe(t)}function _t(t,e){function n(e){if(!(null===e||M(e)&&e instanceof Object))throw"Expected an Object.";void 0!==t&&null!==t&&t(e)}return new fe(n,e)}function vt(t){function e(t){if(null!==t&&!B(t))throw"Expected a Function."}return new fe(e,t)}function bt(){return"undefined"!=typeof BlobBuilder?BlobBuilder:"undefined"!=typeof WebKitBlobBuilder?WebKitBlobBuilder:void 0}function mt(){for(var t=[],e=0;e0&&(h=Math.min(h,o));var p=c.current,_=p+h,v=h===l?"upload, finalize":"upload",b={"X-Goog-Upload-Command":v,"X-Goog-Upload-Offset":c.current},m=r.slice(p,_);if(null===m)throw f();var g=e.maxUploadRetryTime(),y=new _e(n,"POST",u,g);return y.headers=b,y.body=m.uploadData(),y.progressCallback=s||null,y.errorHandler=Tt(t),y}function Mt(t){return function(){for(var e=[],n=0;n0&&(t.Authorization="Firebase "+e)}function jt(t){var e=void 0!==Xt.default?Xt.default.SDK_VERSION:"AppManager";t["X-Firebase-Storage-Version"]="webjs/"+e}function qt(t,e,n){var r=tt(t.urlParams),o=t.url+r,i=L(t.headers);return Gt(i,e),jt(i),new Ue(o,t.method,i,t.body,t.successCodes,t.additionalRetryCodes,t.handler,t.errorHandler,t.timeout,t.progressCallback,n)}function Ft(t,e,n){return new Ae(t,new ce,n)}function Ht(t){var e={TaskState:se,TaskEvent:ie,StringFormat:ne,Storage:Ae,Reference:ye};t.INTERNAL.registerService(Oe,Ft,e,void 0,!0)}Object.defineProperty(e,"__esModule",{value:!0});var zt,Xt=n(6),Vt="https://firebasestorage.googleapis.com",Kt="https://firebasestorage.googleapis.com",Zt="/v0",Jt="/v0",Qt=12e4,Yt=6e4,$t=-9007199254740991,te=function(){function t(t,e){this.t=r(t),this.e="Firebase Storage: "+e,this.n=null,this.r="FirebaseError"}return t.prototype.codeProp=function(){return this.code},t.prototype.codeEquals=function(t){return r(t)===this.codeProp()},t.prototype.serverResponseProp=function(){return this.n},t.prototype.setServerResponseProp=function(t){this.n=t},Object.defineProperty(t.prototype,"name",{get:function(){return this.r},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"code",{get:function(){return this.t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"message",{get:function(){return this.e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"serverResponse",{get:function(){return this.n},enumerable:!0,configurable:!0}),t}(),ee={UNKNOWN:"unknown",OBJECT_NOT_FOUND:"object-not-found",BUCKET_NOT_FOUND:"bucket-not-found",PROJECT_NOT_FOUND:"project-not-found",QUOTA_EXCEEDED:"quota-exceeded",UNAUTHENTICATED:"unauthenticated",UNAUTHORIZED:"unauthorized",RETRY_LIMIT_EXCEEDED:"retry-limit-exceeded",INVALID_CHECKSUM:"invalid-checksum",CANCELED:"canceled",INVALID_EVENT_NAME:"invalid-event-name",INVALID_URL:"invalid-url",INVALID_DEFAULT_BUCKET:"invalid-default-bucket",NO_DEFAULT_BUCKET:"no-default-bucket",CANNOT_SLICE_BLOB:"cannot-slice-blob",SERVER_FILE_WRONG_SIZE:"server-file-wrong-size",NO_DOWNLOAD_URL:"no-download-url",INVALID_ARGUMENT:"invalid-argument",INVALID_ARGUMENT_COUNT:"invalid-argument-count",APP_DELETED:"app-deleted",INVALID_ROOT_OPERATION:"invalid-root-operation",INVALID_FORMAT:"invalid-format",INTERNAL_ERROR:"internal-error"},ne={RAW:"raw",BASE64:"base64",BASE64URL:"base64url",DATA_URL:"data_url"},re=function(){function t(t,e){this.data=t,this.contentType=e||null}return t}(),oe=function(){function t(t){this.base64=!1,this.contentType=null;var e=t.match(/^data:([^,]+)?,/);if(null===e)throw y(ne.DATA_URL,"Must be formatted 'data:[][;base64],");var n=e[1]||null;null!=n&&(this.base64=C(n,";base64"),this.contentType=this.base64?n.substring(0,n.length-7):n),this.rest=t.substring(t.indexOf(",")+1)}return t}(),ie={STATE_CHANGED:"state_changed"},ae={RUNNING:"running",PAUSING:"pausing",PAUSED:"paused",SUCCESS:"success",CANCELING:"canceling",CANCELED:"canceled",ERROR:"error"},se={RUNNING:"running",PAUSED:"paused",SUCCESS:"success",CANCELED:"canceled",ERROR:"error"};!function(t){t[t.NO_ERROR=0]="NO_ERROR",t[t.NETWORK_ERROR=1]="NETWORK_ERROR",t[t.ABORT=2]="ABORT"}(zt=zt||(zt={}));var ue=function(){function t(){var t=this;this.o=!1,this.i=new XMLHttpRequest,this.a=zt.NO_ERROR,this.s=P(function(e,n){t.i.addEventListener("abort",function(n){t.a=zt.ABORT,e(t)}),t.i.addEventListener("error",function(n){t.a=zt.NETWORK_ERROR,e(t)}),t.i.addEventListener("load",function(n){e(t)})})}return t.prototype.send=function(t,e,n,r){var o=this;if(this.o)throw R("cannot .send() more than once");return this.o=!0,this.i.open(e,t,!0),M(r)&&I(r,function(t,e){o.i.setRequestHeader(t,""+e)}),M(n)?this.i.send(n):this.i.send(),this.s},t.prototype.getErrorCode=function(){if(!this.o)throw R("cannot .getErrorCode() before sending");return this.a},t.prototype.getStatus=function(){if(!this.o)throw R("cannot .getStatus() before sending");try{return this.i.status}catch(t){return-1}},t.prototype.getResponseText=function(){if(!this.o)throw R("cannot .getResponseText() before sending");return this.i.responseText},t.prototype.abort=function(){this.i.abort()},t.prototype.getResponseHeader=function(t){return this.i.getResponseHeader(t)},t.prototype.addUploadProgressListener=function(t){M(this.i.upload)&&this.i.upload.addEventListener("progress",t)},t.prototype.removeUploadProgressListener=function(t){M(this.i.upload)&&this.i.upload.removeEventListener("progress",t)},t}(),ce=function(){function t(){}return t.prototype.createXhrIo=function(){return new ue},t}(),le=function(){function t(t,e){this.bucket=t,this.u=e}return Object.defineProperty(t.prototype,"path",{get:function(){return this.u},enumerable:!0,configurable:!0}),t.prototype.fullServerUrl=function(){var t=encodeURIComponent;return"/b/"+t(this.bucket)+"/o/"+t(this.path)},t.prototype.bucketOnlyServerUrl=function(){return"/b/"+encodeURIComponent(this.bucket)+"/o"},t.makeFromBucketSpec=function(e){var n;try{n=t.makeFromUrl(e)}catch(n){return new t(e,"")}if(""===n.path)return n;throw p(e)},t.makeFromUrl=function(e){function n(t){"/"===t.path.charAt(t.path.length-1)&&(t.u=t.u.slice(0,-1))}function r(t){t.u=decodeURIComponent(t.path)}for(var o=null,i=RegExp("^gs://([A-Za-z0-9.\\-]+)(/(.*))?$","i"),a={bucket:1,path:3},s=RegExp("^https?://firebasestorage\\.googleapis\\.com/v[A-Za-z0-9_]+/b/([A-Za-z0-9.\\-]+)/o(/([^?#]*).*)?$","i"),u={bucket:1,path:3},c=[{regex:i,indices:a,postModify:n},{regex:s,indices:u,postModify:r}],l=0;l262144},t.prototype.M=function(){this.k===ae.RUNNING&&null===this.m&&(this.C?null===this.b?this.G():this.f?this.j():this.d?this.q():this.F():this.H())},t.prototype.z=function(t){var e=this;this.U.getAuthToken().then(function(n){switch(e.k){case ae.RUNNING:t(n);break;case ae.CANCELING:e.P(ae.CANCELED);break;case ae.PAUSING:e.P(ae.PAUSED)}})},t.prototype.G=function(){var t=this;this.z(function(e){var n=Pt(t.U,t.T,t.O,t.A,t.N),r=t.U.makeRequest(n,e);t.m=r,r.getPromise().then(function(e){t.m=null,t.b=e,t.f=!1,t.L()},t.I)})},t.prototype.j=function(){var t=this,e=this.b;this.z(function(n){var r=xt(t.U,t.T,e,t.A),o=t.U.makeRequest(r,n);t.m=o,o.getPromise().then(function(e){e=e,t.m=null,t.B(e.current),t.f=!1,e.finalized&&(t.d=!0),t.L()},t.I)})},t.prototype.F=function(){var t=this,e=262144*this.g,n=new ve(this.p,this.A.size()),r=this.b;this.z(function(o){var i;try{i=Dt(t.T,t.U,r,t.A,e,t.O,n,t.W())}catch(e){return t.v=e,void t.P(ae.ERROR)}var a=t.U.makeRequest(i,o);t.m=a,a.getPromise().then(function(e){t.X(),t.m=null,t.B(e.current),e.finalized?(t.N=e.metadata,t.P(ae.SUCCESS)):t.L()},t.I)})},t.prototype.X=function(){262144*this.g<33554432&&(this.g*=2)},t.prototype.q=function(){var t=this;this.z(function(e){var n=Nt(t.U,t.T,t.O),r=t.U.makeRequest(n,e);t.m=r,r.getPromise().then(function(e){t.m=null,t.N=e,t.P(ae.SUCCESS)},t.x)})},t.prototype.H=function(){var t=this;this.z(function(e){var n=It(t.U,t.T,t.O,t.A,t.N),r=t.U.makeRequest(n,e);t.m=r,r.getPromise().then(function(e){t.m=null,t.N=e,t.B(t.A.size()),t.P(ae.SUCCESS)},t.I)})},t.prototype.B=function(t){var e=this.p;this.p=t,this.p!==e&&this.V()},t.prototype.P=function(t){if(this.k!==t)switch(t){case ae.CANCELING:case ae.PAUSING:this.k=t,null!==this.m&&this.m.cancel();break;case ae.RUNNING:var e=this.k===ae.PAUSED;this.k=t,e&&(this.V(),this.M());break;case ae.PAUSED:this.k=t,this.V();break;case ae.CANCELED:this.v=l(),this.k=t,this.V();break;case ae.ERROR:case ae.SUCCESS:this.k=t,this.V()}},t.prototype.L=function(){switch(this.k){case ae.PAUSING:this.P(ae.PAUSED);break;case ae.CANCELING:this.P(ae.CANCELED);break;case ae.RUNNING:this.M()}},Object.defineProperty(t.prototype,"snapshot",{get:function(){var t=S(this.k);return new me(this.p,this.A.size(),t,this.N,this,this.w)},enumerable:!0,configurable:!0}),t.prototype.on=function(t,e,n,r){function o(e){if(t!==ie.STATE_CHANGED)throw"Expected one of the event types: ["+ie.STATE_CHANGED+"]."}function i(t){try{return void c(t)}catch(t){}try{if(l(t),!(W(t.next)||W(t.error)||W(t.complete)))throw"";return}catch(t){throw u}}function a(t){function e(e,n,o){null!==t&&ct("on",t,arguments);var i=new be(e,n,r);return h.K(i),function(){h.Z(i)}}return e}function s(t){if(null===t)throw u;i(t)}void 0===e&&(e=void 0),void 0===n&&(n=void 0),void 0===r&&(r=void 0);var u="Expected a function or an Object with one of `next`, `error`, `complete` properties.",c=vt(!0).validator,l=_t(null,!0).validator;ct("on",[ht(o),_t(i,!0),vt(!0),vt(!0)],arguments);var h=this,p=[_t(s),vt(!0),vt(!0)];return W(e)||W(n)||W(r)?a(null)(e,n,r):a(p)},t.prototype.then=function(t,e){return this.D.then(t,e)},t.prototype.catch=function(t){return this.then(null,t)},t.prototype.K=function(t){this._.push(t),this.J(t)},t.prototype.Z=function(t){Et(this._,t)},t.prototype.V=function(){var t=this;this.Q(),Rt(this._).forEach(function(e){t.J(e)})},t.prototype.Q=function(){if(null!==this.y){var t=!0;switch(S(this.k)){case se.SUCCESS:Mt(this.y.bind(null,this.snapshot))();break;case se.CANCELED:case se.ERROR:Mt(this.R.bind(null,this.v))();break;default:t=!1}t&&(this.y=null,this.R=null)}},t.prototype.J=function(t){switch(S(this.k)){case se.RUNNING:case se.PAUSED:null!==t.next&&Mt(t.next.bind(t,this.snapshot))();break;case se.SUCCESS:null!==t.complete&&Mt(t.complete.bind(t))();break;case se.CANCELED:case se.ERROR:null!==t.error&&Mt(t.error.bind(t,this.v))();break;default:null!==t.error&&Mt(t.error.bind(t,this.v))()}},t.prototype.resume=function(){ct("resume",[],arguments);var t=this.k===ae.PAUSED||this.k===ae.PAUSING;return t&&this.P(ae.RUNNING),t},t.prototype.pause=function(){ct("pause",[],arguments);var t=this.k===ae.RUNNING;return t&&this.P(ae.PAUSING),t},t.prototype.cancel=function(){ct("cancel",[],arguments);var t=this.k===ae.RUNNING||this.k===ae.PAUSING;return t&&this.P(ae.CANCELING),t},t}(),ye=function(){function t(t,e){this.authWrapper=t,this.location=e instanceof le?e:le.makeFromUrl(e)}return t.prototype.toString=function(){return ct("toString",[],arguments),"gs://"+this.location.bucket+"/"+this.location.path},t.prototype.newRef=function(e,n){return new t(e,n)},t.prototype.mappings=function(){return rt()},t.prototype.child=function(t){ct("child",[ht()],arguments);var e=Z(this.location.path,t),n=new le(this.location.bucket,e);return this.newRef(this.authWrapper,n)},Object.defineProperty(t.prototype,"parent",{get:function(){var t=K(this.location.path);if(null===t)return null;var e=new le(this.location.bucket,t);return this.newRef(this.authWrapper,e)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"root",{get:function(){var t=new le(this.location.bucket,"");return this.newRef(this.authWrapper,t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bucket",{get:function(){return this.location.bucket},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"fullPath",{get:function(){return this.location.path},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"name",{get:function(){return J(this.location.path)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"storage",{get:function(){return this.authWrapper.service()},enumerable:!0,configurable:!0}),t.prototype.put=function(t,e){return void 0===e&&(e=null),ct("put",[pt(),ft(!0)],arguments),this.Y("put"),new ge(this,this.authWrapper,this.location,this.mappings(),new de(t),e)},t.prototype.putString=function(t,e,n){void 0===e&&(e=ne.RAW),ct("putString",[ht(),ht(E,!0),ft(!0)],arguments),this.Y("putString");var r=w(e,t),o=L(n);return!M(o.contentType)&&M(r.contentType)&&(o.contentType=r.contentType),new ge(this,this.authWrapper,this.location,this.mappings(),new de(r.data,!0),o)},t.prototype.delete=function(){ct("delete",[],arguments),this.Y("delete");var t=this;return this.authWrapper.getAuthToken().then(function(e){var n=Ct(t.authWrapper,t.location);return t.authWrapper.makeRequest(n,e).getPromise()})},t.prototype.getMetadata=function(){ct("getMetadata",[],arguments),this.Y("getMetadata");var t=this;return this.authWrapper.getAuthToken().then(function(e){var n=Nt(t.authWrapper,t.location,t.mappings());return t.authWrapper.makeRequest(n,e).getPromise()})},t.prototype.updateMetadata=function(t){ct("updateMetadata",[ft()],arguments),this.Y("updateMetadata");var e=this;return this.authWrapper.getAuthToken().then(function(n){var r=Ot(e.authWrapper,e.location,t,e.mappings());return e.authWrapper.makeRequest(r,n).getPromise()})},t.prototype.getDownloadURL=function(){return ct("getDownloadURL",[],arguments),this.Y("getDownloadURL"),this.getMetadata().then(function(t){var e=t.downloadURLs[0];if(M(e))return e;throw _()})},t.prototype.Y=function(t){if(""===this.location.path)throw g(t)},t}(),Re=function(){function t(t){this.D=D(t)}return t.prototype.getPromise=function(){return this.D},t.prototype.cancel=function(t){void 0===t&&(t=!1)},t}(),Ee=function(){function t(){this.$={},this.tt=$t}return t.prototype.addRequest=function(t){function e(){delete r.$[n]}var n=this.tt;this.tt++,this.$[n]=t;var r=this;t.getPromise().then(e,e)},t.prototype.clear=function(){I(this.$,function(t,e){e&&e.cancel(!0)}),this.$={}},t}(),we=function(){function t(e,n,r,o,i){if(this.et=null,this.nt=!1,this.rt=e,null!==this.rt){var a=this.rt.options;M(a)&&(this.et=t.ot(a))}this.it=n,this.at=r,this.st=i,this.ut=o,this.ct=Qt,this.lt=Yt,this.ht=new Ee}return t.ot=function(t){var e=t.storageBucket||null;return null==e?null:le.makeFromBucketSpec(e).bucket},t.prototype.getAuthToken=function(){return null!==this.rt&&M(this.rt.INTERNAL)&&M(this.rt.INTERNAL.getToken)?this.rt.INTERNAL.getToken().then(function(t){return null!==t?t.accessToken:null},function(t){return null}):x(null)},t.prototype.bucket=function(){if(this.nt)throw m();return this.et},t.prototype.service=function(){return this.ut},t.prototype.makeStorageReference=function(t){return this.it(this,t)},t.prototype.makeRequest=function(t,e){if(this.nt)return new Re(m());var n=this.at(t,e,this.st);return this.ht.addRequest(n),n},t.prototype.deleteApp=function(){this.nt=!0,this.rt=null,this.ht.clear()},t.prototype.maxUploadRetryTime=function(){return this.lt},t.prototype.setMaxUploadRetryTime=function(t){this.lt=t},t.prototype.maxOperationRetryTime=function(){return this.ct},t.prototype.setMaxOperationRetryTime=function(t){this.ct=t},t}(),Ue=function(){function t(t,e,n,r,o,i,a,s,u,c,l){this.pt=null,this.ft=null,this.y=null,this.R=null,this.dt=!1,this._t=!1,this.vt=t,this.bt=e,this.mt=n,this.gt=r,this.yt=o.slice(),this.Rt=i.slice(),this.Et=a,this.wt=s,this.Ut=c,this.Tt=u,this.st=l;var h=this;this.D=P(function(t,e){h.y=t,h.R=e,h.M()})}return t.prototype.M=function(){function t(t,e){function r(t){var e=t.loaded,r=t.lengthComputable?t.total:-1;null!==n.Ut&&n.Ut(e,r)}if(e)return void t(!1,new Te(!1,null,!0));var o=n.st.createXhrIo();n.pt=o,null!==n.Ut&&o.addUploadProgressListener(r),o.send(n.vt,n.bt,n.gt,n.mt).then(function(e){null!==n.Ut&&e.removeUploadProgressListener(r),n.pt=null,e=e;var o=e.getErrorCode()===zt.NO_ERROR,i=e.getStatus();if(!o||n.At(i)){var a=e.getErrorCode()===zt.ABORT;return void t(!1,new Te(!1,null,a))}var s=yt(n.yt,i);t(!0,new Te(s,e))})}function e(t,e){var r=n.y,i=n.R,a=e.xhr;if(e.wasSuccessCode)try{var s=n.Et(a,a.getResponseText());W(s)?r(s):r()}catch(t){i(t)}else if(null!==a){var u=o();u.setServerResponseProp(a.getResponseText()),i(n.wt?n.wt(a,u):u)}else if(e.canceled){var u=n._t?m():l();i(u)}else{var u=c();i(u)}}var n=this;this.dt?e(!1,new Te(!1,null,!0)):this.ft=Wt(t,e,this.Tt)},t.prototype.getPromise=function(){return this.D},t.prototype.cancel=function(t){this.dt=!0,this._t=t||!1,null!==this.ft&&Bt(this.ft),null!==this.pt&&this.pt.abort()},t.prototype.At=function(t){var e=t>=500&&t<600,n=[408,429],r=yt(n,t),o=yt(this.Rt,t);return e||r||o},t}(),Te=function(){function t(t,e,n){this.wasSuccessCode=t,this.xhr=e,this.canceled=!!n}return t}(),Ae=function(){function t(t,e,n){function r(t,e){return new ye(t,e)}if(this.et=null,this.U=new we(t,r,qt,this,e),this.rt=t,null!=n)this.et=le.makeFromBucketSpec(n);else{var o=this.U.bucket();null!=o&&(this.et=new le(o,""))}this.Nt=new Ne(this)}return t.prototype.ref=function(t){function e(t){if(/^[A-Za-z]+:\/\//.test(t))throw"Expected child path but got a URL, use refFromURL instead."}if(ct("ref",[ht(e,!0)],arguments),null==this.et)throw Error("No Storage Bucket defined in Firebase Options.");var n=new ye(this.U,this.et);return null!=t?n.child(t):n},t.prototype.refFromURL=function(t){function e(t){if(!/^[A-Za-z]+:\/\//.test(t))throw"Expected full URL but got a child path, use ref instead.";try{le.makeFromUrl(t)}catch(t){throw"Expected valid full URL but got an invalid one."}}return ct("refFromURL",[ht(e,!1)],arguments),new ye(this.U,t)},Object.defineProperty(t.prototype,"maxUploadRetryTime",{get:function(){return this.U.maxUploadRetryTime()},enumerable:!0,configurable:!0}),t.prototype.setMaxUploadRetryTime=function(t){ct("setMaxUploadRetryTime",[dt()],arguments),this.U.setMaxUploadRetryTime(t)},Object.defineProperty(t.prototype,"maxOperationRetryTime",{get:function(){return this.U.maxOperationRetryTime()},enumerable:!0,configurable:!0}),t.prototype.setMaxOperationRetryTime=function(t){ct("setMaxOperationRetryTime",[dt()],arguments),this.U.setMaxOperationRetryTime(t)},Object.defineProperty(t.prototype,"app",{get:function(){return this.rt},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"INTERNAL",{get:function(){return this.Nt},enumerable:!0,configurable:!0}),t}(),Ne=function(){function t(t){this.ut=t}return t.prototype.delete=function(){return this.ut.U.deleteApp(),x(void 0)},t}();e.registerStorage=Ht;var Oe="storage";Ht(Xt.default)}},[118])}catch(t){throw Error("Cannot instantiate firebase-storage.js - be sure to load firebase-app.js first.")} + +//# sourceMappingURL=firebase.js.map diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/icon.png b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/icon.png new file mode 100755 index 0000000000000000000000000000000000000000..d5dee1b5f0987e0c9fd907c8268217f0e66ce60a GIT binary patch literal 67646 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 TjIyDBaJPNQb-e!FJ#7CU<+8H` literal 0 HcmV?d00001 diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/instance.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/instance.js new file mode 100755 index 0000000..f32a808 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/instance.js @@ -0,0 +1,26 @@ +"use strict"; + +{ + const PLUGIN_CLASS = SDK.Plugins.Rex_FirebaseAPIV3; + + PLUGIN_CLASS.Instance = class Rex_FirebaseAPIV3Instance extends SDK.IInstanceBase + { + constructor(sdkType, inst) + { + super(sdkType, inst); + } + Release() + { + } + OnCreate() + { + } + OnPropertyChanged(id, value) + { + } + LoadC2Property(name, valueString) + { + return false; // not handled + } + }; +} diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/lang/en-US.json b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/lang/en-US.json new file mode 100755 index 0000000..661e6b7 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/lang/en-US.json @@ -0,0 +1,59 @@ +{ + "languageTag": "en-US", + "fileDescription": "Strings for Firebase API v3.", + "text": { + "plugins": { + "rex_firebaseapiv3": { + "name": "Firebase API v3", + "description": "3.x API of real time database-as-a-service. https://firebase.google.com/", + "help-url": "http://c2rexplugins.weebly.com/rex_firebaseapiv3.html", + "properties": { + "api-key": { + "name": "Api key", + "desc": "APi key." + }, + "auth-domain": { + "name": "Auth domain", + "desc": "Auth domain." + }, + "database-url": { + "name": "Database URL", + "desc": "Database URL." + }, + "storage-bucket": { + "name": "Storage bucket", + "desc": "Storage bucket." + }, + "log": { + "name": "Log", + "desc": "Enable log.", + "items": { + "no":"No", + "yes":"Yes" + } + } + }, + "aceCategories": { + "ınitialize": "Initialize" + }, + "conditions": { + }, + "actions": { + "initializeapp1": { + "list-name": "Initialize", + "display-text": "Initialize with Api key: [i]{0}[/i], Auth domain: [i]{1}[/i], Database URL: [i]{2}[/i], Storage bucket: [i]{3}[/i]", + "description": "Initialize connection.", + "params": { + "api_key0": { "name":"Api key", "desc":"Api key"}, + "auth_domain1": { "name":"Auth domain", "desc":"Auth domain"}, + "database_url2": { "name":"Database URL", "desc":"Database URL"}, + "storage_bucket3": { "name":"Storage bucket", "desc":"Storage bucket"} + } + } + }, + "expressions": { + } + } + } + } +} diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/plugin.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/plugin.js new file mode 100755 index 0000000..55d1840 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/plugin.js @@ -0,0 +1,49 @@ +//Converted with C2C3AddonConverter v1.0.1.0 +"use strict"; + +{ + const PLUGIN_ID = "Rex_FirebaseAPIV3"; + const PLUGIN_VERSION = "3.3.0.0"; + const PLUGIN_CATEGORY = "web"; + + let app = null; + + const PLUGIN_CLASS = SDK.Plugins.Rex_FirebaseAPIV3 = class Rex_FirebaseAPIV3 extends SDK.IPluginBase + { + constructor() + { + super(PLUGIN_ID); + SDK.Lang.PushContext("plugins." + PLUGIN_ID.toLowerCase()); + this._info.SetIcon("icon.png", "image/png"); + this._info.SetName(lang(".name")); + this._info.SetDescription(lang(".description")); + this._info.SetVersion(PLUGIN_VERSION); + this._info.SetCategory(PLUGIN_CATEGORY); + this._info.SetAuthor("Rex.Rainbow"); + this._info.SetHelpUrl(lang(".help-url")); + this._info.SetIsSingleGlobal(false); + this._info.SetIsDeprecated(false); + this._info.SetSupportsEffects(false); + this._info.SetMustPreDraw(false); + this._info.SetCanBeBundled(false); + + this._info.SetSupportedRuntimes(["c2","c3"]); + + SDK.Lang.PushContext(".properties"); + this._info.SetProperties([ + new SDK.PluginProperty("text", "api-key", ""), + new SDK.PluginProperty("text", "auth-domain", ""), + new SDK.PluginProperty("text", "database-url", ""), + new SDK.PluginProperty("text", "storage-bucket", ""), + new SDK.PluginProperty("combo", "log", {initialValue:"no", items:["no","yes"]}) + ]); + this._info.AddFileDependency({ + filename: "firebase.js", + type: "external-script" + }); + SDK.Lang.PopContext(); // .properties + SDK.Lang.PopContext(); + } + }; + PLUGIN_CLASS.Register(PLUGIN_ID, PLUGIN_CLASS); +} diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/type.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/type.js new file mode 100755 index 0000000..c3818da --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_apiv3/source/type.js @@ -0,0 +1,13 @@ +"use strict"; + +{ + const PLUGIN_CLASS = SDK.Plugins.Rex_FirebaseAPIV3; + + PLUGIN_CLASS.Type = class Rex_FirebaseAPIV3Type extends SDK.ITypeBase + { + constructor(sdkPlugin, iObjectType) + { + super(sdkPlugin, iObjectType); + } + }; +} diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/dist/rex_firebase_authentication.c3addon b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/dist/rex_firebase_authentication.c3addon new file mode 100644 index 0000000000000000000000000000000000000000..f9198d82754075dc5a6400b7eede243ba33854ad GIT binary patch literal 22846 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 ZTZ*?pix8YZ0tQp(ylI@RJkkyN_8$d;%p?E+ literal 0 HcmV?d00001 diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/aces.json b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/aces.json new file mode 100755 index 0000000..949761b --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/aces.json @@ -0,0 +1,588 @@ +{ + "email_&_password": { + "conditions": [ + ], + "actions": [ + { + "c2id": 1, + "id": "emailpassword_createaccount1", + "scriptName": "EmailPassword_CreateAccount", + "highlight": false, + "params": [ + {"id":"email0", "type":"string", "initialValue":"\"\""}, + {"id":"password1", "type":"string", "initialValue":"\"\""} + ] + }, + { + "c2id": 2, + "id": "emailpassword_login2", + "scriptName": "EmailPassword_Login", + "highlight": false, + "params": [ + {"id":"email0", "type":"string", "initialValue":"\"\""}, + {"id":"password1", "type":"string", "initialValue":"\"\""}, + {"id":"remember5", "type":"combo", "items":["default","sessiononly","never"]} + ] + }, + { + "c2id": 3, + "id": "emailpassword_changepassword3", + "scriptName": "EmailPassword_ChangePassword", + "highlight": false, + "params": [ + {"id":"email0", "type":"string", "initialValue":"\"\""}, + {"id":"old_password1", "type":"string", "initialValue":"\"\""}, + {"id":"new_password2", "type":"string", "initialValue":"\"\""} + ] + }, + { + "c2id": 4, + "id": "emailpassword_sendpasswordresetemail4", + "scriptName": "EmailPassword_SendPasswordResetEmail", + "highlight": false, + "params": [ + {"id":"email0", "type":"string", "initialValue":"\"\""} + ] + }, + { + "c2id": 5, + "id": "emailpassword_deleteuser5", + "scriptName": "EmailPassword_DeleteUser", + "highlight": false, + "params": [ + {"id":"email0", "type":"string", "initialValue":"\"\""}, + {"id":"password1", "type":"string", "initialValue":"\"\""} + ] + }, + { + "c2id": 61, + "id": "updateprofile61", + "scriptName": "UpdateProfile", + "highlight": false, + "params": [ + {"id":"display_name0", "type":"string", "initialValue":"\"\""}, + {"id":"photo_url1", "type":"string", "initialValue":"\"\""} + ] + }, + { + "c2id": 62, + "id": "updateemail62", + "scriptName": "UpdateEmail", + "highlight": false, + "params": [ + {"id":"email0", "type":"string", "initialValue":"\"\""} + ] + }, + { + "c2id": 63, + "id": "sendemailverification63", + "scriptName": "SendEmailVerification", + "highlight": false + } + ], + "expressions": [ + ] + }, + "anonymous": { + "conditions": [ + { + "c2id": 21, + "id": "ısanonymous21", + "scriptName": "IsAnonymous", + "isTrigger": "true", + "highlight": false + } + ], + "actions": [ + { + "c2id": 11, + "id": "anonymous_login11", + "scriptName": "Anonymous_Login", + "highlight": false, + "params": [ + {"id":"remember3", "type":"combo", "items":["default","sessiononly","never"]} + ] + } + ], + "expressions": [ + ] + }, + "authentication_token": { + "conditions": [ + ], + "actions": [ + { + "c2id": 12, + "id": "authenticationtoken_login12", + "scriptName": "AuthenticationToken_Login", + "highlight": false, + "params": [ + {"id":"token0", "type":"string", "initialValue":"\"\""}, + {"id":"remember4", "type":"combo", "items":["default","sessiononly","never"]} + ] + } + ], + "expressions": [ + ] + }, + "authentication_provider": { + "conditions": [ + ], + "actions": [ + { + "c2id": 21, + "id": "providerauthentication_login21", + "scriptName": "ProviderAuthentication_Login", + "highlight": false, + "params": [ + {"id":"provider4", "type":"combo", "items":["facebook","twitter","github","google"]}, + {"id":"type7", "type":"combo", "items":["popup","redirect"]}, + {"id":"remember11", "type":"combo", "items":["default","sessiononly","never"]}, + {"id":"scope12", "type":"string"} + ] + }, + { + "c2id": 23, + "id": "providerauthentication_login23", + "scriptName": "ProviderAuthentication_Login", + "highlight": false, + "params": [ + {"id":"provider0", "type":"string", "initialValue":"\"\""}, + {"id":"type3", "type":"combo", "items":["popup","redirect"]}, + {"id":"remember7", "type":"combo", "items":["default","sessiononly","never"]}, + {"id":"scope8", "type":"string"} + ] + } + ], + "expressions": [ + ] + }, + "authentication_with_token": { + "conditions": [ + ], + "actions": [ + { + "c2id": 22, + "id": "authwithoauthtoken_fb22", + "scriptName": "AuthWithOAuthToken_FB", + "highlight": false, + "params": [ + {"id":"access_token0", "type":"string", "initialValue":"\"\""}, + {"id":"remember4", "type":"combo", "items":["default","sessiononly","never"]}, + {"id":"scope5", "type":"string"} + ] + } + ], + "expressions": [ + ] + }, + "general": { + "conditions": [ + ], + "actions": [ + { + "c2id": 31, + "id": "loggingout31", + "scriptName": "LoggingOut", + "highlight": false + } + ], + "expressions": [ + ] + }, + "online": { + "conditions": [ + ], + "actions": [ + { + "c2id": 41, + "id": "gooffline41", + "scriptName": "GoOffline", + "highlight": false + }, + { + "c2id": 42, + "id": "goonline42", + "scriptName": "GoOnline", + "highlight": false + } + ], + "expressions": [ + ] + }, + "link_multiple_auth_providers": { + "conditions": [ + { + "c2id": 51, + "id": "onlinksuccessful51", + "scriptName": "OnLinkSuccessful", + "isTrigger": "true", + "highlight": false + }, + { + "c2id": 52, + "id": "onlinkerror52", + "scriptName": "OnLinkError", + "isTrigger": "true", + "highlight": false + } + ], + "actions": [ + { + "c2id": 51, + "id": "linktofb51", + "scriptName": "LinkToFB", + "highlight": false, + "params": [ + {"id":"access_token0", "type":"string", "initialValue":"\"\""} + ] + }, + { + "c2id": 52, + "id": "linktogoogle52", + "scriptName": "LinkToGoogle", + "highlight": false, + "params": [ + {"id":"ıd_token0", "type":"string", "initialValue":"\"\""} + ] + }, + { + "c2id": 53, + "id": "linktoemailpassword53", + "scriptName": "LinkToEmailPassword", + "highlight": false, + "params": [ + {"id":"email0", "type":"string", "initialValue":"\"\""}, + {"id":"password1", "type":"string", "initialValue":"\"\""} + ] + } + ], + "expressions": [ + ] + }, + "email_&_password_-_create_account": { + "conditions": [ + { + "c2id": 1, + "id": "emailpassword_oncreateaccountsuccessful1", + "scriptName": "EmailPassword_OnCreateAccountSuccessful", + "isTrigger": "true", + "highlight": false + }, + { + "c2id": 2, + "id": "emailpassword_oncreateaccounterror2", + "scriptName": "EmailPassword_OnCreateAccountError", + "isTrigger": "true", + "highlight": false + } + ], + "actions": [ + ], + "expressions": [ + ] + }, + "email_&_password_-_change_password": { + "conditions": [ + { + "c2id": 3, + "id": "emailpassword_onchangingpasswordsuccessful3", + "scriptName": "EmailPassword_OnChangingPasswordSuccessful", + "isTrigger": "true", + "highlight": false + }, + { + "c2id": 4, + "id": "emailpassword_onchangingpassworderror4", + "scriptName": "EmailPassword_OnChangingPasswordError", + "isTrigger": "true", + "highlight": false + } + ], + "actions": [ + ], + "expressions": [ + ] + }, + "email_&_password_-_send_password_reset_email": { + "conditions": [ + { + "c2id": 5, + "id": "emailpassword_onsendpasswordresetemailsuccessful5", + "scriptName": "EmailPassword_OnSendPasswordResetEmailSuccessful", + "isTrigger": "true", + "highlight": false + }, + { + "c2id": 6, + "id": "emailpassword_onsendpasswordresetemailerror6", + "scriptName": "EmailPassword_OnSendPasswordResetEmailError", + "isTrigger": "true", + "highlight": false + } + ], + "actions": [ + ], + "expressions": [ + ] + }, + "email_&_password_-_delete_user": { + "conditions": [ + { + "c2id": 7, + "id": "emailpassword_ondeleteusersuccessful7", + "scriptName": "EmailPassword_OnDeleteUserSuccessful", + "isTrigger": "true", + "highlight": false + }, + { + "c2id": 8, + "id": "emailpassword_ondeleteusererror8", + "scriptName": "EmailPassword_OnDeleteUserError", + "isTrigger": "true", + "highlight": false + } + ], + "actions": [ + ], + "expressions": [ + ] + }, + "email_&_password_-_update_profile": { + "conditions": [ + { + "c2id": 9, + "id": "emailpassword_onupdatingprofilesuccessful9", + "scriptName": "EmailPassword_OnUpdatingProfileSuccessful", + "isTrigger": "true", + "highlight": false + }, + { + "c2id": 10, + "id": "emailpassword_onupdatingprofileerror10", + "scriptName": "EmailPassword_OnUpdatingProfileError", + "isTrigger": "true", + "highlight": false + } + ], + "actions": [ + ], + "expressions": [ + ] + }, + "email_&_password_-_update_email": { + "conditions": [ + { + "c2id": 11, + "id": "emailpassword_onupdatingemailsuccessful11", + "scriptName": "EmailPassword_OnUpdatingEmailSuccessful", + "isTrigger": "true", + "highlight": false + }, + { + "c2id": 12, + "id": "emailpassword_onupdatingemailerror12", + "scriptName": "EmailPassword_OnUpdatingEmailError", + "isTrigger": "true", + "highlight": false + } + ], + "actions": [ + ], + "expressions": [ + ] + }, + "email_&_password_-_send_verification_email": { + "conditions": [ + { + "c2id": 13, + "id": "emailpassword_onsendverificationemailsuccessful13", + "scriptName": "EmailPassword_OnSendVerificationEmailSuccessful", + "isTrigger": "true", + "highlight": false + }, + { + "c2id": 14, + "id": "emailpassword_onsendverificationemailerror14", + "scriptName": "EmailPassword_OnSendVerificationEmailError", + "isTrigger": "true", + "highlight": false + } + ], + "actions": [ + ], + "expressions": [ + ] + }, + "general_-_login": { + "conditions": [ + { + "c2id": 31, + "id": "onloginsuccessful31", + "scriptName": "OnLoginSuccessful", + "isTrigger": "true", + "highlight": false + }, + { + "c2id": 32, + "id": "onloginerror32", + "scriptName": "OnLoginError", + "isTrigger": "true", + "highlight": false + }, + { + "c2id": 34, + "id": "ıslogin34", + "scriptName": "IsLogin", + "highlight": false + }, + { + "c2id": 41, + "id": "onloginbyother41", + "scriptName": "OnLoginByOther", + "isTrigger": "true", + "highlight": false + } + ], + "actions": [ + ], + "expressions": [ + ] + }, + "general_-_logged_out": { + "conditions": [ + { + "c2id": 33, + "id": "onloggedout33", + "scriptName": "OnLoggedOut", + "isTrigger": "true", + "highlight": false + }, + { + "c2id": 42, + "id": "onloggedoutbyother42", + "scriptName": "OnLoggedOutByOther", + "isTrigger": "true", + "highlight": false + } + ], + "actions": [ + ], + "expressions": [ + ] + }, + "error": { + "conditions": [ + ], + "actions": [ + ], + "expressions": [ + { + "c2id": 1, + "id": "errorcode1", + "expressionName": "ErrorCode", + "scriptName": "ErrorCode", + "highlight": false, + "returnType": "string" + }, + { + "c2id": 2, + "id": "errormessage2", + "expressionName": "ErrorMessage", + "scriptName": "ErrorMessage", + "highlight": false, + "returnType": "string" + }, + { + "c2id": 11, + "id": "errordetail11", + "expressionName": "ErrorDetail", + "scriptName": "ErrorDetail", + "highlight": false, + "returnType": "string" + } + ] + }, + "general_auth_data": { + "conditions": [ + ], + "actions": [ + ], + "expressions": [ + { + "c2id": 3, + "id": "userıd3", + "expressionName": "UserID", + "scriptName": "UserID", + "highlight": false, + "returnType": "string" + }, + { + "c2id": 4, + "id": "provider4", + "expressionName": "Provider", + "scriptName": "Provider", + "highlight": false, + "returnType": "string" + }, + { + "c2id": 5, + "id": "displayname5", + "expressionName": "DisplayName", + "scriptName": "DisplayName", + "highlight": false, + "returnType": "string" + }, + { + "c2id": 6, + "id": "userıdfromprovider6", + "expressionName": "UserIDFromProvider", + "scriptName": "UserIDFromProvider", + "highlight": false, + "returnType": "string" + }, + { + "c2id": 7, + "id": "accesstoken7", + "expressionName": "AccessToken", + "scriptName": "AccessToken", + "highlight": false, + "returnType": "string" + }, + { + "c2id": 8, + "id": "cacheduserprofile8", + "expressionName": "CachedUserProfile", + "scriptName": "CachedUserProfile", + "isDeprecated": "true", + "highlight": false, + "returnType": "any" + }, + { + "c2id": 9, + "id": "email9", + "expressionName": "Email", + "scriptName": "Email", + "highlight": false, + "returnType": "string" + }, + { + "c2id": 10, + "id": "username10", + "expressionName": "UserName", + "scriptName": "UserName", + "isDeprecated": "true", + "highlight": false, + "returnType": "any" + }, + { + "c2id": 12, + "id": "photourl12", + "expressionName": "PhotoURL", + "scriptName": "PhotoURL", + "highlight": false, + "returnType": "string" + } + ] + } +} diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/addon.json b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/addon.json new file mode 100755 index 0000000..288401f --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/addon.json @@ -0,0 +1,26 @@ +{ + "is-c3-addon": true, + "type": "plugin", + "name": "Authentication", + "id": "Rex_Firebase_Authentication", + "version": "0.1.0.0", + "author": "Rex.Rainbow", + "website": "http://c2rexplugins.weebly.com/rex_firebase_authentication.html", + "documentation": "http://c2rexplugins.weebly.com/rex_firebase_authentication.html", + "description": "Authentication which is provided by firebase. https://www.firebase.com/", + "editor-scripts": [ + "plugin.js", + "type.js", + "instance.js" + ], + "file-list": [ + "c2runtime/runtime.js", + "lang/en-US.json", + "aces.json", + "addon.json", + "icon.png", + "plugin.js", + "type.js", + "instance.js" + ] +} diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/c2runtime/runtime.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/c2runtime/runtime.js new file mode 100755 index 0000000..11ec703 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/c2runtime/runtime.js @@ -0,0 +1,1076 @@ +// ECMAScript 5 strict mode +"use strict"; + +assert2(cr, "cr namespace not created"); +assert2(cr.plugins_, "cr.plugins_ not created"); + +///////////////////////////////////// +// Plugin class +cr.plugins_.Rex_Firebase_Authentication = function(runtime) +{ + this.runtime = runtime; +}; + +(function () +{ + var pluginProto = cr.plugins_.Rex_Firebase_Authentication.prototype; + + ///////////////////////////////////// + // Object type class + pluginProto.Type = function(plugin) + { + this.plugin = plugin; + this.runtime = plugin.runtime; + }; + + var typeProto = pluginProto.Type.prototype; + + typeProto.onCreate = function() + { + }; + + ///////////////////////////////////// + // Instance class + pluginProto.Instance = function(type) + { + this.type = type; + this.runtime = type.runtime; + }; + + var instanceProto = pluginProto.Instance.prototype; + + instanceProto.onCreate = function() + { + this.rootpath = this.properties[0]; + this.isMyLoginCall = false; + this.isMyLogOutCall = false; + this.lastError = null; + this.lastAuthData = null; // only used in 2.x + this.lastLoginResult = null; // only used in 3.x + + var self=this; + var setupFn = function () + { + self.setOnLogoutHandler(); + } + window.FirebaseAddAfterInitializeHandler(setupFn); + + + window.FirebaseGetCurrentUserID = function() + { + return self.getCurrentUserID(); + }; + }; + + var isFirebase3x = function() + { + return (window["FirebaseV3x"] === true); + }; + + // 2.x + instanceProto.get_ref = function(k) + { + + if (k == null) + k = ""; + + var path; + if (k.substring(0,8) == "https://") + path = k; + else + path = this.rootpath + k + "/"; + + return new window["Firebase"](path); + }; + + // 3.x + var getAuthObj = function() + { + return window["Firebase"]["auth"](); + }; + + instanceProto.setOnLogoutHandler = function() + { + var self = this; + var onAuthStateChanged = function (authData) + { + if (authData) + { + // user authenticated with Firebase + //console.log("User ID: " + authData.uid + ", Provider: " + authData.provider); + + var isMyLoginCall = self.isMyLoginCall && !self.isMyLogOutCall; + self.lastError = null; + self.lastAuthData = authData; + + if (!isMyLoginCall) + self.runtime.trigger(cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.OnLoginByOther, self); + else + { + self.isMyLoginCall = false; + self.runtime.trigger(cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.OnLoginSuccessful, self); + } + + } + else + { + var isMyLogOutCall = self.isMyLogOutCall; + self.isMyLogOutCall = false; + self.lastAuthData = null; + self.lastLoginResult = null; + + // user is logged out + if (!isMyLogOutCall) + self.runtime.trigger(cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.OnLoggedOutByOther, self); + else + self.runtime.trigger(cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.OnLoggedOut, self); + + } + }; + + // 2.x + if (!isFirebase3x()) + { + this.lastAuthData = this.get_ref()["getAuth"](); + this.get_ref()["onAuth"](onAuthStateChanged); + } + + // 3.x + else + { + getAuthObj()["onAuthStateChanged"](onAuthStateChanged); + } + }; + + instanceProto.getCurrentUserID = function() + { + var uid; + // 2.x + if (!isFirebase3x()) + uid = (this.lastAuthData)? this.lastAuthData["uid"]:""; + + // 3.x + else + uid = getUserProperty3x("uid"); + + return uid; + } + + /**BEGIN-PREVIEWONLY**/ + var fake_ret = { + value:0, + set_any: function(value){this.value=value;}, + set_int: function(value){this.value=value;}, + set_float: function(value){this.value=value;}, + set_string: function(value) {this.value=value;}, + }; + + instanceProto.getDebuggerValues = function (propsections) + { + var provider; + if (Cnds.prototype.IsAnonymous.call(this)) + { + provider = "anonymous"; + } + else + { + cr.plugins_.Rex_Firebase_Authentication.prototype.exps.Provider.call(this, fake_ret); + var provider = fake_ret.value; + } + + cr.plugins_.Rex_Firebase_Authentication.prototype.exps.DisplayName.call(this, fake_ret); + var displayname = fake_ret.value; + + cr.plugins_.Rex_Firebase_Authentication.prototype.exps.Email.call(this, fake_ret); + var email = fake_ret.value; + + cr.plugins_.Rex_Firebase_Authentication.prototype.exps.PhotoURL.call(this, fake_ret); + var photoURL = fake_ret.value; + + cr.plugins_.Rex_Firebase_Authentication.prototype.exps.AccessToken.call(this, fake_ret); + var accessToken = fake_ret.value; + + var self = this; + propsections.push({ + "title": this.type.name, + "properties": [ + {"name":"UserID", "value":this.getCurrentUserID() ,"readonly":true}, + {"name":"Provider", "value":provider ,"readonly":true}, + {"name":"Display name", "value":displayname ,"readonly":true}, + {"name":"Email", "value":email ,"readonly":true}, + {"name":"PhotoURL", "value":photoURL ,"readonly":true}, + {"name":"AccessToken", "value":accessToken ,"readonly":true}, + ] + }); + }; + + instanceProto.onDebugValueEdited = function (header, name, value) + { + }; + /**END-PREVIEWONLY**/ + + ////////////////////////////////////// + // Conditions + function Cnds() {}; + pluginProto.cnds = new Cnds(); + + Cnds.prototype.EmailPassword_OnCreateAccountSuccessful = function () + { + return true; + }; + + Cnds.prototype.EmailPassword_OnCreateAccountError = function () + { + return true; + }; + + Cnds.prototype.EmailPassword_OnChangingPasswordSuccessful = function () + { + return true; + }; + + Cnds.prototype.EmailPassword_OnChangingPasswordError = function () + { + return true; + }; + + Cnds.prototype.EmailPassword_OnSendPasswordResetEmailSuccessful = function () + { + return true; + }; + + Cnds.prototype.EmailPassword_OnSendPasswordResetEmailError = function () + { + return true; + }; + + Cnds.prototype.EmailPassword_OnDeleteUserSuccessful = function () + { + return true; + }; + + Cnds.prototype.EmailPassword_OnDeleteUserError = function () + { + return true; + }; + + Cnds.prototype.EmailPassword_OnUpdatingProfileSuccessful = function () + { + return true; + }; + + Cnds.prototype.EmailPassword_OnUpdatingProfileError = function () + { + return true; + }; + + Cnds.prototype.EmailPassword_OnUpdatingEmailSuccessful = function () + { + return true; + }; + + Cnds.prototype.EmailPassword_OnUpdatingEmailError = function () + { + return true; + }; + + Cnds.prototype.EmailPassword_OnSendVerificationEmailSuccessful = function () + { + return true; + }; + + Cnds.prototype.EmailPassword_OnSendVerificationEmailError = function () + { + return true; + }; + + + Cnds.prototype.IsAnonymous = function () + { + var val; + if (!isFirebase3x()) + { + var user = this.lastAuthData; + if (user) + val = (user["provider"] === "anonymous"); + else + val = false; + } + else + { + var user = getAuthObj()["currentUser"]; + val = user && user["isAnonymous"]; + } + + return val; + }; + + Cnds.prototype.OnLoginSuccessful = function () + { + return true; + }; + + Cnds.prototype.OnLoginError = function () + { + return true; + }; + + Cnds.prototype.OnLoggedOut = function () + { + return true; + }; + + Cnds.prototype.IsLogin = function () + { + if (!isFirebase3x()) + return (this.lastAuthData != null); + else + return (getAuthObj()["currentUser"] != null); + }; + + Cnds.prototype.OnLoginByOther = function () + { + return true; + }; + + Cnds.prototype.OnLoggedOutByOther = function () + { + return true; + }; + + Cnds.prototype.OnLinkSuccessful = function () + { + return true; + }; + + Cnds.prototype.OnLinkError = function () + { + return true; + }; + + + ////////////////////////////////////// + // Actions + function Acts() {}; + pluginProto.acts = new Acts(); + + // 2.x + var getHandler2x = function(self, successTrig, errorTrig) + { + var handler = function(error, authData) + { + self.lastError = error; + self.lastAuthData = authData; + if (error == null) + { + // get auth data by expression:UserID, and expression:Provider + self.runtime.trigger(successTrig, self); + } + else + { + // get error message by expression:ErrorCode and expression:ErrorMessage + self.runtime.trigger(errorTrig, self); + } + }; + return handler; + }; + + var getLoginHandler2x = function(self) + { + var handler = function(error, authData) + { + self.lastError = error; + self.lastAuthData = authData; + if (error == null) + { + // self.isMyLoginCall = false; // set it in onAuthStateChanged + // get auth data by expression:UserID, and expression:Provider + self.runtime.trigger(cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.OnLoginSuccessful, self); + } + else + { + self.isMyLoginCall = false; + // get error message by expression:ErrorCode and expression:ErrorMessage + self.runtime.trigger(cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.OnLoginError, self); + } + }; + self.isMyLoginCall = true; + return handler; + }; + + // 3.x + var addHandler = function (self, authObj, successTrig, errorTrig) + { + var onSuccess = function (result) + { + self.lastError = null; + self.lastAuthData = result; + if (successTrig) + self.runtime.trigger(successTrig, self); + }; + var onError = function (error) + { + self.lastError = error; + self.lastAuthData = null; + if (errorTrig) + self.runtime.trigger(errorTrig, self); + }; + authObj["then"](onSuccess)["catch"](onError); + }; + + var addLoginHandler = function (self, authObj) + { + var onSuccess = function (result) + { + self.lastLoginResult = result; + }; + var onError = function (error) + { + self.isMyLoginCall = false; + self.lastError = error; + self.lastLoginResult = null; + self.runtime.trigger(cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.OnLoginError, self); + }; + self.isMyLoginCall = true; + authObj["then"](onSuccess)["catch"](onError); + } + + Acts.prototype.EmailPassword_CreateAccount = function (e_, p_) + { + // 2.x + if (!isFirebase3x()) + { + var reg_data = {"email":e_, "password":p_ }; + var handler = getHandler2x(this, + cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.EmailPassword_OnCreateAccountSuccessful, + cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.EmailPassword_OnCreateAccountError); + this.get_ref()["createUser"](reg_data, handler); + } + + // 3.x + else + { + var authObj = getAuthObj()["createUserWithEmailAndPassword"](e_, p_); + addHandler(this, authObj, + cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.EmailPassword_OnCreateAccountSuccessful, + cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.EmailPassword_OnCreateAccountError + ); + } + }; + + var PRESISTING_TYPE = ["default", "sessionOnly", "never"]; + Acts.prototype.EmailPassword_Login = function (e_, p_, r_) + { + // 2.x + if (!isFirebase3x()) + { + var reg_data = {"email":e_, "password":p_ }; + var handler = getLoginHandler2x(this); + var d = {"remember":PRESISTING_TYPE[r_]}; + this.get_ref()["authWithPassword"](reg_data, handler, d); + } + + // 3.x + else + { + var authObj = getAuthObj(); + addLoginHandler(this, authObj["signInWithEmailAndPassword"](e_, p_)); + } + }; + + Acts.prototype.EmailPassword_ChangePassword = function (e_, old_p_, new_p_) + { + // 2.x + if (!isFirebase3x()) + { + var reg_data = {"email":e_, "oldPassword ":old_p_, "newPassword":new_p_}; + var handler = getHandler2x(this, + cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.EmailPassword_OnChangingPasswordSuccessful, + cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.EmailPassword_OnChangingPasswordError); + this.get_ref()["changePassword"](reg_data, handler); + } + + // 3.x + else + { + var authObj = getAuthObj()["currentUser"]["updatePassword"](new_p_); + addHandler(this, authObj, + cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.EmailPassword_OnChangingPasswordSuccessful, + cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.EmailPassword_OnChangingPasswordError + ); + } + }; + + Acts.prototype.EmailPassword_SendPasswordResetEmail = function (e_) + { + // 2.x + if (!isFirebase3x()) + { + var reg_data = {"email":e_}; + var handler = getHandler2x(this, + cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.EmailPassword_OnSendPasswordResetEmailSuccessful, + cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.EmailPassword_OnSendPasswordResetEmailError); + this.get_ref()["resetPassword"](reg_data, handler); + } + + // 3.x + else + { + var authObj = getAuthObj()["sendPasswordResetEmail"](e_); + addHandler(this, authObj, + cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.EmailPassword_OnSendPasswordResetEmailSuccessful, + cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.EmailPassword_OnSendPasswordResetEmailError + ); + } + }; + + Acts.prototype.EmailPassword_DeleteUser = function (e_, p_) + { + // 2.x + if (!isFirebase3x()) + { + var reg_data = {"email":e_, "password":p_}; + var handler = getHandler2x(this, + cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.EmailPassword_OnDeleteUserSuccessful, + cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.EmailPassword_OnDeleteUserError); + this.get_ref()["removeUser"](reg_data, handler); + } + + // 3.x + else + { + var authObj = getAuthObj()["currentUser"]["delete"](); + addHandler(this, authObj, + cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.EmailPassword_OnDeleteUserSuccessful, + cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.EmailPassword_OnDeleteUserError + ); + } + }; + + Acts.prototype.Anonymous_Login = function (r_) + { + // 2.x + if (!isFirebase3x()) + { + var handler = getLoginHandler2x(this); + var d = {"remember":PRESISTING_TYPE[r_]}; + this.get_ref()["authAnonymously"](handler, d); + } + + // 3.x + else + { + var authObj = getAuthObj(); + addLoginHandler(this, authObj["signInAnonymously"]()); + } + }; + + Acts.prototype.AuthenticationToken_Login = function (t_, r_) + { + // 2.x + if (!isFirebase3x()) + { + var handler = getLoginHandler2x(this); + var d = {"remember":PRESISTING_TYPE[r_]}; + this.get_ref()["authWithCustomToken"](t_, handler, d); + } + + // 3.x + else + { + var authObj = getAuthObj(); + addLoginHandler(this, authObj["signInWithCustomToken"]()); + } + }; + + var PROVIDER_TYPE2x = ["facebook", "twitter", "github", "google"]; + // 3.x + var capitalizeFirstLetter = function (s) + { + return s.charAt(0).toUpperCase() + s.slice(1); + }; + Acts.prototype.ProviderAuthentication_Login = function (provider, t_, r_, scope_) + { + // 2.x + if (!isFirebase3x()) + { + if (typeof(provider) === "number") + provider = PROVIDER_TYPE2x[provider]; + + var loginType = (t_ === 0)? "authWithOAuthPopup":"authWithOAuthRedirect"; + var handler = getLoginHandler2x(this); + var d = {"remember":PRESISTING_TYPE[r_], + "scope":scope_}; + this.get_ref()[loginType](provider, handler, d); + } + + // 3.x + else + { + if (typeof(provider) === "number") + provider = PROVIDER_TYPE2x[provider]; + + provider = capitalizeFirstLetter( provider) + "AuthProvider"; + var providerObj = new window["Firebase"]["auth"][provider](); + if (scope_ !== "") + providerObj["addScope"](scope_); + + var authObj = getAuthObj(); + if (t_ === 0) // signInWithPopup + { + addLoginHandler(this, authObj["signInWithPopup"](providerObj)); + } + else // signInWithRedirect + { + authObj["signInWithRedirect"](providerObj); + addLoginHandler(this, authObj["getRedirectResult"]()); + } + } + }; + + Acts.prototype.AuthWithOAuthToken_FB = function (access_token, r_, scope_) + { + if (access_token == "") + { + if (typeof (FB) == null) + return; + + var auth_response = FB["getAuthResponse"](); + if (!auth_response) + return; + + access_token = auth_response["accessToken"]; + } + + // 2.x + if (!isFirebase3x()) + { + var handler = getLoginHandler2x(this); + var d = {"remember":PRESISTING_TYPE[r_], + "scope":scope_}; + this.get_ref()["authWithOAuthToken"]("facebook", access_token, handler, d); + } + + // 3.x + else + { + var credential = window["Firebase"]["auth"]["FacebookAuthProvider"]["credential"](access_token); + var authObj = getAuthObj(); + addLoginHandler(this, authObj["signInWithCredential"](credential)); + } + }; + + Acts.prototype.LoggingOut = function () + { + this.isMyLogOutCall = true; + // 2.x + if (!isFirebase3x()) + { + this.get_ref()["unauth"](); + } + + // 3.x + else + { + var authObj = getAuthObj()["signOut"](); + } + }; + + Acts.prototype.GoOffline = function () + { + // 2.x + if (!isFirebase3x()) + { + window["Firebase"]["goOffline"](); + } + + // 3.x + else + { + window["Firebase"]["database"]()["goOffline"](); + } + }; + + Acts.prototype.GoOnline = function () + { + // 2.x + if (!isFirebase3x()) + { + window["Firebase"]["goOnline"](); + + } + + // 3.x + else + { + window["Firebase"]["database"]()["goOnline"](); + } + }; + + Acts.prototype.LinkToFB = function (access_token) + { + // 2.x + if (!isFirebase3x()) + { + alert("Does not support in firebase 2.x api"); + return; + } + + var user = getAuthObj()["currentUser"]; + if (user == null) + { + return; + } + + if (access_token == "") + { + if (typeof (FB) == null) + return; + + var auth_response = FB["getAuthResponse"](); + if (!auth_response) + return; + + access_token = auth_response["accessToken"]; + } + + // 3.x + var credential = window["Firebase"]["auth"]["FacebookAuthProvider"]["credential"](access_token); + var authObj = user["link"](credential); + addHandler(this, authObj, + cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.OnLinkSuccessful, + cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.OnLinkError + ); + }; + + Acts.prototype.LinkToGoogle = function (id_token) + { + // 2.x + if (!isFirebase3x()) + { + alert("Does not support in firebase 2.x api"); + return; + } + + var user = getAuthObj()["currentUser"]; + if (user == null) + { + return; + } + + // 3.x + var credential = window["Firebase"]["auth"]["GoogleAuthProvider"]["credential"](id_token); + var authObj = user["link"](credential); + addHandler(this, authObj, + cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.OnLinkSuccessful, + cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.OnLinkError + ); + }; + + Acts.prototype.LinkToEmailPassword = function (e_, p_) + { + // 2.x + if (!isFirebase3x()) + { + alert("Does not support in firebase 2.x api"); + return; + } + + var user = getAuthObj()["currentUser"]; + if (user == null) + { + return; + } + + // 3.x + var credential = window["Firebase"]["auth"]["EmailAuthProvider"]["credential"](e_, p_); + var authObj = user["link"](credential); + addHandler(this, authObj, + cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.OnLinkSuccessful, + cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.OnLinkError + ); + }; + + Acts.prototype.UpdateProfile = function (displayName, photoURL) + { + // 2.x + if (!isFirebase3x()) + { + alert("Does not support in firebase 2.x api"); + return; + } + + // 3.x + else + { + var self = this; + var user = getAuthObj()["currentUser"]; + var data = { + "displayName": displayName, + "photoURL": photoURL, + } + var onSuccess = function () + { + self.runtime.trigger(cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.EmailPassword_OnUpdatingProfileSuccessful, self); + }; + var onError = function () + { + self.runtime.trigger(cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.EmailPassword_OnUpdatingProfileError, self); + }; + user["updateProfile"](data)["then"](onSuccess)["catch"](onError); + } + }; + + Acts.prototype.UpdateEmail = function (email) + { + // 2.x + if (!isFirebase3x()) + { + alert("Does not support in firebase 2.x api"); + return; + } + + // 3.x + else + { + var self = this; + var user = getAuthObj()["currentUser"]; + var onSuccess = function () + { + self.runtime.trigger(cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.EmailPassword_OnUpdatingEmailSuccessful, self); + }; + var onError = function () + { + self.runtime.trigger(cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.EmailPassword_OnUpdatingEmailError, self); + }; + user["updateEmail"](email)["then"](onSuccess)["catch"](onError); + } + }; + + Acts.prototype.SendEmailVerification = function (email) + { + // 2.x + if (!isFirebase3x()) + { + alert("Does not support in firebase 2.x api"); + return; + } + + // 3.x + else + { + var self = this; + var user = getAuthObj()["currentUser"]; + var onSuccess = function () + { + self.runtime.trigger(cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.EmailPassword_OnSendVerificationEmailSuccessful, self); + }; + var onError = function () + { + self.runtime.trigger(cr.plugins_.Rex_Firebase_Authentication.prototype.cnds.EmailPassword_OnSendVerificationEmailError, self); + }; + user["sendEmailVerification"]()["then"](onSuccess)["catch"](onError); + } + }; + + ////////////////////////////////////// + // Expressions + function Exps() {}; + pluginProto.exps = new Exps(); + + // 2.x + var getProviderProperty = function (authData, p) + { + if (authData == null) + return ""; + + var provide_type = authData["provider"]; + var provider_info = authData[provide_type]; + if (provider_info == null) + return ""; + + var val = provider_info[p]; + if (val == null) + val = ""; + + return val; + }; + + // 3.x + var getUserProperty3x = function(p) + { + var user = getAuthObj()["currentUser"]; + return (user)? user[p]:""; + }; + var getProviderProperty3x = function (p, idx) + { + var user = getAuthObj()["currentUser"]; + if (!user) + return ""; + + if (idx == null) idx = 0; + var providerData = user["providerData"][idx]; + var val = (providerData)? providerData[p]:""; + return val; + }; + + + Exps.prototype.ErrorCode = function (ret) + { + // 2.x , 3.x + var val = (!this.lastError)? "": this.lastError["code"]; + ret.set_string(val || ""); + }; + + Exps.prototype.ErrorMessage = function (ret) + { + // 2.x , 3.x + var val = (!this.lastError)? "": this.lastError["message"]; + ret.set_string(val || ""); + }; + + Exps.prototype.UserID = function (ret) + { + ret.set_string(this.getCurrentUserID() || ""); + }; + Exps.prototype.Provider = function (ret) + { + var pid; + // 2.x + if (!isFirebase3x()) + { + pid = (!this.lastAuthData)? "": this.lastAuthData["provider"]; + } + + // 3.x + else + { + pid = getProviderProperty3x("providerId"); + } + ret.set_string(pid); + }; + + Exps.prototype.DisplayName = function (ret) + { + var name; + // 2.x + if (!isFirebase3x()) + { + name = getProviderProperty(this.lastAuthData, "displayName"); + } + + // 3.x + else + { + name = getUserProperty3x("displayName"); + } + ret.set_string(name || ""); + }; + Exps.prototype.UserIDFromProvider = function (ret) + { + var uid; + // 2.x + if (!isFirebase3x()) + { + uid = getProviderProperty(this.lastAuthData, "id"); + } + + // 3.x + else + { + uid = getProviderProperty3x("uid"); + } + ret.set_string(uid || ""); + }; + Exps.prototype.AccessToken = function (ret) + { + var token; + // 2.x + if (!isFirebase3x()) + { + token = getProviderProperty(this.lastAuthData, "accessToken"); + } + + // 3.x + else + { + if (this.lastLoginResult && this.lastLoginResult["credential"]) + token = this.lastLoginResult["credential"]["accessToken"]; + } + ret.set_string(token || ""); + }; + Exps.prototype.CachedUserProfile = function (ret) + { + var profile; + // 2.x + if (!isFirebase3x()) + { + profile = getProviderProperty(this.lastAuthData, "cachedUserProfile"); + } + + // 3.x + else + { + alert("CachedUserProfile had not implemented in firebase 3.x"); + } + // ?? + ret.set_string( profile || "" ); + }; + Exps.prototype.Email = function (ret) + { + var email; + // 2.x + if ((!isFirebase3x())) + { + email = getProviderProperty(this.lastAuthData, "email"); + } + + // 3.x + else + { + email = getProviderProperty3x("email"); + } + ret.set_string(email || ""); + }; + Exps.prototype.UserName = function (ret) + { + var name; + // 2.x + if (!isFirebase3x()) + { + name = getProviderProperty(this.lastAuthData, "username"); + } + + // 3.x + else + { + name = getUserProperty3x("displayName"); + } + + ret.set_string(name || ""); + }; + Exps.prototype.ErrorDetail = function (ret) + { + // 2.x , 3.x + var val = (!this.lastError)? "": this.lastError["detail"]; + if (val == null) + val = ""; + ret.set_string(val); + }; + Exps.prototype.PhotoURL = function (ret) + { + var photoUrl; + // 2.x + if (!isFirebase3x()) + { + photoUrl = ""; + } + + // 3.x + else + { + photoUrl = getProviderProperty3x("photoURL"); + } + ret.set_string(photoUrl || ""); + }; +}()); \ No newline at end of file diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/c3runtime/actions.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/c3runtime/actions.js new file mode 100755 index 0000000..d11e815 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/c3runtime/actions.js @@ -0,0 +1,439 @@ +"use strict"; + +{ + C3.Plugins.Rex_Firebase_Authentication.Acts = + { + EmailPassword_CreateAccount(e_, p_) + { + // 2.x + if (!isFirebase3x()) + { + var reg_data = {"email":e_, "password":p_ }; + var handler = getHandler2x(this, + C3.Plugins.Rex_Firebase_Authentication.Cnds.EmailPassword_OnCreateAccountSuccessful, + C3.Plugins.Rex_Firebase_Authentication.Cnds.EmailPassword_OnCreateAccountError); + this.get_ref()["createUser"](reg_data, handler); + } + + // 3.x + else + { + var authObj = getAuthObj()["createUserWithEmailAndPassword"](e_, p_); + addHandler(this, authObj, + C3.Plugins.Rex_Firebase_Authentication.Cnds.EmailPassword_OnCreateAccountSuccessful, + C3.Plugins.Rex_Firebase_Authentication.Cnds.EmailPassword_OnCreateAccountError + ); + } + }, + + EmailPassword_Login(e_, p_, r_) + { + // 2.x + if (!isFirebase3x()) + { + var reg_data = {"email":e_, "password":p_ }; + var handler = getLoginHandler2x(this); + var d = {"remember":PRESISTING_TYPE[r_]}; + this.get_ref()["authWithPassword"](reg_data, handler, d); + } + + // 3.x + else + { + var authObj = getAuthObj(); + addLoginHandler(this, authObj["signInWithEmailAndPassword"](e_, p_)); + } + }, + + EmailPassword_ChangePassword(e_, old_p_, new_p_) + { + // 2.x + if (!isFirebase3x()) + { + var reg_data = {"email":e_, "oldPassword ":old_p_, "newPassword":new_p_}; + var handler = getHandler2x(this, + C3.Plugins.Rex_Firebase_Authentication.Cnds.EmailPassword_OnChangingPasswordSuccessful, + C3.Plugins.Rex_Firebase_Authentication.Cnds.EmailPassword_OnChangingPasswordError); + this.get_ref()["changePassword"](reg_data, handler); + } + + // 3.x + else + { + var authObj = getAuthObj()["currentUser"]["updatePassword"](new_p_); + addHandler(this, authObj, + C3.Plugins.Rex_Firebase_Authentication.Cnds.EmailPassword_OnChangingPasswordSuccessful, + C3.Plugins.Rex_Firebase_Authentication.Cnds.EmailPassword_OnChangingPasswordError + ); + } + }, + + EmailPassword_SendPasswordResetEmail(e_) + { + // 2.x + if (!isFirebase3x()) + { + var reg_data = {"email":e_}; + var handler = getHandler2x(this, + C3.Plugins.Rex_Firebase_Authentication.Cnds.EmailPassword_OnSendPasswordResetEmailSuccessful, + C3.Plugins.Rex_Firebase_Authentication.Cnds.EmailPassword_OnSendPasswordResetEmailError); + this.get_ref()["resetPassword"](reg_data, handler); + } + + // 3.x + else + { + var authObj = getAuthObj()["sendPasswordResetEmail"](e_); + addHandler(this, authObj, + C3.Plugins.Rex_Firebase_Authentication.Cnds.EmailPassword_OnSendPasswordResetEmailSuccessful, + C3.Plugins.Rex_Firebase_Authentication.Cnds.EmailPassword_OnSendPasswordResetEmailError + ); + } + }, + + EmailPassword_DeleteUser(e_, p_) + { + // 2.x + if (!isFirebase3x()) + { + var reg_data = {"email":e_, "password":p_}; + var handler = getHandler2x(this, + C3.Plugins.Rex_Firebase_Authentication.Cnds.EmailPassword_OnDeleteUserSuccessful, + C3.Plugins.Rex_Firebase_Authentication.Cnds.EmailPassword_OnDeleteUserError); + this.get_ref()["removeUser"](reg_data, handler); + } + + // 3.x + else + { + var authObj = getAuthObj()["currentUser"]["delete"](); + addHandler(this, authObj, + C3.Plugins.Rex_Firebase_Authentication.Cnds.EmailPassword_OnDeleteUserSuccessful, + C3.Plugins.Rex_Firebase_Authentication.Cnds.EmailPassword_OnDeleteUserError + ); + } + }, + + Anonymous_Login(r_) + { + // 2.x + if (!isFirebase3x()) + { + var handler = getLoginHandler2x(this); + var d = {"remember":PRESISTING_TYPE[r_]}; + this.get_ref()["authAnonymously"](handler, d); + } + + // 3.x + else + { + var authObj = getAuthObj(); + addLoginHandler(this, authObj["signInAnonymously"]()); + } + }, + + AuthenticationToken_Login(t_, r_) + { + // 2.x + if (!isFirebase3x()) + { + var handler = getLoginHandler2x(this); + var d = {"remember":PRESISTING_TYPE[r_]}; + this.get_ref()["authWithCustomToken"](t_, handler, d); + } + + // 3.x + else + { + var authObj = getAuthObj(); + addLoginHandler(this, authObj["signInWithCustomToken"]()); + } + }, + + + ProviderAuthentication_Login(provider, t_, r_, scope_) + { + // 2.x + if (!isFirebase3x()) + { + if (typeof(provider) === "number") + provider = PROVIDER_TYPE2x[provider]; + + var loginType = (t_ === 0)? "authWithOAuthPopup":"authWithOAuthRedirect"; + var handler = getLoginHandler2x(this); + var d = {"remember":PRESISTING_TYPE[r_], + "scope":scope_}; + this.get_ref()[loginType](provider, handler, d); + } + + // 3.x + else + { + if (typeof(provider) === "number") + provider = PROVIDER_TYPE2x[provider]; + + provider = capitalizeFirstLetter( provider) + "AuthProvider"; + var providerObj = new window["Firebase"]["auth"][provider](); + if (scope_ !== "") + providerObj["addScope"](scope_); + + var authObj = getAuthObj(); + if (t_ === 0) // signInWithPopup + { + addLoginHandler(this, authObj["signInWithPopup"](providerObj)); + } + else // signInWithRedirect + { + authObj["signInWithRedirect"](providerObj); + addLoginHandler(this, authObj["getRedirectResult"]()); + } + } + }, + + AuthWithOAuthToken_FB(access_token, r_, scope_) + { + if (access_token == "") + { + if (typeof (FB) == null) + return; + + var auth_response = FB["getAuthResponse"](); + if (!auth_response) + return; + + access_token = auth_response["accessToken"]; + } + + // 2.x + if (!isFirebase3x()) + { + var handler = getLoginHandler2x(this); + var d = {"remember":PRESISTING_TYPE[r_], + "scope":scope_}; + this.get_ref()["authWithOAuthToken"]("facebook", access_token, handler, d); + } + + // 3.x + else + { + var credential = window["Firebase"]["auth"]["FacebookAuthProvider"]["credential"](access_token); + var authObj = getAuthObj(); + addLoginHandler(this, authObj["signInWithCredential"](credential)); + } + }, + + LoggingOut() + { + this.isMyLogOutCall = true; + // 2.x + if (!isFirebase3x()) + { + this.get_ref()["unauth"](); + } + + // 3.x + else + { + var authObj = getAuthObj()["signOut"](); + } + }, + + GoOffline() + { + // 2.x + if (!isFirebase3x()) + { + window["Firebase"]["goOffline"](); + } + + // 3.x + else + { + window["Firebase"]["database"]()["goOffline"](); + } + }, + + GoOnline() + { + // 2.x + if (!isFirebase3x()) + { + window["Firebase"]["goOnline"](); + + } + + // 3.x + else + { + window["Firebase"]["database"]()["goOnline"](); + } + }, + + LinkToFB(access_token) + { + // 2.x + if (!isFirebase3x()) + { + alert("Does not support in firebase 2.x api"); + return; + } + + var user = getAuthObj()["currentUser"]; + if (user == null) + { + return; + } + + if (access_token == "") + { + if (typeof (FB) == null) + return; + + var auth_response = FB["getAuthResponse"](); + if (!auth_response) + return; + + access_token = auth_response["accessToken"]; + } + + // 3.x + var credential = window["Firebase"]["auth"]["FacebookAuthProvider"]["credential"](access_token); + var authObj = user["link"](credential); + addHandler(this, authObj, + C3.Plugins.Rex_Firebase_Authentication.Cnds.OnLinkSuccessful, + C3.Plugins.Rex_Firebase_Authentication.Cnds.OnLinkError + ); + }, + + LinkToGoogle(id_token) + { + // 2.x + if (!isFirebase3x()) + { + alert("Does not support in firebase 2.x api"); + return; + } + + var user = getAuthObj()["currentUser"]; + if (user == null) + { + return; + } + + // 3.x + var credential = window["Firebase"]["auth"]["GoogleAuthProvider"]["credential"](id_token); + var authObj = user["link"](credential); + addHandler(this, authObj, + C3.Plugins.Rex_Firebase_Authentication.Cnds.OnLinkSuccessful, + C3.Plugins.Rex_Firebase_Authentication.Cnds.OnLinkError + ); + }, + + LinkToEmailPassword(e_, p_) + { + // 2.x + if (!isFirebase3x()) + { + alert("Does not support in firebase 2.x api"); + return; + } + + var user = getAuthObj()["currentUser"]; + if (user == null) + { + return; + } + + // 3.x + var credential = window["Firebase"]["auth"]["EmailAuthProvider"]["credential"](e_, p_); + var authObj = user["link"](credential); + addHandler(this, authObj, + C3.Plugins.Rex_Firebase_Authentication.Cnds.OnLinkSuccessful, + C3.Plugins.Rex_Firebase_Authentication.Cnds.OnLinkError + ); + }, + + UpdateProfile(displayName, photoURL) + { + // 2.x + if (!isFirebase3x()) + { + alert("Does not support in firebase 2.x api"); + return; + } + + // 3.x + else + { + var self = this; + var user = getAuthObj()["currentUser"]; + var data = { + "displayName": displayName, + "photoURL": photoURL, + } + var onSuccess = function () + { + self.Trigger(C3.Plugins.Rex_Firebase_Authentication.Cnds.EmailPassword_OnUpdatingProfileSuccessful, self); + }; + var onError = function () + { + self.Trigger(C3.Plugins.Rex_Firebase_Authentication.Cnds.EmailPassword_OnUpdatingProfileError, self); + }; + user["updateProfile"](data)["then"](onSuccess)["catch"](onError); + } + }, + + UpdateEmail(email) + { + // 2.x + if (!isFirebase3x()) + { + alert("Does not support in firebase 2.x api"); + return; + } + + // 3.x + else + { + var self = this; + var user = getAuthObj()["currentUser"]; + var onSuccess = function () + { + self.Trigger(C3.Plugins.Rex_Firebase_Authentication.Cnds.EmailPassword_OnUpdatingEmailSuccessful, self); + }; + var onError = function () + { + self.Trigger(C3.Plugins.Rex_Firebase_Authentication.Cnds.EmailPassword_OnUpdatingEmailError, self); + }; + user["updateEmail"](email)["then"](onSuccess)["catch"](onError); + } + }, + + SendEmailVerification(email) + { + // 2.x + if (!isFirebase3x()) + { + alert("Does not support in firebase 2.x api"); + return; + } + + // 3.x + else + { + var self = this; + var user = getAuthObj()["currentUser"]; + var onSuccess = function () + { + self.Trigger(C3.Plugins.Rex_Firebase_Authentication.Cnds.EmailPassword_OnSendVerificationEmailSuccessful, self); + }; + var onError = function () + { + self.Trigger(C3.Plugins.Rex_Firebase_Authentication.Cnds.EmailPassword_OnSendVerificationEmailError, self); + }; + user["sendEmailVerification"]()["then"](onSuccess)["catch"](onError); + } + } + + }; +} \ No newline at end of file diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/c3runtime/conditions.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/c3runtime/conditions.js new file mode 100755 index 0000000..ed09404 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/c3runtime/conditions.js @@ -0,0 +1,142 @@ +"use strict"; + +{ + C3.Plugins.Rex_Firebase_Authentication.Cnds = + { + EmailPassword_OnCreateAccountSuccessful() + { + return true; + }, + + EmailPassword_OnCreateAccountError() + { + return true; + }, + + EmailPassword_OnChangingPasswordSuccessful() + { + return true; + }, + + EmailPassword_OnChangingPasswordError() + { + return true; + }, + + EmailPassword_OnSendPasswordResetEmailSuccessful() + { + return true; + }, + + EmailPassword_OnSendPasswordResetEmailError() + { + return true; + }, + + EmailPassword_OnDeleteUserSuccessful() + { + return true; + }, + + EmailPassword_OnDeleteUserError() + { + return true; + }, + + EmailPassword_OnUpdatingProfileSuccessful() + { + return true; + }, + + EmailPassword_OnUpdatingProfileError() + { + return true; + }, + + EmailPassword_OnUpdatingEmailSuccessful() + { + return true; + }, + + EmailPassword_OnUpdatingEmailError() + { + return true; + }, + + EmailPassword_OnSendVerificationEmailSuccessful() + { + return true; + }, + + EmailPassword_OnSendVerificationEmailError() + { + return true; + }, + + + IsAnonymous() + { + var val; + if (!isFirebase3x()) + { + var user = this.lastAuthData; + if (user) + val = (user["provider"] === "anonymous"); + else + val = false; + } + else + { + var user = getAuthObj()["currentUser"]; + val = user && user["isAnonymous"]; + } + + return val; + }, + + OnLoginSuccessful() + { + return true; + }, + + OnLoginError() + { + return true; + }, + + OnLoggedOut() + { + return true; + }, + + IsLogin() + { + if (!isFirebase3x()) + return (this.lastAuthData != null); + else + return (getAuthObj()["currentUser"] != null); + }, + + OnLoginByOther() + { + return true; + }, + + OnLoggedOutByOther() + { + return true; + }, + + OnLinkSuccessful() + { + return true; + }, + + OnLinkError() + { + return true; + } + + + }; +} \ No newline at end of file diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/c3runtime/expressions.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/c3runtime/expressions.js new file mode 100755 index 0000000..9f6e963 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/c3runtime/expressions.js @@ -0,0 +1,165 @@ +"use strict"; + +{ + C3.Plugins.Rex_Firebase_Authentication.Exps = + { + ErrorCode() + { + // 2.x , 3.x + var val = (!this.lastError)? "": this.lastError["code"]; + return (val || ""); + }, + + ErrorMessage() + { + // 2.x , 3.x + var val = (!this.lastError)? "": this.lastError["message"]; + return (val || ""); + }, + + UserID() + { + return (this.getCurrentUserID() || ""); + }, + Provider() + { + var pid; + // 2.x + if (!isFirebase3x()) + { + pid = (!this.lastAuthData)? "": this.lastAuthData["provider"]; + } + + // 3.x + else + { + pid = getProviderProperty3x("providerId"); + } + return (pid); + }, + + DisplayName() + { + var name; + // 2.x + if (!isFirebase3x()) + { + name = getProviderProperty(this.lastAuthData, "displayName"); + } + + // 3.x + else + { + name = getUserProperty3x("displayName"); + } + return (name || ""); + }, + UserIDFromProvider() + { + var uid; + // 2.x + if (!isFirebase3x()) + { + uid = getProviderProperty(this.lastAuthData, "id"); + } + + // 3.x + else + { + uid = getProviderProperty3x("uid"); + } + return (uid || ""); + }, + AccessToken() + { + var token; + // 2.x + if (!isFirebase3x()) + { + token = getProviderProperty(this.lastAuthData, "accessToken"); + } + + // 3.x + else + { + if (this.lastLoginResult && this.lastLoginResult["credential"]) + token = this.lastLoginResult["credential"]["accessToken"]; + } + return (token || ""); + }, + CachedUserProfile() + { + var profile; + // 2.x + if (!isFirebase3x()) + { + profile = getProviderProperty(this.lastAuthData, "cachedUserProfile"); + } + + // 3.x + else + { + alert("CachedUserProfile had not implemented in firebase 3.x"); + } + // ?? + return ( profile || "" ); + }, + Email() + { + var email; + // 2.x + if ((!isFirebase3x())) + { + email = getProviderProperty(this.lastAuthData, "email"); + } + + // 3.x + else + { + email = getProviderProperty3x("email"); + } + return (email || ""); + }, + UserName() + { + var name; + // 2.x + if (!isFirebase3x()) + { + name = getProviderProperty(this.lastAuthData, "username"); + } + + // 3.x + else + { + name = getUserProperty3x("displayName"); + } + + return (name || ""); + }, + ErrorDetail() + { + // 2.x , 3.x + var val = (!this.lastError)? "": this.lastError["detail"]; + if (val == null) + val = ""; + return (val); + }, + PhotoURL() + { + var photoUrl; + // 2.x + if (!isFirebase3x()) + { + photoUrl = ""; + } + + // 3.x + else + { + photoUrl = getProviderProperty3x("photoURL"); + } + return (photoUrl || ""); + } + }; +} \ No newline at end of file diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/c3runtime/instance.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/c3runtime/instance.js new file mode 100755 index 0000000..f9c5dae --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/c3runtime/instance.js @@ -0,0 +1,137 @@ +"use strict"; + +{ + C3.Plugins.Rex_Firebase_Authentication.Instance = class Rex_Firebase_AuthenticationInstance extends C3.SDKInstanceBase + { + constructor(inst, properties) + { + super(inst); + // Initialise object properties + if (properties) // note properties may be null in some cases + { + this.rootpath = properties[0]; + } + this.isMyLoginCall = false; + this.isMyLogOutCall = false; + this.lastError = null; + this.lastAuthData = null; // only used in 2.x + this.lastLoginResult = null; // only used in 3.x + + var self=this; + var setupFn = function () + { + self.setOnLogoutHandler(); + } + window.FirebaseAddAfterInitializeHandler(setupFn); + + + window.FirebaseGetCurrentUserID = function() + { + return self.getCurrentUserID(); + }; + + + + } + + Release() + { + super.Release(); + } + + SaveToJson() + { + return { + // data to be saved for savegames + }; + } + + LoadFromJson(o) + { + // load state for savegames + } + Oncreate() + { + + } + get_ref(k) + { + if (k == null) + k = ""; + + var path; + if (k.substring(0,8) == "https://") + path = k; + else + path = this.rootpath + k + "/"; + + return new window["Firebase"](path); + } + setOnLogoutHandler() + { + var self = this; + var onAuthStateChanged = function (authData) + { + if (authData) + { + // user authenticated with Firebase + //console.log("User ID: " + authData.uid + ", Provider: " + authData.provider); + + var isMyLoginCall = self.isMyLoginCall && !self.isMyLogOutCall; + self.lastError = null; + self.lastAuthData = authData; + + if (!isMyLoginCall) + self.Trigger(C3.Plugins.Rex_Firebase_Authentication.Cnds.OnLoginByOther, self); + else + { + self.isMyLoginCall = false; + self.Trigger(C3.Plugins.Rex_Firebase_Authentication.Cnds.OnLoginSuccessful, self); + } + + } + else + { + var isMyLogOutCall = self.isMyLogOutCall; + self.isMyLogOutCall = false; + self.lastAuthData = null; + self.lastLoginResult = null; + + // user is logged out + if (!isMyLogOutCall) + self.Trigger(C3.Plugins.Rex_Firebase_Authentication.Cnds.OnLoggedOutByOther, self); + else + self.Trigger(C3.Plugins.Rex_Firebase_Authentication.Cnds.OnLoggedOut, self); + + } + }; + + // 2.x + if (!isFirebase3x()) + { + this.lastAuthData = this.get_ref()["getAuth"](); + this.get_ref()["onAuth"](onAuthStateChanged); + } + + // 3.x + else + { + getAuthObj()["onAuthStateChanged"](onAuthStateChanged); + } + } + + getCurrentUserID() + { + var uid; + // 2.x + if (!isFirebase3x()) + uid = (this.lastAuthData)? this.lastAuthData["uid"]:""; + + // 3.x + else + uid = getUserProperty3x("uid"); + + return uid; + } + }; +} \ No newline at end of file diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/c3runtime/plugin.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/c3runtime/plugin.js new file mode 100755 index 0000000..edc9de6 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/c3runtime/plugin.js @@ -0,0 +1,153 @@ +"use strict"; + var isFirebase3x = function() + { + return (window["FirebaseV3x"] === true); + }; + + // 2.x + + // 3.x + var getAuthObj = function() + { + return window["Firebase"]["auth"](); + }; + + //acts var + // 2.x + var getHandler2x = function(self, successTrig, errorTrig) + { + var handler = function(error, authData) + { + self.lastError = error; + self.lastAuthData = authData; + if (error == null) + { + // get auth data by expression:UserID, and expression:Provider + self.Trigger(successTrig, self); + } + else + { + // get error message by expression:ErrorCode and expression:ErrorMessage + self.Trigger(errorTrig, self); + } + }; + return handler; + }; + + var getLoginHandler2x = function(self) + { + var handler = function(error, authData) + { + self.lastError = error; + self.lastAuthData = authData; + if (error == null) + { + // self.isMyLoginCall = false; // set it in onAuthStateChanged + // get auth data by expression:UserID, and expression:Provider + self.Trigger(C3.Plugins.Rex_Firebase_Authentication.Cnds.OnLoginSuccessful, self); + } + else + { + self.isMyLoginCall = false; + // get error message by expression:ErrorCode and expression:ErrorMessage + self.Trigger(C3.Plugins.Rex_Firebase_Authentication.Cnds.OnLoginError, self); + } + }; + self.isMyLoginCall = true; + return handler; + }; + + // 3.x + var addHandler = function (self, authObj, successTrig, errorTrig) + { + var onSuccess = function (result) + { + self.lastError = null; + self.lastAuthData = result; + if (successTrig) + self.Trigger(successTrig, self); + }; + var onError = function (error) + { + self.lastError = error; + self.lastAuthData = null; + if (errorTrig) + self.Trigger(errorTrig, self); + }; + authObj["then"](onSuccess)["catch"](onError); + }; + + var addLoginHandler = function (self, authObj) + { + var onSuccess = function (result) + { + self.lastLoginResult = result; + }; + var onError = function (error) + { + self.isMyLoginCall = false; + self.lastError = error; + self.lastLoginResult = null; + self.Trigger(C3.Plugins.Rex_Firebase_Authentication.Cnds.OnLoginError, self); + }; + self.isMyLoginCall = true; + authObj["then"](onSuccess)["catch"](onError); + }; + var PRESISTING_TYPE = ["default", "sessionOnly", "never"]; + var PROVIDER_TYPE2x = ["facebook", "twitter", "github", "google"]; + // 3.x + var capitalizeFirstLetter = function (s) + { + return s.charAt(0).toUpperCase() + s.slice(1); + }; + //exps + // 2.x + var getProviderProperty = function (authData, p) + { + if (authData == null) + return ""; + + var provide_type = authData["provider"]; + var provider_info = authData[provide_type]; + if (provider_info == null) + return ""; + + var val = provider_info[p]; + if (val == null) + val = ""; + + return val; + }; + + // 3.x + var getUserProperty3x = function(p) + { + var user = getAuthObj()["currentUser"]; + return (user)? user[p]:""; + }; + var getProviderProperty3x = function (p, idx) + { + var user = getAuthObj()["currentUser"]; + if (!user) + return ""; + + if (idx == null) idx = 0; + var providerData = user["providerData"][idx]; + var val = (providerData)? providerData[p]:""; + return val; + }; + +{ + C3.Plugins.Rex_Firebase_Authentication = class Rex_Firebase_AuthenticationPlugin extends C3.SDKPluginBase + { + constructor(opts) + { + super(opts); + } + + Release() + { + super.Release(); + } + }; +} \ No newline at end of file diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/c3runtime/type.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/c3runtime/type.js new file mode 100755 index 0000000..1826103 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/c3runtime/type.js @@ -0,0 +1,20 @@ +"use strict"; + +{ + C3.Plugins.Rex_Firebase_Authentication.Type = class Rex_Firebase_AuthenticationType extends C3.SDKTypeBase + { + constructor(objectClass) + { + super(objectClass); + } + + Release() + { + super.Release(); + } + + OnCreate() + { + } + }; +} \ No newline at end of file diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/icon.png b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_authentication/source/icon.png new file mode 100755 index 0000000000000000000000000000000000000000..960c98bda6a4494904ad90981a56abb8e4959790 GIT binary patch literal 9662 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
=i)X%$EG5V_1n<2s~Ei-{f*?`U7~7*&nHc-TaY zVwAR~5&dl_>FTyvpnNEdQdytXD=wjm>b7r7Wb7_|--ISG51<-^yBrIeh9yV{y?dE0 zZiT7VLn;VSiwTga9p%4lUUibD?IaoB&~fpmjK&=a;>dHf&MH~-(3(iK2R-T7Q+?V$ zK$hNb4wu79c5a}5YO*Ihw1$WTC!N(1cy#EKW4(B-tuG)dbCt7WLLFl|1}n_f>-LR?aUE2$QsOP?+?L}Q zl|4_Ib+D}!XUbWc+|}bru7f&hdF;y6>=QCF!MM9YshWqRulV=qSjDJxc7*!noEri! zB2=1PKVNA(PLxmfek#b;5T7~4OI+Sr33_>7OR2V%skSPY)N6Gr_Rj1^2urfELm8b+sSYK|Utvb?0rfcKr51#Xr7ydNTf$dZauE{_prRS`2x zkEn*Y9j{h7aXY=%#9Hkrre$|nmwF2Wv#fP`d>Tr15l1wq70+Ax;SReaEw2n|fuSFi z5xE%s$J=4s#-!>ZodnJZw!k;79ao%?8cd#c_=E!!(xIMg0xTW+w2lKNLnahUe;67h z5=`!g=d|f1byAQ920;V;=b;ebI|*nYxaa@)<0Ehw@bVkr*$~v<&xU@50Bre(`3V9C z^ce!+dBv|7|DM17gdzA24Ctq)0#JWH6#(S%B5DA(qM`o8W9TOgz-I%0GJ26a{zUte z(XZOi&y3!}KQsEf2SiolPew2L4>>0rT06q+mK>=L)Uz$UH4+zMV7yvLo-~;NvPWxHk`?lryFBb)XR|tSd^)LVtACM?OZty3~m-{O~nlE60ON##!%~ZnQ z(ENYmz8E;5HjV^BnbzA_b`~Xwp-%$L2puTu9z=;ETp!@(a5&+bn z^z484XD=QWP{M!$;CL87KnesPBL6wdf4u6Sru`yy09Np@KOt05JtF`LAAf?p2p@o6 z?AOX291ukCgc|6t(*NJ%#LIBNyb}R%cmN5_e})6f0Dtm$3HgAh>LpDD%pU+9@?k(5 xBM@NH`X|Io(h3Oi!UZriL;l2tp9Scjv;&X>IK)e2#(w^GJm0QSu)h5D{{a(Pfg1n- literal 0 HcmV?d00001 diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/aces.json b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/aces.json new file mode 100755 index 0000000..7cc5cae --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/aces.json @@ -0,0 +1,222 @@ +{ + "domain": { + "conditions": [ + ], + "actions": [ + { + "c2id": 0, + "id": "setdomainref0", + "scriptName": "SetDomainRef", + "highlight": false, + "params": [ + {"id":"domain0", "type":"string", "initialValue":"\"\""}, + {"id":"sub_domain1", "type":"string", "initialValue":"\"\""} + ] + } + ], + "expressions": [ + ] + }, + "update": { + "conditions": [ + { + "c2id": 1, + "id": "onupdate1", + "scriptName": "OnUpdate", + "isTrigger": "true", + "highlight": false + } + ], + "actions": [ + { + "c2id": 1, + "id": "startupdate1", + "scriptName": "StartUpdate", + "highlight": false + }, + { + "c2id": 2, + "id": "stopupdate2", + "scriptName": "StopUpdate", + "highlight": false + } + ], + "expressions": [ + ] + }, + "configure": { + "conditions": [ + ], + "actions": [ + { + "c2id": 3, + "id": "setınit3", + "scriptName": "SetInit", + "highlight": false, + "params": [ + {"id":"ınit0", "type":"number", "initialValue":"0"}, + {"id":"upper_bound1", "type":"any", "initialValue":"\"\""} + ] + } + ], + "expressions": [ + ] + }, + "add": { + "conditions": [ + { + "c2id": 2, + "id": "onmywriting2", + "scriptName": "OnMyWriting", + "isTrigger": "true", + "highlight": false + }, + { + "c2id": 3, + "id": "comparelastwrotevalue3", + "scriptName": "CompareLastWroteValue", + "highlight": false, + "params": [ + {"id":"comparison0", "type":"cmp"}, + {"id":"value1", "type":"number"} + ] + }, + { + "c2id": 4, + "id": "comparelastvalue4", + "scriptName": "CompareLastValue", + "highlight": false, + "params": [ + {"id":"comparison0", "type":"cmp"}, + {"id":"value1", "type":"number"} + ] + }, + { + "c2id": 5, + "id": "onmywritingabort5", + "scriptName": "OnMyWritingAbort", + "isTrigger": "true", + "highlight": false + }, + { + "c2id": 6, + "id": "onmywritingerror6", + "scriptName": "OnMyWritingError", + "isTrigger": "true", + "highlight": false + } + ], + "actions": [ + { + "c2id": 11, + "id": "add11", + "scriptName": "Add", + "highlight": false, + "params": [ + {"id":"value0", "type":"any", "initialValue":"1"} + ] + } + ], + "expressions": [ + { + "c2id": 2, + "id": "lastwrotevalue2", + "expressionName": "LastWroteValue", + "scriptName": "LastWroteValue", + "highlight": false, + "returnType": "number" + }, + { + "c2id": 3, + "id": "lastaddedvalue3", + "expressionName": "LastAddedValue", + "scriptName": "LastAddedValue", + "highlight": false, + "returnType": "number" + } + ] + }, + "set": { + "conditions": [ + ], + "actions": [ + { + "c2id": 12, + "id": "forceset12", + "scriptName": "ForceSet", + "highlight": false, + "params": [ + {"id":"value0", "type":"number", "initialValue":"0"} + ] + } + ], + "expressions": [ + ] + }, + "custom_add": { + "conditions": [ + { + "c2id": 21, + "id": "onaddfn21", + "scriptName": "OnAddFn", + "isTrigger": "true", + "highlight": false, + "params": [ + {"id":"function0", "type":"string", "initialValue":"\"_\""} + ] + } + ], + "actions": [ + { + "c2id": 21, + "id": "customaddbyfn21", + "scriptName": "CustomAddByFn", + "highlight": false, + "params": [ + {"id":"function0", "type":"string", "initialValue":"\"_\""} + ] + }, + { + "c2id": 22, + "id": "customaddadd22", + "scriptName": "CustomAddAdd", + "highlight": false, + "params": [ + {"id":"value0", "type":"number", "initialValue":"1"} + ] + }, + { + "c2id": 23, + "id": "customaddabort23", + "scriptName": "CustomAddAbort", + "highlight": false + } + ], + "expressions": [ + { + "c2id": 21, + "id": "customaddın21", + "expressionName": "CustomAddIn", + "scriptName": "CustomAddIn", + "highlight": false, + "returnType": "number" + } + ] + }, + "counter": { + "conditions": [ + ], + "actions": [ + ], + "expressions": [ + { + "c2id": 1, + "id": "lastvalue1", + "expressionName": "LastValue", + "scriptName": "LastValue", + "highlight": false, + "returnType": "number" + } + ] + } +} diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/addon.json b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/addon.json new file mode 100755 index 0000000..89097bb --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/addon.json @@ -0,0 +1,26 @@ +{ + "is-c3-addon": true, + "type": "plugin", + "name": "Counter", + "id": "Rex_Firebase_Counter", + "version": "0.1.0.0", + "author": "Rex.Rainbow", + "website": "https://rexrainbow.github.io/C2RexDoc/c2rexpluginsACE/plugin_rex_firebase_counter.html", + "documentation": "https://rexrainbow.github.io/C2RexDoc/c2rexpluginsACE/plugin_rex_firebase_counter.html", + "description": "Counter to increase or decrease value.", + "editor-scripts": [ + "plugin.js", + "type.js", + "instance.js" + ], + "file-list": [ + "c2runtime/runtime.js", + "lang/en-US.json", + "aces.json", + "addon.json", + "icon.png", + "plugin.js", + "type.js", + "instance.js" + ] +} diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/c2runtime/runtime.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/c2runtime/runtime.js new file mode 100755 index 0000000..1fe4749 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/c2runtime/runtime.js @@ -0,0 +1,429 @@ +/* +- counter value +*/ +// ECMAScript 5 strict mode +"use strict"; + +assert2(cr, "cr namespace not created"); +assert2(cr.plugins_, "cr.plugins_ not created"); + +///////////////////////////////////// +// Plugin class +cr.plugins_.Rex_Firebase_Counter = function(runtime) +{ + this.runtime = runtime; +}; + +(function () +{ + var pluginProto = cr.plugins_.Rex_Firebase_Counter.prototype; + + ///////////////////////////////////// + // Object type class + pluginProto.Type = function(plugin) + { + this.plugin = plugin; + this.runtime = plugin.runtime; + }; + + var typeProto = pluginProto.Type.prototype; + + typeProto.onCreate = function() + { + }; + + ///////////////////////////////////// + // Instance class + pluginProto.Instance = function(type) + { + this.type = type; + this.runtime = type.runtime; + }; + + var instanceProto = pluginProto.Instance.prototype; + + instanceProto.onCreate = function() + { + this.rootpath = this.properties[0] + "/" + this.properties[1] + "/"; + this.set_init(this.properties[2], this.properties[3]); + + this.exp_LastTransactionIn = null; + this.exp_LastValue = this.init_value; + this.exp_MyLastWroteValue = null; + this.exp_MyLastAddedValue = 0; + + // custom add + this.onCustomAdd_cb = ""; + + + this.query = null; + this.read_value_handler = null; + }; + + instanceProto.onDestroy = function () + { + this.stop_update(); + }; + + instanceProto.set_init = function (init_value, upper_bound) + { + this.init_value = init_value; + if ((upper_bound == "") || (upper_bound == '""')) + upper_bound = null; + else if (typeof (upper_bound) == "string") + upper_bound = parseFloat(upper_bound); + + this.upper_bound = upper_bound; + this.set_range(this.init_value, this.upper_bound); + }; + + instanceProto.set_range = function(v0, v1) + { + if ((v0 == null) || (v1 == null)) + { + this.counter_max = null; + this.counter_min = null; + } + else + { + this.counter_max = Math.max(v0, v1); + this.counter_min = Math.min(v0, v1); + } + }; + + + instanceProto.has_bound = function() + { + return (this.upper_bound != null); + }; + + // 2.x , 3.x + var isFirebase3x = function() + { + return (window["FirebaseV3x"] === true); + }; + + var isFullPath = function (p) + { + return (p.substring(0,8) === "https://"); + }; + + instanceProto.get_ref = function(k) + { + if (k == null) + k = ""; + var path; + if (isFullPath(k)) + path = k; + else + path = this.rootpath + k + "/"; + + // 2.x + if (!isFirebase3x()) + { + return new window["Firebase"](path); + } + + // 3.x + else + { + var fnName = (isFullPath(path))? "refFromURL":"ref"; + return window["Firebase"]["database"]()[fnName](path); + } + + }; + + var get_key = function (obj) + { + return (!isFirebase3x())? obj["key"]() : obj["key"]; + }; + + var get_refPath = function (obj) + { + return (!isFirebase3x())? obj["ref"]() : obj["ref"]; + }; + + var get_root = function (obj) + { + return (!isFirebase3x())? obj["root"]() : obj["root"]; + }; + + var serverTimeStamp = function () + { + if (!isFirebase3x()) + return window["Firebase"]["ServerValue"]["TIMESTAMP"]; + else + return window["Firebase"]["database"]["ServerValue"]; + }; + + var get_timestamp = function (obj) + { + return (!isFirebase3x())? obj : obj["TIMESTAMP"]; + }; + // 2.x , 3.x + + instanceProto.clamp_result = function(current_value, wrote_value) + { + // no upper bound + if (!this.has_bound()) + return wrote_value; + + // has upper bound + // current value is equal to upper bound + else if (this.upper_bound == current_value) + return null; // Abort the transaction + + else + { + if (this.upper_bound > this.init_value) + { + if (wrote_value <= this.upper_bound) + return wrote_value; + else if (wrote_value > this.upper_bound) + return this.upper_bound; + else + return null; // Abort the transaction + } + else // (this.upper_bound < this.init_value) + { + if (wrote_value >= this.upper_bound) + return wrote_value; + else if (wrote_value < this.upper_bound) + return this.upper_bound; + else + return null; // Abort the transaction + } + } + }; + + instanceProto.on_transaction_complete = function(error, committed, snapshot) + { + if (error) + { + this.runtime.trigger(cr.plugins_.Rex_Firebase_Counter.prototype.cnds.OnMyWritingError, this); + } + else if (!committed) + { + this.runtime.trigger(cr.plugins_.Rex_Firebase_Counter.prototype.cnds.OnMyWritingAbort, this); + } + else + { + this.exp_MyLastWroteValue = snapshot["val"](); + this.exp_MyLastAddedValue = this.exp_MyLastWroteValue - this.exp_LastTransactionIn; + this.runtime.trigger(cr.plugins_.Rex_Firebase_Counter.prototype.cnds.OnMyWriting, this); + } + }; + + instanceProto.start_update = function () + { + this.stop_update(); + + var self = this; + var on_read = function (snapshot) + { + var counter_value = snapshot["val"](); + if (counter_value == null) + counter_value = self.init_value; + + self.exp_LastValue = counter_value; + self.runtime.trigger(cr.plugins_.Rex_Firebase_Counter.prototype.cnds.OnUpdate, self); + }; + + var query = this.get_ref(); + query["on"]("value", on_read); + + this.query = query; + this.read_value_handler = on_read; + }; + + instanceProto.stop_update = function () + { + if (this.query) + { + this.query["off"]("value", this.read_value_handler); + this.read_value_handler = null; + //this.get_ref()["off"](); + this.query = null; + } + }; + ////////////////////////////////////// + // Conditions + function Cnds() {}; + pluginProto.cnds = new Cnds(); + + Cnds.prototype.OnUpdate = function () + { + return true; + }; + + Cnds.prototype.OnMyWriting = function () + { + return true; + }; + + Cnds.prototype.CompareLastWroteValue = function (cmp, s) + { + if (this.exp_MyLastWroteValue == null) + return false; + return cr.do_cmp(this.exp_MyLastWroteValue, cmp, s); + }; + + Cnds.prototype.CompareLastValue = function (cmp, s) + { + return cr.do_cmp(this.exp_LastValue, cmp, s); + }; + + Cnds.prototype.OnMyWritingAbort = function () + { + return true; + }; + + Cnds.prototype.OnAddFn = function (cb) + { + return cr.equals_nocase(cb, this.onCustomAdd_cb); + }; + + Cnds.prototype.OnMyWritingError = function () + { + return true; + }; + + ////////////////////////////////////// + // Actions + function Acts() {}; + pluginProto.acts = new Acts(); + + Acts.prototype.SetDomainRef = function (domain_ref, sub_domain_ref) + { + this.rootpath = domain_ref + "/" + sub_domain_ref + "/"; + }; + + Acts.prototype.StartUpdate = function () + { + this.start_update(); + }; + + Acts.prototype.StopUpdate = function () + { + this.stop_update(); + }; + + Acts.prototype.SetInit = function (init_value, upper_bound) + { + this.set_init(init_value, upper_bound); + }; + + Acts.prototype.Add = function (value_) + { + var is_numbe = typeof(value_) == "number"; + var self = this; + + var get_value = function(value_, current_value) + { + if (is_numbe) + return value_; + + return (parseFloat(value_)/100 * current_value); + }; + + var on_complete = function(error, committed, snapshot) + { + self.on_transaction_complete(error, committed, snapshot) ; + }; + + var on_add = function (current_value) + { + if (current_value == null) + current_value = self.init_value; + + self.exp_LastTransactionIn = current_value; + var added_value = get_value(value_, current_value); + var wrote_value = current_value + added_value; + var result = self.clamp_result(current_value, wrote_value); + if (result == null) + return; // Abort the transaction + else + return result; + }; + this.get_ref()["transaction"](on_add, on_complete); + }; + + Acts.prototype.ForceSet = function (value_) + { + this.get_ref()["set"](value_); + }; + + Acts.prototype.CustomAddByFn = function (cb) + { + var self = this; + + var on_complete = function(error, committed, snapshot) + { + self.on_transaction_complete(error, committed, snapshot) ; + }; + + var get_value = function (current_value) + { + self.exp_LastTransactionIn = current_value; + self.transactionOut = null; + self.onCustomAdd_cb = cb; + self.runtime.trigger(cr.plugins_.Rex_Firebase_Counter.prototype.cnds.OnAddFn, self); + return self.transactionOut; + }; + + var on_add = function (current_value) + { + if (current_value == null) + current_value = self.init_value; + + var added_value = get_value(current_value); + if (added_value == null) + return; // Abort the transaction + + var wrote_value = current_value + added_value; + var result = self.clamp_result(current_value, wrote_value); + if (result == null) + return; // Abort the transaction + else + return result; + }; + this.get_ref()["transaction"](on_add, on_complete); + }; + + Acts.prototype.CustomAddAdd = function (value_) + { + this.transactionOut = value_; + }; + + Acts.prototype.CustomAddAbort = function () + { + this.transactionOut = null; + }; + + + ////////////////////////////////////// + // Expressions + function Exps() {}; + pluginProto.exps = new Exps(); + + Exps.prototype.LastValue = function (ret) + { + ret.set_float(this.exp_LastValue); + }; + + Exps.prototype.LastWroteValue = function (ret) + { + ret.set_float(this.exp_MyLastWroteValue || 0); + }; + + Exps.prototype.LastAddedValue = function (ret) + { + ret.set_float(this.exp_MyLastAddedValue); + }; + + Exps.prototype.CustomAddIn = function (ret) + { + ret.set_float(this.exp_LastTransactionIn); + }; + +}()); \ No newline at end of file diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/c3runtime/actions.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/c3runtime/actions.js new file mode 100755 index 0000000..b1636f3 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/c3runtime/actions.js @@ -0,0 +1,115 @@ +"use strict"; + +{ + C3.Plugins.Rex_Firebase_Counter.Acts = + { + SetDomainRef(domain_ref, sub_domain_ref) + { + this.rootpath = domain_ref + "/" + sub_domain_ref + "/"; + }, + + StartUpdate() + { + this.start_update(); + }, + + StopUpdate() + { + this.stop_update(); + }, + + SetInit(init_value, upper_bound) + { + this.set_init(init_value, upper_bound); + }, + + Add(value_) + { + var is_numbe = typeof(value_) == "number"; + var self = this; + + var get_value = function(value_, current_value) + { + if (is_numbe) + return value_; + + return (parseFloat(value_)/100 * current_value); + }; + + var on_complete = function(error, committed, snapshot) + { + self.on_transaction_complete(error, committed, snapshot) ; + }; + + var on_add = function (current_value) + { + if (current_value == null) + current_value = self.init_value; + + self.exp_LastTransactionIn = current_value; + var added_value = get_value(value_, current_value); + var wrote_value = current_value + added_value; + var result = self.clamp_result(current_value, wrote_value); + if (result == null) + return; // Abort the transaction + else + return result; + }; + this.get_ref()["transaction"](on_add, on_complete); + }, + + ForceSet(value_) + { + this.get_ref()["set"](value_); + }, + + CustomAddByFn(cb) + { + var self = this; + + var on_complete = function(error, committed, snapshot) + { + self.on_transaction_complete(error, committed, snapshot) ; + }; + + var get_value = function (current_value) + { + self.exp_LastTransactionIn = current_value; + self.transactionOut = null; + self.onCustomAdd_cb = cb; + self.Trigger(C3.Plugins.Rex_Firebase_Counter.Cnds.OnAddFn); + return self.transactionOut; + }; + + var on_add = function (current_value) + { + if (current_value == null) + current_value = self.init_value; + + var added_value = get_value(current_value); + if (added_value == null) + return; // Abort the transaction + + var wrote_value = current_value + added_value; + var result = self.clamp_result(current_value, wrote_value); + if (result == null) + return; // Abort the transaction + else + return result; + }; + this.get_ref()["transaction"](on_add, on_complete); + }, + + CustomAddAdd(value_) + { + this.transactionOut = value_; + }, + + CustomAddAbort() + { + this.transactionOut = null; + } + + + }; +} \ No newline at end of file diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/c3runtime/conditions.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/c3runtime/conditions.js new file mode 100755 index 0000000..be693a0 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/c3runtime/conditions.js @@ -0,0 +1,43 @@ +"use strict"; + +{ + C3.Plugins.Rex_Firebase_Counter.Cnds = + { + OnUpdate() + { + return true; + }, + + OnMyWriting() + { + return true; + }, + + CompareLastWroteValue(cmp, s) + { + if (this.exp_MyLastWroteValue == null) + return false; + return do_cmp(this.exp_MyLastWroteValue, cmp, s); + }, + + CompareLastValue(cmp, s) + { + return do_cmp(this.exp_LastValue, cmp, s); + }, + + OnMyWritingAbort() + { + return true; + }, + + OnAddFn(cb) + { + return C3.equalsNoCase(cb, this.onCustomAdd_cb); + }, + + OnMyWritingError() + { + return true; + } + }; +} \ No newline at end of file diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/c3runtime/expressions.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/c3runtime/expressions.js new file mode 100755 index 0000000..9542530 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/c3runtime/expressions.js @@ -0,0 +1,26 @@ +"use strict"; + +{ + C3.Plugins.Rex_Firebase_Counter.Exps = + { + LastValue() + { + return (this.exp_LastValue); + }, + + LastWroteValue() + { + return (this.exp_MyLastWroteValue || 0); + }, + + LastAddedValue() + { + return (this.exp_MyLastAddedValue); + }, + + CustomAddIn() + { + return (this.exp_LastTransactionIn); + } + }; +} \ No newline at end of file diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/c3runtime/instance.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/c3runtime/instance.js new file mode 100755 index 0000000..a0b5ede --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/c3runtime/instance.js @@ -0,0 +1,196 @@ +"use strict"; + +{ + C3.Plugins.Rex_Firebase_Counter.Instance = class Rex_Firebase_CounterInstance extends C3.SDKInstanceBase + { + constructor(inst, properties) + { + super(inst); + + // Initialise object properties + if (properties) // note properties may be null in some cases + { + this.rootpath = properties[0] + "/" + properties[1] + "/"; + this.set_init(properties[2], properties[3]); + } + + + this.exp_LastTransactionIn = null; + this.exp_LastValue = this.init_value; + this.exp_MyLastWroteValue = null; + this.exp_MyLastAddedValue = 0; + + // custom add + this.onCustomAdd_cb = ""; + + + this.query = null; + this.read_value_handler = null; + + } + + Release() + { + super.Release(); + } + + SaveToJson() + { + return { + // data to be saved for savegames + }; + } + + LoadFromJson(o) + { + // load state for savegames + } + OnDestroyed() + { + this.stop_update(); + } + set_init (init_value, upper_bound) + { + this.init_value = init_value; + if ((upper_bound == "") || (upper_bound == '""')) + upper_bound = null; + else if (typeof (upper_bound) == "string") + upper_bound = parseFloat(upper_bound); + + this.upper_bound = upper_bound; + this.set_range(this.init_value, this.upper_bound); + } + + set_range(v0, v1) + { + if ((v0 == null) || (v1 == null)) + { + this.counter_max = null; + this.counter_min = null; + } + else + { + this.counter_max = Math.max(v0, v1); + this.counter_min = Math.min(v0, v1); + } + } + + has_bound() + { + return (this.upper_bound != null); + } + get_ref(k) + { + if (k == null) + k = ""; + var path; + if (isFullPath(k)) + path = k; + else + path = this.rootpath + k + "/"; + + // 2.x + if (!isFirebase3x()) + { + return new window["Firebase"](path); + } + + // 3.x + else + { + var fnName = (isFullPath(path))? "refFromURL":"ref"; + return window["Firebase"]["database"]()[fnName](path); + } + + } + + + // 2.x , 3.x + + clamp_result(current_value, wrote_value) + { + // no upper bound + if (!this.has_bound()) + return wrote_value; + + // has upper bound + // current value is equal to upper bound + else if (this.upper_bound == current_value) + return null; // Abort the transaction + + else + { + if (this.upper_bound > this.init_value) + { + if (wrote_value <= this.upper_bound) + return wrote_value; + else if (wrote_value > this.upper_bound) + return this.upper_bound; + else + return null; // Abort the transaction + } + else // (this.upper_bound < this.init_value) + { + if (wrote_value >= this.upper_bound) + return wrote_value; + else if (wrote_value < this.upper_bound) + return this.upper_bound; + else + return null; // Abort the transaction + } + } + } + + on_transaction_complete(error, committed, snapshot) + { + if (error) + { + this.Trigger(C3.Plugins.Rex_Firebase_Counter.Cnds.OnMyWritingError); + } + else if (!committed) + { + this.Trigger(C3.Plugins.Rex_Firebase_Counter.Cnds.OnMyWritingAbort); + } + else + { + this.exp_MyLastWroteValue = snapshot["val"](); + this.exp_MyLastAddedValue = this.exp_MyLastWroteValue - this.exp_LastTransactionIn; + this.Trigger(C3.Plugins.Rex_Firebase_Counter.Cnds.OnMyWriting); + } + } + + start_update () + { + this.stop_update(); + + var self = this; + var on_read = function (snapshot) + { + var counter_value = snapshot["val"](); + if (counter_value == null) + counter_value = self.init_value; + + self.exp_LastValue = counter_value; + self.Trigger(C3.Plugins.Rex_Firebase_Counter.Cnds.OnUpdate); + }; + + var query = this.get_ref(); + query["on"]("value", on_read); + + this.query = query; + this.read_value_handler = on_read; + } + + stop_update() + { + if (this.query) + { + this.query["off"]("value", this.read_value_handler); + this.read_value_handler = null; + //this.get_ref()["off"](); + this.query = null; + } + } + + }; +} \ No newline at end of file diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/c3runtime/plugin.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/c3runtime/plugin.js new file mode 100755 index 0000000..029441a --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/c3runtime/plugin.js @@ -0,0 +1,77 @@ +"use strict"; + var do_cmp = function (x, cmp, y) + { + if (typeof x === "undefined" || typeof y === "undefined") + return false; + switch (cmp) + { + case 0: // equal + return x === y; + case 1: // not equal + return x !== y; + case 2: // less + return x < y; + case 3: // less/equal + return x <= y; + case 4: // greater + return x > y; + case 5: // greater/equal + return x >= y; + default: + return false; + } + }; + // 2.x , 3.x + var isFirebase3x = function() + { + return (window["FirebaseV3x"] === true); + }; + + var isFullPath = function (p) + { + return (p.substring(0,8) === "https://"); + }; + + var get_key = function (obj) + { + return (!isFirebase3x())? obj["key"]() : obj["key"]; + }; + + var get_refPath = function (obj) + { + return (!isFirebase3x())? obj["ref"]() : obj["ref"]; + }; + + var get_root = function (obj) + { + return (!isFirebase3x())? obj["root"]() : obj["root"]; + }; + + var serverTimeStamp = function () + { + if (!isFirebase3x()) + return window["Firebase"]["ServerValue"]["TIMESTAMP"]; + else + return window["Firebase"]["database"]["ServerValue"]; + }; + + var get_timestamp = function (obj) + { + return (!isFirebase3x())? obj : obj["TIMESTAMP"]; + }; + // 2.x , 3.x + +{ + C3.Plugins.Rex_Firebase_Counter = class Rex_Firebase_CounterPlugin extends C3.SDKPluginBase + { + constructor(opts) + { + super(opts); + } + + Release() + { + super.Release(); + } + }; +} \ No newline at end of file diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/c3runtime/type.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/c3runtime/type.js new file mode 100755 index 0000000..8951d04 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/c3runtime/type.js @@ -0,0 +1,20 @@ +"use strict"; + +{ + C3.Plugins.Rex_Firebase_Counter.Type = class Rex_Firebase_CounterType extends C3.SDKTypeBase + { + constructor(objectClass) + { + super(objectClass); + } + + Release() + { + super.Release(); + } + + OnCreate() + { + } + }; +} \ No newline at end of file diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/icon.png b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/icon.png new file mode 100755 index 0000000000000000000000000000000000000000..9220dcfe59a556f295eaa1825cddba31fbb18fd1 GIT binary patch literal 4286 zcmd^=c}$c?7{(VAb{C-@oG!~D0wS=0P?a+rqAVy17Hthuyh4RWltX9*t5^+5o3yni zCblNF)LN}+N>wx(bTt|+6*1a^O2M;L4x!WoL4l{w&@NfF1eZ$x^4-w1J9GkWEXKEgV{)S zdXjWfMua{{6WK|YkfB7PI78vbCq(#eB6*&fa==(pNVNOE#(Dw~+9E~_wf~|o))pGs zM5|xJy71*tv^l&thKIU;F;7=t`2PwSOy7w8;_3*{BZF-*x04(q^N8*kZ?-Lnz7191 zgbN6*2jowkQpDXe(oMuWh#1!Pi?NqU7|}OfeKGfW{ulbIh|qefS8C5ttfSj6>a`@C z=$o#-A^so11!Bn_Jx;LQLPY*vCkKe`m`~Ui`KE6})fe-{9FaS^h0)1R+xzbyHu-LHNr_FqZFUH%1`NCq==c8W6!BqBDnu{)su$J<(+ zn!GqeGpDXylkpImwSPcU&`MgM$s+yz$Dv>^FV1s3i- zfd$8^5q0GulqIFGmrEg&nFtMC8_7lxIZRshs9;;L|`Tj=kKSlgMTlMnP*%eE`& zmn%-*DnyqY!lK>ZATcu&iK(fWGd~egGouk27K*@-U`!7SL$F$n=w-{0u=_iNA2|mb zGdZNDCi?nZzBf0mS=#Gi%eIvCvk9&f5i)lkRDOO4j8B4kbphsW{16FSwj#cGE8;eP zgxGak5Sf+*-^dvFObE)tUI#29L3|&(qd!71)&er=$bs_TQ0d-r3U7b-pKC(Y z&p>Qd4-zf{Z(gG|@4_O++6I>S)XbzWQdtk7U+j*Yg<{-j$cI7S*~0vKLSpGLgot;W76dm>FSvMkz{SlS3MXgCOijQ8)c^hs>FmW| o^jg~pfJn7;u-?TBrb~KK655ZOY-{^Cp5K$3I<$=zD-MOf0HKs4ApigX literal 0 HcmV?d00001 diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/instance.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/instance.js new file mode 100755 index 0000000..cea5dbc --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/instance.js @@ -0,0 +1,30 @@ +"use strict"; + +{ + const PLUGIN_CLASS = SDK.Plugins.Rex_Firebase_Counter; + + PLUGIN_CLASS.Instance = class Rex_Firebase_CounterInstance extends SDK.IInstanceBase + { + constructor(sdkType, inst) + { + super(sdkType, inst); + } + Release() + { + } + OnCreate() + { + } + OnDestroyed() + { + + } + OnPropertyChanged(id, value) + { + } + LoadC2Property(name, valueString) + { + return false; // not handled + } + }; +} diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/lang/en-US.json b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/lang/en-US.json new file mode 100755 index 0000000..2b309bd --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/lang/en-US.json @@ -0,0 +1,173 @@ +{ + "languageTag": "en-US", + "fileDescription": "Strings for Counter.", + "text": { + "plugins": { + "rex_firebase_counter": { + "name": "Counter", + "description": "Counter to increase or decrease value.", + "help-url": "https://rexrainbow.github.io/C2RexDoc/c2rexpluginsACE/plugin_rex_firebase_counter.html", + "properties": { + "domain": { + "name": "Domain", + "desc": "The root location of the Firebase data." + }, + "sub-domain": { + "name": "Sub domain", + "desc": "Sub domain for this function." + }, + "ınitial": { + "name": "Initial", + "desc": "Initial value if counter value is null." + }, + "upper-bound": { + "name": "Upper bound", + "desc": "Upper bound of counter, \"\" is none. Counter value will be clamped at upper bound." + } + }, + "aceCategories": { + "domain": "Domain", + "update": "Update", + "configure": "Configure", + "add": "Add", + "set": "Set", + "custom_add": "Custom add", + "counter": "Counter" + }, + "conditions": { + "onupdate1": { + "list-name": "On update", + "display-text": "On update", + "description": "Triggered when counter updated." + }, + "onmywriting2": { + "list-name": "On my writing", + "display-text": "On my writing", + "description": "Triggered when my writing successfully." + }, + "comparelastwrotevalue3": { + "list-name": "Compare my last wrote value", + "display-text": "My last wrote value {0} {1}", + "description": "Compare my last wrote value.", + "params": { + "comparison0": { "name":"Comparison", "desc":"Choose the way to compare my last wrote value."}, + "value1": { "name":"Value", "desc":"The value to compare my last wrote value to."} + } + }, + "comparelastvalue4": { + "list-name": "Compare last counter value", + "display-text": "Last counter value {0} {1}", + "description": "Compare last counter value.", + "params": { + "comparison0": { "name":"Comparison", "desc":"Choose the way to compare last counter value."}, + "value1": { "name":"Value", "desc":"The value to compare last counter value to."} + } + }, + "onmywritingabort5": { + "list-name": "On my writing abort", + "display-text": "On my writing abort", + "description": "Triggered when my writing abort." + }, + "onmywritingerror6": { + "list-name": "On my writing error", + "display-text": "On my writing error", + "description": "Triggered when my writing error." + }, + "onaddfn21": { + "list-name": "On custom add", + "display-text": "On custom add function: [i]{0}[/i]", + "description": "Custom add function.", + "params": { + "function0": { "name":"Function", "desc":"Function for increasing counter."} + } + } + }, + "actions": { + "setdomainref0": { + "list-name": "Set domain", + "display-text": "Set domain to [i]{0}[/i], sub domain to [i]{1}[/i]", + "description": "Set domain ref.", + "params": { + "domain0": { "name":"Domain", "desc":"The root location of the Firebase data."}, + "sub_domain1": { "name":"Sub domain", "desc":"Sub domain for this function."} + } + }, + "startupdate1": { + "list-name": "Start", + "display-text": "Start update", + "description": "Start update." + }, + "stopupdate2": { + "list-name": "Stop", + "display-text": "Stop update", + "description": "Stop update." + }, + "setınit3": { + "list-name": "Set boundaries", + "display-text": "Set initial value to [i]{0}[/i], upper bound to [i]{1}[/i]", + "description": "Set initial value and upper bound. \"\" is none.", + "params": { + "ınit0": { "name":"Init", "desc":"Initial value."}, + "upper_bound1": { "name":"Upper bound", "desc":"Upper bound value. \"\" is none."} + } + }, + "add11": { + "list-name": "Try add to", + "display-text": "Try add [i]{0}[/i]", + "description": "Try add to.", + "params": { + "value0": { "name":"Value", "desc":"Value to add. Positive or negative number, or \"+10%\" string based on current value."} + } + }, + "forceset12": { + "list-name": "Force set to", + "display-text": "Force set value to [i]{0}[/i]", + "description": "Force set value, it will cancel any pending adding action.", + "params": { + "value0": { "name":"Value", "desc":"Value to set."} + } + }, + "customaddbyfn21": { + "list-name": "Try add by function", + "display-text": "Try add by function: [i]{0}[/i]", + "description": "Try add by function.", + "params": { + "function0": { "name":"Function", "desc":"Function for increasing counter."} + } + }, + "customaddadd22": { + "list-name": "Add to", + "display-text": "Custom add: add [i]{0}[/i]", + "description": "Try add to, used under \"Condition:On custom add\".", + "params": { + "value0": { "name":"Value", "desc":"Value to add. Positive or negative number."} + } + }, + "customaddabort23": { + "list-name": "Abort", + "display-text": "Custom add:: abort", + "description": "Abort current action, used under \"Condition:On custom add\"." + } + }, + "expressions": { + "lastvalue1": { + "description": "Get last value. Return Init value if last value is null.", + "translated-name": "LastValue" + }, + "lastwrotevalue2": { + "description": "Get my last wrote value. Valid under \"condition:On my writing\".", + "translated-name": "LastWroteValue" + }, + "lastaddedvalue3": { + "description": "Get my last added value. Valid under \"condition:On my writing\".", + "translated-name": "LastAddedValue" + }, + "customaddın21": { + "description": "Get current value, used under \"Condition:On custom add\".", + "translated-name": "CustomAddIn" + } + } + } + } + } +} diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/plugin.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/plugin.js new file mode 100755 index 0000000..2d6f6ed --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/plugin.js @@ -0,0 +1,44 @@ +//Converted with C2C3AddonConverter v1.0.1.0 +"use strict"; + +{ + const PLUGIN_ID = "Rex_Firebase_Counter"; + const PLUGIN_VERSION = "0.1.0.0"; + const PLUGIN_CATEGORY = "web"; + + let app = null; + + const PLUGIN_CLASS = SDK.Plugins.Rex_Firebase_Counter = class Rex_Firebase_Counter extends SDK.IPluginBase + { + constructor() + { + super(PLUGIN_ID); + SDK.Lang.PushContext("plugins." + PLUGIN_ID.toLowerCase()); + this._info.SetIcon("icon.png", "image/png"); + this._info.SetName(lang(".name")); + this._info.SetDescription(lang(".description")); + this._info.SetVersion(PLUGIN_VERSION); + this._info.SetCategory(PLUGIN_CATEGORY); + this._info.SetAuthor("Rex.Rainbow"); + this._info.SetHelpUrl(lang(".help-url")); + this._info.SetIsSingleGlobal(false); + this._info.SetIsDeprecated(false); + this._info.SetSupportsEffects(false); + this._info.SetMustPreDraw(false); + this._info.SetCanBeBundled(false); + + this._info.SetSupportedRuntimes(["c2","c3"]); + + SDK.Lang.PushContext(".properties"); + this._info.SetProperties([ + new SDK.PluginProperty("text", "domain", ""), + new SDK.PluginProperty("text", "sub-domain", "Counter"), + new SDK.PluginProperty("float", "ınitial", 0), + new SDK.PluginProperty("text", "upper-bound", "") + ]); + SDK.Lang.PopContext(); // .properties + SDK.Lang.PopContext(); + } + }; + PLUGIN_CLASS.Register(PLUGIN_ID, PLUGIN_CLASS); +} diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/type.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/type.js new file mode 100755 index 0000000..55cdf42 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_counter/source/type.js @@ -0,0 +1,13 @@ +"use strict"; + +{ + const PLUGIN_CLASS = SDK.Plugins.Rex_Firebase_Counter; + + PLUGIN_CLASS.Type = class Rex_Firebase_CounterType extends SDK.ITypeBase + { + constructor(sdkPlugin, iObjectType) + { + super(sdkPlugin, iObjectType); + } + }; +} diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/dist/rex_firebase_curTime.c3addon b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/dist/rex_firebase_curTime.c3addon new file mode 100644 index 0000000000000000000000000000000000000000..70d45f8a505f17419327941bec3b6751df523778 GIT binary patch literal 19928 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 N0VEKRn$YvV{y&eR9RL6T literal 0 HcmV?d00001 diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/aces.json b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/aces.json new file mode 100755 index 0000000..6408447 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/aces.json @@ -0,0 +1,96 @@ +{ + "domain": { + "conditions": [ + ], + "actions": [ + { + "c2id": 0, + "id": "setdomainref0", + "scriptName": "SetDomainRef", + "highlight": false, + "params": [ + {"id":"domain0", "type":"string", "initialValue":"\"\""}, + {"id":"sub_domain1", "type":"string", "initialValue":"\"\""} + ] + } + ], + "expressions": [ + ] + }, + "control": { + "conditions": [ + ], + "actions": [ + { + "c2id": 1, + "id": "start1", + "scriptName": "Start", + "highlight": false, + "params": [ + {"id":"user_ıd0", "type":"string", "initialValue":"\"\""} + ] + }, + { + "c2id": 2, + "id": "stop2", + "scriptName": "Stop", + "highlight": false + } + ], + "expressions": [ + ] + }, + "updating": { + "conditions": [ + { + "c2id": 1, + "id": "ısupdating1", + "scriptName": "IsUpdating", + "highlight": false + }, + { + "c2id": 2, + "id": "onstart2", + "scriptName": "OnStart", + "isTrigger": "true", + "highlight": false + } + ], + "actions": [ + ], + "expressions": [ + ] + }, + "current": { + "conditions": [ + ], + "actions": [ + ], + "expressions": [ + { + "c2id": 1, + "id": "timestamp1", + "expressionName": "Timestamp", + "scriptName": "Timestamp", + "highlight": false, + "returnType": "number" + } + ] + }, + "error": { + "conditions": [ + ], + "actions": [ + ], + "expressions": [ + { + "c2id": 2, + "id": "lastpredictederror2", + "expressionName": "LastPredictedError", + "scriptName": "LastPredictedError", + "highlight": false, + "returnType": "number" + } + ] + } +} diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/addon.json b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/addon.json new file mode 100755 index 0000000..53ac2b4 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/addon.json @@ -0,0 +1,26 @@ +{ + "is-c3-addon": true, + "type": "plugin", + "name": "Current timestamp", + "id": "Rex_Firebase_CurTime", + "version": "0.1.0.0", + "author": "Rex.Rainbow", + "website": "http://c2rexplugins.weebly.com/rex_firebase_curTime.html", + "documentation": "http://c2rexplugins.weebly.com/rex_firebase_curTime.html", + "description": "Get server timestamp periodically.", + "editor-scripts": [ + "plugin.js", + "type.js", + "instance.js" + ], + "file-list": [ + "c2runtime/runtime.js", + "lang/en-US.json", + "aces.json", + "addon.json", + "icon.png", + "plugin.js", + "type.js", + "instance.js" + ] +} diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/c2runtime/runtime.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/c2runtime/runtime.js new file mode 100755 index 0000000..fb7b40d --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/c2runtime/runtime.js @@ -0,0 +1,226 @@ +/* +- counter value +*/ +// ECMAScript 5 strict mode +"use strict"; + +assert2(cr, "cr namespace not created"); +assert2(cr.plugins_, "cr.plugins_ not created"); + +///////////////////////////////////// +// Plugin class +cr.plugins_.Rex_Firebase_CurTime = function (runtime) { + this.runtime = runtime; +}; + +(function () { + var pluginProto = cr.plugins_.Rex_Firebase_CurTime.prototype; + + ///////////////////////////////////// + // Object type class + pluginProto.Type = function (plugin) { + this.plugin = plugin; + this.runtime = plugin.runtime; + }; + + var typeProto = pluginProto.Type.prototype; + + typeProto.onCreate = function () { + }; + + ///////////////////////////////////// + // Instance class + pluginProto.Instance = function (type) { + this.type = type; + this.runtime = type.runtime; + }; + + var instanceProto = pluginProto.Instance.prototype; + + instanceProto.onCreate = function () { + this.rootpath = this.properties[0] + "/" + this.properties[1] + "/"; + this.updatingPeriod = this.properties[2]; // seconds + this.timestamp_ref = null; + this.lastServerTimestamp = null; + this.lastLocalTimestamp = null; + this.lastPredictErr = 0; + }; + + instanceProto.onDestroy = function () { + }; + + // 2.x , 3.x + var isFirebase3x = function () { + return (window["FirebaseV3x"] === true); + }; + + var isFullPath = function (p) { + return (p.substring(0, 8) === "https://"); + }; + + instanceProto.get_ref = function (k) { + if (k == null) + k = ""; + var path; + if (isFullPath(k)) + path = k; + else + path = this.rootpath + k + "/"; + + // 2.x + if (!isFirebase3x()) { + return new window["Firebase"](path); + } + + // 3.x + else { + var fnName = (isFullPath(path)) ? "refFromURL" : "ref"; + return window["Firebase"]["database"]()[fnName](path); + } + + }; + + var get_key = function (obj) { + return (!isFirebase3x()) ? obj["key"]() : obj["key"]; + }; + + var get_refPath = function (obj) { + return (!isFirebase3x()) ? obj["ref"]() : obj["ref"]; + }; + + var get_root = function (obj) { + return (!isFirebase3x()) ? obj["root"]() : obj["root"]; + }; + + var serverTimeStamp = function () { + if (!isFirebase3x()) + return window["Firebase"]["ServerValue"]["TIMESTAMP"]; + else + return window["Firebase"]["database"]["ServerValue"]; + }; + + var get_timestamp = function (obj) { + return (!isFirebase3x()) ? obj : obj["TIMESTAMP"]; + }; + // 2.x , 3.x + + // export + instanceProto.UpdatingTimestamp = function (onComplete) { + var self = this; + var onRead = function (snapshot) { + var ts = snapshot["val"](); + if (ts != null) { + ts = get_timestamp(ts); + var isFirstUpdating = (self.lastServerTimestamp === null); + if (!isFirstUpdating) { + var predictTS = self.getCurTimestamp(); + self.lastPredictErr = (ts - predictTS) / 1000; + } + else { + self.lastPredictErr = 0; + } + self.lastServerTimestamp = ts; + + if (onComplete) + onComplete(self.lastServerTimestamp); + else if (isFirstUpdating) + self.runtime.trigger(cr.plugins_.Rex_Firebase_CurTime.prototype.cnds.OnStart, self); + } + else // run again + setTimeout(function () { + self.UpdatingTimestamp(); + }, 0); + }; + var onWrite = function (error) { + if (!error) + self.timestamp_ref["once"]("value", onRead); + else // run again + setTimeout(function () { + self.UpdatingTimestamp(); + }, 0); + }; + this.timestamp_ref["set"](serverTimeStamp(), onWrite); + }; + + instanceProto.getCurTimestamp = function () { + var ts; + if (this.lastServerTimestamp == null) { + ts = 0; // invalid + } + if (this.lastLocalTimestamp == null) { + ts = this.lastServerTimestamp; + } + else { + var curLocalTS = (new Date()).getTime(); + var dt = curLocalTS - this.lastLocalTimestamp; + ts = this.lastServerTimestamp + dt; + } + return ts; + }; + // export + + /**BEGIN-PREVIEWONLY**/ + instanceProto.getDebuggerValues = function (propsections) { + var curDate; + if (this.lastServerTimestamp !== null) + curDate = (new Date(this.lastServerTimestamp)).toLocaleString(); + else + curDate = " - "; + + propsections.push({ + "title": this.type.name, + "properties": [ + { "name": "Current date", "value": curDate }, + { "name": "Last predicted error", "value": this.lastPredictErr }, + ] + }); + }; + /**END-PREVIEWONLY**/ + ////////////////////////////////////// + // Conditions + function Cnds() { }; + pluginProto.cnds = new Cnds(); + + Cnds.prototype.IsUpdating = function () { + return (this.lastServerTimestamp != null); + }; + + Cnds.prototype.OnStart = function () { + return true; + }; + + ////////////////////////////////////// + // Actions + function Acts() { }; + pluginProto.acts = new Acts(); + + Acts.prototype.SetDomainRef = function (domain_ref, sub_domain_ref) { + this.rootpath = domain_ref + "/" + sub_domain_ref + "/"; + }; + + Acts.prototype.Start = function (userID) { + this.timestamp_ref = this.get_ref(userID); + var self = this; + setInterval(function () { + self.UpdatingTimestamp(); + }, self.updatingPeriod); + }; + + Acts.prototype.Stop = function () { + this.timestamp_ref = null; + this.lastServerTimestamp = null; + }; + + ////////////////////////////////////// + // Expressions + function Exps() { }; + pluginProto.exps = new Exps(); + + Exps.prototype.Timestamp = function (ret) { + ret.set_int(Math.floor(this.getCurTimestamp())); + }; + + Exps.prototype.LastPredictedError = function (ret) { + ret.set_float(this.lastPredictErr); + }; +}()); \ No newline at end of file diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/c3runtime/actions.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/c3runtime/actions.js new file mode 100755 index 0000000..a7849c8 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/c3runtime/actions.js @@ -0,0 +1,25 @@ +"use strict"; + +{ + C3.Plugins.Rex_Firebase_CurTime.Acts = + { + + SetDomainRef(domain_ref, sub_domain_ref) { + this.rootpath = domain_ref + "/" + sub_domain_ref + "/"; + }, + + Start(userID) { + this.timestamp_ref = this.get_ref(userID); + var self = this; + setInterval(function () { + self.UpdatingTimestamp(); + }, self.updatingPeriod); + }, + + Stop() { + this.timestamp_ref = null; + this.lastServerTimestamp = null; + } + + }; +} \ No newline at end of file diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/c3runtime/conditions.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/c3runtime/conditions.js new file mode 100755 index 0000000..78867d5 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/c3runtime/conditions.js @@ -0,0 +1,14 @@ +"use strict"; + +{ + C3.Plugins.Rex_Firebase_CurTime.Cnds = + { + IsUpdating() { + return (this.lastServerTimestamp != null); + }, + + OnStart() { + return true; + } + }; +} \ No newline at end of file diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/c3runtime/expressions.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/c3runtime/expressions.js new file mode 100755 index 0000000..09fdf15 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/c3runtime/expressions.js @@ -0,0 +1,14 @@ +"use strict"; + +{ + C3.Plugins.Rex_Firebase_CurTime.Exps = + { + Timestamp() { + return (Math.floor(this.getCurTimestamp())); + }, + + LastPredictedError() { + return (this.lastPredictErr); + } + }; +} \ No newline at end of file diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/c3runtime/instance.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/c3runtime/instance.js new file mode 100755 index 0000000..6ad648b --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/c3runtime/instance.js @@ -0,0 +1,115 @@ +"use strict"; + +{ + C3.Plugins.Rex_Firebase_CurTime.Instance = class Rex_Firebase_CurTimeInstance extends C3.SDKInstanceBase + { + constructor(inst, properties) + { + super(inst); + + // Initialise object properties + + this.timestamp_ref = null; + this.lastServerTimestamp = null; + this.lastLocalTimestamp = null; + this.lastPredictErr = 0; + + if (properties) // note properties may be null in some cases + { + this.rootpath = properties[0] + "/" + properties[1] + "/"; + this.updatingPeriod = properties[2]; // seconds + } + } + + Release() + { + super.Release(); + } + + SaveToJson() + { + return { + // data to be saved for savegames + }; + } + + LoadFromJson(o) + { + // load state for savegames + } + get_ref(k) { + if (k == null) + k = ""; + var path; + if (isFullPath(k)) + path = k; + else + path = this.rootpath + k + "/"; + + // 2.x + if (!isFirebase3x()) { + return new window["Firebase"](path); + } + + // 3.x + else { + var fnName = (isFullPath(path)) ? "refFromURL" : "ref"; + return window["Firebase"]["database"]()[fnName](path); + } + + } + UpdatingTimestamp(onComplete) { + var self = this; + var onRead = function (snapshot) { + var ts = snapshot["val"](); + if (ts != null) { + ts = get_timestamp(ts); + var isFirstUpdating = (self.lastServerTimestamp === null); + if (!isFirstUpdating) { + var predictTS = self.getCurTimestamp(); + self.lastPredictErr = (ts - predictTS) / 1000; + } + else { + self.lastPredictErr = 0; + } + self.lastServerTimestamp = ts; + + if (onComplete) + onComplete(self.lastServerTimestamp); + else if (isFirstUpdating) + self.Trigger(C3.Plugins.Rex_Firebase_CurTime.Cnds.OnStart); + } + else // run again + setTimeout(function () { + self.UpdatingTimestamp(); + }, 0); + }; + var onWrite = function (error) { + if (!error) + self.timestamp_ref["once"]("value", onRead); + else // run again + setTimeout(function () { + self.UpdatingTimestamp(); + }, 0); + }; + this.timestamp_ref["set"](serverTimeStamp(), onWrite); + } + + getCurTimestamp() { + var ts; + if (this.lastServerTimestamp == null) { + ts = 0; // invalid + } + if (this.lastLocalTimestamp == null) { + ts = this.lastServerTimestamp; + } + else { + var curLocalTS = (new Date()).getTime(); + var dt = curLocalTS - this.lastLocalTimestamp; + ts = this.lastServerTimestamp + dt; + } + return ts; + } + + }; +} \ No newline at end of file diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/c3runtime/plugin.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/c3runtime/plugin.js new file mode 100755 index 0000000..7f35dbd --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/c3runtime/plugin.js @@ -0,0 +1,44 @@ +"use strict"; + var isFirebase3x = function () { + return (window["FirebaseV3x"] === true); + }; + + var isFullPath = function (p) { + return (p.substring(0, 8) === "https://"); + }; + var get_key = function (obj) { + return (!isFirebase3x()) ? obj["key"]() : obj["key"]; + }; + + var get_refPath = function (obj) { + return (!isFirebase3x()) ? obj["ref"]() : obj["ref"]; + }; + + var get_root = function (obj) { + return (!isFirebase3x()) ? obj["root"]() : obj["root"]; + }; + + var serverTimeStamp = function () { + if (!isFirebase3x()) + return window["Firebase"]["ServerValue"]["TIMESTAMP"]; + else + return window["Firebase"]["database"]["ServerValue"]; + }; + + var get_timestamp = function (obj) { + return (!isFirebase3x()) ? obj : obj["TIMESTAMP"]; + }; +{ + C3.Plugins.Rex_Firebase_CurTime = class Rex_Firebase_CurTimePlugin extends C3.SDKPluginBase + { + constructor(opts) + { + super(opts); + } + + Release() + { + super.Release(); + } + }; +} \ No newline at end of file diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/c3runtime/type.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/c3runtime/type.js new file mode 100755 index 0000000..1dd9116 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/c3runtime/type.js @@ -0,0 +1,20 @@ +"use strict"; + +{ + C3.Plugins.Rex_Firebase_CurTime.Type = class Rex_Firebase_CurTimeType extends C3.SDKTypeBase + { + constructor(objectClass) + { + super(objectClass); + } + + Release() + { + super.Release(); + } + + OnCreate() + { + } + }; +} \ No newline at end of file diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/icon.png b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/icon.png new file mode 100755 index 0000000000000000000000000000000000000000..eddd77114307c9759df06f5d63461161231d98a7 GIT binary patch literal 67646 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

    Rkri<@~W&q{7B9I^hX58556Br-yD$3 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 literal 0 HcmV?d00001 diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/instance.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/instance.js new file mode 100755 index 0000000..b747513 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/instance.js @@ -0,0 +1,26 @@ +"use strict"; + +{ + const PLUGIN_CLASS = SDK.Plugins.Rex_Firebase_CurTime; + + PLUGIN_CLASS.Instance = class Rex_Firebase_CurTimeInstance extends SDK.IInstanceBase + { + constructor(sdkType, inst) + { + super(sdkType, inst); + } + Release() + { + } + OnCreate() + { + } + OnPropertyChanged(id, value) + { + } + LoadC2Property(name, valueString) + { + return false; // not handled + } + }; +} diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/lang/en-US.json b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/lang/en-US.json new file mode 100755 index 0000000..dea0e17 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/lang/en-US.json @@ -0,0 +1,80 @@ +{ + "languageTag": "en-US", + "fileDescription": "Strings for Current timestamp.", + "text": { + "plugins": { + "rex_firebase_curtime": { + "name": "Current timestamp", + "description": "Get server timestamp periodically.", + "help-url": "http://c2rexplugins.weebly.com/rex_firebase_curTime.html", + "properties": { + "domain": { + "name": "Domain", + "desc": "The root location of the Firebase data." + }, + "sub-domain": { + "name": "Sub domain", + "desc": "Sub domain for this function." + }, + "updating-period": { + "name": "Updating period", + "desc": "Updating period of server timestamp, in secondes." + } + }, + "aceCategories": { + "domain": "Domain", + "control": "Control", + "updating": "Updating", + "current": "Current", + "error": "Error" + }, + "conditions": { + "ısupdating1": { + "list-name": "Is updating", + "display-text": "Is updating", + "description": "Return true if timestamp is valid." + }, + "onstart2": { + "list-name": "On start", + "display-text": "On updating start", + "description": "Triggered when updating start." + } + }, + "actions": { + "setdomainref0": { + "list-name": "Set domain", + "display-text": "Set domain to [i]{0}[/i], sub domain to [i]{1}[/i]", + "description": "Set domain ref.", + "params": { + "domain0": { "name":"Domain", "desc":"The root location of the Firebase data."}, + "sub_domain1": { "name":"Sub domain", "desc":"Sub domain for this function."} + } + }, + "start1": { + "list-name": "Start", + "display-text": "Start updating server timestamp of user ID: [i]{0}[/i]", + "description": "Start updating server timestamp.", + "params": { + "user_ıd0": { "name":"User ID", "desc":"Key of User ID."} + } + }, + "stop2": { + "list-name": "Stop", + "display-text": "Stop updating server timestamp", + "description": "Stop updating server timestamp." + } + }, + "expressions": { + "timestamp1": { + "description": "Get current timestamp, in milliseconds.", + "translated-name": "Timestamp" + }, + "lastpredictederror2": { + "description": "Get last predicted error, in seconds", + "translated-name": "LastPredictedError" + } + } + } + } + } +} diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/plugin.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/plugin.js new file mode 100755 index 0000000..77966bb --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/plugin.js @@ -0,0 +1,42 @@ +//Converted with C2C3AddonConverter v1.0.1.0 +"use strict"; + +{ + const PLUGIN_ID = "Rex_Firebase_CurTime"; + const PLUGIN_VERSION = "0.1.0.0"; + const PLUGIN_CATEGORY = "web"; + + let app = null; + + const PLUGIN_CLASS = SDK.Plugins.Rex_Firebase_CurTime = class Rex_Firebase_CurTime extends SDK.IPluginBase + { + constructor() + { + super(PLUGIN_ID); + SDK.Lang.PushContext("plugins." + PLUGIN_ID.toLowerCase()); + this._info.SetIcon("icon.png", "image/png"); + this._info.SetName(lang(".name")); + this._info.SetDescription(lang(".description")); + this._info.SetVersion(PLUGIN_VERSION); + this._info.SetCategory(PLUGIN_CATEGORY); + this._info.SetAuthor("Rex.Rainbow"); + this._info.SetHelpUrl(lang(".help-url")); + this._info.SetIsSingleGlobal(true); + this._info.SetIsDeprecated(false); + this._info.SetSupportsEffects(false); + this._info.SetMustPreDraw(false); + this._info.SetCanBeBundled(false); + + this._info.SetSupportedRuntimes(["c2","c3"]); + SDK.Lang.PushContext(".properties"); + this._info.SetProperties([ + new SDK.PluginProperty("text", "domain", ""), + new SDK.PluginProperty("text", "sub-domain", "CurTime"), + new SDK.PluginProperty("float", "updating-period", 1) + ]); + SDK.Lang.PopContext(); // .properties + SDK.Lang.PopContext(); + } + }; + PLUGIN_CLASS.Register(PLUGIN_ID, PLUGIN_CLASS); +} diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/type.js b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/type.js new file mode 100755 index 0000000..c6ec7b5 --- /dev/null +++ b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_curTime/source/type.js @@ -0,0 +1,13 @@ +"use strict"; + +{ + const PLUGIN_CLASS = SDK.Plugins.Rex_Firebase_CurTime; + + PLUGIN_CLASS.Type = class Rex_Firebase_CurTimeType extends SDK.ITypeBase + { + constructor(sdkPlugin, iObjectType) + { + super(sdkPlugin, iObjectType); + } + }; +} diff --git a/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_geofire/dist/rex_firebase_geofire.c3addon b/ported_plugins/plugins/rex_firebase_pack/plugins/rex_firebase_geofire/dist/rex_firebase_geofire.c3addon new file mode 100644 index 0000000000000000000000000000000000000000..49fcccd53d1f5aaa0b62856e7ff9b5821647fafc GIT binary patch literal 29866 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