<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>54135</bug_id>
          
          <creation_ts>2011-02-09 12:32:25 -0800</creation_ts>
          <short_desc>Web Inspector: define interface per domain in Inspector.idl.</short_desc>
          <delta_ts>2011-02-10 06:10:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>54112</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>348469</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-02-09 12:32:25 -0800</bug_when>
    <thetext>Inspector.idl should look like:

    interface [Conditional=INSPECTOR] DOM {
        void start();
        void stop();
        void getChildNodes(in long nodeId);
        void pushNodeToFrontend(in Object objectId, out Value result);
        ...
        [notify] void childNodeInserted(out long parentId, out long prevId, out Object node);
        [notify] void childNodeRemoved(out long parentId, out long id);
    };

    interface [Conditional=INSPECTOR] CSS {
        void setPropertyText(in Object styleId, in long propertyIndex, in String text, in boolean overwrite, out Value style);
        ...
        void querySelectorAll(in long documentId, in String selector, out Array result);
    };

    interface [Conditional=INSPECTOR] Timeline {
        void start();
        void stop();
        [notify] void timelineProfilerWasStarted();
        ...
        [notify] void addRecordToTimeline(out Object record);
    };

I.e. interface name defines domain, functions within domain have unique names.

Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348608</commentid>
    <comment_count>1</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2011-02-09 14:58:47 -0800</bug_when>
    <thetext>Looks good to me.  But haven&apos;t looked at the hit to my parser yet :-)

Here&apos;s another thing we could do, to handle [notify] methods.  Split notify methods into a separate interface, named [OriginalInterfaceName]Notify.  That&apos;s what my parsing actually does; for instance, the IDL in the description would have the following interfaces:

   DOM
   DOMNotify
   CSS
   Timeline
   TimelineNotify

But it&apos;s not a big deal to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348993</commentid>
    <comment_count>2</comment_count>
      <attachid>81962</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-02-10 05:54:25 -0800</bug_when>
    <thetext>Created attachment 81962
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349003</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-10 05:59:45 -0800</bug_when>
    <thetext>Attachment 81962 did not build on chromium:
Build output: http://queues.webkit.org/results/7884283</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349006</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-02-10 06:03:37 -0800</bug_when>
    <thetext>Committed r78212: &lt;http://trac.webkit.org/changeset/78212&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349013</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-10 06:10:53 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/78212 might have broken Chromium Linux Release</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81962</attachid>
            <date>2011-02-10 05:54:25 -0800</date>
            <delta_ts>2011-02-10 06:00:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54135-20110210165423.patch</filename>
            <type>text/plain</type>
            <size>48458</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzgyMDkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxN2M4YzI3OWIxZWE3OTk1
MTk3NGM1MjhkNzZhNTliN2ExMDNiNzc1Li5iYTFlZGYwZWFiNTFjZGI1MWU0YTg2NjQzNjVkMGRj
NGE0MTM0ZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDItMTAgIFBhdmVs
IEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZGVmaW5lIGludGVyZmFj
ZSBwZXIgZG9tYWluIGluIEluc3BlY3Rvci5pZGwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDEzNQorCisgICAgICAgICogaW5zcGVjdG9yL0NvZGVH
ZW5lcmF0b3JJbnNwZWN0b3IucG06CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5pZGw6
CisKIDIwMTEtMDItMTAgIHRha2FubyB0YWt1bWkgIDx0YWthbm9AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbSBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtCmluZGV4IGE0Yzc3YTU3NWVlNDI1ODFh
NWY5YTQ4MTMxZTYzMTQ1MDkwMWMxNzkuLmU0ZTE5YjA4MTJiNWIxY2FkZDljODFlZTdlOGI5Zjdi
YzgwNTU0ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJh
dG9ySW5zcGVjdG9yLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJh
dG9ySW5zcGVjdG9yLnBtCkBAIC0yMDUsMTggKzIwNSwyMCBAQCBteSAkbmFtZXNwYWNlOwogbXkg
JGJhY2tlbmRDbGFzc05hbWU7CiBteSAkYmFja2VuZEpTU3R1Yk5hbWU7CiBteSAlYmFja2VuZFR5
cGVzOwotbXkgJWJhY2tlbmRNZXRob2RzOworbXkgQGJhY2tlbmRNZXRob2RzOwogbXkgQGJhY2tl
bmRNZXRob2RzSW1wbDsKK215ICViYWNrZW5kTWV0aG9kU2lnbmF0dXJlczsKIG15ICRiYWNrZW5k
Q29uc3RydWN0b3I7CiBteSBAYmFja2VuZENvbnN0YW50RGVjbGFyYXRpb25zOwogbXkgQGJhY2tl
bmRDb25zdGFudERlZmluaXRpb25zOwogbXkgJGJhY2tlbmRGb290ZXI7Ci1teSBAYmFja2VuZFN0
dWJKUzsKK215IEBiYWNrZW5kSlNTdHViczsKIAogbXkgJGZyb250ZW5kQ2xhc3NOYW1lOwogbXkg
JWZyb250ZW5kVHlwZXM7Ci1teSAlZnJvbnRlbmRNZXRob2RzOworbXkgQGZyb250ZW5kTWV0aG9k
czsKIG15IEBmcm9udGVuZE1ldGhvZHNJbXBsOworbXkgJWZyb250ZW5kTWV0aG9kU2lnbmF0dXJl
czsKIG15ICRmcm9udGVuZENvbnN0cnVjdG9yOwogbXkgQGZyb250ZW5kQ29uc3RhbnREZWNsYXJh
dGlvbnM7CiBteSBAZnJvbnRlbmRDb25zdGFudERlZmluaXRpb25zOwpAQCAtMjU5LDE1ICsyNjEs
MTUgQEAgc3ViIEdlbmVyYXRlSW50ZXJmYWNlCiAKICAgICBteSAkY2xhc3NOYW1lID0gJGludGVy
ZmFjZS0+bmFtZTsKIAotICAgICRmcm9udGVuZENsYXNzTmFtZSA9ICRjbGFzc05hbWUgLiAiRnJv
bnRlbmQiOworICAgICRmcm9udGVuZENsYXNzTmFtZSA9ICJJbnNwZWN0b3JGcm9udGVuZCI7CiAg
ICAgJGZyb250ZW5kQ29uc3RydWN0b3IgPSAiICAgICR7ZnJvbnRlbmRDbGFzc05hbWV9KEluc3Bl
Y3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50KSA6IG1faW5zcGVjdG9yQ2xpZW50KGluc3BlY3Rv
ckNsaWVudCkgeyB9IjsKLSAgICAkZnJvbnRlbmRGb290ZXIgPSAiICAgIEluc3BlY3RvckNsaWVu
dCogbV9pbnNwZWN0b3JDbGllbnQ7IjsKKyAgICAkZnJvbnRlbmRGb290ZXIgPSAiICBwcml2YXRl
OlxuICAgIEluc3BlY3RvckNsaWVudCogbV9pbnNwZWN0b3JDbGllbnQ7IjsKICAgICAkZnJvbnRl
bmRUeXBlc3siU3RyaW5nIn0gPSAxOwogICAgICRmcm9udGVuZFR5cGVzeyJJbnNwZWN0b3JDbGll
bnQifSA9IDE7CiAgICAgJGZyb250ZW5kVHlwZXN7IlBhc3NSZWZQdHIifSA9IDE7CiAKLSAgICAk
YmFja2VuZENsYXNzTmFtZSA9ICRjbGFzc05hbWUgLiAiQmFja2VuZERpc3BhdGNoZXIiOwotICAg
ICRiYWNrZW5kSlNTdHViTmFtZSA9ICRjbGFzc05hbWUgLiAiQmFja2VuZFN0dWIiOworICAgICRi
YWNrZW5kQ2xhc3NOYW1lID0gIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIjsKKyAgICAkYmFj
a2VuZEpTU3R1Yk5hbWUgPSAiSW5zcGVjdG9yQmFja2VuZFN0dWIiOwogICAgIG15IEBiYWNrZW5k
SGVhZDsKICAgICBwdXNoKEBiYWNrZW5kSGVhZCwgIiAgICAke2JhY2tlbmRDbGFzc05hbWV9KElu
c3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCkgOiBtX2luc3BlY3RvckFnZW50KGluc3BlY3Rv
ckFnZW50KSB7IH0iKTsKICAgICBwdXNoKEBiYWNrZW5kSGVhZCwgIiAgICB2b2lkIHJlcG9ydFBy
b3RvY29sRXJyb3IoY29uc3QgbG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgZXJyb3JUZXh0KSBj
b25zdDsiKTsKQEAgLTI4MCwxMiArMjgyLDcgQEAgc3ViIEdlbmVyYXRlSW50ZXJmYWNlCiAgICAg
JGJhY2tlbmRUeXBlc3siUGFzc1JlZlB0ciJ9ID0gMTsKICAgICAkYmFja2VuZFR5cGVzeyJPYmpl
Y3QifSA9IDE7CiAKLSAgICBwdXNoKEBiYWNrZW5kTWV0aG9kc0ltcGwsIGdlbmVyYXRlQmFja2Vu
ZE1lc3NhZ2VQYXJzZXIoKSk7CiAgICAgZ2VuZXJhdGVGdW5jdGlvbnMoJGludGVyZmFjZSk7Ci0K
LSAgICAjIE1ha2UgZGlzcGF0Y2hlciBtZXRob2RzIHByaXZhdGUgb24gdGhlIGJhY2tlbmQuCi0g
ICAgcHVzaChAYmFja2VuZENvbnN0YW50RGVjbGFyYXRpb25zLCAiIik7Ci0gICAgcHVzaChAYmFj
a2VuZENvbnN0YW50RGVjbGFyYXRpb25zLCAicHJpdmF0ZToiKTsKIH0KIAogc3ViIGdlbmVyYXRl
RnVuY3Rpb25zCkBAIC0yOTQsNTUgKzI5MSw0OCBAQCBzdWIgZ2VuZXJhdGVGdW5jdGlvbnMKIAog
ICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRpbnRlcmZhY2UtPmZ1bmN0aW9uc30pIHsKICAg
ICAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsibm90
aWZ5In0pIHsKLSAgICAgICAgICAgIGdlbmVyYXRlRnJvbnRlbmRGdW5jdGlvbigkZnVuY3Rpb24p
OworICAgICAgICAgICAgZ2VuZXJhdGVGcm9udGVuZEZ1bmN0aW9uKCRpbnRlcmZhY2UsICRmdW5j
dGlvbik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBnZW5lcmF0ZUJhY2tlbmRGdW5j
dGlvbigkZnVuY3Rpb24pOworICAgICAgICAgICAgZ2VuZXJhdGVCYWNrZW5kRnVuY3Rpb24oJGlu
dGVyZmFjZSwgJGZ1bmN0aW9uKTsKICAgICAgICAgfQogICAgIH0KLSAgICBwdXNoKEBiYWNrZW5k
TWV0aG9kc0ltcGwsIGdlbmVyYXRlQmFja2VuZERpc3BhdGNoZXIoKSk7Ci0gICAgcHVzaChAYmFj
a2VuZE1ldGhvZHNJbXBsLCBnZW5lcmF0ZUJhY2tlbmRSZXBvcnRQcm90b2NvbEVycm9yKCkpOwog
Ci0gICAgZm9yZWFjaCBteSAkdHlwZSAoa2V5cyAlYmFja2VuZFR5cGVzKSB7Ci0gICAgICAgIGlm
ICgkdHlwZVRyYW5zZm9ybXskdHlwZX17IkpTT05UeXBlIn0pIHsKLSAgICAgICAgICAgIHB1c2go
QGJhY2tlbmRNZXRob2RzSW1wbCwgZ2VuZXJhdGVBcmd1bWVudEdldHRlcnMoJHR5cGUpKTsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIEBiYWNrZW5kU3R1YkpTID0gZ2VuZXJhdGVCYWNrZW5kU3R1
YkpTKCRpbnRlcmZhY2UpOworICAgIGNvbGxlY3RCYWNrZW5kSlNTdHViRnVuY3Rpb25zKCRpbnRl
cmZhY2UpOwogfQogCiBzdWIgZ2VuZXJhdGVGcm9udGVuZEZ1bmN0aW9uCiB7CisgICAgbXkgJGlu
dGVyZmFjZSA9IHNoaWZ0OwogICAgIG15ICRmdW5jdGlvbiA9IHNoaWZ0OwogCiAgICAgbXkgJGZ1
bmN0aW9uTmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwogCi0gICAgbXkgJGRvbWFp
biA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiZG9tYWluIn0g
fHwgIkluc3BlY3RvciI7CisgICAgbXkgJGRvbWFpbiA9ICRpbnRlcmZhY2UtPm5hbWU7CiAgICAg
bXkgQGFyZ3NGaWx0ZXJlZCA9IGdyZXAoJF8tPmRpcmVjdGlvbiBlcSAib3V0IiwgQHskZnVuY3Rp
b24tPnBhcmFtZXRlcnN9KTsgIyBqdXN0IGtlZXAgb25seSBvdXQgcGFyYW1ldGVycyBmb3IgZnJv
bnRlbmQgaW50ZXJmYWNlLgogICAgIG1hcCgkZnJvbnRlbmRUeXBlc3skXy0+dHlwZX0gPSAxLCBA
YXJnc0ZpbHRlcmVkKTsgIyByZWdpc3RlciByZXF1aXJlZCB0eXBlcy4KICAgICBteSAkYXJndW1l
bnRzID0gam9pbigiLCAiLCBtYXAoJHR5cGVUcmFuc2Zvcm17JF8tPnR5cGV9LT57InBhcmFtIn0g
LiAiICIgLiAkXy0+bmFtZSwgQGFyZ3NGaWx0ZXJlZCkpOyAjIHByZXBhcmUgYXJndW1lbnRzIGZv
ciBmdW5jdGlvbiBzaWduYXR1cmUuCiAKICAgICBteSAkc2lnbmF0dXJlID0gIiAgICB2b2lkICR7
ZnVuY3Rpb25OYW1lfSgke2FyZ3VtZW50c30pOyI7Ci0gICAgaWYgKCEkZnJvbnRlbmRNZXRob2Rz
eyR7c2lnbmF0dXJlfX0pIHsKLSAgICAgICAgJGZyb250ZW5kTWV0aG9kc3ske3NpZ25hdHVyZX19
ID0gMTsKLQotICAgICAgICBteSBAZnVuY3Rpb247Ci0gICAgICAgIHB1c2goQGZ1bmN0aW9uLCAi
dm9pZCAke2Zyb250ZW5kQ2xhc3NOYW1lfTo6JHtmdW5jdGlvbk5hbWV9KCR7YXJndW1lbnRzfSki
KTsKLSAgICAgICAgcHVzaChAZnVuY3Rpb24sICJ7Iik7Ci0gICAgICAgIHB1c2goQGZ1bmN0aW9u
LCAiICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+ICR7ZnVuY3Rpb25OYW1lfU1lc3NhZ2UgPSBJ
bnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOyIpOwotICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAg
ICAke2Z1bmN0aW9uTmFtZX1NZXNzYWdlLT5zZXRTdHJpbmcoXCJ0eXBlXCIsIFwiZXZlbnRcIik7
Iik7Ci0gICAgICAgIHB1c2goQGZ1bmN0aW9uLCAiICAgICR7ZnVuY3Rpb25OYW1lfU1lc3NhZ2Ut
PnNldFN0cmluZyhcImRvbWFpblwiLCBcIiRkb21haW5cIik7Iik7Ci0gICAgICAgIHB1c2goQGZ1
bmN0aW9uLCAiICAgICR7ZnVuY3Rpb25OYW1lfU1lc3NhZ2UtPnNldFN0cmluZyhcImV2ZW50XCIs
IFwiJGZ1bmN0aW9uTmFtZVwiKTsiKTsKLSAgICAgICAgcHVzaChAZnVuY3Rpb24sICIgICAgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gcGF5bG9hZERhdGFPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6
OmNyZWF0ZSgpOyIpOwotICAgICAgICBteSBAcHVzaEFyZ3VtZW50cyA9IG1hcCgiICAgIHBheWxv
YWREYXRhT2JqZWN0LT5zZXQiIC4gJHR5cGVUcmFuc2Zvcm17JF8tPnR5cGV9LT57IkpTT05UeXBl
In0gLiAiKFwiIiAuICRfLT5uYW1lIC4gIlwiLCAiIC4gJF8tPm5hbWUgLiAiKTsiLCBAYXJnc0Zp
bHRlcmVkKTsKLSAgICAgICAgcHVzaChAZnVuY3Rpb24sIEBwdXNoQXJndW1lbnRzKTsKLSAgICAg
ICAgcHVzaChAZnVuY3Rpb24sICIgICAgJHtmdW5jdGlvbk5hbWV9TWVzc2FnZS0+c2V0T2JqZWN0
KFwiZGF0YVwiLCBwYXlsb2FkRGF0YU9iamVjdCk7Iik7Ci0gICAgICAgIHB1c2goQGZ1bmN0aW9u
LCAiICAgIG1faW5zcGVjdG9yQ2xpZW50LT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQoJHtmdW5jdGlv
bk5hbWV9TWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOyIpOwotCi0gICAgICAgIHB1c2goQGZ1bmN0
aW9uLCAifSIpOwotICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiIpOwotICAgICAgICBwdXNoKEBm
cm9udGVuZE1ldGhvZHNJbXBsLCBAZnVuY3Rpb24pOwotICAgIH0KKyAgICAhJGZyb250ZW5kTWV0
aG9kU2lnbmF0dXJlc3ske3NpZ25hdHVyZX19IHx8IGRpZSAiRHVwbGljYXRlIGZyb250ZW5kIGZ1
bmN0aW9uIHdhcyBkZXRlY3RlZCBmb3Igc2lnbmF0dXJlICckc2lnbmF0dXJlJy4iOworICAgICRm
cm9udGVuZE1ldGhvZFNpZ25hdHVyZXN7JHtzaWduYXR1cmV9fSA9IDE7CisgICAgcHVzaChAZnJv
bnRlbmRNZXRob2RzLCAkc2lnbmF0dXJlKTsKKworICAgIG15IEBmdW5jdGlvbjsKKyAgICBwdXNo
KEBmdW5jdGlvbiwgInZvaWQgJHtmcm9udGVuZENsYXNzTmFtZX06OiR7ZnVuY3Rpb25OYW1lfSgk
e2FyZ3VtZW50c30pIik7CisgICAgcHVzaChAZnVuY3Rpb24sICJ7Iik7CisgICAgcHVzaChAZnVu
Y3Rpb24sICIgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gJHtmdW5jdGlvbk5hbWV9TWVzc2Fn
ZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Iik7CisgICAgcHVzaChAZnVuY3Rpb24sICIg
ICAgJHtmdW5jdGlvbk5hbWV9TWVzc2FnZS0+c2V0U3RyaW5nKFwidHlwZVwiLCBcImV2ZW50XCIp
OyIpOworICAgIHB1c2goQGZ1bmN0aW9uLCAiICAgICR7ZnVuY3Rpb25OYW1lfU1lc3NhZ2UtPnNl
dFN0cmluZyhcImRvbWFpblwiLCBcIiRkb21haW5cIik7Iik7CisgICAgcHVzaChAZnVuY3Rpb24s
ICIgICAgJHtmdW5jdGlvbk5hbWV9TWVzc2FnZS0+c2V0U3RyaW5nKFwiZXZlbnRcIiwgXCIkZnVu
Y3Rpb25OYW1lXCIpOyIpOworICAgIHB1c2goQGZ1bmN0aW9uLCAiICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IHBheWxvYWREYXRhT2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsi
KTsKKyAgICBteSBAcHVzaEFyZ3VtZW50cyA9IG1hcCgiICAgIHBheWxvYWREYXRhT2JqZWN0LT5z
ZXQiIC4gJHR5cGVUcmFuc2Zvcm17JF8tPnR5cGV9LT57IkpTT05UeXBlIn0gLiAiKFwiIiAuICRf
LT5uYW1lIC4gIlwiLCAiIC4gJF8tPm5hbWUgLiAiKTsiLCBAYXJnc0ZpbHRlcmVkKTsKKyAgICBw
dXNoKEBmdW5jdGlvbiwgQHB1c2hBcmd1bWVudHMpOworICAgIHB1c2goQGZ1bmN0aW9uLCAiICAg
ICR7ZnVuY3Rpb25OYW1lfU1lc3NhZ2UtPnNldE9iamVjdChcImRhdGFcIiwgcGF5bG9hZERhdGFP
YmplY3QpOyIpOworICAgIHB1c2goQGZ1bmN0aW9uLCAiICAgIG1faW5zcGVjdG9yQ2xpZW50LT5z
ZW5kTWVzc2FnZVRvRnJvbnRlbmQoJHtmdW5jdGlvbk5hbWV9TWVzc2FnZS0+dG9KU09OU3RyaW5n
KCkpOyIpOworCisgICAgcHVzaChAZnVuY3Rpb24sICJ9Iik7CisgICAgcHVzaChAZnVuY3Rpb24s
ICIiKTsKKyAgICBwdXNoKEBmcm9udGVuZE1ldGhvZHNJbXBsLCBAZnVuY3Rpb24pOwogfQogCiBz
dWIgY2FtZWxDYXNlCkBAIC0zNTUsMjkgKzM0NSwzMiBAQCBzdWIgY2FtZWxDYXNlCiAKIHN1YiBn
ZW5lcmF0ZUJhY2tlbmRGdW5jdGlvbgogeworICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKICAg
ICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKIAogICAgIG15ICRmdW5jdGlvbk5hbWUgPSAkZnVuY3Rp
b24tPnNpZ25hdHVyZS0+bmFtZTsKKyAgICBteSAkZnVsbFF1YWxpZmllZEZ1bmN0aW9uTmFtZSA9
ICRpbnRlcmZhY2UtPm5hbWUgLiAiXyIgLiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKIAot
ICAgIHB1c2goQGJhY2tlbmRDb25zdGFudERlY2xhcmF0aW9ucywgIiAgICBzdGF0aWMgY29uc3Qg
Y2hhciogJHtmdW5jdGlvbk5hbWV9Q21kOyIpOwotICAgIHB1c2goQGJhY2tlbmRDb25zdGFudERl
ZmluaXRpb25zLCAiY29uc3QgY2hhciogJHtiYWNrZW5kQ2xhc3NOYW1lfTo6JHtmdW5jdGlvbk5h
bWV9Q21kID0gXCIke2Z1bmN0aW9uTmFtZX1cIjsiKTsKKyAgICBwdXNoKEBiYWNrZW5kQ29uc3Rh
bnREZWNsYXJhdGlvbnMsICIgICAgc3RhdGljIGNvbnN0IGNoYXIqICR7ZnVsbFF1YWxpZmllZEZ1
bmN0aW9uTmFtZX1DbWQ7Iik7CisgICAgcHVzaChAYmFja2VuZENvbnN0YW50RGVmaW5pdGlvbnMs
ICJjb25zdCBjaGFyKiAke2JhY2tlbmRDbGFzc05hbWV9Ojoke2Z1bGxRdWFsaWZpZWRGdW5jdGlv
bk5hbWV9Q21kID0gXCIke2Z1bmN0aW9uTmFtZX1cIjsiKTsKIAogICAgIG1hcCgkYmFja2VuZFR5
cGVzeyRfLT50eXBlfSA9IDEsIEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSk7ICMgcmVnaXN0ZXIg
cmVxdWlyZWQgdHlwZXMKICAgICBteSBAaW5BcmdzID0gZ3JlcCgkXy0+ZGlyZWN0aW9uIGVxICJp
biIgJiYgISgkXy0+bmFtZSBlcSAiY2FsbElkIikgLCBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30p
OwogICAgIG15IEBvdXRBcmdzID0gZ3JlcCgkXy0+ZGlyZWN0aW9uIGVxICJvdXQiLCBAeyRmdW5j
dGlvbi0+cGFyYW1ldGVyc30pOwogCi0gICAgbXkgJHNpZ25hdHVyZSA9ICIgICAgdm9pZCAke2Z1
bmN0aW9uTmFtZX0obG9uZyBjYWxsSWQsIEluc3BlY3Rvck9iamVjdCogcmVxdWVzdE1lc3NhZ2VP
YmplY3QpOyI7Ci0gICAgISRiYWNrZW5kTWV0aG9kc3ske3NpZ25hdHVyZX19IHx8IGRpZSAiRHVw
bGljYXRlIGZ1bmN0aW9uIHdhcyBkZXRlY3RlZCBmb3Igc2lnbmF0dXJlICckc2lnbmF0dXJlJy4i
OwotICAgICRiYWNrZW5kTWV0aG9kc3ske3NpZ25hdHVyZX19ID0gJGZ1bmN0aW9uTmFtZTsKKyAg
ICBteSAkc2lnbmF0dXJlID0gIiAgICB2b2lkICR7ZnVsbFF1YWxpZmllZEZ1bmN0aW9uTmFtZX0o
bG9uZyBjYWxsSWQsIEluc3BlY3Rvck9iamVjdCogcmVxdWVzdE1lc3NhZ2VPYmplY3QpOyI7Cisg
ICAgISRiYWNrZW5kTWV0aG9kU2lnbmF0dXJlc3ske3NpZ25hdHVyZX19IHx8IGRpZSAiRHVwbGlj
YXRlIGZ1bmN0aW9uIHdhcyBkZXRlY3RlZCBmb3Igc2lnbmF0dXJlICckc2lnbmF0dXJlJy4iOwor
ICAgICRiYWNrZW5kTWV0aG9kU2lnbmF0dXJlc3ske3NpZ25hdHVyZX19ID0gIiRmdWxsUXVhbGlm
aWVkRnVuY3Rpb25OYW1lIjsKKyAgICBwdXNoKEBiYWNrZW5kTWV0aG9kcywgJHtzaWduYXR1cmV9
KTsKIAogICAgIG15IEBmdW5jdGlvbjsKICAgICBteSAkcmVxdWVzdE1lc3NhZ2VPYmplY3QgPSBz
Y2FsYXIoQGluQXJncykgPyAiIHJlcXVlc3RNZXNzYWdlT2JqZWN0IiA6ICIiOwotICAgIHB1c2go
QGZ1bmN0aW9uLCAidm9pZCAke2JhY2tlbmRDbGFzc05hbWV9Ojoke2Z1bmN0aW9uTmFtZX0obG9u
ZyBjYWxsSWQsIEluc3BlY3Rvck9iamVjdCokcmVxdWVzdE1lc3NhZ2VPYmplY3QpIik7CisgICAg
cHVzaChAZnVuY3Rpb24sICJ2b2lkICR7YmFja2VuZENsYXNzTmFtZX06OiR7ZnVsbFF1YWxpZmll
ZEZ1bmN0aW9uTmFtZX0obG9uZyBjYWxsSWQsIEluc3BlY3Rvck9iamVjdCokcmVxdWVzdE1lc3Nh
Z2VPYmplY3QpIik7CiAgICAgcHVzaChAZnVuY3Rpb24sICJ7Iik7CiAgICAgcHVzaChAZnVuY3Rp
b24sICIgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBwcm90b2NvbEVycm9ycyA9IEluc3BlY3Rv
ckFycmF5OjpjcmVhdGUoKTsiKTsKICAgICBwdXNoKEBmdW5jdGlvbiwgIiIpOwogCi0gICAgbXkg
JGRvbWFpbiA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiZG9t
YWluIn0gfHwgIkluc3BlY3RvciI7CisgICAgbXkgJGRvbWFpbiA9ICRpbnRlcmZhY2UtPm5hbWU7
CiAgICAgbXkgJGRvbWFpbkFjY2Vzc29yID0gJHR5cGVUcmFuc2Zvcm17JGRvbWFpbn0tPnsiZG9t
YWluQWNjZXNzb3IifTsKICAgICAkYmFja2VuZFR5cGVzeyRkb21haW59ID0gMTsKICAgICBwdXNo
KEBmdW5jdGlvbiwgIiAgICBpZiAoISRkb21haW5BY2Nlc3NvcikiKTsKQEAgLTQ5MCw4ICs0ODMs
NyBAQCBFT0YKIHN1YiBnZW5lcmF0ZUJhY2tlbmREaXNwYXRjaGVyCiB7CiAgICAgbXkgQGJvZHk7
Ci0gICAgbXkgQG1ldGhvZHMgPSBtYXAoJGJhY2tlbmRNZXRob2RzeyRffSwga2V5cyAlYmFja2Vu
ZE1ldGhvZHMpOwotICAgIG15IEBtYXBFbnRyaWVzID0gbWFwKCIgICAgICAgIGRpc3BhdGNoTWFw
LmFkZCgke199Q21kLCAmJHtiYWNrZW5kQ2xhc3NOYW1lfTo6JF8pOyIsIEBtZXRob2RzKTsKKyAg
ICBteSBAbWFwRW50cmllcyA9IG1hcCgiICAgICAgICBkaXNwYXRjaE1hcC5hZGQoJHtffUNtZCwg
JiR7YmFja2VuZENsYXNzTmFtZX06OiRfKTsiLCBtYXAgKCRiYWNrZW5kTWV0aG9kU2lnbmF0dXJl
c3skX30sIEBiYWNrZW5kTWV0aG9kcykpOwogICAgIG15ICRtYXBFbnRyaWVzID0gam9pbigiXG4i
LCBAbWFwRW50cmllcyk7CiAKICAgICBteSAkYmFja2VuZERpc3BhdGNoZXJCb2R5ID0gPDwgIkVP
RiI7CkBAIC01NzIsMzAgKzU2NCwzMSBAQCBib29sICR7YmFja2VuZENsYXNzTmFtZX06OmdldENv
bW1hbmROYW1lKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgU3RyaW5nKiByZXN1bHQpCiAKICAgICBy
ZXR1cm4gY29tbWFuZFZhbHVlLT5hc1N0cmluZyhyZXN1bHQpOwogfQotCiBFT0YKICAgICByZXR1
cm4gc3BsaXQoIlxuIiwgJG1lc3NhZ2VQYXJzZXJCb2R5KTsKIH0KIAotc3ViIGdlbmVyYXRlQmFj
a2VuZFN0dWJKUworc3ViIGNvbGxlY3RCYWNrZW5kSlNTdHViRnVuY3Rpb25zCiB7CiAgICAgbXkg
JGludGVyZmFjZSA9IHNoaWZ0OwotICAgIG15IEBiYWNrZW5kRnVuY3Rpb25zID0gZ3JlcCghJF8t
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Im5vdGlmeSJ9LCBAeyRpbnRlcmZhY2Ut
PmZ1bmN0aW9uc30pOwotICAgIG15IEBKU1N0dWJzOworICAgIG15IEBmdW5jdGlvbnMgPSBncmVw
KCEkXy0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsibm90aWZ5In0sIEB7JGludGVy
ZmFjZS0+ZnVuY3Rpb25zfSk7CisgICAgbXkgJGRvbWFpbiA9ICRpbnRlcmZhY2UtPm5hbWU7CiAK
LSAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQGJhY2tlbmRGdW5jdGlvbnMpIHsKKyAgICBmb3Jl
YWNoIG15ICRmdW5jdGlvbiAoQGZ1bmN0aW9ucykgewogICAgICAgICBteSAkbmFtZSA9ICRmdW5j
dGlvbi0+c2lnbmF0dXJlLT5uYW1lOwotICAgICAgICBteSAkZG9tYWluID0gJGZ1bmN0aW9uLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJkb21haW4ifTsKICAgICAgICAgbXkgJGFy
Z3VtZW50TmFtZXMgPSBqb2luKCIsIiwgbWFwKCJcIiIgLiAkXy0+bmFtZSAuICJcIjogXCIiIC4g
JHR5cGVUcmFuc2Zvcm17JF8tPnR5cGV9LT57IkpTVHlwZSJ9IC4gIlwiIiwgZ3JlcCgkXy0+ZGly
ZWN0aW9uIGVxICJpbiIsIEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkpKTsKLSAgICAgICAgcHVz
aChASlNTdHVicywgIiAgICB0aGlzLl9yZWdpc3RlckRlbGVnYXRlKCd7IiAuCisgICAgICAgIHB1
c2goQGJhY2tlbmRKU1N0dWJzLCAiICAgIHRoaXMuX3JlZ2lzdGVyRGVsZWdhdGUoJ3siIC4KICAg
ICAgICAgICAgICJcInNlcVwiOiAwLCAiIC4KICAgICAgICAgICAgICJcImRvbWFpblwiOiBcIiRk
b21haW5cIiwgIiAuCiAgICAgICAgICAgICAiXCJjb21tYW5kXCI6IFwiJG5hbWVcIiwgIiAuCiAg
ICAgICAgICAgICAiXCJhcmd1bWVudHNcIjogeyRhcmd1bWVudE5hbWVzfSIgLgogICAgICAgICAi
fScpOyIpOwogICAgIH0KK30KIAotICAgIG15ICRKU1N0dWJzID0gam9pbigiXG4iLCBASlNTdHVi
cyk7CitzdWIgZ2VuZXJhdGVCYWNrZW5kU3R1YkpTCit7CisgICAgbXkgJEpTU3R1YnMgPSBqb2lu
KCJcbiIsIEBiYWNrZW5kSlNTdHVicyk7CiAgICAgbXkgJGluc3BlY3RvckJhY2tlbmRTdHViSlMg
PSA8PCAiRU9GIjsKICRsaWNlbnNlVGVtcGxhdGUKIApAQCAtNzM0LDcgKzcyNyw3IEBAIHN1YiBn
ZW5lcmF0ZUhlYWRlcgogICAgIG15ICRmb3J3YXJkSGVhZGVycyA9IGpvaW4oIlxuIiwgc29ydCht
YXAoIiNpbmNsdWRlIDwiIC4gJHR5cGVUcmFuc2Zvcm17JF99LT57ImZvcndhcmRIZWFkZXIifSAu
ICI+IiwgZ3JlcCgkdHlwZVRyYW5zZm9ybXskX30tPnsiZm9yd2FyZEhlYWRlciJ9LCBrZXlzICV7
JHR5cGVzfSkpKSk7CiAgICAgbXkgJGZvcndhcmREZWNsYXJhdGlvbnMgPSBqb2luKCJcbiIsIHNv
cnQobWFwKCJjbGFzcyAiIC4gJHR5cGVUcmFuc2Zvcm17JF99LT57ImZvcndhcmQifSAuICI7Iiwg
Z3JlcCgkdHlwZVRyYW5zZm9ybXskX30tPnsiZm9yd2FyZCJ9LCBrZXlzICV7JHR5cGVzfSkpKSk7
CiAgICAgbXkgJGNvbnN0YW50RGVjbGFyYXRpb25zID0gam9pbigiXG4iLCBAeyRjb25zdGFudHN9
KTsKLSAgICBteSAkbWV0aG9kc0RlY2xhcmF0aW9ucyA9IGpvaW4oIlxuIiwga2V5cyAleyRtZXRo
b2RzfSk7CisgICAgbXkgJG1ldGhvZHNEZWNsYXJhdGlvbnMgPSBqb2luKCJcbiIsIEB7JG1ldGhv
ZHN9KTsKIAogICAgIG15ICRoZWFkZXJCb2R5ID0gPDwgIkVPRiI7CiAvLyBDb3B5cmlnaHQgKGMp
IDIwMTAgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC03NTYs
NyArNzQ5LDYgQEAgJGNvbnN0cnVjdG9yCiAkY29uc3RhbnREZWNsYXJhdGlvbnMKICRtZXRob2Rz
RGVjbGFyYXRpb25zCiAKLXByaXZhdGU6CiAkZm9vdGVyCiB9OwogCkBAIC03OTEsNyArNzgzLDcg
QEAgc3ViIGdlbmVyYXRlU291cmNlCiAgICAgcHVzaChAc291cmNlQ29udGVudCwgIiIpOwogICAg
IHB1c2goQHNvdXJjZUNvbnRlbnQsICJuYW1lc3BhY2UgJG5hbWVzcGFjZSB7Iik7CiAgICAgcHVz
aChAc291cmNlQ29udGVudCwgIiIpOwotICAgIHB1c2ggKEBzb3VyY2VDb250ZW50LCBqb2luKCJc
biIsIEB7JGNvbnN0YW50c30pKTsKKyAgICBwdXNoKEBzb3VyY2VDb250ZW50LCBqb2luKCJcbiIs
IEB7JGNvbnN0YW50c30pKTsKICAgICBwdXNoKEBzb3VyY2VDb250ZW50LCAiIik7CiAgICAgcHVz
aChAc291cmNlQ29udGVudCwgQHskbWV0aG9kc30pOwogICAgIHB1c2goQHNvdXJjZUNvbnRlbnQs
ICIiKTsKQEAgLTgwNiwyOCArNzk4LDQ2IEBAIHN1YiBmaW5pc2gKIHsKICAgICBteSAkb2JqZWN0
ID0gc2hpZnQ7CiAKKyAgICBwdXNoKEBiYWNrZW5kTWV0aG9kc0ltcGwsIGdlbmVyYXRlQmFja2Vu
ZERpc3BhdGNoZXIoKSk7CisgICAgcHVzaChAYmFja2VuZE1ldGhvZHNJbXBsLCBnZW5lcmF0ZUJh
Y2tlbmRSZXBvcnRQcm90b2NvbEVycm9yKCkpOworCiAgICAgb3BlbihteSAkU09VUkNFLCAiPiRv
dXRwdXREaXIvJGZyb250ZW5kQ2xhc3NOYW1lLmNwcCIpIHx8IGRpZSAiQ291bGRuJ3Qgb3BlbiBm
aWxlICRvdXRwdXREaXIvJGZyb250ZW5kQ2xhc3NOYW1lLmNwcCI7CiAgICAgcHJpbnQgJFNPVVJD
RSBqb2luKCJcbiIsIGdlbmVyYXRlU291cmNlKCRmcm9udGVuZENsYXNzTmFtZSwgXCVmcm9udGVu
ZFR5cGVzLCBcQGZyb250ZW5kQ29uc3RhbnREZWZpbml0aW9ucywgXEBmcm9udGVuZE1ldGhvZHNJ
bXBsKSk7CiAgICAgY2xvc2UoJFNPVVJDRSk7CiAgICAgdW5kZWYoJFNPVVJDRSk7CiAKICAgICBv
cGVuKG15ICRIRUFERVIsICI+JG91dHB1dEhlYWRlcnNEaXIvJGZyb250ZW5kQ2xhc3NOYW1lLmgi
KSB8fCBkaWUgIkNvdWxkbid0IG9wZW4gZmlsZSAkb3V0cHV0SGVhZGVyc0Rpci8kZnJvbnRlbmRD
bGFzc05hbWUuaCI7Ci0gICAgcHJpbnQgJEhFQURFUiBnZW5lcmF0ZUhlYWRlcigkZnJvbnRlbmRD
bGFzc05hbWUsIFwlZnJvbnRlbmRUeXBlcywgJGZyb250ZW5kQ29uc3RydWN0b3IsIFxAZnJvbnRl
bmRDb25zdGFudERlY2xhcmF0aW9ucywgXCVmcm9udGVuZE1ldGhvZHMsICRmcm9udGVuZEZvb3Rl
cik7CisgICAgcHJpbnQgJEhFQURFUiBnZW5lcmF0ZUhlYWRlcigkZnJvbnRlbmRDbGFzc05hbWUs
IFwlZnJvbnRlbmRUeXBlcywgJGZyb250ZW5kQ29uc3RydWN0b3IsIFxAZnJvbnRlbmRDb25zdGFu
dERlY2xhcmF0aW9ucywgXEBmcm9udGVuZE1ldGhvZHMsICRmcm9udGVuZEZvb3Rlcik7CiAgICAg
Y2xvc2UoJEhFQURFUik7CiAgICAgdW5kZWYoJEhFQURFUik7CiAKKyAgICAjIE1ha2UgZGlzcGF0
Y2hlciBtZXRob2RzIHByaXZhdGUgb24gdGhlIGJhY2tlbmQuCisgICAgcHVzaChAYmFja2VuZENv
bnN0YW50RGVjbGFyYXRpb25zLCAiIik7CisgICAgcHVzaChAYmFja2VuZENvbnN0YW50RGVjbGFy
YXRpb25zLCAicHJpdmF0ZToiKTsKKworICAgIGZvcmVhY2ggbXkgJHR5cGUgKGtleXMgJWJhY2tl
bmRUeXBlcykgeworICAgICAgICBpZiAoJHR5cGVUcmFuc2Zvcm17JHR5cGV9eyJKU09OVHlwZSJ9
KSB7CisgICAgICAgICAgICBwdXNoKEBiYWNrZW5kTWV0aG9kc0ltcGwsIGdlbmVyYXRlQXJndW1l
bnRHZXR0ZXJzKCR0eXBlKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdXNoKEBiYWNrZW5k
TWV0aG9kc0ltcGwsIGdlbmVyYXRlQmFja2VuZE1lc3NhZ2VQYXJzZXIoKSk7CisgICAgcHVzaChA
YmFja2VuZE1ldGhvZHNJbXBsLCAiIik7CisKKyAgICBwdXNoKEBiYWNrZW5kQ29uc3RhbnREZWNs
YXJhdGlvbnMsICIiKTsKKwogICAgIG9wZW4oJFNPVVJDRSwgIj4kb3V0cHV0RGlyLyRiYWNrZW5k
Q2xhc3NOYW1lLmNwcCIpIHx8IGRpZSAiQ291bGRuJ3Qgb3BlbiBmaWxlICRvdXRwdXREaXIvJGJh
Y2tlbmRDbGFzc05hbWUuY3BwIjsKICAgICBwcmludCAkU09VUkNFIGpvaW4oIlxuIiwgZ2VuZXJh
dGVTb3VyY2UoJGJhY2tlbmRDbGFzc05hbWUsIFwlYmFja2VuZFR5cGVzLCBcQGJhY2tlbmRDb25z
dGFudERlZmluaXRpb25zLCBcQGJhY2tlbmRNZXRob2RzSW1wbCkpOwogICAgIGNsb3NlKCRTT1VS
Q0UpOwogICAgIHVuZGVmKCRTT1VSQ0UpOwogCiAgICAgb3BlbigkSEVBREVSLCAiPiRvdXRwdXRI
ZWFkZXJzRGlyLyRiYWNrZW5kQ2xhc3NOYW1lLmgiKSB8fCBkaWUgIkNvdWxkbid0IG9wZW4gZmls
ZSAkb3V0cHV0SGVhZGVyc0Rpci8kYmFja2VuZENsYXNzTmFtZS5oIjsKLSAgICBwcmludCAkSEVB
REVSIGpvaW4oIlxuIiwgZ2VuZXJhdGVIZWFkZXIoJGJhY2tlbmRDbGFzc05hbWUsIFwlYmFja2Vu
ZFR5cGVzLCAkYmFja2VuZENvbnN0cnVjdG9yLCBcQGJhY2tlbmRDb25zdGFudERlY2xhcmF0aW9u
cywgXCViYWNrZW5kTWV0aG9kcywgJGJhY2tlbmRGb290ZXIpKTsKKyAgICBwcmludCAkSEVBREVS
IGpvaW4oIlxuIiwgZ2VuZXJhdGVIZWFkZXIoJGJhY2tlbmRDbGFzc05hbWUsIFwlYmFja2VuZFR5
cGVzLCAkYmFja2VuZENvbnN0cnVjdG9yLCBcQGJhY2tlbmRDb25zdGFudERlY2xhcmF0aW9ucywg
XEBiYWNrZW5kTWV0aG9kcywgJGJhY2tlbmRGb290ZXIpKTsKICAgICBjbG9zZSgkSEVBREVSKTsK
ICAgICB1bmRlZigkSEVBREVSKTsKIAogICAgIG9wZW4obXkgJEpTX1NUVUIsICI+JG91dHB1dERp
ci8kYmFja2VuZEpTU3R1Yk5hbWUuanMiKSB8fCBkaWUgIkNvdWxkbid0IG9wZW4gZmlsZSAkb3V0
cHV0RGlyLyRiYWNrZW5kSlNTdHViTmFtZS5qcyI7Ci0gICAgcHJpbnQgJEpTX1NUVUIgam9pbigi
XG4iLCBAYmFja2VuZFN0dWJKUyk7CisgICAgcHJpbnQgJEpTX1NUVUIgam9pbigiXG4iLCBnZW5l
cmF0ZUJhY2tlbmRTdHViSlMoKSk7CiAgICAgY2xvc2UoJEpTX1NUVUIpOwogICAgIHVuZGVmKCRK
U19TVFVCKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKaW5kZXggOGEw
ODcxNTI4YTgyYTI5MmY0MDY0M2ZkYTQxMTgyMjRlZGRjM2E0NC4uYTc5NGFhM2ExYmQyYjdlMjA0
YmUxMTFjODZhNWY3NmM5MjA5ODEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ci5pZGwKQEAgLTMxLDI4NiArMzEsMjYwIEBACiAKIG1vZHVsZSBjb3JlIHsKICAgICBpbnRlcmZh
Y2UgW0NvbmRpdGlvbmFsPUlOU1BFQ1RPUl0gSW5zcGVjdG9yIHsKKyAgICAgICAgdm9pZCBhZGRT
Y3JpcHRUb0V2YWx1YXRlT25Mb2FkKGluIFN0cmluZyBzY3JpcHRTb3VyY2UpOworICAgICAgICB2
b2lkIHJlbW92ZUFsbFNjcmlwdHNUb0V2YWx1YXRlT25Mb2FkKCk7CisgICAgICAgIHZvaWQgcmVs
b2FkUGFnZShpbiBib29sZWFuIGlnbm9yZUNhY2hlKTsKKyAgICAgICAgdm9pZCBwb3B1bGF0ZVNj
cmlwdE9iamVjdHMoKTsKKworICAgICAgICB2b2lkIG9wZW5Jbkluc3BlY3RlZFdpbmRvdyhpbiBT
dHJpbmcgdXJsKTsKKyAgICAgICAgdm9pZCBzZXRTZWFyY2hpbmdGb3JOb2RlKGluIGJvb2xlYW4g
ZW5hYmxlZCwgb3V0IGJvb2xlYW4gbmV3U3RhdGUpOworICAgICAgICBbbm90aWZ5XSB2b2lkIGZy
b250ZW5kUmV1c2VkKCk7CisgICAgICAgIFtub3RpZnldIHZvaWQgYWRkTm9kZXNUb1NlYXJjaFJl
c3VsdChvdXQgQXJyYXkgbm9kZUlkcyk7CisgICAgICAgIFtub3RpZnldIHZvaWQgYnJpbmdUb0Zy
b250KCk7CisgICAgICAgIFtub3RpZnldIHZvaWQgZGlzY29ubmVjdEZyb21CYWNrZW5kKCk7Cisg
ICAgICAgIFtub3RpZnldIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChvdXQgU3RyaW5nIHVybCk7
CisgICAgICAgIFtub3RpZnldIHZvaWQgZG9tQ29udGVudEV2ZW50RmlyZWQob3V0IGRvdWJsZSB0
aW1lKTsKKyAgICAgICAgW25vdGlmeV0gdm9pZCBsb2FkRXZlbnRGaXJlZChvdXQgZG91YmxlIHRp
bWUpOworICAgICAgICBbbm90aWZ5XSB2b2lkIHJlc2V0KCk7CisgICAgICAgIFtub3RpZnldIHZv
aWQgc2hvd1BhbmVsKG91dCBTdHJpbmcgcGFuZWwpOworCisgICAgICAgIFtub3RpZnldIHZvaWQg
ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChvdXQgbG9uZyB0ZXN0Q2FsbElkLCBvdXQgU3RyaW5n
IHNjcmlwdCk7CisgICAgICAgIHZvaWQgZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChpbiBs
b25nIHRlc3RDYWxsSWQsIGluIFN0cmluZyBqc29uUmVzdWx0KTsKKworICAgICAgICB2b2lkIGhp
Z2hsaWdodERPTU5vZGUoaW4gbG9uZyBub2RlSWQpOworICAgICAgICB2b2lkIGhpZGVET01Ob2Rl
SGlnaGxpZ2h0KCk7CisgICAgICAgIHZvaWQgaGlnaGxpZ2h0RnJhbWUoaW4gdW5zaWduZWQgbG9u
ZyBmcmFtZUlkKTsKKyAgICAgICAgdm9pZCBoaWRlRnJhbWVIaWdobGlnaHQoKTsKKyAgICAgICAg
W25vdGlmeV0gdm9pZCB1cGRhdGVGb2N1c2VkTm9kZShvdXQgbG9uZyBub2RlSWQpOworCisgICAg
ICAgIHZvaWQgc2V0VXNlckFnZW50T3ZlcnJpZGUoaW4gU3RyaW5nIHVzZXJBZ2VudCk7CisKKyAg
ICAgICAgdm9pZCBnZXRDb29raWVzKG91dCBBcnJheSBjb29raWVzLCBvdXQgU3RyaW5nIGNvb2tp
ZXNTdHJpbmcpOworICAgICAgICB2b2lkIGRlbGV0ZUNvb2tpZShpbiBTdHJpbmcgY29va2llTmFt
ZSwgaW4gU3RyaW5nIGRvbWFpbik7CisKKyAgICAgICAgLy8gRklYTUU6IGRpc3BhdGNoIG9uIGFn
ZW50cy4KKyAgICAgICAgdm9pZCBzdGFydFRpbWVsaW5lUHJvZmlsZXIoKTsKKyAgICAgICAgdm9p
ZCBzdG9wVGltZWxpbmVQcm9maWxlcigpOwogCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAg
ICAgIC8vIGdlbmVyaWMgSW5zcGVjdG9yJ3MgbWV0aG9kcwotICAgICAgICAvLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
LwotCi0gICAgICAgIFtkb21haW49SW5zcGVjdG9yXSB2b2lkIGFkZFNjcmlwdFRvRXZhbHVhdGVP
bkxvYWQoaW4gU3RyaW5nIHNjcmlwdFNvdXJjZSk7Ci0gICAgICAgIFtkb21haW49SW5zcGVjdG9y
XSB2b2lkIHJlbW92ZUFsbFNjcmlwdHNUb0V2YWx1YXRlT25Mb2FkKCk7Ci0gICAgICAgIFtkb21h
aW49SW5zcGVjdG9yXSB2b2lkIHJlbG9hZFBhZ2UoaW4gYm9vbGVhbiBpZ25vcmVDYWNoZSk7Ci0g
ICAgICAgIFtkb21haW49SW5zcGVjdG9yXSB2b2lkIHBvcHVsYXRlU2NyaXB0T2JqZWN0cygpOwot
Ci0gICAgICAgIFtkb21haW49SW5zcGVjdG9yXSB2b2lkIG9wZW5Jbkluc3BlY3RlZFdpbmRvdyhp
biBTdHJpbmcgdXJsKTsKLSAgICAgICAgW2RvbWFpbj1JbnNwZWN0b3JdIHZvaWQgc2V0U2VhcmNo
aW5nRm9yTm9kZShpbiBib29sZWFuIGVuYWJsZWQsIG91dCBib29sZWFuIG5ld1N0YXRlKTsKLSAg
ICAgICAgW25vdGlmeSwgZG9tYWluPUluc3BlY3Rvcl0gdm9pZCBmcm9udGVuZFJldXNlZCgpOwot
ICAgICAgICBbbm90aWZ5LCBkb21haW49SW5zcGVjdG9yXSB2b2lkIGFkZE5vZGVzVG9TZWFyY2hS
ZXN1bHQob3V0IEFycmF5IG5vZGVJZHMpOwotICAgICAgICBbbm90aWZ5LCBkb21haW49SW5zcGVj
dG9yXSB2b2lkIGJyaW5nVG9Gcm9udCgpOwotICAgICAgICBbbm90aWZ5LCBkb21haW49SW5zcGVj
dG9yXSB2b2lkIGRpc2Nvbm5lY3RGcm9tQmFja2VuZCgpOwotICAgICAgICBbbm90aWZ5LCBkb21h
aW49SW5zcGVjdG9yXSB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQob3V0IFN0cmluZyB1cmwpOwot
ICAgICAgICBbbm90aWZ5LCBkb21haW49SW5zcGVjdG9yXSB2b2lkIGRvbUNvbnRlbnRFdmVudEZp
cmVkKG91dCBkb3VibGUgdGltZSk7Ci0gICAgICAgIFtub3RpZnksIGRvbWFpbj1JbnNwZWN0b3Jd
IHZvaWQgbG9hZEV2ZW50RmlyZWQob3V0IGRvdWJsZSB0aW1lKTsKLSAgICAgICAgW25vdGlmeSwg
ZG9tYWluPUluc3BlY3Rvcl0gdm9pZCByZXNldCgpOwotICAgICAgICBbbm90aWZ5LCBkb21haW49
SW5zcGVjdG9yXSB2b2lkIHNob3dQYW5lbChvdXQgU3RyaW5nIHBhbmVsKTsKLQotICAgICAgICBb
bm90aWZ5LCBkb21haW49SW5zcGVjdG9yXSB2b2lkIGV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQo
b3V0IGxvbmcgdGVzdENhbGxJZCwgb3V0IFN0cmluZyBzY3JpcHQpOwotICAgICAgICBbZG9tYWlu
PUluc3BlY3Rvcl0gdm9pZCBkaWRFdmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGluIGxvbmcgdGVz
dENhbGxJZCwgaW4gU3RyaW5nIGpzb25SZXN1bHQpOwotCi0gICAgICAgIFtkb21haW49SW5zcGVj
dG9yXSB2b2lkIGhpZ2hsaWdodERPTU5vZGUoaW4gbG9uZyBub2RlSWQpOwotICAgICAgICBbZG9t
YWluPUluc3BlY3Rvcl0gdm9pZCBoaWRlRE9NTm9kZUhpZ2hsaWdodCgpOwotICAgICAgICBbZG9t
YWluPUluc3BlY3Rvcl0gdm9pZCBoaWdobGlnaHRGcmFtZShpbiB1bnNpZ25lZCBsb25nIGZyYW1l
SWQpOwotICAgICAgICBbZG9tYWluPUluc3BlY3Rvcl0gdm9pZCBoaWRlRnJhbWVIaWdobGlnaHQo
KTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWluPUluc3BlY3Rvcl0gdm9pZCB1cGRhdGVGb2N1c2Vk
Tm9kZShvdXQgbG9uZyBub2RlSWQpOwotCi0gICAgICAgIFtkb21haW49SW5zcGVjdG9yXSB2b2lk
IHNldFVzZXJBZ2VudE92ZXJyaWRlKGluIFN0cmluZyB1c2VyQWdlbnQpOwotCi0gICAgICAgIFtk
b21haW49SW5zcGVjdG9yXSB2b2lkIGdldENvb2tpZXMob3V0IEFycmF5IGNvb2tpZXMsIG91dCBT
dHJpbmcgY29va2llc1N0cmluZyk7Ci0gICAgICAgIFtkb21haW49SW5zcGVjdG9yXSB2b2lkIGRl
bGV0ZUNvb2tpZShpbiBTdHJpbmcgY29va2llTmFtZSwgaW4gU3RyaW5nIGRvbWFpbik7Ci0KLSAg
ICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gUnVudGltZQotICAgICAgICAvLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLwotCi0gICAgICAgIFtkb21haW49UnVudGltZV0gdm9pZCBldmFsdWF0ZShpbiBTdHJp
bmcgZXhwcmVzc2lvbiwgaW4gU3RyaW5nIG9iamVjdEdyb3VwLCBpbiBib29sZWFuIGluY2x1ZGVD
b21tYW5kTGluZUFQSSwgb3V0IFZhbHVlIHJlc3VsdCk7Ci0gICAgICAgIFtkb21haW49UnVudGlt
ZV0gdm9pZCBnZXRDb21wbGV0aW9ucyhpbiBTdHJpbmcgZXhwcmVzc2lvbiwgaW4gYm9vbGVhbiBp
bmNsdWRlQ29tbWFuZExpbmVBUEksIG91dCBWYWx1ZSByZXN1bHQpOwotICAgICAgICBbZG9tYWlu
PVJ1bnRpbWVdIHZvaWQgZ2V0UHJvcGVydGllcyhpbiBPYmplY3Qgb2JqZWN0SWQsIGluIGJvb2xl
YW4gaWdub3JlSGFzT3duUHJvcGVydHksIGluIGJvb2xlYW4gYWJicmV2aWF0ZSwgb3V0IFZhbHVl
IHJlc3VsdCk7Ci0gICAgICAgIFtkb21haW49UnVudGltZV0gdm9pZCBzZXRQcm9wZXJ0eVZhbHVl
KGluIE9iamVjdCBvYmplY3RJZCwgaW4gU3RyaW5nIHByb3BlcnR5TmFtZSwgaW4gU3RyaW5nIGV4
cHJlc3Npb24sIG91dCBWYWx1ZSByZXN1bHQpOwotICAgICAgICBbZG9tYWluPVJ1bnRpbWVdIHZv
aWQgcmVsZWFzZVdyYXBwZXJPYmplY3RHcm91cChpbiBsb25nIGluamVjdGVkU2NyaXB0SWQsIGlu
IFN0cmluZyBvYmplY3RHcm91cCk7Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAg
Ly8gSW5qZWN0ZWQgU2NyaXB0Ci0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICAgICAgW2Rv
bWFpbj1JbmplY3RlZFNjcmlwdF0gdm9pZCBldmFsdWF0ZU9uU2VsZihpbiBTdHJpbmcgZnVuY3Rp
b25Cb2R5LCBpbiBBcnJheSBhcmd1bWVudHNBcnJheSwgb3V0IFZhbHVlIHJlc3VsdCk7Ci0KLSAg
ICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gQ29uc29sZSBBUEkKLSAgICAgICAgLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8KLQotICAgICAgICBbZG9tYWluPUNvbnNvbGVdIHZvaWQgc2V0Q29uc29sZU1l
c3NhZ2VzRW5hYmxlZChpbiBib29sZWFuIGVuYWJsZWQsIG91dCBib29sZWFuIG5ld1N0YXRlKTsK
LSAgICAgICAgW25vdGlmeSwgZG9tYWluPUNvbnNvbGVdIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2Uo
b3V0IE9iamVjdCBtZXNzYWdlT2JqKTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWluPUNvbnNvbGVd
IHZvaWQgdXBkYXRlQ29uc29sZU1lc3NhZ2VFeHBpcmVkQ291bnQob3V0IHVuc2lnbmVkIGxvbmcg
Y291bnQpOwotICAgICAgICBbbm90aWZ5LCBkb21haW49Q29uc29sZV0gdm9pZCB1cGRhdGVDb25z
b2xlTWVzc2FnZVJlcGVhdENvdW50KG91dCB1bnNpZ25lZCBsb25nIGNvdW50KTsKLSAgICAgICAg
W2RvbWFpbj1Db25zb2xlXSB2b2lkIGNsZWFyQ29uc29sZU1lc3NhZ2VzKCk7Ci0gICAgICAgIFtu
b3RpZnksIGRvbWFpbj1Db25zb2xlXSB2b2lkIGNvbnNvbGVNZXNzYWdlc0NsZWFyZWQoKTsKLSAg
ICAgICAgW2RvbWFpbj1Db25zb2xlXSB2b2lkIHNldE1vbml0b3JpbmdYSFJFbmFibGVkKGluIGJv
b2xlYW4gZW5hYmxlZCk7Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gTmV0
d29yayBBUEkKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgICAgICBbZG9tYWluPU5ldHdv
cmtdIHZvaWQgY2FjaGVkUmVzb3VyY2VzKG91dCBPYmplY3QgcmVzb3VyY2VzKTsKLSAgICAgICAg
W2RvbWFpbj1OZXR3b3JrXSB2b2lkIHJlc291cmNlQ29udGVudChpbiB1bnNpZ25lZCBsb25nIGZy
YW1lSWQsIGluIFN0cmluZyB1cmwsIGluIGJvb2xlYW4gYmFzZTY0RW5jb2RlLCBvdXQgYm9vbGVh
biBzdWNjZXNzLCBvdXQgU3RyaW5nIGNvbnRlbnQpOwotICAgICAgICBbZG9tYWluPU5ldHdvcmtd
IHZvaWQgc2V0RXh0cmFIZWFkZXJzKGluIE9iamVjdCBoZWFkZXJzKTsKLQotICAgICAgICBbbm90
aWZ5LCBkb21haW49TmV0d29ya10gdm9pZCBmcmFtZURldGFjaGVkRnJvbVBhcmVudChvdXQgdW5z
aWduZWQgbG9uZyBmcmFtZUlkKTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWluPU5ldHdvcmtdIHZv
aWQgaWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KG91dCBsb25nIGlkZW50aWZpZXIsIG91dCBT
dHJpbmcgdXJsLCBvdXQgT2JqZWN0IGxvYWRlciwgb3V0IFZhbHVlIGNhbGxTdGFjayk7Ci0gICAg
ICAgIFtub3RpZnksIGRvbWFpbj1OZXR3b3JrXSB2b2lkIHdpbGxTZW5kUmVxdWVzdChvdXQgbG9u
ZyBpZGVudGlmaWVyLCBvdXQgZG91YmxlIHRpbWUsIG91dCBPYmplY3QgcmVxdWVzdCwgb3V0IE9i
amVjdCByZWRpcmVjdFJlc3BvbnNlKTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWluPU5ldHdvcmtd
IHZvaWQgbWFya1Jlc291cmNlQXNDYWNoZWQob3V0IGxvbmcgaWRlbnRpZmllcik7Ci0gICAgICAg
IFtub3RpZnksIGRvbWFpbj1OZXR3b3JrXSB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShvdXQgbG9u
ZyBpZGVudGlmaWVyLCBvdXQgZG91YmxlIHRpbWUsIG91dCBTdHJpbmcgcmVzb3VyY2VUeXBlLCBv
dXQgT2JqZWN0IHJlc3BvbnNlKTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWluPU5ldHdvcmtdIHZv
aWQgZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgob3V0IGxvbmcgaWRlbnRpZmllciwgb3V0IGRvdWJs
ZSB0aW1lLCBvdXQgbG9uZyBsZW5ndGhSZWNlaXZlZCk7Ci0gICAgICAgIFtub3RpZnksIGRvbWFp
bj1OZXR3b3JrXSB2b2lkIGRpZEZpbmlzaExvYWRpbmcob3V0IGxvbmcgaWRlbnRpZmllciwgb3V0
IGRvdWJsZSBmaW5pc2hUaW1lKTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWluPU5ldHdvcmtdIHZv
aWQgZGlkRmFpbExvYWRpbmcob3V0IGxvbmcgaWRlbnRpZmllciwgb3V0IGRvdWJsZSB0aW1lLCBv
dXQgU3RyaW5nIGxvY2FsaXplZERlc2NyaXB0aW9uKTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWlu
PU5ldHdvcmtdIHZvaWQgZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKG91dCBkb3VibGUg
dGltZSwgb3V0IE9iamVjdCByZXNvdXJjZSk7Ci0gICAgICAgIFtub3RpZnksIGRvbWFpbj1OZXR3
b3JrXSB2b2lkIHNldEluaXRpYWxDb250ZW50KG91dCBsb25nIGlkZW50aWZpZXIsIG91dCBTdHJp
bmcgc291cmNlU3RyaW5nLCBvdXQgU3RyaW5nIHR5cGUpOwotICAgICAgICBbbm90aWZ5LCBkb21h
aW49TmV0d29ya10gdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUob3V0IE9iamVjdCBmcmFtZSwg
b3V0IE9iamVjdCBsb2FkZXIpOwotICAgICAgICBbbm90aWZ5LCBkb21haW49TmV0d29ya10gdm9p
ZCBkaWRDcmVhdGVXZWJTb2NrZXQob3V0IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgb3V0IFN0
cmluZyByZXF1ZXN0VVJMKTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWluPU5ldHdvcmtdIHZvaWQg
d2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KG91dCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIG91dCBkb3VibGUgdGltZSwgb3V0IE9iamVjdCByZXF1ZXN0KTsKLSAgICAgICAgW25v
dGlmeSwgZG9tYWluPU5ldHdvcmtdIHZvaWQgZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJl
c3BvbnNlKG91dCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIG91dCBkb3VibGUgdGltZSwgb3V0
IE9iamVjdCByZXNwb25zZSk7Ci0gICAgICAgIFtub3RpZnksIGRvbWFpbj1OZXR3b3JrXSB2b2lk
IGRpZENsb3NlV2ViU29ja2V0KG91dCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIG91dCBkb3Vi
bGUgdGltZSk7CisjaWYgZGVmaW5lZChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5B
QkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIKKyAgICAgICAgdm9pZCBlbmFibGVEZWJ1Z2dlcigpOwor
ICAgICAgICB2b2lkIGRpc2FibGVEZWJ1Z2dlcigpOworICAgICAgICB2b2lkIGVuYWJsZVByb2Zp
bGVyKCk7CisgICAgICAgIHZvaWQgZGlzYWJsZVByb2ZpbGVyKCk7CisgICAgICAgIHZvaWQgc3Rh
cnRQcm9maWxpbmcoKTsKKyAgICAgICAgdm9pZCBzdG9wUHJvZmlsaW5nKCk7CisjZW5kaWYgLy8g
RU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIKKyAgICB9OwogCi0jaWYgZGVmaW5lZChFTkFCTEVf
REFUQUJBU0UpICYmIEVOQUJMRV9EQVRBQkFTRQorICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9
SU5TUEVDVE9SXSBSdW50aW1lIHsKKyAgICAgICAgdm9pZCBldmFsdWF0ZShpbiBTdHJpbmcgZXhw
cmVzc2lvbiwgaW4gU3RyaW5nIG9iamVjdEdyb3VwLCBpbiBib29sZWFuIGluY2x1ZGVDb21tYW5k
TGluZUFQSSwgb3V0IFZhbHVlIHJlc3VsdCk7CisgICAgICAgIHZvaWQgZ2V0Q29tcGxldGlvbnMo
aW4gU3RyaW5nIGV4cHJlc3Npb24sIGluIGJvb2xlYW4gaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBv
dXQgVmFsdWUgcmVzdWx0KTsKKyAgICAgICAgdm9pZCBnZXRQcm9wZXJ0aWVzKGluIE9iamVjdCBv
YmplY3RJZCwgaW4gYm9vbGVhbiBpZ25vcmVIYXNPd25Qcm9wZXJ0eSwgaW4gYm9vbGVhbiBhYmJy
ZXZpYXRlLCBvdXQgVmFsdWUgcmVzdWx0KTsKKyAgICAgICAgdm9pZCBzZXRQcm9wZXJ0eVZhbHVl
KGluIE9iamVjdCBvYmplY3RJZCwgaW4gU3RyaW5nIHByb3BlcnR5TmFtZSwgaW4gU3RyaW5nIGV4
cHJlc3Npb24sIG91dCBWYWx1ZSByZXN1bHQpOworICAgICAgICB2b2lkIHJlbGVhc2VXcmFwcGVy
T2JqZWN0R3JvdXAoaW4gbG9uZyBpbmplY3RlZFNjcmlwdElkLCBpbiBTdHJpbmcgb2JqZWN0R3Jv
dXApOworICAgIH07CiAKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gRGF0YWJh
c2UgQVBJCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisgICAgaW50ZXJmYWNlIFtDb25kaXRpb25h
bD1JTlNQRUNUT1JdIEluamVjdGVkU2NyaXB0IHsKKyAgICAgICAgdm9pZCBldmFsdWF0ZU9uU2Vs
ZihpbiBTdHJpbmcgZnVuY3Rpb25Cb2R5LCBpbiBBcnJheSBhcmd1bWVudHNBcnJheSwgb3V0IFZh
bHVlIHJlc3VsdCk7CisgICAgfTsKKworICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9SU5TUEVD
VE9SXSBDb25zb2xlIHsKKyAgICAgICAgdm9pZCBzZXRDb25zb2xlTWVzc2FnZXNFbmFibGVkKGlu
IGJvb2xlYW4gZW5hYmxlZCwgb3V0IGJvb2xlYW4gbmV3U3RhdGUpOworICAgICAgICBbbm90aWZ5
XSB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKG91dCBPYmplY3QgbWVzc2FnZU9iaik7CisgICAgICAg
IFtub3RpZnldIHZvaWQgdXBkYXRlQ29uc29sZU1lc3NhZ2VFeHBpcmVkQ291bnQob3V0IHVuc2ln
bmVkIGxvbmcgY291bnQpOworICAgICAgICBbbm90aWZ5XSB2b2lkIHVwZGF0ZUNvbnNvbGVNZXNz
YWdlUmVwZWF0Q291bnQob3V0IHVuc2lnbmVkIGxvbmcgY291bnQpOworICAgICAgICB2b2lkIGNs
ZWFyQ29uc29sZU1lc3NhZ2VzKCk7CisgICAgICAgIFtub3RpZnldIHZvaWQgY29uc29sZU1lc3Nh
Z2VzQ2xlYXJlZCgpOworICAgICAgICB2b2lkIHNldE1vbml0b3JpbmdYSFJFbmFibGVkKGluIGJv
b2xlYW4gZW5hYmxlZCk7CisgICAgfTsKIAotICAgICAgICBbZG9tYWluPURhdGFiYXNlXSB2b2lk
IGdldERhdGFiYXNlVGFibGVOYW1lcyhpbiBsb25nIGRhdGFiYXNlSWQsIG91dCBBcnJheSB0YWJs
ZU5hbWVzKTsKLSAgICAgICAgW2RvbWFpbj1EYXRhYmFzZV0gdm9pZCBleGVjdXRlU1FMKGluIGxv
bmcgZGF0YWJhc2VJZCwgaW4gU3RyaW5nIHF1ZXJ5LCBvdXQgYm9vbGVhbiBzdWNjZXNzLCBvdXQg
bG9uZyB0cmFuc2FjdGlvbklkKTsKKyAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPUlOU1BFQ1RP
Ul0gTmV0d29yayB7CisgICAgICAgIHZvaWQgY2FjaGVkUmVzb3VyY2VzKG91dCBPYmplY3QgcmVz
b3VyY2VzKTsKKyAgICAgICAgdm9pZCByZXNvdXJjZUNvbnRlbnQoaW4gdW5zaWduZWQgbG9uZyBm
cmFtZUlkLCBpbiBTdHJpbmcgdXJsLCBpbiBib29sZWFuIGJhc2U2NEVuY29kZSwgb3V0IGJvb2xl
YW4gc3VjY2Vzcywgb3V0IFN0cmluZyBjb250ZW50KTsKKyAgICAgICAgdm9pZCBzZXRFeHRyYUhl
YWRlcnMoaW4gT2JqZWN0IGhlYWRlcnMpOworCisgICAgICAgIFtub3RpZnldIHZvaWQgZnJhbWVE
ZXRhY2hlZEZyb21QYXJlbnQob3V0IHVuc2lnbmVkIGxvbmcgZnJhbWVJZCk7CisgICAgICAgIFtu
b3RpZnldIHZvaWQgaWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KG91dCBsb25nIGlkZW50aWZp
ZXIsIG91dCBTdHJpbmcgdXJsLCBvdXQgT2JqZWN0IGxvYWRlciwgb3V0IFZhbHVlIGNhbGxTdGFj
ayk7CisgICAgICAgIFtub3RpZnldIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KG91dCBsb25nIGlkZW50
aWZpZXIsIG91dCBkb3VibGUgdGltZSwgb3V0IE9iamVjdCByZXF1ZXN0LCBvdXQgT2JqZWN0IHJl
ZGlyZWN0UmVzcG9uc2UpOworICAgICAgICBbbm90aWZ5XSB2b2lkIG1hcmtSZXNvdXJjZUFzQ2Fj
aGVkKG91dCBsb25nIGlkZW50aWZpZXIpOworICAgICAgICBbbm90aWZ5XSB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZShvdXQgbG9uZyBpZGVudGlmaWVyLCBvdXQgZG91YmxlIHRpbWUsIG91dCBTdHJp
bmcgcmVzb3VyY2VUeXBlLCBvdXQgT2JqZWN0IHJlc3BvbnNlKTsKKyAgICAgICAgW25vdGlmeV0g
dm9pZCBkaWRSZWNlaXZlQ29udGVudExlbmd0aChvdXQgbG9uZyBpZGVudGlmaWVyLCBvdXQgZG91
YmxlIHRpbWUsIG91dCBsb25nIGxlbmd0aFJlY2VpdmVkKTsKKyAgICAgICAgW25vdGlmeV0gdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKG91dCBsb25nIGlkZW50aWZpZXIsIG91dCBkb3VibGUgZmluaXNo
VGltZSk7CisgICAgICAgIFtub3RpZnldIHZvaWQgZGlkRmFpbExvYWRpbmcob3V0IGxvbmcgaWRl
bnRpZmllciwgb3V0IGRvdWJsZSB0aW1lLCBvdXQgU3RyaW5nIGxvY2FsaXplZERlc2NyaXB0aW9u
KTsKKyAgICAgICAgW25vdGlmeV0gdm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUo
b3V0IGRvdWJsZSB0aW1lLCBvdXQgT2JqZWN0IHJlc291cmNlKTsKKyAgICAgICAgW25vdGlmeV0g
dm9pZCBzZXRJbml0aWFsQ29udGVudChvdXQgbG9uZyBpZGVudGlmaWVyLCBvdXQgU3RyaW5nIHNv
dXJjZVN0cmluZywgb3V0IFN0cmluZyB0eXBlKTsKKyAgICAgICAgW25vdGlmeV0gdm9pZCBkaWRD
b21taXRMb2FkRm9yRnJhbWUob3V0IE9iamVjdCBmcmFtZSwgb3V0IE9iamVjdCBsb2FkZXIpOwor
ICAgICAgICBbbm90aWZ5XSB2b2lkIGRpZENyZWF0ZVdlYlNvY2tldChvdXQgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBvdXQgU3RyaW5nIHJlcXVlc3RVUkwpOworICAgICAgICBbbm90aWZ5XSB2
b2lkIHdpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdChvdXQgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBvdXQgZG91YmxlIHRpbWUsIG91dCBPYmplY3QgcmVxdWVzdCk7CisgICAgICAg
IFtub3RpZnldIHZvaWQgZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKG91dCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIG91dCBkb3VibGUgdGltZSwgb3V0IE9iamVjdCByZXNw
b25zZSk7CisgICAgICAgIFtub3RpZnldIHZvaWQgZGlkQ2xvc2VXZWJTb2NrZXQob3V0IHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgb3V0IGRvdWJsZSB0aW1lKTsKKyAgICB9OwogCi0gICAgICAg
IFtub3RpZnksIGRvbWFpbj1EYXRhYmFzZV0gdm9pZCBhZGREYXRhYmFzZShvdXQgT2JqZWN0IGRh
dGFiYXNlKTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWluPURhdGFiYXNlXSB2b2lkIHNlbGVjdERh
dGFiYXNlKG91dCBpbnQgZGF0YWJhc2VJZCk7Ci0gICAgICAgIFtub3RpZnksIGRvbWFpbj1EYXRh
YmFzZV0gdm9pZCBzcWxUcmFuc2FjdGlvblN1Y2NlZWRlZChvdXQgbG9uZyB0cmFuc2FjdGlvbklk
LCBvdXQgVmFsdWUgY29sdW1uTmFtZXMsIG91dCBWYWx1ZSB2YWx1ZXMpOwotICAgICAgICBbbm90
aWZ5LCBkb21haW49RGF0YWJhc2VdIHZvaWQgc3FsVHJhbnNhY3Rpb25GYWlsZWQob3V0IGxvbmcg
dHJhbnNhY3Rpb25JZCwgb3V0IFZhbHVlIHNxbEVycm9yKTsKKyNpZiBkZWZpbmVkKEVOQUJMRV9E
QVRBQkFTRSkgJiYgRU5BQkxFX0RBVEFCQVNFCisgICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1J
TlNQRUNUT1JdIERhdGFiYXNlIHsKKyAgICAgICAgdm9pZCBnZXREYXRhYmFzZVRhYmxlTmFtZXMo
aW4gbG9uZyBkYXRhYmFzZUlkLCBvdXQgQXJyYXkgdGFibGVOYW1lcyk7CisgICAgICAgIHZvaWQg
ZXhlY3V0ZVNRTChpbiBsb25nIGRhdGFiYXNlSWQsIGluIFN0cmluZyBxdWVyeSwgb3V0IGJvb2xl
YW4gc3VjY2Vzcywgb3V0IGxvbmcgdHJhbnNhY3Rpb25JZCk7CisKKyAgICAgICAgW25vdGlmeV0g
dm9pZCBhZGREYXRhYmFzZShvdXQgT2JqZWN0IGRhdGFiYXNlKTsKKyAgICAgICAgW25vdGlmeV0g
dm9pZCBzZWxlY3REYXRhYmFzZShvdXQgaW50IGRhdGFiYXNlSWQpOworICAgICAgICBbbm90aWZ5
XSB2b2lkIHNxbFRyYW5zYWN0aW9uU3VjY2VlZGVkKG91dCBsb25nIHRyYW5zYWN0aW9uSWQsIG91
dCBWYWx1ZSBjb2x1bW5OYW1lcywgb3V0IFZhbHVlIHZhbHVlcyk7CisgICAgICAgIFtub3RpZnld
IHZvaWQgc3FsVHJhbnNhY3Rpb25GYWlsZWQob3V0IGxvbmcgdHJhbnNhY3Rpb25JZCwgb3V0IFZh
bHVlIHNxbEVycm9yKTsKKyAgICB9OwogI2VuZGlmCiAKICNpZiBkZWZpbmVkKEVOQUJMRV9ET01f
U1RPUkFHRSkgJiYgRU5BQkxFX0RPTV9TVE9SQUdFCi0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
LSAgICAgICAgLy8gRE9NIFN0b3JhZ2UgQVBJCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAg
ICAgICAgW2RvbWFpbj1ET01TdG9yYWdlXSB2b2lkIGdldERPTVN0b3JhZ2VFbnRyaWVzKGluIGxv
bmcgc3RvcmFnZUlkLCBvdXQgQXJyYXkgZW50cmllcyk7Ci0gICAgICAgIFtkb21haW49RE9NU3Rv
cmFnZV0gdm9pZCBzZXRET01TdG9yYWdlSXRlbShpbiBsb25nIHN0b3JhZ2VJZCwgaW4gU3RyaW5n
IGtleSwgaW4gU3RyaW5nIHZhbHVlLCBvdXQgYm9vbGVhbiBzdWNjZXNzKTsKLSAgICAgICAgW2Rv
bWFpbj1ET01TdG9yYWdlXSB2b2lkIHJlbW92ZURPTVN0b3JhZ2VJdGVtKGluIGxvbmcgc3RvcmFn
ZUlkLCBpbiBTdHJpbmcga2V5LCBvdXQgYm9vbGVhbiBzdWNjZXNzKTsKLSAgICAgICAgW25vdGlm
eSwgZG9tYWluPURPTVN0b3JhZ2VdIHZvaWQgYWRkRE9NU3RvcmFnZShvdXQgT2JqZWN0IHN0b3Jh
Z2UpOwotICAgICAgICBbbm90aWZ5LCBkb21haW49RE9NU3RvcmFnZV0gdm9pZCB1cGRhdGVET01T
dG9yYWdlKG91dCBpbnQgc3RvcmFnZUlkKTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWluPURPTVN0
b3JhZ2VdIHZvaWQgc2VsZWN0RE9NU3RvcmFnZShvdXQgaW50IHN0b3JhZ2VJZCk7CisgICAgaW50
ZXJmYWNlIFtDb25kaXRpb25hbD1JTlNQRUNUT1JdIERPTVN0b3JhZ2UgeworICAgICAgICB2b2lk
IGdldERPTVN0b3JhZ2VFbnRyaWVzKGluIGxvbmcgc3RvcmFnZUlkLCBvdXQgQXJyYXkgZW50cmll
cyk7CisgICAgICAgIHZvaWQgc2V0RE9NU3RvcmFnZUl0ZW0oaW4gbG9uZyBzdG9yYWdlSWQsIGlu
IFN0cmluZyBrZXksIGluIFN0cmluZyB2YWx1ZSwgb3V0IGJvb2xlYW4gc3VjY2Vzcyk7CisgICAg
ICAgIHZvaWQgcmVtb3ZlRE9NU3RvcmFnZUl0ZW0oaW4gbG9uZyBzdG9yYWdlSWQsIGluIFN0cmlu
ZyBrZXksIG91dCBib29sZWFuIHN1Y2Nlc3MpOworICAgICAgICBbbm90aWZ5XSB2b2lkIGFkZERP
TVN0b3JhZ2Uob3V0IE9iamVjdCBzdG9yYWdlKTsKKyAgICAgICAgW25vdGlmeV0gdm9pZCB1cGRh
dGVET01TdG9yYWdlKG91dCBpbnQgc3RvcmFnZUlkKTsKKyAgICAgICAgW25vdGlmeV0gdm9pZCBz
ZWxlY3RET01TdG9yYWdlKG91dCBpbnQgc3RvcmFnZUlkKTsKKyAgICB9OwogI2VuZGlmCiAKICNp
ZiBkZWZpbmVkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICYmIEVOQUJMRV9PRkZM
SU5FX1dFQl9BUFBMSUNBVElPTlMKLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAv
LyBBcHBDYWNoZSBBUEkKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgICAgICBbZG9tYWlu
PUFwcGxpY2F0aW9uQ2FjaGVdIHZvaWQgZ2V0QXBwbGljYXRpb25DYWNoZXMob3V0IFZhbHVlIGFw
cGxpY2F0aW9uQ2FjaGVzKTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWluPUFwcGxpY2F0aW9uQ2Fj
aGVdIHZvaWQgdXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1cyhvdXQgaW50IHN0YXR1cyk7Ci0g
ICAgICAgIFtub3RpZnksIGRvbWFpbj1BcHBsaWNhdGlvbkNhY2hlXSB2b2lkIHVwZGF0ZU5ldHdv
cmtTdGF0ZShvdXQgYm9vbGVhbiBpc05vd09ubGluZSk7CisgICAgaW50ZXJmYWNlIFtDb25kaXRp
b25hbD1JTlNQRUNUT1JdIEFwcGxpY2F0aW9uQ2FjaGUgeworICAgICAgICB2b2lkIGdldEFwcGxp
Y2F0aW9uQ2FjaGVzKG91dCBWYWx1ZSBhcHBsaWNhdGlvbkNhY2hlcyk7CisgICAgICAgIFtub3Rp
ZnldIHZvaWQgdXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1cyhvdXQgaW50IHN0YXR1cyk7Cisg
ICAgICAgIFtub3RpZnldIHZvaWQgdXBkYXRlTmV0d29ya1N0YXRlKG91dCBib29sZWFuIGlzTm93
T25saW5lKTsKKyAgICB9OwogI2VuZGlmCiAKICNpZiBkZWZpbmVkKEVOQUJMRV9GSUxFX1NZU1RF
TSkgJiYgRU5BQkxFX0ZJTEVfU1lTVEVNCisgICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1JTlNQ
RUNUT1JdIEZpbGVTeXN0ZW0geworICAgICAgICB2b2lkIGdldEZpbGVTeXN0ZW1QYXRoQXN5bmMo
aW4gdW5zaWduZWQgaW50IHR5cGUsIGluIFN0cmluZyBvcmlnaW4pOworICAgICAgICB2b2lkIHJl
dmVhbEZvbGRlckluT1MoaW4gU3RyaW5nIHBhdGgpOwogCi0gICAgICAgIC8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ci0gICAgICAgIC8vIEZpbGVzeXN0ZW0gQVBJCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAg
ICAgICAgW2RvbWFpbj1GaWxlU3lzdGVtXSB2b2lkIGdldEZpbGVTeXN0ZW1QYXRoQXN5bmMoaW4g
dW5zaWduZWQgaW50IHR5cGUsIGluIFN0cmluZyBvcmlnaW4pOwotICAgICAgICBbZG9tYWluPUZp
bGVTeXN0ZW1dIHZvaWQgcmV2ZWFsRm9sZGVySW5PUyhpbiBTdHJpbmcgcGF0aCk7Ci0KLSAgICAg
ICAgW25vdGlmeSwgZG9tYWluPUZpbGVTeXN0ZW1dIHZvaWQgZGlkR2V0RmlsZVN5c3RlbVBhdGgo
b3V0IFN0cmluZyByb290LCBvdXQgaW50IHR5cGUsIG91dCBTdHJpbmcgb3JpZ2luKTsKLSAgICAg
ICAgW25vdGlmeSwgZG9tYWluPUZpbGVTeXN0ZW1dIHZvaWQgZGlkR2V0RmlsZVN5c3RlbUVycm9y
KG91dCBpbnQgdHlwZSwgb3V0IFN0cmluZyBvcmlnaW4pOwotICAgICAgICBbbm90aWZ5LCBkb21h
aW49RmlsZVN5c3RlbV0gdm9pZCBkaWRHZXRGaWxlU3lzdGVtRGlzYWJsZWQoKTsKKyAgICAgICAg
W25vdGlmeV0gdm9pZCBkaWRHZXRGaWxlU3lzdGVtUGF0aChvdXQgU3RyaW5nIHJvb3QsIG91dCBp
bnQgdHlwZSwgb3V0IFN0cmluZyBvcmlnaW4pOworICAgICAgICBbbm90aWZ5XSB2b2lkIGRpZEdl
dEZpbGVTeXN0ZW1FcnJvcihvdXQgaW50IHR5cGUsIG91dCBTdHJpbmcgb3JpZ2luKTsKKyAgICAg
ICAgW25vdGlmeV0gdm9pZCBkaWRHZXRGaWxlU3lzdGVtRGlzYWJsZWQoKTsKKyAgICB9OwogI2Vu
ZGlmCiAKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gRE9NIEFQSQotICAgICAg
ICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLwotCi0gICAgICAgIFtkb21haW49RE9NXSB2b2lkIGdldENoaWxkTm9k
ZXMoaW4gbG9uZyBub2RlSWQpOwotICAgICAgICBbZG9tYWluPURPTV0gdm9pZCBzZXRBdHRyaWJ1
dGUoaW4gbG9uZyBlbGVtZW50SWQsIGluIFN0cmluZyBuYW1lLCBpbiBTdHJpbmcgdmFsdWUsIG91
dCBib29sZWFuIHN1Y2Nlc3MpOwotICAgICAgICBbZG9tYWluPURPTV0gdm9pZCByZW1vdmVBdHRy
aWJ1dGUoaW4gbG9uZyBlbGVtZW50SWQsIGluIFN0cmluZyBuYW1lLCBvdXQgYm9vbGVhbiBzdWNj
ZXNzKTsKLSAgICAgICAgW2RvbWFpbj1ET01dIHZvaWQgc2V0VGV4dE5vZGVWYWx1ZShpbiBsb25n
IG5vZGVJZCwgaW4gU3RyaW5nIHZhbHVlLCBvdXQgYm9vbGVhbiBzdWNjZXNzKTsKLSAgICAgICAg
W2RvbWFpbj1ET01dIHZvaWQgZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKGluIGxvbmcgbm9kZUlk
LCBvdXQgbG9uZyBvdXROb2RlSWQsIG91dCBBcnJheSBsaXN0ZW5lcnNBcnJheSk7Ci0gICAgICAg
IFtkb21haW49RE9NXSB2b2lkIGNvcHlOb2RlKGluIGxvbmcgbm9kZUlkKTsKLSAgICAgICAgW2Rv
bWFpbj1ET01dIHZvaWQgcmVtb3ZlTm9kZShpbiBsb25nIG5vZGVJZCwgb3V0IGxvbmcgb3V0Tm9k
ZUlkKTsKLSAgICAgICAgW2RvbWFpbj1ET01dIHZvaWQgY2hhbmdlVGFnTmFtZShpbiBsb25nIG5v
ZGVJZCwgaW4gU3RyaW5nIG5ld1RhZ05hbWUsIG91dCBsb25nIG91dE5vZGVJZCk7Ci0gICAgICAg
IFtkb21haW49RE9NXSB2b2lkIGdldE91dGVySFRNTChpbiBsb25nIG5vZGVJZCwgb3V0IFN0cmlu
ZyBvdXRlckhUTUwpOwotICAgICAgICBbZG9tYWluPURPTV0gdm9pZCBzZXRPdXRlckhUTUwoaW4g
bG9uZyBub2RlSWQsIGluIFN0cmluZyBvdXRlckhUTUwsIG91dCBsb25nIG91dE5vZGVJZCk7Ci0g
ICAgICAgIFtkb21haW49RE9NXSB2b2lkIGFkZEluc3BlY3RlZE5vZGUoaW4gbG9uZyBub2RlSWQp
OwotICAgICAgICBbZG9tYWluPURPTV0gdm9pZCBwZXJmb3JtU2VhcmNoKGluIFN0cmluZyBxdWVy
eSwgaW4gYm9vbGVhbiBydW5TeW5jaHJvbm91c2x5KTsKLSAgICAgICAgW2RvbWFpbj1ET01dIHZv
aWQgc2VhcmNoQ2FuY2VsZWQoKTsKLSAgICAgICAgW2RvbWFpbj1ET01dIHZvaWQgcHVzaE5vZGVC
eVBhdGhUb0Zyb250ZW5kKGluIFN0cmluZyBwYXRoLCBvdXQgbG9uZyBub2RlSWQpOwotICAgICAg
ICBbZG9tYWluPURPTV0gdm9pZCByZXNvbHZlTm9kZShpbiBsb25nIG5vZGVJZCwgb3V0IFZhbHVl
IHJlc3VsdCk7Ci0gICAgICAgIFtkb21haW49RE9NXSB2b2lkIGdldE5vZGVQcm9wZXJ0aWVzKGlu
IGxvbmcgbm9kZUlkLCBpbiBBcnJheSBwcm9wZXJ0aWVzQXJyYXksIG91dCBWYWx1ZSByZXN1bHQp
OwotICAgICAgICBbZG9tYWluPURPTV0gdm9pZCBnZXROb2RlUHJvdG90eXBlcyhpbiBsb25nIG5v
ZGVJZCwgb3V0IFZhbHVlIHJlc3VsdCk7Ci0gICAgICAgIFtkb21haW49RE9NXSB2b2lkIHB1c2hO
b2RlVG9Gcm9udGVuZChpbiBPYmplY3Qgb2JqZWN0SWQsIG91dCBWYWx1ZSByZXN1bHQpOwotCi0g
ICAgICAgIFtub3RpZnksIGRvbWFpbj1ET01dIHZvaWQgc2V0RG9jdW1lbnQob3V0IFZhbHVlIHJv
b3QpOyAvLyBGSVhNRTogc2hvdWxkIGJlIHJlcXVlc3RlZCBmcm9tIHRoZSBmcm9udC1lbmQgYXMg
Z2V0RG9jdW1lbnQuCi0gICAgICAgIFtub3RpZnksIGRvbWFpbj1ET01dIHZvaWQgYXR0cmlidXRl
c1VwZGF0ZWQob3V0IGxvbmcgaWQsIG91dCBBcnJheSBhdHRyaWJ1dGVzKTsKLSAgICAgICAgW25v
dGlmeSwgZG9tYWluPURPTV0gdm9pZCBjaGFyYWN0ZXJEYXRhTW9kaWZpZWQob3V0IGxvbmcgaWQs
IG91dCBTdHJpbmcgbmV3VmFsdWUpOwotICAgICAgICBbbm90aWZ5LCBkb21haW49RE9NXSB2b2lk
IHNldENoaWxkTm9kZXMob3V0IGxvbmcgcGFyZW50SWQsIG91dCBBcnJheSBub2Rlcyk7Ci0gICAg
ICAgIFtub3RpZnksIGRvbWFpbj1ET01dIHZvaWQgc2V0RGV0YWNoZWRSb290KG91dCBPYmplY3Qg
cm9vdCk7Ci0gICAgICAgIFtub3RpZnksIGRvbWFpbj1ET01dIHZvaWQgY2hpbGROb2RlQ291bnRV
cGRhdGVkKG91dCBsb25nIGlkLCBvdXQgaW50IG5ld1ZhbHVlKTsKLSAgICAgICAgW25vdGlmeSwg
ZG9tYWluPURPTV0gdm9pZCBjaGlsZE5vZGVJbnNlcnRlZChvdXQgbG9uZyBwYXJlbnRJZCwgb3V0
IGxvbmcgcHJldklkLCBvdXQgT2JqZWN0IG5vZGUpOwotICAgICAgICBbbm90aWZ5LCBkb21haW49
RE9NXSB2b2lkIGNoaWxkTm9kZVJlbW92ZWQob3V0IGxvbmcgcGFyZW50SWQsIG91dCBsb25nIGlk
KTsKLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBDU1MgQVBJCi0gICAgICAg
IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vCi0KLSAgICAgICAgW2RvbWFpbj1DU1NdIHZvaWQgZ2V0U3R5bGVzRm9y
Tm9kZShpbiBsb25nIG5vZGVJZCwgb3V0IFZhbHVlIHN0eWxlcyk7Ci0gICAgICAgIFtkb21haW49
Q1NTXSB2b2lkIGdldENvbXB1dGVkU3R5bGVGb3JOb2RlKGluIGxvbmcgbm9kZUlkLCBvdXQgVmFs
dWUgc3R5bGUpOwotICAgICAgICBbZG9tYWluPUNTU10gdm9pZCBnZXRJbmxpbmVTdHlsZUZvck5v
ZGUoaW4gbG9uZyBub2RlSWQsIG91dCBWYWx1ZSBzdHlsZSk7Ci0gICAgICAgIFtkb21haW49Q1NT
XSB2b2lkIGdldEFsbFN0eWxlcyhvdXQgQXJyYXkgc3R5bGVTaGVldElkcyk7Ci0gICAgICAgIFtk
b21haW49Q1NTXSB2b2lkIGdldFN0eWxlU2hlZXQoaW4gU3RyaW5nIHN0eWxlU2hlZXRJZCwgb3V0
IFZhbHVlIHN0eWxlU2hlZXQpOwotICAgICAgICBbZG9tYWluPUNTU10gdm9pZCBnZXRTdHlsZVNo
ZWV0VGV4dChpbiBTdHJpbmcgc3R5bGVTaGVldElkLCBvdXQgU3RyaW5nIHVybCwgb3V0IFN0cmlu
ZyB0ZXh0KTsKLSAgICAgICAgW2RvbWFpbj1DU1NdIHZvaWQgc2V0U3R5bGVTaGVldFRleHQoaW4g
U3RyaW5nIHN0eWxlU2hlZXRJZCwgaW4gU3RyaW5nIHRleHQsIG91dCBib29sZWFuIHN1Y2Nlc3Mp
OwotICAgICAgICBbZG9tYWluPUNTU10gdm9pZCBzZXRQcm9wZXJ0eVRleHQoaW4gT2JqZWN0IHN0
eWxlSWQsIGluIGxvbmcgcHJvcGVydHlJbmRleCwgaW4gU3RyaW5nIHRleHQsIGluIGJvb2xlYW4g
b3ZlcndyaXRlLCBvdXQgVmFsdWUgc3R5bGUpOwotICAgICAgICBbZG9tYWluPUNTU10gdm9pZCB0
b2dnbGVQcm9wZXJ0eShpbiBPYmplY3Qgc3R5bGVJZCwgaW4gbG9uZyBwcm9wZXJ0eUluZGV4LCBp
biBib29sZWFuIGRpc2FibGUsIG91dCBWYWx1ZSBzdHlsZSk7Ci0gICAgICAgIFtkb21haW49Q1NT
XSB2b2lkIHNldFJ1bGVTZWxlY3RvcihpbiBPYmplY3QgcnVsZUlkLCBpbiBTdHJpbmcgc2VsZWN0
b3IsIG91dCBWYWx1ZSBydWxlKTsKLSAgICAgICAgW2RvbWFpbj1DU1NdIHZvaWQgYWRkUnVsZShp
biBsb25nIGNvbnRleHROb2RlSWQsIGluIFN0cmluZyBzZWxlY3Rvciwgb3V0IFZhbHVlIHJ1bGUp
OwotICAgICAgICBbZG9tYWluPUNTU10gdm9pZCBnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKG91
dCBBcnJheSBjc3NQcm9wZXJ0aWVzKTsKLSAgICAgICAgW2RvbWFpbj1DU1NdIHZvaWQgcXVlcnlT
ZWxlY3RvckFsbChpbiBsb25nIGRvY3VtZW50SWQsIGluIFN0cmluZyBzZWxlY3Rvciwgb3V0IEFy
cmF5IHJlc3VsdCk7Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gVGltZWxp
bmUgQVBJCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICAgICAgW2RvbWFpbj1JbnNwZWN0
b3JdIHZvaWQgc3RhcnRUaW1lbGluZVByb2ZpbGVyKCk7Ci0gICAgICAgIFtkb21haW49SW5zcGVj
dG9yXSB2b2lkIHN0b3BUaW1lbGluZVByb2ZpbGVyKCk7Ci0gICAgICAgIFtub3RpZnksIGRvbWFp
bj1UaW1lbGluZV0gdm9pZCB0aW1lbGluZVByb2ZpbGVyV2FzU3RhcnRlZCgpOwotICAgICAgICBb
bm90aWZ5LCBkb21haW49VGltZWxpbmVdIHZvaWQgdGltZWxpbmVQcm9maWxlcldhc1N0b3BwZWQo
KTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWluPVRpbWVsaW5lXSB2b2lkIGFkZFJlY29yZFRvVGlt
ZWxpbmUob3V0IE9iamVjdCByZWNvcmQpOwotCi0jaWYgZGVmaW5lZChFTkFCTEVfSkFWQVNDUklQ
VF9ERUJVR0dFUikgJiYgRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIKLQotICAgICAgICAvLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLwotICAgICAgICAvLyBEZWJ1Z2dlciBBUEkKLSAgICAgICAgLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KKyAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPUlOU1BFQ1RPUl0gRE9NIHsKKyAgICAgICAg
dm9pZCBnZXRDaGlsZE5vZGVzKGluIGxvbmcgbm9kZUlkKTsKKyAgICAgICAgdm9pZCBzZXRBdHRy
aWJ1dGUoaW4gbG9uZyBlbGVtZW50SWQsIGluIFN0cmluZyBuYW1lLCBpbiBTdHJpbmcgdmFsdWUs
IG91dCBib29sZWFuIHN1Y2Nlc3MpOworICAgICAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZShpbiBs
b25nIGVsZW1lbnRJZCwgaW4gU3RyaW5nIG5hbWUsIG91dCBib29sZWFuIHN1Y2Nlc3MpOworICAg
ICAgICB2b2lkIHNldFRleHROb2RlVmFsdWUoaW4gbG9uZyBub2RlSWQsIGluIFN0cmluZyB2YWx1
ZSwgb3V0IGJvb2xlYW4gc3VjY2Vzcyk7CisgICAgICAgIHZvaWQgZ2V0RXZlbnRMaXN0ZW5lcnNG
b3JOb2RlKGluIGxvbmcgbm9kZUlkLCBvdXQgbG9uZyBvdXROb2RlSWQsIG91dCBBcnJheSBsaXN0
ZW5lcnNBcnJheSk7CisgICAgICAgIHZvaWQgY29weU5vZGUoaW4gbG9uZyBub2RlSWQpOworICAg
ICAgICB2b2lkIHJlbW92ZU5vZGUoaW4gbG9uZyBub2RlSWQsIG91dCBsb25nIG91dE5vZGVJZCk7
CisgICAgICAgIHZvaWQgY2hhbmdlVGFnTmFtZShpbiBsb25nIG5vZGVJZCwgaW4gU3RyaW5nIG5l
d1RhZ05hbWUsIG91dCBsb25nIG91dE5vZGVJZCk7CisgICAgICAgIHZvaWQgZ2V0T3V0ZXJIVE1M
KGluIGxvbmcgbm9kZUlkLCBvdXQgU3RyaW5nIG91dGVySFRNTCk7CisgICAgICAgIHZvaWQgc2V0
T3V0ZXJIVE1MKGluIGxvbmcgbm9kZUlkLCBpbiBTdHJpbmcgb3V0ZXJIVE1MLCBvdXQgbG9uZyBv
dXROb2RlSWQpOworICAgICAgICB2b2lkIGFkZEluc3BlY3RlZE5vZGUoaW4gbG9uZyBub2RlSWQp
OworICAgICAgICB2b2lkIHBlcmZvcm1TZWFyY2goaW4gU3RyaW5nIHF1ZXJ5LCBpbiBib29sZWFu
IHJ1blN5bmNocm9ub3VzbHkpOworICAgICAgICB2b2lkIHNlYXJjaENhbmNlbGVkKCk7CisgICAg
ICAgIHZvaWQgcHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKGluIFN0cmluZyBwYXRoLCBvdXQgbG9u
ZyBub2RlSWQpOworICAgICAgICB2b2lkIHJlc29sdmVOb2RlKGluIGxvbmcgbm9kZUlkLCBvdXQg
VmFsdWUgcmVzdWx0KTsKKyAgICAgICAgdm9pZCBnZXROb2RlUHJvcGVydGllcyhpbiBsb25nIG5v
ZGVJZCwgaW4gQXJyYXkgcHJvcGVydGllc0FycmF5LCBvdXQgVmFsdWUgcmVzdWx0KTsKKyAgICAg
ICAgdm9pZCBnZXROb2RlUHJvdG90eXBlcyhpbiBsb25nIG5vZGVJZCwgb3V0IFZhbHVlIHJlc3Vs
dCk7CisgICAgICAgIHZvaWQgcHVzaE5vZGVUb0Zyb250ZW5kKGluIE9iamVjdCBvYmplY3RJZCwg
b3V0IFZhbHVlIHJlc3VsdCk7CisKKyAgICAgICAgW25vdGlmeV0gdm9pZCBzZXREb2N1bWVudChv
dXQgVmFsdWUgcm9vdCk7IC8vIEZJWE1FOiBzaG91bGQgYmUgcmVxdWVzdGVkIGZyb20gdGhlIGZy
b250LWVuZCBhcyBnZXREb2N1bWVudC4KKyAgICAgICAgW25vdGlmeV0gdm9pZCBhdHRyaWJ1dGVz
VXBkYXRlZChvdXQgbG9uZyBpZCwgb3V0IEFycmF5IGF0dHJpYnV0ZXMpOworICAgICAgICBbbm90
aWZ5XSB2b2lkIGNoYXJhY3RlckRhdGFNb2RpZmllZChvdXQgbG9uZyBpZCwgb3V0IFN0cmluZyBu
ZXdWYWx1ZSk7CisgICAgICAgIFtub3RpZnldIHZvaWQgc2V0Q2hpbGROb2RlcyhvdXQgbG9uZyBw
YXJlbnRJZCwgb3V0IEFycmF5IG5vZGVzKTsKKyAgICAgICAgW25vdGlmeV0gdm9pZCBzZXREZXRh
Y2hlZFJvb3Qob3V0IE9iamVjdCByb290KTsKKyAgICAgICAgW25vdGlmeV0gdm9pZCBjaGlsZE5v
ZGVDb3VudFVwZGF0ZWQob3V0IGxvbmcgaWQsIG91dCBpbnQgbmV3VmFsdWUpOworICAgICAgICBb
bm90aWZ5XSB2b2lkIGNoaWxkTm9kZUluc2VydGVkKG91dCBsb25nIHBhcmVudElkLCBvdXQgbG9u
ZyBwcmV2SWQsIG91dCBPYmplY3Qgbm9kZSk7CisgICAgICAgIFtub3RpZnldIHZvaWQgY2hpbGRO
b2RlUmVtb3ZlZChvdXQgbG9uZyBwYXJlbnRJZCwgb3V0IGxvbmcgaWQpOworICAgIH07CiAKLSAg
ICAgICAgW2RvbWFpbj1JbnNwZWN0b3JdIHZvaWQgZW5hYmxlRGVidWdnZXIoKTsKLSAgICAgICAg
W2RvbWFpbj1JbnNwZWN0b3JdIHZvaWQgZGlzYWJsZURlYnVnZ2VyKCk7CisgICAgaW50ZXJmYWNl
IFtDb25kaXRpb25hbD1JTlNQRUNUT1JdIENTUyB7CisgICAgICAgIHZvaWQgZ2V0U3R5bGVzRm9y
Tm9kZShpbiBsb25nIG5vZGVJZCwgb3V0IFZhbHVlIHN0eWxlcyk7CisgICAgICAgIHZvaWQgZ2V0
Q29tcHV0ZWRTdHlsZUZvck5vZGUoaW4gbG9uZyBub2RlSWQsIG91dCBWYWx1ZSBzdHlsZSk7Cisg
ICAgICAgIHZvaWQgZ2V0SW5saW5lU3R5bGVGb3JOb2RlKGluIGxvbmcgbm9kZUlkLCBvdXQgVmFs
dWUgc3R5bGUpOworICAgICAgICB2b2lkIGdldEFsbFN0eWxlcyhvdXQgQXJyYXkgc3R5bGVTaGVl
dElkcyk7CisgICAgICAgIHZvaWQgZ2V0U3R5bGVTaGVldChpbiBTdHJpbmcgc3R5bGVTaGVldElk
LCBvdXQgVmFsdWUgc3R5bGVTaGVldCk7CisgICAgICAgIHZvaWQgZ2V0U3R5bGVTaGVldFRleHQo
aW4gU3RyaW5nIHN0eWxlU2hlZXRJZCwgb3V0IFN0cmluZyB1cmwsIG91dCBTdHJpbmcgdGV4dCk7
CisgICAgICAgIHZvaWQgc2V0U3R5bGVTaGVldFRleHQoaW4gU3RyaW5nIHN0eWxlU2hlZXRJZCwg
aW4gU3RyaW5nIHRleHQsIG91dCBib29sZWFuIHN1Y2Nlc3MpOworICAgICAgICB2b2lkIHNldFBy
b3BlcnR5VGV4dChpbiBPYmplY3Qgc3R5bGVJZCwgaW4gbG9uZyBwcm9wZXJ0eUluZGV4LCBpbiBT
dHJpbmcgdGV4dCwgaW4gYm9vbGVhbiBvdmVyd3JpdGUsIG91dCBWYWx1ZSBzdHlsZSk7CisgICAg
ICAgIHZvaWQgdG9nZ2xlUHJvcGVydHkoaW4gT2JqZWN0IHN0eWxlSWQsIGluIGxvbmcgcHJvcGVy
dHlJbmRleCwgaW4gYm9vbGVhbiBkaXNhYmxlLCBvdXQgVmFsdWUgc3R5bGUpOworICAgICAgICB2
b2lkIHNldFJ1bGVTZWxlY3RvcihpbiBPYmplY3QgcnVsZUlkLCBpbiBTdHJpbmcgc2VsZWN0b3Is
IG91dCBWYWx1ZSBydWxlKTsKKyAgICAgICAgdm9pZCBhZGRSdWxlKGluIGxvbmcgY29udGV4dE5v
ZGVJZCwgaW4gU3RyaW5nIHNlbGVjdG9yLCBvdXQgVmFsdWUgcnVsZSk7CisgICAgICAgIHZvaWQg
Z2V0U3VwcG9ydGVkQ1NTUHJvcGVydGllcyhvdXQgQXJyYXkgY3NzUHJvcGVydGllcyk7CisgICAg
ICAgIHZvaWQgcXVlcnlTZWxlY3RvckFsbChpbiBsb25nIGRvY3VtZW50SWQsIGluIFN0cmluZyBz
ZWxlY3Rvciwgb3V0IEFycmF5IHJlc3VsdCk7CisgICAgfTsKIAotICAgICAgICBbbm90aWZ5LCBk
b21haW49RGVidWdnZXJdIHZvaWQgZGVidWdnZXJXYXNFbmFibGVkKCk7Ci0gICAgICAgIFtub3Rp
ZnksIGRvbWFpbj1EZWJ1Z2dlcl0gdm9pZCBkZWJ1Z2dlcldhc0Rpc2FibGVkKCk7CisgICAgaW50
ZXJmYWNlIFtDb25kaXRpb25hbD1JTlNQRUNUT1JdIFRpbWVsaW5lIHsKKyAgICAgICAgW25vdGlm
eV0gdm9pZCB0aW1lbGluZVByb2ZpbGVyV2FzU3RhcnRlZCgpOworICAgICAgICBbbm90aWZ5XSB2
b2lkIHRpbWVsaW5lUHJvZmlsZXJXYXNTdG9wcGVkKCk7CisgICAgICAgIFtub3RpZnldIHZvaWQg
YWRkUmVjb3JkVG9UaW1lbGluZShvdXQgT2JqZWN0IHJlY29yZCk7CisgICAgfTsKIAotICAgICAg
ICBbbm90aWZ5LCBkb21haW49RGVidWdnZXJdIHZvaWQgcGFyc2VkU2NyaXB0U291cmNlKG91dCBT
dHJpbmcgc291cmNlSUQsIG91dCBTdHJpbmcgdXJsLCBvdXQgaW50IGxpbmVPZmZzZXQsIG91dCBp
bnQgY29sdW1uT2Zmc2V0LCBvdXQgaW50IGxlbmd0aCwgb3V0IGludCBzY3JpcHRXb3JsZFR5cGUp
OwotICAgICAgICBbbm90aWZ5LCBkb21haW49RGVidWdnZXJdIHZvaWQgZmFpbGVkVG9QYXJzZVNj
cmlwdFNvdXJjZShvdXQgU3RyaW5nIHVybCwgb3V0IFN0cmluZyBkYXRhLCBvdXQgaW50IGZpcnN0
TGluZSwgb3V0IGludCBlcnJvckxpbmUsIG91dCBTdHJpbmcgZXJyb3JNZXNzYWdlKTsKKyNpZiBk
ZWZpbmVkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEVfSkFWQVNDUklQVF9E
RUJVR0dFUgorICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9SU5TUEVDVE9SXSBEZWJ1Z2dlciB7
CisgICAgICAgIFtub3RpZnldIHZvaWQgZGVidWdnZXJXYXNFbmFibGVkKCk7CisgICAgICAgIFtu
b3RpZnldIHZvaWQgZGVidWdnZXJXYXNEaXNhYmxlZCgpOwogCi0gICAgICAgIFtkb21haW49RGVi
dWdnZXJdIHZvaWQgYWN0aXZhdGVCcmVha3BvaW50cygpOwotICAgICAgICBbZG9tYWluPURlYnVn
Z2VyXSB2b2lkIGRlYWN0aXZhdGVCcmVha3BvaW50cygpOworICAgICAgICBbbm90aWZ5XSB2b2lk
IHBhcnNlZFNjcmlwdFNvdXJjZShvdXQgU3RyaW5nIHNvdXJjZUlELCBvdXQgU3RyaW5nIHVybCwg
b3V0IGludCBsaW5lT2Zmc2V0LCBvdXQgaW50IGNvbHVtbk9mZnNldCwgb3V0IGludCBsZW5ndGgs
IG91dCBpbnQgc2NyaXB0V29ybGRUeXBlKTsKKyAgICAgICAgW25vdGlmeV0gdm9pZCBmYWlsZWRU
b1BhcnNlU2NyaXB0U291cmNlKG91dCBTdHJpbmcgdXJsLCBvdXQgU3RyaW5nIGRhdGEsIG91dCBp
bnQgZmlyc3RMaW5lLCBvdXQgaW50IGVycm9yTGluZSwgb3V0IFN0cmluZyBlcnJvck1lc3NhZ2Up
OwogCi0gICAgICAgIFtkb21haW49RGVidWdnZXJdIHZvaWQgc2V0SmF2YVNjcmlwdEJyZWFrcG9p
bnQoaW4gU3RyaW5nIHVybCwgaW4gaW50IGxpbmVOdW1iZXIsIGluIGludCBjb2x1bW5OdW1iZXIs
IGluIFN0cmluZyBjb25kaXRpb24sIGluIGJvb2xlYW4gZW5hYmxlZCwgb3V0IFN0cmluZyBicmVh
a3BvaW50SWQsIG91dCBBcnJheSBsb2NhdGlvbnMpOwotICAgICAgICBbZG9tYWluPURlYnVnZ2Vy
XSB2b2lkIHNldEphdmFTY3JpcHRCcmVha3BvaW50QnlTb3VyY2VJZChpbiBTdHJpbmcgc291cmNl
SWQsIGluIGludCBsaW5lTnVtYmVyLCBpbiBpbnQgY29sdW1uTnVtYmVyLCBpbiBTdHJpbmcgY29u
ZGl0aW9uLCBpbiBib29sZWFuIGVuYWJsZWQsIG91dCBTdHJpbmcgYnJlYWtwb2ludElkLCBvdXQg
aW50IGFjdHVhbExpbmVOdW1iZXIsIG91dCBpbnQgYWN0dWFsQ29sdW1uTnVtYmVyKTsKLSAgICAg
ICAgW2RvbWFpbj1EZWJ1Z2dlcl0gdm9pZCByZW1vdmVKYXZhU2NyaXB0QnJlYWtwb2ludChpbiBT
dHJpbmcgYnJlYWtwb2ludElkKTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWluPURlYnVnZ2VyXSB2
b2lkIGJyZWFrcG9pbnRSZXNvbHZlZChvdXQgU3RyaW5nIGJyZWFrcG9pbnRJZCwgb3V0IFN0cmlu
ZyBzb3VyY2VJZCwgb3V0IGludCBsaW5lTnVtYmVyLCBvdXQgaW50IGNvbHVtbk51bWJlcik7Ci0g
ICAgICAgIFtkb21haW49RGVidWdnZXJdIHZvaWQgY29udGludWVUb0xvY2F0aW9uKGluIFN0cmlu
ZyBzb3VyY2VJZCwgaW4gaW50IGxpbmVOdW1iZXIsIGluIGludCBjb2x1bW5OdW1iZXIpOworICAg
ICAgICB2b2lkIGFjdGl2YXRlQnJlYWtwb2ludHMoKTsKKyAgICAgICAgdm9pZCBkZWFjdGl2YXRl
QnJlYWtwb2ludHMoKTsKIAotICAgICAgICBbZG9tYWluPUJyb3dzZXJEZWJ1Z2dlcl0gdm9pZCBz
ZXRBbGxCcm93c2VyQnJlYWtwb2ludHMoaW4gT2JqZWN0IGJyZWFrcG9pbnRzKTsKLSAgICAgICAg
W2RvbWFpbj1Ccm93c2VyRGVidWdnZXJdIHZvaWQgc2V0RE9NQnJlYWtwb2ludChpbiBsb25nIG5v
ZGVJZCwgaW4gbG9uZyB0eXBlKTsKLSAgICAgICAgW2RvbWFpbj1Ccm93c2VyRGVidWdnZXJdIHZv
aWQgcmVtb3ZlRE9NQnJlYWtwb2ludChpbiBsb25nIG5vZGVJZCwgaW4gbG9uZyB0eXBlKTsKLSAg
ICAgICAgW2RvbWFpbj1Ccm93c2VyRGVidWdnZXJdIHZvaWQgc2V0RXZlbnRMaXN0ZW5lckJyZWFr
cG9pbnQoaW4gU3RyaW5nIGV2ZW50TmFtZSk7Ci0gICAgICAgIFtkb21haW49QnJvd3NlckRlYnVn
Z2VyXSB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXJCcmVha3BvaW50KGluIFN0cmluZyBldmVudE5h
bWUpOwotICAgICAgICBbZG9tYWluPUJyb3dzZXJEZWJ1Z2dlcl0gdm9pZCBzZXRYSFJCcmVha3Bv
aW50KGluIFN0cmluZyB1cmwpOwotICAgICAgICBbZG9tYWluPUJyb3dzZXJEZWJ1Z2dlcl0gdm9p
ZCByZW1vdmVYSFJCcmVha3BvaW50KGluIFN0cmluZyB1cmwpOworICAgICAgICB2b2lkIHNldEph
dmFTY3JpcHRCcmVha3BvaW50KGluIFN0cmluZyB1cmwsIGluIGludCBsaW5lTnVtYmVyLCBpbiBp
bnQgY29sdW1uTnVtYmVyLCBpbiBTdHJpbmcgY29uZGl0aW9uLCBpbiBib29sZWFuIGVuYWJsZWQs
IG91dCBTdHJpbmcgYnJlYWtwb2ludElkLCBvdXQgQXJyYXkgbG9jYXRpb25zKTsKKyAgICAgICAg
dm9pZCBzZXRKYXZhU2NyaXB0QnJlYWtwb2ludEJ5U291cmNlSWQoaW4gU3RyaW5nIHNvdXJjZUlk
LCBpbiBpbnQgbGluZU51bWJlciwgaW4gaW50IGNvbHVtbk51bWJlciwgaW4gU3RyaW5nIGNvbmRp
dGlvbiwgaW4gYm9vbGVhbiBlbmFibGVkLCBvdXQgU3RyaW5nIGJyZWFrcG9pbnRJZCwgb3V0IGlu
dCBhY3R1YWxMaW5lTnVtYmVyLCBvdXQgaW50IGFjdHVhbENvbHVtbk51bWJlcik7CisgICAgICAg
IHZvaWQgcmVtb3ZlSmF2YVNjcmlwdEJyZWFrcG9pbnQoaW4gU3RyaW5nIGJyZWFrcG9pbnRJZCk7
CisgICAgICAgIFtub3RpZnldIHZvaWQgYnJlYWtwb2ludFJlc29sdmVkKG91dCBTdHJpbmcgYnJl
YWtwb2ludElkLCBvdXQgU3RyaW5nIHNvdXJjZUlkLCBvdXQgaW50IGxpbmVOdW1iZXIsIG91dCBp
bnQgY29sdW1uTnVtYmVyKTsKKyAgICAgICAgdm9pZCBjb250aW51ZVRvTG9jYXRpb24oaW4gU3Ry
aW5nIHNvdXJjZUlkLCBpbiBpbnQgbGluZU51bWJlciwgaW4gaW50IGNvbHVtbk51bWJlcik7CiAK
LSAgICAgICAgW2RvbWFpbj1EZWJ1Z2dlcl0gdm9pZCBzdGVwT3ZlcigpOwotICAgICAgICBbZG9t
YWluPURlYnVnZ2VyXSB2b2lkIHN0ZXBJbnRvKCk7Ci0gICAgICAgIFtkb21haW49RGVidWdnZXJd
IHZvaWQgc3RlcE91dCgpOwotICAgICAgICBbZG9tYWluPURlYnVnZ2VyXSB2b2lkIHBhdXNlKCk7
Ci0gICAgICAgIFtub3RpZnksIGRvbWFpbj1EZWJ1Z2dlcl0gdm9pZCBwYXVzZWRTY3JpcHQob3V0
IE9iamVjdCBkZXRhaWxzKTsKLSAgICAgICAgW2RvbWFpbj1EZWJ1Z2dlcl0gdm9pZCByZXN1bWUo
KTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWluPURlYnVnZ2VyXSB2b2lkIHJlc3VtZWRTY3JpcHQo
KTsgLy8gRklYTUU6IE1ha2UgdGhpcyBvdXQgcGFyYW1ldGVyIG9mIHJlc3VtZSBpZiBwb3NzaWJs
ZS4KKyAgICAgICAgdm9pZCBzdGVwT3ZlcigpOworICAgICAgICB2b2lkIHN0ZXBJbnRvKCk7Cisg
ICAgICAgIHZvaWQgc3RlcE91dCgpOworICAgICAgICB2b2lkIHBhdXNlKCk7CisgICAgICAgIFtu
b3RpZnldIHZvaWQgcGF1c2VkU2NyaXB0KG91dCBPYmplY3QgZGV0YWlscyk7CisgICAgICAgIHZv
aWQgcmVzdW1lKCk7CisgICAgICAgIFtub3RpZnldIHZvaWQgcmVzdW1lZFNjcmlwdCgpOyAvLyBG
SVhNRTogTWFrZSB0aGlzIG91dCBwYXJhbWV0ZXIgb2YgcmVzdW1lIGlmIHBvc3NpYmxlLgogCi0g
ICAgICAgIFtkb21haW49RGVidWdnZXJdIHZvaWQgZWRpdFNjcmlwdFNvdXJjZShpbiBTdHJpbmcg
c291cmNlSUQsIGluIFN0cmluZyBuZXdDb250ZW50LCBvdXQgYm9vbGVhbiBzdWNjZXNzLCBvdXQg
U3RyaW5nIHJlc3VsdCwgb3V0IFZhbHVlIG5ld0NhbGxGcmFtZXMpOwotICAgICAgICBbZG9tYWlu
PURlYnVnZ2VyXSB2b2lkIGdldFNjcmlwdFNvdXJjZShpbiBTdHJpbmcgc291cmNlSUQsIG91dCBT
dHJpbmcgc2NyaXB0U291cmNlKTsKKyAgICAgICAgdm9pZCBlZGl0U2NyaXB0U291cmNlKGluIFN0
cmluZyBzb3VyY2VJRCwgaW4gU3RyaW5nIG5ld0NvbnRlbnQsIG91dCBib29sZWFuIHN1Y2Nlc3Ms
IG91dCBTdHJpbmcgcmVzdWx0LCBvdXQgVmFsdWUgbmV3Q2FsbEZyYW1lcyk7CisgICAgICAgIHZv
aWQgZ2V0U2NyaXB0U291cmNlKGluIFN0cmluZyBzb3VyY2VJRCwgb3V0IFN0cmluZyBzY3JpcHRT
b3VyY2UpOwogCi0gICAgICAgIFtkb21haW49RGVidWdnZXJdIHZvaWQgc2V0UGF1c2VPbkV4Y2Vw
dGlvbnNTdGF0ZShpbiBsb25nIHBhdXNlT25FeGNlcHRpb25zU3RhdGUsIG91dCBsb25nIG5ld1N0
YXRlKTsKKyAgICAgICAgdm9pZCBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKGluIGxvbmcgcGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZSwgb3V0IGxvbmcgbmV3U3RhdGUpOwogCi0gICAgICAgIFtkb21h
aW49RGVidWdnZXJdIHZvaWQgZXZhbHVhdGVPbkNhbGxGcmFtZShpbiBPYmplY3QgY2FsbEZyYW1l
SWQsIGluIFN0cmluZyBleHByZXNzaW9uLCBpbiBTdHJpbmcgb2JqZWN0R3JvdXAsIGluIGJvb2xl
YW4gaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBvdXQgVmFsdWUgcmVzdWx0KTsKLSAgICAgICAgW2Rv
bWFpbj1EZWJ1Z2dlcl0gdm9pZCBnZXRDb21wbGV0aW9uc09uQ2FsbEZyYW1lKGluIE9iamVjdCBj
YWxsRnJhbWVJZCwgaW4gU3RyaW5nIGV4cHJlc3Npb24sIGluIGJvb2xlYW4gaW5jbHVkZUNvbW1h
bmRMaW5lQVBJLCBvdXQgVmFsdWUgcmVzdWx0KTsKKyAgICAgICAgdm9pZCBldmFsdWF0ZU9uQ2Fs
bEZyYW1lKGluIE9iamVjdCBjYWxsRnJhbWVJZCwgaW4gU3RyaW5nIGV4cHJlc3Npb24sIGluIFN0
cmluZyBvYmplY3RHcm91cCwgaW4gYm9vbGVhbiBpbmNsdWRlQ29tbWFuZExpbmVBUEksIG91dCBW
YWx1ZSByZXN1bHQpOworICAgICAgICB2b2lkIGdldENvbXBsZXRpb25zT25DYWxsRnJhbWUoaW4g
T2JqZWN0IGNhbGxGcmFtZUlkLCBpbiBTdHJpbmcgZXhwcmVzc2lvbiwgaW4gYm9vbGVhbiBpbmNs
dWRlQ29tbWFuZExpbmVBUEksIG91dCBWYWx1ZSByZXN1bHQpOwogCiAjaWYgZGVmaW5lZChFTkFC
TEVfV09SS0VSUykgJiYgRU5BQkxFX1dPUktFUlMKLSAgICAgICAgW25vdGlmeSwgZG9tYWluPURl
YnVnZ2VyXSB2b2lkIGRpZENyZWF0ZVdvcmtlcihvdXQgbG9uZyBpZCwgb3V0IFN0cmluZyB1cmws
IG91dCBib29sZWFuIGlzU2hhcmVkKTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWluPURlYnVnZ2Vy
XSB2b2lkIGRpZERlc3Ryb3lXb3JrZXIob3V0IGxvbmcgaWQpOworICAgICAgICBbbm90aWZ5XSB2
b2lkIGRpZENyZWF0ZVdvcmtlcihvdXQgbG9uZyBpZCwgb3V0IFN0cmluZyB1cmwsIG91dCBib29s
ZWFuIGlzU2hhcmVkKTsKKyAgICAgICAgW25vdGlmeV0gdm9pZCBkaWREZXN0cm95V29ya2VyKG91
dCBsb25nIGlkKTsKICNlbmRpZiAvLyBFTkFCTEVfV09SS0VSUwogCi0gICAgICAgIC8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vCi0gICAgICAgIC8vIFByb2ZpbGVyIEFQSQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwor
ICAgIH07CisjZW5kaWYgLy8gRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIKIAotICAgICAgICBb
ZG9tYWluPUluc3BlY3Rvcl0gdm9pZCBlbmFibGVQcm9maWxlcigpOwotICAgICAgICBbZG9tYWlu
PUluc3BlY3Rvcl0gdm9pZCBkaXNhYmxlUHJvZmlsZXIoKTsKLSAgICAgICAgW25vdGlmeSwgZG9t
YWluPVByb2ZpbGVyXSB2b2lkIHByb2ZpbGVyV2FzRW5hYmxlZCgpOwotICAgICAgICBbbm90aWZ5
LCBkb21haW49UHJvZmlsZXJdIHZvaWQgcHJvZmlsZXJXYXNEaXNhYmxlZCgpOworI2lmIGRlZmlu
ZWQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVH
R0VSCisgICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1JTlNQRUNUT1JdIEJyb3dzZXJEZWJ1Z2dl
ciB7CisgICAgICAgIHZvaWQgc2V0QWxsQnJvd3NlckJyZWFrcG9pbnRzKGluIE9iamVjdCBicmVh
a3BvaW50cyk7CisgICAgICAgIHZvaWQgc2V0RE9NQnJlYWtwb2ludChpbiBsb25nIG5vZGVJZCwg
aW4gbG9uZyB0eXBlKTsKKyAgICAgICAgdm9pZCByZW1vdmVET01CcmVha3BvaW50KGluIGxvbmcg
bm9kZUlkLCBpbiBsb25nIHR5cGUpOworICAgICAgICB2b2lkIHNldEV2ZW50TGlzdGVuZXJCcmVh
a3BvaW50KGluIFN0cmluZyBldmVudE5hbWUpOworICAgICAgICB2b2lkIHJlbW92ZUV2ZW50TGlz
dGVuZXJCcmVha3BvaW50KGluIFN0cmluZyBldmVudE5hbWUpOworICAgICAgICB2b2lkIHNldFhI
UkJyZWFrcG9pbnQoaW4gU3RyaW5nIHVybCk7CisgICAgICAgIHZvaWQgcmVtb3ZlWEhSQnJlYWtw
b2ludChpbiBTdHJpbmcgdXJsKTsKKyAgICB9OworI2VuZGlmIC8vIEVOQUJMRV9KQVZBU0NSSVBU
X0RFQlVHR0VSCiAKLSAgICAgICAgW2RvbWFpbj1JbnNwZWN0b3JdIHZvaWQgc3RhcnRQcm9maWxp
bmcoKTsgLy8gRklYTUU6IGRpc3BhdGNoIG9uIHByb2ZpbGVyIGFnZW50LgotICAgICAgICBbZG9t
YWluPUluc3BlY3Rvcl0gdm9pZCBzdG9wUHJvZmlsaW5nKCk7IC8vIEZJWE1FOiBkaXNwYXRjaCBv
biBwcm9maWxlciBhZ2VudC4KKyNpZiBkZWZpbmVkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VS
KSAmJiBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUgorICAgIGludGVyZmFjZSBbQ29uZGl0aW9u
YWw9SU5TUEVDVE9SXSBQcm9maWxlciB7CisgICAgICAgIFtub3RpZnldIHZvaWQgcHJvZmlsZXJX
YXNFbmFibGVkKCk7CisgICAgICAgIFtub3RpZnldIHZvaWQgcHJvZmlsZXJXYXNEaXNhYmxlZCgp
OwogCi0gICAgICAgIFtkb21haW49UHJvZmlsZXJdIHZvaWQgZ2V0UHJvZmlsZUhlYWRlcnMob3V0
IEFycmF5IGhlYWRlcnMpOwotICAgICAgICBbZG9tYWluPVByb2ZpbGVyXSB2b2lkIGdldFByb2Zp
bGUoaW4gU3RyaW5nIHR5cGUsIGluIHVuc2lnbmVkIGxvbmcgdWlkLCBvdXQgT2JqZWN0IHByb2Zp
bGUpOwotICAgICAgICBbZG9tYWluPVByb2ZpbGVyXSB2b2lkIHJlbW92ZVByb2ZpbGUoaW4gU3Ry
aW5nIHR5cGUsIGluIHVuc2lnbmVkIGxvbmcgdWlkKTsKLSAgICAgICAgW2RvbWFpbj1Qcm9maWxl
cl0gdm9pZCBjbGVhclByb2ZpbGVzKCk7CisgICAgICAgIHZvaWQgZ2V0UHJvZmlsZUhlYWRlcnMo
b3V0IEFycmF5IGhlYWRlcnMpOworICAgICAgICB2b2lkIGdldFByb2ZpbGUoaW4gU3RyaW5nIHR5
cGUsIGluIHVuc2lnbmVkIGxvbmcgdWlkLCBvdXQgT2JqZWN0IHByb2ZpbGUpOworICAgICAgICB2
b2lkIHJlbW92ZVByb2ZpbGUoaW4gU3RyaW5nIHR5cGUsIGluIHVuc2lnbmVkIGxvbmcgdWlkKTsK
KyAgICAgICAgdm9pZCBjbGVhclByb2ZpbGVzKCk7CiAKICAgICAgICAgLy8gRklYTUU6IHNwbGl0
IGludG8gUHJvZmlsZXIgYW5kIEhlYXBQcm9maWxlci4KLSAgICAgICAgW2RvbWFpbj1Qcm9maWxl
cl0gdm9pZCB0YWtlSGVhcFNuYXBzaG90KGluIGJvb2xlYW4gZGV0YWlsZWQpOwotICAgICAgICBb
bm90aWZ5LCBkb21haW49UHJvZmlsZXJdIHZvaWQgYWRkUHJvZmlsZUhlYWRlcihvdXQgT2JqZWN0
IGhlYWRlcik7Ci0gICAgICAgIFtub3RpZnksIGRvbWFpbj1Qcm9maWxlcl0gdm9pZCBhZGRIZWFw
U25hcHNob3RDaHVuayhvdXQgdW5zaWduZWQgbG9uZyB1aWQsIG91dCBTdHJpbmcgY2h1bmspOwot
ICAgICAgICBbbm90aWZ5LCBkb21haW49UHJvZmlsZXJdIHZvaWQgZmluaXNoSGVhcFNuYXBzaG90
KG91dCB1bnNpZ25lZCBsb25nIHVpZCk7Ci0gICAgICAgIFtub3RpZnksIGRvbWFpbj1Qcm9maWxl
cl0gdm9pZCBzZXRSZWNvcmRpbmdQcm9maWxlKG91dCBib29sZWFuIGlzUHJvZmlsaW5nKTsKLSAg
ICAgICAgW25vdGlmeSwgZG9tYWluPVByb2ZpbGVyXSB2b2lkIHJlc2V0UHJvZmlsZXMoKTsKLSAg
ICAgICAgW25vdGlmeSwgZG9tYWluPVByb2ZpbGVyXSB2b2lkIHJlcG9ydEhlYXBTbmFwc2hvdFBy
b2dyZXNzKG91dCBpbnQgZG9uZSwgb3V0IGludCB0b3RhbCk7Ci0jZW5kaWYgLy8gRU5BQkxFX0pB
VkFTQ1JJUFRfREVCVUdHRVIKKyAgICAgICAgdm9pZCB0YWtlSGVhcFNuYXBzaG90KGluIGJvb2xl
YW4gZGV0YWlsZWQpOworICAgICAgICBbbm90aWZ5XSB2b2lkIGFkZFByb2ZpbGVIZWFkZXIob3V0
IE9iamVjdCBoZWFkZXIpOworICAgICAgICBbbm90aWZ5XSB2b2lkIGFkZEhlYXBTbmFwc2hvdENo
dW5rKG91dCB1bnNpZ25lZCBsb25nIHVpZCwgb3V0IFN0cmluZyBjaHVuayk7CisgICAgICAgIFtu
b3RpZnldIHZvaWQgZmluaXNoSGVhcFNuYXBzaG90KG91dCB1bnNpZ25lZCBsb25nIHVpZCk7Cisg
ICAgICAgIFtub3RpZnldIHZvaWQgc2V0UmVjb3JkaW5nUHJvZmlsZShvdXQgYm9vbGVhbiBpc1By
b2ZpbGluZyk7CisgICAgICAgIFtub3RpZnldIHZvaWQgcmVzZXRQcm9maWxlcygpOworICAgICAg
ICBbbm90aWZ5XSB2b2lkIHJlcG9ydEhlYXBTbmFwc2hvdFByb2dyZXNzKG91dCBpbnQgZG9uZSwg
b3V0IGludCB0b3RhbCk7CiAgICAgfTsKKyNlbmRpZiAvLyBFTkFCTEVfSkFWQVNDUklQVF9ERUJV
R0dFUgogfQo=
</data>
<flag name="review"
          id="73577"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>