You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

125 lines
186 KiB

function cov_1kbb7fz0lp(){var path="D:\\wechatapp\\SH\\SH\\Reject.js";var hash="0949a5d7e06e37b0d3d9929399aaaff6f267dbef";var global=new Function("return this")();var gcv="__coverage__";var coverageData={path:"D:\\wechatapp\\SH\\SH\\Reject.js",statementMap:{"0":{start:{line:1,column:16},end:{line:1,column:34}},"1":{start:{line:2,column:19},end:{line:2,column:41}},"2":{start:{line:3,column:13},end:{line:3,column:28}},"3":{start:{line:4,column:14},end:{line:4,column:39}},"4":{start:{line:5,column:13},end:{line:5,column:28}},"5":{start:{line:6,column:12},end:{line:6,column:21}},"6":{start:{line:7,column:13},end:{line:7,column:37}},"7":{start:{line:10,column:0},end:{line:10,column:16}},"8":{start:{line:11,column:0},end:{line:20,column:3}},"9":{start:{line:12,column:4},end:{line:12,column:51}},"10":{start:{line:13,column:4},end:{line:13,column:82}},"11":{start:{line:14,column:4},end:{line:14,column:78}},"12":{start:{line:15,column:4},end:{line:18,column:5}},"13":{start:{line:16,column:8},end:{line:16,column:30}},"14":{start:{line:17,column:8},end:{line:17,column:15}},"15":{start:{line:19,column:4},end:{line:19,column:11}},"16":{start:{line:21,column:0},end:{line:21,column:27}},"17":{start:{line:22,column:0},end:{line:22,column:46}},"18":{start:{line:25,column:17},end:{line:33,column:1}},"19":{start:{line:36,column:26},end:{line:44,column:1}},"20":{start:{line:52,column:4},end:{line:80,column:5}},"21":{start:{line:53,column:8},end:{line:53,column:42}},"22":{start:{line:54,column:8},end:{line:54,column:44}},"23":{start:{line:57,column:8},end:{line:57,column:60}},"24":{start:{line:58,column:8},end:{line:58,column:43}},"25":{start:{line:61,column:27},end:{line:61,column:53}},"26":{start:{line:62,column:8},end:{line:62,column:43}},"27":{start:{line:63,column:8},end:{line:63,column:29}},"28":{start:{line:66,column:36},end:{line:66,column:71}},"29":{start:{line:67,column:8},end:{line:67,column:42}},"30":{start:{line:68,column:8},end:{line:68,column:38}},"31":{start:{line:71,column:8},end:{line:71,column:37}},"32":{start:{line:73,column:8},end:{line:73,column:50}},"33":{start:{line:74,column:8},end:{line:74,column:38}},"34":{start:{line:76,column:8},end:{line:79,column:17}},"35":{start:{line:77,column:12},end:{line:77,column:43}},"36":{start:{line:78,column:12},end:{line:78,column:27}},"37":{start:{line:85,column:4},end:{line:89,column:7}},"38":{start:{line:93,column:0},end:{line:206,column:3}},"39":{start:{line:94,column:4},end:{line:94,column:42}},"40":{start:{line:95,column:4},end:{line:205,column:5}},"41":{start:{line:96,column:27},end:{line:96,column:53}},"42":{start:{line:98,column:84},end:{line:98,column:93}},"43":{start:{line:100,column:29},end:{line:100,column:46}},"44":{start:{line:101,column:23},end:{line:101,column:44}},"45":{start:{line:104,column:20},end:{line:104,column:118}},"46":{start:{line:105,column:25},end:{line:105,column:110}},"47":{start:{line:106,column:26},end:{line:106,column:28}},"48":{start:{line:107,column:21},end:{line:107,column:23}},"49":{start:{line:110,column:8},end:{line:113,column:9}},"50":{start:{line:111,column:12},end:{line:111,column:96}},"51":{start:{line:112,column:12},end:{line:112,column:87}},"52":{start:{line:116,column:8},end:{line:120,column:9}},"53":{start:{line:117,column:12},end:{line:117,column:60}},"54":{start:{line:118,column:12},end:{line:118,column:41}},"55":{start:{line:119,column:12},end:{line:119,column:32}},"56":{start:{line:123,column:26},end:{line:126,column:9}},"57":{start:{line:129,column:31},end:{line:132,column:9}},"58":{start:{line:134,column:8},end:{line:134,column:29}},"59":{start:{line:137,column:33},end:{line:192,column:10}},"60":{start:{line:139,column:28},end:{line:139,column:30}},"61":{start:{line:141,column:12},end:{line:176,column:13}},"62":{start:{line:142,column:16},end:{line:175,column:17}},"63":{start:{line:144,column:20},end:{line:168,column:21}},"64":{start:{line:145,column:43},end:{line:145,column:72}},"65":{start:{line:148,column:24},end:{line:152,column:25}},"66":{start:{line:151,column:28},end:{line:151,column:68}},"67":{start:{line:154,column:24},end:{line:159,column:25}},"68":{start:{line:155,column:28},end:{line:155,column:53}},"69":{start:{line:156,column:31},end:{line:159,column:25}},"70":{start:{line:158,column:28},end:{line:158,column:55}},"71":{start:{line:162,column:24},end:{line:167,column:25}},"72":{start:{line:163,column:28},end:{line:163,column:92}},"73":{start:{line:163,column:80},end:{line:163,column:90}},"74":{start:{line:166,column:28},end:{line:166,column:67}},"75":{start:{line:169,column:23},end:{line:175,column:17}},"76":{start:{line:171,column:20},end:{line:171,column:50}},"77":{start:{line:174,column:20},end:{line:174,column:60}},"78":{start:{line:179,column:12},end:{line:186,column:58}},"79":{start:{line:181,column:20},end:{line:181,column:43}},"80":{start:{line:181,column:30},end:{line:181,column:43}},"81":{start:{line:182,column:41},end:{line:182,column:69}},"82":{start:{line:183,column:20},end:{line:183,column:101}},"83":{start:{line:186,column:28},end:{line:186,column:56}},"84":{start:{line:188,column:12},end:{line:191,column:14}},"85":{start:{line:195,column:8},end:{line:200,column:23}},"86":{start:{line:202,column:8},end:{line:202,column:50}},"87":{start:{line:203,column:8},end:{line:203,column:38}},"88":{start:{line:204,column:8},end:{line:204,column:51}},"89":{start:{line:209,column:0},end:{line:260,column:3}},"90":{start:{line:210,column:4},end:{line:210,column:54}},"91":{start:{line:211,column:4},end:{line:259,column:5}},"92":{start:{line:212,column:27},end:{line:212,column:53}},"93":{start:{line:213,column:32},end:{line:213,column:40}},"94":{start:{line:214,column:26},end:{line:214,column:39}},"95":{start:{line:217,column:8},end:{line:217,column:44}},"96":{start:{line:220,column:33},end:{line:223,column:9}},"97":{start:{line:225,column:8},end:{line:229,column:9}},"98":{start:{line:226,column:12},end:{line:226,column:40}},"99":{start:{line:227,column:12},end:{line:227,column:33}},"100":{start:{line:228,column:12},end:{line:228,column:59}},"101":{start:{line:232,column:8},end:{line:236,column:9}},"102":{start:{line:233,column:12},end:{line:233,column:40}},"103":{start:{line:234,column:12},end:{line:234,column:33}},"104":{start:{line:235,column:12},end:{line:235,column:67}},"105":{start:{line:239,column:8},end:{line:242,column:10}},"106":{start:{line:245,column:8},end:{line:248,column:10}},"107":{start:{line:251,column:8},end:{line:251,column:34}},"108":{start:{line:252,column:8},end:{line:252,column:29}},"109":{start:{line:254,column:8},end:{line:254,column:48}},"110":{start:{line:256,column:8},end:{line:256,column:48}},"111":{start:{line:257,column:8},end:{line:257,column:38}},"112":{start:{line:258,column:8},end:{line:258,column:49}},"113":{start:{line:262,column:0},end:{line:262,column:55}},"114":{start:{line:265,column:0},end:{line:318,column:3}},"115":{start:{line:266,column:4},end:{line:266,column:54}},"116":{start:{line:267,column:4},end:{line:317,column:5}},"117":{start:{line:268,column:27},end:{line:268,column:53}},"118":{start:{line:270,column:59},end:{line:270,column:67}},"119":{start:{line:272,column:35},end:{line:272,column:57}},"120":{start:{line:273,column:26},end:{line:273,column:39}},"121":{start:{line:276,column:8},end:{line:276,column:44}},"122":{start:{line:279,column:33},end:{line:282,column:9}},"123":{start:{line:284,column:8},end:{line:288,column:9}},"124":{start:{line:285,column:12},end:{line:285,column:40}},"125":{start:{line:286,column:12},end:{line:286,column:33}},"126":{start:{line:287,column:12},end:{line:287,column:59}},"127":{start:{line:290,column:8},end:{line:294,column:9}},"128":{start:{line:291,column:12},end:{line:291,column:40}},"129":{start:{line:292,column:12},end:{line:292,column:33}},"130":{start:{line:293,column:12},end:{line:293,column:65}},"131":{start:{line:297,column:8},end:{line:300,column:10}},"132":{start:{line:303,column:8},end:{line:306,column:10}},"133":{start:{line:309,column:8},end:{line:309,column:34}},"134":{start:{line:310,column:8},end:{line:310,column:29}},"135":{start:{line:312,column:8},end:{line:312,column:48}},"136":{start:{line:314,column:8},end:{line:314,column:48}},"137":{start:{line:315,column:8},end:{line:315,column:38}},"138":{start:{line:316,column:8},end:{line:316,column:49}},"139":{start:{line:330,column:0},end:{line:330,column:41}},"140":{start:{line:333,column:0},end:{line:345,column:3}},"141":{start:{line:334,column:4},end:{line:334,column:31}},"142":{start:{line:335,column:4},end:{line:344,column:5}},"143":{start:{line:336,column:27},end:{line:336,column:53}},"144":{start:{line:337,column:26},end:{line:337,column:76}},"145":{start:{line:338,column:8},end:{line:338,column:29}},"146":{start:{line:339,column:8},end:{line:339,column:55}},"147":{start:{line:341,column:8},end:{line:341,column:51}},"148":{start:{line:342,column:8},end:{line:342,column:38}},"149":{start:{line:343,column:8},end:{line:343,column:52}},"150":{start:{line:348,column:0},end:{line:415,column:3}},"151":{start:{line:349,column:4},end:{line:414,column:5}},"152":{start:{line:351,column:36},end:{line:351,column:71}},"153":{start:{line:352,column:31},end:{line:354,column:9}},"154":{start:{line:355,column:8},end:{line:355,column:38}},"155":{start:{line:357,column:8},end:{line:360,column:9}},"156":{start:{line:358,column:12},end:{line:358,column:53}},"157":{start:{line:359,column:12},end:{line:359,column:19}},"158":{start:{line:363,column:27},end:{line:363,column:53}},"159":{start:{line:366,column:26},end:{line:366,column:69}},"160":{start:{line:366,column:53},end:{line:366,column:68}},"161":{start:{line:369,column:30},end:{line:372,column:9}},"162":{start:{line:374,column:8},end:{line:374,column:29}},"163":{start:{line:377,column:25},end:{line:377,column:27}},"164":{start:{line:378,column:31},end:{line:378,column:40}},"165":{start:{line:381,column:8},end:{line:407,column:9}},"166":{start:{line:382,column:33},end:{line:382,column:44}},"167":{start:{line:385,column:33},end:{line:387,column:13}},"168":{start:{line:386,column:16},end:{line:386,column:71}},"169":{start:{line:389,column:12},end:{line:405,column:13}},"170":{start:{line:390,column:16},end:{line:404,column:17}},"171":{start:{line:392,column:20},end:{line:403,column:21}},"172":{start:{line:393,column:40},end:{line:393,column:73}},"173":{start:{line:394,column:24},end:{line:402,column:25}},"174":{start:{line:395,column:28},end:{line:395,column:56}},"175":{start:{line:396,column:28},end:{line:401,column:31}},"176":{start:{line:409,column:8},end:{line:409,column:55}},"177":{start:{line:411,column:8},end:{line:411,column:51}},"178":{start:{line:412,column:8},end:{line:412,column:38}},"179":{start:{line:413,column:8},end:{line:413,column:52}},"180":{start:{line:418,column:0},end:{line:447,column:3}},"181":{start:{line:419,column:4},end:{line:446,column:5}},"182":{start:{line:420,column:23},end:{line:420,column:33}},"183":{start:{line:421,column:49},end:{line:421,column:57}},"184":{start:{line:424,column:40},end:{line:424,column:95}},"185":{start:{line:426,column:27},end:{line:426,column:53}},"186":{start:{line:429,column:25},end:{line:432,column:9}},"187":{start:{line:434,column:8},end:{line:434,column:29}},"188":{start:{line:436,column:8},end:{line:439,column:9}},"189":{start:{line:437,column:12},end:{line:437,column:55}},"190":{start:{line:438,column:12},end:{line:438,column:19}},"191":{start:{line:441,column:8},end:{line:441,column:53}},"192":{start:{line:443,column:8},end:{line:443,column:53}},"193":{start:{line:444,column:8},end:{line:444,column:38}},"194":{start:{line:445,column:8},end:{line:445,column:54}},"195":{start:{line:450,column:0},end:{line:450,column:60}},"196":{start:{line:451,column:0},end:{line:499,column:3}},"197":{start:{line:452,column:4},end:{line:452,column:44}},"198":{start:{line:453,column:4},end:{line:498,column:5}},"199":{start:{line:454,column:27},end:{line:454,column:53}},"200":{start:{line:455,column:23},end:{line:455,column:36}},"201":{start:{line:457,column:8},end:{line:460,column:9}},"202":{start:{line:458,column:12},end:{line:458,column:33}},"203":{start:{line:459,column:12},end:{line:459,column:62}},"204":{start:{line:463,column:8},end:{line:463,column:44}},"205":{start:{line:466,column:30},end:{line:469,column:9}},"206":{start:{line:471,column:8},end:{line:475,column:9}},"207":{start:{line:472,column:12},end:{line:472,column:40}},"208":{start:{line:473,column:12},end:{line:473,column:33}},"209":{start:{line:474,column:12},end:{line:474,column:60}},"210":{start:{line:477,column:8},end:{line:481,column:9}},"211":{start:{line:478,column:12},end:{line:478,column:40}},"212":{start:{line:479,column:12},end:{line:479,column:33}},"213":{start:{line:480,column:12},end:{line:480,column:65}},"214":{start:{line:484,column:8},end:{line:487,column:10}},"215":{start:{line:490,column:8},end:{line:490,column:34}},"216":{start:{line:491,column:8},end:{line:491,column:29}},"217":{start:{line:493,column:8},end:{line:493,column:51}},"218":{start:{line:495,column:8},end:{line:495,column:51}},"219":{start:{line:496,column:8},end:{line:496,column:38}},"220":{start:{line:497,column:8},end:{line:497,column:52}},"221":{start:{line:502,column:0},end:{line:502,column:59}},"222":{start:{line:503,column:0},end:{line:557,column:3}},"223":{start:{line:504,column:4},end:{line:504,column:54}},"224":{start:{line:505,column:4},end:{line:556,column:5}},"225":{start:{line:506,column:27},end:{line:506,column:53}},"226":{start:{line:507,column:23},end:{line:507,column:36}},"227":{start:{line:508,column:33},end:{line:508,column:41}},"228":{start:{line:510,column:8},end:{line:513,column:9}},"229":{start:{line:511,column:12},end:{line:511,column:33}},"230":{start:{line:512,column:12},end:{line:512,column:62}},"231":{start:{line:515,column:8},end:{line:518,column:9}},"232":{start:{line:516,column:12},end:{line:516,column:33}},"233":{start:{line:517,column:12},end:{line:517,column:64}},"234":{start:{line:521,column:8},end:{line:521,column:44}},"235":{start:{line:524,column:30},end:{line:527,column:9}},"236":{start:{line:529,column:8},end:{line:533,column:9}},"237":{start:{line:530,column:12},end:{line:530,column:40}},"238":{start:{line:531,column:12},end:{line:531,column:33}},"239":{start:{line:532,column:12},end:{line:532,column:60}},"240":{start:{line:535,column:8},end:{line:539,column:9}},"241":{start:{line:536,column:12},end:{line:536,column:40}},"242":{start:{line:537,column:12},end:{line:537,column:33}},"243":{start:{line:538,column:12},end:{line:538,column:65}},"244":{start:{line:542,column:8},end:{line:545,column:10}},"245":{start:{line:548,column:8},end:{line:548,column:34}},"246":{start:{line:549,column:8},end:{line:549,column:29}},"247":{start:{line:551,column:8},end:{line:551,column:51}},"248":{start:{line:553,column:8},end:{line:553,column:51}},"249":{start:{line:554,column:8},end:{line:554,column:38}},"250":{start:{line:555,column:8},end:{line:555,column:52}},"251":{start:{line:560,column:0},end:{line:560,column:62}},"252":{start:{line:561,column:0},end:{line:609,column:3}},"253":{start:{line:562,column:4},end:{line:562,column:44}},"254":{start:{line:563,column:4},end:{line:608,column:5}},"255":{start:{line:564,column:27},end:{line:564,column:53}},"256":{start:{line:565,column:23},end:{line:565,column:36}},"257":{start:{line:567,column:8},end:{line:570,column:9}},"258":{start:{line:568,column:12},end:{line:568,column:33}},"259":{start:{line:569,column:12},end:{line:569,column:62}},"260":{start:{line:573,column:8},end:{line:573,column:44}},"261":{start:{line:576,column:30},end:{line:579,column:9}},"262":{start:{line:581,column:8},end:{line:585,column:9}},"263":{start:{line:582,column:12},end:{line:582,column:40}},"264":{start:{line:583,column:12},end:{line:583,column:33}},"265":{start:{line:584,column:12},end:{line:584,column:60}},"266":{start:{line:587,column:8},end:{line:591,column:9}},"267":{start:{line:588,column:12},end:{line:588,column:40}},"268":{start:{line:589,column:12},end:{line:589,column:33}},"269":{start:{line:590,column:12},end:{line:590,column:70}},"270":{start:{line:594,column:8},end:{line:597,column:10}},"271":{start:{line:600,column:8},end:{line:600,column:34}},"272":{start:{line:601,column:8},end:{line:601,column:29}},"273":{start:{line:603,column:8},end:{line:603,column:51}},"274":{start:{line:605,column:8},end:{line:605,column:51}},"275":{start:{line:606,column:8},end:{line:606,column:38}},"276":{start:{line:607,column:8},end:{line:607,column:52}},"277":{start:{line:612,column:0},end:{line:612,column:62}},"278":{start:{line:613,column:0},end:{line:662,column:3}},"279":{start:{line:614,column:4},end:{line:614,column:54}},"280":{start:{line:615,column:4},end:{line:661,column:5}},"281":{start:{line:616,column:27},end:{line:616,column:53}},"282":{start:{line:617,column:23},end:{line:617,column:36}},"283":{start:{line:618,column:27},end:{line:618,column:35}},"284":{start:{line:620,column:8},end:{line:623,column:9}},"285":{start:{line:621,column:12},end:{line:621,column:33}},"286":{start:{line:622,column:12},end:{line:622,column:62}},"287":{start:{line:626,column:8},end:{line:626,column:44}},"288":{start:{line:629,column:30},end:{line:632,column:9}},"289":{start:{line:634,column:8},end:{line:638,column:9}},"290":{start:{line:635,column:12},end:{line:635,column:40}},"291":{start:{line:636,column:12},end:{line:636,column:33}},"292":{start:{line:637,column:12},end:{line:637,column:60}},"293":{start:{line:640,column:8},end:{line:644,column:9}},"294":{start:{line:641,column:12},end:{line:641,column:40}},"295":{start:{line:642,column:12},end:{line:642,column:33}},"296":{start:{line:643,column:12},end:{line:643,column:74}},"297":{start:{line:647,column:8},end:{line:650,column:10}},"298":{start:{line:653,column:8},end:{line:653,column:34}},"299":{start:{line:654,column:8},end:{line:654,column:29}},"300":{start:{line:656,column:8},end:{line:656,column:51}},"301":{start:{line:658,column:8},end:{line:658,column:51}},"302":{start:{line:659,column:8},end:{line:659,column:38}},"303":{start:{line:660,column:8},end:{line:660,column:52}},"304":{start:{line:665,column:0},end:{line:665,column:48}},"305":{start:{line:666,column:0},end:{line:721,column:3}},"306":{start:{line:667,column:4},end:{line:667,column:43}},"307":{start:{line:668,column:4},end:{line:720,column:5}},"308":{start:{line:669,column:27},end:{line:669,column:53}},"309":{start:{line:670,column:71},end:{line:670,column:80}},"310":{start:{line:673,column:26},end:{line:673,column:28}},"311":{start:{line:674,column:21},end:{line:674,column:23}},"312":{start:{line:677,column:8},end:{line:680,column:9}},"313":{start:{line:678,column:12},end:{line:678,column:54}},"314":{start:{line:679,column:12},end:{line:679,column:32}},"315":{start:{line:683,column:8},end:{line:687,column:9}},"316":{start:{line:684,column:12},end:{line:684,column:54}},"317":{start:{line:685,column:12},end:{line:685,column:88}},"318":{start:{line:686,column:12},end:{line:686,column:72}},"319":{start:{line:690,column:30},end:{line:693,column:9}},"320":{start:{line:694,column:22},end:{line:694,column:42}},"321":{start:{line:697,column:23},end:{line:697,column:44}},"322":{start:{line:698,column:8},end:{line:698,column:48}},"323":{start:{line:701,column:28},end:{line:706,column:9}},"324":{start:{line:708,column:8},end:{line:708,column:29}},"325":{start:{line:710,column:8},end:{line:715,column:19}},"326":{start:{line:717,column:8},end:{line:717,column:51}},"327":{start:{line:718,column:8},end:{line:718,column:38}},"328":{start:{line:719,column:8},end:{line:719,column:52}},"329":{start:{line:724,column:0},end:{line:726,column:3}},"330":{start:{line:725,column:4},end:{line:725,column:54}},"331":{start:{line:729,column:0},end:{line:736,column:3}},"332":{start:{line:730,column:4},end:{line:730,column:41}},"333":{start:{line:731,column:4},end:{line:731,column:32}},"334":{start:{line:732,column:4},end:{line:735,column:7}},"335":{start:{line:740,column:4},end:{line:755,column:5}},"336":{start:{line:741,column:8},end:{line:741,column:29}},"337":{start:{line:743,column:8},end:{line:746,column:11}},"338":{start:{line:744,column:12},end:{line:744,column:47}},"339":{start:{line:745,column:12},end:{line:745,column:58}},"340":{start:{line:748,column:8},end:{line:748,column:49}},"341":{start:{line:749,column:8},end:{line:749,column:38}},"342":{start:{line:751,column:8},end:{line:754,column:17}},"343":{start:{line:752,column:12},end:{line:752,column:40}},"344":{start:{line:753,column:12},end:{line:753,column:26}},"345":{start:{line:760,column:4},end:{line:760,column:34}},"346":{start:{line:761,column:4},end:{line:887,column:5}},"347":{start:{line:762,column:27},end:{line:762,column:53}},"348":{start:{line:763,column:8},end:{line:763,column:33}},"349":{start:{line:766,column:8},end:{line:766,column:53}},"350":{start:{line:767,column:39},end:{line:770,column:9}},"351":{start:{line:771,column:8},end:{line:771,column:81}},"352":{start:{line:773,column:8},end:{line:779,column:9}},"353":{start:{line:774,column:12},end:{line:774,column:55}},"354":{start:{line:775,column:12},end:{line:777,column:14}},"355":{start:{line:778,column:12},end:{line:778,column:47}},"356":{start:{line:781,column:8},end:{line:781,column:53}},"357":{start:{line:782,column:38},end:{line:785,column:9}},"358":{start:{line:786,column:8},end:{line:786,column:80}},"359":{start:{line:788,column:8},end:{line:794,column:9}},"360":{start:{line:789,column:12},end:{line:789,column:55}},"361":{start:{line:790,column:12},end:{line:792,column:14}},"362":{start:{line:793,column:12},end:{line:793,column:47}},"363":{start:{line:796,column:8},end:{line:796,column:56}},"364":{start:{line:797,column:41},end:{line:800,column:9}},"365":{start:{line:801,column:8},end:{line:801,column:83}},"366":{start:{line:803,column:8},end:{line:809,column:9}},"367":{start:{line:804,column:12},end:{line:804,column:58}},"368":{start:{line:805,column:12},end:{line:807,column:14}},"369":{start:{line:808,column:12},end:{line:808,column:50}},"370":{start:{line:811,column:8},end:{line:811,column:50}},"371":{start:{line:812,column:39},end:{line:815,column:9}},"372":{start:{line:816,column:8},end:{line:816,column:81}},"373":{start:{line:818,column:8},end:{line:824,column:9}},"374":{start:{line:819,column:12},end:{line:819,column:52}},"375":{start:{line:820,column:12},end:{line:822,column:14}},"376":{start:{line:823,column:12},end:{line:823,column:44}},"377":{start:{line:827,column:8},end:{line:827,column:55}},"378":{start:{line:828,column:26},end:{line:831,column:9}},"379":{start:{line:832,column:8},end:{line:832,column:68}},"380":{start:{line:834,column:8},end:{line:840,column:9}},"381":{start:{line:835,column:12},end:{line:835,column:57}},"382":{start:{line:836,column:12},end:{line:838,column:14}},"383":{start:{line:839,column:12},end:{line:839,column:46}},"384":{start:{line:843,column:8},end:{line:843,column:53}},"385":{start:{line:844,column:35},end:{line:847,column:9}},"386":{start:{line:848,column:8},end:{line:848,column:77}},"387":{start:{line:850,column:8},end:{line:856,column:9}},"388":{start:{line:851,column:12},end:{line:851,column:55}},"389":{start:{line:852,column:12},end:{line:854,column:14}},"390":{start:{line:855,column:12},end:{line:855,column:44}},"391":{start:{line:859,column:8},end:{line:859,column:44}},"392":{start:{line:860,column:25},end:{line:862,column:9}},"393":{start:{line:863,column:8},end:{line:863,column:68}},"394":{start:{line:865,column:8},end:{line:880,column:9}},"395":{start:{line:866,column:12},end:{line:866,column:44}},"396":{start:{line:867,column:12},end:{line:878,column:15}},"397":{start:{line:879,column:12},end:{line:879,column:43}},"398":{start:{line:882,column:8},end:{line:882,column:29}},"399":{start:{line:883,column:8},end:{line:883,column:33}},"400":{start:{line:885,column:8},end:{line:885,column:51}},"401":{start:{line:886,column:8},end:{line:886,column:38}},"402":{start:{line:891,column:0},end:{line:891,column:14}},"403":{start:{line:894,column:0},end:{line:906,column:3}},"404":{start:{line:895,column:4},end:{line:895,column:30}},"405":{start:{line:896,column:4},end:{line:903,column:5}},"406":{start:{line:897,column:8},end:{line:902,column:9}},"407":{start:{line:898,column:12},end:{line:898,column:29}},"408":{start:{line:899,column:12},end:{line:899,column:37}},"409":{start:{line:901,column:12},end:{line:901,column:56}},"410":{start:{line:904,column:4},end:{line:904,column:26}},"411":{start:{line:905,column:4},end:{line:905,column:20}},"412":{start:{line:908,column:0},end:{line:908,column:21}}},fnMap:{"0":{name:"(anonymous_0)",decl:{start:{line:11,column:8},end:{line:11,column:9}},loc:{start:{line:11,column:28},end:{line:20,column:1}},line:11},"1":{name:"initDatabase",decl:{start:{line:51,column:15},end:{line:51,column:27}},loc:{start:{line:51,column:30},end:{line:81,column:1}},line:51},"2":{name:"(anonymous_2)",decl:{start:{line:76,column:19},end:{line:76,column:20}},loc:{start:{line:76,column:25},end:{line:79,column:9}},line:76},"3":{name:"sendResponse",decl:{start:{line:84,column:9},end:{line:84,column:21}},loc:{start:{line:84,column:63},end:{line:90,column:1}},line:84},"4":{name:"(anonymous_4)",decl:{start:{line:93,column:25},end:{line:93,column:26}},loc:{start:{line:93,column:45},end:{line:206,column:1}},line:93},"5":{name:"(anonymous_5)",decl:{start:{line:137,column:45},end:{line:137,column:46}},loc:{start:{line:137,column:56},end:{line:192,column:9}},line:137},"6":{name:"(anonymous_6)",decl:{start:{line:163,column:73},end:{line:163,column:74}},loc:{start:{line:163,column:80},end:{line:163,column:90}},line:163},"7":{name:"(anonymous_7)",decl:{start:{line:180,column:24},end:{line:180,column:25}},loc:{start:{line:180,column:31},end:{line:184,column:17}},line:180},"8":{name:"(anonymous_8)",decl:{start:{line:186,column:21},end:{line:186,column:22}},loc:{start:{line:186,column:28},end:{line:186,column:56}},line:186},"9":{name:"(anonymous_9)",decl:{start:{line:209,column:38},end:{line:209,column:39}},loc:{start:{line:209,column:58},end:{line:260,column:1}},line:209},"10":{name:"(anonymous_10)",decl:{start:{line:265,column:37},end:{line:265,column:38}},loc:{start:{line:265,column:57},end:{line:318,column:1}},line:265},"11":{name:"(anonymous_11)",decl:{start:{line:333,column:24},end:{line:333,column:25}},loc:{start:{line:333,column:44},end:{line:345,column:1}},line:333},"12":{name:"(anonymous_12)",decl:{start:{line:348,column:25},end:{line:348,column:26}},loc:{start:{line:348,column:45},end:{line:415,column:1}},line:348},"13":{name:"(anonymous_13)",decl:{start:{line:366,column:43},end:{line:366,column:44}},loc:{start:{line:366,column:53},end:{line:366,column:68}},line:366},"14":{name:"(anonymous_14)",decl:{start:{line:385,column:52},end:{line:385,column:53}},loc:{start:{line:386,column:16},end:{line:386,column:71}},line:386},"15":{name:"(anonymous_15)",decl:{start:{line:418,column:37},end:{line:418,column:38}},loc:{start:{line:418,column:57},end:{line:447,column:1}},line:418},"16":{name:"(anonymous_16)",decl:{start:{line:451,column:39},end:{line:451,column:40}},loc:{start:{line:451,column:59},end:{line:499,column:1}},line:451},"17":{name:"(anonymous_17)",decl:{start:{line:503,column:38},end:{line:503,column:39}},loc:{start:{line:503,column:58},end:{line:557,column:1}},line:503},"18":{name:"(anonymous_18)",decl:{start:{line:561,column:41},end:{line:561,column:42}},loc:{start:{line:561,column:61},end:{line:609,column:1}},line:561},"19":{name:"(anonymous_19)",decl:{start:{line:613,column:41},end:{line:613,column:42}},loc:{start:{line:613,column:61},end:{line:662,column:1}},line:613},"20":{name:"(anonymous_20)",decl:{start:{line:666,column:26},end:{line:666,column:27}},loc:{start:{line:666,column:46},end:{line:721,column:1}},line:666},"21":{name:"(anonymous_21)",decl:{start:{line:724,column:13},end:{line:724,column:14}},loc:{start:{line:724,column:27},end:{line:726,column:1}},line:724},"22":{name:"(anonymous_22)",decl:{start:{line:729,column:8},end:{line:729,column:9}},loc:{start:{line:729,column:33},end:{line:736,column:1}},line:729},"23":{name:"startServer",decl:{start:{line:739,column:15},end:{line:739,column:26}},loc:{start:{line:739,column:29},end:{line:756,column:1}},line:739},"24":{name:"(anonymous_24)",decl:{start:{line:743,column:25},end:{line:743,column:26}},loc:{start:{line:743,column:31},end:{line:746,column:9}},line:743},"25":{name:"(anonymous_25)",decl:{start:{line:751,column:19},end:{line:751,column:20}},loc:{start:{line:751,column:25},end:{line:754,column:9}},line:751},"26":{name:"ensureDatabaseSchema",decl:{start:{line:759,column:15},end:{line:759,column:35}},loc:{start:{line:759,column:38},end:{line:888,column:1}},line:759},"27":{name:"(anonymous_27)",decl:{start:{line:894,column:21},end:{line:894,column:22}},loc:{start:{line:894,column:33},end:{line:906,column:1}},line:894}},branchMap:{"0":{loc:{start:{line:7,column:13},end:{line:7,column:37}},type:"binary-expr",locations:[{start:{line:7,column:13},end:{line:7,column:29}},{start:{line:7,column:33},end:{line:7,column:37}}],line:7},"1":{loc:{start:{line:15,column:4},end:{line:18,column:5}},type:"if",locations:[{start:{line:15,column:4},end:{line:18,column:5}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:15},"2":{loc:{start:{line:84,column:36},end:{line:84,column:47}},type:"default-arg",locations:[{start:{line:84,column:43},end:{line:84,column:47}}],line:84},"3":{loc:{start:{line:84,column:49},end:{line:84,column:61}},type:"default-arg",locations:[{start:{line:84,column:59},end:{line:84,column:61}}],line:84},"4":{loc:{start:{line:98,column:16},end:{line:98,column:24}},type:"default-arg",locations:[{start:{line:98,column:23},end:{line:98,column:24}}],line:98},"5":{loc:{start:{line:98,column:26},end:{line:98,column:39}},type:"default-arg",locations:[{start:{line:98,column:37},end:{line:98,column:39}}],line:98},"6":{loc:{start:{line:98,column:41},end:{line:98,column:52}},type:"default-arg",locations:[{start:{line:98,column:50},end:{line:98,column:52}}],line:98},"7":{loc:{start:{line:98,column:54},end:{line:98,column:66}},type:"default-arg",locations:[{start:{line:98,column:64},end:{line:98,column:66}}],line:98},"8":{loc:{start:{line:98,column:68},end:{line:98,column:79}},type:"default-arg",locations:[{start:{line:98,column:77},end:{line:98,column:79}}],line:98},"9":{loc:{start:{line:100,column:29},end:{line:100,column:46}},type:"binary-expr",locations:[{start:{line:100,column:29},end:{line:100,column:36}},{start:{line:100,column:40},end:{line:100,column:46}}],line:100},"10":{loc:{start:{line:110,column:8},end:{line:113,column:9}},type:"if",locations:[{start:{line:110,column:8},end:{line:113,column:9}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:110},"11":{loc:{start:{line:116,column:8},end:{line:120,column:9}},type:"if",locations:[{start:{line:116,column:8},end:{line:120,column:9}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:116},"12":{loc:{start:{line:117,column:27},end:{line:117,column:59}},type:"cond-expr",locations:[{start:{line:117,column:42},end:{line:117,column:48}},{start:{line:117,column:51},end:{line:117,column:59}}],line:117},"13":{loc:{start:{line:141,column:12},end:{line:176,column:13}},type:"if",locations:[{start:{line:141,column:12},end:{line:176,column:13}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:141},"14":{loc:{start:{line:142,column:16},end:{line:175,column:17}},type:"if",locations:[{start:{line:142,column:16},end:{line:175,column:17}},{start:{line:169,column:23},end:{line:175,column:17}}],line:142},"15":{loc:{start:{line:148,column:24},end:{line:152,column:25}},type:"if",locations:[{start:{line:148,column:24},end:{line:152,column:25}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:148},"16":{loc:{start:{line:148,column:28},end:{line:149,column:90}},type:"binary-expr",locations:[{start:{line:148,column:28},end:{line:148,column:60}},{start:{line:149,column:29},end:{line:149,column:57}},{start:{line:149,column:61},end:{line:149,column:89}}],line:148},"17":{loc:{start:{line:154,column:24},end:{line:159,column:25}},type:"if",locations:[{start:{line:154,column:24},end:{line:159,column:25}},{start:{line:156,column:31},end:{line:159,column:25}}],line:154},"18":{loc:{start:{line:156,column:31},end:{line:159,column:25}},type:"if",locations:[{start:{line:156,column:31},end:{line:159,column:25}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:156},"19":{loc:{start:{line:162,column:24},end:{line:167,column:25}},type:"if",locations:[{start:{line:162,column:24},end:{line:167,column:25}},{start:{line:164,column:31},end:{line:167,column:25}}],line:162},"20":{loc:{start:{line:169,column:23},end:{line:175,column:17}},type:"if",locations:[{start:{line:169,column:23},end:{line:175,column:17}},{start:{line:172,column:23},end:{line:175,column:17}}],line:169},"21":{loc:{start:{line:181,column:20},end:{line:181,column:43}},type:"if",locations:[{start:{line:181,column:20},end:{line:181,column:43}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:181},"22":{loc:{start:{line:183,column:27},end:{line:183,column:100}},type:"binary-expr",locations:[{start:{line:183,column:27},end:{line:183,column:61}},{start:{line:183,column:65},end:{line:183,column:100}}],line:183},"23":{loc:{start:{line:213,column:16},end:{line:213,column:27}},type:"default-arg",locations:[{start:{line:213,column:25},end:{line:213,column:27}}],line:213},"24":{loc:{start:{line:225,column:8},end:{line:229,column:9}},type:"if",locations:[{start:{line:225,column:8},end:{line:229,column:9}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:225},"25":{loc:{start:{line:232,column:8},end:{line:236,column:9}},type:"if",locations:[{start:{line:232,column:8},end:{line:236,column:9}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:232},"26":{loc:{start:{line:270,column:24},end:{line:270,column:41}},type:"default-arg",locations:[{start:{line:270,column:39},end:{line:270,column:41}}],line:270},"27":{loc:{start:{line:270,column:43},end:{line:270,column:54}},type:"default-arg",locations:[{start:{line:270,column:52},end:{line:270,column:54}}],line:270},"28":{loc:{start:{line:272,column:35},end:{line:272,column:57}},type:"binary-expr",locations:[{start:{line:272,column:35},end:{line:272,column:41}},{start:{line:272,column:45},end:{line:272,column:57}}],line:272},"29":{loc:{start:{line:284,column:8},end:{line:288,column:9}},type:"if",locations:[{start:{line:284,column:8},end:{line:288,column:9}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:284},"30":{loc:{start:{line:290,column:8},end:{line:294,column:9}},type:"if",locations:[{start:{line:290,column:8},end:{line:294,column:9}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:290},"31":{loc:{start:{line:290,column:12},end:{line:290,column:103}},type:"binary-expr",locations:[{start:{line:290,column:12},end:{line:290,column:54}},{start:{line:290,column:58},end:{line:290,column:103}}],line:290},"32":{loc:{start:{line:357,column:8},end:{line:360,column:9}},type:"if",locations:[{start:{line:357,column:8},end:{line:360,column:9}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:357},"33":{loc:{start:{line:386,column:16},end:{line:386,column:71}},type:"binary-expr",locations:[{start:{line:386,column:16},end:{line:386,column:42}},{start:{line:386,column:46},end:{line:386,column:71}}],line:386},"34":{loc:{start:{line:389,column:12},end:{line:405,column:13}},type:"if",locations:[{start:{line:389,column:12},end:{line:405,column:13}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:389},"35":{loc:{start:{line:392,column:20},end:{line:403,column:21}},type:"if",locations:[{start:{line:392,column:20},end:{line:403,column:21}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:392},"36":{loc:{start:{line:392,column:24},end:{line:392,column:74}},type:"binary-expr",locations:[{start:{line:392,column:24},end:{line:392,column:40}},{start:{line:392,column:44},end:{line:392,column:74}}],line:392},"37":{loc:{start:{line:394,column:24},end:{line:402,column:25}},type:"if",locations:[{start:{line:394,column:24},end:{line:402,column:25}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:394},"38":{loc:{start:{line:436,column:8},end:{line:439,column:9}},type:"if",locations:[{start:{line:436,column:8},end:{line:439,column:9}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:436},"39":{loc:{start:{line:457,column:8},end:{line:460,column:9}},type:"if",locations:[{start:{line:457,column:8},end:{line:460,column:9}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:457},"40":{loc:{start:{line:471,column:8},end:{line:475,column:9}},type:"if",locations:[{start:{line:471,column:8},end:{line:475,column:9}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:471},"41":{loc:{start:{line:477,column:8},end:{line:481,column:9}},type:"if",locations:[{start:{line:477,column:8},end:{line:481,column:9}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:477},"42":{loc:{start:{line:510,column:8},end:{line:513,column:9}},type:"if",locations:[{start:{line:510,column:8},end:{line:513,column:9}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:510},"43":{loc:{start:{line:515,column:8},end:{line:518,column:9}},type:"if",locations:[{start:{line:515,column:8},end:{line:518,column:9}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:515},"44":{loc:{start:{line:529,column:8},end:{line:533,column:9}},type:"if",locations:[{start:{line:529,column:8},end:{line:533,column:9}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:529},"45":{loc:{start:{line:535,column:8},end:{line:539,column:9}},type:"if",locations:[{start:{line:535,column:8},end:{line:539,column:9}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:535},"46":{loc:{start:{line:567,column:8},end:{line:570,column:9}},type:"if",locations:[{start:{line:567,column:8},end:{line:570,column:9}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:567},"47":{loc:{start:{line:581,column:8},end:{line:585,column:9}},type:"if",locations:[{start:{line:581,column:8},end:{line:585,column:9}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:581},"48":{loc:{start:{line:587,column:8},end:{line:591,column:9}},type:"if",locations:[{start:{line:587,column:8},end:{line:591,column:9}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:587},"49":{loc:{start:{line:620,column:8},end:{line:623,column:9}},type:"if",locations:[{start:{line:620,column:8},end:{line:623,column:9}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:620},"50":{loc:{start:{line:634,column:8},end:{line:638,column:9}},type:"if",locations:[{start:{line:634,column:8},end:{line:638,column:9}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:634},"51":{loc:{start:{line:640,column:8},end:{line:644,column:9}},type:"if",locations:[{start:{line:640,column:8},end:{line:644,column:9}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:640},"52":{loc:{start:{line:640,column:12},end:{line:640,column:107}},type:"binary-expr",locations:[{start:{line:640,column:12},end:{line:640,column:55}},{start:{line:640,column:59},end:{line:640,column:107}}],line:640},"53":{loc:{start:{line:670,column:16},end:{line:670,column:24}},type:"default-arg",locations:[{start:{line:670,column:23},end:{line:670,column:24}}],line:670},"54":{loc:{start:{line:670,column:26},end:{line:670,column:39}},type:"default-arg",locations:[{start:{line:670,column:37},end:{line:670,column:39}}],line:670},"55":{loc:{start:{line:670,column:41},end:{line:670,column:52}},type:"default-arg",locations:[{start:{line:670,column:50},end:{line:670,column:52}}],line:670},"56":{loc:{start:{line:670,column:54},end:{line:670,column:66}},type:"default-arg",locations:[{start:{line:670,column:64},end:{line:670,column:66}}],line:670},"57":{loc:{start:{line:677,column:8},end:{line:680,column:9}},type:"if",locations:[{start:{line:677,column:8},end:{line:680,column:9}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:677},"58":{loc:{start:{line:683,column:8},end:{line:687,column:9}},type:"if",locations:[{start:{line:683,column:8},end:{line:687,column:9}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:683},"59":{loc:{start:{line:684,column:27},end:{line:684,column:53}},type:"cond-expr",locations:[{start:{line:684,column:36},end:{line:684,column:42}},{start:{line:684,column:45},end:{line:684,column:53}}],line:684},"60":{loc:{start:{line:771,column:32},end:{line:771,column:79}},type:"cond-expr",locations:[{start:{line:771,column:66},end:{line:771,column:71}},{start:{line:771,column:74},end:{line:771,column:79}}],line:771},"61":{loc:{start:{line:773,column:8},end:{line:779,column:9}},type:"if",locations:[{start:{line:773,column:8},end:{line:779,column:9}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:773},"62":{loc:{start:{line:786,column:32},end:{line:786,column:78}},type:"cond-expr",locations:[{start:{line:786,column:65},end:{line:786,column:70}},{start:{line:786,column:73},end:{line:786,column:78}}],line:786},"63":{loc:{start:{line:788,column:8},end:{line:794,column:9}},type:"if",locations:[{start:{line:788,column:8},end:{line:794,column:9}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:788},"64":{loc:{start:{line:801,column:32},end:{line:801,column:81}},type:"cond-expr",locations:[{start:{line:801,column:68},end:{line:801,column:73}},{start:{line:801,column:76},end:{line:801,column:81}}],line:801},"65":{loc:{start:{line:803,column:8},end:{line:809,column:9}},type:"if",locations:[{start:{line:803,column:8},end:{line:809,column:9}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:803},"66":{loc:{start:{line:816,column:32},end:{line:816,column:79}},type:"cond-expr",locations:[{start:{line:816,column:66},end:{line:816,column:71}},{start:{line:816,column:74},end:{line:816,column:79}}],line:816},"67":{loc:{start:{line:818,column:8},end:{line:824,column:9}},type:"if",locations:[{start:{line:818,column:8},end:{line:824,column:9}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:818},"68":{loc:{start:{line:832,column:32},end:{line:832,column:66}},type:"cond-expr",locations:[{start:{line:832,column:53},end:{line:832,column:58}},{start:{line:832,column:61},end:{line:832,column:66}}],line:832},"69":{loc:{start:{line:834,column:8},end:{line:840,column:9}},type:"if",locations:[{start:{line:834,column:8},end:{line:840,column:9}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:834},"70":{loc:{start:{line:848,column:32},end:{line:848,column:75}},type:"cond-expr",locations:[{start:{line:848,column:62},end:{line:848,column:67}},{start:{line:848,column:70},end:{line:848,column:75}}],line:848},"71":{loc:{start:{line:850,column:8},end:{line:856,column:9}},type:"if",locations:[{start:{line:850,column:8},end:{line:856,column:9}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:850},"72":{loc:{start:{line:863,column:33},end:{line:863,column:66}},type:"cond-expr",locations:[{start:{line:863,column:53},end:{line:863,column:58}},{start:{line:863,column:61},end:{line:863,column:66}}],line:863},"73":{loc:{start:{line:865,column:8},end:{line:880,column:9}},type:"if",locations:[{start:{line:865,column:8},end:{line:880,column:9}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:865},"74":{loc:{start:{line:896,column:4},end:{line:903,column:5}},type:"if",locations:[{start:{line:896,column:4},end:{line:903,column:5}},{start:{line:undefined,column:undefined},end:{line:undefined,column:undefined}}],line:896}},s:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":0,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"209":0,"210":0,"211":0,"212":0,"213":0,"214":0,"215":0,"216":0,"217":0,"218":0,"219":0,"220":0,"221":0,"222":0,"223":0,"224":0,"225":0,"226":0,"227":0,"228":0,"229":0,"230":0,"231":0,"232":0,"233":0,"234":0,"235":0,"236":0,"237":0,"238":0,"239":0,"240":0,"241":0,"242":0,"243":0,"244":0,"245":0,"246":0,"247":0,"248":0,"249":0,"250":0,"251":0,"252":0,"253":0,"254":0,"255":0,"256":0,"257":0,"258":0,"259":0,"260":0,"261":0,"262":0,"263":0,"264":0,"265":0,"266":0,"267":0,"268":0,"269":0,"270":0,"271":0,"272":0,"273":0,"274":0,"275":0,"276":0,"277":0,"278":0,"279":0,"280":0,"281":0,"282":0,"283":0,"284":0,"285":0,"286":0,"287":0,"288":0,"289":0,"290":0,"291":0,"292":0,"293":0,"294":0,"295":0,"296":0,"297":0,"298":0,"299":0,"300":0,"301":0,"302":0,"303":0,"304":0,"305":0,"306":0,"307":0,"308":0,"309":0,"310":0,"311":0,"312":0,"313":0,"314":0,"315":0,"316":0,"317":0,"318":0,"319":0,"320":0,"321":0,"322":0,"323":0,"324":0,"325":0,"326":0,"327":0,"328":0,"329":0,"330":0,"331":0,"332":0,"333":0,"334":0,"335":0,"336":0,"337":0,"338":0,"339":0,"340":0,"341":0,"342":0,"343":0,"344":0,"345":0,"346":0,"347":0,"348":0,"349":0,"350":0,"351":0,"352":0,"353":0,"354":0,"355":0,"356":0,"357":0,"358":0,"359":0,"360":0,"361":0,"362":0,"363":0,"364":0,"365":0,"366":0,"367":0,"368":0,"369":0,"370":0,"371":0,"372":0,"373":0,"374":0,"375":0,"376":0,"377":0,"378":0,"379":0,"380":0,"381":0,"382":0,"383":0,"384":0,"385":0,"386":0,"387":0,"388":0,"389":0,"390":0,"391":0,"392":0,"393":0,"394":0,"395":0,"396":0,"397":0,"398":0,"399":0,"400":0,"401":0,"402":0,"403":0,"404":0,"405":0,"406":0,"407":0,"408":0,"409":0,"410":0,"411":0,"412":0},f:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0},b:{"0":[0,0],"1":[0,0],"2":[0],"3":[0],"4":[0],"5":[0],"6":[0],"7":[0],"8":[0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0,0],"17":[0,0],"18":[0,0],"19":[0,0],"20":[0,0],"21":[0,0],"22":[0,0],"23":[0],"24":[0,0],"25":[0,0],"26":[0],"27":[0],"28":[0,0],"29":[0,0],"30":[0,0],"31":[0,0],"32":[0,0],"33":[0,0],"34":[0,0],"35":[0,0],"36":[0,0],"37":[0,0],"38":[0,0],"39":[0,0],"40":[0,0],"41":[0,0],"42":[0,0],"43":[0,0],"44":[0,0],"45":[0,0],"46":[0,0],"47":[0,0],"48":[0,0],"49":[0,0],"50":[0,0],"51":[0,0],"52":[0,0],"53":[0],"54":[0],"55":[0],"56":[0],"57":[0,0],"58":[0,0],"59":[0,0],"60":[0,0],"61":[0,0],"62":[0,0],"63":[0,0],"64":[0,0],"65":[0,0],"66":[0,0],"67":[0,0],"68":[0,0],"69":[0,0],"70":[0,0],"71":[0,0],"72":[0,0],"73":[0,0],"74":[0,0]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"0949a5d7e06e37b0d3d9929399aaaff6f267dbef"};var coverage=global[gcv]||(global[gcv]={});if(!coverage[path]||coverage[path].hash!==hash){coverage[path]=coverageData;}var actualCoverage=coverage[path];{// @ts-ignore
cov_1kbb7fz0lp=function(){return actualCoverage;};}return actualCoverage;}cov_1kbb7fz0lp();const express=(cov_1kbb7fz0lp().s[0]++,require('express'));const bodyParser=(cov_1kbb7fz0lp().s[1]++,require('body-parser'));const cors=(cov_1kbb7fz0lp().s[2]++,require('cors'));const mysql=(cov_1kbb7fz0lp().s[3]++,require('mysql2/promise'));const path=(cov_1kbb7fz0lp().s[4]++,require('path'));const app=(cov_1kbb7fz0lp().s[5]++,express());const PORT=(cov_1kbb7fz0lp().s[6]++,(cov_1kbb7fz0lp().b[0][0]++,process.env.PORT)||(cov_1kbb7fz0lp().b[0][1]++,3000));// 配置CORS
cov_1kbb7fz0lp().s[7]++;app.use(cors());cov_1kbb7fz0lp().s[8]++;app.use((req,res,next)=>{cov_1kbb7fz0lp().f[0]++;cov_1kbb7fz0lp().s[9]++;res.header('Access-Control-Allow-Origin','*');cov_1kbb7fz0lp().s[10]++;res.header('Access-Control-Allow-Methods','GET, POST, PUT, DELETE, OPTIONS');cov_1kbb7fz0lp().s[11]++;res.header('Access-Control-Allow-Headers','Content-Type, Authorization');cov_1kbb7fz0lp().s[12]++;if(req.method==='OPTIONS'){cov_1kbb7fz0lp().b[1][0]++;cov_1kbb7fz0lp().s[13]++;res.status(200).end();cov_1kbb7fz0lp().s[14]++;return;}else{cov_1kbb7fz0lp().b[1][1]++;}cov_1kbb7fz0lp().s[15]++;next();});cov_1kbb7fz0lp().s[16]++;app.use(bodyParser.json());cov_1kbb7fz0lp().s[17]++;app.use(express.static(path.join(__dirname)));// 数据库配置
const dbConfig=(cov_1kbb7fz0lp().s[18]++,{host:'1.95.162.61',user:'root',password:'schl@2025',// 请替换为实际的数据库密码
database:'wechat_app',// 连接到wechat_app数据库
waitForConnections:true,connectionLimit:10,queueLimit:0});// userlogin数据库配置
const userLoginDbConfig=(cov_1kbb7fz0lp().s[19]++,{host:'1.95.162.61',user:'root',password:'schl@2025',// 请替换为实际的数据库密码
database:'userlogin',// 连接到userlogin数据库
waitForConnections:true,connectionLimit:10,queueLimit:0});// 创建数据库连接池
let pool;let userLoginPool;// 初始化数据库连接
async function initDatabase(){cov_1kbb7fz0lp().f[1]++;cov_1kbb7fz0lp().s[20]++;try{cov_1kbb7fz0lp().s[21]++;pool=mysql.createPool(dbConfig);cov_1kbb7fz0lp().s[22]++;console.log('wechat_app数据库连接池创建成功');// 初始化userlogin数据库连接池
cov_1kbb7fz0lp().s[23]++;userLoginPool=mysql.createPool(userLoginDbConfig);cov_1kbb7fz0lp().s[24]++;console.log('userlogin数据库连接池创建成功');// 测试wechat_app连接
const connection=(cov_1kbb7fz0lp().s[25]++,await pool.getConnection());cov_1kbb7fz0lp().s[26]++;console.log('wechat_app数据库连接测试成功');cov_1kbb7fz0lp().s[27]++;connection.release();// 测试userlogin连接
const userLoginConnection=(cov_1kbb7fz0lp().s[28]++,await userLoginPool.getConnection());cov_1kbb7fz0lp().s[29]++;console.log('userlogin数据库连接测试成功');cov_1kbb7fz0lp().s[30]++;userLoginConnection.release();// 确保数据库结构
cov_1kbb7fz0lp().s[31]++;await ensureDatabaseSchema();}catch(error){cov_1kbb7fz0lp().s[32]++;console.error('数据库初始化失败:',error.message);cov_1kbb7fz0lp().s[33]++;console.error('错误详情:',error);// 如果初始化失败,尝试重新初始化
cov_1kbb7fz0lp().s[34]++;setTimeout(()=>{cov_1kbb7fz0lp().f[2]++;cov_1kbb7fz0lp().s[35]++;console.log('尝试重新初始化数据库连接...');cov_1kbb7fz0lp().s[36]++;initDatabase();},5000);}}// 通用响应函数
function sendResponse(res,success,data=(cov_1kbb7fz0lp().b[2][0]++,null),message=(cov_1kbb7fz0lp().b[3][0]++,'')){cov_1kbb7fz0lp().f[3]++;cov_1kbb7fz0lp().s[37]++;res.json({success,data,message});}// 获取货源列表API
cov_1kbb7fz0lp().s[38]++;app.get('/api/supplies',async(req,res)=>{cov_1kbb7fz0lp().f[4]++;cov_1kbb7fz0lp().s[39]++;console.log('收到获取货源列表请求:',req.query);cov_1kbb7fz0lp().s[40]++;try{const connection=(cov_1kbb7fz0lp().s[41]++,await pool.getConnection());// 支持search和keyword两种参数名,确保兼容性
const{page=(cov_1kbb7fz0lp().b[4][0]++,1),pageSize=(cov_1kbb7fz0lp().b[5][0]++,10),search=(cov_1kbb7fz0lp().b[6][0]++,''),keyword=(cov_1kbb7fz0lp().b[7][0]++,''),status=(cov_1kbb7fz0lp().b[8][0]++,'')}=(cov_1kbb7fz0lp().s[42]++,req.query);// 如果提供了keyword参数,优先使用keyword
const actualSearch=(cov_1kbb7fz0lp().s[43]++,(cov_1kbb7fz0lp().b[9][0]++,keyword)||(cov_1kbb7fz0lp().b[9][1]++,search));const offset=(cov_1kbb7fz0lp().s[44]++,(page-1)*pageSize);// 构建基础查询,添加LEFT JOIN获取用户信息
let query=(cov_1kbb7fz0lp().s[45]++,'SELECT p.*, u.phoneNumber, u.nickName FROM products p LEFT JOIN users u ON p.sellerId = u.userId');let countQuery=(cov_1kbb7fz0lp().s[46]++,'SELECT COUNT(*) as total FROM products p LEFT JOIN users u ON p.sellerId = u.userId');let whereClause=(cov_1kbb7fz0lp().s[47]++,'');let params=(cov_1kbb7fz0lp().s[48]++,[]);// 添加搜索条件
cov_1kbb7fz0lp().s[49]++;if(actualSearch){cov_1kbb7fz0lp().b[10][0]++;cov_1kbb7fz0lp().s[50]++;whereClause+=` WHERE (p.id LIKE ? OR p.productId LIKE ? OR p.productName LIKE ?)`;cov_1kbb7fz0lp().s[51]++;params.push(`%${actualSearch}%`,`%${actualSearch}%`,`%${actualSearch}%`);}else{cov_1kbb7fz0lp().b[10][1]++;}// 添加状态筛选
cov_1kbb7fz0lp().s[52]++;if(status){cov_1kbb7fz0lp().b[11][0]++;cov_1kbb7fz0lp().s[53]++;whereClause+=actualSearch?(cov_1kbb7fz0lp().b[12][0]++,' AND'):(cov_1kbb7fz0lp().b[12][1]++,' WHERE');cov_1kbb7fz0lp().s[54]++;whereClause+=` status = ?`;cov_1kbb7fz0lp().s[55]++;params.push(status);}else{cov_1kbb7fz0lp().b[11][1]++;}// 执行查询
const[results]=(cov_1kbb7fz0lp().s[56]++,await connection.query(`${query}${whereClause} ORDER BY p.id DESC LIMIT ? OFFSET ?`,[...params,parseInt(pageSize),offset]));// 获取总数
const[countResults]=(cov_1kbb7fz0lp().s[57]++,await connection.query(`${countQuery}${whereClause}`,params));cov_1kbb7fz0lp().s[58]++;connection.release();// 处理返回结果中的imageUrls字段
const processedResults=(cov_1kbb7fz0lp().s[59]++,results.map(product=>{cov_1kbb7fz0lp().f[5]++;// 处理imageUrls字段
let imageUrls=(cov_1kbb7fz0lp().s[60]++,[]);cov_1kbb7fz0lp().s[61]++;if(product.imageUrls){cov_1kbb7fz0lp().b[13][0]++;cov_1kbb7fz0lp().s[62]++;if(typeof product.imageUrls==='string'){cov_1kbb7fz0lp().b[14][0]++;cov_1kbb7fz0lp().s[63]++;// 尝试解析为JSON数组
try{let parsedImages=(cov_1kbb7fz0lp().s[64]++,JSON.parse(product.imageUrls));// 检查是否是JSON字符串的字符串表示(转义的JSON)
cov_1kbb7fz0lp().s[65]++;if((cov_1kbb7fz0lp().b[16][0]++,typeof parsedImages==='string')&&((cov_1kbb7fz0lp().b[16][1]++,parsedImages.startsWith('['))||(cov_1kbb7fz0lp().b[16][2]++,parsedImages.startsWith('{')))){cov_1kbb7fz0lp().b[15][0]++;cov_1kbb7fz0lp().s[66]++;// 进行第二次解析
parsedImages=JSON.parse(parsedImages);}else{cov_1kbb7fz0lp().b[15][1]++;}cov_1kbb7fz0lp().s[67]++;if(Array.isArray(parsedImages)){cov_1kbb7fz0lp().b[17][0]++;cov_1kbb7fz0lp().s[68]++;imageUrls=parsedImages;}else{cov_1kbb7fz0lp().b[17][1]++;cov_1kbb7fz0lp().s[69]++;if(typeof parsedImages==='string'){cov_1kbb7fz0lp().b[18][0]++;cov_1kbb7fz0lp().s[70]++;// 如果解析结果是字符串,可能是单个URL
imageUrls=[parsedImages];}else{cov_1kbb7fz0lp().b[18][1]++;}}}catch(e){cov_1kbb7fz0lp().s[71]++;// 解析失败,尝试按逗号分隔
if(product.imageUrls.includes(',')){cov_1kbb7fz0lp().b[19][0]++;cov_1kbb7fz0lp().s[72]++;imageUrls=product.imageUrls.split(',').map(url=>{cov_1kbb7fz0lp().f[6]++;cov_1kbb7fz0lp().s[73]++;return url.trim();});}else{cov_1kbb7fz0lp().b[19][1]++;cov_1kbb7fz0lp().s[74]++;// 作为单个URL处理
imageUrls=[product.imageUrls.trim()];}}}else{cov_1kbb7fz0lp().b[14][1]++;cov_1kbb7fz0lp().s[75]++;if(Array.isArray(product.imageUrls)){cov_1kbb7fz0lp().b[20][0]++;cov_1kbb7fz0lp().s[76]++;// 已经是数组,直接使用
imageUrls=product.imageUrls;}else{cov_1kbb7fz0lp().b[20][1]++;cov_1kbb7fz0lp().s[77]++;// 其他类型,转换为字符串数组
imageUrls=[String(product.imageUrls)];}}}else{cov_1kbb7fz0lp().b[13][1]++;}// 过滤并处理无效的URL:移除反引号并验证
cov_1kbb7fz0lp().s[78]++;imageUrls=imageUrls.filter(url=>{cov_1kbb7fz0lp().f[7]++;cov_1kbb7fz0lp().s[79]++;if(!url){cov_1kbb7fz0lp().b[21][0]++;cov_1kbb7fz0lp().s[80]++;return false;}else{cov_1kbb7fz0lp().b[21][1]++;}const processedUrl=(cov_1kbb7fz0lp().s[81]++,url.replace(/`/g,'').trim());cov_1kbb7fz0lp().s[82]++;return(cov_1kbb7fz0lp().b[22][0]++,processedUrl.startsWith('http://'))||(cov_1kbb7fz0lp().b[22][1]++,processedUrl.startsWith('https://'));})// 对每个有效URL进行处理,移除反引号
.map(url=>{cov_1kbb7fz0lp().f[8]++;cov_1kbb7fz0lp().s[83]++;return url.replace(/`/g,'').trim();});cov_1kbb7fz0lp().s[84]++;return{...product,imageUrls};}));// 返回结果
cov_1kbb7fz0lp().s[85]++;sendResponse(res,true,{list:processedResults,total:countResults[0].total,page:parseInt(page),pageSize:parseInt(pageSize)},'获取货源列表成功');}catch(error){cov_1kbb7fz0lp().s[86]++;console.error('获取货源列表失败:',error.message);cov_1kbb7fz0lp().s[87]++;console.error('错误详情:',error);cov_1kbb7fz0lp().s[88]++;sendResponse(res,false,null,'获取货源列表失败');}});// 审核通过API
cov_1kbb7fz0lp().s[89]++;app.post('/api/supplies/:id/approve',async(req,res)=>{cov_1kbb7fz0lp().f[9]++;cov_1kbb7fz0lp().s[90]++;console.log('收到审核通过请求:',req.params.id,req.body);cov_1kbb7fz0lp().s[91]++;try{const connection=(cov_1kbb7fz0lp().s[92]++,await pool.getConnection());const{remark=(cov_1kbb7fz0lp().b[23][0]++,'')}=(cov_1kbb7fz0lp().s[93]++,req.body);const productId=(cov_1kbb7fz0lp().s[94]++,req.params.id);// 开始事务
cov_1kbb7fz0lp().s[95]++;await connection.beginTransaction();// 检查当前状态
const[currentProduct]=(cov_1kbb7fz0lp().s[96]++,await connection.query('SELECT status FROM products WHERE id = ?',[productId]));cov_1kbb7fz0lp().s[97]++;if(currentProduct.length===0){cov_1kbb7fz0lp().b[24][0]++;cov_1kbb7fz0lp().s[98]++;await connection.rollback();cov_1kbb7fz0lp().s[99]++;connection.release();cov_1kbb7fz0lp().s[100]++;return sendResponse(res,false,null,'货源不存在');}else{cov_1kbb7fz0lp().b[24][1]++;}// 检查状态是否可审核,增加对多种待审核状态的支持
cov_1kbb7fz0lp().s[101]++;if(!['pending','draft','pending_review','underreview','待审核'].includes(currentProduct[0].status)){cov_1kbb7fz0lp().b[25][0]++;cov_1kbb7fz0lp().s[102]++;await connection.rollback();cov_1kbb7fz0lp().s[103]++;connection.release();cov_1kbb7fz0lp().s[104]++;return sendResponse(res,false,null,'该货源已审核,无需重复操作');}else{cov_1kbb7fz0lp().b[25][1]++;}// 更新状态
cov_1kbb7fz0lp().s[105]++;await connection.query('UPDATE products SET status = ?, audit_time = ? WHERE id = ?',['published',new Date(),productId]);// 记录日志
cov_1kbb7fz0lp().s[106]++;await connection.query('INSERT INTO audit_logs (supply_id, action, user_id, remark, created_at) VALUES (?, ?, ?, ?, ?)',[productId,'approve','system',remark,new Date()]);// 提交事务
cov_1kbb7fz0lp().s[107]++;await connection.commit();cov_1kbb7fz0lp().s[108]++;connection.release();cov_1kbb7fz0lp().s[109]++;sendResponse(res,true,null,'审核通过成功');}catch(error){cov_1kbb7fz0lp().s[110]++;console.error('审核通过失败:',error.message);cov_1kbb7fz0lp().s[111]++;console.error('错误详情:',error);cov_1kbb7fz0lp().s[112]++;sendResponse(res,false,null,'审核通过失败');}});cov_1kbb7fz0lp().s[113]++;console.log('正在注册拒绝审核API路由: /api/supplies/:id/reject');// 审核拒绝API
cov_1kbb7fz0lp().s[114]++;app.post('/api/supplies/:id/reject',async(req,res)=>{cov_1kbb7fz0lp().f[10]++;cov_1kbb7fz0lp().s[115]++;console.log('收到审核拒绝请求:',req.params.id,req.body);cov_1kbb7fz0lp().s[116]++;try{const connection=(cov_1kbb7fz0lp().s[117]++,await pool.getConnection());// 同时支持reason和rejectReason参数,保持向后兼容
const{reason,rejectReason=(cov_1kbb7fz0lp().b[26][0]++,''),remark=(cov_1kbb7fz0lp().b[27][0]++,'')}=(cov_1kbb7fz0lp().s[118]++,req.body);// 如果有reason参数,则使用reason,否则使用rejectReason
const actualRejectReason=(cov_1kbb7fz0lp().s[119]++,(cov_1kbb7fz0lp().b[28][0]++,reason)||(cov_1kbb7fz0lp().b[28][1]++,rejectReason));const productId=(cov_1kbb7fz0lp().s[120]++,req.params.id);// 开始事务
cov_1kbb7fz0lp().s[121]++;await connection.beginTransaction();// 检查当前状态
const[currentProduct]=(cov_1kbb7fz0lp().s[122]++,await connection.query('SELECT status FROM products WHERE id = ?',[productId]));cov_1kbb7fz0lp().s[123]++;if(currentProduct.length===0){cov_1kbb7fz0lp().b[29][0]++;cov_1kbb7fz0lp().s[124]++;await connection.rollback();cov_1kbb7fz0lp().s[125]++;connection.release();cov_1kbb7fz0lp().s[126]++;return sendResponse(res,false,null,'货源不存在');}else{cov_1kbb7fz0lp().b[29][1]++;}cov_1kbb7fz0lp().s[127]++;if((cov_1kbb7fz0lp().b[31][0]++,currentProduct[0].status!=='underreview')&&(cov_1kbb7fz0lp().b[31][1]++,currentProduct[0].status!=='pending_review')){cov_1kbb7fz0lp().b[30][0]++;cov_1kbb7fz0lp().s[128]++;await connection.rollback();cov_1kbb7fz0lp().s[129]++;connection.release();cov_1kbb7fz0lp().s[130]++;return sendResponse(res,false,null,'当前状态不允许审核拒绝');}else{cov_1kbb7fz0lp().b[30][1]++;}// 更新状态和拒绝理由
cov_1kbb7fz0lp().s[131]++;await connection.query('UPDATE products SET status = ?, rejectReason = ?, audit_time = ? WHERE id = ?',['reviewfailed',actualRejectReason,new Date(),productId]);// 记录日志
cov_1kbb7fz0lp().s[132]++;await connection.query('INSERT INTO audit_logs (supply_id, action, user_id, remark, created_at) VALUES (?, ?, ?, ?, ?)',[productId,'reject','system',remark,new Date()]);// 提交事务
cov_1kbb7fz0lp().s[133]++;await connection.commit();cov_1kbb7fz0lp().s[134]++;connection.release();cov_1kbb7fz0lp().s[135]++;sendResponse(res,true,null,'审核拒绝成功');}catch(error){cov_1kbb7fz0lp().s[136]++;console.error('审核拒绝失败:',error.message);cov_1kbb7fz0lp().s[137]++;console.error('错误详情:',error);cov_1kbb7fz0lp().s[138]++;sendResponse(res,false,null,'审核拒绝失败');}});// 获取供应商列表API已删除
// 供应商审核通过API已删除
// 供应商审核拒绝API已删除
// 供应商开始合作API已删除
// 供应商终止合作API已删除
cov_1kbb7fz0lp().s[139]++;console.log('正在注册测试API路由: /api/test-db');// 测试数据库连接API
cov_1kbb7fz0lp().s[140]++;app.get('/api/test-db',async(req,res)=>{cov_1kbb7fz0lp().f[11]++;cov_1kbb7fz0lp().s[141]++;console.log('收到数据库连接测试请求');cov_1kbb7fz0lp().s[142]++;try{const connection=(cov_1kbb7fz0lp().s[143]++,await pool.getConnection());const[results]=(cov_1kbb7fz0lp().s[144]++,await connection.query('SELECT 1 + 1 as solution'));cov_1kbb7fz0lp().s[145]++;connection.release();cov_1kbb7fz0lp().s[146]++;sendResponse(res,true,results[0],'数据库连接成功');}catch(error){cov_1kbb7fz0lp().s[147]++;console.error('数据库连接测试失败:',error.message);cov_1kbb7fz0lp().s[148]++;console.error('错误详情:',error);cov_1kbb7fz0lp().s[149]++;sendResponse(res,false,null,'数据库连接测试失败');}});// 获取联系人数据API
cov_1kbb7fz0lp().s[150]++;app.get('/api/contacts',async(req,res)=>{cov_1kbb7fz0lp().f[12]++;cov_1kbb7fz0lp().s[151]++;try{// 从userlogin数据库获取销售员信息
const userLoginConnection=(cov_1kbb7fz0lp().s[152]++,await userLoginPool.getConnection());const[salesPersons]=(cov_1kbb7fz0lp().s[153]++,await userLoginConnection.query('SELECT DISTINCT projectName, userName FROM login WHERE projectName = "销售员"'));cov_1kbb7fz0lp().s[154]++;userLoginConnection.release();cov_1kbb7fz0lp().s[155]++;if(salesPersons.length===0){cov_1kbb7fz0lp().b[32][0]++;cov_1kbb7fz0lp().s[156]++;sendResponse(res,true,[],'没有找到销售员信息');cov_1kbb7fz0lp().s[157]++;return;}else{cov_1kbb7fz0lp().b[32][1]++;}// 从wechat_app数据库获取用户电话号码
const connection=(cov_1kbb7fz0lp().s[158]++,await pool.getConnection());// 创建用户名数组用于批量查询
const userNames=(cov_1kbb7fz0lp().s[159]++,salesPersons.map(person=>{cov_1kbb7fz0lp().f[13]++;cov_1kbb7fz0lp().s[160]++;return person.userName;}));// 使用IN语句批量查询用户信息,提高效率
const[userResults]=(cov_1kbb7fz0lp().s[161]++,await connection.query('SELECT nickName, company, phoneNumber FROM users WHERE nickName IN (?) OR company IN (?)',[userNames,userNames]));cov_1kbb7fz0lp().s[162]++;connection.release();// 创建联系人数据数组
const contacts=(cov_1kbb7fz0lp().s[163]++,[]);const processedUsers=(cov_1kbb7fz0lp().s[164]++,new Set());// 用于避免重复记录
// 遍历销售员列表
cov_1kbb7fz0lp().s[165]++;for(const salesPerson of salesPersons){const{userName}=(cov_1kbb7fz0lp().s[166]++,salesPerson);// 查找匹配的用户
const matchedUsers=(cov_1kbb7fz0lp().s[167]++,userResults.filter(user=>{cov_1kbb7fz0lp().f[14]++;cov_1kbb7fz0lp().s[168]++;return(cov_1kbb7fz0lp().b[33][0]++,user.nickName===userName)||(cov_1kbb7fz0lp().b[33][1]++,user.company===userName);}));cov_1kbb7fz0lp().s[169]++;if(matchedUsers.length>0){cov_1kbb7fz0lp().b[34][0]++;cov_1kbb7fz0lp().s[170]++;for(const user of matchedUsers){cov_1kbb7fz0lp().s[171]++;// 只添加有电话号码的联系人,并且避免重复
if((cov_1kbb7fz0lp().b[36][0]++,user.phoneNumber)&&(cov_1kbb7fz0lp().b[36][1]++,user.phoneNumber.trim()!=='')){cov_1kbb7fz0lp().b[35][0]++;const userKey=(cov_1kbb7fz0lp().s[172]++,`${userName}-${user.phoneNumber}`);cov_1kbb7fz0lp().s[173]++;if(!processedUsers.has(userKey)){cov_1kbb7fz0lp().b[37][0]++;cov_1kbb7fz0lp().s[174]++;processedUsers.add(userKey);cov_1kbb7fz0lp().s[175]++;contacts.push({id:contacts.length+1,salesPerson:salesPerson.projectName,name:userName,phoneNumber:user.phoneNumber});}else{cov_1kbb7fz0lp().b[37][1]++;}}else{cov_1kbb7fz0lp().b[35][1]++;}}}else{cov_1kbb7fz0lp().b[34][1]++;}// 如果没有找到匹配的用户或匹配的用户没有电话号码,跳过此销售员
}cov_1kbb7fz0lp().s[176]++;sendResponse(res,true,contacts,'联系人数据获取成功');}catch(error){cov_1kbb7fz0lp().s[177]++;console.error('获取联系人数据失败:',error.message);cov_1kbb7fz0lp().s[178]++;console.error('错误详情:',error);cov_1kbb7fz0lp().s[179]++;sendResponse(res,false,null,'获取联系人数据失败');}});// 更新产品联系人API
cov_1kbb7fz0lp().s[180]++;app.put('/api/supplies/:id/contact',async(req,res)=>{cov_1kbb7fz0lp().f[15]++;cov_1kbb7fz0lp().s[181]++;try{const{id}=(cov_1kbb7fz0lp().s[182]++,req.params);const{productContact,contactPhone}=(cov_1kbb7fz0lp().s[183]++,req.body);// 移除"联系人"前缀和"销售员 - "前缀
const processedProductContact=(cov_1kbb7fz0lp().s[184]++,productContact.replace(/^(联系人|销售员\s*-\s*)/g,'').trim());const connection=(cov_1kbb7fz0lp().s[185]++,await pool.getConnection());// 更新产品的联系人信息
const[result]=(cov_1kbb7fz0lp().s[186]++,await connection.query('UPDATE products SET product_contact = ?, contact_phone = ? WHERE id = ?',[processedProductContact,contactPhone,id]));cov_1kbb7fz0lp().s[187]++;connection.release();cov_1kbb7fz0lp().s[188]++;if(result.affectedRows===0){cov_1kbb7fz0lp().b[38][0]++;cov_1kbb7fz0lp().s[189]++;sendResponse(res,false,null,'未找到指定的产品');cov_1kbb7fz0lp().s[190]++;return;}else{cov_1kbb7fz0lp().b[38][1]++;}cov_1kbb7fz0lp().s[191]++;sendResponse(res,true,null,'产品联系人信息更新成功');}catch(error){cov_1kbb7fz0lp().s[192]++;console.error('更新产品联系人信息失败:',error.message);cov_1kbb7fz0lp().s[193]++;console.error('错误详情:',error);cov_1kbb7fz0lp().s[194]++;sendResponse(res,false,null,'更新产品联系人信息失败');}});// 供应商审核通过API - /api/suppliers/:id/approve
cov_1kbb7fz0lp().s[195]++;console.log('正在注册供应商审核通过API路由: /api/suppliers/:id/approve');cov_1kbb7fz0lp().s[196]++;app.post('/api/suppliers/:id/approve',async(req,res)=>{cov_1kbb7fz0lp().f[16]++;cov_1kbb7fz0lp().s[197]++;console.log('收到供应商审核通过请求:',req.params);cov_1kbb7fz0lp().s[198]++;try{const connection=(cov_1kbb7fz0lp().s[199]++,await pool.getConnection());const userId=(cov_1kbb7fz0lp().s[200]++,req.params.id);cov_1kbb7fz0lp().s[201]++;if(!userId){cov_1kbb7fz0lp().b[39][0]++;cov_1kbb7fz0lp().s[202]++;connection.release();cov_1kbb7fz0lp().s[203]++;return sendResponse(res,false,null,'用户ID不能为空');}else{cov_1kbb7fz0lp().b[39][1]++;}// 开始事务
cov_1kbb7fz0lp().s[204]++;await connection.beginTransaction();// 检查当前状态
const[currentUser]=(cov_1kbb7fz0lp().s[205]++,await connection.query('SELECT partnerstatus FROM users WHERE userId = ?',[userId]));cov_1kbb7fz0lp().s[206]++;if(currentUser.length===0){cov_1kbb7fz0lp().b[40][0]++;cov_1kbb7fz0lp().s[207]++;await connection.rollback();cov_1kbb7fz0lp().s[208]++;connection.release();cov_1kbb7fz0lp().s[209]++;return sendResponse(res,false,null,'供应商不存在');}else{cov_1kbb7fz0lp().b[40][1]++;}cov_1kbb7fz0lp().s[210]++;if(currentUser[0].partnerstatus!=='underreview'){cov_1kbb7fz0lp().b[41][0]++;cov_1kbb7fz0lp().s[211]++;await connection.rollback();cov_1kbb7fz0lp().s[212]++;connection.release();cov_1kbb7fz0lp().s[213]++;return sendResponse(res,false,null,'当前状态不允许审核通过');}else{cov_1kbb7fz0lp().b[41][1]++;}// 更新状态和审核时间
cov_1kbb7fz0lp().s[214]++;await connection.query('UPDATE users SET partnerstatus = ?, audit_time = ? WHERE userId = ?',['approved',new Date(),userId]);// 提交事务
cov_1kbb7fz0lp().s[215]++;await connection.commit();cov_1kbb7fz0lp().s[216]++;connection.release();cov_1kbb7fz0lp().s[217]++;sendResponse(res,true,null,'供应商审核通过成功');}catch(error){cov_1kbb7fz0lp().s[218]++;console.error('供应商审核通过失败:',error.message);cov_1kbb7fz0lp().s[219]++;console.error('错误详情:',error);cov_1kbb7fz0lp().s[220]++;sendResponse(res,false,null,'供应商审核通过失败');}});// 供应商审核拒绝API - /api/suppliers/:id/reject
cov_1kbb7fz0lp().s[221]++;console.log('正在注册供应商审核拒绝API路由: /api/suppliers/:id/reject');cov_1kbb7fz0lp().s[222]++;app.post('/api/suppliers/:id/reject',async(req,res)=>{cov_1kbb7fz0lp().f[17]++;cov_1kbb7fz0lp().s[223]++;console.log('收到供应商审核拒绝请求:',req.params,req.body);cov_1kbb7fz0lp().s[224]++;try{const connection=(cov_1kbb7fz0lp().s[225]++,await pool.getConnection());const userId=(cov_1kbb7fz0lp().s[226]++,req.params.id);const{rejectReason}=(cov_1kbb7fz0lp().s[227]++,req.body);cov_1kbb7fz0lp().s[228]++;if(!userId){cov_1kbb7fz0lp().b[42][0]++;cov_1kbb7fz0lp().s[229]++;connection.release();cov_1kbb7fz0lp().s[230]++;return sendResponse(res,false,null,'用户ID不能为空');}else{cov_1kbb7fz0lp().b[42][1]++;}cov_1kbb7fz0lp().s[231]++;if(!rejectReason){cov_1kbb7fz0lp().b[43][0]++;cov_1kbb7fz0lp().s[232]++;connection.release();cov_1kbb7fz0lp().s[233]++;return sendResponse(res,false,null,'审核失败原因不能为空');}else{cov_1kbb7fz0lp().b[43][1]++;}// 开始事务
cov_1kbb7fz0lp().s[234]++;await connection.beginTransaction();// 检查当前状态
const[currentUser]=(cov_1kbb7fz0lp().s[235]++,await connection.query('SELECT partnerstatus FROM users WHERE userId = ?',[userId]));cov_1kbb7fz0lp().s[236]++;if(currentUser.length===0){cov_1kbb7fz0lp().b[44][0]++;cov_1kbb7fz0lp().s[237]++;await connection.rollback();cov_1kbb7fz0lp().s[238]++;connection.release();cov_1kbb7fz0lp().s[239]++;return sendResponse(res,false,null,'供应商不存在');}else{cov_1kbb7fz0lp().b[44][1]++;}cov_1kbb7fz0lp().s[240]++;if(currentUser[0].partnerstatus!=='underreview'){cov_1kbb7fz0lp().b[45][0]++;cov_1kbb7fz0lp().s[241]++;await connection.rollback();cov_1kbb7fz0lp().s[242]++;connection.release();cov_1kbb7fz0lp().s[243]++;return sendResponse(res,false,null,'当前状态不允许审核拒绝');}else{cov_1kbb7fz0lp().b[45][1]++;}// 更新状态、审核失败原因和审核时间
cov_1kbb7fz0lp().s[244]++;await connection.query('UPDATE users SET partnerstatus = ?, reasonforfailure = ?, audit_time = ? WHERE userId = ?',['reviewfailed',rejectReason,new Date(),userId]);// 提交事务
cov_1kbb7fz0lp().s[245]++;await connection.commit();cov_1kbb7fz0lp().s[246]++;connection.release();cov_1kbb7fz0lp().s[247]++;sendResponse(res,true,null,'供应商审核拒绝成功');}catch(error){cov_1kbb7fz0lp().s[248]++;console.error('供应商审核拒绝失败:',error.message);cov_1kbb7fz0lp().s[249]++;console.error('错误详情:',error);cov_1kbb7fz0lp().s[250]++;sendResponse(res,false,null,'供应商审核拒绝失败');}});// 供应商开始合作API - /api/suppliers/:id/cooperate
cov_1kbb7fz0lp().s[251]++;console.log('正在注册供应商开始合作API路由: /api/suppliers/:id/cooperate');cov_1kbb7fz0lp().s[252]++;app.post('/api/suppliers/:id/cooperate',async(req,res)=>{cov_1kbb7fz0lp().f[18]++;cov_1kbb7fz0lp().s[253]++;console.log('收到供应商开始合作请求:',req.params);cov_1kbb7fz0lp().s[254]++;try{const connection=(cov_1kbb7fz0lp().s[255]++,await pool.getConnection());const userId=(cov_1kbb7fz0lp().s[256]++,req.params.id);cov_1kbb7fz0lp().s[257]++;if(!userId){cov_1kbb7fz0lp().b[46][0]++;cov_1kbb7fz0lp().s[258]++;connection.release();cov_1kbb7fz0lp().s[259]++;return sendResponse(res,false,null,'用户ID不能为空');}else{cov_1kbb7fz0lp().b[46][1]++;}// 开始事务
cov_1kbb7fz0lp().s[260]++;await connection.beginTransaction();// 检查当前状态
const[currentUser]=(cov_1kbb7fz0lp().s[261]++,await connection.query('SELECT partnerstatus FROM users WHERE userId = ?',[userId]));cov_1kbb7fz0lp().s[262]++;if(currentUser.length===0){cov_1kbb7fz0lp().b[47][0]++;cov_1kbb7fz0lp().s[263]++;await connection.rollback();cov_1kbb7fz0lp().s[264]++;connection.release();cov_1kbb7fz0lp().s[265]++;return sendResponse(res,false,null,'供应商不存在');}else{cov_1kbb7fz0lp().b[47][1]++;}cov_1kbb7fz0lp().s[266]++;if(currentUser[0].partnerstatus!=='approved'){cov_1kbb7fz0lp().b[48][0]++;cov_1kbb7fz0lp().s[267]++;await connection.rollback();cov_1kbb7fz0lp().s[268]++;connection.release();cov_1kbb7fz0lp().s[269]++;return sendResponse(res,false,null,'只有审核通过的供应商才能开始合作');}else{cov_1kbb7fz0lp().b[48][1]++;}// 更新状态
cov_1kbb7fz0lp().s[270]++;await connection.query('UPDATE users SET partnerstatus = ? WHERE userId = ?',['incooperation',userId]);// 提交事务
cov_1kbb7fz0lp().s[271]++;await connection.commit();cov_1kbb7fz0lp().s[272]++;connection.release();cov_1kbb7fz0lp().s[273]++;sendResponse(res,true,null,'供应商开始合作成功');}catch(error){cov_1kbb7fz0lp().s[274]++;console.error('供应商开始合作失败:',error.message);cov_1kbb7fz0lp().s[275]++;console.error('错误详情:',error);cov_1kbb7fz0lp().s[276]++;sendResponse(res,false,null,'供应商开始合作失败');}});// 供应商终止合作API - /api/suppliers/:id/terminate
cov_1kbb7fz0lp().s[277]++;console.log('正在注册供应商终止合作API路由: /api/suppliers/:id/terminate');cov_1kbb7fz0lp().s[278]++;app.post('/api/suppliers/:id/terminate',async(req,res)=>{cov_1kbb7fz0lp().f[19]++;cov_1kbb7fz0lp().s[279]++;console.log('收到供应商终止合作请求:',req.params,req.body);cov_1kbb7fz0lp().s[280]++;try{const connection=(cov_1kbb7fz0lp().s[281]++,await pool.getConnection());const userId=(cov_1kbb7fz0lp().s[282]++,req.params.id);const{reason}=(cov_1kbb7fz0lp().s[283]++,req.body);cov_1kbb7fz0lp().s[284]++;if(!userId){cov_1kbb7fz0lp().b[49][0]++;cov_1kbb7fz0lp().s[285]++;connection.release();cov_1kbb7fz0lp().s[286]++;return sendResponse(res,false,null,'用户ID不能为空');}else{cov_1kbb7fz0lp().b[49][1]++;}// 开始事务
cov_1kbb7fz0lp().s[287]++;await connection.beginTransaction();// 检查当前状态
const[currentUser]=(cov_1kbb7fz0lp().s[288]++,await connection.query('SELECT partnerstatus FROM users WHERE userId = ?',[userId]));cov_1kbb7fz0lp().s[289]++;if(currentUser.length===0){cov_1kbb7fz0lp().b[50][0]++;cov_1kbb7fz0lp().s[290]++;await connection.rollback();cov_1kbb7fz0lp().s[291]++;connection.release();cov_1kbb7fz0lp().s[292]++;return sendResponse(res,false,null,'供应商不存在');}else{cov_1kbb7fz0lp().b[50][1]++;}cov_1kbb7fz0lp().s[293]++;if((cov_1kbb7fz0lp().b[52][0]++,currentUser[0].partnerstatus!=='approved')&&(cov_1kbb7fz0lp().b[52][1]++,currentUser[0].partnerstatus!=='incooperation')){cov_1kbb7fz0lp().b[51][0]++;cov_1kbb7fz0lp().s[294]++;await connection.rollback();cov_1kbb7fz0lp().s[295]++;connection.release();cov_1kbb7fz0lp().s[296]++;return sendResponse(res,false,null,'只有审核通过或合作中的供应商才能终止合作');}else{cov_1kbb7fz0lp().b[51][1]++;}// 更新状态和终止原因
cov_1kbb7fz0lp().s[297]++;await connection.query('UPDATE users SET partnerstatus = ?, terminate_reason = ? WHERE userId = ?',['notcooperative',reason,userId]);// 提交事务
cov_1kbb7fz0lp().s[298]++;await connection.commit();cov_1kbb7fz0lp().s[299]++;connection.release();cov_1kbb7fz0lp().s[300]++;sendResponse(res,true,null,'供应商终止合作成功');}catch(error){cov_1kbb7fz0lp().s[301]++;console.error('供应商终止合作失败:',error.message);cov_1kbb7fz0lp().s[302]++;console.error('错误详情:',error);cov_1kbb7fz0lp().s[303]++;sendResponse(res,false,null,'供应商终止合作失败');}});// 供应商列表查询API - /api/suppliers
cov_1kbb7fz0lp().s[304]++;console.log('正在注册供应商列表查询API路由: /api/suppliers');cov_1kbb7fz0lp().s[305]++;app.get('/api/suppliers',async(req,res)=>{cov_1kbb7fz0lp().f[20]++;cov_1kbb7fz0lp().s[306]++;console.log('收到供应商列表查询请求:',req.query);cov_1kbb7fz0lp().s[307]++;try{const connection=(cov_1kbb7fz0lp().s[308]++,await pool.getConnection());const{page=(cov_1kbb7fz0lp().b[53][0]++,1),pageSize=(cov_1kbb7fz0lp().b[54][0]++,10),status=(cov_1kbb7fz0lp().b[55][0]++,''),keyword=(cov_1kbb7fz0lp().b[56][0]++,'')}=(cov_1kbb7fz0lp().s[309]++,req.query);// 构建查询条件
let whereClause=(cov_1kbb7fz0lp().s[310]++,'');let params=(cov_1kbb7fz0lp().s[311]++,[]);// 添加状态筛选
cov_1kbb7fz0lp().s[312]++;if(status){cov_1kbb7fz0lp().b[57][0]++;cov_1kbb7fz0lp().s[313]++;whereClause+=` WHERE partnerstatus = ?`;cov_1kbb7fz0lp().s[314]++;params.push(status);}else{cov_1kbb7fz0lp().b[57][1]++;}// 添加关键词搜索
cov_1kbb7fz0lp().s[315]++;if(keyword){cov_1kbb7fz0lp().b[58][0]++;cov_1kbb7fz0lp().s[316]++;whereClause+=status?(cov_1kbb7fz0lp().b[59][0]++,' AND'):(cov_1kbb7fz0lp().b[59][1]++,' WHERE');cov_1kbb7fz0lp().s[317]++;whereClause+=` (username LIKE ? OR company LIKE ? OR phoneNumber LIKE ?)`;cov_1kbb7fz0lp().s[318]++;params.push(`%${keyword}%`,`%${keyword}%`,`%${keyword}%`);}else{cov_1kbb7fz0lp().b[58][1]++;}// 获取总数
const[totalResult]=(cov_1kbb7fz0lp().s[319]++,await connection.query(`SELECT COUNT(*) as total FROM users${whereClause}`,params));const total=(cov_1kbb7fz0lp().s[320]++,totalResult[0].total);// 计算分页
const offset=(cov_1kbb7fz0lp().s[321]++,(page-1)*pageSize);cov_1kbb7fz0lp().s[322]++;params.push(parseInt(pageSize),offset);// 查询供应商列表
const[suppliers]=(cov_1kbb7fz0lp().s[323]++,await connection.query(`SELECT userId, phoneNumber, province, city, district, detailedaddress, company, collaborationid, cooperation, businesslicenseurl, proofurl, brandurl, partnerstatus, reasonforfailure, reject_reason, terminate_reason, audit_time
FROM users${whereClause}
ORDER BY audit_time DESC LIMIT ? OFFSET ?`,params));cov_1kbb7fz0lp().s[324]++;connection.release();cov_1kbb7fz0lp().s[325]++;sendResponse(res,true,{list:suppliers,total,page:parseInt(page),pageSize:parseInt(pageSize)},'查询成功');}catch(error){cov_1kbb7fz0lp().s[326]++;console.error('供应商列表查询失败:',error.message);cov_1kbb7fz0lp().s[327]++;console.error('错误详情:',error);cov_1kbb7fz0lp().s[328]++;sendResponse(res,false,null,'供应商列表查询失败');}});// 首页路由
cov_1kbb7fz0lp().s[329]++;app.get('/',(req,res)=>{cov_1kbb7fz0lp().f[21]++;cov_1kbb7fz0lp().s[330]++;res.sendFile(path.join(__dirname,'Reject.html'));});// 错误处理中间件
cov_1kbb7fz0lp().s[331]++;app.use((err,req,res,next)=>{cov_1kbb7fz0lp().f[22]++;cov_1kbb7fz0lp().s[332]++;console.error('服务器错误:',err.message);cov_1kbb7fz0lp().s[333]++;console.error('错误详情:',err);cov_1kbb7fz0lp().s[334]++;res.status(500).json({success:false,message:'服务器内部错误'});});// 启动服务器
async function startServer(){cov_1kbb7fz0lp().f[23]++;cov_1kbb7fz0lp().s[335]++;try{cov_1kbb7fz0lp().s[336]++;await initDatabase();cov_1kbb7fz0lp().s[337]++;app.listen(PORT,()=>{cov_1kbb7fz0lp().f[24]++;cov_1kbb7fz0lp().s[338]++;console.log(`服务器已启动,监听端口 ${PORT}`);cov_1kbb7fz0lp().s[339]++;console.log(`访问地址: http://localhost:${PORT}`);});}catch(error){cov_1kbb7fz0lp().s[340]++;console.error('服务器启动失败:',error.message);cov_1kbb7fz0lp().s[341]++;console.error('错误详情:',error);// 如果启动失败,尝试重新启动
cov_1kbb7fz0lp().s[342]++;setTimeout(()=>{cov_1kbb7fz0lp().f[25]++;cov_1kbb7fz0lp().s[343]++;console.log('尝试重新启动服务器...');cov_1kbb7fz0lp().s[344]++;startServer();},5000);}}// 确保数据库结构
async function ensureDatabaseSchema(){cov_1kbb7fz0lp().f[26]++;cov_1kbb7fz0lp().s[345]++;console.log('开始执行数据库结构检查...');cov_1kbb7fz0lp().s[346]++;try{const connection=(cov_1kbb7fz0lp().s[347]++,await pool.getConnection());cov_1kbb7fz0lp().s[348]++;console.log('获取数据库连接成功');// 检查users表是否有必要的字段
cov_1kbb7fz0lp().s[349]++;console.log('检查users表是否有partnerstatus字段...');const[partnerStatusColumns]=(cov_1kbb7fz0lp().s[350]++,await connection.query('SHOW COLUMNS FROM `users` LIKE ?',['partnerstatus']));cov_1kbb7fz0lp().s[351]++;console.log('检查表字段结果:',partnerStatusColumns.length>0?(cov_1kbb7fz0lp().b[60][0]++,'已存在'):(cov_1kbb7fz0lp().b[60][1]++,'不存在'));cov_1kbb7fz0lp().s[352]++;if(partnerStatusColumns.length===0){cov_1kbb7fz0lp().b[61][0]++;cov_1kbb7fz0lp().s[353]++;console.log('添加partnerstatus字段到users表...');cov_1kbb7fz0lp().s[354]++;await connection.query('ALTER TABLE `users` ADD COLUMN partnerstatus VARCHAR(50) DEFAULT "underreview" COMMENT "合作商状态"');cov_1kbb7fz0lp().s[355]++;console.log('partnerstatus字段添加成功');}else{cov_1kbb7fz0lp().b[61][1]++;}cov_1kbb7fz0lp().s[356]++;console.log('检查users表是否有reject_reason字段...');const[rejectReasonColumns]=(cov_1kbb7fz0lp().s[357]++,await connection.query('SHOW COLUMNS FROM `users` LIKE ?',['reject_reason']));cov_1kbb7fz0lp().s[358]++;console.log('检查表字段结果:',rejectReasonColumns.length>0?(cov_1kbb7fz0lp().b[62][0]++,'已存在'):(cov_1kbb7fz0lp().b[62][1]++,'不存在'));cov_1kbb7fz0lp().s[359]++;if(rejectReasonColumns.length===0){cov_1kbb7fz0lp().b[63][0]++;cov_1kbb7fz0lp().s[360]++;console.log('添加reject_reason字段到users表...');cov_1kbb7fz0lp().s[361]++;await connection.query('ALTER TABLE `users` ADD COLUMN reject_reason TEXT COMMENT "拒绝理由"');cov_1kbb7fz0lp().s[362]++;console.log('reject_reason字段添加成功');}else{cov_1kbb7fz0lp().b[63][1]++;}cov_1kbb7fz0lp().s[363]++;console.log('检查users表是否有terminate_reason字段...');const[terminateReasonColumns]=(cov_1kbb7fz0lp().s[364]++,await connection.query('SHOW COLUMNS FROM `users` LIKE ?',['terminate_reason']));cov_1kbb7fz0lp().s[365]++;console.log('检查表字段结果:',terminateReasonColumns.length>0?(cov_1kbb7fz0lp().b[64][0]++,'已存在'):(cov_1kbb7fz0lp().b[64][1]++,'不存在'));cov_1kbb7fz0lp().s[366]++;if(terminateReasonColumns.length===0){cov_1kbb7fz0lp().b[65][0]++;cov_1kbb7fz0lp().s[367]++;console.log('添加terminate_reason字段到users表...');cov_1kbb7fz0lp().s[368]++;await connection.query('ALTER TABLE `users` ADD COLUMN terminate_reason TEXT COMMENT "终止合作理由"');cov_1kbb7fz0lp().s[369]++;console.log('terminate_reason字段添加成功');}else{cov_1kbb7fz0lp().b[65][1]++;}cov_1kbb7fz0lp().s[370]++;console.log('检查users表是否有audit_time字段...');const[userAuditTimeColumns]=(cov_1kbb7fz0lp().s[371]++,await connection.query('SHOW COLUMNS FROM `users` LIKE ?',['audit_time']));cov_1kbb7fz0lp().s[372]++;console.log('检查表字段结果:',userAuditTimeColumns.length>0?(cov_1kbb7fz0lp().b[66][0]++,'已存在'):(cov_1kbb7fz0lp().b[66][1]++,'不存在'));cov_1kbb7fz0lp().s[373]++;if(userAuditTimeColumns.length===0){cov_1kbb7fz0lp().b[67][0]++;cov_1kbb7fz0lp().s[374]++;console.log('添加audit_time字段到users表...');cov_1kbb7fz0lp().s[375]++;await connection.query('ALTER TABLE `users` ADD COLUMN audit_time DATETIME COMMENT "审核时间"');cov_1kbb7fz0lp().s[376]++;console.log('audit_time字段添加成功');}else{cov_1kbb7fz0lp().b[67][1]++;}// 检查表是否有rejectReason字段
cov_1kbb7fz0lp().s[377]++;console.log('检查表products是否有rejectReason字段...');const[columns]=(cov_1kbb7fz0lp().s[378]++,await connection.query('SHOW COLUMNS FROM `products` LIKE ?',['rejectReason']));cov_1kbb7fz0lp().s[379]++;console.log('检查表字段结果:',columns.length>0?(cov_1kbb7fz0lp().b[68][0]++,'已存在'):(cov_1kbb7fz0lp().b[68][1]++,'不存在'));cov_1kbb7fz0lp().s[380]++;if(columns.length===0){cov_1kbb7fz0lp().b[69][0]++;cov_1kbb7fz0lp().s[381]++;console.log('添加rejectReason字段到products表...');cov_1kbb7fz0lp().s[382]++;await connection.query('ALTER TABLE `products` ADD COLUMN rejectReason TEXT COMMENT "拒绝理由"');cov_1kbb7fz0lp().s[383]++;console.log('rejectReason字段添加成功');}else{cov_1kbb7fz0lp().b[69][1]++;}// 检查表是否有audit_time字段
cov_1kbb7fz0lp().s[384]++;console.log('检查表products是否有audit_time字段...');const[auditTimeColumns]=(cov_1kbb7fz0lp().s[385]++,await connection.query('SHOW COLUMNS FROM `products` LIKE ?',['audit_time']));cov_1kbb7fz0lp().s[386]++;console.log('检查表字段结果:',auditTimeColumns.length>0?(cov_1kbb7fz0lp().b[70][0]++,'已存在'):(cov_1kbb7fz0lp().b[70][1]++,'不存在'));cov_1kbb7fz0lp().s[387]++;if(auditTimeColumns.length===0){cov_1kbb7fz0lp().b[71][0]++;cov_1kbb7fz0lp().s[388]++;console.log('添加audit_time字段到products表...');cov_1kbb7fz0lp().s[389]++;await connection.query('ALTER TABLE `products` ADD COLUMN audit_time DATETIME COMMENT "审核时间"');cov_1kbb7fz0lp().s[390]++;console.log('audit_time字段添加成功');}else{cov_1kbb7fz0lp().b[71][1]++;}// 检查audit_logs表是否存在,如果不存在则创建
cov_1kbb7fz0lp().s[391]++;console.log('检查audit_logs表是否存在...');const[tables]=(cov_1kbb7fz0lp().s[392]++,await connection.query("SHOW TABLES LIKE 'audit_logs'"));cov_1kbb7fz0lp().s[393]++;console.log('检查表存在性结果:',tables.length>0?(cov_1kbb7fz0lp().b[72][0]++,'已存在'):(cov_1kbb7fz0lp().b[72][1]++,'不存在'));cov_1kbb7fz0lp().s[394]++;if(tables.length===0){cov_1kbb7fz0lp().b[73][0]++;cov_1kbb7fz0lp().s[395]++;console.log('创建audit_logs表...');cov_1kbb7fz0lp().s[396]++;await connection.query(`
CREATE TABLE audit_logs (
id INT AUTO_INCREMENT PRIMARY KEY,
supply_id VARCHAR(50) NOT NULL,
action VARCHAR(20) NOT NULL COMMENT 'approve或reject',
user_id VARCHAR(50) NOT NULL COMMENT '操作人ID',
remark TEXT COMMENT '备注信息',
created_at DATETIME NOT NULL,
INDEX idx_supply_id (supply_id),
INDEX idx_created_at (created_at)
) COMMENT '审核操作日志表'
`);cov_1kbb7fz0lp().s[397]++;console.log('audit_logs表创建成功');}else{cov_1kbb7fz0lp().b[73][1]++;}cov_1kbb7fz0lp().s[398]++;connection.release();cov_1kbb7fz0lp().s[399]++;console.log('数据库结构检查完成');}catch(error){cov_1kbb7fz0lp().s[400]++;console.error('数据库结构检查失败:',error.message);cov_1kbb7fz0lp().s[401]++;console.error('错误详情:',error);}}// 启动服务器
cov_1kbb7fz0lp().s[402]++;startServer();// 优雅关闭
cov_1kbb7fz0lp().s[403]++;process.on('SIGINT',async()=>{cov_1kbb7fz0lp().f[27]++;cov_1kbb7fz0lp().s[404]++;console.log('正在关闭服务器...');cov_1kbb7fz0lp().s[405]++;if(pool){cov_1kbb7fz0lp().b[74][0]++;cov_1kbb7fz0lp().s[406]++;try{cov_1kbb7fz0lp().s[407]++;await pool.end();cov_1kbb7fz0lp().s[408]++;console.log('数据库连接池已关闭');}catch(error){cov_1kbb7fz0lp().s[409]++;console.error('关闭数据库连接池失败:',error.message);}}else{cov_1kbb7fz0lp().b[74][1]++;}cov_1kbb7fz0lp().s[410]++;console.log('服务器已关闭');cov_1kbb7fz0lp().s[411]++;process.exit(0);});cov_1kbb7fz0lp().s[412]++;module.exports=app;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3ZfMWtiYjdmejBscCIsImFjdHVhbENvdmVyYWdlIiwiZXhwcmVzcyIsInMiLCJyZXF1aXJlIiwiYm9keVBhcnNlciIsImNvcnMiLCJteXNxbCIsInBhdGgiLCJhcHAiLCJQT1JUIiwiYiIsInByb2Nlc3MiLCJlbnYiLCJ1c2UiLCJyZXEiLCJyZXMiLCJuZXh0IiwiZiIsImhlYWRlciIsIm1ldGhvZCIsInN0YXR1cyIsImVuZCIsImpzb24iLCJzdGF0aWMiLCJqb2luIiwiX19kaXJuYW1lIiwiZGJDb25maWciLCJob3N0IiwidXNlciIsInBhc3N3b3JkIiwiZGF0YWJhc2UiLCJ3YWl0Rm9yQ29ubmVjdGlvbnMiLCJjb25uZWN0aW9uTGltaXQiLCJxdWV1ZUxpbWl0IiwidXNlckxvZ2luRGJDb25maWciLCJwb29sIiwidXNlckxvZ2luUG9vbCIsImluaXREYXRhYmFzZSIsImNyZWF0ZVBvb2wiLCJjb25zb2xlIiwibG9nIiwiY29ubmVjdGlvbiIsImdldENvbm5lY3Rpb24iLCJyZWxlYXNlIiwidXNlckxvZ2luQ29ubmVjdGlvbiIsImVuc3VyZURhdGFiYXNlU2NoZW1hIiwiZXJyb3IiLCJtZXNzYWdlIiwic2V0VGltZW91dCIsInNlbmRSZXNwb25zZSIsInN1Y2Nlc3MiLCJkYXRhIiwiZ2V0IiwicXVlcnkiLCJwYWdlIiwicGFnZVNpemUiLCJzZWFyY2giLCJrZXl3b3JkIiwiYWN0dWFsU2VhcmNoIiwib2Zmc2V0IiwiY291bnRRdWVyeSIsIndoZXJlQ2xhdXNlIiwicGFyYW1zIiwicHVzaCIsInJlc3VsdHMiLCJwYXJzZUludCIsImNvdW50UmVzdWx0cyIsInByb2Nlc3NlZFJlc3VsdHMiLCJtYXAiLCJwcm9kdWN0IiwiaW1hZ2VVcmxzIiwicGFyc2VkSW1hZ2VzIiwiSlNPTiIsInBhcnNlIiwic3RhcnRzV2l0aCIsIkFycmF5IiwiaXNBcnJheSIsImUiLCJpbmNsdWRlcyIsInNwbGl0IiwidXJsIiwidHJpbSIsIlN0cmluZyIsImZpbHRlciIsInByb2Nlc3NlZFVybCIsInJlcGxhY2UiLCJsaXN0IiwidG90YWwiLCJwb3N0IiwiaWQiLCJib2R5IiwicmVtYXJrIiwicHJvZHVjdElkIiwiYmVnaW5UcmFuc2FjdGlvbiIsImN1cnJlbnRQcm9kdWN0IiwibGVuZ3RoIiwicm9sbGJhY2siLCJEYXRlIiwiY29tbWl0IiwicmVhc29uIiwicmVqZWN0UmVhc29uIiwiYWN0dWFsUmVqZWN0UmVhc29uIiwic2FsZXNQZXJzb25zIiwidXNlck5hbWVzIiwicGVyc29uIiwidXNlck5hbWUiLCJ1c2VyUmVzdWx0cyIsImNvbnRhY3RzIiwicHJvY2Vzc2VkVXNlcnMiLCJTZXQiLCJzYWxlc1BlcnNvbiIsIm1hdGNoZWRVc2VycyIsIm5pY2tOYW1lIiwiY29tcGFueSIsInBob25lTnVtYmVyIiwidXNlcktleSIsImhhcyIsImFkZCIsInByb2plY3ROYW1lIiwibmFtZSIsInB1dCIsInByb2R1Y3RDb250YWN0IiwiY29udGFjdFBob25lIiwicHJvY2Vzc2VkUHJvZHVjdENvbnRhY3QiLCJyZXN1bHQiLCJhZmZlY3RlZFJvd3MiLCJ1c2VySWQiLCJjdXJyZW50VXNlciIsInBhcnRuZXJzdGF0dXMiLCJ0b3RhbFJlc3VsdCIsInN1cHBsaWVycyIsInNlbmRGaWxlIiwiZXJyIiwic3RhcnRTZXJ2ZXIiLCJsaXN0ZW4iLCJwYXJ0bmVyU3RhdHVzQ29sdW1ucyIsInJlamVjdFJlYXNvbkNvbHVtbnMiLCJ0ZXJtaW5hdGVSZWFzb25Db2x1bW5zIiwidXNlckF1ZGl0VGltZUNvbHVtbnMiLCJjb2x1bW5zIiwiYXVkaXRUaW1lQ29sdW1ucyIsInRhYmxlcyIsIm9uIiwiZXhpdCIsIm1vZHVsZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyJSZWplY3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKTtcbmNvbnN0IGJvZHlQYXJzZXIgPSByZXF1aXJlKCdib2R5LXBhcnNlcicpO1xuY29uc3QgY29ycyA9IHJlcXVpcmUoJ2NvcnMnKTtcbmNvbnN0IG15c3FsID0gcmVxdWlyZSgnbXlzcWwyL3Byb21pc2UnKTtcbmNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5jb25zdCBhcHAgPSBleHByZXNzKCk7XG5jb25zdCBQT1JUID0gcHJvY2Vzcy5lbnYuUE9SVCB8fCAzMDAwO1xuXG4vLyDphY3nva5DT1JTXG5hcHAudXNlKGNvcnMoKSk7XG5hcHAudXNlKChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIHJlcy5oZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbicsICcqJyk7XG4gICAgcmVzLmhlYWRlcignQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcycsICdHRVQsIFBPU1QsIFBVVCwgREVMRVRFLCBPUFRJT05TJyk7XG4gICAgcmVzLmhlYWRlcignQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycycsICdDb250ZW50LVR5cGUsIEF1dGhvcml6YXRpb24nKTtcbiAgICBpZiAocmVxLm1ldGhvZCA9PT0gJ09QVElPTlMnKSB7XG4gICAgICAgIHJlcy5zdGF0dXMoMjAwKS5lbmQoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBuZXh0KCk7XG59KTtcbmFwcC51c2UoYm9keVBhcnNlci5qc29uKCkpO1xuYXBwLnVzZShleHByZXNzLnN0YXRpYyhwYXRoLmpvaW4oX19kaXJuYW1lKSkpO1xuXG4vLyDmlbDmja7lupPphY3nva5cbmNvbnN0IGRiQ29uZmlnID0ge1xuICAgIGhvc3Q6ICcxLjk1LjE2Mi42MScsXG4gICAgdXNlcjogJ3Jvb3QnLFxuICAgIHBhc3N3b3JkOiAnc2NobEAyMDI1JywgLy8g6K+35pu/5o2i5Li65a6e6ZmF55qE5pWw5o2u5bqT5a+G56CBXG4gICAgZGF0YWJhc2U6ICd3ZWNoYXRfYXBwJywgICAgLy8g6L+e5o6l5Yiwd2VjaGF0X2FwcOaVsOaNruW6k1xuICAgIHdhaXRGb3JDb25uZWN0aW9uczogdHJ1ZSxcbiAgICBjb25uZWN0aW9uTGltaXQ6IDEwLFxuICAgIHF1ZXVlTGltaXQ6IDBcbn07XG5cbi8vIHVzZXJsb2dpbuaVsOaNruW6k+mFjee9rlxuY29uc3QgdXNlckxvZ2luRGJDb25maWcgPSB7XG4gICAgaG9zdDogJzEuOTUuMTYyLjYxJyxcbiAgICB1c2VyOiAncm9vdCcsXG4gICAgcGFzc3dvcmQ6ICdzY2hsQDIwMjUnLCAvLyDor7fmm7/mjaLkuLrlrp7pmYXnmoTmlbDmja7lupPlr4bnoIFcbiAgICBkYXRhYmFzZTogJ3VzZXJsb2dpbicsICAgIC8vIOi/nuaOpeWIsHVzZXJsb2dpbuaVsOaNruW6k1xuICAgIHdhaXRGb3JDb25uZWN0aW9uczogdHJ1ZSxcbiAgICBjb25uZWN0aW9uTGltaXQ6IDEwLFxuICAgIHF1ZXVlTGltaXQ6IDBcbn07XG5cbi8vIOWIm+W7uuaVsOaNruW6k+i/nuaOpeaxoFxubGV0IHBvb2w7XG5sZXQgdXNlckxvZ2luUG9vbDtcblxuLy8g5Yid5aeL5YyW5pWw5o2u5bqT6L+e5o6lXG5hc3luYyBmdW5jdGlvbiBpbml0RGF0YWJhc2UoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgcG9vbCA9IG15c3FsLmNyZWF0ZVBvb2woZGJDb25maWcpO1xuICAgICAgICBjb25zb2xlLmxvZygnd2VjaGF0X2FwcOaVsOaNruW6k+i/nuaOpeaxoOWIm+W7uuaIkOWKnycpO1xuICAgICAgICBcbiAgICAgICAgLy8g5Yid5aeL5YyWdXNlcmxvZ2lu5pWw5o2u5bqT6L+e5o6l5rGgXG4gICAgICAgIHVzZXJMb2dpblBvb2wgPSBteXNxbC5jcmVhdGVQb29sKHVzZXJMb2dpbkRiQ29uZmlnKTtcbiAgICAgICAgY29uc29sZS5sb2coJ3VzZXJsb2dpbuaVsOaNruW6k+i/nuaOpeaxoOWIm+W7uuaIkOWKnycpO1xuICAgICAgICBcbiAgICAgICAgLy8g5rWL6K+Vd2VjaGF0X2FwcOi/nuaOpVxuICAgICAgICBjb25zdCBjb25uZWN0aW9uID0gYXdhaXQgcG9vbC5nZXRDb25uZWN0aW9uKCk7XG4gICAgICAgIGNvbnNvbGUubG9nKCd3ZWNoYXRfYXBw5pWw5o2u5bqT6L+e5o6l5rWL6K+V5oiQ5YqfJyk7XG4gICAgICAgIGNvbm5lY3Rpb24ucmVsZWFzZSgpO1xuICAgICAgICBcbiAgICAgICAgLy8g5rWL6K+VdXNlcmxvZ2lu6L+e5o6lXG4gICAgICAgIGNvbnN0IHVzZXJMb2dpbkNvbm5lY3Rpb24gPSBhd2FpdCB1c2VyTG9naW5Qb29sLmdldENvbm5lY3Rpb24oKTtcbiAgICAgICAgY29uc29sZS5sb2coJ3VzZXJsb2dpbuaVsOaNruW6k+i/nuaOpea1i+ivleaIkOWKnycpO1xuICAgICAgICB1c2VyTG9naW5Db25uZWN0aW9uLnJlbGVhc2UoKTtcbiAgICAgICAgXG4gICAgICAgIC8vIOehruS/neaVsOaNruW6k+e7k+aehFxuICAgICAgICBhd2FpdCBlbnN1cmVEYXRhYmFzZVNjaGVtYSgpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ+aVsOaNruW6k+WIneWni+WMluWksei0pTonLCBlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgY29uc29sZS5lcnJvcign6ZSZ6K+v6K+m5oOFOicsIGVycm9yKTtcbiAgICAgICAgLy8g5aaC5p6c5Yid5aeL5YyW5aSx6LSl77yM5bCd6K+V6YeN5paw5Yid5aeL5YyWXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ+WwneivlemHjeaWsOWIneWni+WMluaVsOaNruW6k+i/nuaOpS4uLicpO1xuICAgICAgICAgICAgaW5pdERhdGFiYXNlKCk7XG4gICAgICAgIH0sIDUwMDApO1xuICAgIH1cbn1cblxuLy8g6YCa55So5ZON5bqU5Ye95pWwXG5mdW5jdGlvbiBzZW5kUmVzcG9uc2UocmVzLCBzdWNjZXNzLCBkYXRhID0gbnVsbCwgbWVzc2FnZSA9ICcnKSB7XG4gICAgcmVzLmpzb24oe1xuICAgICAgICBzdWNjZXNzLFxuICAgICAgICBkYXRhLFxuICAgICAgICBtZXNzYWdlXG4gICAgfSk7XG59XG5cbi8vIOiOt+WPlui0p+a6kOWIl+ihqEFQSVxuYXBwLmdldCgnL2FwaS9zdXBwbGllcycsIGFzeW5jIChyZXEsIHJlcykgPT4ge1xuICAgIGNvbnNvbGUubG9nKCfmlLbliLDojrflj5botKfmupDliJfooajor7fmsYI6JywgcmVxLnF1ZXJ5KTtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBjb25uZWN0aW9uID0gYXdhaXQgcG9vbC5nZXRDb25uZWN0aW9uKCk7XG4gICAgICAgIC8vIOaUr+aMgXNlYXJjaOWSjGtleXdvcmTkuKTnp43lj4LmlbDlkI3vvIznoa7kv53lhbzlrrnmgKdcbiAgICAgICAgY29uc3QgeyBwYWdlID0gMSwgcGFnZVNpemUgPSAxMCwgc2VhcmNoID0gJycsIGtleXdvcmQgPSAnJywgc3RhdHVzID0gJycgfSA9IHJlcS5xdWVyeTtcbiAgICAgICAgLy8g5aaC5p6c5o+Q5L6b5LqGa2V5d29yZOWPguaVsO+8jOS8mOWFiOS9v+eUqGtleXdvcmRcbiAgICAgICAgY29uc3QgYWN0dWFsU2VhcmNoID0ga2V5d29yZCB8fCBzZWFyY2g7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IChwYWdlIC0gMSkgKiBwYWdlU2l6ZTtcbiAgICAgICAgXG4gICAgICAgIC8vIOaehOW7uuWfuuehgOafpeivou+8jOa3u+WKoExFRlQgSk9JTuiOt+WPlueUqOaIt+S/oeaBr1xuICAgICAgICBsZXQgcXVlcnkgPSAnU0VMRUNUIHAuKiwgdS5waG9uZU51bWJlciwgdS5uaWNrTmFtZSBGUk9NIHByb2R1Y3RzIHAgTEVGVCBKT0lOIHVzZXJzIHUgT04gcC5zZWxsZXJJZCA9IHUudXNlcklkJztcbiAgICAgICAgbGV0IGNvdW50UXVlcnkgPSAnU0VMRUNUIENPVU5UKCopIGFzIHRvdGFsIEZST00gcHJvZHVjdHMgcCBMRUZUIEpPSU4gdXNlcnMgdSBPTiBwLnNlbGxlcklkID0gdS51c2VySWQnO1xuICAgICAgICBsZXQgd2hlcmVDbGF1c2UgPSAnJztcbiAgICAgICAgbGV0IHBhcmFtcyA9IFtdO1xuICAgICAgICBcbiAgICAgICAgLy8g5re75Yqg5pCc57Si5p2h5Lu2XG4gICAgICAgIGlmIChhY3R1YWxTZWFyY2gpIHtcbiAgICAgICAgICAgIHdoZXJlQ2xhdXNlICs9IGAgV0hFUkUgKHAuaWQgTElLRSA/IE9SIHAucHJvZHVjdElkIExJS0UgPyBPUiBwLnByb2R1Y3ROYW1lIExJS0UgPylgO1xuICAgICAgICAgICAgcGFyYW1zLnB1c2goYCUke2FjdHVhbFNlYXJjaH0lYCwgYCUke2FjdHVhbFNlYXJjaH0lYCwgYCUke2FjdHVhbFNlYXJjaH0lYCk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8vIOa3u+WKoOeKtuaAgeetm+mAiVxuICAgICAgICBpZiAoc3RhdHVzKSB7XG4gICAgICAgICAgICB3aGVyZUNsYXVzZSArPSBhY3R1YWxTZWFyY2ggPyAnIEFORCcgOiAnIFdIRVJFJztcbiAgICAgICAgICAgIHdoZXJlQ2xhdXNlICs9IGAgc3RhdHVzID0gP2A7XG4gICAgICAgICAgICBwYXJhbXMucHVzaChzdGF0dXMpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyDmiafooYzmn6Xor6JcbiAgICAgICAgY29uc3QgW3Jlc3VsdHNdID0gYXdhaXQgY29ubmVjdGlvbi5xdWVyeShcbiAgICAgICAgICAgIGAke3F1ZXJ5fSR7d2hlcmVDbGF1c2V9IE9SREVSIEJZIHAuaWQgREVTQyBMSU1JVCA/IE9GRlNFVCA/YCxcbiAgICAgICAgICAgIFsuLi5wYXJhbXMsIHBhcnNlSW50KHBhZ2VTaXplKSwgb2Zmc2V0XVxuICAgICAgICApO1xuICAgICAgICBcbiAgICAgICAgLy8g6I635Y+W5oC75pWwXG4gICAgICAgIGNvbnN0IFtjb3VudFJlc3VsdHNdID0gYXdhaXQgY29ubmVjdGlvbi5xdWVyeShcbiAgICAgICAgICAgIGAke2NvdW50UXVlcnl9JHt3aGVyZUNsYXVzZX1gLFxuICAgICAgICAgICAgcGFyYW1zXG4gICAgICAgICk7XG4gICAgICAgIFxuICAgICAgICBjb25uZWN0aW9uLnJlbGVhc2UoKTtcbiAgICAgICAgXG4gICAgICAgIC8vIOWkhOeQhui/lOWbnue7k+aenOS4reeahGltYWdlVXJsc+Wtl+autVxuICAgICAgICBjb25zdCBwcm9jZXNzZWRSZXN1bHRzID0gcmVzdWx0cy5tYXAocHJvZHVjdCA9PiB7XG4gICAgICAgICAgICAvLyDlpITnkIZpbWFnZVVybHPlrZfmrrVcbiAgICAgICAgICAgIGxldCBpbWFnZVVybHMgPSBbXTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKHByb2R1Y3QuaW1hZ2VVcmxzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9kdWN0LmltYWdlVXJscyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8g5bCd6K+V6Kej5p6Q5Li6SlNPTuaVsOe7hFxuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBhcnNlZEltYWdlcyA9IEpTT04ucGFyc2UocHJvZHVjdC5pbWFnZVVybHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDmo4Dmn6XmmK/lkKbmmK9KU09O5a2X56ym5Liy55qE5a2X56ym5Liy6KGo56S677yI6L2s5LmJ55qESlNPTu+8iVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwYXJzZWRJbWFnZXMgPT09ICdzdHJpbmcnICYmIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJzZWRJbWFnZXMuc3RhcnRzV2l0aCgnWycpIHx8IHBhcnNlZEltYWdlcy5zdGFydHNXaXRoKCd7JykpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g6L+b6KGM56ys5LqM5qyh6Kej5p6QXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkSW1hZ2VzID0gSlNPTi5wYXJzZShwYXJzZWRJbWFnZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXJzZWRJbWFnZXMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VVcmxzID0gcGFyc2VkSW1hZ2VzO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcGFyc2VkSW1hZ2VzID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWmguaenOino+aekOe7k+aenOaYr+Wtl+espuS4su+8jOWPr+iDveaYr+WNleS4qlVSTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlVXJscyA9IFtwYXJzZWRJbWFnZXNdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDop6PmnpDlpLHotKXvvIzlsJ3or5XmjInpgJflj7fliIbpmpRcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9kdWN0LmltYWdlVXJscy5pbmNsdWRlcygnLCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VVcmxzID0gcHJvZHVjdC5pbWFnZVVybHMuc3BsaXQoJywnKS5tYXAodXJsID0+IHVybC50cmltKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDkvZzkuLrljZXkuKpVUkzlpITnkIZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZVVybHMgPSBbcHJvZHVjdC5pbWFnZVVybHMudHJpbSgpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShwcm9kdWN0LmltYWdlVXJscykpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8g5bey57uP5piv5pWw57uE77yM55u05o6l5L2/55SoXG4gICAgICAgICAgICAgICAgICAgIGltYWdlVXJscyA9IHByb2R1Y3QuaW1hZ2VVcmxzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIOWFtuS7luexu+Wei++8jOi9rOaNouS4uuWtl+espuS4suaVsOe7hFxuICAgICAgICAgICAgICAgICAgICBpbWFnZVVybHMgPSBbU3RyaW5nKHByb2R1Y3QuaW1hZ2VVcmxzKV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyDov4fmu6TlubblpITnkIbml6DmlYjnmoRVUkzvvJrnp7vpmaTlj43lvJXlj7flubbpqozor4FcbiAgICAgICAgICAgIGltYWdlVXJscyA9IGltYWdlVXJsc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIodXJsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF1cmwpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvY2Vzc2VkVXJsID0gdXJsLnJlcGxhY2UoL2AvZywgJycpLnRyaW0oKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3NlZFVybC5zdGFydHNXaXRoKCdodHRwOi8vJykgfHwgcHJvY2Vzc2VkVXJsLnN0YXJ0c1dpdGgoJ2h0dHBzOi8vJyk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAvLyDlr7nmr4/kuKrmnInmlYhVUkzov5vooYzlpITnkIbvvIznp7vpmaTlj43lvJXlj7dcbiAgICAgICAgICAgICAgICAubWFwKHVybCA9PiB1cmwucmVwbGFjZSgvYC9nLCAnJykudHJpbSgpKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5wcm9kdWN0LFxuICAgICAgICAgICAgICAgIGltYWdlVXJsc1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIFxuICAgICAgICAvLyDov5Tlm57nu5PmnpxcbiAgICAgICAgc2VuZFJlc3BvbnNlKHJlcywgdHJ1ZSwge1xuICAgICAgICAgICAgbGlzdDogcHJvY2Vzc2VkUmVzdWx0cyxcbiAgICAgICAgICAgIHRvdGFsOiBjb3VudFJlc3VsdHNbMF0udG90YWwsXG4gICAgICAgICAgICBwYWdlOiBwYXJzZUludChwYWdlKSxcbiAgICAgICAgICAgIHBhZ2VTaXplOiBwYXJzZUludChwYWdlU2l6ZSlcbiAgICAgICAgfSwgJ+iOt+WPlui0p+a6kOWIl+ihqOaIkOWKnycpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ+iOt+WPlui0p+a6kOWIl+ihqOWksei0pTonLCBlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgY29uc29sZS5lcnJvcign6ZSZ6K+v6K+m5oOFOicsIGVycm9yKTtcbiAgICAgICAgc2VuZFJlc3BvbnNlKHJlcywgZmFsc2UsIG51bGwsICfojrflj5botKfmupDliJfooajlpLHotKUnKTtcbiAgICB9XG59KTtcblxuLy8g5a6h5qC46YCa6L+HQVBJXG5hcHAucG9zdCgnL2FwaS9zdXBwbGllcy86aWQvYXBwcm92ZScsIGFzeW5jIChyZXEsIHJlcykgPT4ge1xuICAgIGNvbnNvbGUubG9nKCfmlLbliLDlrqHmoLjpgJrov4for7fmsYI6JywgcmVxLnBhcmFtcy5pZCwgcmVxLmJvZHkpO1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBhd2FpdCBwb29sLmdldENvbm5lY3Rpb24oKTtcbiAgICAgICAgY29uc3QgeyByZW1hcmsgPSAnJyB9ID0gcmVxLmJvZHk7XG4gICAgICAgIGNvbnN0IHByb2R1Y3RJZCA9IHJlcS5wYXJhbXMuaWQ7XG4gICAgICAgIFxuICAgICAgICAvLyDlvIDlp4vkuovliqFcbiAgICAgICAgYXdhaXQgY29ubmVjdGlvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgICAgIFxuICAgICAgICAvLyDmo4Dmn6XlvZPliY3nirbmgIFcbiAgICAgICAgY29uc3QgW2N1cnJlbnRQcm9kdWN0XSA9IGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkoXG4gICAgICAgICAgICAnU0VMRUNUIHN0YXR1cyBGUk9NIHByb2R1Y3RzIFdIRVJFIGlkID0gPycsXG4gICAgICAgICAgICBbcHJvZHVjdElkXVxuICAgICAgICApO1xuICAgICAgICBcbiAgICAgICAgaWYgKGN1cnJlbnRQcm9kdWN0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgYXdhaXQgY29ubmVjdGlvbi5yb2xsYmFjaygpO1xuICAgICAgICAgICAgY29ubmVjdGlvbi5yZWxlYXNlKCk7XG4gICAgICAgICAgICByZXR1cm4gc2VuZFJlc3BvbnNlKHJlcywgZmFsc2UsIG51bGwsICfotKfmupDkuI3lrZjlnKgnKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLy8g5qOA5p+l54q25oCB5piv5ZCm5Y+v5a6h5qC477yM5aKe5Yqg5a+55aSa56eN5b6F5a6h5qC454q25oCB55qE5pSv5oyBXG4gICAgICAgIGlmICghWydwZW5kaW5nJywgJ2RyYWZ0JywgJ3BlbmRpbmdfcmV2aWV3JywgJ3VuZGVycmV2aWV3JywgJ+W+heWuoeaguCddLmluY2x1ZGVzKGN1cnJlbnRQcm9kdWN0WzBdLnN0YXR1cykpIHtcbiAgICAgICAgICAgIGF3YWl0IGNvbm5lY3Rpb24ucm9sbGJhY2soKTtcbiAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVsZWFzZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHNlbmRSZXNwb25zZShyZXMsIGZhbHNlLCBudWxsLCAn6K+l6LSn5rqQ5bey5a6h5qC477yM5peg6ZyA6YeN5aSN5pON5L2cJyk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8vIOabtOaWsOeKtuaAgVxuICAgICAgICBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KFxuICAgICAgICAgICAgJ1VQREFURSBwcm9kdWN0cyBTRVQgc3RhdHVzID0gPywgYXVkaXRfdGltZSA9ID8gV0hFUkUgaWQgPSA/JyxcbiAgICAgICAgICAgIFsncHVibGlzaGVkJywgbmV3IERhdGUoKSwgcHJvZHVjdElkXVxuICAgICAgICApO1xuICAgICAgICBcbiAgICAgICAgLy8g6K6w5b2V5pel5b+XXG4gICAgICAgIGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkoXG4gICAgICAgICAgICAnSU5TRVJUIElOVE8gYXVkaXRfbG9ncyAoc3VwcGx5X2lkLCBhY3Rpb24sIHVzZXJfaWQsIHJlbWFyaywgY3JlYXRlZF9hdCkgVkFMVUVTICg/LCA/LCA/LCA/LCA/KScsXG4gICAgICAgICAgICBbcHJvZHVjdElkLCAnYXBwcm92ZScsICdzeXN0ZW0nLCByZW1hcmssIG5ldyBEYXRlKCldXG4gICAgICAgICk7XG4gICAgICAgIFxuICAgICAgICAvLyDmj5DkuqTkuovliqFcbiAgICAgICAgYXdhaXQgY29ubmVjdGlvbi5jb21taXQoKTtcbiAgICAgICAgY29ubmVjdGlvbi5yZWxlYXNlKCk7XG4gICAgICAgIFxuICAgICAgICBzZW5kUmVzcG9uc2UocmVzLCB0cnVlLCBudWxsLCAn5a6h5qC46YCa6L+H5oiQ5YqfJyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcign5a6h5qC46YCa6L+H5aSx6LSlOicsIGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICBjb25zb2xlLmVycm9yKCfplJnor6/or6bmg4U6JywgZXJyb3IpO1xuICAgICAgICBzZW5kUmVzcG9uc2UocmVzLCBmYWxzZSwgbnVsbCwgJ+WuoeaguOmAmui/h+Wksei0pScpO1xuICAgIH1cbn0pO1xuXG5jb25zb2xlLmxvZygn5q2j5Zyo5rOo5YaM5ouS57ud5a6h5qC4QVBJ6Lev55SxOiAvYXBpL3N1cHBsaWVzLzppZC9yZWplY3QnKTtcblxuLy8g5a6h5qC45ouS57udQVBJXG5hcHAucG9zdCgnL2FwaS9zdXBwbGllcy86aWQvcmVqZWN0JywgYXN5bmMgKHJlcSwgcmVzKSA9PiB7XG4gICAgY29uc29sZS5sb2coJ+aUtuWIsOWuoeaguOaLkue7neivt+axgjonLCByZXEucGFyYW1zLmlkLCByZXEuYm9keSk7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgY29ubmVjdGlvbiA9IGF3YWl0IHBvb2wuZ2V0Q29ubmVjdGlvbigpO1xuICAgICAgICAvLyDlkIzml7bmlK/mjIFyZWFzb27lkoxyZWplY3RSZWFzb27lj4LmlbDvvIzkv53mjIHlkJHlkI7lhbzlrrlcbiAgICAgICAgY29uc3QgeyByZWFzb24sIHJlamVjdFJlYXNvbiA9ICcnLCByZW1hcmsgPSAnJyB9ID0gcmVxLmJvZHk7XG4gICAgICAgIC8vIOWmguaenOaciXJlYXNvbuWPguaVsO+8jOWImeS9v+eUqHJlYXNvbu+8jOWQpuWImeS9v+eUqHJlamVjdFJlYXNvblxuICAgICAgICBjb25zdCBhY3R1YWxSZWplY3RSZWFzb24gPSByZWFzb24gfHwgcmVqZWN0UmVhc29uO1xuICAgICAgICBjb25zdCBwcm9kdWN0SWQgPSByZXEucGFyYW1zLmlkO1xuICAgICAgICBcbiAgICAgICAgLy8g5byA5aeL5LqL5YqhXG4gICAgICAgIGF3YWl0IGNvbm5lY3Rpb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgICAgICBcbiAgICAgICAgLy8g5qOA5p+l5b2T5YmN54q25oCBXG4gICAgICAgIGNvbnN0IFtjdXJyZW50UHJvZHVjdF0gPSBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KFxuICAgICAgICAgICAgJ1NFTEVDVCBzdGF0dXMgRlJPTSBwcm9kdWN0cyBXSEVSRSBpZCA9ID8nLFxuICAgICAgICAgICAgW3Byb2R1Y3RJZF1cbiAgICAgICAgKTtcbiAgICAgICAgXG4gICAgICAgIGlmIChjdXJyZW50UHJvZHVjdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGF3YWl0IGNvbm5lY3Rpb24ucm9sbGJhY2soKTtcbiAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVsZWFzZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHNlbmRSZXNwb25zZShyZXMsIGZhbHNlLCBudWxsLCAn6LSn5rqQ5LiN5a2Y5ZyoJyk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGlmIChjdXJyZW50UHJvZHVjdFswXS5zdGF0dXMgIT09ICd1bmRlcnJldmlldycgJiYgY3VycmVudFByb2R1Y3RbMF0uc3RhdHVzICE9PSAncGVuZGluZ19yZXZpZXcnKSB7XG4gICAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLnJvbGxiYWNrKCk7XG4gICAgICAgICAgICBjb25uZWN0aW9uLnJlbGVhc2UoKTtcbiAgICAgICAgICAgIHJldHVybiBzZW5kUmVzcG9uc2UocmVzLCBmYWxzZSwgbnVsbCwgJ+W9k+WJjeeKtuaAgeS4jeWFgeiuuOWuoeaguOaLkue7nScpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyDmm7TmlrDnirbmgIHlkozmi5Lnu53nkIbnlLFcbiAgICAgICAgYXdhaXQgY29ubmVjdGlvbi5xdWVyeShcbiAgICAgICAgICAgICdVUERBVEUgcHJvZHVjdHMgU0VUIHN0YXR1cyA9ID8sIHJlamVjdFJlYXNvbiA9ID8sIGF1ZGl0X3RpbWUgPSA/IFdIRVJFIGlkID0gPycsXG4gICAgICAgICAgICBbJ3Jldmlld2ZhaWxlZCcsIGFjdHVhbFJlamVjdFJlYXNvbiwgbmV3IERhdGUoKSwgcHJvZHVjdElkXVxuICAgICAgICApO1xuICAgICAgICBcbiAgICAgICAgLy8g6K6w5b2V5pel5b+XXG4gICAgICAgIGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkoXG4gICAgICAgICAgICAnSU5TRVJUIElOVE8gYXVkaXRfbG9ncyAoc3VwcGx5X2lkLCBhY3Rpb24sIHVzZXJfaWQsIHJlbWFyaywgY3JlYXRlZF9hdCkgVkFMVUVTICg/LCA/LCA/LCA/LCA/KScsXG4gICAgICAgICAgICBbcHJvZHVjdElkLCAncmVqZWN0JywgJ3N5c3RlbScsIHJlbWFyaywgbmV3IERhdGUoKV1cbiAgICAgICAgKTtcbiAgICAgICAgXG4gICAgICAgIC8vIOaPkOS6pOS6i+WKoVxuICAgICAgICBhd2FpdCBjb25uZWN0aW9uLmNvbW1pdCgpO1xuICAgICAgICBjb25uZWN0aW9uLnJlbGVhc2UoKTtcbiAgICAgICAgXG4gICAgICAgIHNlbmRSZXNwb25zZShyZXMsIHRydWUsIG51bGwsICflrqHmoLjmi5Lnu53miJDlip8nKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCflrqHmoLjmi5Lnu53lpLHotKU6JywgZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ+mUmeivr+ivpuaDhTonLCBlcnJvcik7XG4gICAgICAgIHNlbmRSZXNwb25zZShyZXMsIGZhbHNlLCBudWxsLCAn5a6h5qC45ouS57ud5aSx6LSlJyk7XG4gICAgfVxufSk7XG5cbi8vIOiOt+WPluS+m+W6lOWVhuWIl+ihqEFQSeW3suWIoOmZpFxuXG4vLyDkvpvlupTllYblrqHmoLjpgJrov4dBUEnlt7LliKDpmaRcblxuLy8g5L6b5bqU5ZWG5a6h5qC45ouS57udQVBJ5bey5Yig6ZmkXG5cbi8vIOS+m+W6lOWVhuW8gOWni+WQiOS9nEFQSeW3suWIoOmZpFxuXG4vLyDkvpvlupTllYbnu4jmraLlkIjkvZxBUEnlt7LliKDpmaRcblxuY29uc29sZS5sb2coJ+ato+WcqOazqOWGjOa1i+ivlUFQSei3r+eUsTogL2FwaS90ZXN0LWRiJyk7XG5cbi8vIOa1i+ivleaVsOaNruW6k+i/nuaOpUFQSVxuYXBwLmdldCgnL2FwaS90ZXN0LWRiJywgYXN5bmMgKHJlcSwgcmVzKSA9PiB7XG4gICAgY29uc29sZS5sb2coJ+aUtuWIsOaVsOaNruW6k+i/nuaOpea1i+ivleivt+axgicpO1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBhd2FpdCBwb29sLmdldENvbm5lY3Rpb24oKTtcbiAgICAgICAgY29uc3QgW3Jlc3VsdHNdID0gYXdhaXQgY29ubmVjdGlvbi5xdWVyeSgnU0VMRUNUIDEgKyAxIGFzIHNvbHV0aW9uJyk7XG4gICAgICAgIGNvbm5lY3Rpb24ucmVsZWFzZSgpO1xuICAgICAgICBzZW5kUmVzcG9uc2UocmVzLCB0cnVlLCByZXN1bHRzWzBdLCAn5pWw5o2u5bqT6L+e5o6l5oiQ5YqfJyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcign5pWw5o2u5bqT6L+e5o6l5rWL6K+V5aSx6LSlOicsIGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICBjb25zb2xlLmVycm9yKCfplJnor6/or6bmg4U6JywgZXJyb3IpO1xuICAgICAgICBzZW5kUmVzcG9uc2UocmVzLCBmYWxzZSwgbnVsbCwgJ+aVsOaNruW6k+i/nuaOpea1i+ivleWksei0pScpO1xuICAgIH1cbn0pO1xuXG4vLyDojrflj5bogZTns7vkurrmlbDmja5BUElcbmFwcC5nZXQoJy9hcGkvY29udGFjdHMnLCBhc3luYyAocmVxLCByZXMpID0+IHtcbiAgICB0cnkge1xuICAgICAgICAvLyDku451c2VybG9naW7mlbDmja7lupPojrflj5bplIDllK7lkZjkv6Hmga9cbiAgICAgICAgY29uc3QgdXNlckxvZ2luQ29ubmVjdGlvbiA9IGF3YWl0IHVzZXJMb2dpblBvb2wuZ2V0Q29ubmVjdGlvbigpO1xuICAgICAgICBjb25zdCBbc2FsZXNQZXJzb25zXSA9IGF3YWl0IHVzZXJMb2dpbkNvbm5lY3Rpb24ucXVlcnkoXG4gICAgICAgICAgICAnU0VMRUNUIERJU1RJTkNUIHByb2plY3ROYW1lLCB1c2VyTmFtZSBGUk9NIGxvZ2luIFdIRVJFIHByb2plY3ROYW1lID0gXCLplIDllK7lkZhcIidcbiAgICAgICAgKTtcbiAgICAgICAgdXNlckxvZ2luQ29ubmVjdGlvbi5yZWxlYXNlKCk7XG4gICAgICAgIFxuICAgICAgICBpZiAoc2FsZXNQZXJzb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgc2VuZFJlc3BvbnNlKHJlcywgdHJ1ZSwgW10sICfmsqHmnInmib7liLDplIDllK7lkZjkv6Hmga8nKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLy8g5LuOd2VjaGF0X2FwcOaVsOaNruW6k+iOt+WPlueUqOaIt+eUteivneWPt+eggVxuICAgICAgICBjb25zdCBjb25uZWN0aW9uID0gYXdhaXQgcG9vbC5nZXRDb25uZWN0aW9uKCk7XG4gICAgICAgIFxuICAgICAgICAvLyDliJvlu7rnlKjmiLflkI3mlbDnu4TnlKjkuo7mibnph4/mn6Xor6JcbiAgICAgICAgY29uc3QgdXNlck5hbWVzID0gc2FsZXNQZXJzb25zLm1hcChwZXJzb24gPT4gcGVyc29uLnVzZXJOYW1lKTtcbiAgICAgICAgXG4gICAgICAgIC8vIOS9v+eUqElO6K+t5Y+l5om56YeP5p+l6K+i55So5oi35L+h5oGv77yM5o+Q6auY5pWI546HXG4gICAgICAgIGNvbnN0IFt1c2VyUmVzdWx0c10gPSBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KFxuICAgICAgICAgICAgJ1NFTEVDVCBuaWNrTmFtZSwgY29tcGFueSwgcGhvbmVOdW1iZXIgRlJPTSB1c2VycyBXSEVSRSBuaWNrTmFtZSBJTiAoPykgT1IgY29tcGFueSBJTiAoPyknLFxuICAgICAgICAgICAgW3VzZXJOYW1lcywgdXNlck5hbWVzXVxuICAgICAgICApO1xuICAgICAgICBcbiAgICAgICAgY29ubmVjdGlvbi5yZWxlYXNlKCk7XG4gICAgICAgIFxuICAgICAgICAvLyDliJvlu7rogZTns7vkurrmlbDmja7mlbDnu4RcbiAgICAgICAgY29uc3QgY29udGFjdHMgPSBbXTtcbiAgICAgICAgY29uc3QgcHJvY2Vzc2VkVXNlcnMgPSBuZXcgU2V0KCk7IC8vIOeUqOS6jumBv+WFjemHjeWkjeiusOW9lVxuICAgICAgICBcbiAgICAgICAgLy8g6YGN5Y6G6ZSA5ZSu5ZGY5YiX6KGoXG4gICAgICAgIGZvciAoY29uc3Qgc2FsZXNQZXJzb24gb2Ygc2FsZXNQZXJzb25zKSB7XG4gICAgICAgICAgICBjb25zdCB7IHVzZXJOYW1lIH0gPSBzYWxlc1BlcnNvbjtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8g5p+l5om+5Yy56YWN55qE55So5oi3XG4gICAgICAgICAgICBjb25zdCBtYXRjaGVkVXNlcnMgPSB1c2VyUmVzdWx0cy5maWx0ZXIodXNlciA9PiBcbiAgICAgICAgICAgICAgICB1c2VyLm5pY2tOYW1lID09PSB1c2VyTmFtZSB8fCB1c2VyLmNvbXBhbnkgPT09IHVzZXJOYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAobWF0Y2hlZFVzZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHVzZXIgb2YgbWF0Y2hlZFVzZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIOWPqua3u+WKoOacieeUteivneWPt+eggeeahOiBlOezu+S6uu+8jOW5tuS4lOmBv+WFjemHjeWkjVxuICAgICAgICAgICAgICAgICAgICBpZiAodXNlci5waG9uZU51bWJlciAmJiB1c2VyLnBob25lTnVtYmVyLnRyaW0oKSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJLZXkgPSBgJHt1c2VyTmFtZX0tJHt1c2VyLnBob25lTnVtYmVyfWA7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb2Nlc3NlZFVzZXJzLmhhcyh1c2VyS2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZFVzZXJzLmFkZCh1c2VyS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWN0cy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGNvbnRhY3RzLmxlbmd0aCArIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbGVzUGVyc29uOiBzYWxlc1BlcnNvbi5wcm9qZWN0TmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogdXNlck5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBob25lTnVtYmVyOiB1c2VyLnBob25lTnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyDlpoLmnpzmsqHmnInmib7liLDljLnphY3nmoTnlKjmiLfmiJbljLnphY3nmoTnlKjmiLfmsqHmnInnlLXor53lj7fnoIHvvIzot7Pov4fmraTplIDllK7lkZhcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgc2VuZFJlc3BvbnNlKHJlcywgdHJ1ZSwgY29udGFjdHMsICfogZTns7vkurrmlbDmja7ojrflj5bmiJDlip8nKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCfojrflj5bogZTns7vkurrmlbDmja7lpLHotKU6JywgZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ+mUmeivr+ivpuaDhTonLCBlcnJvcik7XG4gICAgICAgIHNlbmRSZXNwb25zZShyZXMsIGZhbHNlLCBudWxsLCAn6I635Y+W6IGU57O75Lq65pWw5o2u5aSx6LSlJyk7XG4gICAgfVxufSk7XG5cbi8vIOabtOaWsOS6p+WTgeiBlOezu+S6ukFQSVxuYXBwLnB1dCgnL2FwaS9zdXBwbGllcy86aWQvY29udGFjdCcsIGFzeW5jIChyZXEsIHJlcykgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgaWQgfSA9IHJlcS5wYXJhbXM7XG4gICAgICAgIGNvbnN0IHsgcHJvZHVjdENvbnRhY3QsIGNvbnRhY3RQaG9uZSB9ID0gcmVxLmJvZHk7XG4gICAgICAgIFxuICAgICAgICAvLyDnp7vpmaRcIuiBlOezu+S6ulwi5YmN57yA5ZKMXCLplIDllK7lkZggLSBcIuWJjee8gFxuICAgICAgICBjb25zdCBwcm9jZXNzZWRQcm9kdWN0Q29udGFjdCA9IHByb2R1Y3RDb250YWN0LnJlcGxhY2UoL14o6IGU57O75Lq6fOmUgOWUruWRmFxccyotXFxzKikvZywgJycpLnRyaW0oKTtcbiAgICAgICAgXG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBhd2FpdCBwb29sLmdldENvbm5lY3Rpb24oKTtcbiAgICAgICAgXG4gICAgICAgIC8vIOabtOaWsOS6p+WTgeeahOiBlOezu+S6uuS/oeaBr1xuICAgICAgICBjb25zdCBbcmVzdWx0XSA9IGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkoXG4gICAgICAgICAgICAnVVBEQVRFIHByb2R1Y3RzIFNFVCBwcm9kdWN0X2NvbnRhY3QgPSA/LCBjb250YWN0X3Bob25lID0gPyBXSEVSRSBpZCA9ID8nLFxuICAgICAgICAgICAgW3Byb2Nlc3NlZFByb2R1Y3RDb250YWN0LCBjb250YWN0UGhvbmUsIGlkXVxuICAgICAgICApO1xuICAgICAgICBcbiAgICAgICAgY29ubmVjdGlvbi5yZWxlYXNlKCk7XG4gICAgICAgIFxuICAgICAgICBpZiAocmVzdWx0LmFmZmVjdGVkUm93cyA9PT0gMCkge1xuICAgICAgICAgICAgc2VuZFJlc3BvbnNlKHJlcywgZmFsc2UsIG51bGwsICfmnKrmib7liLDmjIflrprnmoTkuqflk4EnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgc2VuZFJlc3BvbnNlKHJlcywgdHJ1ZSwgbnVsbCwgJ+S6p+WTgeiBlOezu+S6uuS/oeaBr+abtOaWsOaIkOWKnycpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ+abtOaWsOS6p+WTgeiBlOezu+S6uuS/oeaBr+Wksei0pTonLCBlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgY29uc29sZS5lcnJvcign6ZSZ6K+v6K+m5oOFOicsIGVycm9yKTtcbiAgICAgICAgc2VuZFJlc3BvbnNlKHJlcywgZmFsc2UsIG51bGwsICfmm7TmlrDkuqflk4HogZTns7vkurrkv6Hmga/lpLHotKUnKTtcbiAgICB9XG59KTtcblxuLy8g5L6b5bqU5ZWG5a6h5qC46YCa6L+HQVBJIC0gL2FwaS9zdXBwbGllcnMvOmlkL2FwcHJvdmVcbmNvbnNvbGUubG9nKCfmraPlnKjms6jlhozkvpvlupTllYblrqHmoLjpgJrov4dBUEnot6/nlLE6IC9hcGkvc3VwcGxpZXJzLzppZC9hcHByb3ZlJyk7XG5hcHAucG9zdCgnL2FwaS9zdXBwbGllcnMvOmlkL2FwcHJvdmUnLCBhc3luYyAocmVxLCByZXMpID0+IHtcbiAgICBjb25zb2xlLmxvZygn5pS25Yiw5L6b5bqU5ZWG5a6h5qC46YCa6L+H6K+35rGCOicsIHJlcS5wYXJhbXMpO1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBhd2FpdCBwb29sLmdldENvbm5lY3Rpb24oKTtcbiAgICAgICAgY29uc3QgdXNlcklkID0gcmVxLnBhcmFtcy5pZDtcbiAgICAgICAgXG4gICAgICAgIGlmICghdXNlcklkKSB7XG4gICAgICAgICAgICBjb25uZWN0aW9uLnJlbGVhc2UoKTtcbiAgICAgICAgICAgIHJldHVybiBzZW5kUmVzcG9uc2UocmVzLCBmYWxzZSwgbnVsbCwgJ+eUqOaIt0lE5LiN6IO95Li656m6Jyk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8vIOW8gOWni+S6i+WKoVxuICAgICAgICBhd2FpdCBjb25uZWN0aW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICAgICAgXG4gICAgICAgIC8vIOajgOafpeW9k+WJjeeKtuaAgVxuICAgICAgICBjb25zdCBbY3VycmVudFVzZXJdID0gYXdhaXQgY29ubmVjdGlvbi5xdWVyeShcbiAgICAgICAgICAgICdTRUxFQ1QgcGFydG5lcnN0YXR1cyBGUk9NIHVzZXJzIFdIRVJFIHVzZXJJZCA9ID8nLFxuICAgICAgICAgICAgW3VzZXJJZF1cbiAgICAgICAgKTtcbiAgICAgICAgXG4gICAgICAgIGlmIChjdXJyZW50VXNlci5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGF3YWl0IGNvbm5lY3Rpb24ucm9sbGJhY2soKTtcbiAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVsZWFzZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHNlbmRSZXNwb25zZShyZXMsIGZhbHNlLCBudWxsLCAn5L6b5bqU5ZWG5LiN5a2Y5ZyoJyk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGlmIChjdXJyZW50VXNlclswXS5wYXJ0bmVyc3RhdHVzICE9PSAndW5kZXJyZXZpZXcnKSB7XG4gICAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLnJvbGxiYWNrKCk7XG4gICAgICAgICAgICBjb25uZWN0aW9uLnJlbGVhc2UoKTtcbiAgICAgICAgICAgIHJldHVybiBzZW5kUmVzcG9uc2UocmVzLCBmYWxzZSwgbnVsbCwgJ+W9k+WJjeeKtuaAgeS4jeWFgeiuuOWuoeaguOmAmui/hycpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyDmm7TmlrDnirbmgIHlkozlrqHmoLjml7bpl7RcbiAgICAgICAgYXdhaXQgY29ubmVjdGlvbi5xdWVyeShcbiAgICAgICAgICAgICdVUERBVEUgdXNlcnMgU0VUIHBhcnRuZXJzdGF0dXMgPSA/LCBhdWRpdF90aW1lID0gPyBXSEVSRSB1c2VySWQgPSA/JyxcbiAgICAgICAgICAgIFsnYXBwcm92ZWQnLCBuZXcgRGF0ZSgpLCB1c2VySWRdXG4gICAgICAgICk7XG4gICAgICAgIFxuICAgICAgICAvLyDmj5DkuqTkuovliqFcbiAgICAgICAgYXdhaXQgY29ubmVjdGlvbi5jb21taXQoKTtcbiAgICAgICAgY29ubmVjdGlvbi5yZWxlYXNlKCk7XG4gICAgICAgIFxuICAgICAgICBzZW5kUmVzcG9uc2UocmVzLCB0cnVlLCBudWxsLCAn5L6b5bqU5ZWG5a6h5qC46YCa6L+H5oiQ5YqfJyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcign5L6b5bqU5ZWG5a6h5qC46YCa6L+H5aSx6LSlOicsIGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICBjb25zb2xlLmVycm9yKCfplJnor6/or6bmg4U6JywgZXJyb3IpO1xuICAgICAgICBzZW5kUmVzcG9uc2UocmVzLCBmYWxzZSwgbnVsbCwgJ+S+m+W6lOWVhuWuoeaguOmAmui/h+Wksei0pScpO1xuICAgIH1cbn0pO1xuXG4vLyDkvpvlupTllYblrqHmoLjmi5Lnu51BUEkgLSAvYXBpL3N1cHBsaWVycy86aWQvcmVqZWN0XG5jb25zb2xlLmxvZygn5q2j5Zyo5rOo5YaM5L6b5bqU5ZWG5a6h5qC45ouS57udQVBJ6Lev55SxOiAvYXBpL3N1cHBsaWVycy86aWQvcmVqZWN0Jyk7XG5hcHAucG9zdCgnL2FwaS9zdXBwbGllcnMvOmlkL3JlamVjdCcsIGFzeW5jIChyZXEsIHJlcykgPT4ge1xuICAgIGNvbnNvbGUubG9nKCfmlLbliLDkvpvlupTllYblrqHmoLjmi5Lnu53or7fmsYI6JywgcmVxLnBhcmFtcywgcmVxLmJvZHkpO1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBhd2FpdCBwb29sLmdldENvbm5lY3Rpb24oKTtcbiAgICAgICAgY29uc3QgdXNlcklkID0gcmVxLnBhcmFtcy5pZDtcbiAgICAgICAgY29uc3QgeyByZWplY3RSZWFzb24gfSA9IHJlcS5ib2R5O1xuICAgICAgICBcbiAgICAgICAgaWYgKCF1c2VySWQpIHtcbiAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVsZWFzZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHNlbmRSZXNwb25zZShyZXMsIGZhbHNlLCBudWxsLCAn55So5oi3SUTkuI3og73kuLrnqbonKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgaWYgKCFyZWplY3RSZWFzb24pIHtcbiAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVsZWFzZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHNlbmRSZXNwb25zZShyZXMsIGZhbHNlLCBudWxsLCAn5a6h5qC45aSx6LSl5Y6f5Zug5LiN6IO95Li656m6Jyk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8vIOW8gOWni+S6i+WKoVxuICAgICAgICBhd2FpdCBjb25uZWN0aW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICAgICAgXG4gICAgICAgIC8vIOajgOafpeW9k+WJjeeKtuaAgVxuICAgICAgICBjb25zdCBbY3VycmVudFVzZXJdID0gYXdhaXQgY29ubmVjdGlvbi5xdWVyeShcbiAgICAgICAgICAgICdTRUxFQ1QgcGFydG5lcnN0YXR1cyBGUk9NIHVzZXJzIFdIRVJFIHVzZXJJZCA9ID8nLFxuICAgICAgICAgICAgW3VzZXJJZF1cbiAgICAgICAgKTtcbiAgICAgICAgXG4gICAgICAgIGlmIChjdXJyZW50VXNlci5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGF3YWl0IGNvbm5lY3Rpb24ucm9sbGJhY2soKTtcbiAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVsZWFzZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHNlbmRSZXNwb25zZShyZXMsIGZhbHNlLCBudWxsLCAn5L6b5bqU5ZWG5LiN5a2Y5ZyoJyk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGlmIChjdXJyZW50VXNlclswXS5wYXJ0bmVyc3RhdHVzICE9PSAndW5kZXJyZXZpZXcnKSB7XG4gICAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLnJvbGxiYWNrKCk7XG4gICAgICAgICAgICBjb25uZWN0aW9uLnJlbGVhc2UoKTtcbiAgICAgICAgICAgIHJldHVybiBzZW5kUmVzcG9uc2UocmVzLCBmYWxzZSwgbnVsbCwgJ+W9k+WJjeeKtuaAgeS4jeWFgeiuuOWuoeaguOaLkue7nScpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyDmm7TmlrDnirbmgIHjgIHlrqHmoLjlpLHotKXljp/lm6DlkozlrqHmoLjml7bpl7RcbiAgICAgICAgYXdhaXQgY29ubmVjdGlvbi5xdWVyeShcbiAgICAgICAgICAgICdVUERBVEUgdXNlcnMgU0VUIHBhcnRuZXJzdGF0dXMgPSA/LCByZWFzb25mb3JmYWlsdXJlID0gPywgYXVkaXRfdGltZSA9ID8gV0hFUkUgdXNlcklkID0gPycsXG4gICAgICAgICAgICBbJ3Jldmlld2ZhaWxlZCcsIHJlamVjdFJlYXNvbiwgbmV3IERhdGUoKSwgdXNlcklkXVxuICAgICAgICApO1xuICAgICAgICBcbiAgICAgICAgLy8g5o+Q5Lqk5LqL5YqhXG4gICAgICAgIGF3YWl0IGNvbm5lY3Rpb24uY29tbWl0KCk7XG4gICAgICAgIGNvbm5lY3Rpb24ucmVsZWFzZSgpO1xuICAgICAgICBcbiAgICAgICAgc2VuZFJlc3BvbnNlKHJlcywgdHJ1ZSwgbnVsbCwgJ+S+m+W6lOWVhuWuoeaguOaLkue7neaIkOWKnycpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ+S+m+W6lOWVhuWuoeaguOaLkue7neWksei0pTonLCBlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgY29uc29sZS5lcnJvcign6ZSZ6K+v6K+m5oOFOicsIGVycm9yKTtcbiAgICAgICAgc2VuZFJlc3BvbnNlKHJlcywgZmFsc2UsIG51bGwsICfkvpvlupTllYblrqHmoLjmi5Lnu53lpLHotKUnKTtcbiAgICB9XG59KTtcblxuLy8g5L6b5bqU5ZWG5byA5aeL5ZCI5L2cQVBJIC0gL2FwaS9zdXBwbGllcnMvOmlkL2Nvb3BlcmF0ZVxuY29uc29sZS5sb2coJ+ato+WcqOazqOWGjOS+m+W6lOWVhuW8gOWni+WQiOS9nEFQSei3r+eUsTogL2FwaS9zdXBwbGllcnMvOmlkL2Nvb3BlcmF0ZScpO1xuYXBwLnBvc3QoJy9hcGkvc3VwcGxpZXJzLzppZC9jb29wZXJhdGUnLCBhc3luYyAocmVxLCByZXMpID0+IHtcbiAgICBjb25zb2xlLmxvZygn5pS25Yiw5L6b5bqU5ZWG5byA5aeL5ZCI5L2c6K+35rGCOicsIHJlcS5wYXJhbXMpO1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBhd2FpdCBwb29sLmdldENvbm5lY3Rpb24oKTtcbiAgICAgICAgY29uc3QgdXNlcklkID0gcmVxLnBhcmFtcy5pZDtcbiAgICAgICAgXG4gICAgICAgIGlmICghdXNlcklkKSB7XG4gICAgICAgICAgICBjb25uZWN0aW9uLnJlbGVhc2UoKTtcbiAgICAgICAgICAgIHJldHVybiBzZW5kUmVzcG9uc2UocmVzLCBmYWxzZSwgbnVsbCwgJ+eUqOaIt0lE5LiN6IO95Li656m6Jyk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8vIOW8gOWni+S6i+WKoVxuICAgICAgICBhd2FpdCBjb25uZWN0aW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICAgICAgXG4gICAgICAgIC8vIOajgOafpeW9k+WJjeeKtuaAgVxuICAgICAgICBjb25zdCBbY3VycmVudFVzZXJdID0gYXdhaXQgY29ubmVjdGlvbi5xdWVyeShcbiAgICAgICAgICAgICdTRUxFQ1QgcGFydG5lcnN0YXR1cyBGUk9NIHVzZXJzIFdIRVJFIHVzZXJJZCA9ID8nLFxuICAgICAgICAgICAgW3VzZXJJZF1cbiAgICAgICAgKTtcbiAgICAgICAgXG4gICAgICAgIGlmIChjdXJyZW50VXNlci5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGF3YWl0IGNvbm5lY3Rpb24ucm9sbGJhY2soKTtcbiAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVsZWFzZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHNlbmRSZXNwb25zZShyZXMsIGZhbHNlLCBudWxsLCAn5L6b5bqU5ZWG5LiN5a2Y5ZyoJyk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGlmIChjdXJyZW50VXNlclswXS5wYXJ0bmVyc3RhdHVzICE9PSAnYXBwcm92ZWQnKSB7XG4gICAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLnJvbGxiYWNrKCk7XG4gICAgICAgICAgICBjb25uZWN0aW9uLnJlbGVhc2UoKTtcbiAgICAgICAgICAgIHJldHVybiBzZW5kUmVzcG9uc2UocmVzLCBmYWxzZSwgbnVsbCwgJ+WPquacieWuoeaguOmAmui/h+eahOS+m+W6lOWVhuaJjeiDveW8gOWni+WQiOS9nCcpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyDmm7TmlrDnirbmgIFcbiAgICAgICAgYXdhaXQgY29ubmVjdGlvbi5xdWVyeShcbiAgICAgICAgICAgICdVUERBVEUgdXNlcnMgU0VUIHBhcnRuZXJzdGF0dXMgPSA/IFdIRVJFIHVzZXJJZCA9ID8nLFxuICAgICAgICAgICAgWydpbmNvb3BlcmF0aW9uJywgdXNlcklkXVxuICAgICAgICApO1xuICAgICAgICBcbiAgICAgICAgLy8g5o+Q5Lqk5LqL5YqhXG4gICAgICAgIGF3YWl0IGNvbm5lY3Rpb24uY29tbWl0KCk7XG4gICAgICAgIGNvbm5lY3Rpb24ucmVsZWFzZSgpO1xuICAgICAgICBcbiAgICAgICAgc2VuZFJlc3BvbnNlKHJlcywgdHJ1ZSwgbnVsbCwgJ+S+m+W6lOWVhuW8gOWni+WQiOS9nOaIkOWKnycpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ+S+m+W6lOWVhuW8gOWni+WQiOS9nOWksei0pTonLCBlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgY29uc29sZS5lcnJvcign6ZSZ6K+v6K+m5oOFOicsIGVycm9yKTtcbiAgICAgICAgc2VuZFJlc3BvbnNlKHJlcywgZmFsc2UsIG51bGwsICfkvpvlupTllYblvIDlp4vlkIjkvZzlpLHotKUnKTtcbiAgICB9XG59KTtcblxuLy8g5L6b5bqU5ZWG57uI5q2i5ZCI5L2cQVBJIC0gL2FwaS9zdXBwbGllcnMvOmlkL3Rlcm1pbmF0ZVxuY29uc29sZS5sb2coJ+ato+WcqOazqOWGjOS+m+W6lOWVhue7iOatouWQiOS9nEFQSei3r+eUsTogL2FwaS9zdXBwbGllcnMvOmlkL3Rlcm1pbmF0ZScpO1xuYXBwLnBvc3QoJy9hcGkvc3VwcGxpZXJzLzppZC90ZXJtaW5hdGUnLCBhc3luYyAocmVxLCByZXMpID0+IHtcbiAgICBjb25zb2xlLmxvZygn5pS25Yiw5L6b5bqU5ZWG57uI5q2i5ZCI5L2c6K+35rGCOicsIHJlcS5wYXJhbXMsIHJlcS5ib2R5KTtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBjb25uZWN0aW9uID0gYXdhaXQgcG9vbC5nZXRDb25uZWN0aW9uKCk7XG4gICAgICAgIGNvbnN0IHVzZXJJZCA9IHJlcS5wYXJhbXMuaWQ7XG4gICAgICAgIGNvbnN0IHsgcmVhc29uIH0gPSByZXEuYm9keTtcbiAgICAgICAgXG4gICAgICAgIGlmICghdXNlcklkKSB7XG4gICAgICAgICAgICBjb25uZWN0aW9uLnJlbGVhc2UoKTtcbiAgICAgICAgICAgIHJldHVybiBzZW5kUmVzcG9uc2UocmVzLCBmYWxzZSwgbnVsbCwgJ+eUqOaIt0lE5LiN6IO95Li656m6Jyk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8vIOW8gOWni+S6i+WKoVxuICAgICAgICBhd2FpdCBjb25uZWN0aW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICAgICAgXG4gICAgICAgIC8vIOajgOafpeW9k+WJjeeKtuaAgVxuICAgICAgICBjb25zdCBbY3VycmVudFVzZXJdID0gYXdhaXQgY29ubmVjdGlvbi5xdWVyeShcbiAgICAgICAgICAgICdTRUxFQ1QgcGFydG5lcnN0YXR1cyBGUk9NIHVzZXJzIFdIRVJFIHVzZXJJZCA9ID8nLFxuICAgICAgICAgICAgW3VzZXJJZF1cbiAgICAgICAgKTtcbiAgICAgICAgXG4gICAgICAgIGlmIChjdXJyZW50VXNlci5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGF3YWl0IGNvbm5lY3Rpb24ucm9sbGJhY2soKTtcbiAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVsZWFzZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHNlbmRSZXNwb25zZShyZXMsIGZhbHNlLCBudWxsLCAn5L6b5bqU5ZWG5LiN5a2Y5ZyoJyk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGlmIChjdXJyZW50VXNlclswXS5wYXJ0bmVyc3RhdHVzICE9PSAnYXBwcm92ZWQnICYmIGN1cnJlbnRVc2VyWzBdLnBhcnRuZXJzdGF0dXMgIT09ICdpbmNvb3BlcmF0aW9uJykge1xuICAgICAgICAgICAgYXdhaXQgY29ubmVjdGlvbi5yb2xsYmFjaygpO1xuICAgICAgICAgICAgY29ubmVjdGlvbi5yZWxlYXNlKCk7XG4gICAgICAgICAgICByZXR1cm4gc2VuZFJlc3BvbnNlKHJlcywgZmFsc2UsIG51bGwsICflj6rmnInlrqHmoLjpgJrov4fmiJblkIjkvZzkuK3nmoTkvpvlupTllYbmiY3og73nu4jmraLlkIjkvZwnKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLy8g5pu05paw54q25oCB5ZKM57uI5q2i5Y6f5ZugXG4gICAgICAgIGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkoXG4gICAgICAgICAgICAnVVBEQVRFIHVzZXJzIFNFVCBwYXJ0bmVyc3RhdHVzID0gPywgdGVybWluYXRlX3JlYXNvbiA9ID8gV0hFUkUgdXNlcklkID0gPycsXG4gICAgICAgICAgICBbJ25vdGNvb3BlcmF0aXZlJywgcmVhc29uLCB1c2VySWRdXG4gICAgICAgICk7XG4gICAgICAgIFxuICAgICAgICAvLyDmj5DkuqTkuovliqFcbiAgICAgICAgYXdhaXQgY29ubmVjdGlvbi5jb21taXQoKTtcbiAgICAgICAgY29ubmVjdGlvbi5yZWxlYXNlKCk7XG4gICAgICAgIFxuICAgICAgICBzZW5kUmVzcG9uc2UocmVzLCB0cnVlLCBudWxsLCAn5L6b5bqU5ZWG57uI5q2i5ZCI5L2c5oiQ5YqfJyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcign5L6b5bqU5ZWG57uI5q2i5ZCI5L2c5aSx6LSlOicsIGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICBjb25zb2xlLmVycm9yKCfplJnor6/or6bmg4U6JywgZXJyb3IpO1xuICAgICAgICBzZW5kUmVzcG9uc2UocmVzLCBmYWxzZSwgbnVsbCwgJ+S+m+W6lOWVhue7iOatouWQiOS9nOWksei0pScpO1xuICAgIH1cbn0pO1xuXG4vLyDkvpvlupTllYbliJfooajmn6Xor6JBUEkgLSAvYXBpL3N1cHBsaWVyc1xuY29uc29sZS5sb2coJ+ato+WcqOazqOWGjOS+m+W6lOWVhuWIl+ihqOafpeivokFQSei3r+eUsTogL2FwaS9zdXBwbGllcnMnKTtcbmFwcC5nZXQoJy9hcGkvc3VwcGxpZXJzJywgYXN5bmMgKHJlcSwgcmVzKSA9PiB7XG4gICAgY29uc29sZS5sb2coJ+aUtuWIsOS+m+W6lOWVhuWIl+ihqOafpeivouivt+axgjonLCByZXEucXVlcnkpO1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBhd2FpdCBwb29sLmdldENvbm5lY3Rpb24oKTtcbiAgICAgICAgY29uc3QgeyBwYWdlID0gMSwgcGFnZVNpemUgPSAxMCwgc3RhdHVzID0gJycsIGtleXdvcmQgPSAnJyB9ID0gcmVxLnF1ZXJ5O1xuICAgICAgICBcbiAgICAgICAgLy8g5p6E5bu65p+l6K+i5p2h5Lu2XG4gICAgICAgIGxldCB3aGVyZUNsYXVzZSA9ICcnO1xuICAgICAgICBsZXQgcGFyYW1zID0gW107XG4gICAgICAgIFxuICAgICAgICAvLyDmt7vliqDnirbmgIHnrZvpgIlcbiAgICAgICAgaWYgKHN0YXR1cykge1xuICAgICAgICAgICAgd2hlcmVDbGF1c2UgKz0gYCBXSEVSRSBwYXJ0bmVyc3RhdHVzID0gP2A7XG4gICAgICAgICAgICBwYXJhbXMucHVzaChzdGF0dXMpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyDmt7vliqDlhbPplK7or43mkJzntKJcbiAgICAgICAgaWYgKGtleXdvcmQpIHtcbiAgICAgICAgICAgIHdoZXJlQ2xhdXNlICs9IHN0YXR1cyA/ICcgQU5EJyA6ICcgV0hFUkUnO1xuICAgICAgICAgICAgd2hlcmVDbGF1c2UgKz0gYCAodXNlcm5hbWUgTElLRSA/IE9SIGNvbXBhbnkgTElLRSA/IE9SIHBob25lTnVtYmVyIExJS0UgPylgO1xuICAgICAgICAgICAgcGFyYW1zLnB1c2goYCUke2tleXdvcmR9JWAsIGAlJHtrZXl3b3JkfSVgLCBgJSR7a2V5d29yZH0lYCk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8vIOiOt+WPluaAu+aVsFxuICAgICAgICBjb25zdCBbdG90YWxSZXN1bHRdID0gYXdhaXQgY29ubmVjdGlvbi5xdWVyeShcbiAgICAgICAgICAgIGBTRUxFQ1QgQ09VTlQoKikgYXMgdG90YWwgRlJPTSB1c2VycyR7d2hlcmVDbGF1c2V9YCxcbiAgICAgICAgICAgIHBhcmFtc1xuICAgICAgICApO1xuICAgICAgICBjb25zdCB0b3RhbCA9IHRvdGFsUmVzdWx0WzBdLnRvdGFsO1xuICAgICAgICBcbiAgICAgICAgLy8g6K6h566X5YiG6aG1XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IChwYWdlIC0gMSkgKiBwYWdlU2l6ZTtcbiAgICAgICAgcGFyYW1zLnB1c2gocGFyc2VJbnQocGFnZVNpemUpLCBvZmZzZXQpO1xuICAgICAgICBcbiAgICAgICAgLy8g5p+l6K+i5L6b5bqU5ZWG5YiX6KGoXG4gICAgICAgIGNvbnN0IFtzdXBwbGllcnNdID0gYXdhaXQgY29ubmVjdGlvbi5xdWVyeShcbiAgICAgICAgICAgIGBTRUxFQ1QgdXNlcklkLCBwaG9uZU51bWJlciwgcHJvdmluY2UsIGNpdHksIGRpc3RyaWN0LCBkZXRhaWxlZGFkZHJlc3MsIGNvbXBhbnksIGNvbGxhYm9yYXRpb25pZCwgY29vcGVyYXRpb24sIGJ1c2luZXNzbGljZW5zZXVybCwgcHJvb2Z1cmwsIGJyYW5kdXJsLCBwYXJ0bmVyc3RhdHVzLCByZWFzb25mb3JmYWlsdXJlLCByZWplY3RfcmVhc29uLCB0ZXJtaW5hdGVfcmVhc29uLCBhdWRpdF90aW1lIFxuICAgICAgICAgICAgIEZST00gdXNlcnMke3doZXJlQ2xhdXNlfSBcbiAgICAgICAgICAgICBPUkRFUiBCWSBhdWRpdF90aW1lIERFU0MgTElNSVQgPyBPRkZTRVQgP2AsXG4gICAgICAgICAgICBwYXJhbXNcbiAgICAgICAgKTtcbiAgICAgICAgXG4gICAgICAgIGNvbm5lY3Rpb24ucmVsZWFzZSgpO1xuICAgICAgICBcbiAgICAgICAgc2VuZFJlc3BvbnNlKHJlcywgdHJ1ZSwge1xuICAgICAgICAgICAgbGlzdDogc3VwcGxpZXJzLFxuICAgICAgICAgICAgdG90YWwsXG4gICAgICAgICAgICBwYWdlOiBwYXJzZUludChwYWdlKSxcbiAgICAgICAgICAgIHBhZ2VTaXplOiBwYXJzZUludChwYWdlU2l6ZSlcbiAgICAgICAgfSwgJ+afpeivouaIkOWKnycpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ+S+m+W6lOWVhuWIl+ihqOafpeivouWksei0pTonLCBlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgY29uc29sZS5lcnJvcign6ZSZ6K+v6K+m5oOFOicsIGVycm9yKTtcbiAgICAgICAgc2VuZFJlc3BvbnNlKHJlcywgZmFsc2UsIG51bGwsICfkvpvlupTllYbliJfooajmn6Xor6LlpLHotKUnKTtcbiAgICB9XG59KTtcblxuLy8g6aaW6aG16Lev55SxXG5hcHAuZ2V0KCcvJywgKHJlcSwgcmVzKSA9PiB7XG4gICAgcmVzLnNlbmRGaWxlKHBhdGguam9pbihfX2Rpcm5hbWUsICdSZWplY3QuaHRtbCcpKTtcbn0pO1xuXG4vLyDplJnor6/lpITnkIbkuK3pl7Tku7ZcbmFwcC51c2UoKGVyciwgcmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zb2xlLmVycm9yKCfmnI3liqHlmajplJnor686JywgZXJyLm1lc3NhZ2UpO1xuICAgIGNvbnNvbGUuZXJyb3IoJ+mUmeivr+ivpuaDhTonLCBlcnIpO1xuICAgIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIG1lc3NhZ2U6ICfmnI3liqHlmajlhoXpg6jplJnor68nXG4gICAgfSk7XG59KTtcblxuLy8g5ZCv5Yqo5pyN5Yqh5ZmoXG5hc3luYyBmdW5jdGlvbiBzdGFydFNlcnZlcigpIHtcbiAgICB0cnkge1xuICAgICAgICBhd2FpdCBpbml0RGF0YWJhc2UoKTtcbiAgICAgICAgXG4gICAgICAgIGFwcC5saXN0ZW4oUE9SVCwgKCkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYOacjeWKoeWZqOW3suWQr+WKqO+8jOebkeWQrOerr+WPoyAke1BPUlR9YCk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhg6K6/6Zeu5Zyw5Z2AOiBodHRwOi8vbG9jYWxob3N0OiR7UE9SVH1gKTtcbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcign5pyN5Yqh5Zmo5ZCv5Yqo5aSx6LSlOicsIGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICBjb25zb2xlLmVycm9yKCfplJnor6/or6bmg4U6JywgZXJyb3IpO1xuICAgICAgICAvLyDlpoLmnpzlkK/liqjlpLHotKXvvIzlsJ3or5Xph43mlrDlkK/liqhcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygn5bCd6K+V6YeN5paw5ZCv5Yqo5pyN5Yqh5ZmoLi4uJyk7XG4gICAgICAgICAgICBzdGFydFNlcnZlcigpO1xuICAgICAgICB9LCA1MDAwKTtcbiAgICB9XG59XG5cbi8vIOehruS/neaVsOaNruW6k+e7k+aehFxuYXN5bmMgZnVuY3Rpb24gZW5zdXJlRGF0YWJhc2VTY2hlbWEoKSB7XG4gICAgY29uc29sZS5sb2coJ+W8gOWni+aJp+ihjOaVsOaNruW6k+e7k+aehOajgOafpS4uLicpO1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBhd2FpdCBwb29sLmdldENvbm5lY3Rpb24oKTtcbiAgICAgICAgY29uc29sZS5sb2coJ+iOt+WPluaVsOaNruW6k+i/nuaOpeaIkOWKnycpO1xuXG4gICAgICAgIC8vIOajgOafpXVzZXJz6KGo5piv5ZCm5pyJ5b+F6KaB55qE5a2X5q61XG4gICAgICAgIGNvbnNvbGUubG9nKCfmo4Dmn6V1c2Vyc+ihqOaYr+WQpuaciXBhcnRuZXJzdGF0dXPlrZfmrrUuLi4nKTtcbiAgICAgICAgY29uc3QgW3BhcnRuZXJTdGF0dXNDb2x1bW5zXSA9IGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkoXG4gICAgICAgICAgICAnU0hPVyBDT0xVTU5TIEZST00gYHVzZXJzYCBMSUtFID8nLFxuICAgICAgICAgICAgWydwYXJ0bmVyc3RhdHVzJ11cbiAgICAgICAgKTtcbiAgICAgICAgY29uc29sZS5sb2coJ+ajgOafpeihqOWtl+autee7k+aenDonLCBwYXJ0bmVyU3RhdHVzQ29sdW1ucy5sZW5ndGggPiAwID8gJ+W3suWtmOWcqCcgOiAn5LiN5a2Y5ZyoJyk7XG5cbiAgICAgICAgaWYgKHBhcnRuZXJTdGF0dXNDb2x1bW5zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ+a3u+WKoHBhcnRuZXJzdGF0dXPlrZfmrrXliLB1c2Vyc+ihqC4uLicpO1xuICAgICAgICAgICAgYXdhaXQgY29ubmVjdGlvbi5xdWVyeShcbiAgICAgICAgICAgICAgICAnQUxURVIgVEFCTEUgYHVzZXJzYCBBREQgQ09MVU1OIHBhcnRuZXJzdGF0dXMgVkFSQ0hBUig1MCkgREVGQVVMVCBcInVuZGVycmV2aWV3XCIgQ09NTUVOVCBcIuWQiOS9nOWVhueKtuaAgVwiJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdwYXJ0bmVyc3RhdHVz5a2X5q615re75Yqg5oiQ5YqfJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZygn5qOA5p+ldXNlcnPooajmmK/lkKbmnIlyZWplY3RfcmVhc29u5a2X5q61Li4uJyk7XG4gICAgICAgIGNvbnN0IFtyZWplY3RSZWFzb25Db2x1bW5zXSA9IGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkoXG4gICAgICAgICAgICAnU0hPVyBDT0xVTU5TIEZST00gYHVzZXJzYCBMSUtFID8nLFxuICAgICAgICAgICAgWydyZWplY3RfcmVhc29uJ11cbiAgICAgICAgKTtcbiAgICAgICAgY29uc29sZS5sb2coJ+ajgOafpeihqOWtl+autee7k+aenDonLCByZWplY3RSZWFzb25Db2x1bW5zLmxlbmd0aCA+IDAgPyAn5bey5a2Y5ZyoJyA6ICfkuI3lrZjlnKgnKTtcblxuICAgICAgICBpZiAocmVqZWN0UmVhc29uQ29sdW1ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCfmt7vliqByZWplY3RfcmVhc29u5a2X5q615YiwdXNlcnPooaguLi4nKTtcbiAgICAgICAgICAgIGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkoXG4gICAgICAgICAgICAgICAgJ0FMVEVSIFRBQkxFIGB1c2Vyc2AgQUREIENPTFVNTiByZWplY3RfcmVhc29uIFRFWFQgQ09NTUVOVCBcIuaLkue7neeQhueUsVwiJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdyZWplY3RfcmVhc29u5a2X5q615re75Yqg5oiQ5YqfJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZygn5qOA5p+ldXNlcnPooajmmK/lkKbmnIl0ZXJtaW5hdGVfcmVhc29u5a2X5q61Li4uJyk7XG4gICAgICAgIGNvbnN0IFt0ZXJtaW5hdGVSZWFzb25Db2x1bW5zXSA9IGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkoXG4gICAgICAgICAgICAnU0hPVyBDT0xVTU5TIEZST00gYHVzZXJzYCBMSUtFID8nLFxuICAgICAgICAgICAgWyd0ZXJtaW5hdGVfcmVhc29uJ11cbiAgICAgICAgKTtcbiAgICAgICAgY29uc29sZS5sb2coJ+ajgOafpeihqOWtl+autee7k+aenDonLCB0ZXJtaW5hdGVSZWFzb25Db2x1bW5zLmxlbmd0aCA+IDAgPyAn5bey5a2Y5ZyoJyA6ICfkuI3lrZjlnKgnKTtcblxuICAgICAgICBpZiAodGVybWluYXRlUmVhc29uQ29sdW1ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCfmt7vliqB0ZXJtaW5hdGVfcmVhc29u5a2X5q615YiwdXNlcnPooaguLi4nKTtcbiAgICAgICAgICAgIGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkoXG4gICAgICAgICAgICAgICAgJ0FMVEVSIFRBQkxFIGB1c2Vyc2AgQUREIENPTFVNTiB0ZXJtaW5hdGVfcmVhc29uIFRFWFQgQ09NTUVOVCBcIue7iOatouWQiOS9nOeQhueUsVwiJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCd0ZXJtaW5hdGVfcmVhc29u5a2X5q615re75Yqg5oiQ5YqfJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZygn5qOA5p+ldXNlcnPooajmmK/lkKbmnIlhdWRpdF90aW1l5a2X5q61Li4uJyk7XG4gICAgICAgIGNvbnN0IFt1c2VyQXVkaXRUaW1lQ29sdW1uc10gPSBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KFxuICAgICAgICAgICAgJ1NIT1cgQ09MVU1OUyBGUk9NIGB1c2Vyc2AgTElLRSA/JyxcbiAgICAgICAgICAgIFsnYXVkaXRfdGltZSddXG4gICAgICAgICk7XG4gICAgICAgIGNvbnNvbGUubG9nKCfmo4Dmn6XooajlrZfmrrXnu5Pmnpw6JywgdXNlckF1ZGl0VGltZUNvbHVtbnMubGVuZ3RoID4gMCA/ICflt7LlrZjlnKgnIDogJ+S4jeWtmOWcqCcpO1xuXG4gICAgICAgIGlmICh1c2VyQXVkaXRUaW1lQ29sdW1ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCfmt7vliqBhdWRpdF90aW1l5a2X5q615YiwdXNlcnPooaguLi4nKTtcbiAgICAgICAgICAgIGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkoXG4gICAgICAgICAgICAgICAgJ0FMVEVSIFRBQkxFIGB1c2Vyc2AgQUREIENPTFVNTiBhdWRpdF90aW1lIERBVEVUSU1FIENPTU1FTlQgXCLlrqHmoLjml7bpl7RcIidcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnYXVkaXRfdGltZeWtl+autea3u+WKoOaIkOWKnycpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g5qOA5p+l6KGo5piv5ZCm5pyJcmVqZWN0UmVhc29u5a2X5q61XG4gICAgICAgIGNvbnNvbGUubG9nKCfmo4Dmn6Xooahwcm9kdWN0c+aYr+WQpuaciXJlamVjdFJlYXNvbuWtl+autS4uLicpO1xuICAgICAgICBjb25zdCBbY29sdW1uc10gPSBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KFxuICAgICAgICAgICAgJ1NIT1cgQ09MVU1OUyBGUk9NIGBwcm9kdWN0c2AgTElLRSA/JyxcbiAgICAgICAgICAgIFsncmVqZWN0UmVhc29uJ11cbiAgICAgICAgKTtcbiAgICAgICAgY29uc29sZS5sb2coJ+ajgOafpeihqOWtl+autee7k+aenDonLCBjb2x1bW5zLmxlbmd0aCA+IDAgPyAn5bey5a2Y5ZyoJyA6ICfkuI3lrZjlnKgnKTtcblxuICAgICAgICBpZiAoY29sdW1ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCfmt7vliqByZWplY3RSZWFzb27lrZfmrrXliLBwcm9kdWN0c+ihqC4uLicpO1xuICAgICAgICAgICAgYXdhaXQgY29ubmVjdGlvbi5xdWVyeShcbiAgICAgICAgICAgICAgICAnQUxURVIgVEFCTEUgYHByb2R1Y3RzYCBBREQgQ09MVU1OIHJlamVjdFJlYXNvbiBURVhUIENPTU1FTlQgXCLmi5Lnu53nkIbnlLFcIidcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygncmVqZWN0UmVhc29u5a2X5q615re75Yqg5oiQ5YqfJyk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8vIOajgOafpeihqOaYr+WQpuaciWF1ZGl0X3RpbWXlrZfmrrVcbiAgICAgICAgY29uc29sZS5sb2coJ+ajgOafpeihqHByb2R1Y3Rz5piv5ZCm5pyJYXVkaXRfdGltZeWtl+autS4uLicpO1xuICAgICAgICBjb25zdCBbYXVkaXRUaW1lQ29sdW1uc10gPSBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KFxuICAgICAgICAgICAgJ1NIT1cgQ09MVU1OUyBGUk9NIGBwcm9kdWN0c2AgTElLRSA/JyxcbiAgICAgICAgICAgIFsnYXVkaXRfdGltZSddXG4gICAgICAgICk7XG4gICAgICAgIGNvbnNvbGUubG9nKCfmo4Dmn6XooajlrZfmrrXnu5Pmnpw6JywgYXVkaXRUaW1lQ29sdW1ucy5sZW5ndGggPiAwID8gJ+W3suWtmOWcqCcgOiAn5LiN5a2Y5ZyoJyk7XG5cbiAgICAgICAgaWYgKGF1ZGl0VGltZUNvbHVtbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygn5re75YqgYXVkaXRfdGltZeWtl+auteWIsHByb2R1Y3Rz6KGoLi4uJyk7XG4gICAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KFxuICAgICAgICAgICAgICAgICdBTFRFUiBUQUJMRSBgcHJvZHVjdHNgIEFERCBDT0xVTU4gYXVkaXRfdGltZSBEQVRFVElNRSBDT01NRU5UIFwi5a6h5qC45pe26Ze0XCInXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ2F1ZGl0X3RpbWXlrZfmrrXmt7vliqDmiJDlip8nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIOajgOafpWF1ZGl0X2xvZ3PooajmmK/lkKblrZjlnKjvvIzlpoLmnpzkuI3lrZjlnKjliJnliJvlu7pcbiAgICAgICAgY29uc29sZS5sb2coJ+ajgOafpWF1ZGl0X2xvZ3PooajmmK/lkKblrZjlnKguLi4nKTtcbiAgICAgICAgY29uc3QgW3RhYmxlc10gPSBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KFxuICAgICAgICAgICAgXCJTSE9XIFRBQkxFUyBMSUtFICdhdWRpdF9sb2dzJ1wiXG4gICAgICAgICk7XG4gICAgICAgIGNvbnNvbGUubG9nKCfmo4Dmn6XooajlrZjlnKjmgKfnu5Pmnpw6JywgdGFibGVzLmxlbmd0aCA+IDAgPyAn5bey5a2Y5ZyoJyA6ICfkuI3lrZjlnKgnKTtcblxuICAgICAgICBpZiAodGFibGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ+WIm+W7umF1ZGl0X2xvZ3PooaguLi4nKTtcbiAgICAgICAgICAgIGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkoYFxuICAgICAgICAgICAgICAgIENSRUFURSBUQUJMRSBhdWRpdF9sb2dzIChcbiAgICAgICAgICAgICAgICAgICAgaWQgSU5UIEFVVE9fSU5DUkVNRU5UIFBSSU1BUlkgS0VZLFxuICAgICAgICAgICAgICAgICAgICBzdXBwbHlfaWQgVkFSQ0hBUig1MCkgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbiBWQVJDSEFSKDIwKSBOT1QgTlVMTCBDT01NRU5UICdhcHByb3Zl5oiWcmVqZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgdXNlcl9pZCBWQVJDSEFSKDUwKSBOT1QgTlVMTCBDT01NRU5UICfmk43kvZzkurpJRCcsXG4gICAgICAgICAgICAgICAgICAgIHJlbWFyayBURVhUIENPTU1FTlQgJ+Wkh+azqOS/oeaBrycsXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZWRfYXQgREFURVRJTUUgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgICAgIElOREVYIGlkeF9zdXBwbHlfaWQgKHN1cHBseV9pZCksXG4gICAgICAgICAgICAgICAgICAgIElOREVYIGlkeF9jcmVhdGVkX2F0IChjcmVhdGVkX2F0KVxuICAgICAgICAgICAgICAgICkgQ09NTUVOVCAn5a6h5qC45pON5L2c5pel5b+X6KGoJ1xuICAgICAgICAgICAgYCk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnYXVkaXRfbG9nc+ihqOWIm+W7uuaIkOWKnycpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29ubmVjdGlvbi5yZWxlYXNlKCk7XG4gICAgICAgIGNvbnNvbGUubG9nKCfmlbDmja7lupPnu5PmnoTmo4Dmn6XlrozmiJAnKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCfmlbDmja7lupPnu5PmnoTmo4Dmn6XlpLHotKU6JywgZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ+mUmeivr+ivpuaDhTonLCBlcnJvcik7XG4gICAgfVxufVxuXG4vLyDlkK/liqjmnI3liqHlmahcbnN0YXJ0U2VydmVyKCk7XG5cbi8vIOS8mOmbheWFs+mXrVxucHJvY2Vzcy5vbignU0lHSU5UJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKCfmraPlnKjlhbPpl63mnI3liqHlmaguLi4nKTtcbiAgICBpZiAocG9vbCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgcG9vbC5lbmQoKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCfmlbDmja7lupPov57mjqXmsaDlt7LlhbPpl60nKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WFs+mXreaVsOaNruW6k+i/nuaOpeaxoOWksei0pTonLCBlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zb2xlLmxvZygn5pyN5Yqh5Zmo5bey5YWz6ZetJyk7XG4gICAgcHJvY2Vzcy5leGl0KDApO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gYXBwOyJdLCJtYXBwaW5ncyI6Im8wL0NBZVk7QUFBQUEsY0FBQSxTQUFBQSxDQUFBLFNBQUFDLGNBQUEsV0FBQUEsY0FBQSxFQUFBRCxjQUFBLEdBZlosS0FBTSxDQUFBRSxPQUFPLEVBQUFGLGNBQUEsR0FBQUcsQ0FBQSxNQUFHQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQ2xDLEtBQU0sQ0FBQUMsVUFBVSxFQUFBTCxjQUFBLEdBQUFHLENBQUEsTUFBR0MsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUN6QyxLQUFNLENBQUFFLElBQUksRUFBQU4sY0FBQSxHQUFBRyxDQUFBLE1BQUdDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFDNUIsS0FBTSxDQUFBRyxLQUFLLEVBQUFQLGNBQUEsR0FBQUcsQ0FBQSxNQUFHQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMs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