{"id":3202,"date":"2025-07-29T08:26:44","date_gmt":"2025-07-29T07:26:44","guid":{"rendered":"https:\/\/workboot.fr\/ciela\/?page_id=3202"},"modified":"2026-05-06T15:33:44","modified_gmt":"2026-05-06T14:33:44","slug":"rpi_3-langage-c-et-rpi","status":"publish","type":"page","link":"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/","title":{"rendered":"RPI_3 Langage C"},"content":{"rendered":"<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><a href=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/11\/Raspberry.jpeg\"><img loading=\"lazy\" decoding=\"async\" width=\"200\" height=\"200\" src=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/11\/Raspberry.jpeg\" alt=\"\" class=\"wp-image-4920\" style=\"width:84px;height:auto\" srcset=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/11\/Raspberry.jpeg 200w, https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/11\/Raspberry-150x150.jpeg 150w\" sizes=\"auto, (max-width: 200px) 100vw, 200px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udd52 : 3 h maximum<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignright size-full is-resized\"><a href=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/11\/tux_code.png\"><img loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"599\" src=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/11\/tux_code.png\" alt=\"\" class=\"wp-image-4931\" style=\"aspect-ratio:1.502527632593608;width:219px;height:auto\" srcset=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/11\/tux_code.png 900w, https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/11\/tux_code-300x200.png 300w, https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/11\/tux_code-768x511.png 768w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/a><\/figure>\n<\/div>\n\n\n<nav aria-label=\"Table des mati\u00e8res\" class=\"wp-block-table-of-contents\"><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/#prerequis\">Pr\u00e9requis:<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/#but\">But:<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/#repertoire-du-travail\">R\u00e9pertoire du travail:<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/#installation-sur-rpi-normalement-deja-fait\">Installation sur RPI (normalement d\u00e9j\u00e0 fait)<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/#sortie-gpio17-et-led-rouge\">Sortie GPIO17 et LED ROUGE<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/#saisir-le-code-et-compiler-et-tester\">Saisir le code et compiler et tester<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/#utlisation-du-debugger-gdb\">Utlisation du debugger gdb<\/a><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/#a-quoi-sert-g\">A quoi sert -g ?<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/#proposer-un-moyen-avec-gdb-de-voir-s-allumer-la-led-et-s-eteindre-sous-votre-controle-et-verifier-les-structures-concernant-ce-programme\">Proposer un moyen avec gdb de voir s&rsquo;allumer la led , et s&rsquo;\u00e9teindre sous votre contr\u00f4le et v\u00e9rifier les structures concernant ce programme.<\/a><\/li><\/ol><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/#led-qui-alterne\">LED qui alterne<\/a><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/#presentation\">Pr\u00e9sentation:<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/#proposer-un-schema\">Proposer un sch\u00e9ma<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/#proposer-un-code\">Proposer un code <\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/#saisir-compiler-tester-le-code\">Saisir , compiler tester le code<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/#expliquez-comment-utiliser-gdb-pour-controler-l-allumage-et-l-extinction-des-led\">Expliquez comment utiliser GDB pour contr\u00f4ler l&rsquo;allumage et l&rsquo;extinction des LED<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/#donner-les-commandes-qui-permettent-de-realiser-des-sorties\">Donner les commandes qui permettent de r\u00e9aliser des sorties<\/a><\/li><\/ol><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/#entree-avec-ils\">Entr\u00e9e avec ILS<\/a><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/#saisir-le-code-le-compiler-et-le-tester\">Saisir le code le compiler et le tester<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/#proposer-un-moyen-avec-gdb-de-surveiller-gpio27-et-de-controler-gpio17\">Proposer un moyen avec gdb de surveiller GPIO27 et de contr\u00f4ler GPIO17<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/#avec-monia-proposer-un-organigramme-et-son-pl\">Avec Monia proposer un organigramme et son PL<\/a><\/li><\/ol><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/#resistance-de-rappel-interne\">R\u00e9sistance de rappel interne<\/a><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/#justifier-comment-on-peut-supprimer-cette-resistance-externe\">Justifier comment on peut supprimer cette r\u00e9sistance externe.<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/#code-c-propose-ils-led-sr-c\">Code C propos\u00e9 , ils_led_sr.c<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/#donner-la-commande-qui-a-permis-de-resoudre-le-fait-d-avoir-enleve-la-resistance-externe\">Donner la commande qui a permis de r\u00e9soudre le fait d&rsquo;avoir enlev\u00e9 la resistance externe<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/#en-quoi-ce-code-est-ameliore-hormis-la-modification-avec-la-resistance-en-moins\">En quoi ce code est am\u00e9lior\u00e9 hormis la modification avec la r\u00e9sistance en moins.<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/#avec-gdb-surveiller-la-reaction-au-ctrl-c-expliquer\">Avec GDB Surveiller la r\u00e9action au ctrl c , expliquer<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/#expliquer-avec-gdb\">Expliquer avec gdb<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/#avec-monia-donner-les-organigrammes-et-les-pl\">Avec Monia donner les organigrammes et les PL<\/a><\/li><\/ol><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/#on-va-utiliser-la-sonde-numerique-saleae\">On va utiliser la sonde num\u00e9rique SALEAE<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/#code-blink-gpio17-c-avec-ctrl-c\">Code blink gpio17.c  (avec ctrl c)<\/a><\/li><\/ol><\/nav>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"prerequis\">Pr\u00e9requis:<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>cours\u00a0<a href=\"https:\/\/workboot.fr\/ciela\/raspberry-pi-2\/\">Raspberry Pi<\/a><\/li>\n\n\n\n<li>Avoir fait&nbsp;<a href=\"https:\/\/workboot.fr\/ciela\/rpi_0-installation\/\">RPI_0&nbsp;<\/a>et disposer d\u2019un Raspberry PI OS64 avec ssh<\/li>\n\n\n\n<li>TP&nbsp;<a href=\"https:\/\/workboot.fr\/ciela\/rpi_0-installation\/\">RPI_0&nbsp;<\/a>et&nbsp;<a href=\"https:\/\/workboot.fr\/ciela\/rpi1\/\">RPI_1<\/a>&nbsp;effectu\u00e9s<\/li>\n\n\n\n<li>cours<a href=\"https:\/\/workboot.fr\/ciela\/langage-c\/\">&nbsp;langage C<\/a> , Ann\u00e9e 1 de la formation<\/li>\n\n\n\n<li>cours&nbsp;<a href=\"https:\/\/workboot.fr\/ciela\/libgpiod\/\">libgpiod<\/a><\/li>\n\n\n\n<li>cours <a href=\"https:\/\/workboot.fr\/ciela\/sigint-en-c\/\">SIGINT<\/a> ctrl c<\/li>\n\n\n\n<li>cours pr\u00e9sentation de la <a href=\"https:\/\/workboot.fr\/ciela\/sonde-numerique-saleae\/\">sonde SALEAE<\/a> vu en co enseignement Physique\/Info<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"but\">But:<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Mettre en oeuvre un code pilotant les GPIO en langage C, pour les projets<\/li>\n\n\n\n<li>Pull up, pull down<\/li>\n\n\n\n<li>interruption SIGINT<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"repertoire-du-travail\">R\u00e9pertoire du travail:<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">~\/Works\/RPI_3<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"installation-sur-rpi-normalement-deja-fait\">Installation sur RPI (normalement d\u00e9j\u00e0 fait)<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update\nsudo apt install gpiod libgpiod-dev libgpiod-doc<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"sortie-gpio17-et-led-rouge\">Sortie GPIO17 et LED ROUGE<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">on reprend le m\u00eame montage, on ne change pas une \u00e9quipe qui gagne!<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/07\/Gpio17_LED.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"750\" src=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/07\/Gpio17_LED-1024x750.png\" alt=\"\" class=\"wp-image-2964\" srcset=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/07\/Gpio17_LED-1024x750.png 1024w, https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/07\/Gpio17_LED-300x220.png 300w, https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/07\/Gpio17_LED-768x563.png 768w, https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/07\/Gpio17_LED.png 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">r\u00e9pertoire: blink , code: blink.c<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;stdio.h>\n#include &lt;unistd.h>\n#include &lt;gpiod.h>\n\nint main() {\n    const char *chipname = \"gpiochip0\";\n    int led_pin = 17; \/\/ BCM17\n    int delay_ms = 500; \/\/ 0.5 seconde\n\n    \/\/ Configuration minimale\n    struct gpiod_chip *chip = gpiod_chip_open_by_name(chipname);\n    struct gpiod_line *led = gpiod_chip_get_line(chip, led_pin);\n    gpiod_line_request_output(led, \"led_blink\", 0);\n\n    printf(\"Clignotement LED GPIO17 (Ctrl+C pour arr\u00eater)\\n\");\n\n    \/\/ Boucle principale simplifi\u00e9e\n    while (1) {\n        gpiod_line_set_value(led, 1); \/\/ Allumer\n        usleep(delay_ms * 1000);\n        gpiod_line_set_value(led, 0); \/\/ \u00c9teindre\n        usleep(delay_ms * 1000);\n    }\n\n    \/\/ Nettoyage (jamais atteint \u00e0 cause de la boucle infinie)\n    gpiod_line_release(led);\n    gpiod_chip_close(chip);\n    return 0;\n}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"saisir-le-code-et-compiler-et-tester\">Saisir le code et compiler et tester<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">attention : <strong><code>-lgpiod<\/code><\/strong>&nbsp;est l&rsquo;option correcte pour lier (linker) votre programme C avec la biblioth\u00e8que&nbsp;<strong>libgpiod<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gcc -o blink blink.c -lgpiod<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"utlisation-du-debugger-gdb\">Utlisation du debugger gdb<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>gcc -o blink blink.c -lgpiod -g<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"a-quoi-sert-g\">A quoi sert -g ?<\/h3>\n\n\n\n<pre><font color=\"#26A269\"><b>bruno@rpi364<\/b><\/font>:<font color=\"#12488B\"><b>~\/Works\/RPI_2\/langageC\/blink $<\/b><\/font> gcc blink.c -o blink -lgpiod -g\n<font color=\"#26A269\"><b>bruno@rpi364<\/b><\/font>:<font color=\"#12488B\"><b>~\/Works\/RPI_2\/langageC\/blink $<\/b><\/font> gdb blink \n<font color=\"#A347BA\"><b>GNU gdb (Debian 10.1-1.7) 10.1.90.20210103-git<\/b><\/font>\nCopyright (C) 2021 Free Software Foundation, Inc.\nLicense GPLv3+: GNU GPL version 3 or later &lt;http:\/\/gnu.org\/licenses\/gpl.html&gt;\nThis is free software: you are free to change and redistribute it.\nThere is NO WARRANTY, to the extent permitted by law.\nType &quot;show copying&quot; and &quot;show warranty&quot; for details.\nThis GDB was configured as &quot;aarch64-linux-gnu&quot;.\nType &quot;show configuration&quot; for configuration details.\nFor bug reporting instructions, please see:\n&lt;https:\/\/www.gnu.org\/software\/gdb\/bugs\/&gt;.\nFind the GDB manual and other documentation resources online at:\n    &lt;http:\/\/www.gnu.org\/software\/gdb\/documentation\/&gt;.\n\nFor help, type &quot;help&quot;.\nType &quot;apropos word&quot; to search for commands related to &quot;word&quot;...\nReading symbols from <font color=\"#26A269\">blink<\/font>...\n(gdb) l\n1       <font color=\"#12488B\"><b>#include<\/b><\/font> <font color=\"#C01C28\">&lt;stdio.h&gt;<\/font>\n2       <font color=\"#12488B\"><b>#include<\/b><\/font> <font color=\"#C01C28\">&lt;unistd.h&gt;<\/font>\n3       <font color=\"#12488B\"><b>#include<\/b><\/font> <font color=\"#C01C28\">&lt;gpiod.h&gt;<\/font>\n4\n5       <font color=\"#26A269\">int<\/font> <b>main<\/b><font color=\"#C01C28\">()<\/font> <font color=\"#C01C28\">{<\/font>\n6           <font color=\"#12488B\"><b>const<\/b><\/font> <font color=\"#26A269\">char<\/font> <font color=\"#C01C28\">*<\/font>chipname <font color=\"#C01C28\">=<\/font> <font color=\"#C01C28\">&quot;gpiochip0&quot;;<\/font>\n7           <font color=\"#26A269\">int<\/font> led_pin <font color=\"#C01C28\">=<\/font> <font color=\"#A347BA\">17<\/font><font color=\"#C01C28\">;<\/font> <font color=\"#2AA1B3\">\/\/ BCM17<\/font>\n8           <font color=\"#26A269\">int<\/font> delay_ms <font color=\"#C01C28\">=<\/font> <font color=\"#A347BA\">500<\/font><font color=\"#C01C28\">;<\/font> <font color=\"#2AA1B3\">\/\/ 0.5 seconde<\/font>\n9\n10          <font color=\"#2AA1B3\">\/\/ Configuration minimale<\/font>\n(gdb) \n<span style=\"background-color:#26A269\"><font color=\"#171421\">[albert] 0:bash  1:bash  2:bash  3:bash  4:bash <\/font><\/span><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"proposer-un-moyen-avec-gdb-de-voir-s-allumer-la-led-et-s-eteindre-sous-votre-controle-et-verifier-les-structures-concernant-ce-programme\">Proposer un moyen avec gdb de voir s&rsquo;allumer la led , et s&rsquo;\u00e9teindre sous votre contr\u00f4le et v\u00e9rifier les structures concernant ce programme.<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">On va rajouter une LED sur <\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"led-qui-alterne\">LED qui alterne<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">R\u00e9pertoire: alterne , code: alterne.c<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"presentation\">Pr\u00e9sentation:<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">on va garder la led rouge qui est sur GPIO17, on va ajouter une LED Verte sur GPIO22 avec sa r\u00e9sistance en s\u00e9rie !<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"proposer-un-schema\">Proposer un sch\u00e9ma<\/h3>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"proposer-un-code\">Proposer un code <\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Vous devez savoir r\u00e9aliser cela . La solution est donn\u00e9e si besoin<\/p>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>Solution: alterne.c<\/summary>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;gpiod.h>\n#include &lt;unistd.h>\n#include &lt;stdio.h>\n\n#define GPIO_LED1 17  \/\/ BCM17 (broche physique 11)\n#define GPIO_LED2 22  \/\/ BCM22 (broche physique 15)\n#define CHIPNAME \"gpiochip0\"\n#define DELAY_MS 500  \/\/ 0.5 seconde\n\nint main() {\n    \/\/ 1. Initialisation\n    struct gpiod_chip *chip = gpiod_chip_open_by_name(CHIPNAME);\n    struct gpiod_line *led1 = gpiod_chip_get_line(chip, GPIO_LED1);\n    struct gpiod_line *led2 = gpiod_chip_get_line(chip, GPIO_LED2);\n    \n    \/\/ Configuration en sortie\n    gpiod_line_request_output(led1, \"LED1\", 0);  \/\/ \u00c9teinte au d\u00e9part\n    gpiod_line_request_output(led2, \"LED2\", 1);  \/\/ Allum\u00e9e au d\u00e9part\n\n    \/\/ 2. Boucle d'alternance\n    printf(\"Alternance GPIO17\/GPIO22 (Ctrl+C pour arr\u00eater)\\n\");\n    while (1) {\n        gpiod_line_set_value(led1, 1);  \/\/ LED1 ON\n        gpiod_line_set_value(led2, 0);  \/\/ LED2 OFF\n        usleep(DELAY_MS * 1000);\n        \n        gpiod_line_set_value(led1, 0);  \/\/ LED1 OFF\n        gpiod_line_set_value(led2, 1);  \/\/ LED2 ON\n        usleep(DELAY_MS * 1000);\n    }\n\n    \/\/ 3. Nettoyage (inaccessible ici \u00e0 cause de la boucle infinie)\n    gpiod_line_release(led1);\n    gpiod_line_release(led2);\n    gpiod_chip_close(chip);\n    return 0;\n}<\/pre>\n<\/details>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"saisir-compiler-tester-le-code\">Saisir , compiler tester le code<\/h3>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"expliquez-comment-utiliser-gdb-pour-controler-l-allumage-et-l-extinction-des-led\"><strong>Expliquez comment utiliser GDB pour contr\u00f4ler l&rsquo;allumage et l&rsquo;extinction des LED<\/strong><\/h3>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"donner-les-commandes-qui-permettent-de-realiser-des-sorties\">Donner les commandes qui permettent de r\u00e9aliser des sorties<\/h3>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"entree-avec-ils\">Entr\u00e9e avec ILS<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Montage 2<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GPIO27 en entr\u00e9e , GPIO17 en sortie<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/07\/reed_led.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"738\" src=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/07\/reed_led-1024x738.png\" alt=\"\" class=\"wp-image-3041\" srcset=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/07\/reed_led-1024x738.png 1024w, https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/07\/reed_led-300x216.png 300w, https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/07\/reed_led-768x553.png 768w, https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/07\/reed_led.png 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">R\u00e9pertoire: ils_led , code: ils_led.c<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;gpiod.h>\n#include &lt;stdio.h>\n#include &lt;unistd.h> \/\/ pour usleep()\n#define GPIO_CHIP    \"gpiochip0\"  \/\/ Nom du contr\u00f4leur GPIO\n#define GPIO_INPUT   27           \/\/ GPIO27 en entr\u00e9e (ILS)\n#define GPIO_OUTPUT  17           \/\/ GPIO17 en sortie\n#define DELAY_MS     50           \/\/ D\u00e9lai de lecture (en ms)\nint main() {\n    struct gpiod_chip *chip;\n    struct gpiod_line *input_line, *output_line;\n    int input_state;\n    \/\/ 1. Initialisation du GPIO\n    chip = gpiod_chip_open_by_name(GPIO_CHIP);\n    if (!chip) {\n        perror(\"Erreur d'ouverture du chip GPIO\");\n        return EXIT_FAILURE;\n    }\n    \/\/ 2. Configuration des broches\n    input_line = gpiod_chip_get_line(chip, GPIO_INPUT);\n    output_line = gpiod_chip_get_line(chip, GPIO_OUTPUT);\n    if (!input_line || !output_line) {\n        perror(\"Erreur de configuration des broches\");\n        gpiod_chip_close(chip);\n        return EXIT_FAILURE;\n    }\n    \/\/ GPIO27 en entr\u00e9e (avec r\u00e9sistance de rappel externe au +3.3V)\n    gpiod_line_request_input(input_line, \"ils-input\");\n    \/\/ GPIO17 en sortie\n    gpiod_line_request_output(output_line, \"led-output\", 0);\n    printf(\"D\u00e9marrage de la copie GPIO%d \u2192 GPIO%d (CTRL+C pour arr\u00eater)\\n\", GPIO_INPUT, GPIO_OUTPUT);\n    \/\/ 3. Boucle principale\n    while (1) {\n        \/\/ Lecture de l'\u00e9tat de l'ILS (0=ouvert, 1=ferm\u00e9)\n        input_state = gpiod_line_get_value(input_line);\n        \/\/ Copie vers la sortie\n        gpiod_line_set_value(output_line, input_state);\n        \/\/ Petite pause pour \u00e9viter la surcharge CPU\n        usleep(DELAY_MS * 1000);\n    }\n    \/\/ 4. Nettoyage (jamais atteint ici \u00e0 cause de la boucle infinie)\n    gpiod_line_release(input_line);\n    gpiod_line_release(output_line);\n    gpiod_chip_close(chip);\n    return EXIT_SUCCESS;\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"saisir-le-code-le-compiler-et-le-tester\">Saisir le code le compiler et le tester<\/h3>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"proposer-un-moyen-avec-gdb-de-surveiller-gpio27-et-de-controler-gpio17\">Proposer un moyen avec gdb de surveiller GPIO27 et de contr\u00f4ler GPIO17<\/h3>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"avec-monia-proposer-un-organigramme-et-son-pl\">Avec Monia proposer un organigramme et son PL<\/h3>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"resistance-de-rappel-interne\">R\u00e9sistance de rappel interne<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">on va garder le m\u00eame montage mais on va le simplifier en ajoutant un peu de code.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">on supprime la r\u00e9sistance externe  et on laisse l&rsquo;ILS .<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Comme d\u00e9j\u00e0 \u00e9tudi\u00e9 pr\u00e9c\u00e9demment .<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"justifier-comment-on-peut-supprimer-cette-resistance-externe\">Justifier comment on peut supprimer cette r\u00e9sistance externe.<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">comment faire si on la supprime.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"code-c-propose-ils-led-sr-c\">Code C propos\u00e9 , ils_led_sr.c<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">besoin de<a href=\"https:\/\/workboot.fr\/ciela\/sigint-en-c\/\"> sigint en C<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">r\u00e9pertoire: ilsredsrc , code : ils_led_sr.c<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;gpiod.h>\n#include &lt;stdlib.h>\n#include &lt;stdio.h>\n#include &lt;unistd.h>\n#include &lt;signal.h>\n\n#define GPIO_CHIP    \"gpiochip0\"\n#define GPIO_ILS     27      \/\/ GPIO27 en entr\u00e9e (ILS au +3.3V)\n#define GPIO_SORTIE  17      \/\/ GPIO17 en sortie\n#define DELAY_MS     50      \/\/ D\u00e9lai de lecture\n\nvolatile sig_atomic_t stop = 0;\n\n\/* interruption SIGINT ctrl c *\/\nvoid handle_sigint(int sig) {\n    printf(\"\\nInterception CTRL+C\\n\");  \/\/ Debug visible\n    stop = 1;\n}\n\nint main() {\n    struct gpiod_chip *chip;\n    struct gpiod_line *ils, *sortie;\n    struct gpiod_line_request_config cfg_ils = {\n        .consumer = \"ILS\",\n        .request_type = GPIOD_LINE_REQUEST_DIRECTION_INPUT,\n        .flags = GPIOD_LINE_REQUEST_FLAG_BIAS_PULL_DOWN  \/\/ Pull-down interne\n    };\n\n    \/\/ 1. Initialisation GPIO\n    chip = gpiod_chip_open_by_name(GPIO_CHIP);\n    if (!chip) {\n        perror(\"Erreur ouverture chip GPIO\");\n        return EXIT_FAILURE;\n    }\n\n    \/\/ 2. Configuration entr\u00e9e (ILS) avec pull-down\n    ils = gpiod_chip_get_line(chip, GPIO_ILS);\n    if (!ils || gpiod_line_request(ils, &amp;cfg_ils, 0)) {\n        perror(\"Erreur configuration ILS\");\n        gpiod_chip_close(chip);\n        return EXIT_FAILURE;\n    }\n\n    \/\/ 3. Configuration sortie\n    sortie = gpiod_chip_get_line(chip, GPIO_SORTIE);\n    if (!sortie || gpiod_line_request_output(sortie, \"sortie\", 0)) {\n        perror(\"Erreur configuration sortie\");\n        gpiod_line_release(ils);\n        gpiod_chip_close(chip);\n        return EXIT_FAILURE;\n    }\n\n    \/\/ 4. Gestion CTRL+C\n    signal(SIGINT, handle_sigint);\n\n    printf(\"Monitoring ILS sur GPIO%d \u2192 Sortie GPIO%d\\n\", GPIO_ILS, GPIO_SORTIE);\n    printf(\"Sch\u00e9ma : ILS(+3.3V) \u2192 GPIO%d | Pull-down interne activ\u00e9\\n\", GPIO_ILS);\n\n    \/\/ 5. Boucle principale\n    while (!stop) {\n        int etat = gpiod_line_get_value(ils);\n        gpiod_line_set_value(sortie, etat);\n        usleep(DELAY_MS * 1000);\n    }\n\n    \/\/ 6. Nettoyage\n    gpiod_line_release(ils);\n    gpiod_line_release(sortie);\n    gpiod_chip_close(chip);\n    printf(\"\\nArr\u00eat propre\\n\");\n\n    return EXIT_SUCCESS;\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"donner-la-commande-qui-a-permis-de-resoudre-le-fait-d-avoir-enleve-la-resistance-externe\">Donner la commande qui a permis de r\u00e9soudre le fait d&rsquo;avoir enlev\u00e9 la resistance externe<\/h3>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"en-quoi-ce-code-est-ameliore-hormis-la-modification-avec-la-resistance-en-moins\">En quoi ce code est am\u00e9lior\u00e9 hormis la modification avec la r\u00e9sistance en moins.<\/h3>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"avec-gdb-surveiller-la-reaction-au-ctrl-c-expliquer\">Avec GDB Surveiller la r\u00e9action au ctrl c , expliquer<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">sous gdb , quand on fait ctrl c (^c),  c&rsquo;est gdb qui r\u00e9pond !! et pas notre code!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">donc il faut dire a gdb de ne pas r\u00e9agir a ctrl c , avec la commande<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">handle SIGINT nostop noprint pass<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">ce qui nous permettra ensuite de mettre un point d&rsquo;arr\u00eat ligne 16 pour s\u2019arr\u00eater dans la fonction <strong>void handle_sigint(int sig)<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">interruption provoqu\u00e9e par le ctrl c (SIGINT)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"expliquer-avec-gdb\">Expliquer avec gdb<\/h3>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"avec-monia-donner-les-organigrammes-et-les-pl\">Avec Monia donner les organigrammes et les PL<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"on-va-utiliser-la-sonde-numerique-saleae\">On va utiliser la <a href=\"https:\/\/workboot.fr\/ciela\/sonde-numerique-saleae\/\">sonde num\u00e9rique SALEAE<\/a><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">on va utiliser la sonde SALEAE pour relever les signaux GPIO27 et GPIO17<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ch0: GPIO17<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ch1: GPIO27<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ne pas oublier de brancher la masse (GND)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"code-blink-gpio17-c-avec-ctrl-c\">Code blink gpio17.c  (avec ctrl c)<\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/********************************\/\n\/* Blink GPIO17 Libgpiod 1.6    *\/\n\/********************************\/\n\n#include &lt;gpiod.h>\n#include &lt;stdio.h>\n#include &lt;stdlib.h>\n#include &lt;unistd.h>\n#include &lt;signal.h>\n\nstruct gpiod_line *led_line = NULL; \/* D\u00e9clar\u00e9 global pour le gestionnaire de signal *\/\n\n\/* G\u00e8re Ctrl+C pour \u00e9teindre la LED et lib\u00e9rer les GPIO *\/\nvoid signal_handler(int signo) \n{\n    if (signo == SIGINT) {\n        printf(\"\\nExtinction et nettoyage...\\n\");\n        if (led_line) {\n            gpiod_line_set_value(led_line, 0); \/* \u00c9teint la LED   *\/\n            gpiod_line_release(led_line);      \/* Lib\u00e8re la ligne *\/\n        }\n        exit(EXIT_SUCCESS);\n    }\n}\n\n\/*************************************************************************\/\nint main() \n{\n    const char *chipname = \"gpiochip0\";\n    const int led_pin = 17; \/* GPIO17, broche physique 11 *\/\n\n    \/* 1. OUVERTURE du chip *\/\n    struct gpiod_chip *chip = gpiod_chip_open_by_name(chipname);\n    if (!chip) \n    \t{\n        perror(\"Erreur ouverture chip\");\n        return EXIT_FAILURE;\n    \t}\n\n    \/* 2. CONFIGURATION de la ligne en SORTIE *\/\n    led_line = gpiod_chip_get_line(chip, led_pin);\n    if (!led_line) \n    \t{\n        perror(\"Erreur obtention ligne\");\n        gpiod_chip_close(chip);\n        return EXIT_FAILURE;\n    \t}\n    \/* Valeur initiale = 0 (LED \u00e9teinte au d\u00e9marrage) *\/\n    if (gpiod_line_request_output(led_line, \"blink_app\", 0) &lt; 0) \n    \t{\n        perror(\"Erreur configuration sortie\");\n        gpiod_chip_close(chip);\n        return EXIT_FAILURE;\n    \t}\t\n\n    signal(SIGINT, signal_handler); \/* Capture signal Ctrl+C *\/\n    printf(\"LED clignotante (GPIO%d). Ctrl+C pour arr\u00eater.\\n\", led_pin);\n\n    \/* 3. UTILISATION : Boucle de lecture\/\u00e9criture *\/\n    while (1) \n    {\n        gpiod_line_set_value(led_line, 1); \/* Allume *\/\n        printf(\"\u00c9tat: ON\\n\");\n        sleep(1);\n        gpiod_line_set_value(led_line, 0); \/* \u00c9teint *\/\n        printf(\"\u00c9tat: OFF\\n\");\n        sleep(1);\n    }\n\n    \/* 4. NETTOYAGE (en principe jamais atteint \u00e0 cause de la boucle infinie)\n       Le gestionnaire de signal `signal_handler` s'en charge.\n       gpiod_chip_close(chip); \/\/ Serait \u00e0 faire ici si pas de boucle infinie *\/\n    return EXIT_SUCCESS;\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\ud83d\udd52 : 3 h maximum Pr\u00e9requis: But: R\u00e9pertoire du travail: ~\/Works\/RPI_3 Installation sur RPI (normalement d\u00e9j\u00e0 fait) Sortie GPIO17 et LED ROUGE on reprend le m\u00eame montage, on ne change [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"{\"document\":\"AAAHz+zjthbFEqkHCCCIzQgABgIBAgoBF0oAggEBAgoCQgEOSgCSAQECCgEYSgCEAQECCgEQSgA0AQIKAkIBD0oAiAEBAgoBD0owAgECCgJCAQ1KAI4DAQIKAkIBDUoAtAQBAgoCQgENSgCiBQECCgJCAQ1KALIDAQIKAkIBDUoAugIBAgoCQgENSgCAAwECCgJCAQ1KwhiEHQECCgJCAQ9KADwBAgoBD0owAgECCgJCAQ1KAIIDAQIKAkIBDUoAlAEBAgoCQgENSsgFngYBAgoCQgEPSgCgAQECCgJCAQ5KAIwBAQIKAkIBD0oAjAIBAgoCQgENSgCwAgECCgEQSgA0AQIKAkIBD0oAqAEBAgoCQgEOSgC2AgECCgEUSgA8AQIKAkIBDkoAtAEBAgoBFUoAPgECCgJCAQ9KALwBAQIKAkIBDkoAvgUBAgoCQgENSgCoAQECCgJCAQ9KAKgBAQIKAkIBDUoArgEBAgoCQgEPSgCUAQECCgEOSgAwAQIKAQ9KADIBAgoCQgEPSgCKBQECCgJCAQ5KAKgBAQIKAkIBD0oAkgEBAgoCQgEOSgC8AQECCgJCAQ9KAI4BAQIKAkIBDkoAlgQBAgoCQgEPSgCYAQECCgJCAQ9KAJYBAQIKAkIBDkoAtgIBAgoABEQBDUqWAQIBAgoBFUrYAZYCAQIKAQ9KADIBAgoCQgEPSgC0AQECCgJCAQ9KALYDAQIKAkIBD0oAqgIBAgoCQgEPSgCSAQECCgJCAQ5KAIQBAQIKAkIBDkoAuAEBAgoBFEoAPAECCgJCAQ5KALwBAQIKARVKAD4BAgoCQgEPSgCCAgECCgJCAQ9KAIADAQIKAkIBD0oAjgIBAgoCQgEPSgCsAQECCgJCAQ5KAJQDAQIKAkIBDkoAoAIBAgoCQgEOSgCyAQECCgJCAQ9KAK4CAQIKAkIBDkoAsgEBAgoCQgEPSgCuAQECCgJCAQ5KAIYDAQIKAkIBDkoAiAIBAgoBFUoAPgECCgJCAQ9KAKQDAQIKAkIBD0oAlAMBAgoCQgEPSgCeAgECCgJCAQ5KAJQDAQIKAkIBDkoAugIBAgoCQgENSgCyAQECCgJCAQ5KAI4FAQIKAkIBDkoAjAIBAgoCQgEPSgCYAQECCgJCAQ9KAI4CAQIKAQ9KADIBAgoCQgEPSgCEBAECCgJCAQ5KAIIDAQIKAkIBDkoAiAEBAgoCQgEOSgCIAQECCgJCAQ5KAIQCAQIKAQ9KADIBAgoCQgEPSgC4AQECCgEVSgCxCCgDJwAEACcABAAnACgEJwAoAScABwAoAycAKAEnACgWJwCHACgDJwEEACgQJwCHACgDJwAoAScAKBcnAIcAKAMnACgSJwCHACgDJwEEACgRJwCHACgDJwAoEScABwAoAycBBAAoDycAhwAoAycBBAAoDycAhwAoAycBBAAoDycAhwAoAycBBAAoDycAhwAoAycBBAAoDycAhwAoAycBBAAoDycAhwAoAycBBAAoDycAhwAoAycBBAAoEScAhwAoAycAKBEnAAcAKAMnAQQAKA8nAIcAKAMnAQQAKA8nAIcAKAMnAQQAKA8nAIcAKAMnAQQAKBEnAIcAKAMnAQQAKBAnAIcAKAMnAQQAKBEnAIcAKAMnAQQAKA8nAIcAKAMnACgSJwCHACgDJwEEACgRJwCHACgDJwEEACgQJwCHACgDJwAoAScAKBMnAIcAKAMnAQQAKBAnAIcAKAMnACgXJwCHACgDJwEEACgRJwCHACgDJwEEACgQJwCHACgDJwEEACgPJwCHACgDJwEEACgRJwCHACgDJwEEACgPJwCHACgDJwEEACgRJwCHACgDJwAoECcAhwAoAycBKBAnAIcAKAMnAQQAKBEnAIcAKAMnAQQAKBAnAIcAKAMnAQQAKBEnAIcAKAMnAQQAKBAnAIcAKAMnAQQAKBEnAIcAKAMnAQQAKBAnAIcAKAMnAQQAKBEnAIcAKAMnAQQAKBEnAIcAKAMnAQQAKBAnAIcAKAMnACgAJwAEACgPJwAHACgDJwAoFycAhwAoAycBKBAnAIcAKAMnAQQAKBEnAIcAKAMnAQQAKBEnAIcAKAMnAQQAKBEnAIcAKAMnAQQAKBEnAIcAKAMnAQQAKBAnAIcAKAMnAQQAKBAnAIcAKAMnACgBJwAoEycAhwAoAycBBAAoECcAhwAoAycAKBcnAIcAKAMnAQQAKBEnAIcAKAMnAQQAKBEnAIcAKAMnAQQAKBEnAIcAKAMnAQQAKBEnAIcAKAMnAQQAKBAnAIcAKAMnAQQAKBAnAIcAKAMnAQQAKBAnAIcAKAMnAQQAKBEnAIcAKAMnAQQAKBAnAIcAKAMnAQQAKBEnAIcAKAMnAQQAKBAnAIcAKAMnAQQAKBAnAIcAKAMnACgXJwCHACgDJwEEACgRJwCHACgDJwEEACgRJwCHACgDJwEEACgRJwCHACgDJwEEACgQJwCHACgDJwEEACgQJwCHACgDJwEEACgPJwCHACgDJwEEACgQJwCHACgDJwEEACgQJwCHACgDJwEEACgRJwCHACgDJwEEACgRJwCHACgDJwEoECcAhwAoAycBBAAoEScAhwAoAycBBAAoECcAhwAoAycBBAAoECcAhwAoAycBBAAoECcAhwAoAycBBAAoECcAhwAoAycBKBAnAIcAKAMnAQQAKBEnAIcAKAMnACgXJwAo55sEvYkEc3RhdGV2ZXJzaW9uZG9jdW1lbnRkYXRlZG9jdW1lbnRzbHVnZG9jdW1lbnRzdGF0dXNkb2N1bWVudHRpdGxlUlBJXzMgTGFuZ2FnZSBDZG9jdW1lbnRjb250ZW50PCEtLSB3cDppbWFnZSB7ImlkIjo0OTIwLCJ3aWR0aCI6Ijg0cHgiLCJoZWlnaHQiOiJhdXRvIiwic2l6ZVNsdWciOiJmdWxsIiwibGlua0Rlc3RpbmF0aW9uIjoibWVkaWEiLCJhbGlnbiI6ImNlbnRlciJ9IC0tPgo8ZmlndXJlIGNsYXNzPSJ3cC1ibG9jay1pbWFnZSBhbGlnbmNlbnRlciBzaXplLWZ1bGwgaXMtcmVzaXplZCI+PGEgaHJlZj0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8xMS9SYXNwYmVycnkuanBlZyI+PGltZyBzcmM9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvd3AtY29udGVudC91cGxvYWRzLzIwMjUvMTEvUmFzcGJlcnJ5LmpwZWciIGFsdD0iIiBjbGFzcz0id3AtaW1hZ2UtNDkyMCIgc3R5bGU9IndpZHRoOjg0cHg7aGVpZ2h0OmF1dG8iLz48L2E+PC9maWd1cmU+CjwhLS0gL3dwOmltYWdlIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPvCflZIgOiAzIGggbWF4aW11bTwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDppbWFnZSB7ImlkIjo0OTMxLCJ3aWR0aCI6IjIxOXB4IiwiaGVpZ2h0IjoiYXV0byIsImFzcGVjdFJhdGlvIjoiMS41MDI1Mjc2MzI1OTM2MDgiLCJzaXplU2x1ZyI6ImZ1bGwiLCJsaW5rRGVzdGluYXRpb24iOiJtZWRpYSIsImFsaWduIjoicmlnaHQifSAtLT4KPGZpZ3VyZSBjbGFzcz0id3AtYmxvY2staW1hZ2UgYWxpZ25yaWdodCBzaXplLWZ1bGwgaXMtcmVzaXplZCI+PGEgaHJlZj0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8xMS90dXhfY29kZS5wbmciPjxpbWcgc3JjPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzExL3R1eF9jb2RlLnBuZyIgYWx0PSIiIGNsYXNzPSJ3cC1pbWFnZS00OTMxIiBzdHlsZT0iYXNwZWN0LXJhdGlvOjEuNTAyNTI3NjMyNTkzNjA4O3dpZHRoOjIxOXB4O2hlaWdodDphdXRvIi8+PC9hPjwvZmlndXJlPgo8IS0tIC93cDppbWFnZSAtLT4KCjwhLS0gd3A6dGFibGUtb2YtY29udGVudHMgeyJoZWFkaW5ncyI6W3siY29udGVudCI6IlByw6lyZXF1aXM6IiwibGV2ZWwiOjIsImxpbmsiOiJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI3ByZXJlcXVpcyJ9LHsiY29udGVudCI6IkJ1dDoiLCJsZXZlbCI6MiwibGluayI6Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jYnV0In0seyJjb250ZW50IjoiUsOpcGVydG9pcmUgZHUgdHJhdmFpbDoiLCJsZXZlbCI6MiwibGluayI6Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jcmVwZXJ0b2lyZS1kdS10cmF2YWlsIn0seyJjb250ZW50IjoiSW5zdGFsbGF0aW9uIHN1ciBSUEkgKG5vcm1hbGVtZW50IGTDqWrDoCBmYWl0KSIsImxldmVsIjoyLCJsaW5rIjoiaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNpbnN0YWxsYXRpb24tc3VyLXJwaS1ub3JtYWxlbWVudC1kZWphLWZhaXQifSx7ImNvbnRlbnQiOiJTb3J0aWUgR1BJTzE3IGV0IExFRCBST1VHRSIsImxldmVsIjoyLCJsaW5rIjoiaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNzb3J0aWUtZ3BpbzE3LWV0LWxlZC1yb3VnZSJ9LHsiY29udGVudCI6IlNhaXNpciBsZSBjb2RlIGV0IGNvbXBpbGVyIGV0IHRlc3RlciIsImxldmVsIjoyLCJsaW5rIjoiaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNzYWlzaXItbGUtY29kZS1ldC1jb21waWxlci1ldC10ZXN0ZXIifSx7ImNvbnRlbnQiOiJVdGxpc2F0aW9uIGR1IGRlYnVnZ2VyIGdkYiIsImxldmVsIjoyLCJsaW5rIjoiaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyN1dGxpc2F0aW9uLWR1LWRlYnVnZ2VyLWdkYiJ9LHsiY29udGVudCI6IkEgcXVvaSBzZXJ0IC1nID8iLCJsZXZlbCI6MywibGluayI6Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jYS1xdW9pLXNlcnQtZyJ9LHsiY29udGVudCI6IlByb3Bvc2VyIHVuIG1veWVuIGF2ZWMgZ2RiIGRlIHZvaXIgcydhbGx1bWVyIGxhIGxlZCAsIGV0IHMnw6l0ZWluZHJlIHNvdXMgdm90cmUgY29udHLDtGxlIGV0IHbDqXJpZmllciBsZXMgc3RydWN0dXJlcyBjb25jZXJuYW50IGNlIHByb2dyYW1tZS4iLCJsZXZlbCI6MywibGluayI6Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jcHJvcG9zZXItdW4tbW95ZW4tYXZlYy1nZGItZGUtdm9pci1zLWFsbHVtZXItbGEtbGVkLWV0LXMtZXRlaW5kcmUtc291cy12b3RyZS1jb250cm9sZS1ldC12ZXJpZmllci1sZXMtc3RydWN0dXJlcy1jb25jZXJuYW50LWNlLXByb2dyYW1tZSJ9LHsiY29udGVudCI6IkxFRCBxdWkgYWx0ZXJuZSIsImxldmVsIjoyLCJsaW5rIjoiaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNsZWQtcXVpLWFsdGVybmUifSx7ImNvbnRlbnQiOiJQcsOpc2VudGF0aW9uOiIsImxldmVsIjozLCJsaW5rIjoiaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNwcmVzZW50YXRpb24ifSx7ImNvbnRlbnQiOiJQcm9wb3NlciB1biBzY2jDqW1hIiwibGV2ZWwiOjMsImxpbmsiOiJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI3Byb3Bvc2VyLXVuLXNjaGVtYSJ9LHsiY29udGVudCI6IlByb3Bvc2VyIHVuIGNvZGUgIiwibGV2ZWwiOjMsImxpbmsiOiJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI3Byb3Bvc2VyLXVuLWNvZGUifSx7ImNvbnRlbnQiOiJTYWlzaXIgLCBjb21waWxlciB0ZXN0ZXIgbGUgY29kZSIsImxldmVsIjozLCJsaW5rIjoiaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNzYWlzaXItY29tcGlsZXItdGVzdGVyLWxlLWNvZGUifSx7ImNvbnRlbnQiOiJFeHBsaXF1ZXogY29tbWVudCB1dGlsaXNlciBHREIgcG91ciBjb250csO0bGVyIGwnYWxsdW1hZ2UgZXQgbCdleHRpbmN0aW9uIGRlcyBMRUQiLCJsZXZlbCI6MywibGluayI6Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jZXhwbGlxdWV6LWNvbW1lbnQtdXRpbGlzZXItZ2RiLXBvdXItY29udHJvbGVyLWwtYWxsdW1hZ2UtZXQtbC1leHRpbmN0aW9uLWRlcy1sZWQifSx7ImNvbnRlbnQiOiJEb25uZXIgbGVzIGNvbW1hbmRlcyBxdWkgcGVybWV0dGVudCBkZSByw6lhbGlzZXIgZGVzIHNvcnRpZXMiLCJsZXZlbCI6MywibGluayI6Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jZG9ubmVyLWxlcy1jb21tYW5kZXMtcXVpLXBlcm1ldHRlbnQtZGUtcmVhbGlzZXItZGVzLXNvcnRpZXMifSx7ImNvbnRlbnQiOiJFbnRyw6llIGF2ZWMgSUxTIiwibGV2ZWwiOjIsImxpbmsiOiJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI2VudHJlZS1hdmVjLWlscyJ9LHsiY29udGVudCI6IlNhaXNpciBsZSBjb2RlIGxlIGNvbXBpbGVyIGV0IGxlIHRlc3RlciIsImxldmVsIjozLCJsaW5rIjoiaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNzYWlzaXItbGUtY29kZS1sZS1jb21waWxlci1ldC1sZS10ZXN0ZXIifSx7ImNvbnRlbnQiOiJQcm9wb3NlciB1biBtb3llbiBhdmVjIGdkYiBkZSBzdXJ2ZWlsbGVyIEdQSU8yNyBldCBkZSBjb250csO0bGVyIEdQSU8xNyIsImxldmVsIjozLCJsaW5rIjoiaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNwcm9wb3Nlci11bi1tb3llbi1hdmVjLWdkYi1kZS1zdXJ2ZWlsbGVyLWdwaW8yNy1ldC1kZS1jb250cm9sZXItZ3BpbzE3In0seyJjb250ZW50IjoiQXZlYyBNb25pYSBwcm9wb3NlciB1biBvcmdhbmlncmFtbWUgZXQgc29uIFBMIiwibGV2ZWwiOjMsImxpbmsiOiJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI2F2ZWMtbW9uaWEtcHJvcG9zZXItdW4tb3JnYW5pZ3JhbW1lLWV0LXNvbi1wbCJ9LHsiY29udGVudCI6IlLDqXNpc3RhbmNlIGRlIHJhcHBlbCBpbnRlcm5lIiwibGV2ZWwiOjIsImxpbmsiOiJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI3Jlc2lzdGFuY2UtZGUtcmFwcGVsLWludGVybmUifSx7ImNvbnRlbnQiOiJKdXN0aWZpZXIgY29tbWVudCBvbiBwZXV0IHN1cHByaW1lciBjZXR0ZSByw6lzaXN0YW5jZSBleHRlcm5lLiIsImxldmVsIjozLCJsaW5rIjoiaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNqdXN0aWZpZXItY29tbWVudC1vbi1wZXV0LXN1cHByaW1lci1jZXR0ZS1yZXNpc3RhbmNlLWV4dGVybmUifSx7ImNvbnRlbnQiOiJDb2RlIEMgcHJvcG9zw6kgLCBpbHNfbGVkX3NyLmMiLCJsZXZlbCI6MywibGluayI6Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jY29kZS1jLXByb3Bvc2UtaWxzLWxlZC1zci1jIn0seyJjb250ZW50IjoiRG9ubmVyIGxhIGNvbW1hbmRlIHF1aSBhIHBlcm1pcyBkZSByw6lzb3VkcmUgbGUgZmFpdCBkJ2F2b2lyIGVubGV2w6kgbGEgcmVzaXN0YW5jZSBleHRlcm5lIiwibGV2ZWwiOjMsImxpbmsiOiJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI2Rvbm5lci1sYS1jb21tYW5kZS1xdWktYS1wZXJtaXMtZGUtcmVzb3VkcmUtbGUtZmFpdC1kLWF2b2lyLWVubGV2ZS1sYS1yZXNpc3RhbmNlLWV4dGVybmUifSx7ImNvbnRlbnQiOiJFbiBxdW9pIGNlIGNvZGUgZXN0IGFtw6lsaW9yw6kgaG9ybWlzIGxhIG1vZGlmaWNhdGlvbiBhdmVjIGxhIHLDqXNpc3RhbmNlIGVuIG1vaW5zLiIsImxldmVsIjozLCJsaW5rIjoiaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNlbi1xdW9pLWNlLWNvZGUtZXN0LWFtZWxpb3JlLWhvcm1pcy1sYS1tb2RpZmljYXRpb24tYXZlYy1sYS1yZXNpc3RhbmNlLWVuLW1vaW5zIn0seyJjb250ZW50IjoiQXZlYyBHREIgU3VydmVpbGxlciBsYSByw6lhY3Rpb24gYXUgY3RybCBjICwgZXhwbGlxdWVyIiwibGV2ZWwiOjMsImxpbmsiOiJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI2F2ZWMtZ2RiLXN1cnZlaWxsZXItbGEtcmVhY3Rpb24tYXUtY3RybC1jLWV4cGxpcXVlciJ9LHsiY29udGVudCI6IkV4cGxpcXVlciBhdmVjIGdkYiIsImxldmVsIjozLCJsaW5rIjoiaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNleHBsaXF1ZXItYXZlYy1nZGIifSx7ImNvbnRlbnQiOiJBdmVjIE1vbmlhIGRvbm5lciBsZXMgb3JnYW5pZ3JhbW1lcyBldCBsZXMgUEwiLCJsZXZlbCI6MywibGluayI6Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jYXZlYy1tb25pYS1kb25uZXItbGVzLW9yZ2FuaWdyYW1tZXMtZXQtbGVzLXBsIn0seyJjb250ZW50IjoiT24gdmEgdXRpbGlzZXIgbGEgc29uZGUgbnVtw6lyaXF1ZSBTQUxFQUUiLCJsZXZlbCI6MiwibGluayI6Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jb24tdmEtdXRpbGlzZXItbGEtc29uZGUtbnVtZXJpcXVlLXNhbGVhZSJ9LHsiY29udGVudCI6IkNvZGUgYmxpbmsgZ3BpbzE3LmMgIChhdmVjIGN0cmwgYykiLCJsZXZlbCI6MiwibGluayI6Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jY29kZS1ibGluay1ncGlvMTctYy1hdmVjLWN0cmwtYyJ9XX0gLS0+CjxuYXYgY2xhc3M9IndwLWJsb2NrLXRhYmxlLW9mLWNvbnRlbnRzIj48b2w+PGxpPjxhIGNsYXNzPSJ3cC1ibG9jay10YWJsZS1vZi1jb250ZW50c19fZW50cnkiIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jcHJlcmVxdWlzIj5QcsOpcmVxdWlzOjwvYT48L2xpPjxsaT48YSBjbGFzcz0id3AtYmxvY2stdGFibGUtb2YtY29udGVudHNfX2VudHJ5IiBocmVmPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI2J1dCI+QnV0OjwvYT48L2xpPjxsaT48YSBjbGFzcz0id3AtYmxvY2stdGFibGUtb2YtY29udGVudHNfX2VudHJ5IiBocmVmPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI3JlcGVydG9pcmUtZHUtdHJhdmFpbCI+UsOpcGVydG9pcmUgZHUgdHJhdmFpbDo8L2E+PC9saT48bGk+PGEgY2xhc3M9IndwLWJsb2NrLXRhYmxlLW9mLWNvbnRlbnRzX19lbnRyeSIgaHJlZj0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNpbnN0YWxsYXRpb24tc3VyLXJwaS1ub3JtYWxlbWVudC1kZWphLWZhaXQiPkluc3RhbGxhdGlvbiBzdXIgUlBJIChub3JtYWxlbWVudCBkw6lqw6AgZmFpdCk8L2E+PC9saT48bGk+PGEgY2xhc3M9IndwLWJsb2NrLXRhYmxlLW9mLWNvbnRlbnRzX19lbnRyeSIgaHJlZj0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNzb3J0aWUtZ3BpbzE3LWV0LWxlZC1yb3VnZSI+U29ydGllIEdQSU8xNyBldCBMRUQgUk9VR0U8L2E+PC9saT48bGk+PGEgY2xhc3M9IndwLWJsb2NrLXRhYmxlLW9mLWNvbnRlbnRzX19lbnRyeSIgaHJlZj0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNzYWlzaXItbGUtY29kZS1ldC1jb21waWxlci1ldC10ZXN0ZXIiPlNhaXNpciBsZSBjb2RlIGV0IGNvbXBpbGVyIGV0IHRlc3RlcjwvYT48L2xpPjxsaT48YSBjbGFzcz0id3AtYmxvY2stdGFibGUtb2YtY29udGVudHNfX2VudHJ5IiBocmVmPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI3V0bGlzYXRpb24tZHUtZGVidWdnZXItZ2RiIj5VdGxpc2F0aW9uIGR1IGRlYnVnZ2VyIGdkYjwvYT48b2w+PGxpPjxhIGNsYXNzPSJ3cC1ibG9jay10YWJsZS1vZi1jb250ZW50c19fZW50cnkiIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jYS1xdW9pLXNlcnQtZyI+QSBxdW9pIHNlcnQgLWcgPzwvYT48L2xpPjxsaT48YSBjbGFzcz0id3AtYmxvY2stdGFibGUtb2YtY29udGVudHNfX2VudHJ5IiBocmVmPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI3Byb3Bvc2VyLXVuLW1veWVuLWF2ZWMtZ2RiLWRlLXZvaXItcy1hbGx1bWVyLWxhLWxlZC1ldC1zLWV0ZWluZHJlLXNvdXMtdm90cmUtY29udHJvbGUtZXQtdmVyaWZpZXItbGVzLXN0cnVjdHVyZXMtY29uY2VybmFudC1jZS1wcm9ncmFtbWUiPlByb3Bvc2VyIHVuIG1veWVuIGF2ZWMgZ2RiIGRlIHZvaXIgcydhbGx1bWVyIGxhIGxlZCAsIGV0IHMnw6l0ZWluZHJlIHNvdXMgdm90cmUgY29udHLDtGxlIGV0IHbDqXJpZmllciBsZXMgc3RydWN0dXJlcyBjb25jZXJuYW50IGNlIHByb2dyYW1tZS48L2E+PC9saT48L29sPjwvbGk+PGxpPjxhIGNsYXNzPSJ3cC1ibG9jay10YWJsZS1vZi1jb250ZW50c19fZW50cnkiIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jbGVkLXF1aS1hbHRlcm5lIj5MRUQgcXVpIGFsdGVybmU8L2E+PG9sPjxsaT48YSBjbGFzcz0id3AtYmxvY2stdGFibGUtb2YtY29udGVudHNfX2VudHJ5IiBocmVmPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI3ByZXNlbnRhdGlvbiI+UHLDqXNlbnRhdGlvbjo8L2E+PC9saT48bGk+PGEgY2xhc3M9IndwLWJsb2NrLXRhYmxlLW9mLWNvbnRlbnRzX19lbnRyeSIgaHJlZj0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNwcm9wb3Nlci11bi1zY2hlbWEiPlByb3Bvc2VyIHVuIHNjaMOpbWE8L2E+PC9saT48bGk+PGEgY2xhc3M9IndwLWJsb2NrLXRhYmxlLW9mLWNvbnRlbnRzX19lbnRyeSIgaHJlZj0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNwcm9wb3Nlci11bi1jb2RlIj5Qcm9wb3NlciB1biBjb2RlIDwvYT48L2xpPjxsaT48YSBjbGFzcz0id3AtYmxvY2stdGFibGUtb2YtY29udGVudHNfX2VudHJ5IiBocmVmPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI3NhaXNpci1jb21waWxlci10ZXN0ZXItbGUtY29kZSI+U2Fpc2lyICwgY29tcGlsZXIgdGVzdGVyIGxlIGNvZGU8L2E+PC9saT48bGk+PGEgY2xhc3M9IndwLWJsb2NrLXRhYmxlLW9mLWNvbnRlbnRzX19lbnRyeSIgaHJlZj0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNleHBsaXF1ZXotY29tbWVudC11dGlsaXNlci1nZGItcG91ci1jb250cm9sZXItbC1hbGx1bWFnZS1ldC1sLWV4dGluY3Rpb24tZGVzLWxlZCI+RXhwbGlxdWV6IGNvbW1lbnQgdXRpbGlzZXIgR0RCIHBvdXIgY29udHLDtGxlciBsJ2FsbHVtYWdlIGV0IGwnZXh0aW5jdGlvbiBkZXMgTEVEPC9hPjwvbGk+PGxpPjxhIGNsYXNzPSJ3cC1ibG9jay10YWJsZS1vZi1jb250ZW50c19fZW50cnkiIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jZG9ubmVyLWxlcy1jb21tYW5kZXMtcXVpLXBlcm1ldHRlbnQtZGUtcmVhbGlzZXItZGVzLXNvcnRpZXMiPkRvbm5lciBsZXMgY29tbWFuZGVzIHF1aSBwZXJtZXR0ZW50IGRlIHLDqWFsaXNlciBkZXMgc29ydGllczwvYT48L2xpPjwvb2w+PC9saT48bGk+PGEgY2xhc3M9IndwLWJsb2NrLXRhYmxlLW9mLWNvbnRlbnRzX19lbnRyeSIgaHJlZj0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNlbnRyZWUtYXZlYy1pbHMiPkVudHLDqWUgYXZlYyBJTFM8L2E+PG9sPjxsaT48YSBjbGFzcz0id3AtYmxvY2stdGFibGUtb2YtY29udGVudHNfX2VudHJ5IiBocmVmPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI3NhaXNpci1sZS1jb2RlLWxlLWNvbXBpbGVyLWV0LWxlLXRlc3RlciI+U2Fpc2lyIGxlIGNvZGUgbGUgY29tcGlsZXIgZXQgbGUgdGVzdGVyPC9hPjwvbGk+PGxpPjxhIGNsYXNzPSJ3cC1ibG9jay10YWJsZS1vZi1jb250ZW50c19fZW50cnkiIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jcHJvcG9zZXItdW4tbW95ZW4tYXZlYy1nZGItZGUtc3VydmVpbGxlci1ncGlvMjctZXQtZGUtY29udHJvbGVyLWdwaW8xNyI+UHJvcG9zZXIgdW4gbW95ZW4gYXZlYyBnZGIgZGUgc3VydmVpbGxlciBHUElPMjcgZXQgZGUgY29udHLDtGxlciBHUElPMTc8L2E+PC9saT48bGk+PGEgY2xhc3M9IndwLWJsb2NrLXRhYmxlLW9mLWNvbnRlbnRzX19lbnRyeSIgaHJlZj0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNhdmVjLW1vbmlhLXByb3Bvc2VyLXVuLW9yZ2FuaWdyYW1tZS1ldC1zb24tcGwiPkF2ZWMgTW9uaWEgcHJvcG9zZXIgdW4gb3JnYW5pZ3JhbW1lIGV0IHNvbiBQTDwvYT48L2xpPjwvb2w+PC9saT48bGk+PGEgY2xhc3M9IndwLWJsb2NrLXRhYmxlLW9mLWNvbnRlbnRzX19lbnRyeSIgaHJlZj0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNyZXNpc3RhbmNlLWRlLXJhcHBlbC1pbnRlcm5lIj5Sw6lzaXN0YW5jZSBkZSByYXBwZWwgaW50ZXJuZTwvYT48b2w+PGxpPjxhIGNsYXNzPSJ3cC1ibG9jay10YWJsZS1vZi1jb250ZW50c19fZW50cnkiIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8janVzdGlmaWVyLWNvbW1lbnQtb24tcGV1dC1zdXBwcmltZXItY2V0dGUtcmVzaXN0YW5jZS1leHRlcm5lIj5KdXN0aWZpZXIgY29tbWVudCBvbiBwZXV0IHN1cHByaW1lciBjZXR0ZSByw6lzaXN0YW5jZSBleHRlcm5lLjwvYT48L2xpPjxsaT48YSBjbGFzcz0id3AtYmxvY2stdGFibGUtb2YtY29udGVudHNfX2VudHJ5IiBocmVmPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI2NvZGUtYy1wcm9wb3NlLWlscy1sZWQtc3ItYyI+Q29kZSBDIHByb3Bvc8OpICwgaWxzX2xlZF9zci5jPC9hPjwvbGk+PGxpPjxhIGNsYXNzPSJ3cC1ibG9jay10YWJsZS1vZi1jb250ZW50c19fZW50cnkiIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jZG9ubmVyLWxhLWNvbW1hbmRlLXF1aS1hLXBlcm1pcy1kZS1yZXNvdWRyZS1sZS1mYWl0LWQtYXZvaXItZW5sZXZlLWxhLXJlc2lzdGFuY2UtZXh0ZXJuZSI+RG9ubmVyIGxhIGNvbW1hbmRlIHF1aSBhIHBlcm1pcyBkZSByw6lzb3VkcmUgbGUgZmFpdCBkJ2F2b2lyIGVubGV2w6kgbGEgcmVzaXN0YW5jZSBleHRlcm5lPC9hPjwvbGk+PGxpPjxhIGNsYXNzPSJ3cC1ibG9jay10YWJsZS1vZi1jb250ZW50c19fZW50cnkiIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jZW4tcXVvaS1jZS1jb2RlLWVzdC1hbWVsaW9yZS1ob3JtaXMtbGEtbW9kaWZpY2F0aW9uLWF2ZWMtbGEtcmVzaXN0YW5jZS1lbi1tb2lucyI+RW4gcXVvaSBjZSBjb2RlIGVzdCBhbcOpbGlvcsOpIGhvcm1pcyBsYSBtb2RpZmljYXRpb24gYXZlYyBsYSByw6lzaXN0YW5jZSBlbiBtb2lucy48L2E+PC9saT48bGk+PGEgY2xhc3M9IndwLWJsb2NrLXRhYmxlLW9mLWNvbnRlbnRzX19lbnRyeSIgaHJlZj0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNhdmVjLWdkYi1zdXJ2ZWlsbGVyLWxhLXJlYWN0aW9uLWF1LWN0cmwtYy1leHBsaXF1ZXIiPkF2ZWMgR0RCIFN1cnZlaWxsZXIgbGEgcsOpYWN0aW9uIGF1IGN0cmwgYyAsIGV4cGxpcXVlcjwvYT48L2xpPjxsaT48YSBjbGFzcz0id3AtYmxvY2stdGFibGUtb2YtY29udGVudHNfX2VudHJ5IiBocmVmPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI2V4cGxpcXVlci1hdmVjLWdkYiI+RXhwbGlxdWVyIGF2ZWMgZ2RiPC9hPjwvbGk+PGxpPjxhIGNsYXNzPSJ3cC1ibG9jay10YWJsZS1vZi1jb250ZW50c19fZW50cnkiIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jYXZlYy1tb25pYS1kb25uZXItbGVzLW9yZ2FuaWdyYW1tZXMtZXQtbGVzLXBsIj5BdmVjIE1vbmlhIGRvbm5lciBsZXMgb3JnYW5pZ3JhbW1lcyBldCBsZXMgUEw8L2E+PC9saT48L29sPjwvbGk+PGxpPjxhIGNsYXNzPSJ3cC1ibG9jay10YWJsZS1vZi1jb250ZW50c19fZW50cnkiIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jb24tdmEtdXRpbGlzZXItbGEtc29uZGUtbnVtZXJpcXVlLXNhbGVhZSI+T24gdmEgdXRpbGlzZXIgbGEgc29uZGUgbnVtw6lyaXF1ZSBTQUxFQUU8L2E+PC9saT48bGk+PGEgY2xhc3M9IndwLWJsb2NrLXRhYmxlLW9mLWNvbnRlbnRzX19lbnRyeSIgaHJlZj0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNjb2RlLWJsaW5rLWdwaW8xNy1jLWF2ZWMtY3RybC1jIj5Db2RlIGJsaW5rIGdwaW8xNy5jICAoYXZlYyBjdHJsIGMpPC9hPjwvbGk+PC9vbD48L25hdj4KPCEtLSAvd3A6dGFibGUtb2YtY29udGVudHMgLS0+Cgo8IS0tIHdwOmhlYWRpbmcgLS0+CjxoMiBjbGFzcz0id3AtYmxvY2staGVhZGluZyIgaWQ9InByZXJlcXVpcyI+UHLDqXJlcXVpczo8L2gyPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpsaXN0IC0tPgo8dWwgY2xhc3M9IndwLWJsb2NrLWxpc3QiPjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+Y291cnPCoDxhIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcmFzcGJlcnJ5LXBpLTIvIj5SYXNwYmVycnkgUGk8L2E+PC9saT4KPCEtLSAvd3A6bGlzdC1pdGVtIC0tPgoKPCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT5Bdm9pciBmYWl0Jm5ic3A7PGEgaHJlZj0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMC1pbnN0YWxsYXRpb24vIj5SUElfMCZuYnNwOzwvYT5ldCBkaXNwb3NlciBk4oCZdW4gUmFzcGJlcnJ5IFBJIE9TNjQgYXZlYyBzc2g8L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+Cgo8IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPlRQJm5ic3A7PGEgaHJlZj0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMC1pbnN0YWxsYXRpb24vIj5SUElfMCZuYnNwOzwvYT5ldCZuYnNwOzxhIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpMS8iPlJQSV8xPC9hPiZuYnNwO2VmZmVjdHXDqXM8L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+Cgo8IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPmNvdXJzPGEgaHJlZj0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9sYW5nYWdlLWMvIj4mbmJzcDtsYW5nYWdlIEM8L2E+ICwgQW5uw6llIDEgZGUgbGEgZm9ybWF0aW9uPC9saT4KPCEtLSAvd3A6bGlzdC1pdGVtIC0tPgoKPCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT5jb3VycyZuYnNwOzxhIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvbGliZ3Bpb2QvIj5saWJncGlvZDwvYT48L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+Cgo8IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPmNvdXJzIDxhIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvc2lnaW50LWVuLWMvIj5TSUdJTlQ8L2E+IGN0cmwgYzwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+Y291cnMgcHLDqXNlbnRhdGlvbiBkZSBsYSA8YSBocmVmPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3NvbmRlLW51bWVyaXF1ZS1zYWxlYWUvIj5zb25kZSBTQUxFQUU8L2E+IHZ1IGVuIGNvIGVuc2VpZ25lbWVudCBQaHlzaXF1ZS9JbmZvPC9saT4KPCEtLSAvd3A6bGlzdC1pdGVtIC0tPjwvdWw+CjwhLS0gL3dwOmxpc3QgLS0+Cgo8IS0tIHdwOmhlYWRpbmcgLS0+CjxoMiBjbGFzcz0id3AtYmxvY2staGVhZGluZyIgaWQ9ImJ1dCI+QnV0OjwvaDI+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOmxpc3QgLS0+Cjx1bCBjbGFzcz0id3AtYmxvY2stbGlzdCI+PCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT5NZXR0cmUgZW4gb2V1dnJlIHVuIGNvZGUgcGlsb3RhbnQgbGVzIEdQSU8gZW4gbGFuZ2FnZSBDLCBwb3VyIGxlcyBwcm9qZXRzPC9saT4KPCEtLSAvd3A6bGlzdC1pdGVtIC0tPgoKPCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT5QdWxsIHVwLCBwdWxsIGRvd248L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+Cgo8IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPmludGVycnVwdGlvbiBTSUdJTlQ8L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+PC91bD4KPCEtLSAvd3A6bGlzdCAtLT4KCjwhLS0gd3A6aGVhZGluZyAtLT4KPGgyIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIiBpZD0icmVwZXJ0b2lyZS1kdS10cmF2YWlsIj5Sw6lwZXJ0b2lyZSBkdSB0cmF2YWlsOjwvaDI+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+fi9Xb3Jrcy9SUElfMzwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpoZWFkaW5nIC0tPgo8aDIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciIGlkPSJpbnN0YWxsYXRpb24tc3VyLXJwaS1ub3JtYWxlbWVudC1kZWphLWZhaXQiPkluc3RhbGxhdGlvbiBzdXIgUlBJIChub3JtYWxlbWVudCBkw6lqw6AgZmFpdCk8L2gyPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpjb2RlIC0tPgo8cHJlIGNsYXNzPSJ3cC1ibG9jay1jb2RlIj48Y29kZT5zdWRvIGFwdCB1cGRhdGUKc3VkbyBhcHQgaW5zdGFsbCBncGlvZCBsaWJncGlvZC1kZXYgbGliZ3Bpb2QtZG9jPC9jb2RlPjwvcHJlPgo8IS0tIC93cDpjb2RlIC0tPgoKPCEtLSB3cDpzZXBhcmF0b3IgeyJjbGFzc05hbWUiOiJpcy1zdHlsZS13aWRlIn0gLS0+CjxociBjbGFzcz0id3AtYmxvY2stc2VwYXJhdG9yIGhhcy1hbHBoYS1jaGFubmVsLW9wYWNpdHkgaXMtc3R5bGUtd2lkZSIvPgo8IS0tIC93cDpzZXBhcmF0b3IgLS0+Cgo8IS0tIHdwOmhlYWRpbmcgLS0+CjxoMiBjbGFzcz0id3AtYmxvY2staGVhZGluZyIgaWQ9InNvcnRpZS1ncGlvMTctZXQtbGVkLXJvdWdlIj5Tb3J0aWUgR1BJTzE3IGV0IExFRCBST1VHRTwvaDI+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+b24gcmVwcmVuZCBsZSBtw6ptZSBtb250YWdlLCBvbiBuZSBjaGFuZ2UgcGFzIHVuZSDDqXF1aXBlIHF1aSBnYWduZSE8L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6aW1hZ2UgeyJpZCI6Mjk2NCwic2l6ZVNsdWciOiJsYXJnZSIsImxpbmtEZXN0aW5hdGlvbiI6Im1lZGlhIn0gLS0+CjxmaWd1cmUgY2xhc3M9IndwLWJsb2NrLWltYWdlIHNpemUtbGFyZ2UiPjxhIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvd3AtY29udGVudC91cGxvYWRzLzIwMjUvMDcvR3BpbzE3X0xFRC5wbmciPjxpbWcgc3JjPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzA3L0dwaW8xN19MRUQtMTAyNHg3NTAucG5nIiBhbHQ9IiIgY2xhc3M9IndwLWltYWdlLTI5NjQiLz48L2E+PC9maWd1cmU+CjwhLS0gL3dwOmltYWdlIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPnLDqXBlcnRvaXJlOiBibGluayAsIGNvZGU6IGJsaW5rLmM8L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6ZW5saWdodGVyL2NvZGVibG9jayB7Imxhbmd1YWdlIjoiYyJ9IC0tPgo8cHJlIGNsYXNzPSJFbmxpZ2h0ZXJKU1JBVyIgZGF0YS1lbmxpZ2h0ZXItbGFuZ3VhZ2U9ImMiIGRhdGEtZW5saWdodGVyLXRoZW1lPSIiIGRhdGEtZW5saWdodGVyLWhpZ2hsaWdodD0iIiBkYXRhLWVubGlnaHRlci1saW5lbnVtYmVycz0iIiBkYXRhLWVubGlnaHRlci1saW5lb2Zmc2V0PSIiIGRhdGEtZW5saWdodGVyLXRpdGxlPSIiIGRhdGEtZW5saWdodGVyLWdyb3VwPSIiPiNpbmNsdWRlICZsdDtzdGRpby5oPgojaW5jbHVkZSAmbHQ7dW5pc3RkLmg+CiNpbmNsdWRlICZsdDtncGlvZC5oPgoKaW50IG1haW4oKSB7CiAgICBjb25zdCBjaGFyICpjaGlwbmFtZSA9ICJncGlvY2hpcDAiOwogICAgaW50IGxlZF9waW4gPSAxNzsgLy8gQkNNMTcKICAgIGludCBkZWxheV9tcyA9IDUwMDsgLy8gMC41IHNlY29uZGUKCiAgICAvLyBDb25maWd1cmF0aW9uIG1pbmltYWxlCiAgICBzdHJ1Y3QgZ3Bpb2RfY2hpcCAqY2hpcCA9IGdwaW9kX2NoaXBfb3Blbl9ieV9uYW1lKGNoaXBuYW1lKTsKICAgIHN0cnVjdCBncGlvZF9saW5lICpsZWQgPSBncGlvZF9jaGlwX2dldF9saW5lKGNoaXAsIGxlZF9waW4pOwogICAgZ3Bpb2RfbGluZV9yZXF1ZXN0X291dHB1dChsZWQsICJsZWRfYmxpbmsiLCAwKTsKCiAgICBwcmludGYoIkNsaWdub3RlbWVudCBMRUQgR1BJTzE3IChDdHJsK0MgcG91ciBhcnLDqnRlcilcbiIpOwoKICAgIC8vIEJvdWNsZSBwcmluY2lwYWxlIHNpbXBsaWZpw6llCiAgICB3aGlsZSAoMSkgewogICAgICAgIGdwaW9kX2xpbmVfc2V0X3ZhbHVlKGxlZCwgMSk7IC8vIEFsbHVtZXIKICAgICAgICB1c2xlZXAoZGVsYXlfbXMgKiAxMDAwKTsKICAgICAgICBncGlvZF9saW5lX3NldF92YWx1ZShsZWQsIDApOyAvLyDDiXRlaW5kcmUKICAgICAgICB1c2xlZXAoZGVsYXlfbXMgKiAxMDAwKTsKICAgIH0KCiAgICAvLyBOZXR0b3lhZ2UgKGphbWFpcyBhdHRlaW50IMOgIGNhdXNlIGRlIGxhIGJvdWNsZSBpbmZpbmllKQogICAgZ3Bpb2RfbGluZV9yZWxlYXNlKGxlZCk7CiAgICBncGlvZF9jaGlwX2Nsb3NlKGNoaXApOwogICAgcmV0dXJuIDA7Cn08L3ByZT4KPCEtLSAvd3A6ZW5saWdodGVyL2NvZGVibG9jayAtLT4KCjwhLS0gd3A6aGVhZGluZyAtLT4KPGgyIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIiBpZD0ic2Fpc2lyLWxlLWNvZGUtZXQtY29tcGlsZXItZXQtdGVzdGVyIj5TYWlzaXIgbGUgY29kZSBldCBjb21waWxlciBldCB0ZXN0ZXI8L2gyPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPmF0dGVudGlvbiA6IDxzdHJvbmc+PGNvZGU+LWxncGlvZDwvY29kZT48L3N0cm9uZz4mbmJzcDtlc3QgbCdvcHRpb24gY29ycmVjdGUgcG91ciBsaWVyIChsaW5rZXIpIHZvdHJlIHByb2dyYW1tZSBDIGF2ZWMgbGEgYmlibGlvdGjDqHF1ZSZuYnNwOzxzdHJvbmc+bGliZ3Bpb2Q8L3N0cm9uZz4uPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOmNvZGUgLS0+CjxwcmUgY2xhc3M9IndwLWJsb2NrLWNvZGUiPjxjb2RlPmdjYyAtbyBibGluayBibGluay5jIC1sZ3Bpb2Q8L2NvZGU+PC9wcmU+CjwhLS0gL3dwOmNvZGUgLS0+Cgo8IS0tIHdwOmhlYWRpbmcgLS0+CjxoMiBjbGFzcz0id3AtYmxvY2staGVhZGluZyIgaWQ9InV0bGlzYXRpb24tZHUtZGVidWdnZXItZ2RiIj5VdGxpc2F0aW9uIGR1IGRlYnVnZ2VyIGdkYjwvaDI+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOmNvZGUgLS0+CjxwcmUgY2xhc3M9IndwLWJsb2NrLWNvZGUiPjxjb2RlPmdjYyAtbyBibGluayBibGluay5jIC1sZ3Bpb2QgLWc8L2NvZGU+PC9wcmU+CjwhLS0gL3dwOmNvZGUgLS0+Cgo8IS0tIHdwOmhlYWRpbmcgeyJsZXZlbCI6M30gLS0+CjxoMyBjbGFzcz0id3AtYmxvY2staGVhZGluZyIgaWQ9ImEtcXVvaS1zZXJ0LWciPkEgcXVvaSBzZXJ0IC1nID88L2gzPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpodG1sIC0tPgo8cHJlPjxmb250IGNvbG9yPSIjMjZBMjY5Ij48Yj5icnVub0BycGkzNjQ8L2I+PC9mb250Pjo8Zm9udCBjb2xvcj0iIzEyNDg4QiI+PGI+fi9Xb3Jrcy9SUElfMi9sYW5nYWdlQy9ibGluayAkPC9iPjwvZm9udD4gZ2NjIGJsaW5rLmMgLW8gYmxpbmsgLWxncGlvZCAtZwo8Zm9udCBjb2xvcj0iIzI2QTI2OSI+PGI+YnJ1bm9AcnBpMzY0PC9iPjwvZm9udD46PGZvbnQgY29sb3I9IiMxMjQ4OEIiPjxiPn4vV29ya3MvUlBJXzIvbGFuZ2FnZUMvYmxpbmsgJDwvYj48L2ZvbnQ+IGdkYiBibGluayAKPGZvbnQgY29sb3I9IiNBMzQ3QkEiPjxiPkdOVSBnZGIgKERlYmlhbiAxMC4xLTEuNykgMTAuMS45MC4yMDIxMDEwMy1naXQ8L2I+PC9mb250PgpDb3B5cmlnaHQgKEMpIDIwMjEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCkxpY2Vuc2UgR1BMdjMrOiBHTlUgR1BMIHZlcnNpb24gMyBvciBsYXRlciAmbHQ7aHR0cDovL2dudS5vcmcvbGljZW5zZXMvZ3BsLmh0bWwmZ3Q7ClRoaXMgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGFyZSBmcmVlIHRvIGNoYW5nZSBhbmQgcmVkaXN0cmlidXRlIGl0LgpUaGVyZSBpcyBOTyBXQVJSQU5UWSwgdG8gdGhlIGV4dGVudCBwZXJtaXR0ZWQgYnkgbGF3LgpUeXBlICZxdW90O3Nob3cgY29weWluZyZxdW90OyBhbmQgJnF1b3Q7c2hvdyB3YXJyYW50eSZxdW90OyBmb3IgZGV0YWlscy4KVGhpcyBHREIgd2FzIGNvbmZpZ3VyZWQgYXMgJnF1b3Q7YWFyY2g2NC1saW51eC1nbnUmcXVvdDsuClR5cGUgJnF1b3Q7c2hvdyBjb25maWd1cmF0aW9uJnF1b3Q7IGZvciBjb25maWd1cmF0aW9uIGRldGFpbHMuCkZvciBidWcgcmVwb3J0aW5nIGluc3RydWN0aW9ucywgcGxlYXNlIHNlZToKJmx0O2h0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ2RiL2J1Z3MvJmd0Oy4KRmluZCB0aGUgR0RCIG1hbnVhbCBhbmQgb3RoZXIgZG9jdW1lbnRhdGlvbiByZXNvdXJjZXMgb25saW5lIGF0OgogICAgJmx0O2h0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nZGIvZG9jdW1lbnRhdGlvbi8mZ3Q7LgoKRm9yIGhlbHAsIHR5cGUgJnF1b3Q7aGVscCZxdW90Oy4KVHlwZSAmcXVvdDthcHJvcG9zIHdvcmQmcXVvdDsgdG8gc2VhcmNoIGZvciBjb21tYW5kcyByZWxhdGVkIHRvICZxdW90O3dvcmQmcXVvdDsuLi4KUmVhZGluZyBzeW1ib2xzIGZyb20gPGZvbnQgY29sb3I9IiMyNkEyNjkiPmJsaW5rPC9mb250Pi4uLgooZ2RiKSBsCjEgICAgICAgPGZvbnQgY29sb3I9IiMxMjQ4OEIiPjxiPiNpbmNsdWRlPC9iPjwvZm9udD4gPGZvbnQgY29sb3I9IiNDMDFDMjgiPiZsdDtzdGRpby5oJmd0OzwvZm9udD4KMiAgICAgICA8Zm9udCBjb2xvcj0iIzEyNDg4QiI+PGI+I2luY2x1ZGU8L2I+PC9mb250PiA8Zm9udCBjb2xvcj0iI0MwMUMyOCI+Jmx0O3VuaXN0ZC5oJmd0OzwvZm9udD4KMyAgICAgICA8Zm9udCBjb2xvcj0iIzEyNDg4QiI+PGI+I2luY2x1ZGU8L2I+PC9mb250PiA8Zm9udCBjb2xvcj0iI0MwMUMyOCI+Jmx0O2dwaW9kLmgmZ3Q7PC9mb250Pgo0CjUgICAgICAgPGZvbnQgY29sb3I9IiMyNkEyNjkiPmludDwvZm9udD4gPGI+bWFpbjwvYj48Zm9udCBjb2xvcj0iI0MwMUMyOCI+KCk8L2ZvbnQ+IDxmb250IGNvbG9yPSIjQzAxQzI4Ij57PC9mb250Pgo2ICAgICAgICAgICA8Zm9udCBjb2xvcj0iIzEyNDg4QiI+PGI+Y29uc3Q8L2I+PC9mb250PiA8Zm9udCBjb2xvcj0iIzI2QTI2OSI+Y2hhcjwvZm9udD4gPGZvbnQgY29sb3I9IiNDMDFDMjgiPio8L2ZvbnQ+Y2hpcG5hbWUgPGZvbnQgY29sb3I9IiNDMDFDMjgiPj08L2ZvbnQ+IDxmb250IGNvbG9yPSIjQzAxQzI4Ij4mcXVvdDtncGlvY2hpcDAmcXVvdDs7PC9mb250Pgo3ICAgICAgICAgICA8Zm9udCBjb2xvcj0iIzI2QTI2OSI+aW50PC9mb250PiBsZWRfcGluIDxmb250IGNvbG9yPSIjQzAxQzI4Ij49PC9mb250PiA8Zm9udCBjb2xvcj0iI0EzNDdCQSI+MTc8L2ZvbnQ+PGZvbnQgY29sb3I9IiNDMDFDMjgiPjs8L2ZvbnQ+IDxmb250IGNvbG9yPSIjMkFBMUIzIj4vLyBCQ00xNzwvZm9udD4KOCAgICAgICAgICAgPGZvbnQgY29sb3I9IiMyNkEyNjkiPmludDwvZm9udD4gZGVsYXlfbXMgPGZvbnQgY29sb3I9IiNDMDFDMjgiPj08L2ZvbnQ+IDxmb250IGNvbG9yPSIjQTM0N0JBIj41MDA8L2ZvbnQ+PGZvbnQgY29sb3I9IiNDMDFDMjgiPjs8L2ZvbnQ+IDxmb250IGNvbG9yPSIjMkFBMUIzIj4vLyAwLjUgc2Vjb25kZTwvZm9udD4KOQoxMCAgICAgICAgICA8Zm9udCBjb2xvcj0iIzJBQTFCMyI+Ly8gQ29uZmlndXJhdGlvbiBtaW5pbWFsZTwvZm9udD4KKGdkYikgCjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiMyNkEyNjkiPjxmb250IGNvbG9yPSIjMTcxNDIxIj5bYWxiZXJ0XSAwOmJhc2ggIDE6YmFzaCAgMjpiYXNoICAzOmJhc2ggIDQ6YmFzaCA8L2ZvbnQ+PC9zcGFuPjwvcHJlPgo8IS0tIC93cDpodG1sIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpoZWFkaW5nIHsibGV2ZWwiOjN9IC0tPgo8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciIGlkPSJwcm9wb3Nlci11bi1tb3llbi1hdmVjLWdkYi1kZS12b2lyLXMtYWxsdW1lci1sYS1sZWQtZXQtcy1ldGVpbmRyZS1zb3VzLXZvdHJlLWNvbnRyb2xlLWV0LXZlcmlmaWVyLWxlcy1zdHJ1Y3R1cmVzLWNvbmNlcm5hbnQtY2UtcHJvZ3JhbW1lIj5Qcm9wb3NlciB1biBtb3llbiBhdmVjIGdkYiBkZSB2b2lyIHMnYWxsdW1lciBsYSBsZWQgLCBldCBzJ8OpdGVpbmRyZSBzb3VzIHZvdHJlIGNvbnRyw7RsZSBldCB2w6lyaWZpZXIgbGVzIHN0cnVjdHVyZXMgY29uY2VybmFudCBjZSBwcm9ncmFtbWUuPC9oMz4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5PbiB2YSByYWpvdXRlciB1bmUgTEVEIHN1ciA8L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6aGVhZGluZyAtLT4KPGgyIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIiBpZD0ibGVkLXF1aS1hbHRlcm5lIj5MRUQgcXVpIGFsdGVybmU8L2gyPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlLDqXBlcnRvaXJlOiBhbHRlcm5lICwgY29kZTogYWx0ZXJuZS5jPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOmhlYWRpbmcgeyJsZXZlbCI6M30gLS0+CjxoMyBjbGFzcz0id3AtYmxvY2staGVhZGluZyIgaWQ9InByZXNlbnRhdGlvbiI+UHLDqXNlbnRhdGlvbjo8L2gzPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPm9uIHZhIGdhcmRlciBsYSBsZWQgcm91Z2UgcXVpIGVzdCBzdXIgR1BJTzE3LCBvbiB2YSBham91dGVyIHVuZSBMRUQgVmVydGUgc3VyIEdQSU8yMiBhdmVjIHNhIHLDqXNpc3RhbmNlIGVuIHPDqXJpZSAhPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOmhlYWRpbmcgeyJsZXZlbCI6M30gLS0+CjxoMyBjbGFzcz0id3AtYmxvY2staGVhZGluZyIgaWQ9InByb3Bvc2VyLXVuLXNjaGVtYSI+UHJvcG9zZXIgdW4gc2Now6ltYTwvaDM+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOmhlYWRpbmcgeyJsZXZlbCI6M30gLS0+CjxoMyBjbGFzcz0id3AtYmxvY2staGVhZGluZyIgaWQ9InByb3Bvc2VyLXVuLWNvZGUiPlByb3Bvc2VyIHVuIGNvZGUgPC9oMz4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5Wb3VzIGRldmV6IHNhdm9pciByw6lhbGlzZXIgY2VsYSAuIExhIHNvbHV0aW9uIGVzdCBkb25uw6llIHNpIGJlc29pbjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpkZXRhaWxzIC0tPgo8ZGV0YWlscyBjbGFzcz0id3AtYmxvY2stZGV0YWlscyI+PHN1bW1hcnk+U29sdXRpb246IGFsdGVybmUuYzwvc3VtbWFyeT48IS0tIHdwOmVubGlnaHRlci9jb2RlYmxvY2sgeyJsYW5ndWFnZSI6ImMifSAtLT4KPHByZSBjbGFzcz0iRW5saWdodGVySlNSQVciIGRhdGEtZW5saWdodGVyLWxhbmd1YWdlPSJjIiBkYXRhLWVubGlnaHRlci10aGVtZT0iIiBkYXRhLWVubGlnaHRlci1oaWdobGlnaHQ9IiIgZGF0YS1lbmxpZ2h0ZXItbGluZW51bWJlcnM9IiIgZGF0YS1lbmxpZ2h0ZXItbGluZW9mZnNldD0iIiBkYXRhLWVubGlnaHRlci10aXRsZT0iIiBkYXRhLWVubGlnaHRlci1ncm91cD0iIj4jaW5jbHVkZSAmbHQ7Z3Bpb2QuaD4KI2luY2x1ZGUgJmx0O3VuaXN0ZC5oPgojaW5jbHVkZSAmbHQ7c3RkaW8uaD4KCiNkZWZpbmUgR1BJT19MRUQxIDE3ICAvLyBCQ00xNyAoYnJvY2hlIHBoeXNpcXVlIDExKQojZGVmaW5lIEdQSU9fTEVEMiAyMiAgLy8gQkNNMjIgKGJyb2NoZSBwaHlzaXF1ZSAxNSkKI2RlZmluZSBDSElQTkFNRSAiZ3Bpb2NoaXAwIgojZGVmaW5lIERFTEFZX01TIDUwMCAgLy8gMC41IHNlY29uZGUKCmludCBtYWluKCkgewogICAgLy8gMS4gSW5pdGlhbGlzYXRpb24KICAgIHN0cnVjdCBncGlvZF9jaGlwICpjaGlwID0gZ3Bpb2RfY2hpcF9vcGVuX2J5X25hbWUoQ0hJUE5BTUUpOwogICAgc3RydWN0IGdwaW9kX2xpbmUgKmxlZDEgPSBncGlvZF9jaGlwX2dldF9saW5lKGNoaXAsIEdQSU9fTEVEMSk7CiAgICBzdHJ1Y3QgZ3Bpb2RfbGluZSAqbGVkMiA9IGdwaW9kX2NoaXBfZ2V0X2xpbmUoY2hpcCwgR1BJT19MRUQyKTsKICAgIAogICAgLy8gQ29uZmlndXJhdGlvbiBlbiBzb3J0aWUKICAgIGdwaW9kX2xpbmVfcmVxdWVzdF9vdXRwdXQobGVkMSwgIkxFRDEiLCAwKTsgIC8vIMOJdGVpbnRlIGF1IGTDqXBhcnQKICAgIGdwaW9kX2xpbmVfcmVxdWVzdF9vdXRwdXQobGVkMiwgIkxFRDIiLCAxKTsgIC8vIEFsbHVtw6llIGF1IGTDqXBhcnQKCiAgICAvLyAyLiBCb3VjbGUgZCdhbHRlcm5hbmNlCiAgICBwcmludGYoIkFsdGVybmFuY2UgR1BJTzE3L0dQSU8yMiAoQ3RybCtDIHBvdXIgYXJyw6p0ZXIpXG4iKTsKICAgIHdoaWxlICgxKSB7CiAgICAgICAgZ3Bpb2RfbGluZV9zZXRfdmFsdWUobGVkMSwgMSk7ICAvLyBMRUQxIE9OCiAgICAgICAgZ3Bpb2RfbGluZV9zZXRfdmFsdWUobGVkMiwgMCk7ICAvLyBMRUQyIE9GRgogICAgICAgIHVzbGVlcChERUxBWV9NUyAqIDEwMDApOwogICAgICAgIAogICAgICAgIGdwaW9kX2xpbmVfc2V0X3ZhbHVlKGxlZDEsIDApOyAgLy8gTEVEMSBPRkYKICAgICAgICBncGlvZF9saW5lX3NldF92YWx1ZShsZWQyLCAxKTsgIC8vIExFRDIgT04KICAgICAgICB1c2xlZXAoREVMQVlfTVMgKiAxMDAwKTsKICAgIH0KCiAgICAvLyAzLiBOZXR0b3lhZ2UgKGluYWNjZXNzaWJsZSBpY2kgw6AgY2F1c2UgZGUgbGEgYm91Y2xlIGluZmluaWUpCiAgICBncGlvZF9saW5lX3JlbGVhc2UobGVkMSk7CiAgICBncGlvZF9saW5lX3JlbGVhc2UobGVkMik7CiAgICBncGlvZF9jaGlwX2Nsb3NlKGNoaXApOwogICAgcmV0dXJuIDA7Cn08L3ByZT4KPCEtLSAvd3A6ZW5saWdodGVyL2NvZGVibG9jayAtLT48L2RldGFpbHM+CjwhLS0gL3dwOmRldGFpbHMgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+PC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOmhlYWRpbmcgeyJsZXZlbCI6M30gLS0+CjxoMyBjbGFzcz0id3AtYmxvY2staGVhZGluZyIgaWQ9InNhaXNpci1jb21waWxlci10ZXN0ZXItbGUtY29kZSI+U2Fpc2lyICwgY29tcGlsZXIgdGVzdGVyIGxlIGNvZGU8L2gzPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpoZWFkaW5nIHsibGV2ZWwiOjN9IC0tPgo8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciIGlkPSJleHBsaXF1ZXotY29tbWVudC11dGlsaXNlci1nZGItcG91ci1jb250cm9sZXItbC1hbGx1bWFnZS1ldC1sLWV4dGluY3Rpb24tZGVzLWxlZCI+PHN0cm9uZz5FeHBsaXF1ZXogY29tbWVudCB1dGlsaXNlciBHREIgcG91ciBjb250csO0bGVyIGwnYWxsdW1hZ2UgZXQgbCdleHRpbmN0aW9uIGRlcyBMRUQ8L3N0cm9uZz48L2gzPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpoZWFkaW5nIHsibGV2ZWwiOjN9IC0tPgo8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciIGlkPSJkb25uZXItbGVzLWNvbW1hbmRlcy1xdWktcGVybWV0dGVudC1kZS1yZWFsaXNlci1kZXMtc29ydGllcyI+RG9ubmVyIGxlcyBjb21tYW5kZXMgcXVpIHBlcm1ldHRlbnQgZGUgcsOpYWxpc2VyIGRlcyBzb3J0aWVzPC9oMz4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6aGVhZGluZyAtLT4KPGgyIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIiBpZD0iZW50cmVlLWF2ZWMtaWxzIj5FbnRyw6llIGF2ZWMgSUxTPC9oMj4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5Nb250YWdlIDI8L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5HUElPMjcgZW4gZW50csOpZSAsIEdQSU8xNyBlbiBzb3J0aWU8L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6aW1hZ2UgeyJpZCI6MzA0MSwic2l6ZVNsdWciOiJsYXJnZSIsImxpbmtEZXN0aW5hdGlvbiI6Im1lZGlhIn0gLS0+CjxmaWd1cmUgY2xhc3M9IndwLWJsb2NrLWltYWdlIHNpemUtbGFyZ2UiPjxhIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvd3AtY29udGVudC91cGxvYWRzLzIwMjUvMDcvcmVlZF9sZWQucG5nIj48aW1nIHNyYz0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8wNy9yZWVkX2xlZC0xMDI0eDczOC5wbmciIGFsdD0iIiBjbGFzcz0id3AtaW1hZ2UtMzA0MSIvPjwvYT48L2ZpZ3VyZT4KPCEtLSAvd3A6aW1hZ2UgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+UsOpcGVydG9pcmU6IGlsc19sZWQgLCBjb2RlOiBpbHNfbGVkLmM8L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6ZW5saWdodGVyL2NvZGVibG9jayB7Imxhbmd1YWdlIjoiYyJ9IC0tPgo8cHJlIGNsYXNzPSJFbmxpZ2h0ZXJKU1JBVyIgZGF0YS1lbmxpZ2h0ZXItbGFuZ3VhZ2U9ImMiIGRhdGEtZW5saWdodGVyLXRoZW1lPSIiIGRhdGEtZW5saWdodGVyLWhpZ2hsaWdodD0iIiBkYXRhLWVubGlnaHRlci1saW5lbnVtYmVycz0iIiBkYXRhLWVubGlnaHRlci1saW5lb2Zmc2V0PSIiIGRhdGEtZW5saWdodGVyLXRpdGxlPSIiIGRhdGEtZW5saWdodGVyLWdyb3VwPSIiPiNpbmNsdWRlICZsdDtncGlvZC5oPgojaW5jbHVkZSAmbHQ7c3RkaW8uaD4KI2luY2x1ZGUgJmx0O3VuaXN0ZC5oPiAvLyBwb3VyIHVzbGVlcCgpCiNkZWZpbmUgR1BJT19DSElQICAgICJncGlvY2hpcDAiICAvLyBOb20gZHUgY29udHLDtGxldXIgR1BJTwojZGVmaW5lIEdQSU9fSU5QVVQgICAyNyAgICAgICAgICAgLy8gR1BJTzI3IGVuIGVudHLDqWUgKElMUykKI2RlZmluZSBHUElPX09VVFBVVCAgMTcgICAgICAgICAgIC8vIEdQSU8xNyBlbiBzb3J0aWUKI2RlZmluZSBERUxBWV9NUyAgICAgNTAgICAgICAgICAgIC8vIETDqWxhaSBkZSBsZWN0dXJlIChlbiBtcykKaW50IG1haW4oKSB7CiAgICBzdHJ1Y3QgZ3Bpb2RfY2hpcCAqY2hpcDsKICAgIHN0cnVjdCBncGlvZF9saW5lICppbnB1dF9saW5lLCAqb3V0cHV0X2xpbmU7CiAgICBpbnQgaW5wdXRfc3RhdGU7CiAgICAvLyAxLiBJbml0aWFsaXNhdGlvbiBkdSBHUElPCiAgICBjaGlwID0gZ3Bpb2RfY2hpcF9vcGVuX2J5X25hbWUoR1BJT19DSElQKTsKICAgIGlmICghY2hpcCkgewogICAgICAgIHBlcnJvcigiRXJyZXVyIGQnb3V2ZXJ0dXJlIGR1IGNoaXAgR1BJTyIpOwogICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICB9CiAgICAvLyAyLiBDb25maWd1cmF0aW9uIGRlcyBicm9jaGVzCiAgICBpbnB1dF9saW5lID0gZ3Bpb2RfY2hpcF9nZXRfbGluZShjaGlwLCBHUElPX0lOUFVUKTsKICAgIG91dHB1dF9saW5lID0gZ3Bpb2RfY2hpcF9nZXRfbGluZShjaGlwLCBHUElPX09VVFBVVCk7CiAgICBpZiAoIWlucHV0X2xpbmUgfHwgIW91dHB1dF9saW5lKSB7CiAgICAgICAgcGVycm9yKCJFcnJldXIgZGUgY29uZmlndXJhdGlvbiBkZXMgYnJvY2hlcyIpOwogICAgICAgIGdwaW9kX2NoaXBfY2xvc2UoY2hpcCk7CiAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgIH0KICAgIC8vIEdQSU8yNyBlbiBlbnRyw6llIChhdmVjIHLDqXNpc3RhbmNlIGRlIHJhcHBlbCBleHRlcm5lIGF1ICszLjNWKQogICAgZ3Bpb2RfbGluZV9yZXF1ZXN0X2lucHV0KGlucHV0X2xpbmUsICJpbHMtaW5wdXQiKTsKICAgIC8vIEdQSU8xNyBlbiBzb3J0aWUKICAgIGdwaW9kX2xpbmVfcmVxdWVzdF9vdXRwdXQob3V0cHV0X2xpbmUsICJsZWQtb3V0cHV0IiwgMCk7CiAgICBwcmludGYoIkTDqW1hcnJhZ2UgZGUgbGEgY29waWUgR1BJTyVkIOKGkiBHUElPJWQgKENUUkwrQyBwb3VyIGFycsOqdGVyKVxuIiwgR1BJT19JTlBVVCwgR1BJT19PVVRQVVQpOwogICAgLy8gMy4gQm91Y2xlIHByaW5jaXBhbGUKICAgIHdoaWxlICgxKSB7CiAgICAgICAgLy8gTGVjdHVyZSBkZSBsJ8OpdGF0IGRlIGwnSUxTICgwPW91dmVydCwgMT1mZXJtw6kpCiAgICAgICAgaW5wdXRfc3RhdGUgPSBncGlvZF9saW5lX2dldF92YWx1ZShpbnB1dF9saW5lKTsKICAgICAgICAvLyBDb3BpZSB2ZXJzIGxhIHNvcnRpZQogICAgICAgIGdwaW9kX2xpbmVfc2V0X3ZhbHVlKG91dHB1dF9saW5lLCBpbnB1dF9zdGF0ZSk7CiAgICAgICAgLy8gUGV0aXRlIHBhdXNlIHBvdXIgw6l2aXRlciBsYSBzdXJjaGFyZ2UgQ1BVCiAgICAgICAgdXNsZWVwKERFTEFZX01TICogMTAwMCk7CiAgICB9CiAgICAvLyA0LiBOZXR0b3lhZ2UgKGphbWFpcyBhdHRlaW50IGljaSDDoCBjYXVzZSBkZSBsYSBib3VjbGUgaW5maW5pZSkKICAgIGdwaW9kX2xpbmVfcmVsZWFzZShpbnB1dF9saW5lKTsKICAgIGdwaW9kX2xpbmVfcmVsZWFzZShvdXRwdXRfbGluZSk7CiAgICBncGlvZF9jaGlwX2Nsb3NlKGNoaXApOwogICAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKfTwvcHJlPgo8IS0tIC93cDplbmxpZ2h0ZXIvY29kZWJsb2NrIC0tPgoKPCEtLSB3cDpoZWFkaW5nIHsibGV2ZWwiOjN9IC0tPgo8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciIGlkPSJzYWlzaXItbGUtY29kZS1sZS1jb21waWxlci1ldC1sZS10ZXN0ZXIiPlNhaXNpciBsZSBjb2RlIGxlIGNvbXBpbGVyIGV0IGxlIHRlc3RlcjwvaDM+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOmhlYWRpbmcgeyJsZXZlbCI6M30gLS0+CjxoMyBjbGFzcz0id3AtYmxvY2staGVhZGluZyIgaWQ9InByb3Bvc2VyLXVuLW1veWVuLWF2ZWMtZ2RiLWRlLXN1cnZlaWxsZXItZ3BpbzI3LWV0LWRlLWNvbnRyb2xlci1ncGlvMTciPlByb3Bvc2VyIHVuIG1veWVuIGF2ZWMgZ2RiIGRlIHN1cnZlaWxsZXIgR1BJTzI3IGV0IGRlIGNvbnRyw7RsZXIgR1BJTzE3PC9oMz4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6aGVhZGluZyB7ImxldmVsIjozfSAtLT4KPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIiBpZD0iYXZlYy1tb25pYS1wcm9wb3Nlci11bi1vcmdhbmlncmFtbWUtZXQtc29uLXBsIj5BdmVjIE1vbmlhIHByb3Bvc2VyIHVuIG9yZ2FuaWdyYW1tZSBldCBzb24gUEw8L2gzPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpoZWFkaW5nIC0tPgo8aDIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciIGlkPSJyZXNpc3RhbmNlLWRlLXJhcHBlbC1pbnRlcm5lIj5Sw6lzaXN0YW5jZSBkZSByYXBwZWwgaW50ZXJuZTwvaDI+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+b24gdmEgZ2FyZGVyIGxlIG3Dqm1lIG1vbnRhZ2UgbWFpcyBvbiB2YSBsZSBzaW1wbGlmaWVyIGVuIGFqb3V0YW50IHVuIHBldSBkZSBjb2RlLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPm9uIHN1cHByaW1lIGxhIHLDqXNpc3RhbmNlIGV4dGVybmUgIGV0IG9uIGxhaXNzZSBsJ0lMUyAuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+Q29tbWUgZMOpasOgIMOpdHVkacOpIHByw6ljw6lkZW1tZW50IC48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6aGVhZGluZyB7ImxldmVsIjozfSAtLT4KPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIiBpZD0ianVzdGlmaWVyLWNvbW1lbnQtb24tcGV1dC1zdXBwcmltZXItY2V0dGUtcmVzaXN0YW5jZS1leHRlcm5lIj5KdXN0aWZpZXIgY29tbWVudCBvbiBwZXV0IHN1cHByaW1lciBjZXR0ZSByw6lzaXN0YW5jZSBleHRlcm5lLjwvaDM+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+Y29tbWVudCBmYWlyZSBzaSBvbiBsYSBzdXBwcmltZS48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6aGVhZGluZyB7ImxldmVsIjozfSAtLT4KPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIiBpZD0iY29kZS1jLXByb3Bvc2UtaWxzLWxlZC1zci1jIj5Db2RlIEMgcHJvcG9zw6kgLCBpbHNfbGVkX3NyLmM8L2gzPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPmJlc29pbiBkZTxhIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvc2lnaW50LWVuLWMvIj4gc2lnaW50IGVuIEM8L2E+PC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+csOpcGVydG9pcmU6IGlsc3JlZHNyYyAsIGNvZGUgOiBpbHNfbGVkX3NyLmM8L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6ZW5saWdodGVyL2NvZGVibG9jayB7Imxhbmd1YWdlIjoiYyJ9IC0tPgo8cHJlIGNsYXNzPSJFbmxpZ2h0ZXJKU1JBVyIgZGF0YS1lbmxpZ2h0ZXItbGFuZ3VhZ2U9ImMiIGRhdGEtZW5saWdodGVyLXRoZW1lPSIiIGRhdGEtZW5saWdodGVyLWhpZ2hsaWdodD0iIiBkYXRhLWVubGlnaHRlci1saW5lbnVtYmVycz0iIiBkYXRhLWVubGlnaHRlci1saW5lb2Zmc2V0PSIiIGRhdGEtZW5saWdodGVyLXRpdGxlPSIiIGRhdGEtZW5saWdodGVyLWdyb3VwPSIiPiNpbmNsdWRlICZsdDtncGlvZC5oPgojaW5jbHVkZSAmbHQ7c3RkbGliLmg+CiNpbmNsdWRlICZsdDtzdGRpby5oPgojaW5jbHVkZSAmbHQ7dW5pc3RkLmg+CiNpbmNsdWRlICZsdDtzaWduYWwuaD4KCiNkZWZpbmUgR1BJT19DSElQICAgICJncGlvY2hpcDAiCiNkZWZpbmUgR1BJT19JTFMgICAgIDI3ICAgICAgLy8gR1BJTzI3IGVuIGVudHLDqWUgKElMUyBhdSArMy4zVikKI2RlZmluZSBHUElPX1NPUlRJRSAgMTcgICAgICAvLyBHUElPMTcgZW4gc29ydGllCiNkZWZpbmUgREVMQVlfTVMgICAgIDUwICAgICAgLy8gRMOpbGFpIGRlIGxlY3R1cmUKCnZvbGF0aWxlIHNpZ19hdG9taWNfdCBzdG9wID0gMDsKCi8qIGludGVycnVwdGlvbiBTSUdJTlQgY3RybCBjICovCnZvaWQgaGFuZGxlX3NpZ2ludChpbnQgc2lnKSB7CiAgICBwcmludGYoIlxuSW50ZXJjZXB0aW9uIENUUkwrQ1xuIik7ICAvLyBEZWJ1ZyB2aXNpYmxlCiAgICBzdG9wID0gMTsKfQoKaW50IG1haW4oKSB7CiAgICBzdHJ1Y3QgZ3Bpb2RfY2hpcCAqY2hpcDsKICAgIHN0cnVjdCBncGlvZF9saW5lICppbHMsICpzb3J0aWU7CiAgICBzdHJ1Y3QgZ3Bpb2RfbGluZV9yZXF1ZXN0X2NvbmZpZyBjZmdfaWxzID0gewogICAgICAgIC5jb25zdW1lciA9ICJJTFMiLAogICAgICAgIC5yZXF1ZXN0X3R5cGUgPSBHUElPRF9MSU5FX1JFUVVFU1RfRElSRUNUSU9OX0lOUFVULAogICAgICAgIC5mbGFncyA9IEdQSU9EX0xJTkVfUkVRVUVTVF9GTEFHX0JJQVNfUFVMTF9ET1dOICAvLyBQdWxsLWRvd24gaW50ZXJuZQogICAgfTsKCiAgICAvLyAxLiBJbml0aWFsaXNhdGlvbiBHUElPCiAgICBjaGlwID0gZ3Bpb2RfY2hpcF9vcGVuX2J5X25hbWUoR1BJT19DSElQKTsKICAgIGlmICghY2hpcCkgewogICAgICAgIHBlcnJvcigiRXJyZXVyIG91dmVydHVyZSBjaGlwIEdQSU8iKTsKICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgfQoKICAgIC8vIDIuIENvbmZpZ3VyYXRpb24gZW50csOpZSAoSUxTKSBhdmVjIHB1bGwtZG93bgogICAgaWxzID0gZ3Bpb2RfY2hpcF9nZXRfbGluZShjaGlwLCBHUElPX0lMUyk7CiAgICBpZiAoIWlscyB8fCBncGlvZF9saW5lX3JlcXVlc3QoaWxzLCAmYW1wO2NmZ19pbHMsIDApKSB7CiAgICAgICAgcGVycm9yKCJFcnJldXIgY29uZmlndXJhdGlvbiBJTFMiKTsKICAgICAgICBncGlvZF9jaGlwX2Nsb3NlKGNoaXApOwogICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICB9CgogICAgLy8gMy4gQ29uZmlndXJhdGlvbiBzb3J0aWUKICAgIHNvcnRpZSA9IGdwaW9kX2NoaXBfZ2V0X2xpbmUoY2hpcCwgR1BJT19TT1JUSUUpOwogICAgaWYgKCFzb3J0aWUgfHwgZ3Bpb2RfbGluZV9yZXF1ZXN0X291dHB1dChzb3J0aWUsICJzb3J0aWUiLCAwKSkgewogICAgICAgIHBlcnJvcigiRXJyZXVyIGNvbmZpZ3VyYXRpb24gc29ydGllIik7CiAgICAgICAgZ3Bpb2RfbGluZV9yZWxlYXNlKGlscyk7CiAgICAgICAgZ3Bpb2RfY2hpcF9jbG9zZShjaGlwKTsKICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgfQoKICAgIC8vIDQuIEdlc3Rpb24gQ1RSTCtDCiAgICBzaWduYWwoU0lHSU5ULCBoYW5kbGVfc2lnaW50KTsKCiAgICBwcmludGYoIk1vbml0b3JpbmcgSUxTIHN1ciBHUElPJWQg4oaSIFNvcnRpZSBHUElPJWRcbiIsIEdQSU9fSUxTLCBHUElPX1NPUlRJRSk7CiAgICBwcmludGYoIlNjaMOpbWEgOiBJTFMoKzMuM1YpIOKGkiBHUElPJWQgfCBQdWxsLWRvd24gaW50ZXJuZSBhY3RpdsOpXG4iLCBHUElPX0lMUyk7CgogICAgLy8gNS4gQm91Y2xlIHByaW5jaXBhbGUKICAgIHdoaWxlICghc3RvcCkgewogICAgICAgIGludCBldGF0ID0gZ3Bpb2RfbGluZV9nZXRfdmFsdWUoaWxzKTsKICAgICAgICBncGlvZF9saW5lX3NldF92YWx1ZShzb3J0aWUsIGV0YXQpOwogICAgICAgIHVzbGVlcChERUxBWV9NUyAqIDEwMDApOwogICAgfQoKICAgIC8vIDYuIE5ldHRveWFnZQogICAgZ3Bpb2RfbGluZV9yZWxlYXNlKGlscyk7CiAgICBncGlvZF9saW5lX3JlbGVhc2Uoc29ydGllKTsKICAgIGdwaW9kX2NoaXBfY2xvc2UoY2hpcCk7CiAgICBwcmludGYoIlxuQXJyw6p0IHByb3ByZVxuIik7CgogICAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKfTwvcHJlPgo8IS0tIC93cDplbmxpZ2h0ZXIvY29kZWJsb2NrIC0tPgoKPCEtLSB3cDpoZWFkaW5nIHsibGV2ZWwiOjN9IC0tPgo8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciIGlkPSJkb25uZXItbGEtY29tbWFuZGUtcXVpLWEtcGVybWlzLWRlLXJlc291ZHJlLWxlLWZhaXQtZC1hdm9pci1lbmxldmUtbGEtcmVzaXN0YW5jZS1leHRlcm5lIj5Eb25uZXIgbGEgY29tbWFuZGUgcXVpIGEgcGVybWlzIGRlIHLDqXNvdWRyZSBsZSBmYWl0IGQnYXZvaXIgZW5sZXbDqSBsYSByZXNpc3RhbmNlIGV4dGVybmU8L2gzPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpoZWFkaW5nIHsibGV2ZWwiOjN9IC0tPgo8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciIGlkPSJlbi1xdW9pLWNlLWNvZGUtZXN0LWFtZWxpb3JlLWhvcm1pcy1sYS1tb2RpZmljYXRpb24tYXZlYy1sYS1yZXNpc3RhbmNlLWVuLW1vaW5zIj5FbiBxdW9pIGNlIGNvZGUgZXN0IGFtw6lsaW9yw6kgaG9ybWlzIGxhIG1vZGlmaWNhdGlvbiBhdmVjIGxhIHLDqXNpc3RhbmNlIGVuIG1vaW5zLjwvaDM+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOmhlYWRpbmcgeyJsZXZlbCI6M30gLS0+CjxoMyBjbGFzcz0id3AtYmxvY2staGVhZGluZyIgaWQ9ImF2ZWMtZ2RiLXN1cnZlaWxsZXItbGEtcmVhY3Rpb24tYXUtY3RybC1jLWV4cGxpcXVlciI+QXZlYyBHREIgU3VydmVpbGxlciBsYSByw6lhY3Rpb24gYXUgY3RybCBjICwgZXhwbGlxdWVyPC9oMz4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5zb3VzIGdkYiAsIHF1YW5kIG9uIGZhaXQgY3RybCBjICheYyksICBjJ2VzdCBnZGIgcXVpIHLDqXBvbmQgISEgZXQgcGFzIG5vdHJlIGNvZGUhPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+ZG9uYyBpbCBmYXV0IGRpcmUgYSBnZGIgZGUgbmUgcGFzIHLDqWFnaXIgYSBjdHJsIGMgLCBhdmVjIGxhIGNvbW1hbmRlPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnByZWZvcm1hdHRlZCAtLT4KPHByZSBjbGFzcz0id3AtYmxvY2stcHJlZm9ybWF0dGVkIj5oYW5kbGUgU0lHSU5UIG5vc3RvcCBub3ByaW50IHBhc3M8L3ByZT4KPCEtLSAvd3A6cHJlZm9ybWF0dGVkIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPmNlIHF1aSBub3VzIHBlcm1ldHRyYSBlbnN1aXRlIGRlIG1ldHRyZSB1biBwb2ludCBkJ2FycsOqdCBsaWduZSAxNiBwb3VyIHPigJlhcnLDqnRlciBkYW5zIGxhIGZvbmN0aW9uIDxzdHJvbmc+dm9pZCBoYW5kbGVfc2lnaW50KGludCBzaWcpPC9zdHJvbmc+PC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+aW50ZXJydXB0aW9uIHByb3ZvcXXDqWUgcGFyIGxlIGN0cmwgYyAoU0lHSU5UKTwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpoZWFkaW5nIHsibGV2ZWwiOjN9IC0tPgo8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciIGlkPSJleHBsaXF1ZXItYXZlYy1nZGIiPkV4cGxpcXVlciBhdmVjIGdkYjwvaDM+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOmhlYWRpbmcgeyJsZXZlbCI6M30gLS0+CjxoMyBjbGFzcz0id3AtYmxvY2staGVhZGluZyIgaWQ9ImF2ZWMtbW9uaWEtZG9ubmVyLWxlcy1vcmdhbmlncmFtbWVzLWV0LWxlcy1wbCI+QXZlYyBNb25pYSBkb25uZXIgbGVzIG9yZ2FuaWdyYW1tZXMgZXQgbGVzIFBMPC9oMz4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6aGVhZGluZyAtLT4KPGgyIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIiBpZD0ib24tdmEtdXRpbGlzZXItbGEtc29uZGUtbnVtZXJpcXVlLXNhbGVhZSI+T24gdmEgdXRpbGlzZXIgbGEgPGEgaHJlZj0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9zb25kZS1udW1lcmlxdWUtc2FsZWFlLyI+c29uZGUgbnVtw6lyaXF1ZSBTQUxFQUU8L2E+PC9oMj4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5vbiB2YSB1dGlsaXNlciBsYSBzb25kZSBTQUxFQUUgcG91ciByZWxldmVyIGxlcyBzaWduYXV4IEdQSU8yNyBldCBHUElPMTc8L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5jaDA6IEdQSU8xNzwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPmNoMTogR1BJTzI3PC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+bmUgcGFzIG91YmxpZXIgZGUgYnJhbmNoZXIgbGEgbWFzc2UgKEdORCk8L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6aGVhZGluZyAtLT4KPGgyIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIiBpZD0iY29kZS1ibGluay1ncGlvMTctYy1hdmVjLWN0cmwtYyI+Q29kZSBibGluayBncGlvMTcuYyAgKGF2ZWMgY3RybCBjKTwvaDI+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOmVubGlnaHRlci9jb2RlYmxvY2sgeyJsYW5ndWFnZSI6ImMifSAtLT4KPHByZSBjbGFzcz0iRW5saWdodGVySlNSQVciIGRhdGEtZW5saWdodGVyLWxhbmd1YWdlPSJjIiBkYXRhLWVubGlnaHRlci10aGVtZT0iIiBkYXRhLWVubGlnaHRlci1oaWdobGlnaHQ9IiIgZGF0YS1lbmxpZ2h0ZXItbGluZW51bWJlcnM9IiIgZGF0YS1lbmxpZ2h0ZXItbGluZW9mZnNldD0iIiBkYXRhLWVubGlnaHRlci10aXRsZT0iIiBkYXRhLWVubGlnaHRlci1ncm91cD0iIj4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIEJsaW5rIEdQSU8xNyBMaWJncGlvZCAxLjYgICAgKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKI2luY2x1ZGUgJmx0O2dwaW9kLmg+CiNpbmNsdWRlICZsdDtzdGRpby5oPgojaW5jbHVkZSAmbHQ7c3RkbGliLmg+CiNpbmNsdWRlICZsdDt1bmlzdGQuaD4KI2luY2x1ZGUgJmx0O3NpZ25hbC5oPgoKc3RydWN0IGdwaW9kX2xpbmUgKmxlZF9saW5lID0gTlVMTDsgLyogRMOpY2xhcsOpIGdsb2JhbCBwb3VyIGxlIGdlc3Rpb25uYWlyZSBkZSBzaWduYWwgKi8KCi8qIEfDqHJlIEN0cmwrQyBwb3VyIMOpdGVpbmRyZSBsYSBMRUQgZXQgbGliw6lyZXIgbGVzIEdQSU8gKi8Kdm9pZCBzaWduYWxfaGFuZGxlcihpbnQgc2lnbm8pIAp7CiAgICBpZiAoc2lnbm8gPT0gU0lHSU5UKSB7CiAgICAgICAgcHJpbnRmKCJcbkV4dGluY3Rpb24gZXQgbmV0dG95YWdlLi4uXG4iKTsKICAgICAgICBpZiAobGVkX2xpbmUpIHsKICAgICAgICAgICAgZ3Bpb2RfbGluZV9zZXRfdmFsdWUobGVkX2xpbmUsIDApOyAvKiDDiXRlaW50IGxhIExFRCAgICovCiAgICAgICAgICAgIGdwaW9kX2xpbmVfcmVsZWFzZShsZWRfbGluZSk7ICAgICAgLyogTGliw6hyZSBsYSBsaWduZSAqLwogICAgICAgIH0KICAgICAgICBleGl0KEVYSVRfU1VDQ0VTUyk7CiAgICB9Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwppbnQgbWFpbigpIAp7CiAgICBjb25zdCBjaGFyICpjaGlwbmFtZSA9ICJncGlvY2hpcDAiOwogICAgY29uc3QgaW50IGxlZF9waW4gPSAxNzsgLyogR1BJTzE3LCBicm9jaGUgcGh5c2lxdWUgMTEgKi8KCiAgICAvKiAxLiBPVVZFUlRVUkUgZHUgY2hpcCAqLwogICAgc3RydWN0IGdwaW9kX2NoaXAgKmNoaXAgPSBncGlvZF9jaGlwX29wZW5fYnlfbmFtZShjaGlwbmFtZSk7CiAgICBpZiAoIWNoaXApIAogICAgCXsKICAgICAgICBwZXJyb3IoIkVycmV1ciBvdXZlcnR1cmUgY2hpcCIpOwogICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAJfQoKICAgIC8qIDIuIENPTkZJR1VSQVRJT04gZGUgbGEgbGlnbmUgZW4gU09SVElFICovCiAgICBsZWRfbGluZSA9IGdwaW9kX2NoaXBfZ2V0X2xpbmUoY2hpcCwgbGVkX3Bpbik7CiAgICBpZiAoIWxlZF9saW5lKSAKICAgIAl7CiAgICAgICAgcGVycm9yKCJFcnJldXIgb2J0ZW50aW9uIGxpZ25lIik7CiAgICAgICAgZ3Bpb2RfY2hpcF9jbG9zZShjaGlwKTsKICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgCX0KICAgIC8qIFZhbGV1ciBpbml0aWFsZSA9IDAgKExFRCDDqXRlaW50ZSBhdSBkw6ltYXJyYWdlKSAqLwogICAgaWYgKGdwaW9kX2xpbmVfcmVxdWVzdF9vdXRwdXQobGVkX2xpbmUsICJibGlua19hcHAiLCAwKSAmbHQ7IDApIAogICAgCXsKICAgICAgICBwZXJyb3IoIkVycmV1ciBjb25maWd1cmF0aW9uIHNvcnRpZSIpOwogICAgICAgIGdwaW9kX2NoaXBfY2xvc2UoY2hpcCk7CiAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgIAl9CQoKICAgIHNpZ25hbChTSUdJTlQsIHNpZ25hbF9oYW5kbGVyKTsgLyogQ2FwdHVyZSBzaWduYWwgQ3RybCtDICovCiAgICBwcmludGYoIkxFRCBjbGlnbm90YW50ZSAoR1BJTyVkKS4gQ3RybCtDIHBvdXIgYXJyw6p0ZXIuXG4iLCBsZWRfcGluKTsKCiAgICAvKiAzLiBVVElMSVNBVElPTiA6IEJvdWNsZSBkZSBsZWN0dXJlL8OpY3JpdHVyZSAqLwogICAgd2hpbGUgKDEpIAogICAgewogICAgICAgIGdwaW9kX2xpbmVfc2V0X3ZhbHVlKGxlZF9saW5lLCAxKTsgLyogQWxsdW1lICovCiAgICAgICAgcHJpbnRmKCLDiXRhdDogT05cbiIpOwogICAgICAgIHNsZWVwKDEpOwogICAgICAgIGdwaW9kX2xpbmVfc2V0X3ZhbHVlKGxlZF9saW5lLCAwKTsgLyogw4l0ZWludCAqLwogICAgICAgIHByaW50Zigiw4l0YXQ6IE9GRlxuIik7CiAgICAgICAgc2xlZXAoMSk7CiAgICB9CgogICAgLyogNC4gTkVUVE9ZQUdFIChlbiBwcmluY2lwZSBqYW1haXMgYXR0ZWludCDDoCBjYXVzZSBkZSBsYSBib3VjbGUgaW5maW5pZSkKICAgICAgIExlIGdlc3Rpb25uYWlyZSBkZSBzaWduYWwgYHNpZ25hbF9oYW5kbGVyYCBzJ2VuIGNoYXJnZS4KICAgICAgIGdwaW9kX2NoaXBfY2xvc2UoY2hpcCk7IC8vIFNlcmFpdCDDoCBmYWlyZSBpY2kgc2kgcGFzIGRlIGJvdWNsZSBpbmZpbmllICovCiAgICByZXR1cm4gRVhJVF9TVUNDRVNTOwp9PC9wcmU+CjwhLS0gL3dwOmVubGlnaHRlci9jb2RlYmxvY2sgLS0+ZG9jdW1lbnRleGNlcnB0ZG9jdW1lbnRhdXRob3Jkb2N1bWVudGZlYXR1cmVkX21lZGlhZG9jdW1lbnRjb21tZW50X3N0YXR1c2RvY3VtZW50cGluZ19zdGF0dXNkb2N1bWVudHRlbXBsYXRlZG9jdW1lbnRtZXRhX3VhZ19jdXN0b21fcGFnZV9sZXZlbF9jc3Nmb290bm90ZXNkb2N1bWVudGJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzdXJsYWx0Y2FwdGlvbmhyZWZpZHdpZHRoaGVpZ2h0c2l6ZVNsdWdsaW5rRGVzdGluYXRpb25hbGlnblVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnTwn5WSIDogMyBoIG1heGltdW1kcm9wQ2FwVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzdXJsYWx0Y2FwdGlvbmhyZWZpZHdpZHRoaGVpZ2h0YXNwZWN0UmF0aW9zaXplU2x1Z2xpbmtEZXN0aW5hdGlvbmFsaWduVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzaGVhZGluZ3Nvbmx5SW5jbHVkZUN1cnJlbnRQYWdlb3JkZXJlZFVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRQcsOpcmVxdWlzOmxldmVsVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRhbmNob3Jpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzb3JkZXJlZHZhbHVlc1VBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRjb3VycyZuYnNwOzxhIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcmFzcGJlcnJ5LXBpLTIvIj5SYXNwYmVycnkgUGk8L2E+VUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudEF2b2lyIGZhaXQmbmJzcDs8YSBocmVmPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8wLWluc3RhbGxhdGlvbi8iPlJQSV8wJm5ic3A7PC9hPmV0IGRpc3Bvc2VyIGTigJl1biBSYXNwYmVycnkgUEkgT1M2NCBhdmVjIHNzaFVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRUUCZuYnNwOzxhIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzAtaW5zdGFsbGF0aW9uLyI+UlBJXzAmbmJzcDs8L2E+ZXQmbmJzcDs8YSBocmVmPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaTEvIj5SUElfMTwvYT4mbmJzcDtlZmZlY3R1w6lzVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudGNvdXJzPGEgaHJlZj0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9sYW5nYWdlLWMvIj4mbmJzcDtsYW5nYWdlIEM8L2E+ICwgQW5uw6llIDEgZGUgbGEgZm9ybWF0aW9uVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudGNvdXJzJm5ic3A7PGEgaHJlZj0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9saWJncGlvZC8iPmxpYmdwaW9kPC9hPlVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRjb3VycyA8YSBocmVmPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3NpZ2ludC1lbi1jLyI+U0lHSU5UPC9hPiBjdHJsIGNVQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50Y291cnMgcHLDqXNlbnRhdGlvbiBkZSBsYSA8YSBocmVmPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3NvbmRlLW51bWVyaXF1ZS1zYWxlYWUvIj5zb25kZSBTQUxFQUU8L2E+IHZ1IGVuIGNvIGVuc2VpZ25lbWVudCBQaHlzaXF1ZS9JbmZvVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudEJ1dDpsZXZlbFVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0YW5jaG9yaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc29yZGVyZWR2YWx1ZXNVQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50TWV0dHJlIGVuIG9ldXZyZSB1biBjb2RlIHBpbG90YW50IGxlcyBHUElPIGVuIGxhbmdhZ2UgQywgcG91ciBsZXMgcHJvamV0c1VBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRQdWxsIHVwLCBwdWxsIGRvd25VQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50aW50ZXJydXB0aW9uIFNJR0lOVFVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRSw6lwZXJ0b2lyZSBkdSB0cmF2YWlsOmxldmVsVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRhbmNob3Jpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudH4vV29ya3MvUlBJXzNkcm9wQ2FwVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudEluc3RhbGxhdGlvbiBzdXIgUlBJIChub3JtYWxlbWVudCBkw6lqw6AgZmFpdClsZXZlbFVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0YW5jaG9yaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRzdWRvIGFwdCB1cGRhdGUKc3VkbyBhcHQgaW5zdGFsbCBncGlvZCBsaWJncGlvZC1kZXYgbGliZ3Bpb2QtZG9jVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzb3BhY2l0eXRhZ05hbWVjbGFzc05hbWVVQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50U29ydGllIEdQSU8xNyBldCBMRUQgUk9VR0VsZXZlbFVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0YW5jaG9yaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRvbiByZXByZW5kIGxlIG3Dqm1lIG1vbnRhZ2UsIG9uIG5lIGNoYW5nZSBwYXMgdW5lIMOpcXVpcGUgcXVpIGdhZ25lIWRyb3BDYXBVQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXN1cmxhbHRjYXB0aW9uaHJlZmlkc2l6ZVNsdWdsaW5rRGVzdGluYXRpb25VQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50csOpcGVydG9pcmU6IGJsaW5rICwgY29kZTogYmxpbmsuY2Ryb3BDYXBVQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50bGFuZ3VhZ2V0aGVtZWhpZ2hsaWdodGxpbmVudW1iZXJzbGluZW9mZnNldHRpdGxlZ3JvdXBVQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50U2Fpc2lyIGxlIGNvZGUgZXQgY29tcGlsZXIgZXQgdGVzdGVybGV2ZWxVQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGFuY2hvcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50YXR0ZW50aW9uIDogPHN0cm9uZz48Y29kZT4tbGdwaW9kPC9jb2RlPjwvc3Ryb25nPiZuYnNwO2VzdCBsJ29wdGlvbiBjb3JyZWN0ZSBwb3VyIGxpZXIgKGxpbmtlcikgdm90cmUgcHJvZ3JhbW1lIEMgYXZlYyBsYSBiaWJsaW90aMOocXVlJm5ic3A7PHN0cm9uZz5saWJncGlvZDwvc3Ryb25nPi5kcm9wQ2FwVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudGdjYyAtbyBibGluayBibGluay5jIC1sZ3Bpb2RVQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50VXRsaXNhdGlvbiBkdSBkZWJ1Z2dlciBnZGJsZXZlbFVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0YW5jaG9yaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRnY2MgLW8gYmxpbmsgYmxpbmsuYyAtbGdwaW9kIC1nVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudEEgcXVvaSBzZXJ0IC1nID9sZXZlbFVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0YW5jaG9yaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRVQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50ZHJvcENhcFVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRQcm9wb3NlciB1biBtb3llbiBhdmVjIGdkYiBkZSB2b2lyIHMnYWxsdW1lciBsYSBsZWQgLCBldCBzJ8OpdGVpbmRyZSBzb3VzIHZvdHJlIGNvbnRyw7RsZSBldCB2w6lyaWZpZXIgbGVzIHN0cnVjdHVyZXMgY29uY2VybmFudCBjZSBwcm9ncmFtbWUubGV2ZWxVQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGFuY2hvcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50T24gdmEgcmFqb3V0ZXIgdW5lIExFRCBzdXIgZHJvcENhcFVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRMRUQgcXVpIGFsdGVybmVsZXZlbFVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0YW5jaG9yaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRSw6lwZXJ0b2lyZTogYWx0ZXJuZSAsIGNvZGU6IGFsdGVybmUuY2Ryb3BDYXBVQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50UHLDqXNlbnRhdGlvbjpsZXZlbFVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0YW5jaG9yaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRvbiB2YSBnYXJkZXIgbGEgbGVkIHJvdWdlIHF1aSBlc3Qgc3VyIEdQSU8xNywgb24gdmEgYWpvdXRlciB1bmUgTEVEIFZlcnRlIHN1ciBHUElPMjIgYXZlYyBzYSByw6lzaXN0YW5jZSBlbiBzw6lyaWUgIWRyb3BDYXBVQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50UHJvcG9zZXIgdW4gc2Now6ltYWxldmVsVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRhbmNob3Jpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudFByb3Bvc2VyIHVuIGNvZGUgbGV2ZWxVQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGFuY2hvcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50Vm91cyBkZXZleiBzYXZvaXIgcsOpYWxpc2VyIGNlbGEgLiBMYSBzb2x1dGlvbiBlc3QgZG9ubsOpZSBzaSBiZXNvaW5kcm9wQ2FwVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzc2hvd0NvbnRlbnRzdW1tYXJ5U29sdXRpb246IGFsdGVybmUuY1VBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRsYW5ndWFnZXRoZW1laGlnaGxpZ2h0bGluZW51bWJlcnNsaW5lb2Zmc2V0dGl0bGVncm91cFVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRkcm9wQ2FwVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudFNhaXNpciAsIGNvbXBpbGVyIHRlc3RlciBsZSBjb2RlbGV2ZWxVQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGFuY2hvcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5FeHBsaXF1ZXogY29tbWVudCB1dGlsaXNlciBHREIgcG91ciBjb250csO0bGVyIGwnYWxsdW1hZ2UgZXQgbCdleHRpbmN0aW9uIGRlcyBMRUQ8L3N0cm9uZz5sZXZlbFVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0YW5jaG9yaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnREb25uZXIgbGVzIGNvbW1hbmRlcyBxdWkgcGVybWV0dGVudCBkZSByw6lhbGlzZXIgZGVzIHNvcnRpZXNsZXZlbFVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0YW5jaG9yaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRFbnRyw6llIGF2ZWMgSUxTbGV2ZWxVQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGFuY2hvcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50TW9udGFnZSAyZHJvcENhcFVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRHUElPMjcgZW4gZW50csOpZSAsIEdQSU8xNyBlbiBzb3J0aWVkcm9wQ2FwVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzdXJsYWx0Y2FwdGlvbmhyZWZpZHNpemVTbHVnbGlua0Rlc3RpbmF0aW9uVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudFLDqXBlcnRvaXJlOiBpbHNfbGVkICwgY29kZTogaWxzX2xlZC5jZHJvcENhcFVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRsYW5ndWFnZXRoZW1laGlnaGxpZ2h0bGluZW51bWJlcnNsaW5lb2Zmc2V0dGl0bGVncm91cFVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRTYWlzaXIgbGUgY29kZSBsZSBjb21waWxlciBldCBsZSB0ZXN0ZXJsZXZlbFVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0YW5jaG9yaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRQcm9wb3NlciB1biBtb3llbiBhdmVjIGdkYiBkZSBzdXJ2ZWlsbGVyIEdQSU8yNyBldCBkZSBjb250csO0bGVyIEdQSU8xN2xldmVsVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRhbmNob3Jpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudEF2ZWMgTW9uaWEgcHJvcG9zZXIgdW4gb3JnYW5pZ3JhbW1lIGV0IHNvbiBQTGxldmVsVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRhbmNob3Jpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudFLDqXNpc3RhbmNlIGRlIHJhcHBlbCBpbnRlcm5lbGV2ZWxVQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGFuY2hvcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50b24gdmEgZ2FyZGVyIGxlIG3Dqm1lIG1vbnRhZ2UgbWFpcyBvbiB2YSBsZSBzaW1wbGlmaWVyIGVuIGFqb3V0YW50IHVuIHBldSBkZSBjb2RlLmRyb3BDYXBVQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50b24gc3VwcHJpbWUgbGEgcsOpc2lzdGFuY2UgZXh0ZXJuZSAgZXQgb24gbGFpc3NlIGwnSUxTIC5kcm9wQ2FwVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudENvbW1lIGTDqWrDoCDDqXR1ZGnDqSBwcsOpY8OpZGVtbWVudCAuZHJvcENhcFVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRKdXN0aWZpZXIgY29tbWVudCBvbiBwZXV0IHN1cHByaW1lciBjZXR0ZSByw6lzaXN0YW5jZSBleHRlcm5lLmxldmVsVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRhbmNob3Jpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudGNvbW1lbnQgZmFpcmUgc2kgb24gbGEgc3VwcHJpbWUuZHJvcENhcFVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRDb2RlIEMgcHJvcG9zw6kgLCBpbHNfbGVkX3NyLmNsZXZlbFVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0YW5jaG9yaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRiZXNvaW4gZGU8YSBocmVmPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3NpZ2ludC1lbi1jLyI+IHNpZ2ludCBlbiBDPC9hPmRyb3BDYXBVQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50csOpcGVydG9pcmU6IGlsc3JlZHNyYyAsIGNvZGUgOiBpbHNfbGVkX3NyLmNkcm9wQ2FwVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudGxhbmd1YWdldGhlbWVoaWdobGlnaHRsaW5lbnVtYmVyc2xpbmVvZmZzZXR0aXRsZWdyb3VwVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudERvbm5lciBsYSBjb21tYW5kZSBxdWkgYSBwZXJtaXMgZGUgcsOpc291ZHJlIGxlIGZhaXQgZCdhdm9pciBlbmxldsOpIGxhIHJlc2lzdGFuY2UgZXh0ZXJuZWxldmVsVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRhbmNob3Jpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudEVuIHF1b2kgY2UgY29kZSBlc3QgYW3DqWxpb3LDqSBob3JtaXMgbGEgbW9kaWZpY2F0aW9uIGF2ZWMgbGEgcsOpc2lzdGFuY2UgZW4gbW9pbnMubGV2ZWxVQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGFuY2hvcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50QXZlYyBHREIgU3VydmVpbGxlciBsYSByw6lhY3Rpb24gYXUgY3RybCBjICwgZXhwbGlxdWVybGV2ZWxVQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGFuY2hvcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50c291cyBnZGIgLCBxdWFuZCBvbiBmYWl0IGN0cmwgYyAoXmMpLCAgYydlc3QgZ2RiIHF1aSByw6lwb25kICEhIGV0IHBhcyBub3RyZSBjb2RlIWRyb3BDYXBVQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50ZG9uYyBpbCBmYXV0IGRpcmUgYSBnZGIgZGUgbmUgcGFzIHLDqWFnaXIgYSBjdHJsIGMgLCBhdmVjIGxhIGNvbW1hbmRlZHJvcENhcFVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRoYW5kbGUgU0lHSU5UIG5vc3RvcCBub3ByaW50IHBhc3NVQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50Y2UgcXVpIG5vdXMgcGVybWV0dHJhIGVuc3VpdGUgZGUgbWV0dHJlIHVuIHBvaW50IGQnYXJyw6p0IGxpZ25lIDE2IHBvdXIgc+KAmWFycsOqdGVyIGRhbnMgbGEgZm9uY3Rpb24gPHN0cm9uZz52b2lkIGhhbmRsZV9zaWdpbnQoaW50IHNpZyk8L3N0cm9uZz5kcm9wQ2FwVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudGludGVycnVwdGlvbiBwcm92b3F1w6llIHBhciBsZSBjdHJsIGMgKFNJR0lOVClkcm9wQ2FwVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudEV4cGxpcXVlciBhdmVjIGdkYmxldmVsVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRhbmNob3Jpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudEF2ZWMgTW9uaWEgZG9ubmVyIGxlcyBvcmdhbmlncmFtbWVzIGV0IGxlcyBQTGxldmVsVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRhbmNob3Jpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudGRyb3BDYXBVQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50T24gdmEgdXRpbGlzZXIgbGEgPGEgaHJlZj0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9zb25kZS1udW1lcmlxdWUtc2FsZWFlLyI+c29uZGUgbnVtw6lyaXF1ZSBTQUxFQUU8L2E+bGV2ZWxVQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGFuY2hvcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50b24gdmEgdXRpbGlzZXIgbGEgc29uZGUgU0FMRUFFIHBvdXIgcmVsZXZlciBsZXMgc2lnbmF1eCBHUElPMjcgZXQgR1BJTzE3ZHJvcENhcFVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRjaDA6IEdQSU8xN2Ryb3BDYXBVQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50Y2gxOiBHUElPMjdkcm9wQ2FwVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudG5lIHBhcyBvdWJsaWVyIGRlIGJyYW5jaGVyIGxhIG1hc3NlIChHTkQpZHJvcENhcFVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRkcm9wQ2FwVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudENvZGUgYmxpbmsgZ3BpbzE3LmMgIChhdmVjIGN0cmwgYylsZXZlbFVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0YW5jaG9yaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRsYW5ndWFnZXRoZW1laGlnaGxpZ2h0bGluZW51bWJlcnNsaW5lb2Zmc2V0dGl0bGVncm91cFVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NzdGF0ZXNhdmVkQXRzdGF0ZXNhdmVkQnkFBwgECAQIBggFDwgHnaYECAcIBggOCA4IC0gBBBoJCAYIBw8ECkMABwQCBQYIDwUOSgALDAYXUAARUgALERMPCwgHDwQKBxAHDkoACwwGF1AAEVIACxETDwsIBw8ECkMABwQCBQYLCA8FDkoACwwGF1AAEVIACxETDwsIBw8ECggWBw5KAAsMBhdQABFSAAsREw8LCAcPBAoHCgUOSgALDAYXUAARUgALERMPBgsIBw8ECgcGDkoACwwGF1AAEVIACxETDwsIBw8ECgePAQ5KAAsMBhdQABFSAAsREw8LCAcPBAoHggIOSgALDAYXUAARUgALERMPCwgHDwQKB5kCDkoACwwGF1AAEVIACxETDwsIBw8ECgehAQ5KAAsMBhdQABFSAAsREw8LCAcPBAoHhQEOSgALDAYXUAARUgALERMPCwgHDwQKB4gBDkoACwwGF1AAEVIACxETDwsIBw8ECgeJAg5KAAsMBhdQABFSAAsREw8LCAcPBAoHBAUOSgALDAYXUAARUgALERMPBgsIBw8ECgcGDkoACwwGF1AAEVIACxETDwsIBw8ECgeJAQ5KAAsMBhdQABFSAAsREw8LCAcPBAoHEg5KAAsMBhdQABFSAAsREw8LCAcPBAoHEw5KAAsMBhdQABFSAAsREw8LCAcPBAoHFgUOSgALDAYXUAARUgALERMPBgsIBw8ECgcNBw5KAAsMBhdQABFSAAsREw8LCAcPBAoHLAUOSgALDAYXUAARUgALERMPBgsIBw8ECgeAAQ5KAAsMBhdQABFSAAsREw8LCAcPBApHAAkOSgALDAYXUAARUgALERMPCwgHDwQKBxoFDkoACwwGF1AAEVIACxETDwYLCAcPBAoHggEHDkoACwwGF1AAEVIACxETDwsIBw8ECkMABwQCCA8OSgALDAYXUAARUgALERMPCwgHDwQKByEHDkoACwwGF1AAEVIACxETDwsIBw8ECgcIBQkLCkUADkoACwwGF1AAEVIACxETDwsIBw8ECgckBQ5KAAsMBhdQABFSAAsREw8GCwgHDwQKB6YCBw5KAAsMBhdQABFSAAsREw8LCAcPBAoHHA5KAAsMBhdQABFSAAsREw8LCAcPBAoHGgUOSgALDAYXUAARUgALERMPBgsIBw8ECgcfDkoACwwGF1AAEVIACxETDwsIBw8ECgcQBQ5KAAsMBhdQABFSAAsREw8GCwgHDwQKBw5KAAsMBhdQABFSAAsREw8LCAcPBApHAA5KAAsMBhdQABFSAAsREw8LCAcPBAoHiwIFDkoACwwGF1AAEVIACxETDwYLCAcPBAoHGwcOSgALDAYXUAARUgALERMPCwgHDwQKBw8FDkoACwwGF1AAEVIACxETDwYLCAcPBAoHJQcOSgALDAYXUAARUgALERMPCwgHDwQKBw0FDkoACwwGF1AAEVIACxETDwYLCAcPBAoHsgEHDkoACwwGF1AAEVIACxETDwsIBw8ECgcSBQ5KAAsMBhdQABFSAAsREw8GCwgHDwQKBxEFDkoACwwGF1AAEVIACxETDwYLCAcPBAoHggEHDkoACwwGF1AAEVIACxETDwsIBw8ECgsHEw5KAAsMBhdQABFSAAsREw8LCAcPBAoHCAUJCwpFAA5KAAsMBhdQABFSAAsREw8LCAcPBApHAA5KAAsMBhdQABFSAAsREw8LCAcPBAoHIAUOSgALDAYXUAARUgALERMPBgsIBw8ECgehAQUOSgALDAYXUAARUgALERMPBgsIBw8ECgc7BQ5KAAsMBhdQABFSAAsREw8GCwgHDwQKBw8FDkoACwwGF1AAEVIACxETDwYLCAcPBAoHCQcOSgALDAYXUAARUgALERMPCwgHDwQKByMHDkoACwwGF1AAEVIACxETDwsIBw8ECkMABwQCCA8OSgALDAYXUAARUgALERMPCwgHDwQKByUHDkoACwwGF1AAEVIACxETDwsIBw8ECgcIBQkLCkUADkoACwwGF1AAEVIACxETDwsIBw8ECgcnBQ5KAAsMBhdQABFSAAsREw8GCwgHDwQKB4YBBQ5KAAsMBhdQABFSAAsREw8GCwgHDwQKBy0FDkoACwwGF1AAEVIACxETDwYLCAcPBAoHHAUOSgALDAYXUAARUgALERMPBgsIBw8ECgeRAQcOSgALDAYXUAARUgALERMPCwgHDwQKBzcHDkoACwwGF1AAEVIACxETDwsIBw8ECgcgBw5KAAsMBhdQABFSAAsREw8LCAcPBAoHPQUOSgALDAYXUAARUgALERMPBgsIBw8ECgcgBw5KAAsMBhdQABFSAAsREw8LCAcPBAoHHQUOSgALDAYXUAARUgALERMPBgsIBw8ECgeKAQcOSgALDAYXUAARUgALERMPCwgHDwQKBysHDkoACwwGF1AAEVIACxETDwsIBw8ECgcIBQkLCkUADkoACwwGF1AAEVIACxETDwsIBw8ECgeYAQUOSgALDAYXUAARUgALERMPBgsIBw8ECgeQAQUOSgALDAYXUAARUgALERMPBgsIBw8ECgc1BQ5KAAsMBhdQABFSAAsREw8GCwgHDwQKB5EBBw5KAAsMBhdQABFSAAsREw8LCAcPBAoHhAEHDkoACwwGF1AAEVIACxETDwsIBw8ECgchDkoACwwGF1AAEVIACxETDwsIBw8ECgeOAgcOSgALDAYXUAARUgALERMPCwgHDwQKBy0HDkoACwwGF1AAEVIACxETDwsIBw8ECgcSBQ5KAAsMBhdQABFSAAsREw8GCwgHDwQKBy0FDkoACwwGF1AAEVIACxETDwYLCAcPBApHAA5KAAsMBhdQABFSAAsREw8LCAcPBAoHqAEFDkoACwwGF1AAEVIACxETDwYLCAcPBAoHiAEHDkoACwwGF1AAEVIACxETDwsIBw8ECgcLBw5KAAsMBhdQABFSAAsREw8LCAcPBAoHCwcOSgALDAYXUAARUgALERMPCwgHDwQKBykHDkoACwwGF1AAEVIACxETDwsIBw8ECkcADkoACwwGF1AAEVIACxETDwsIBw8ECgciBQ5KAAsMBhdQABFSAAsREw8GCwgHDwQKBwgFCQsKRQAOSgALDAYXUAARUgALERMPCwUHBQcSAQQAAAEAAAABBgABAQAA7BEB3gJCAQEAQQACAEEAAgBBAAIAQQAAQQACAEEAAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQAAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAEEAAgBBAAIAQQACAEEAAgBBAABBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAABBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAANBrA8B1hIAfQF3EzIwMjUtMDctMjlUMDg6MjY6NDR3FnJwaV8zLWxhbmdhZ2UtYy1ldC1ycGl3B3B1Ymxpc2h9AX0AdwZjbG9zZWR3BmNsb3NlZHcAdwB3AHckMTJiNTE3MDUtMmJjOC00YmM3LTg4ODYtYTE3NTc1Y2FmMzJkeHenAjxmaWd1cmUgY2xhc3M9IndwLWJsb2NrLWltYWdlIGFsaWduY2VudGVyIHNpemUtZnVsbCBpcy1yZXNpemVkIj48YSBocmVmPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzExL1Jhc3BiZXJyeS5qcGVnIj48aW1nIHNyYz0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8xMS9SYXNwYmVycnkuanBlZyIgYWx0PSIiIGNsYXNzPSJ3cC1pbWFnZS00OTIwIiBzdHlsZT0id2lkdGg6ODRweDtoZWlnaHQ6YXV0byIvPjwvYT48L2ZpZ3VyZT53CmNvcmUvaW1hZ2V3Q2h0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvd3AtY29udGVudC91cGxvYWRzLzIwMjUvMTEvUmFzcGJlcnJ5LmpwZWd3AHdDaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8xMS9SYXNwYmVycnkuanBlZ324THcEODRweHcEYXV0b3cEZnVsbHcFbWVkaWF3BmNlbnRlcnl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AdyQ0MWRmYmIxZi04MjhlLTQ3YjMtYjU1Yy04MzFkYjZlNmI5NjF4dxk8cD7wn5WSIDogMyBoIG1heGltdW08L3A+dw5jb3JlL3BhcmFncmFwaHl5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckNjQ5OTNmOGMtYzBkNi00NGMxLThmYWUtNWYwMWNlZTJhNDgweHfCAjxmaWd1cmUgY2xhc3M9IndwLWJsb2NrLWltYWdlIGFsaWducmlnaHQgc2l6ZS1mdWxsIGlzLXJlc2l6ZWQiPjxhIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvd3AtY29udGVudC91cGxvYWRzLzIwMjUvMTEvdHV4X2NvZGUucG5nIj48aW1nIHNyYz0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8xMS90dXhfY29kZS5wbmciIGFsdD0iIiBjbGFzcz0id3AtaW1hZ2UtNDkzMSIgc3R5bGU9ImFzcGVjdC1yYXRpbzoxLjUwMjUyNzYzMjU5MzYwODt3aWR0aDoyMTlweDtoZWlnaHQ6YXV0byIvPjwvYT48L2ZpZ3VyZT53CmNvcmUvaW1hZ2V3QWh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvd3AtY29udGVudC91cGxvYWRzLzIwMjUvMTEvdHV4X2NvZGUucG5ndwB3QWh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvd3AtY29udGVudC91cGxvYWRzLzIwMjUvMTEvdHV4X2NvZGUucG5nfYNNdwUyMTlweHcEYXV0b3cRMS41MDI1Mjc2MzI1OTM2MDh3BGZ1bGx3BW1lZGlhdwVyaWdodHl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AdyQ1MGRmMjI3Zi0yMTlhLTQwNWEtYjc4Mi0yMTcyZDc2ZDIzY2V4d9YuPG5hdiBjbGFzcz0id3AtYmxvY2stdGFibGUtb2YtY29udGVudHMiPjxvbD48bGk+PGEgY2xhc3M9IndwLWJsb2NrLXRhYmxlLW9mLWNvbnRlbnRzX19lbnRyeSIgaHJlZj0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNwcmVyZXF1aXMiPlByw6lyZXF1aXM6PC9hPjwvbGk+PGxpPjxhIGNsYXNzPSJ3cC1ibG9jay10YWJsZS1vZi1jb250ZW50c19fZW50cnkiIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jYnV0Ij5CdXQ6PC9hPjwvbGk+PGxpPjxhIGNsYXNzPSJ3cC1ibG9jay10YWJsZS1vZi1jb250ZW50c19fZW50cnkiIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jcmVwZXJ0b2lyZS1kdS10cmF2YWlsIj5Sw6lwZXJ0b2lyZSBkdSB0cmF2YWlsOjwvYT48L2xpPjxsaT48YSBjbGFzcz0id3AtYmxvY2stdGFibGUtb2YtY29udGVudHNfX2VudHJ5IiBocmVmPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI2luc3RhbGxhdGlvbi1zdXItcnBpLW5vcm1hbGVtZW50LWRlamEtZmFpdCI+SW5zdGFsbGF0aW9uIHN1ciBSUEkgKG5vcm1hbGVtZW50IGTDqWrDoCBmYWl0KTwvYT48L2xpPjxsaT48YSBjbGFzcz0id3AtYmxvY2stdGFibGUtb2YtY29udGVudHNfX2VudHJ5IiBocmVmPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI3NvcnRpZS1ncGlvMTctZXQtbGVkLXJvdWdlIj5Tb3J0aWUgR1BJTzE3IGV0IExFRCBST1VHRTwvYT48L2xpPjxsaT48YSBjbGFzcz0id3AtYmxvY2stdGFibGUtb2YtY29udGVudHNfX2VudHJ5IiBocmVmPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI3NhaXNpci1sZS1jb2RlLWV0LWNvbXBpbGVyLWV0LXRlc3RlciI+U2Fpc2lyIGxlIGNvZGUgZXQgY29tcGlsZXIgZXQgdGVzdGVyPC9hPjwvbGk+PGxpPjxhIGNsYXNzPSJ3cC1ibG9jay10YWJsZS1vZi1jb250ZW50c19fZW50cnkiIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jdXRsaXNhdGlvbi1kdS1kZWJ1Z2dlci1nZGIiPlV0bGlzYXRpb24gZHUgZGVidWdnZXIgZ2RiPC9hPjxvbD48bGk+PGEgY2xhc3M9IndwLWJsb2NrLXRhYmxlLW9mLWNvbnRlbnRzX19lbnRyeSIgaHJlZj0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNhLXF1b2ktc2VydC1nIj5BIHF1b2kgc2VydCAtZyA\/PC9hPjwvbGk+PGxpPjxhIGNsYXNzPSJ3cC1ibG9jay10YWJsZS1vZi1jb250ZW50c19fZW50cnkiIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jcHJvcG9zZXItdW4tbW95ZW4tYXZlYy1nZGItZGUtdm9pci1zLWFsbHVtZXItbGEtbGVkLWV0LXMtZXRlaW5kcmUtc291cy12b3RyZS1jb250cm9sZS1ldC12ZXJpZmllci1sZXMtc3RydWN0dXJlcy1jb25jZXJuYW50LWNlLXByb2dyYW1tZSI+UHJvcG9zZXIgdW4gbW95ZW4gYXZlYyBnZGIgZGUgdm9pciBzJ2FsbHVtZXIgbGEgbGVkICwgZXQgcyfDqXRlaW5kcmUgc291cyB2b3RyZSBjb250csO0bGUgZXQgdsOpcmlmaWVyIGxlcyBzdHJ1Y3R1cmVzIGNvbmNlcm5hbnQgY2UgcHJvZ3JhbW1lLjwvYT48L2xpPjwvb2w+PC9saT48bGk+PGEgY2xhc3M9IndwLWJsb2NrLXRhYmxlLW9mLWNvbnRlbnRzX19lbnRyeSIgaHJlZj0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNsZWQtcXVpLWFsdGVybmUiPkxFRCBxdWkgYWx0ZXJuZTwvYT48b2w+PGxpPjxhIGNsYXNzPSJ3cC1ibG9jay10YWJsZS1vZi1jb250ZW50c19fZW50cnkiIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jcHJlc2VudGF0aW9uIj5QcsOpc2VudGF0aW9uOjwvYT48L2xpPjxsaT48YSBjbGFzcz0id3AtYmxvY2stdGFibGUtb2YtY29udGVudHNfX2VudHJ5IiBocmVmPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI3Byb3Bvc2VyLXVuLXNjaGVtYSI+UHJvcG9zZXIgdW4gc2Now6ltYTwvYT48L2xpPjxsaT48YSBjbGFzcz0id3AtYmxvY2stdGFibGUtb2YtY29udGVudHNfX2VudHJ5IiBocmVmPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI3Byb3Bvc2VyLXVuLWNvZGUiPlByb3Bvc2VyIHVuIGNvZGUgPC9hPjwvbGk+PGxpPjxhIGNsYXNzPSJ3cC1ibG9jay10YWJsZS1vZi1jb250ZW50c19fZW50cnkiIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jc2Fpc2lyLWNvbXBpbGVyLXRlc3Rlci1sZS1jb2RlIj5TYWlzaXIgLCBjb21waWxlciB0ZXN0ZXIgbGUgY29kZTwvYT48L2xpPjxsaT48YSBjbGFzcz0id3AtYmxvY2stdGFibGUtb2YtY29udGVudHNfX2VudHJ5IiBocmVmPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI2V4cGxpcXVlei1jb21tZW50LXV0aWxpc2VyLWdkYi1wb3VyLWNvbnRyb2xlci1sLWFsbHVtYWdlLWV0LWwtZXh0aW5jdGlvbi1kZXMtbGVkIj5FeHBsaXF1ZXogY29tbWVudCB1dGlsaXNlciBHREIgcG91ciBjb250csO0bGVyIGwnYWxsdW1hZ2UgZXQgbCdleHRpbmN0aW9uIGRlcyBMRUQ8L2E+PC9saT48bGk+PGEgY2xhc3M9IndwLWJsb2NrLXRhYmxlLW9mLWNvbnRlbnRzX19lbnRyeSIgaHJlZj0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNkb25uZXItbGVzLWNvbW1hbmRlcy1xdWktcGVybWV0dGVudC1kZS1yZWFsaXNlci1kZXMtc29ydGllcyI+RG9ubmVyIGxlcyBjb21tYW5kZXMgcXVpIHBlcm1ldHRlbnQgZGUgcsOpYWxpc2VyIGRlcyBzb3J0aWVzPC9hPjwvbGk+PC9vbD48L2xpPjxsaT48YSBjbGFzcz0id3AtYmxvY2stdGFibGUtb2YtY29udGVudHNfX2VudHJ5IiBocmVmPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI2VudHJlZS1hdmVjLWlscyI+RW50csOpZSBhdmVjIElMUzwvYT48b2w+PGxpPjxhIGNsYXNzPSJ3cC1ibG9jay10YWJsZS1vZi1jb250ZW50c19fZW50cnkiIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jc2Fpc2lyLWxlLWNvZGUtbGUtY29tcGlsZXItZXQtbGUtdGVzdGVyIj5TYWlzaXIgbGUgY29kZSBsZSBjb21waWxlciBldCBsZSB0ZXN0ZXI8L2E+PC9saT48bGk+PGEgY2xhc3M9IndwLWJsb2NrLXRhYmxlLW9mLWNvbnRlbnRzX19lbnRyeSIgaHJlZj0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNwcm9wb3Nlci11bi1tb3llbi1hdmVjLWdkYi1kZS1zdXJ2ZWlsbGVyLWdwaW8yNy1ldC1kZS1jb250cm9sZXItZ3BpbzE3Ij5Qcm9wb3NlciB1biBtb3llbiBhdmVjIGdkYiBkZSBzdXJ2ZWlsbGVyIEdQSU8yNyBldCBkZSBjb250csO0bGVyIEdQSU8xNzwvYT48L2xpPjxsaT48YSBjbGFzcz0id3AtYmxvY2stdGFibGUtb2YtY29udGVudHNfX2VudHJ5IiBocmVmPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI2F2ZWMtbW9uaWEtcHJvcG9zZXItdW4tb3JnYW5pZ3JhbW1lLWV0LXNvbi1wbCI+QXZlYyBNb25pYSBwcm9wb3NlciB1biBvcmdhbmlncmFtbWUgZXQgc29uIFBMPC9hPjwvbGk+PC9vbD48L2xpPjxsaT48YSBjbGFzcz0id3AtYmxvY2stdGFibGUtb2YtY29udGVudHNfX2VudHJ5IiBocmVmPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI3Jlc2lzdGFuY2UtZGUtcmFwcGVsLWludGVybmUiPlLDqXNpc3RhbmNlIGRlIHJhcHBlbCBpbnRlcm5lPC9hPjxvbD48bGk+PGEgY2xhc3M9IndwLWJsb2NrLXRhYmxlLW9mLWNvbnRlbnRzX19lbnRyeSIgaHJlZj0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNqdXN0aWZpZXItY29tbWVudC1vbi1wZXV0LXN1cHByaW1lci1jZXR0ZS1yZXNpc3RhbmNlLWV4dGVybmUiPkp1c3RpZmllciBjb21tZW50IG9uIHBldXQgc3VwcHJpbWVyIGNldHRlIHLDqXNpc3RhbmNlIGV4dGVybmUuPC9hPjwvbGk+PGxpPjxhIGNsYXNzPSJ3cC1ibG9jay10YWJsZS1vZi1jb250ZW50c19fZW50cnkiIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jY29kZS1jLXByb3Bvc2UtaWxzLWxlZC1zci1jIj5Db2RlIEMgcHJvcG9zw6kgLCBpbHNfbGVkX3NyLmM8L2E+PC9saT48bGk+PGEgY2xhc3M9IndwLWJsb2NrLXRhYmxlLW9mLWNvbnRlbnRzX19lbnRyeSIgaHJlZj0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNkb25uZXItbGEtY29tbWFuZGUtcXVpLWEtcGVybWlzLWRlLXJlc291ZHJlLWxlLWZhaXQtZC1hdm9pci1lbmxldmUtbGEtcmVzaXN0YW5jZS1leHRlcm5lIj5Eb25uZXIgbGEgY29tbWFuZGUgcXVpIGEgcGVybWlzIGRlIHLDqXNvdWRyZSBsZSBmYWl0IGQnYXZvaXIgZW5sZXbDqSBsYSByZXNpc3RhbmNlIGV4dGVybmU8L2E+PC9saT48bGk+PGEgY2xhc3M9IndwLWJsb2NrLXRhYmxlLW9mLWNvbnRlbnRzX19lbnRyeSIgaHJlZj0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNlbi1xdW9pLWNlLWNvZGUtZXN0LWFtZWxpb3JlLWhvcm1pcy1sYS1tb2RpZmljYXRpb24tYXZlYy1sYS1yZXNpc3RhbmNlLWVuLW1vaW5zIj5FbiBxdW9pIGNlIGNvZGUgZXN0IGFtw6lsaW9yw6kgaG9ybWlzIGxhIG1vZGlmaWNhdGlvbiBhdmVjIGxhIHLDqXNpc3RhbmNlIGVuIG1vaW5zLjwvYT48L2xpPjxsaT48YSBjbGFzcz0id3AtYmxvY2stdGFibGUtb2YtY29udGVudHNfX2VudHJ5IiBocmVmPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI2F2ZWMtZ2RiLXN1cnZlaWxsZXItbGEtcmVhY3Rpb24tYXUtY3RybC1jLWV4cGxpcXVlciI+QXZlYyBHREIgU3VydmVpbGxlciBsYSByw6lhY3Rpb24gYXUgY3RybCBjICwgZXhwbGlxdWVyPC9hPjwvbGk+PGxpPjxhIGNsYXNzPSJ3cC1ibG9jay10YWJsZS1vZi1jb250ZW50c19fZW50cnkiIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jZXhwbGlxdWVyLWF2ZWMtZ2RiIj5FeHBsaXF1ZXIgYXZlYyBnZGI8L2E+PC9saT48bGk+PGEgY2xhc3M9IndwLWJsb2NrLXRhYmxlLW9mLWNvbnRlbnRzX19lbnRyeSIgaHJlZj0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNhdmVjLW1vbmlhLWRvbm5lci1sZXMtb3JnYW5pZ3JhbW1lcy1ldC1sZXMtcGwiPkF2ZWMgTW9uaWEgZG9ubmVyIGxlcyBvcmdhbmlncmFtbWVzIGV0IGxlcyBQTDwvYT48L2xpPjwvb2w+PC9saT48bGk+PGEgY2xhc3M9IndwLWJsb2NrLXRhYmxlLW9mLWNvbnRlbnRzX19lbnRyeSIgaHJlZj0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNvbi12YS11dGlsaXNlci1sYS1zb25kZS1udW1lcmlxdWUtc2FsZWFlIj5PbiB2YSB1dGlsaXNlciBsYSBzb25kZSBudW3DqXJpcXVlIFNBTEVBRTwvYT48L2xpPjxsaT48YSBjbGFzcz0id3AtYmxvY2stdGFibGUtb2YtY29udGVudHNfX2VudHJ5IiBocmVmPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI2NvZGUtYmxpbmstZ3BpbzE3LWMtYXZlYy1jdHJsLWMiPkNvZGUgYmxpbmsgZ3BpbzE3LmMgIChhdmVjIGN0cmwgYyk8L2E+PC9saT48L29sPjwvbmF2PncWY29yZS90YWJsZS1vZi1jb250ZW50c3UedgMHY29udGVudHcLUHLDqXJlcXVpczoFbGV2ZWx9AgRsaW5rdztodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI3ByZXJlcXVpc3YDB2NvbnRlbnR3BEJ1dDoFbGV2ZWx9AgRsaW5rdzVodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI2J1dHYDB2NvbnRlbnR3F1LDqXBlcnRvaXJlIGR1IHRyYXZhaWw6BWxldmVsfQIEbGlua3dHaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNyZXBlcnRvaXJlLWR1LXRyYXZhaWx2Awdjb250ZW50dy5JbnN0YWxsYXRpb24gc3VyIFJQSSAobm9ybWFsZW1lbnQgZMOpasOgIGZhaXQpBWxldmVsfQIEbGlua3dcaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNpbnN0YWxsYXRpb24tc3VyLXJwaS1ub3JtYWxlbWVudC1kZWphLWZhaXR2Awdjb250ZW50dxpTb3J0aWUgR1BJTzE3IGV0IExFRCBST1VHRQVsZXZlbH0CBGxpbmt3TGh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jc29ydGllLWdwaW8xNy1ldC1sZWQtcm91Z2V2Awdjb250ZW50dyRTYWlzaXIgbGUgY29kZSBldCBjb21waWxlciBldCB0ZXN0ZXIFbGV2ZWx9AgRsaW5rd1ZodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI3NhaXNpci1sZS1jb2RlLWV0LWNvbXBpbGVyLWV0LXRlc3RlcnYDB2NvbnRlbnR3GlV0bGlzYXRpb24gZHUgZGVidWdnZXIgZ2RiBWxldmVsfQIEbGlua3dMaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyN1dGxpc2F0aW9uLWR1LWRlYnVnZ2VyLWdkYnYDB2NvbnRlbnR3EEEgcXVvaSBzZXJ0IC1nID8FbGV2ZWx9AwRsaW5rdz9odHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI2EtcXVvaS1zZXJ0LWd2Awdjb250ZW50d44BUHJvcG9zZXIgdW4gbW95ZW4gYXZlYyBnZGIgZGUgdm9pciBzJ2FsbHVtZXIgbGEgbGVkICwgZXQgcyfDqXRlaW5kcmUgc291cyB2b3RyZSBjb250csO0bGUgZXQgdsOpcmlmaWVyIGxlcyBzdHJ1Y3R1cmVzIGNvbmNlcm5hbnQgY2UgcHJvZ3JhbW1lLgVsZXZlbH0DBGxpbmt3ugFodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI3Byb3Bvc2VyLXVuLW1veWVuLWF2ZWMtZ2RiLWRlLXZvaXItcy1hbGx1bWVyLWxhLWxlZC1ldC1zLWV0ZWluZHJlLXNvdXMtdm90cmUtY29udHJvbGUtZXQtdmVyaWZpZXItbGVzLXN0cnVjdHVyZXMtY29uY2VybmFudC1jZS1wcm9ncmFtbWV2Awdjb250ZW50dw9MRUQgcXVpIGFsdGVybmUFbGV2ZWx9AgRsaW5rd0FodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI2xlZC1xdWktYWx0ZXJuZXYDB2NvbnRlbnR3DlByw6lzZW50YXRpb246BWxldmVsfQMEbGlua3c+aHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNwcmVzZW50YXRpb252Awdjb250ZW50dxNQcm9wb3NlciB1biBzY2jDqW1hBWxldmVsfQMEbGlua3dEaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNwcm9wb3Nlci11bi1zY2hlbWF2Awdjb250ZW50dxFQcm9wb3NlciB1biBjb2RlIAVsZXZlbH0DBGxpbmt3Qmh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jcHJvcG9zZXItdW4tY29kZXYDB2NvbnRlbnR3IFNhaXNpciAsIGNvbXBpbGVyIHRlc3RlciBsZSBjb2RlBWxldmVsfQMEbGlua3dQaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNzYWlzaXItY29tcGlsZXItdGVzdGVyLWxlLWNvZGV2Awdjb250ZW50d1FFeHBsaXF1ZXogY29tbWVudCB1dGlsaXNlciBHREIgcG91ciBjb250csO0bGVyIGwnYWxsdW1hZ2UgZXQgbCdleHRpbmN0aW9uIGRlcyBMRUQFbGV2ZWx9AwRsaW5rd4IBaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNleHBsaXF1ZXotY29tbWVudC11dGlsaXNlci1nZGItcG91ci1jb250cm9sZXItbC1hbGx1bWFnZS1ldC1sLWV4dGluY3Rpb24tZGVzLWxlZHYDB2NvbnRlbnR3PERvbm5lciBsZXMgY29tbWFuZGVzIHF1aSBwZXJtZXR0ZW50IGRlIHLDqWFsaXNlciBkZXMgc29ydGllcwVsZXZlbH0DBGxpbmt3bWh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jZG9ubmVyLWxlcy1jb21tYW5kZXMtcXVpLXBlcm1ldHRlbnQtZGUtcmVhbGlzZXItZGVzLXNvcnRpZXN2Awdjb250ZW50dxBFbnRyw6llIGF2ZWMgSUxTBWxldmVsfQIEbGlua3dBaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNlbnRyZWUtYXZlYy1pbHN2Awdjb250ZW50dydTYWlzaXIgbGUgY29kZSBsZSBjb21waWxlciBldCBsZSB0ZXN0ZXIFbGV2ZWx9AwRsaW5rd1lodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI3NhaXNpci1sZS1jb2RlLWxlLWNvbXBpbGVyLWV0LWxlLXRlc3RlcnYDB2NvbnRlbnR3R1Byb3Bvc2VyIHVuIG1veWVuIGF2ZWMgZ2RiIGRlIHN1cnZlaWxsZXIgR1BJTzI3IGV0IGRlIGNvbnRyw7RsZXIgR1BJTzE3BWxldmVsfQMEbGlua3d4aHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNwcm9wb3Nlci11bi1tb3llbi1hdmVjLWdkYi1kZS1zdXJ2ZWlsbGVyLWdwaW8yNy1ldC1kZS1jb250cm9sZXItZ3BpbzE3dgMHY29udGVudHctQXZlYyBNb25pYSBwcm9wb3NlciB1biBvcmdhbmlncmFtbWUgZXQgc29uIFBMBWxldmVsfQMEbGlua3dfaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNhdmVjLW1vbmlhLXByb3Bvc2VyLXVuLW9yZ2FuaWdyYW1tZS1ldC1zb24tcGx2Awdjb250ZW50dx1Sw6lzaXN0YW5jZSBkZSByYXBwZWwgaW50ZXJuZQVsZXZlbH0CBGxpbmt3Tmh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jcmVzaXN0YW5jZS1kZS1yYXBwZWwtaW50ZXJuZXYDB2NvbnRlbnR3Pkp1c3RpZmllciBjb21tZW50IG9uIHBldXQgc3VwcHJpbWVyIGNldHRlIHLDqXNpc3RhbmNlIGV4dGVybmUuBWxldmVsfQMEbGlua3duaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNqdXN0aWZpZXItY29tbWVudC1vbi1wZXV0LXN1cHByaW1lci1jZXR0ZS1yZXNpc3RhbmNlLWV4dGVybmV2Awdjb250ZW50dx5Db2RlIEMgcHJvcG9zw6kgLCBpbHNfbGVkX3NyLmMFbGV2ZWx9AwRsaW5rd01odHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI2NvZGUtYy1wcm9wb3NlLWlscy1sZWQtc3ItY3YDB2NvbnRlbnR3WkRvbm5lciBsYSBjb21tYW5kZSBxdWkgYSBwZXJtaXMgZGUgcsOpc291ZHJlIGxlIGZhaXQgZCdhdm9pciBlbmxldsOpIGxhIHJlc2lzdGFuY2UgZXh0ZXJuZQVsZXZlbH0DBGxpbmt3igFodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI2Rvbm5lci1sYS1jb21tYW5kZS1xdWktYS1wZXJtaXMtZGUtcmVzb3VkcmUtbGUtZmFpdC1kLWF2b2lyLWVubGV2ZS1sYS1yZXNpc3RhbmNlLWV4dGVybmV2Awdjb250ZW50d1NFbiBxdW9pIGNlIGNvZGUgZXN0IGFtw6lsaW9yw6kgaG9ybWlzIGxhIG1vZGlmaWNhdGlvbiBhdmVjIGxhIHLDqXNpc3RhbmNlIGVuIG1vaW5zLgVsZXZlbH0DBGxpbmt3gQFodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI2VuLXF1b2ktY2UtY29kZS1lc3QtYW1lbGlvcmUtaG9ybWlzLWxhLW1vZGlmaWNhdGlvbi1hdmVjLWxhLXJlc2lzdGFuY2UtZW4tbW9pbnN2Awdjb250ZW50dzZBdmVjIEdEQiBTdXJ2ZWlsbGVyIGxhIHLDqWFjdGlvbiBhdSBjdHJsIGMgLCBleHBsaXF1ZXIFbGV2ZWx9AwRsaW5rd2VodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI2F2ZWMtZ2RiLXN1cnZlaWxsZXItbGEtcmVhY3Rpb24tYXUtY3RybC1jLWV4cGxpcXVlcnYDB2NvbnRlbnR3EkV4cGxpcXVlciBhdmVjIGdkYgVsZXZlbH0DBGxpbmt3RGh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jZXhwbGlxdWVyLWF2ZWMtZ2RidgMHY29udGVudHctQXZlYyBNb25pYSBkb25uZXIgbGVzIG9yZ2FuaWdyYW1tZXMgZXQgbGVzIFBMBWxldmVsfQMEbGlua3dfaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMy1sYW5nYWdlLWMtZXQtcnBpLyNhdmVjLW1vbmlhLWRvbm5lci1sZXMtb3JnYW5pZ3JhbW1lcy1ldC1sZXMtcGx2Awdjb250ZW50dylPbiB2YSB1dGlsaXNlciBsYSBzb25kZSBudW3DqXJpcXVlIFNBTEVBRQVsZXZlbH0CBGxpbmt3Wmh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzMtbGFuZ2FnZS1jLWV0LXJwaS8jb24tdmEtdXRpbGlzZXItbGEtc29uZGUtbnVtZXJpcXVlLXNhbGVhZXYDB2NvbnRlbnR3IkNvZGUgYmxpbmsgZ3BpbzE3LmMgIChhdmVjIGN0cmwgYykFbGV2ZWx9AgRsaW5rd1FodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaV8zLWxhbmdhZ2UtYy1ldC1ycGkvI2NvZGUtYmxpbmstZ3BpbzE3LWMtYXZlYy1jdHJsLWN5eHl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AdyRlMjM0OTY3ZS0wMzI4LTQ0ODEtYTJkMS01YjU4ZmNjYmY0YjF4dzw8aDIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciIGlkPSJwcmVyZXF1aXMiPlByw6lyZXF1aXM6PC9oMj53DGNvcmUvaGVhZGluZ30CeXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3CXByZXJlcXVpc3ckMDExMjg0Y2UtZTQyOS00M2FmLWI0ZTktOWNiNTFjYjMzYTkzeHcrPHVsIGNsYXNzPSJ3cC1ibG9jay1saXN0Ij4KCgoKCgoKCgoKCgo8L3VsPncJY29yZS9saXN0eXcAeXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JDJmM2UwN2I2LTYxOGEtNDU5NC1hNTBlLWViYmNhNjVjYzhmZHh3VDxsaT5jb3Vyc8KgPGEgaHJlZj0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9yYXNwYmVycnktcGktMi8iPlJhc3BiZXJyeSBQaTwvYT48L2xpPncOY29yZS9saXN0LWl0ZW15eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckMTI5YTIzMmEtNzhiMy00NzQ0LWExZTktOTRjM2U3ZDEzMTE2eHeNATxsaT5Bdm9pciBmYWl0Jm5ic3A7PGEgaHJlZj0iaHR0cHM6Ly93b3JrYm9vdC5mci9jaWVsYS9ycGlfMC1pbnN0YWxsYXRpb24vIj5SUElfMCZuYnNwOzwvYT5ldCBkaXNwb3NlciBk4oCZdW4gUmFzcGJlcnJ5IFBJIE9TNjQgYXZlYyBzc2g8L2xpPncOY29yZS9saXN0LWl0ZW15eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckODU0MmNmNDUtOWYxYS00YzJkLTg2ZDYtMjY3NmI5NjM0ZWQ0eHejATxsaT5UUCZuYnNwOzxhIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvcnBpXzAtaW5zdGFsbGF0aW9uLyI+UlBJXzAmbmJzcDs8L2E+ZXQmbmJzcDs8YSBocmVmPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3JwaTEvIj5SUElfMTwvYT4mbmJzcDtlZmZlY3R1w6lzPC9saT53DmNvcmUvbGlzdC1pdGVteXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JDhiMjcwYzg3LTI3NzEtNGE2OC1hMjYyLTYzZjE1NzgzMTkzN3h3azxsaT5jb3VyczxhIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvbGFuZ2FnZS1jLyI+Jm5ic3A7bGFuZ2FnZSBDPC9hPiAsIEFubsOpZSAxIGRlIGxhIGZvcm1hdGlvbjwvbGk+dw5jb3JlL2xpc3QtaXRlbXl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AdyQ4NzAzNzkzOS04YjJlLTQ3OWItYWQ5Mi1lMGVjNjcwNzdlMjJ4d048bGk+Y291cnMmbmJzcDs8YSBocmVmPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL2xpYmdwaW9kLyI+bGliZ3Bpb2Q8L2E+PC9saT53DmNvcmUvbGlzdC1pdGVteXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JGRmMzgzMDJiLWVjM2EtNDM5ZS1iYzg1LWQwZmYzOWQ0ZmZjM3h3UTxsaT5jb3VycyA8YSBocmVmPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3NpZ2ludC1lbi1jLyI+U0lHSU5UPC9hPiBjdHJsIGM8L2xpPncOY29yZS9saXN0LWl0ZW15eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckMDcwYTcwN2QtMzA1Yi00ZGUzLWJlODMtNjAzNzcyNTEwODVmeHeTATxsaT5jb3VycyBwcsOpc2VudGF0aW9uIGRlIGxhIDxhIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvc29uZGUtbnVtZXJpcXVlLXNhbGVhZS8iPnNvbmRlIFNBTEVBRTwvYT4gdnUgZW4gY28gZW5zZWlnbmVtZW50IFBoeXNpcXVlL0luZm88L2xpPncOY29yZS9saXN0LWl0ZW15eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckNzBkODNjZGMtMWE5ZC00Y2U1LThmNmMtYzIyMzIyYjJlZmIyeHcvPGgyIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIiBpZD0iYnV0Ij5CdXQ6PC9oMj53DGNvcmUvaGVhZGluZ30CeXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3A2J1dHckMGM0YmU5MTMtNGI3Mi00MzFmLTg5OTMtMzNlM2IwODk2OTUzeHcjPHVsIGNsYXNzPSJ3cC1ibG9jay1saXN0Ij4KCgoKPC91bD53CWNvcmUvbGlzdHl3AHl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AdyQ4MDFjYTM0NC05MjFkLTQ1YjMtOWVlOS02ZjE0ODJhMzdmMDV4d1I8bGk+TWV0dHJlIGVuIG9ldXZyZSB1biBjb2RlIHBpbG90YW50IGxlcyBHUElPIGVuIGxhbmdhZ2UgQywgcG91ciBsZXMgcHJvamV0czwvbGk+dw5jb3JlL2xpc3QtaXRlbXl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AdyQxZGFiOGNlMi04NWRiLTQ1Y2ItOTZmMi1jYTYwMjI2NzAyZDR4dxs8bGk+UHVsbCB1cCwgcHVsbCBkb3duPC9saT53DmNvcmUvbGlzdC1pdGVteXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JGEzYjI4MWQ4LTZkMmYtNGUxYy1hOTE4LWZjY2FkYTdiZmJlZnh3HDxsaT5pbnRlcnJ1cHRpb24gU0lHSU5UPC9saT53DmNvcmUvbGlzdC1pdGVteXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JDY4OGE0MmRmLTY1MjQtNDEzNy1hYzZmLTUzY2YyNWQxZmZlM3h3VDxoMiBjbGFzcz0id3AtYmxvY2staGVhZGluZyIgaWQ9InJlcGVydG9pcmUtZHUtdHJhdmFpbCI+UsOpcGVydG9pcmUgZHUgdHJhdmFpbDo8L2gyPncMY29yZS9oZWFkaW5nfQJ5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHcVcmVwZXJ0b2lyZS1kdS10cmF2YWlsdyQzZWNmMGJkOC0xYzE1LTRhYzktYWRjZC1mNTNjNzEyNTA3OWR4dxQ8cD5+L1dvcmtzL1JQSV8zPC9wPncOY29yZS9wYXJhZ3JhcGh5eXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JGRlNjFiMTAwLWYxMjktNDZlMy05OTRjLTY0NjUwNTk4ZDM2OHh3gAE8aDIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciIGlkPSJpbnN0YWxsYXRpb24tc3VyLXJwaS1ub3JtYWxlbWVudC1kZWphLWZhaXQiPkluc3RhbGxhdGlvbiBzdXIgUlBJIChub3JtYWxlbWVudCBkw6lqw6AgZmFpdCk8L2gyPncMY29yZS9oZWFkaW5nfQJ5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHcqaW5zdGFsbGF0aW9uLXN1ci1ycGktbm9ybWFsZW1lbnQtZGVqYS1mYWl0dyQyMmJlYmRmOS1jYzFkLTQ2ZGYtYTliZi04NDQ3NzY3MjQ1Yjl4d248cHJlIGNsYXNzPSJ3cC1ibG9jay1jb2RlIj48Y29kZT5zdWRvIGFwdCB1cGRhdGUKc3VkbyBhcHQgaW5zdGFsbCBncGlvZCBsaWJncGlvZC1kZXYgbGliZ3Bpb2QtZG9jPC9jb2RlPjwvcHJlPncJY29yZS9jb2RleXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JDcwZDQ5NzI4LTM2NTYtNDk0NC1iNzJjLWY5YmM4ZGQyNDUxNnh3SDxociBjbGFzcz0id3AtYmxvY2stc2VwYXJhdG9yIGhhcy1hbHBoYS1jaGFubmVsLW9wYWNpdHkgaXMtc3R5bGUtd2lkZSIvPncOY29yZS9zZXBhcmF0b3J3DWFscGhhLWNoYW5uZWx3Amhydw1pcy1zdHlsZS13aWRleXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JGIwNzRjMDQ3LTliMWEtNDEzZi04YjU0LTc5OTk0MmZkMjRjN3h3XDxoMiBjbGFzcz0id3AtYmxvY2staGVhZGluZyIgaWQ9InNvcnRpZS1ncGlvMTctZXQtbGVkLXJvdWdlIj5Tb3J0aWUgR1BJTzE3IGV0IExFRCBST1VHRTwvaDI+dwxjb3JlL2hlYWRpbmd9Anl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0Adxpzb3J0aWUtZ3BpbzE3LWV0LWxlZC1yb3VnZXckNTExZmZjYWQtZjQ3Yi00ZjA3LTgzNTktZTdhZjkwZmRlYTAweHdLPHA+b24gcmVwcmVuZCBsZSBtw6ptZSBtb250YWdlLCBvbiBuZSBjaGFuZ2UgcGFzIHVuZSDDqXF1aXBlIHF1aSBnYWduZSE8L3A+dw5jb3JlL3BhcmFncmFwaHl5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckMzM1ZWZiNTgtMTlmNS00ZTRiLTk2NGYtMzA3NDk3YmM1MjdleHf7ATxmaWd1cmUgY2xhc3M9IndwLWJsb2NrLWltYWdlIHNpemUtbGFyZ2UiPjxhIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvd3AtY29udGVudC91cGxvYWRzLzIwMjUvMDcvR3BpbzE3X0xFRC5wbmciPjxpbWcgc3JjPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzA3L0dwaW8xN19MRUQtMTAyNHg3NTAucG5nIiBhbHQ9IiIgY2xhc3M9IndwLWltYWdlLTI5NjQiLz48L2E+PC9maWd1cmU+dwpjb3JlL2ltYWdld0xodHRwczovL3dvcmtib290LmZyL2NpZWxhL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzA3L0dwaW8xN19MRUQtMTAyNHg3NTAucG5ndwB3Q2h0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvd3AtY29udGVudC91cGxvYWRzLzIwMjUvMDcvR3BpbzE3X0xFRC5wbmd9lC53BWxhcmdldwVtZWRpYXl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AdyQyMTFiYmRlNS04N2RlLTRiYTgtODZiZS1kNzA4YTRiOThhZWN4dyk8cD5yw6lwZXJ0b2lyZTogYmxpbmsgLCBjb2RlOiBibGluay5jPC9wPncOY29yZS9wYXJhZ3JhcGh5eXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JDZhZGVjOWZiLTYzODgtNDQ5Zi1iYzM1LTc3MjUyMzMzMjExZnh3nQg8cHJlIGNsYXNzPSJFbmxpZ2h0ZXJKU1JBVyIgZGF0YS1lbmxpZ2h0ZXItbGFuZ3VhZ2U9ImMiIGRhdGEtZW5saWdodGVyLXRoZW1lPSIiIGRhdGEtZW5saWdodGVyLWhpZ2hsaWdodD0iIiBkYXRhLWVubGlnaHRlci1saW5lbnVtYmVycz0iIiBkYXRhLWVubGlnaHRlci1saW5lb2Zmc2V0PSIiIGRhdGEtZW5saWdodGVyLXRpdGxlPSIiIGRhdGEtZW5saWdodGVyLWdyb3VwPSIiPiNpbmNsdWRlICZsdDtzdGRpby5oPgojaW5jbHVkZSAmbHQ7dW5pc3RkLmg+CiNpbmNsdWRlICZsdDtncGlvZC5oPgoKaW50IG1haW4oKSB7CiAgICBjb25zdCBjaGFyICpjaGlwbmFtZSA9ICJncGlvY2hpcDAiOwogICAgaW50IGxlZF9waW4gPSAxNzsgLy8gQkNNMTcKICAgIGludCBkZWxheV9tcyA9IDUwMDsgLy8gMC41IHNlY29uZGUKCiAgICAvLyBDb25maWd1cmF0aW9uIG1pbmltYWxlCiAgICBzdHJ1Y3QgZ3Bpb2RfY2hpcCAqY2hpcCA9IGdwaW9kX2NoaXBfb3Blbl9ieV9uYW1lKGNoaXBuYW1lKTsKICAgIHN0cnVjdCBncGlvZF9saW5lICpsZWQgPSBncGlvZF9jaGlwX2dldF9saW5lKGNoaXAsIGxlZF9waW4pOwogICAgZ3Bpb2RfbGluZV9yZXF1ZXN0X291dHB1dChsZWQsICJsZWRfYmxpbmsiLCAwKTsKCiAgICBwcmludGYoIkNsaWdub3RlbWVudCBMRUQgR1BJTzE3IChDdHJsK0MgcG91ciBhcnLDqnRlcilcbiIpOwoKICAgIC8vIEJvdWNsZSBwcmluY2lwYWxlIHNpbXBsaWZpw6llCiAgICB3aGlsZSAoMSkgewogICAgICAgIGdwaW9kX2xpbmVfc2V0X3ZhbHVlKGxlZCwgMSk7IC8vIEFsbHVtZXIKICAgICAgICB1c2xlZXAoZGVsYXlfbXMgKiAxMDAwKTsKICAgICAgICBncGlvZF9saW5lX3NldF92YWx1ZShsZWQsIDApOyAvLyDDiXRlaW5kcmUKICAgICAgICB1c2xlZXAoZGVsYXlfbXMgKiAxMDAwKTsKICAgIH0KCiAgICAvLyBOZXR0b3lhZ2UgKGphbWFpcyBhdHRlaW50IMOgIGNhdXNlIGRlIGxhIGJvdWNsZSBpbmZpbmllKQogICAgZ3Bpb2RfbGluZV9yZWxlYXNlKGxlZCk7CiAgICBncGlvZF9jaGlwX2Nsb3NlKGNoaXApOwogICAgcmV0dXJuIDA7Cn08L3ByZT53E2VubGlnaHRlci9jb2RlYmxvY2t3twYjaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8Z3Bpb2QuaD4KCmludCBtYWluKCkgewogICAgY29uc3QgY2hhciAqY2hpcG5hbWUgPSAiZ3Bpb2NoaXAwIjsKICAgIGludCBsZWRfcGluID0gMTc7IC8vIEJDTTE3CiAgICBpbnQgZGVsYXlfbXMgPSA1MDA7IC8vIDAuNSBzZWNvbmRlCgogICAgLy8gQ29uZmlndXJhdGlvbiBtaW5pbWFsZQogICAgc3RydWN0IGdwaW9kX2NoaXAgKmNoaXAgPSBncGlvZF9jaGlwX29wZW5fYnlfbmFtZShjaGlwbmFtZSk7CiAgICBzdHJ1Y3QgZ3Bpb2RfbGluZSAqbGVkID0gZ3Bpb2RfY2hpcF9nZXRfbGluZShjaGlwLCBsZWRfcGluKTsKICAgIGdwaW9kX2xpbmVfcmVxdWVzdF9vdXRwdXQobGVkLCAibGVkX2JsaW5rIiwgMCk7CgogICAgcHJpbnRmKCJDbGlnbm90ZW1lbnQgTEVEIEdQSU8xNyAoQ3RybCtDIHBvdXIgYXJyw6p0ZXIpXG4iKTsKCiAgICAvLyBCb3VjbGUgcHJpbmNpcGFsZSBzaW1wbGlmacOpZQogICAgd2hpbGUgKDEpIHsKICAgICAgICBncGlvZF9saW5lX3NldF92YWx1ZShsZWQsIDEpOyAvLyBBbGx1bWVyCiAgICAgICAgdXNsZWVwKGRlbGF5X21zICogMTAwMCk7CiAgICAgICAgZ3Bpb2RfbGluZV9zZXRfdmFsdWUobGVkLCAwKTsgLy8gw4l0ZWluZHJlCiAgICAgICAgdXNsZWVwKGRlbGF5X21zICogMTAwMCk7CiAgICB9CgogICAgLy8gTmV0dG95YWdlIChqYW1haXMgYXR0ZWludCDDoCBjYXVzZSBkZSBsYSBib3VjbGUgaW5maW5pZSkKICAgIGdwaW9kX2xpbmVfcmVsZWFzZShsZWQpOwogICAgZ3Bpb2RfY2hpcF9jbG9zZShjaGlwKTsKICAgIHJldHVybiAwOwp9dwFjdwB3AHcAdwB3AHcAeXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JDliMTMxM2NmLTZhZWYtNGYxNS1iZDQ1LTRiYzBhMTVjMDI1Mnh3cDxoMiBjbGFzcz0id3AtYmxvY2staGVhZGluZyIgaWQ9InNhaXNpci1sZS1jb2RlLWV0LWNvbXBpbGVyLWV0LXRlc3RlciI+U2Fpc2lyIGxlIGNvZGUgZXQgY29tcGlsZXIgZXQgdGVzdGVyPC9oMj53DGNvcmUvaGVhZGluZ30CeXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JHNhaXNpci1sZS1jb2RlLWV0LWNvbXBpbGVyLWV0LXRlc3RlcnckZGU2MzAyNWUtMzEyMi00OGY5LWIyNTAtNzU2ZDhjYTBhNzhieHeuATxwPmF0dGVudGlvbiA6IDxzdHJvbmc+PGNvZGU+LWxncGlvZDwvY29kZT48L3N0cm9uZz4mbmJzcDtlc3QgbCdvcHRpb24gY29ycmVjdGUgcG91ciBsaWVyIChsaW5rZXIpIHZvdHJlIHByb2dyYW1tZSBDIGF2ZWMgbGEgYmlibGlvdGjDqHF1ZSZuYnNwOzxzdHJvbmc+bGliZ3Bpb2Q8L3N0cm9uZz4uPC9wPncOY29yZS9wYXJhZ3JhcGh5eXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JGUzN2U0NTU5LWQxMWQtNDkzYS04ODI5LTJlZDgzMWFkY2JkMHh3SjxwcmUgY2xhc3M9IndwLWJsb2NrLWNvZGUiPjxjb2RlPmdjYyAtbyBibGluayBibGluay5jIC1sZ3Bpb2Q8L2NvZGU+PC9wcmU+dwljb3JlL2NvZGV5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckZTMzNmI1ZDEtYWFlNy00NjE3LTg4NDAtZmI3NDRjYzA4ZDVmeHdcPGgyIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIiBpZD0idXRsaXNhdGlvbi1kdS1kZWJ1Z2dlci1nZGIiPlV0bGlzYXRpb24gZHUgZGVidWdnZXIgZ2RiPC9oMj53DGNvcmUvaGVhZGluZ30CeXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3GnV0bGlzYXRpb24tZHUtZGVidWdnZXItZ2RidyRiNzU4ZjcyNC0zNDFiLTRlNjMtYjgwOS1hNDg1ZmE0NTU1MTJ4d008cHJlIGNsYXNzPSJ3cC1ibG9jay1jb2RlIj48Y29kZT5nY2MgLW8gYmxpbmsgYmxpbmsuYyAtbGdwaW9kIC1nPC9jb2RlPjwvcHJlPncJY29yZS9jb2RleXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JGU0MGQxNmQ3LTY0OGYtNDkzOC04ZmU5LTVkNzNiZTU2OGFiMHh3RTxoMyBjbGFzcz0id3AtYmxvY2staGVhZGluZyIgaWQ9ImEtcXVvaS1zZXJ0LWciPkEgcXVvaSBzZXJ0IC1nID88L2gzPncMY29yZS9oZWFkaW5nfQN5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHcNYS1xdW9pLXNlcnQtZ3ckYWUzMGM0YzItMmY5OS00M2VkLWE1MTktNjg4M2UwMjFhYmEweHfxEjxwcmU+PGZvbnQgY29sb3I9IiMyNkEyNjkiPjxiPmJydW5vQHJwaTM2NDwvYj48L2ZvbnQ+Ojxmb250IGNvbG9yPSIjMTI0ODhCIj48Yj5+L1dvcmtzL1JQSV8yL2xhbmdhZ2VDL2JsaW5rICQ8L2I+PC9mb250PiBnY2MgYmxpbmsuYyAtbyBibGluayAtbGdwaW9kIC1nCjxmb250IGNvbG9yPSIjMjZBMjY5Ij48Yj5icnVub0BycGkzNjQ8L2I+PC9mb250Pjo8Zm9udCBjb2xvcj0iIzEyNDg4QiI+PGI+fi9Xb3Jrcy9SUElfMi9sYW5nYWdlQy9ibGluayAkPC9iPjwvZm9udD4gZ2RiIGJsaW5rIAo8Zm9udCBjb2xvcj0iI0EzNDdCQSI+PGI+R05VIGdkYiAoRGViaWFuIDEwLjEtMS43KSAxMC4xLjkwLjIwMjEwMTAzLWdpdDwvYj48L2ZvbnQ+CkNvcHlyaWdodCAoQykgMjAyMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KTGljZW5zZSBHUEx2Mys6IEdOVSBHUEwgdmVyc2lvbiAzIG9yIGxhdGVyICZsdDtodHRwOi8vZ251Lm9yZy9saWNlbnNlcy9ncGwuaHRtbCZndDsKVGhpcyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgYXJlIGZyZWUgdG8gY2hhbmdlIGFuZCByZWRpc3RyaWJ1dGUgaXQuClRoZXJlIGlzIE5PIFdBUlJBTlRZLCB0byB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBsYXcuClR5cGUgJnF1b3Q7c2hvdyBjb3B5aW5nJnF1b3Q7IGFuZCAmcXVvdDtzaG93IHdhcnJhbnR5JnF1b3Q7IGZvciBkZXRhaWxzLgpUaGlzIEdEQiB3YXMgY29uZmlndXJlZCBhcyAmcXVvdDthYXJjaDY0LWxpbnV4LWdudSZxdW90Oy4KVHlwZSAmcXVvdDtzaG93IGNvbmZpZ3VyYXRpb24mcXVvdDsgZm9yIGNvbmZpZ3VyYXRpb24gZGV0YWlscy4KRm9yIGJ1ZyByZXBvcnRpbmcgaW5zdHJ1Y3Rpb25zLCBwbGVhc2Ugc2VlOgombHQ7aHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nZGIvYnVncy8mZ3Q7LgpGaW5kIHRoZSBHREIgbWFudWFsIGFuZCBvdGhlciBkb2N1bWVudGF0aW9uIHJlc291cmNlcyBvbmxpbmUgYXQ6CiAgICAmbHQ7aHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dkYi9kb2N1bWVudGF0aW9uLyZndDsuCgpGb3IgaGVscCwgdHlwZSAmcXVvdDtoZWxwJnF1b3Q7LgpUeXBlICZxdW90O2Fwcm9wb3Mgd29yZCZxdW90OyB0byBzZWFyY2ggZm9yIGNvbW1hbmRzIHJlbGF0ZWQgdG8gJnF1b3Q7d29yZCZxdW90Oy4uLgpSZWFkaW5nIHN5bWJvbHMgZnJvbSA8Zm9udCBjb2xvcj0iIzI2QTI2OSI+Ymxpbms8L2ZvbnQ+Li4uCihnZGIpIGwKMSAgICAgICA8Zm9udCBjb2xvcj0iIzEyNDg4QiI+PGI+I2luY2x1ZGU8L2I+PC9mb250PiA8Zm9udCBjb2xvcj0iI0MwMUMyOCI+Jmx0O3N0ZGlvLmgmZ3Q7PC9mb250PgoyICAgICAgIDxmb250IGNvbG9yPSIjMTI0ODhCIj48Yj4jaW5jbHVkZTwvYj48L2ZvbnQ+IDxmb250IGNvbG9yPSIjQzAxQzI4Ij4mbHQ7dW5pc3RkLmgmZ3Q7PC9mb250PgozICAgICAgIDxmb250IGNvbG9yPSIjMTI0ODhCIj48Yj4jaW5jbHVkZTwvYj48L2ZvbnQ+IDxmb250IGNvbG9yPSIjQzAxQzI4Ij4mbHQ7Z3Bpb2QuaCZndDs8L2ZvbnQ+CjQKNSAgICAgICA8Zm9udCBjb2xvcj0iIzI2QTI2OSI+aW50PC9mb250PiA8Yj5tYWluPC9iPjxmb250IGNvbG9yPSIjQzAxQzI4Ij4oKTwvZm9udD4gPGZvbnQgY29sb3I9IiNDMDFDMjgiPns8L2ZvbnQ+CjYgICAgICAgICAgIDxmb250IGNvbG9yPSIjMTI0ODhCIj48Yj5jb25zdDwvYj48L2ZvbnQ+IDxmb250IGNvbG9yPSIjMjZBMjY5Ij5jaGFyPC9mb250PiA8Zm9udCBjb2xvcj0iI0MwMUMyOCI+KjwvZm9udD5jaGlwbmFtZSA8Zm9udCBjb2xvcj0iI0MwMUMyOCI+PTwvZm9udD4gPGZvbnQgY29sb3I9IiNDMDFDMjgiPiZxdW90O2dwaW9jaGlwMCZxdW90Ozs8L2ZvbnQ+CjcgICAgICAgICAgIDxmb250IGNvbG9yPSIjMjZBMjY5Ij5pbnQ8L2ZvbnQ+IGxlZF9waW4gPGZvbnQgY29sb3I9IiNDMDFDMjgiPj08L2ZvbnQ+IDxmb250IGNvbG9yPSIjQTM0N0JBIj4xNzwvZm9udD48Zm9udCBjb2xvcj0iI0MwMUMyOCI+OzwvZm9udD4gPGZvbnQgY29sb3I9IiMyQUExQjMiPi8vIEJDTTE3PC9mb250Pgo4ICAgICAgICAgICA8Zm9udCBjb2xvcj0iIzI2QTI2OSI+aW50PC9mb250PiBkZWxheV9tcyA8Zm9udCBjb2xvcj0iI0MwMUMyOCI+PTwvZm9udD4gPGZvbnQgY29sb3I9IiNBMzQ3QkEiPjUwMDwvZm9udD48Zm9udCBjb2xvcj0iI0MwMUMyOCI+OzwvZm9udD4gPGZvbnQgY29sb3I9IiMyQUExQjMiPi8vIDAuNSBzZWNvbmRlPC9mb250Pgo5CjEwICAgICAgICAgIDxmb250IGNvbG9yPSIjMkFBMUIzIj4vLyBDb25maWd1cmF0aW9uIG1pbmltYWxlPC9mb250PgooZ2RiKSAKPHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IzI2QTI2OSI+PGZvbnQgY29sb3I9IiMxNzE0MjEiPlthbGJlcnRdIDA6YmFzaCAgMTpiYXNoICAyOmJhc2ggIDM6YmFzaCAgNDpiYXNoIDwvZm9udD48L3NwYW4+PC9wcmU+dwljb3JlL2h0bWx38RI8cHJlPjxmb250IGNvbG9yPSIjMjZBMjY5Ij48Yj5icnVub0BycGkzNjQ8L2I+PC9mb250Pjo8Zm9udCBjb2xvcj0iIzEyNDg4QiI+PGI+fi9Xb3Jrcy9SUElfMi9sYW5nYWdlQy9ibGluayAkPC9iPjwvZm9udD4gZ2NjIGJsaW5rLmMgLW8gYmxpbmsgLWxncGlvZCAtZwo8Zm9udCBjb2xvcj0iIzI2QTI2OSI+PGI+YnJ1bm9AcnBpMzY0PC9iPjwvZm9udD46PGZvbnQgY29sb3I9IiMxMjQ4OEIiPjxiPn4vV29ya3MvUlBJXzIvbGFuZ2FnZUMvYmxpbmsgJDwvYj48L2ZvbnQ+IGdkYiBibGluayAKPGZvbnQgY29sb3I9IiNBMzQ3QkEiPjxiPkdOVSBnZGIgKERlYmlhbiAxMC4xLTEuNykgMTAuMS45MC4yMDIxMDEwMy1naXQ8L2I+PC9mb250PgpDb3B5cmlnaHQgKEMpIDIwMjEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCkxpY2Vuc2UgR1BMdjMrOiBHTlUgR1BMIHZlcnNpb24gMyBvciBsYXRlciAmbHQ7aHR0cDovL2dudS5vcmcvbGljZW5zZXMvZ3BsLmh0bWwmZ3Q7ClRoaXMgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGFyZSBmcmVlIHRvIGNoYW5nZSBhbmQgcmVkaXN0cmlidXRlIGl0LgpUaGVyZSBpcyBOTyBXQVJSQU5UWSwgdG8gdGhlIGV4dGVudCBwZXJtaXR0ZWQgYnkgbGF3LgpUeXBlICZxdW90O3Nob3cgY29weWluZyZxdW90OyBhbmQgJnF1b3Q7c2hvdyB3YXJyYW50eSZxdW90OyBmb3IgZGV0YWlscy4KVGhpcyBHREIgd2FzIGNvbmZpZ3VyZWQgYXMgJnF1b3Q7YWFyY2g2NC1saW51eC1nbnUmcXVvdDsuClR5cGUgJnF1b3Q7c2hvdyBjb25maWd1cmF0aW9uJnF1b3Q7IGZvciBjb25maWd1cmF0aW9uIGRldGFpbHMuCkZvciBidWcgcmVwb3J0aW5nIGluc3RydWN0aW9ucywgcGxlYXNlIHNlZToKJmx0O2h0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ2RiL2J1Z3MvJmd0Oy4KRmluZCB0aGUgR0RCIG1hbnVhbCBhbmQgb3RoZXIgZG9jdW1lbnRhdGlvbiByZXNvdXJjZXMgb25saW5lIGF0OgogICAgJmx0O2h0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nZGIvZG9jdW1lbnRhdGlvbi8mZ3Q7LgoKRm9yIGhlbHAsIHR5cGUgJnF1b3Q7aGVscCZxdW90Oy4KVHlwZSAmcXVvdDthcHJvcG9zIHdvcmQmcXVvdDsgdG8gc2VhcmNoIGZvciBjb21tYW5kcyByZWxhdGVkIHRvICZxdW90O3dvcmQmcXVvdDsuLi4KUmVhZGluZyBzeW1ib2xzIGZyb20gPGZvbnQgY29sb3I9IiMyNkEyNjkiPmJsaW5rPC9mb250Pi4uLgooZ2RiKSBsCjEgICAgICAgPGZvbnQgY29sb3I9IiMxMjQ4OEIiPjxiPiNpbmNsdWRlPC9iPjwvZm9udD4gPGZvbnQgY29sb3I9IiNDMDFDMjgiPiZsdDtzdGRpby5oJmd0OzwvZm9udD4KMiAgICAgICA8Zm9udCBjb2xvcj0iIzEyNDg4QiI+PGI+I2luY2x1ZGU8L2I+PC9mb250PiA8Zm9udCBjb2xvcj0iI0MwMUMyOCI+Jmx0O3VuaXN0ZC5oJmd0OzwvZm9udD4KMyAgICAgICA8Zm9udCBjb2xvcj0iIzEyNDg4QiI+PGI+I2luY2x1ZGU8L2I+PC9mb250PiA8Zm9udCBjb2xvcj0iI0MwMUMyOCI+Jmx0O2dwaW9kLmgmZ3Q7PC9mb250Pgo0CjUgICAgICAgPGZvbnQgY29sb3I9IiMyNkEyNjkiPmludDwvZm9udD4gPGI+bWFpbjwvYj48Zm9udCBjb2xvcj0iI0MwMUMyOCI+KCk8L2ZvbnQ+IDxmb250IGNvbG9yPSIjQzAxQzI4Ij57PC9mb250Pgo2ICAgICAgICAgICA8Zm9udCBjb2xvcj0iIzEyNDg4QiI+PGI+Y29uc3Q8L2I+PC9mb250PiA8Zm9udCBjb2xvcj0iIzI2QTI2OSI+Y2hhcjwvZm9udD4gPGZvbnQgY29sb3I9IiNDMDFDMjgiPio8L2ZvbnQ+Y2hpcG5hbWUgPGZvbnQgY29sb3I9IiNDMDFDMjgiPj08L2ZvbnQ+IDxmb250IGNvbG9yPSIjQzAxQzI4Ij4mcXVvdDtncGlvY2hpcDAmcXVvdDs7PC9mb250Pgo3ICAgICAgICAgICA8Zm9udCBjb2xvcj0iIzI2QTI2OSI+aW50PC9mb250PiBsZWRfcGluIDxmb250IGNvbG9yPSIjQzAxQzI4Ij49PC9mb250PiA8Zm9udCBjb2xvcj0iI0EzNDdCQSI+MTc8L2ZvbnQ+PGZvbnQgY29sb3I9IiNDMDFDMjgiPjs8L2ZvbnQ+IDxmb250IGNvbG9yPSIjMkFBMUIzIj4vLyBCQ00xNzwvZm9udD4KOCAgICAgICAgICAgPGZvbnQgY29sb3I9IiMyNkEyNjkiPmludDwvZm9udD4gZGVsYXlfbXMgPGZvbnQgY29sb3I9IiNDMDFDMjgiPj08L2ZvbnQ+IDxmb250IGNvbG9yPSIjQTM0N0JBIj41MDA8L2ZvbnQ+PGZvbnQgY29sb3I9IiNDMDFDMjgiPjs8L2ZvbnQ+IDxmb250IGNvbG9yPSIjMkFBMUIzIj4vLyAwLjUgc2Vjb25kZTwvZm9udD4KOQoxMCAgICAgICAgICA8Zm9udCBjb2xvcj0iIzJBQTFCMyI+Ly8gQ29uZmlndXJhdGlvbiBtaW5pbWFsZTwvZm9udD4KKGdkYikgCjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiMyNkEyNjkiPjxmb250IGNvbG9yPSIjMTcxNDIxIj5bYWxiZXJ0XSAwOmJhc2ggIDE6YmFzaCAgMjpiYXNoICAzOmJhc2ggIDQ6YmFzaCA8L2ZvbnQ+PC9zcGFuPjwvcHJlPnl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AdyQ0Yzk5NzZjNi04YmY1LTRkOWEtYmViMS02NzYxMGI1ZjRhNzR4dwc8cD48L3A+dw5jb3JlL3BhcmFncmFwaHl5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckYzdhM2RiZjgtNjk0Zi00NTMxLThlYjctOGY4YzRlYWY2NTVheHe+AjxoMyBjbGFzcz0id3AtYmxvY2staGVhZGluZyIgaWQ9InByb3Bvc2VyLXVuLW1veWVuLWF2ZWMtZ2RiLWRlLXZvaXItcy1hbGx1bWVyLWxhLWxlZC1ldC1zLWV0ZWluZHJlLXNvdXMtdm90cmUtY29udHJvbGUtZXQtdmVyaWZpZXItbGVzLXN0cnVjdHVyZXMtY29uY2VybmFudC1jZS1wcm9ncmFtbWUiPlByb3Bvc2VyIHVuIG1veWVuIGF2ZWMgZ2RiIGRlIHZvaXIgcydhbGx1bWVyIGxhIGxlZCAsIGV0IHMnw6l0ZWluZHJlIHNvdXMgdm90cmUgY29udHLDtGxlIGV0IHbDqXJpZmllciBsZXMgc3RydWN0dXJlcyBjb25jZXJuYW50IGNlIHByb2dyYW1tZS48L2gzPncMY29yZS9oZWFkaW5nfQN5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHeIAXByb3Bvc2VyLXVuLW1veWVuLWF2ZWMtZ2RiLWRlLXZvaXItcy1hbGx1bWVyLWxhLWxlZC1ldC1zLWV0ZWluZHJlLXNvdXMtdm90cmUtY29udHJvbGUtZXQtdmVyaWZpZXItbGVzLXN0cnVjdHVyZXMtY29uY2VybmFudC1jZS1wcm9ncmFtbWV3JDc1ZTE0NWE2LWQxMzktNDdkMi1iZWQxLTdiYzM5Y2ZkYWVhYXh3IjxwPk9uIHZhIHJham91dGVyIHVuZSBMRUQgc3VyIDwvcD53DmNvcmUvcGFyYWdyYXBoeXl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AdyQ3ZTgyMTliYS05NjJlLTRjZDEtOGJmYy04OWQ5N2ZhMGRmNmJ4d0Y8aDIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciIGlkPSJsZWQtcXVpLWFsdGVybmUiPkxFRCBxdWkgYWx0ZXJuZTwvaDI+dwxjb3JlL2hlYWRpbmd9Anl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0Adw9sZWQtcXVpLWFsdGVybmV3JDIyOWM0MTYwLTk2ZjktNDYwYS05NzE5LTM3ODgwMWM4NTI0OHh3LTxwPlLDqXBlcnRvaXJlOiBhbHRlcm5lICwgY29kZTogYWx0ZXJuZS5jPC9wPncOY29yZS9wYXJhZ3JhcGh5eXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JDRhNzFhNWZhLWNjYzEtNDI2OC1iMmMwLTJkNDNiMDdlNmZiY3h3QjxoMyBjbGFzcz0id3AtYmxvY2staGVhZGluZyIgaWQ9InByZXNlbnRhdGlvbiI+UHLDqXNlbnRhdGlvbjo8L2gzPncMY29yZS9oZWFkaW5nfQN5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHcMcHJlc2VudGF0aW9udyRiZTU3ZjJjMC05ODE5LTQwNWItYmIwZi0wNjU2NThmNzRlYzh4d3s8cD5vbiB2YSBnYXJkZXIgbGEgbGVkIHJvdWdlIHF1aSBlc3Qgc3VyIEdQSU8xNywgb24gdmEgYWpvdXRlciB1bmUgTEVEIFZlcnRlIHN1ciBHUElPMjIgYXZlYyBzYSByw6lzaXN0YW5jZSBlbiBzw6lyaWUgITwvcD53DmNvcmUvcGFyYWdyYXBoeXl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AdyQ0YzhmYmFiYS02MzlmLTQ2MmUtODlhZi1iNzE3MzY2M2M5ZTF4d008aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciIGlkPSJwcm9wb3Nlci11bi1zY2hlbWEiPlByb3Bvc2VyIHVuIHNjaMOpbWE8L2gzPncMY29yZS9oZWFkaW5nfQN5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHcScHJvcG9zZXItdW4tc2NoZW1hdyQzZTJlNDVkMy03NjE3LTRmMzEtOWJlNC1kY2U4OGM3M2E5OWV4d0k8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciIGlkPSJwcm9wb3Nlci11bi1jb2RlIj5Qcm9wb3NlciB1biBjb2RlIDwvaDM+dwxjb3JlL2hlYWRpbmd9A3l5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AdxBwcm9wb3Nlci11bi1jb2RldyQ0NWFkMjg2Yy1iM2QwLTQzMzgtODlmMy05YjliYTY1MmFjNDd4d0s8cD5Wb3VzIGRldmV6IHNhdm9pciByw6lhbGlzZXIgY2VsYSAuIExhIHNvbHV0aW9uIGVzdCBkb25uw6llIHNpIGJlc29pbjwvcD53DmNvcmUvcGFyYWdyYXBoeXl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AdyRiMzNiNDZiYy02ZjcxLTQyZWEtYWMyZC05MjZmZTAwMDVhZGJ4d1I8ZGV0YWlscyBjbGFzcz0id3AtYmxvY2stZGV0YWlscyI+PHN1bW1hcnk+U29sdXRpb246IGFsdGVybmUuYzwvc3VtbWFyeT48L2RldGFpbHM+dwxjb3JlL2RldGFpbHN5eXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JGRhMzM1NWUxLTAyOGQtNGNkNC1iYTlhLTI1NWJiNjNmMTY1OXh3qws8cHJlIGNsYXNzPSJFbmxpZ2h0ZXJKU1JBVyIgZGF0YS1lbmxpZ2h0ZXItbGFuZ3VhZ2U9ImMiIGRhdGEtZW5saWdodGVyLXRoZW1lPSIiIGRhdGEtZW5saWdodGVyLWhpZ2hsaWdodD0iIiBkYXRhLWVubGlnaHRlci1saW5lbnVtYmVycz0iIiBkYXRhLWVubGlnaHRlci1saW5lb2Zmc2V0PSIiIGRhdGEtZW5saWdodGVyLXRpdGxlPSIiIGRhdGEtZW5saWdodGVyLWdyb3VwPSIiPiNpbmNsdWRlICZsdDtncGlvZC5oPgojaW5jbHVkZSAmbHQ7dW5pc3RkLmg+CiNpbmNsdWRlICZsdDtzdGRpby5oPgoKI2RlZmluZSBHUElPX0xFRDEgMTcgIC8vIEJDTTE3IChicm9jaGUgcGh5c2lxdWUgMTEpCiNkZWZpbmUgR1BJT19MRUQyIDIyICAvLyBCQ00yMiAoYnJvY2hlIHBoeXNpcXVlIDE1KQojZGVmaW5lIENISVBOQU1FICJncGlvY2hpcDAiCiNkZWZpbmUgREVMQVlfTVMgNTAwICAvLyAwLjUgc2Vjb25kZQoKaW50IG1haW4oKSB7CiAgICAvLyAxLiBJbml0aWFsaXNhdGlvbgogICAgc3RydWN0IGdwaW9kX2NoaXAgKmNoaXAgPSBncGlvZF9jaGlwX29wZW5fYnlfbmFtZShDSElQTkFNRSk7CiAgICBzdHJ1Y3QgZ3Bpb2RfbGluZSAqbGVkMSA9IGdwaW9kX2NoaXBfZ2V0X2xpbmUoY2hpcCwgR1BJT19MRUQxKTsKICAgIHN0cnVjdCBncGlvZF9saW5lICpsZWQyID0gZ3Bpb2RfY2hpcF9nZXRfbGluZShjaGlwLCBHUElPX0xFRDIpOwogICAgCiAgICAvLyBDb25maWd1cmF0aW9uIGVuIHNvcnRpZQogICAgZ3Bpb2RfbGluZV9yZXF1ZXN0X291dHB1dChsZWQxLCAiTEVEMSIsIDApOyAgLy8gw4l0ZWludGUgYXUgZMOpcGFydAogICAgZ3Bpb2RfbGluZV9yZXF1ZXN0X291dHB1dChsZWQyLCAiTEVEMiIsIDEpOyAgLy8gQWxsdW3DqWUgYXUgZMOpcGFydAoKICAgIC8vIDIuIEJvdWNsZSBkJ2FsdGVybmFuY2UKICAgIHByaW50ZigiQWx0ZXJuYW5jZSBHUElPMTcvR1BJTzIyIChDdHJsK0MgcG91ciBhcnLDqnRlcilcbiIpOwogICAgd2hpbGUgKDEpIHsKICAgICAgICBncGlvZF9saW5lX3NldF92YWx1ZShsZWQxLCAxKTsgIC8vIExFRDEgT04KICAgICAgICBncGlvZF9saW5lX3NldF92YWx1ZShsZWQyLCAwKTsgIC8vIExFRDIgT0ZGCiAgICAgICAgdXNsZWVwKERFTEFZX01TICogMTAwMCk7CiAgICAgICAgCiAgICAgICAgZ3Bpb2RfbGluZV9zZXRfdmFsdWUobGVkMSwgMCk7ICAvLyBMRUQxIE9GRgogICAgICAgIGdwaW9kX2xpbmVfc2V0X3ZhbHVlKGxlZDIsIDEpOyAgLy8gTEVEMiBPTgogICAgICAgIHVzbGVlcChERUxBWV9NUyAqIDEwMDApOwogICAgfQoKICAgIC8vIDMuIE5ldHRveWFnZSAoaW5hY2Nlc3NpYmxlIGljaSDDoCBjYXVzZSBkZSBsYSBib3VjbGUgaW5maW5pZSkKICAgIGdwaW9kX2xpbmVfcmVsZWFzZShsZWQxKTsKICAgIGdwaW9kX2xpbmVfcmVsZWFzZShsZWQyKTsKICAgIGdwaW9kX2NoaXBfY2xvc2UoY2hpcCk7CiAgICByZXR1cm4gMDsKfTwvcHJlPncTZW5saWdodGVyL2NvZGVibG9ja3fFCSNpbmNsdWRlIDxncGlvZC5oPgojaW5jbHVkZSA8dW5pc3RkLmg+CiNpbmNsdWRlIDxzdGRpby5oPgoKI2RlZmluZSBHUElPX0xFRDEgMTcgIC8vIEJDTTE3IChicm9jaGUgcGh5c2lxdWUgMTEpCiNkZWZpbmUgR1BJT19MRUQyIDIyICAvLyBCQ00yMiAoYnJvY2hlIHBoeXNpcXVlIDE1KQojZGVmaW5lIENISVBOQU1FICJncGlvY2hpcDAiCiNkZWZpbmUgREVMQVlfTVMgNTAwICAvLyAwLjUgc2Vjb25kZQoKaW50IG1haW4oKSB7CiAgICAvLyAxLiBJbml0aWFsaXNhdGlvbgogICAgc3RydWN0IGdwaW9kX2NoaXAgKmNoaXAgPSBncGlvZF9jaGlwX29wZW5fYnlfbmFtZShDSElQTkFNRSk7CiAgICBzdHJ1Y3QgZ3Bpb2RfbGluZSAqbGVkMSA9IGdwaW9kX2NoaXBfZ2V0X2xpbmUoY2hpcCwgR1BJT19MRUQxKTsKICAgIHN0cnVjdCBncGlvZF9saW5lICpsZWQyID0gZ3Bpb2RfY2hpcF9nZXRfbGluZShjaGlwLCBHUElPX0xFRDIpOwogICAgCiAgICAvLyBDb25maWd1cmF0aW9uIGVuIHNvcnRpZQogICAgZ3Bpb2RfbGluZV9yZXF1ZXN0X291dHB1dChsZWQxLCAiTEVEMSIsIDApOyAgLy8gw4l0ZWludGUgYXUgZMOpcGFydAogICAgZ3Bpb2RfbGluZV9yZXF1ZXN0X291dHB1dChsZWQyLCAiTEVEMiIsIDEpOyAgLy8gQWxsdW3DqWUgYXUgZMOpcGFydAoKICAgIC8vIDIuIEJvdWNsZSBkJ2FsdGVybmFuY2UKICAgIHByaW50ZigiQWx0ZXJuYW5jZSBHUElPMTcvR1BJTzIyIChDdHJsK0MgcG91ciBhcnLDqnRlcilcbiIpOwogICAgd2hpbGUgKDEpIHsKICAgICAgICBncGlvZF9saW5lX3NldF92YWx1ZShsZWQxLCAxKTsgIC8vIExFRDEgT04KICAgICAgICBncGlvZF9saW5lX3NldF92YWx1ZShsZWQyLCAwKTsgIC8vIExFRDIgT0ZGCiAgICAgICAgdXNsZWVwKERFTEFZX01TICogMTAwMCk7CiAgICAgICAgCiAgICAgICAgZ3Bpb2RfbGluZV9zZXRfdmFsdWUobGVkMSwgMCk7ICAvLyBMRUQxIE9GRgogICAgICAgIGdwaW9kX2xpbmVfc2V0X3ZhbHVlKGxlZDIsIDEpOyAgLy8gTEVEMiBPTgogICAgICAgIHVzbGVlcChERUxBWV9NUyAqIDEwMDApOwogICAgfQoKICAgIC8vIDMuIE5ldHRveWFnZSAoaW5hY2Nlc3NpYmxlIGljaSDDoCBjYXVzZSBkZSBsYSBib3VjbGUgaW5maW5pZSkKICAgIGdwaW9kX2xpbmVfcmVsZWFzZShsZWQxKTsKICAgIGdwaW9kX2xpbmVfcmVsZWFzZShsZWQyKTsKICAgIGdwaW9kX2NoaXBfY2xvc2UoY2hpcCk7CiAgICByZXR1cm4gMDsKfXcBY3cAdwB3AHcAdwB3AHl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AdyRiNjM0OGQ1My1iYmM3LTRhZjMtYmRmMC03OGJiZmExOGY0OTR4dwc8cD48L3A+dw5jb3JlL3BhcmFncmFwaHl5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckYTYwZGQ3NzgtNTNlZC00NDk4LWFlMTEtNDBmNTA4Y2U2MThheHdmPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIiBpZD0ic2Fpc2lyLWNvbXBpbGVyLXRlc3Rlci1sZS1jb2RlIj5TYWlzaXIgLCBjb21waWxlciB0ZXN0ZXIgbGUgY29kZTwvaDM+dwxjb3JlL2hlYWRpbmd9A3l5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0Adx5zYWlzaXItY29tcGlsZXItdGVzdGVyLWxlLWNvZGV3JDg2Yzc0MmRkLTYyNGEtNGNkZC1hN2EwLTRlNTM3MDVhOWUzNnh32gE8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciIGlkPSJleHBsaXF1ZXotY29tbWVudC11dGlsaXNlci1nZGItcG91ci1jb250cm9sZXItbC1hbGx1bWFnZS1ldC1sLWV4dGluY3Rpb24tZGVzLWxlZCI+PHN0cm9uZz5FeHBsaXF1ZXogY29tbWVudCB1dGlsaXNlciBHREIgcG91ciBjb250csO0bGVyIGwnYWxsdW1hZ2UgZXQgbCdleHRpbmN0aW9uIGRlcyBMRUQ8L3N0cm9uZz48L2gzPncMY29yZS9oZWFkaW5nfQN5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHdQZXhwbGlxdWV6LWNvbW1lbnQtdXRpbGlzZXItZ2RiLXBvdXItY29udHJvbGVyLWwtYWxsdW1hZ2UtZXQtbC1leHRpbmN0aW9uLWRlcy1sZWR3JDQwZTFhMGUyLTgzZjktNDU1Zi05YmNiLTFjOGNlZjc1MzNjNnh3nwE8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciIGlkPSJkb25uZXItbGVzLWNvbW1hbmRlcy1xdWktcGVybWV0dGVudC1kZS1yZWFsaXNlci1kZXMtc29ydGllcyI+RG9ubmVyIGxlcyBjb21tYW5kZXMgcXVpIHBlcm1ldHRlbnQgZGUgcsOpYWxpc2VyIGRlcyBzb3J0aWVzPC9oMz53DGNvcmUvaGVhZGluZ30DeXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3O2Rvbm5lci1sZXMtY29tbWFuZGVzLXF1aS1wZXJtZXR0ZW50LWRlLXJlYWxpc2VyLWRlcy1zb3J0aWVzdyQ4MjZmODMwZS0zNjdjLTQ4ZGItOGYxOS01MGFjMTM4ZTJmODh4d0c8aDIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciIGlkPSJlbnRyZWUtYXZlYy1pbHMiPkVudHLDqWUgYXZlYyBJTFM8L2gyPncMY29yZS9oZWFkaW5nfQJ5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHcPZW50cmVlLWF2ZWMtaWxzdyQ4NmEyYWFmMS02MDFlLTRhMmEtODk5ZC1kMmFlNDExODhjOGN4dxA8cD5Nb250YWdlIDI8L3A+dw5jb3JlL3BhcmFncmFwaHl5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckN2I0OWRhNDktMTVhMi00MjQyLTg1NmMtYzVhYmM3ZTRmYTNjeHcrPHA+R1BJTzI3IGVuIGVudHLDqWUgLCBHUElPMTcgZW4gc29ydGllPC9wPncOY29yZS9wYXJhZ3JhcGh5eXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JGIxYzJhZWE3LTAxYzMtNDE3OC05M2QzLTkwMDkwZjRjNWJmYXh39wE8ZmlndXJlIGNsYXNzPSJ3cC1ibG9jay1pbWFnZSBzaXplLWxhcmdlIj48YSBocmVmPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzA3L3JlZWRfbGVkLnBuZyI+PGltZyBzcmM9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvd3AtY29udGVudC91cGxvYWRzLzIwMjUvMDcvcmVlZF9sZWQtMTAyNHg3MzgucG5nIiBhbHQ9IiIgY2xhc3M9IndwLWltYWdlLTMwNDEiLz48L2E+PC9maWd1cmU+dwpjb3JlL2ltYWdld0podHRwczovL3dvcmtib290LmZyL2NpZWxhL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzA3L3JlZWRfbGVkLTEwMjR4NzM4LnBuZ3cAd0FodHRwczovL3dvcmtib290LmZyL2NpZWxhL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzA3L3JlZWRfbGVkLnBuZ32hL3cFbGFyZ2V3BW1lZGlheXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JDg1ZmI1Njc0LTU1YzctNDQ3My05MmE4LTNjY2ZhYWRjYzBkOXh3LTxwPlLDqXBlcnRvaXJlOiBpbHNfbGVkICwgY29kZTogaWxzX2xlZC5jPC9wPncOY29yZS9wYXJhZ3JhcGh5eXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JDY4MjJiN2RlLTEyMDAtNGExMC05ZWU4LWI2YTJiMDk3YTJhYnh31g88cHJlIGNsYXNzPSJFbmxpZ2h0ZXJKU1JBVyIgZGF0YS1lbmxpZ2h0ZXItbGFuZ3VhZ2U9ImMiIGRhdGEtZW5saWdodGVyLXRoZW1lPSIiIGRhdGEtZW5saWdodGVyLWhpZ2hsaWdodD0iIiBkYXRhLWVubGlnaHRlci1saW5lbnVtYmVycz0iIiBkYXRhLWVubGlnaHRlci1saW5lb2Zmc2V0PSIiIGRhdGEtZW5saWdodGVyLXRpdGxlPSIiIGRhdGEtZW5saWdodGVyLWdyb3VwPSIiPiNpbmNsdWRlICZsdDtncGlvZC5oPgojaW5jbHVkZSAmbHQ7c3RkaW8uaD4KI2luY2x1ZGUgJmx0O3VuaXN0ZC5oPiAvLyBwb3VyIHVzbGVlcCgpCiNkZWZpbmUgR1BJT19DSElQICAgICJncGlvY2hpcDAiICAvLyBOb20gZHUgY29udHLDtGxldXIgR1BJTwojZGVmaW5lIEdQSU9fSU5QVVQgICAyNyAgICAgICAgICAgLy8gR1BJTzI3IGVuIGVudHLDqWUgKElMUykKI2RlZmluZSBHUElPX09VVFBVVCAgMTcgICAgICAgICAgIC8vIEdQSU8xNyBlbiBzb3J0aWUKI2RlZmluZSBERUxBWV9NUyAgICAgNTAgICAgICAgICAgIC8vIETDqWxhaSBkZSBsZWN0dXJlIChlbiBtcykKaW50IG1haW4oKSB7CiAgICBzdHJ1Y3QgZ3Bpb2RfY2hpcCAqY2hpcDsKICAgIHN0cnVjdCBncGlvZF9saW5lICppbnB1dF9saW5lLCAqb3V0cHV0X2xpbmU7CiAgICBpbnQgaW5wdXRfc3RhdGU7CiAgICAvLyAxLiBJbml0aWFsaXNhdGlvbiBkdSBHUElPCiAgICBjaGlwID0gZ3Bpb2RfY2hpcF9vcGVuX2J5X25hbWUoR1BJT19DSElQKTsKICAgIGlmICghY2hpcCkgewogICAgICAgIHBlcnJvcigiRXJyZXVyIGQnb3V2ZXJ0dXJlIGR1IGNoaXAgR1BJTyIpOwogICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICB9CiAgICAvLyAyLiBDb25maWd1cmF0aW9uIGRlcyBicm9jaGVzCiAgICBpbnB1dF9saW5lID0gZ3Bpb2RfY2hpcF9nZXRfbGluZShjaGlwLCBHUElPX0lOUFVUKTsKICAgIG91dHB1dF9saW5lID0gZ3Bpb2RfY2hpcF9nZXRfbGluZShjaGlwLCBHUElPX09VVFBVVCk7CiAgICBpZiAoIWlucHV0X2xpbmUgfHwgIW91dHB1dF9saW5lKSB7CiAgICAgICAgcGVycm9yKCJFcnJldXIgZGUgY29uZmlndXJhdGlvbiBkZXMgYnJvY2hlcyIpOwogICAgICAgIGdwaW9kX2NoaXBfY2xvc2UoY2hpcCk7CiAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgIH0KICAgIC8vIEdQSU8yNyBlbiBlbnRyw6llIChhdmVjIHLDqXNpc3RhbmNlIGRlIHJhcHBlbCBleHRlcm5lIGF1ICszLjNWKQogICAgZ3Bpb2RfbGluZV9yZXF1ZXN0X2lucHV0KGlucHV0X2xpbmUsICJpbHMtaW5wdXQiKTsKICAgIC8vIEdQSU8xNyBlbiBzb3J0aWUKICAgIGdwaW9kX2xpbmVfcmVxdWVzdF9vdXRwdXQob3V0cHV0X2xpbmUsICJsZWQtb3V0cHV0IiwgMCk7CiAgICBwcmludGYoIkTDqW1hcnJhZ2UgZGUgbGEgY29waWUgR1BJTyVkIOKGkiBHUElPJWQgKENUUkwrQyBwb3VyIGFycsOqdGVyKVxuIiwgR1BJT19JTlBVVCwgR1BJT19PVVRQVVQpOwogICAgLy8gMy4gQm91Y2xlIHByaW5jaXBhbGUKICAgIHdoaWxlICgxKSB7CiAgICAgICAgLy8gTGVjdHVyZSBkZSBsJ8OpdGF0IGRlIGwnSUxTICgwPW91dmVydCwgMT1mZXJtw6kpCiAgICAgICAgaW5wdXRfc3RhdGUgPSBncGlvZF9saW5lX2dldF92YWx1ZShpbnB1dF9saW5lKTsKICAgICAgICAvLyBDb3BpZSB2ZXJzIGxhIHNvcnRpZQogICAgICAgIGdwaW9kX2xpbmVfc2V0X3ZhbHVlKG91dHB1dF9saW5lLCBpbnB1dF9zdGF0ZSk7CiAgICAgICAgLy8gUGV0aXRlIHBhdXNlIHBvdXIgw6l2aXRlciBsYSBzdXJjaGFyZ2UgQ1BVCiAgICAgICAgdXNsZWVwKERFTEFZX01TICogMTAwMCk7CiAgICB9CiAgICAvLyA0LiBOZXR0b3lhZ2UgKGphbWFpcyBhdHRlaW50IGljaSDDoCBjYXVzZSBkZSBsYSBib3VjbGUgaW5maW5pZSkKICAgIGdwaW9kX2xpbmVfcmVsZWFzZShpbnB1dF9saW5lKTsKICAgIGdwaW9kX2xpbmVfcmVsZWFzZShvdXRwdXRfbGluZSk7CiAgICBncGlvZF9jaGlwX2Nsb3NlKGNoaXApOwogICAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKfTwvcHJlPncTZW5saWdodGVyL2NvZGVibG9ja3fwDSNpbmNsdWRlIDxncGlvZC5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPiAvLyBwb3VyIHVzbGVlcCgpCiNkZWZpbmUgR1BJT19DSElQICAgICJncGlvY2hpcDAiICAvLyBOb20gZHUgY29udHLDtGxldXIgR1BJTwojZGVmaW5lIEdQSU9fSU5QVVQgICAyNyAgICAgICAgICAgLy8gR1BJTzI3IGVuIGVudHLDqWUgKElMUykKI2RlZmluZSBHUElPX09VVFBVVCAgMTcgICAgICAgICAgIC8vIEdQSU8xNyBlbiBzb3J0aWUKI2RlZmluZSBERUxBWV9NUyAgICAgNTAgICAgICAgICAgIC8vIETDqWxhaSBkZSBsZWN0dXJlIChlbiBtcykKaW50IG1haW4oKSB7CiAgICBzdHJ1Y3QgZ3Bpb2RfY2hpcCAqY2hpcDsKICAgIHN0cnVjdCBncGlvZF9saW5lICppbnB1dF9saW5lLCAqb3V0cHV0X2xpbmU7CiAgICBpbnQgaW5wdXRfc3RhdGU7CiAgICAvLyAxLiBJbml0aWFsaXNhdGlvbiBkdSBHUElPCiAgICBjaGlwID0gZ3Bpb2RfY2hpcF9vcGVuX2J5X25hbWUoR1BJT19DSElQKTsKICAgIGlmICghY2hpcCkgewogICAgICAgIHBlcnJvcigiRXJyZXVyIGQnb3V2ZXJ0dXJlIGR1IGNoaXAgR1BJTyIpOwogICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICB9CiAgICAvLyAyLiBDb25maWd1cmF0aW9uIGRlcyBicm9jaGVzCiAgICBpbnB1dF9saW5lID0gZ3Bpb2RfY2hpcF9nZXRfbGluZShjaGlwLCBHUElPX0lOUFVUKTsKICAgIG91dHB1dF9saW5lID0gZ3Bpb2RfY2hpcF9nZXRfbGluZShjaGlwLCBHUElPX09VVFBVVCk7CiAgICBpZiAoIWlucHV0X2xpbmUgfHwgIW91dHB1dF9saW5lKSB7CiAgICAgICAgcGVycm9yKCJFcnJldXIgZGUgY29uZmlndXJhdGlvbiBkZXMgYnJvY2hlcyIpOwogICAgICAgIGdwaW9kX2NoaXBfY2xvc2UoY2hpcCk7CiAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgIH0KICAgIC8vIEdQSU8yNyBlbiBlbnRyw6llIChhdmVjIHLDqXNpc3RhbmNlIGRlIHJhcHBlbCBleHRlcm5lIGF1ICszLjNWKQogICAgZ3Bpb2RfbGluZV9yZXF1ZXN0X2lucHV0KGlucHV0X2xpbmUsICJpbHMtaW5wdXQiKTsKICAgIC8vIEdQSU8xNyBlbiBzb3J0aWUKICAgIGdwaW9kX2xpbmVfcmVxdWVzdF9vdXRwdXQob3V0cHV0X2xpbmUsICJsZWQtb3V0cHV0IiwgMCk7CiAgICBwcmludGYoIkTDqW1hcnJhZ2UgZGUgbGEgY29waWUgR1BJTyVkIOKGkiBHUElPJWQgKENUUkwrQyBwb3VyIGFycsOqdGVyKVxuIiwgR1BJT19JTlBVVCwgR1BJT19PVVRQVVQpOwogICAgLy8gMy4gQm91Y2xlIHByaW5jaXBhbGUKICAgIHdoaWxlICgxKSB7CiAgICAgICAgLy8gTGVjdHVyZSBkZSBsJ8OpdGF0IGRlIGwnSUxTICgwPW91dmVydCwgMT1mZXJtw6kpCiAgICAgICAgaW5wdXRfc3RhdGUgPSBncGlvZF9saW5lX2dldF92YWx1ZShpbnB1dF9saW5lKTsKICAgICAgICAvLyBDb3BpZSB2ZXJzIGxhIHNvcnRpZQogICAgICAgIGdwaW9kX2xpbmVfc2V0X3ZhbHVlKG91dHB1dF9saW5lLCBpbnB1dF9zdGF0ZSk7CiAgICAgICAgLy8gUGV0aXRlIHBhdXNlIHBvdXIgw6l2aXRlciBsYSBzdXJjaGFyZ2UgQ1BVCiAgICAgICAgdXNsZWVwKERFTEFZX01TICogMTAwMCk7CiAgICB9CiAgICAvLyA0LiBOZXR0b3lhZ2UgKGphbWFpcyBhdHRlaW50IGljaSDDoCBjYXVzZSBkZSBsYSBib3VjbGUgaW5maW5pZSkKICAgIGdwaW9kX2xpbmVfcmVsZWFzZShpbnB1dF9saW5lKTsKICAgIGdwaW9kX2xpbmVfcmVsZWFzZShvdXRwdXRfbGluZSk7CiAgICBncGlvZF9jaGlwX2Nsb3NlKGNoaXApOwogICAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKfXcBY3cAdwB3AHcAdwB3AHl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AdyQ5NGMyNzRiMC1lNWI5LTQ5YTEtOWYzOS02MTMxNWIxYmYzNzZ4d3Y8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciIGlkPSJzYWlzaXItbGUtY29kZS1sZS1jb21waWxlci1ldC1sZS10ZXN0ZXIiPlNhaXNpciBsZSBjb2RlIGxlIGNvbXBpbGVyIGV0IGxlIHRlc3RlcjwvaDM+dwxjb3JlL2hlYWRpbmd9A3l5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AdydzYWlzaXItbGUtY29kZS1sZS1jb21waWxlci1ldC1sZS10ZXN0ZXJ3JDIzNDYxNTcxLWE3OGYtNDc0Yy1hMDI5LWQzNGQ3ZmFhMzQxZXh3tQE8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciIGlkPSJwcm9wb3Nlci11bi1tb3llbi1hdmVjLWdkYi1kZS1zdXJ2ZWlsbGVyLWdwaW8yNy1ldC1kZS1jb250cm9sZXItZ3BpbzE3Ij5Qcm9wb3NlciB1biBtb3llbiBhdmVjIGdkYiBkZSBzdXJ2ZWlsbGVyIEdQSU8yNyBldCBkZSBjb250csO0bGVyIEdQSU8xNzwvaDM+dwxjb3JlL2hlYWRpbmd9A3l5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0Ad0Zwcm9wb3Nlci11bi1tb3llbi1hdmVjLWdkYi1kZS1zdXJ2ZWlsbGVyLWdwaW8yNy1ldC1kZS1jb250cm9sZXItZ3BpbzE3dyRiNzUyYTY1OS0zZjNjLTQ5MjYtYTQxMS0yNTMxZTg2MDdmMzJ4d4IBPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIiBpZD0iYXZlYy1tb25pYS1wcm9wb3Nlci11bi1vcmdhbmlncmFtbWUtZXQtc29uLXBsIj5BdmVjIE1vbmlhIHByb3Bvc2VyIHVuIG9yZ2FuaWdyYW1tZSBldCBzb24gUEw8L2gzPncMY29yZS9oZWFkaW5nfQN5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHctYXZlYy1tb25pYS1wcm9wb3Nlci11bi1vcmdhbmlncmFtbWUtZXQtc29uLXBsdyQ0NmQ4ZTExMS00ZWE1LTQ5OWYtODAyNC1iZTk2NTk3NWQ3NjF4d2E8aDIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciIGlkPSJyZXNpc3RhbmNlLWRlLXJhcHBlbC1pbnRlcm5lIj5Sw6lzaXN0YW5jZSBkZSByYXBwZWwgaW50ZXJuZTwvaDI+dwxjb3JlL2hlYWRpbmd9Anl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AdxxyZXNpc3RhbmNlLWRlLXJhcHBlbC1pbnRlcm5ldyQyYjgyMWUxNC1hM2NmLTRiZmEtOWE0NC04MDhlZDdjZDU3MDR4d1k8cD5vbiB2YSBnYXJkZXIgbGUgbcOqbWUgbW9udGFnZSBtYWlzIG9uIHZhIGxlIHNpbXBsaWZpZXIgZW4gYWpvdXRhbnQgdW4gcGV1IGRlIGNvZGUuPC9wPncOY29yZS9wYXJhZ3JhcGh5eXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JGQzMmM0MzdjLWE0NWMtNDI0MS1hZTYyLTE3ZGMxZWZkMGRmZnh3PzxwPm9uIHN1cHByaW1lIGxhIHLDqXNpc3RhbmNlIGV4dGVybmUgIGV0IG9uIGxhaXNzZSBsJ0lMUyAuPC9wPncOY29yZS9wYXJhZ3JhcGh5eXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JDY0ZmFkMGNhLTA5MDAtNDg3MS05ZmU3LTVkYzZhNjBlY2Y0MHh3LTxwPkNvbW1lIGTDqWrDoCDDqXR1ZGnDqSBwcsOpY8OpZGVtbWVudCAuPC9wPncOY29yZS9wYXJhZ3JhcGh5eXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JGFjMWNkNDI5LTJmNjAtNDNjMS05N2NhLTkyYTg3MmEwNWIyOXh3ogE8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciIGlkPSJqdXN0aWZpZXItY29tbWVudC1vbi1wZXV0LXN1cHByaW1lci1jZXR0ZS1yZXNpc3RhbmNlLWV4dGVybmUiPkp1c3RpZmllciBjb21tZW50IG9uIHBldXQgc3VwcHJpbWVyIGNldHRlIHLDqXNpc3RhbmNlIGV4dGVybmUuPC9oMz53DGNvcmUvaGVhZGluZ30DeXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3PGp1c3RpZmllci1jb21tZW50LW9uLXBldXQtc3VwcHJpbWVyLWNldHRlLXJlc2lzdGFuY2UtZXh0ZXJuZXckZjQ4Y2ZjOTctMDdmNi00OTlkLWJmZjYtZWZmNmIzZWY5NTc1eHcnPHA+Y29tbWVudCBmYWlyZSBzaSBvbiBsYSBzdXBwcmltZS48L3A+dw5jb3JlL3BhcmFncmFwaHl5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckZDMzYjFhYTEtNzNlNS00ZjE5LWEzNTAtMzEzMzA0NzcwZmE5eHdhPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIiBpZD0iY29kZS1jLXByb3Bvc2UtaWxzLWxlZC1zci1jIj5Db2RlIEMgcHJvcG9zw6kgLCBpbHNfbGVkX3NyLmM8L2gzPncMY29yZS9oZWFkaW5nfQN5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHcbY29kZS1jLXByb3Bvc2UtaWxzLWxlZC1zci1jdyRlMTFlNjk1My1jMDBiLTRhNzMtODc0Yi1hYjc5YWNhZjJjMmR4d1E8cD5iZXNvaW4gZGU8YSBocmVmPSJodHRwczovL3dvcmtib290LmZyL2NpZWxhL3NpZ2ludC1lbi1jLyI+IHNpZ2ludCBlbiBDPC9hPjwvcD53DmNvcmUvcGFyYWdyYXBoeXl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AdyQzOTRiZDkxMy00ZTNlLTQ1YWMtOTg3Zi01OWRjOTRmOTk2ODJ4dzM8cD5yw6lwZXJ0b2lyZTogaWxzcmVkc3JjICwgY29kZSA6IGlsc19sZWRfc3IuYzwvcD53DmNvcmUvcGFyYWdyYXBoeXl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AdyRlZDgzNDhlYS05ZWEwLTRiNzAtOGM0NC0yMzQ4MjhiMmFlMGF4d50SPHByZSBjbGFzcz0iRW5saWdodGVySlNSQVciIGRhdGEtZW5saWdodGVyLWxhbmd1YWdlPSJjIiBkYXRhLWVubGlnaHRlci10aGVtZT0iIiBkYXRhLWVubGlnaHRlci1oaWdobGlnaHQ9IiIgZGF0YS1lbmxpZ2h0ZXItbGluZW51bWJlcnM9IiIgZGF0YS1lbmxpZ2h0ZXItbGluZW9mZnNldD0iIiBkYXRhLWVubGlnaHRlci10aXRsZT0iIiBkYXRhLWVubGlnaHRlci1ncm91cD0iIj4jaW5jbHVkZSAmbHQ7Z3Bpb2QuaD4KI2luY2x1ZGUgJmx0O3N0ZGxpYi5oPgojaW5jbHVkZSAmbHQ7c3RkaW8uaD4KI2luY2x1ZGUgJmx0O3VuaXN0ZC5oPgojaW5jbHVkZSAmbHQ7c2lnbmFsLmg+CgojZGVmaW5lIEdQSU9fQ0hJUCAgICAiZ3Bpb2NoaXAwIgojZGVmaW5lIEdQSU9fSUxTICAgICAyNyAgICAgIC8vIEdQSU8yNyBlbiBlbnRyw6llIChJTFMgYXUgKzMuM1YpCiNkZWZpbmUgR1BJT19TT1JUSUUgIDE3ICAgICAgLy8gR1BJTzE3IGVuIHNvcnRpZQojZGVmaW5lIERFTEFZX01TICAgICA1MCAgICAgIC8vIETDqWxhaSBkZSBsZWN0dXJlCgp2b2xhdGlsZSBzaWdfYXRvbWljX3Qgc3RvcCA9IDA7CgovKiBpbnRlcnJ1cHRpb24gU0lHSU5UIGN0cmwgYyAqLwp2b2lkIGhhbmRsZV9zaWdpbnQoaW50IHNpZykgewogICAgcHJpbnRmKCJcbkludGVyY2VwdGlvbiBDVFJMK0NcbiIpOyAgLy8gRGVidWcgdmlzaWJsZQogICAgc3RvcCA9IDE7Cn0KCmludCBtYWluKCkgewogICAgc3RydWN0IGdwaW9kX2NoaXAgKmNoaXA7CiAgICBzdHJ1Y3QgZ3Bpb2RfbGluZSAqaWxzLCAqc29ydGllOwogICAgc3RydWN0IGdwaW9kX2xpbmVfcmVxdWVzdF9jb25maWcgY2ZnX2lscyA9IHsKICAgICAgICAuY29uc3VtZXIgPSAiSUxTIiwKICAgICAgICAucmVxdWVzdF90eXBlID0gR1BJT0RfTElORV9SRVFVRVNUX0RJUkVDVElPTl9JTlBVVCwKICAgICAgICAuZmxhZ3MgPSBHUElPRF9MSU5FX1JFUVVFU1RfRkxBR19CSUFTX1BVTExfRE9XTiAgLy8gUHVsbC1kb3duIGludGVybmUKICAgIH07CgogICAgLy8gMS4gSW5pdGlhbGlzYXRpb24gR1BJTwogICAgY2hpcCA9IGdwaW9kX2NoaXBfb3Blbl9ieV9uYW1lKEdQSU9fQ0hJUCk7CiAgICBpZiAoIWNoaXApIHsKICAgICAgICBwZXJyb3IoIkVycmV1ciBvdXZlcnR1cmUgY2hpcCBHUElPIik7CiAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgIH0KCiAgICAvLyAyLiBDb25maWd1cmF0aW9uIGVudHLDqWUgKElMUykgYXZlYyBwdWxsLWRvd24KICAgIGlscyA9IGdwaW9kX2NoaXBfZ2V0X2xpbmUoY2hpcCwgR1BJT19JTFMpOwogICAgaWYgKCFpbHMgfHwgZ3Bpb2RfbGluZV9yZXF1ZXN0KGlscywgJmFtcDtjZmdfaWxzLCAwKSkgewogICAgICAgIHBlcnJvcigiRXJyZXVyIGNvbmZpZ3VyYXRpb24gSUxTIik7CiAgICAgICAgZ3Bpb2RfY2hpcF9jbG9zZShjaGlwKTsKICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgfQoKICAgIC8vIDMuIENvbmZpZ3VyYXRpb24gc29ydGllCiAgICBzb3J0aWUgPSBncGlvZF9jaGlwX2dldF9saW5lKGNoaXAsIEdQSU9fU09SVElFKTsKICAgIGlmICghc29ydGllIHx8IGdwaW9kX2xpbmVfcmVxdWVzdF9vdXRwdXQoc29ydGllLCAic29ydGllIiwgMCkpIHsKICAgICAgICBwZXJyb3IoIkVycmV1ciBjb25maWd1cmF0aW9uIHNvcnRpZSIpOwogICAgICAgIGdwaW9kX2xpbmVfcmVsZWFzZShpbHMpOwogICAgICAgIGdwaW9kX2NoaXBfY2xvc2UoY2hpcCk7CiAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgIH0KCiAgICAvLyA0LiBHZXN0aW9uIENUUkwrQwogICAgc2lnbmFsKFNJR0lOVCwgaGFuZGxlX3NpZ2ludCk7CgogICAgcHJpbnRmKCJNb25pdG9yaW5nIElMUyBzdXIgR1BJTyVkIOKGkiBTb3J0aWUgR1BJTyVkXG4iLCBHUElPX0lMUywgR1BJT19TT1JUSUUpOwogICAgcHJpbnRmKCJTY2jDqW1hIDogSUxTKCszLjNWKSDihpIgR1BJTyVkIHwgUHVsbC1kb3duIGludGVybmUgYWN0aXbDqVxuIiwgR1BJT19JTFMpOwoKICAgIC8vIDUuIEJvdWNsZSBwcmluY2lwYWxlCiAgICB3aGlsZSAoIXN0b3ApIHsKICAgICAgICBpbnQgZXRhdCA9IGdwaW9kX2xpbmVfZ2V0X3ZhbHVlKGlscyk7CiAgICAgICAgZ3Bpb2RfbGluZV9zZXRfdmFsdWUoc29ydGllLCBldGF0KTsKICAgICAgICB1c2xlZXAoREVMQVlfTVMgKiAxMDAwKTsKICAgIH0KCiAgICAvLyA2LiBOZXR0b3lhZ2UKICAgIGdwaW9kX2xpbmVfcmVsZWFzZShpbHMpOwogICAgZ3Bpb2RfbGluZV9yZWxlYXNlKHNvcnRpZSk7CiAgICBncGlvZF9jaGlwX2Nsb3NlKGNoaXApOwogICAgcHJpbnRmKCJcbkFycsOqdCBwcm9wcmVcbiIpOwoKICAgIHJldHVybiBFWElUX1NVQ0NFU1M7Cn08L3ByZT53E2VubGlnaHRlci9jb2RlYmxvY2t3rRAjaW5jbHVkZSA8Z3Bpb2QuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8c2lnbmFsLmg+CgojZGVmaW5lIEdQSU9fQ0hJUCAgICAiZ3Bpb2NoaXAwIgojZGVmaW5lIEdQSU9fSUxTICAgICAyNyAgICAgIC8vIEdQSU8yNyBlbiBlbnRyw6llIChJTFMgYXUgKzMuM1YpCiNkZWZpbmUgR1BJT19TT1JUSUUgIDE3ICAgICAgLy8gR1BJTzE3IGVuIHNvcnRpZQojZGVmaW5lIERFTEFZX01TICAgICA1MCAgICAgIC8vIETDqWxhaSBkZSBsZWN0dXJlCgp2b2xhdGlsZSBzaWdfYXRvbWljX3Qgc3RvcCA9IDA7CgovKiBpbnRlcnJ1cHRpb24gU0lHSU5UIGN0cmwgYyAqLwp2b2lkIGhhbmRsZV9zaWdpbnQoaW50IHNpZykgewogICAgcHJpbnRmKCJcbkludGVyY2VwdGlvbiBDVFJMK0NcbiIpOyAgLy8gRGVidWcgdmlzaWJsZQogICAgc3RvcCA9IDE7Cn0KCmludCBtYWluKCkgewogICAgc3RydWN0IGdwaW9kX2NoaXAgKmNoaXA7CiAgICBzdHJ1Y3QgZ3Bpb2RfbGluZSAqaWxzLCAqc29ydGllOwogICAgc3RydWN0IGdwaW9kX2xpbmVfcmVxdWVzdF9jb25maWcgY2ZnX2lscyA9IHsKICAgICAgICAuY29uc3VtZXIgPSAiSUxTIiwKICAgICAgICAucmVxdWVzdF90eXBlID0gR1BJT0RfTElORV9SRVFVRVNUX0RJUkVDVElPTl9JTlBVVCwKICAgICAgICAuZmxhZ3MgPSBHUElPRF9MSU5FX1JFUVVFU1RfRkxBR19CSUFTX1BVTExfRE9XTiAgLy8gUHVsbC1kb3duIGludGVybmUKICAgIH07CgogICAgLy8gMS4gSW5pdGlhbGlzYXRpb24gR1BJTwogICAgY2hpcCA9IGdwaW9kX2NoaXBfb3Blbl9ieV9uYW1lKEdQSU9fQ0hJUCk7CiAgICBpZiAoIWNoaXApIHsKICAgICAgICBwZXJyb3IoIkVycmV1ciBvdXZlcnR1cmUgY2hpcCBHUElPIik7CiAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgIH0KCiAgICAvLyAyLiBDb25maWd1cmF0aW9uIGVudHLDqWUgKElMUykgYXZlYyBwdWxsLWRvd24KICAgIGlscyA9IGdwaW9kX2NoaXBfZ2V0X2xpbmUoY2hpcCwgR1BJT19JTFMpOwogICAgaWYgKCFpbHMgfHwgZ3Bpb2RfbGluZV9yZXF1ZXN0KGlscywgJmNmZ19pbHMsIDApKSB7CiAgICAgICAgcGVycm9yKCJFcnJldXIgY29uZmlndXJhdGlvbiBJTFMiKTsKICAgICAgICBncGlvZF9jaGlwX2Nsb3NlKGNoaXApOwogICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICB9CgogICAgLy8gMy4gQ29uZmlndXJhdGlvbiBzb3J0aWUKICAgIHNvcnRpZSA9IGdwaW9kX2NoaXBfZ2V0X2xpbmUoY2hpcCwgR1BJT19TT1JUSUUpOwogICAgaWYgKCFzb3J0aWUgfHwgZ3Bpb2RfbGluZV9yZXF1ZXN0X291dHB1dChzb3J0aWUsICJzb3J0aWUiLCAwKSkgewogICAgICAgIHBlcnJvcigiRXJyZXVyIGNvbmZpZ3VyYXRpb24gc29ydGllIik7CiAgICAgICAgZ3Bpb2RfbGluZV9yZWxlYXNlKGlscyk7CiAgICAgICAgZ3Bpb2RfY2hpcF9jbG9zZShjaGlwKTsKICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgfQoKICAgIC8vIDQuIEdlc3Rpb24gQ1RSTCtDCiAgICBzaWduYWwoU0lHSU5ULCBoYW5kbGVfc2lnaW50KTsKCiAgICBwcmludGYoIk1vbml0b3JpbmcgSUxTIHN1ciBHUElPJWQg4oaSIFNvcnRpZSBHUElPJWRcbiIsIEdQSU9fSUxTLCBHUElPX1NPUlRJRSk7CiAgICBwcmludGYoIlNjaMOpbWEgOiBJTFMoKzMuM1YpIOKGkiBHUElPJWQgfCBQdWxsLWRvd24gaW50ZXJuZSBhY3RpdsOpXG4iLCBHUElPX0lMUyk7CgogICAgLy8gNS4gQm91Y2xlIHByaW5jaXBhbGUKICAgIHdoaWxlICghc3RvcCkgewogICAgICAgIGludCBldGF0ID0gZ3Bpb2RfbGluZV9nZXRfdmFsdWUoaWxzKTsKICAgICAgICBncGlvZF9saW5lX3NldF92YWx1ZShzb3J0aWUsIGV0YXQpOwogICAgICAgIHVzbGVlcChERUxBWV9NUyAqIDEwMDApOwogICAgfQoKICAgIC8vIDYuIE5ldHRveWFnZQogICAgZ3Bpb2RfbGluZV9yZWxlYXNlKGlscyk7CiAgICBncGlvZF9saW5lX3JlbGVhc2Uoc29ydGllKTsKICAgIGdwaW9kX2NoaXBfY2xvc2UoY2hpcCk7CiAgICBwcmludGYoIlxuQXJyw6p0IHByb3ByZVxuIik7CgogICAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKfXcBY3cAdwB3AHcAdwB3AHl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AdyQyOGZhMjVmYi1mZTUwLTRmN2MtYTgzZS0wYTdkMWI1MGQwNGR4d9oBPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIiBpZD0iZG9ubmVyLWxhLWNvbW1hbmRlLXF1aS1hLXBlcm1pcy1kZS1yZXNvdWRyZS1sZS1mYWl0LWQtYXZvaXItZW5sZXZlLWxhLXJlc2lzdGFuY2UtZXh0ZXJuZSI+RG9ubmVyIGxhIGNvbW1hbmRlIHF1aSBhIHBlcm1pcyBkZSByw6lzb3VkcmUgbGUgZmFpdCBkJ2F2b2lyIGVubGV2w6kgbGEgcmVzaXN0YW5jZSBleHRlcm5lPC9oMz53DGNvcmUvaGVhZGluZ30DeXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3WGRvbm5lci1sYS1jb21tYW5kZS1xdWktYS1wZXJtaXMtZGUtcmVzb3VkcmUtbGUtZmFpdC1kLWF2b2lyLWVubGV2ZS1sYS1yZXNpc3RhbmNlLWV4dGVybmV3JDgyNWZhNDIzLTU2NDQtNDQzMC1hYWQ5LWExMjYwNWVhY2NiMnh3ygE8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciIGlkPSJlbi1xdW9pLWNlLWNvZGUtZXN0LWFtZWxpb3JlLWhvcm1pcy1sYS1tb2RpZmljYXRpb24tYXZlYy1sYS1yZXNpc3RhbmNlLWVuLW1vaW5zIj5FbiBxdW9pIGNlIGNvZGUgZXN0IGFtw6lsaW9yw6kgaG9ybWlzIGxhIG1vZGlmaWNhdGlvbiBhdmVjIGxhIHLDqXNpc3RhbmNlIGVuIG1vaW5zLjwvaDM+dwxjb3JlL2hlYWRpbmd9A3l5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0Ad09lbi1xdW9pLWNlLWNvZGUtZXN0LWFtZWxpb3JlLWhvcm1pcy1sYS1tb2RpZmljYXRpb24tYXZlYy1sYS1yZXNpc3RhbmNlLWVuLW1vaW5zdyRhYTM1MGNkMi1kMjAxLTRmOTEtODYwNy1iNjEzNjRkN2NlMWJ4d5EBPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIiBpZD0iYXZlYy1nZGItc3VydmVpbGxlci1sYS1yZWFjdGlvbi1hdS1jdHJsLWMtZXhwbGlxdWVyIj5BdmVjIEdEQiBTdXJ2ZWlsbGVyIGxhIHLDqWFjdGlvbiBhdSBjdHJsIGMgLCBleHBsaXF1ZXI8L2gzPncMY29yZS9oZWFkaW5nfQN5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHczYXZlYy1nZGItc3VydmVpbGxlci1sYS1yZWFjdGlvbi1hdS1jdHJsLWMtZXhwbGlxdWVydyQ2NjE3MDdkOC0yZDQ5LTQ1ODAtODcwNC1jZjFiNjhkZjAyYmV4d1k8cD5zb3VzIGdkYiAsIHF1YW5kIG9uIGZhaXQgY3RybCBjICheYyksICBjJ2VzdCBnZGIgcXVpIHLDqXBvbmQgISEgZXQgcGFzIG5vdHJlIGNvZGUhPC9wPncOY29yZS9wYXJhZ3JhcGh5eXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JDcyYWFhMGIxLTk5MjItNDk5Ni1iZDVlLTQ0NzEyNTIzMGFhMnh3TDxwPmRvbmMgaWwgZmF1dCBkaXJlIGEgZ2RiIGRlIG5lIHBhcyByw6lhZ2lyIGEgY3RybCBjICwgYXZlYyBsYSBjb21tYW5kZTwvcD53DmNvcmUvcGFyYWdyYXBoeXl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AdyQ5YzE1NTNlYS0xNjYzLTQ0YzktOGJkNy1hZWNmMDgwMWNmMjB4d0o8cHJlIGNsYXNzPSJ3cC1ibG9jay1wcmVmb3JtYXR0ZWQiPmhhbmRsZSBTSUdJTlQgbm9zdG9wIG5vcHJpbnQgcGFzczwvcHJlPncRY29yZS9wcmVmb3JtYXR0ZWR5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckMTIzNzYxNWEtNTFhZi00ZTk5LTgwNTEtYzU0NjI0Mjc4ZmQ3eHeZATxwPmNlIHF1aSBub3VzIHBlcm1ldHRyYSBlbnN1aXRlIGRlIG1ldHRyZSB1biBwb2ludCBkJ2FycsOqdCBsaWduZSAxNiBwb3VyIHPigJlhcnLDqnRlciBkYW5zIGxhIGZvbmN0aW9uIDxzdHJvbmc+dm9pZCBoYW5kbGVfc2lnaW50KGludCBzaWcpPC9zdHJvbmc+PC9wPncOY29yZS9wYXJhZ3JhcGh5eXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JDAyY2IzYzdjLTBjNTktNGQ1Ny05YWY5LTA2NWYxYzUyZDliZnh3NTxwPmludGVycnVwdGlvbiBwcm92b3F1w6llIHBhciBsZSBjdHJsIGMgKFNJR0lOVCk8L3A+dw5jb3JlL3BhcmFncmFwaHl5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckZWNlMzZkODgtYmEwOC00NDkzLWIyMjktODBiOGMxODg4MDUweHdMPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIiBpZD0iZXhwbGlxdWVyLWF2ZWMtZ2RiIj5FeHBsaXF1ZXIgYXZlYyBnZGI8L2gzPncMY29yZS9oZWFkaW5nfQN5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHcSZXhwbGlxdWVyLWF2ZWMtZ2RidyQ0NGQ4MjRiZC02NGQ4LTQzMDItOGIxYS1iMzdiOGRkMzJmYzF4d4IBPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIiBpZD0iYXZlYy1tb25pYS1kb25uZXItbGVzLW9yZ2FuaWdyYW1tZXMtZXQtbGVzLXBsIj5BdmVjIE1vbmlhIGRvbm5lciBsZXMgb3JnYW5pZ3JhbW1lcyBldCBsZXMgUEw8L2gzPncMY29yZS9oZWFkaW5nfQN5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHctYXZlYy1tb25pYS1kb25uZXItbGVzLW9yZ2FuaWdyYW1tZXMtZXQtbGVzLXBsdyQxYjYwYzMxYy1hZGQyLTQ3NmUtOWRjMi02ODY5NzFiZWQ2YjJ4dwc8cD48L3A+dw5jb3JlL3BhcmFncmFwaHl5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckNDkxZWE2MzctNjViOS00ZTQ5LWE1YzctMjNlZGE3MjU1YzgyeHe5ATxoMiBjbGFzcz0id3AtYmxvY2staGVhZGluZyIgaWQ9Im9uLXZhLXV0aWxpc2VyLWxhLXNvbmRlLW51bWVyaXF1ZS1zYWxlYWUiPk9uIHZhIHV0aWxpc2VyIGxhIDxhIGhyZWY9Imh0dHBzOi8vd29ya2Jvb3QuZnIvY2llbGEvc29uZGUtbnVtZXJpcXVlLXNhbGVhZS8iPnNvbmRlIG51bcOpcmlxdWUgU0FMRUFFPC9hPjwvaDI+dwxjb3JlL2hlYWRpbmd9Anl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0Adyhvbi12YS11dGlsaXNlci1sYS1zb25kZS1udW1lcmlxdWUtc2FsZWFldyRmNmRkMzQ0Zi1iYjViLTRkNGEtOTNkNC1mZDNiNTM4NWJhNTR4d088cD5vbiB2YSB1dGlsaXNlciBsYSBzb25kZSBTQUxFQUUgcG91ciByZWxldmVyIGxlcyBzaWduYXV4IEdQSU8yNyBldCBHUElPMTc8L3A+dw5jb3JlL3BhcmFncmFwaHl5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckYWVkNzk4Y2YtMWU2Yi00NTRjLTlkMWItN2M5NDNjMmJiZDZheHcSPHA+Y2gwOiBHUElPMTc8L3A+dw5jb3JlL3BhcmFncmFwaHl5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckZjY3OTYzMzctYWUwMy00MmYxLWI3NzYtZjIyNGU1NjlmZTM4eHcSPHA+Y2gxOiBHUElPMjc8L3A+dw5jb3JlL3BhcmFncmFwaHl5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckMjA4MjRlZTAtODM3Zi00ZjU3LTg3NWEtN2FlMTZmYjJhZjc1eHcwPHA+bmUgcGFzIG91YmxpZXIgZGUgYnJhbmNoZXIgbGEgbWFzc2UgKEdORCk8L3A+dw5jb3JlL3BhcmFncmFwaHl5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHckNmI4MTI4ZjAtM2UwNi00NjgzLTkwYmMtODE5MjZjM2Y4YzMweHcHPHA+PC9wPncOY29yZS9wYXJhZ3JhcGh5eXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JDI1OWU0YmY0LWExNjQtNDg3OC05NWI1LTZlZjNlOTFlOGMyNnh3aTxoMiBjbGFzcz0id3AtYmxvY2staGVhZGluZyIgaWQ9ImNvZGUtYmxpbmstZ3BpbzE3LWMtYXZlYy1jdHJsLWMiPkNvZGUgYmxpbmsgZ3BpbzE3LmMgIChhdmVjIGN0cmwgYyk8L2gyPncMY29yZS9oZWFkaW5nfQJ5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHcfY29kZS1ibGluay1ncGlvMTctYy1hdmVjLWN0cmwtY3ckOGU2ZmJiYzctZTBhYy00ZjI2LWI1YzgtZmIzMDE5YTc4NGVheHeuEzxwcmUgY2xhc3M9IkVubGlnaHRlckpTUkFXIiBkYXRhLWVubGlnaHRlci1sYW5ndWFnZT0iYyIgZGF0YS1lbmxpZ2h0ZXItdGhlbWU9IiIgZGF0YS1lbmxpZ2h0ZXItaGlnaGxpZ2h0PSIiIGRhdGEtZW5saWdodGVyLWxpbmVudW1iZXJzPSIiIGRhdGEtZW5saWdodGVyLWxpbmVvZmZzZXQ9IiIgZGF0YS1lbmxpZ2h0ZXItdGl0bGU9IiIgZGF0YS1lbmxpZ2h0ZXItZ3JvdXA9IiI+LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBCbGluayBHUElPMTcgTGliZ3Bpb2QgMS42ICAgICovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCiNpbmNsdWRlICZsdDtncGlvZC5oPgojaW5jbHVkZSAmbHQ7c3RkaW8uaD4KI2luY2x1ZGUgJmx0O3N0ZGxpYi5oPgojaW5jbHVkZSAmbHQ7dW5pc3RkLmg+CiNpbmNsdWRlICZsdDtzaWduYWwuaD4KCnN0cnVjdCBncGlvZF9saW5lICpsZWRfbGluZSA9IE5VTEw7IC8qIETDqWNsYXLDqSBnbG9iYWwgcG91ciBsZSBnZXN0aW9ubmFpcmUgZGUgc2lnbmFsICovCgovKiBHw6hyZSBDdHJsK0MgcG91ciDDqXRlaW5kcmUgbGEgTEVEIGV0IGxpYsOpcmVyIGxlcyBHUElPICovCnZvaWQgc2lnbmFsX2hhbmRsZXIoaW50IHNpZ25vKSAKewogICAgaWYgKHNpZ25vID09IFNJR0lOVCkgewogICAgICAgIHByaW50ZigiXG5FeHRpbmN0aW9uIGV0IG5ldHRveWFnZS4uLlxuIik7CiAgICAgICAgaWYgKGxlZF9saW5lKSB7CiAgICAgICAgICAgIGdwaW9kX2xpbmVfc2V0X3ZhbHVlKGxlZF9saW5lLCAwKTsgLyogw4l0ZWludCBsYSBMRUQgICAqLwogICAgICAgICAgICBncGlvZF9saW5lX3JlbGVhc2UobGVkX2xpbmUpOyAgICAgIC8qIExpYsOocmUgbGEgbGlnbmUgKi8KICAgICAgICB9CiAgICAgICAgZXhpdChFWElUX1NVQ0NFU1MpOwogICAgfQp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KaW50IG1haW4oKSAKewogICAgY29uc3QgY2hhciAqY2hpcG5hbWUgPSAiZ3Bpb2NoaXAwIjsKICAgIGNvbnN0IGludCBsZWRfcGluID0gMTc7IC8qIEdQSU8xNywgYnJvY2hlIHBoeXNpcXVlIDExICovCgogICAgLyogMS4gT1VWRVJUVVJFIGR1IGNoaXAgKi8KICAgIHN0cnVjdCBncGlvZF9jaGlwICpjaGlwID0gZ3Bpb2RfY2hpcF9vcGVuX2J5X25hbWUoY2hpcG5hbWUpOwogICAgaWYgKCFjaGlwKSAKICAgIAl7CiAgICAgICAgcGVycm9yKCJFcnJldXIgb3V2ZXJ0dXJlIGNoaXAiKTsKICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgCX0KCiAgICAvKiAyLiBDT05GSUdVUkFUSU9OIGRlIGxhIGxpZ25lIGVuIFNPUlRJRSAqLwogICAgbGVkX2xpbmUgPSBncGlvZF9jaGlwX2dldF9saW5lKGNoaXAsIGxlZF9waW4pOwogICAgaWYgKCFsZWRfbGluZSkgCiAgICAJewogICAgICAgIHBlcnJvcigiRXJyZXVyIG9idGVudGlvbiBsaWduZSIpOwogICAgICAgIGdwaW9kX2NoaXBfY2xvc2UoY2hpcCk7CiAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgIAl9CiAgICAvKiBWYWxldXIgaW5pdGlhbGUgPSAwIChMRUQgw6l0ZWludGUgYXUgZMOpbWFycmFnZSkgKi8KICAgIGlmIChncGlvZF9saW5lX3JlcXVlc3Rfb3V0cHV0KGxlZF9saW5lLCAiYmxpbmtfYXBwIiwgMCkgJmx0OyAwKSAKICAgIAl7CiAgICAgICAgcGVycm9yKCJFcnJldXIgY29uZmlndXJhdGlvbiBzb3J0aWUiKTsKICAgICAgICBncGlvZF9jaGlwX2Nsb3NlKGNoaXApOwogICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAJfQkKCiAgICBzaWduYWwoU0lHSU5ULCBzaWduYWxfaGFuZGxlcik7IC8qIENhcHR1cmUgc2lnbmFsIEN0cmwrQyAqLwogICAgcHJpbnRmKCJMRUQgY2xpZ25vdGFudGUgKEdQSU8lZCkuIEN0cmwrQyBwb3VyIGFycsOqdGVyLlxuIiwgbGVkX3Bpbik7CgogICAgLyogMy4gVVRJTElTQVRJT04gOiBCb3VjbGUgZGUgbGVjdHVyZS\/DqWNyaXR1cmUgKi8KICAgIHdoaWxlICgxKSAKICAgIHsKICAgICAgICBncGlvZF9saW5lX3NldF92YWx1ZShsZWRfbGluZSwgMSk7IC8qIEFsbHVtZSAqLwogICAgICAgIHByaW50Zigiw4l0YXQ6IE9OXG4iKTsKICAgICAgICBzbGVlcCgxKTsKICAgICAgICBncGlvZF9saW5lX3NldF92YWx1ZShsZWRfbGluZSwgMCk7IC8qIMOJdGVpbnQgKi8KICAgICAgICBwcmludGYoIsOJdGF0OiBPRkZcbiIpOwogICAgICAgIHNsZWVwKDEpOwogICAgfQoKICAgIC8qIDQuIE5FVFRPWUFHRSAoZW4gcHJpbmNpcGUgamFtYWlzIGF0dGVpbnQgw6AgY2F1c2UgZGUgbGEgYm91Y2xlIGluZmluaWUpCiAgICAgICBMZSBnZXN0aW9ubmFpcmUgZGUgc2lnbmFsIGBzaWduYWxfaGFuZGxlcmAgcydlbiBjaGFyZ2UuCiAgICAgICBncGlvZF9jaGlwX2Nsb3NlKGNoaXApOyAvLyBTZXJhaXQgw6AgZmFpcmUgaWNpIHNpIHBhcyBkZSBib3VjbGUgaW5maW5pZSAqLwogICAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKfTwvcHJlPncTZW5saWdodGVyL2NvZGVibG9ja3e\/ES8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyogQmxpbmsgR1BJTzE3IExpYmdwaW9kIDEuNiAgICAqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgojaW5jbHVkZSA8Z3Bpb2QuaD4KI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8c2lnbmFsLmg+CgpzdHJ1Y3QgZ3Bpb2RfbGluZSAqbGVkX2xpbmUgPSBOVUxMOyAvKiBEw6ljbGFyw6kgZ2xvYmFsIHBvdXIgbGUgZ2VzdGlvbm5haXJlIGRlIHNpZ25hbCAqLwoKLyogR8OocmUgQ3RybCtDIHBvdXIgw6l0ZWluZHJlIGxhIExFRCBldCBsaWLDqXJlciBsZXMgR1BJTyAqLwp2b2lkIHNpZ25hbF9oYW5kbGVyKGludCBzaWdubykgCnsKICAgIGlmIChzaWdubyA9PSBTSUdJTlQpIHsKICAgICAgICBwcmludGYoIlxuRXh0aW5jdGlvbiBldCBuZXR0b3lhZ2UuLi5cbiIpOwogICAgICAgIGlmIChsZWRfbGluZSkgewogICAgICAgICAgICBncGlvZF9saW5lX3NldF92YWx1ZShsZWRfbGluZSwgMCk7IC8qIMOJdGVpbnQgbGEgTEVEICAgKi8KICAgICAgICAgICAgZ3Bpb2RfbGluZV9yZWxlYXNlKGxlZF9saW5lKTsgICAgICAvKiBMaWLDqHJlIGxhIGxpZ25lICovCiAgICAgICAgfQogICAgICAgIGV4aXQoRVhJVF9TVUNDRVNTKTsKICAgIH0KfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmludCBtYWluKCkgCnsKICAgIGNvbnN0IGNoYXIgKmNoaXBuYW1lID0gImdwaW9jaGlwMCI7CiAgICBjb25zdCBpbnQgbGVkX3BpbiA9IDE3OyAvKiBHUElPMTcsIGJyb2NoZSBwaHlzaXF1ZSAxMSAqLwoKICAgIC8qIDEuIE9VVkVSVFVSRSBkdSBjaGlwICovCiAgICBzdHJ1Y3QgZ3Bpb2RfY2hpcCAqY2hpcCA9IGdwaW9kX2NoaXBfb3Blbl9ieV9uYW1lKGNoaXBuYW1lKTsKICAgIGlmICghY2hpcCkgCiAgICAJewogICAgICAgIHBlcnJvcigiRXJyZXVyIG91dmVydHVyZSBjaGlwIik7CiAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgIAl9CgogICAgLyogMi4gQ09ORklHVVJBVElPTiBkZSBsYSBsaWduZSBlbiBTT1JUSUUgKi8KICAgIGxlZF9saW5lID0gZ3Bpb2RfY2hpcF9nZXRfbGluZShjaGlwLCBsZWRfcGluKTsKICAgIGlmICghbGVkX2xpbmUpIAogICAgCXsKICAgICAgICBwZXJyb3IoIkVycmV1ciBvYnRlbnRpb24gbGlnbmUiKTsKICAgICAgICBncGlvZF9jaGlwX2Nsb3NlKGNoaXApOwogICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAJfQogICAgLyogVmFsZXVyIGluaXRpYWxlID0gMCAoTEVEIMOpdGVpbnRlIGF1IGTDqW1hcnJhZ2UpICovCiAgICBpZiAoZ3Bpb2RfbGluZV9yZXF1ZXN0X291dHB1dChsZWRfbGluZSwgImJsaW5rX2FwcCIsIDApIDwgMCkgCiAgICAJewogICAgICAgIHBlcnJvcigiRXJyZXVyIGNvbmZpZ3VyYXRpb24gc29ydGllIik7CiAgICAgICAgZ3Bpb2RfY2hpcF9jbG9zZShjaGlwKTsKICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgCX0JCgogICAgc2lnbmFsKFNJR0lOVCwgc2lnbmFsX2hhbmRsZXIpOyAvKiBDYXB0dXJlIHNpZ25hbCBDdHJsK0MgKi8KICAgIHByaW50ZigiTEVEIGNsaWdub3RhbnRlIChHUElPJWQpLiBDdHJsK0MgcG91ciBhcnLDqnRlci5cbiIsIGxlZF9waW4pOwoKICAgIC8qIDMuIFVUSUxJU0FUSU9OIDogQm91Y2xlIGRlIGxlY3R1cmUvw6ljcml0dXJlICovCiAgICB3aGlsZSAoMSkgCiAgICB7CiAgICAgICAgZ3Bpb2RfbGluZV9zZXRfdmFsdWUobGVkX2xpbmUsIDEpOyAvKiBBbGx1bWUgKi8KICAgICAgICBwcmludGYoIsOJdGF0OiBPTlxuIik7CiAgICAgICAgc2xlZXAoMSk7CiAgICAgICAgZ3Bpb2RfbGluZV9zZXRfdmFsdWUobGVkX2xpbmUsIDApOyAvKiDDiXRlaW50ICovCiAgICAgICAgcHJpbnRmKCLDiXRhdDogT0ZGXG4iKTsKICAgICAgICBzbGVlcCgxKTsKICAgIH0KCiAgICAvKiA0LiBORVRUT1lBR0UgKGVuIHByaW5jaXBlIGphbWFpcyBhdHRlaW50IMOgIGNhdXNlIGRlIGxhIGJvdWNsZSBpbmZpbmllKQogICAgICAgTGUgZ2VzdGlvbm5haXJlIGRlIHNpZ25hbCBgc2lnbmFsX2hhbmRsZXJgIHMnZW4gY2hhcmdlLgogICAgICAgZ3Bpb2RfY2hpcF9jbG9zZShjaGlwKTsgLy8gU2VyYWl0IMOgIGZhaXJlIGljaSBzaSBwYXMgZGUgYm91Y2xlIGluZmluaWUgKi8KICAgIHJldHVybiBFWElUX1NVQ0NFU1M7Cn13AWN3AHcAdwB3AHcAdwB5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHtCed\/bTuKQAHtB5m2PYeAAAAA=\",\"updateId\":350261050}","_uag_custom_page_level_css":"","footnotes":""},"class_list":["post-3202","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>RPI_3 Langage C - workboot<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"RPI_3 Langage C - workboot\" \/>\n<meta property=\"og:description\" content=\"\ud83d\udd52 : 3 h maximum Pr\u00e9requis: But: R\u00e9pertoire du travail: ~\/Works\/RPI_3 Installation sur RPI (normalement d\u00e9j\u00e0 fait) Sortie GPIO17 et LED ROUGE on reprend le m\u00eame montage, on ne change [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/\" \/>\n<meta property=\"og:site_name\" content=\"workboot\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-06T14:33:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/11\/Raspberry.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"200\" \/>\n\t<meta property=\"og:image:height\" content=\"200\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:label1\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/rpi_3-langage-c-et-rpi\\\/\",\"url\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/rpi_3-langage-c-et-rpi\\\/\",\"name\":\"RPI_3 Langage C - workboot\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/rpi_3-langage-c-et-rpi\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/rpi_3-langage-c-et-rpi\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/Raspberry.jpeg\",\"datePublished\":\"2025-07-29T07:26:44+00:00\",\"dateModified\":\"2026-05-06T14:33:44+00:00\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/workboot.fr\\\/ciela\\\/rpi_3-langage-c-et-rpi\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/rpi_3-langage-c-et-rpi\\\/#primaryimage\",\"url\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/Raspberry.jpeg\",\"contentUrl\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/Raspberry.jpeg\",\"width\":200,\"height\":200},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#website\",\"url\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/\",\"name\":\"workboot\",\"description\":\"Open Source, Open Minds \",\"publisher\":{\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#organization\",\"name\":\"workboot\",\"url\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/logo_ciel-dorian-1.png\",\"contentUrl\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/logo_ciel-dorian-1.png\",\"width\":1024,\"height\":950,\"caption\":\"workboot\"},\"image\":{\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"RPI_3 Langage C - workboot","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/","og_locale":"fr_FR","og_type":"article","og_title":"RPI_3 Langage C - workboot","og_description":"\ud83d\udd52 : 3 h maximum Pr\u00e9requis: But: R\u00e9pertoire du travail: ~\/Works\/RPI_3 Installation sur RPI (normalement d\u00e9j\u00e0 fait) Sortie GPIO17 et LED ROUGE on reprend le m\u00eame montage, on ne change [&hellip;]","og_url":"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/","og_site_name":"workboot","article_modified_time":"2026-05-06T14:33:44+00:00","og_image":[{"width":200,"height":200,"url":"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/11\/Raspberry.jpeg","type":"image\/jpeg"}],"twitter_misc":{"Dur\u00e9e de lecture estim\u00e9e":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/","url":"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/","name":"RPI_3 Langage C - workboot","isPartOf":{"@id":"https:\/\/workboot.fr\/ciela\/#website"},"primaryImageOfPage":{"@id":"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/#primaryimage"},"image":{"@id":"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/#primaryimage"},"thumbnailUrl":"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/11\/Raspberry.jpeg","datePublished":"2025-07-29T07:26:44+00:00","dateModified":"2026-05-06T14:33:44+00:00","inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/workboot.fr\/ciela\/rpi_3-langage-c-et-rpi\/#primaryimage","url":"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/11\/Raspberry.jpeg","contentUrl":"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/11\/Raspberry.jpeg","width":200,"height":200},{"@type":"WebSite","@id":"https:\/\/workboot.fr\/ciela\/#website","url":"https:\/\/workboot.fr\/ciela\/","name":"workboot","description":"Open Source, Open Minds ","publisher":{"@id":"https:\/\/workboot.fr\/ciela\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/workboot.fr\/ciela\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/workboot.fr\/ciela\/#organization","name":"workboot","url":"https:\/\/workboot.fr\/ciela\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/workboot.fr\/ciela\/#\/schema\/logo\/image\/","url":"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/05\/logo_ciel-dorian-1.png","contentUrl":"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/05\/logo_ciel-dorian-1.png","width":1024,"height":950,"caption":"workboot"},"image":{"@id":"https:\/\/workboot.fr\/ciela\/#\/schema\/logo\/image\/"}}]}},"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"admin","author_link":"https:\/\/workboot.fr\/ciela\/author\/admin\/"},"uagb_comment_info":0,"uagb_excerpt":"\ud83d\udd52 : 3 h maximum Pr\u00e9requis: But: R\u00e9pertoire du travail: ~\/Works\/RPI_3 Installation sur RPI (normalement d\u00e9j\u00e0 fait) Sortie GPIO17 et LED ROUGE on reprend le m\u00eame montage, on ne change [&hellip;]","_links":{"self":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages\/3202","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/comments?post=3202"}],"version-history":[{"count":61,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages\/3202\/revisions"}],"predecessor-version":[{"id":8020,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages\/3202\/revisions\/8020"}],"wp:attachment":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/media?parent=3202"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}