<?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>43500</bug_id>
          
          <creation_ts>2010-08-04 12:06:24 -0700</creation_ts>
          <short_desc>Update ANGLE to r352</short_desc>
          <delta_ts>2010-08-04 12:32:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</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>42405</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="Kenneth Russell">kbr</assigned_to>
          <cc>adele</cc>
    
    <cc>cmarrin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>japhet</cc>
    
    <cc>psawaya</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>260138</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-08-04 12:06:24 -0700</bug_when>
    <thetext>We need to update the copy of ANGLE checked in to WebKit to r352 to track the version used in Chromium. Recent API changes in the shader validator are preventing the patch in https://bugs.webkit.org/show_bug.cgi?id=42405 from building on Chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260143</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-08-04 12:11:25 -0700</bug_when>
    <thetext>I don&apos;t think this bug should block https://bugs.webkit.org/show_bug.cgi?id=42405. We can still land the integration with WebCore without making this change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260146</commentid>
    <comment_count>2</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-08-04 12:19:23 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; I don&apos;t think this bug should block https://bugs.webkit.org/show_bug.cgi?id=42405. We can still land the integration with WebCore without making this change

That is true, but the Chromium project could not then update to a newer WebKit without updating both the ANGLE in WebKit and the use of ANGLE in WebCore. Any public API changes to the shader validator will cause this problem. I&apos;d like to address the known outstanding issue before checking in the initial code to WebCore which uses ANGLE. I&apos;ll have a patch up in a few minutes so it should not block 42405 for long.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260148</commentid>
    <comment_count>3</comment_count>
      <attachid>63478</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-08-04 12:24:01 -0700</bug_when>
    <thetext>Created attachment 63478
Patch

Updated ANGLE to r352 (July 26, 2010). Built WebKit to test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260150</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-04 12:25:34 -0700</bug_when>
    <thetext>Attachment 63478 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
Last 3072 characters of output:
er/Initialize.cpp:330:  Should have a space between // and comment  [whitespace/comments] [4]
ANGLE/src/compiler/Initialize.cpp:331:  Should have a space between // and comment  [whitespace/comments] [4]
ANGLE/src/compiler/Initialize.cpp:332:  Should have a space between // and comment  [whitespace/comments] [4]
ANGLE/src/compiler/Initialize.cpp:333:  Should have a space between // and comment  [whitespace/comments] [4]
ANGLE/src/compiler/Initialize.cpp:335:  Should have a space between // and comment  [whitespace/comments] [4]
ANGLE/src/compiler/Initialize.cpp:336:  Should have a space between // and comment  [whitespace/comments] [4]
ANGLE/src/compiler/Initialize.cpp:337:  Should have a space between // and comment  [whitespace/comments] [4]
ANGLE/src/compiler/Initialize.cpp:338:  Should have a space between // and comment  [whitespace/comments] [4]
ANGLE/src/compiler/Initialize.cpp:340:  Should have a space between // and comment  [whitespace/comments] [4]
ANGLE/src/compiler/Initialize.cpp:341:  Should have a space between // and comment  [whitespace/comments] [4]
ANGLE/src/compiler/Initialize.cpp:342:  Should have a space between // and comment  [whitespace/comments] [4]
ANGLE/src/compiler/Initialize.cpp:343:  Should have a space between // and comment  [whitespace/comments] [4]
ANGLE/src/compiler/Initialize.cpp:361:  Should have a space between // and comment  [whitespace/comments] [4]
ANGLE/src/compiler/Initialize.cpp:392:  Should have a space between // and comment  [whitespace/comments] [4]
ANGLE/src/compiler/Initialize.cpp:393:  Should have a space between // and comment  [whitespace/comments] [4]
ANGLE/src/compiler/Initialize.cpp:394:  Should have a space between // and comment  [whitespace/comments] [4]
ANGLE/src/compiler/Initialize.cpp:395:  Should have a space between // and comment  [whitespace/comments] [4]
ANGLE/src/compiler/Initialize.cpp:397:  Should have a space between // and comment  [whitespace/comments] [4]
ANGLE/src/compiler/Initialize.cpp:398:  Should have a space between // and comment  [whitespace/comments] [4]
ANGLE/src/compiler/Initialize.cpp:399:  Should have a space between // and comment  [whitespace/comments] [4]
ANGLE/src/compiler/Initialize.cpp:400:  Should have a space between // and comment  [whitespace/comments] [4]
ANGLE/src/compiler/Initialize.cpp:424:  One space before end of line comments  [whitespace/comments] [5]
ANGLE/src/compiler/Initialize.cpp:425:  One space before end of line comments  [whitespace/comments] [5]
ANGLE/src/compiler/Initialize.cpp:426:  One space before end of line comments  [whitespace/comments] [5]
ANGLE/src/compiler/Initialize.cpp:594:  Missing space before ( in switch(  [whitespace/parens] [5]
ANGLE/src/compiler/Initialize.cpp:598:  Should have a space between // and comment  [whitespace/comments] [4]
ANGLE/src/compiler/Initialize.cpp:599:  Should have a space between // and comment  [whitespace/comments] [4]
ANGLE/src/compiler/Initialize.cpp:600:  Should have a space between // and comment  [whitespace/comments] [4]
Total errors found: 48 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260151</commentid>
    <comment_count>5</comment_count>
      <attachid>63478</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-08-04 12:29:14 -0700</bug_when>
    <thetext>Comment on attachment 63478
Patch

rs=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260153</commentid>
    <comment_count>6</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-08-04 12:32:03 -0700</bug_when>
    <thetext>Committed r64665: &lt;http://trac.webkit.org/changeset/64665&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63478</attachid>
            <date>2010-08-04 12:24:01 -0700</date>
            <delta_ts>2010-08-04 12:29:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>angle.patch</filename>
            <type>text/plain</type>
            <size>66490</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IEFOR0xFL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBBTkdMRS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDY0NjYzKQorKysgQU5HTEUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNDkgQEAKKzIwMTAtMDgtMDQgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBB
TkdMRSB0byByMzUyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MzUwMAorCisgICAgICAgIFVwZGF0ZWQgQU5HTEUgdG8gcjM1MiAoSnVseSAyNiwgMjAx
MCkuIEJ1aWx0IFdlYktpdCB0byB0ZXN0LgorCisgICAgICAgICogaW5jbHVkZS9HTFNMQU5HL1No
YWRlckxhbmcuaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvSW5pdGlhbGl6ZS5jcHA6CisgICAg
ICAgIChCdWlsdEluRnVuY3Rpb25zQ29tbW9uKToKKyAgICAgICAgKEJ1aWx0SW5GdW5jdGlvbnNW
ZXJ0ZXgpOgorICAgICAgICAoQnVpbHRJbkZ1bmN0aW9uc0ZyYWdtZW50KToKKyAgICAgICAgKFN0
YW5kYXJkVW5pZm9ybXMpOgorICAgICAgICAoRGVmYXVsdFByZWNpc2lvblZlcnRleCk6CisgICAg
ICAgIChEZWZhdWx0UHJlY2lzaW9uRnJhZ21lbnQpOgorICAgICAgICAoQnVpbHRJbkNvbnN0YW50
cyk6CisgICAgICAgIChUQnVpbHRJbnM6OmluaXRpYWxpemUpOgorICAgICAgICAoSWRlbnRpZnlC
dWlsdElucyk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0luaXRpYWxpemUuaDoKKyAgICAgICAg
KFRCdWlsdEluczo6Z2V0QnVpbHRJblN0cmluZ3MpOgorICAgICAgICAqIHNyYy9jb21waWxlci9P
dXRwdXRHTFNMLmNwcDoKKyAgICAgICAgKFRPdXRwdXRHTFNMOjp2aXNpdFNlbGVjdGlvbik6Cisg
ICAgICAgICogc3JjL2NvbXBpbGVyL1NoSGFuZGxlLmg6CisgICAgICAgIChUQ29tcGlsZXI6Omdl
dExhbmd1YWdlKToKKyAgICAgICAgKFRDb21waWxlcjo6Z2V0U3BlYyk6CisgICAgICAgIChUQ29t
cGlsZXI6OmdldFN5bWJvbFRhYmxlKToKKyAgICAgICAgKFRDb21waWxlcjo6Z2V0SW5mb1Npbmsp
OgorICAgICAgICAqIHNyYy9jb21waWxlci9TaGFkZXJMYW5nLmNwcDoKKyAgICAgICAgKEluaXRp
YWxpemVTeW1ib2xUYWJsZSk6CisgICAgICAgIChHZW5lcmF0ZUJ1aWx0SW5TeW1ib2xUYWJsZSk6
CisgICAgICAgIChTaEluaXRpYWxpemUpOgorICAgICAgICAoU2hDb25zdHJ1Y3RDb21waWxlcik6
CisgICAgICAgIChTaEZpbmFsaXplKToKKyAgICAgICAgKFNoQ29tcGlsZSk6CisgICAgICAgICog
c3JjL2NvbXBpbGVyL1N5bWJvbFRhYmxlLmg6CisgICAgICAgIChUU3ltYm9sVGFibGU6OmF0QnVp
bHRJbkxldmVsKToKKyAgICAgICAgKFRTeW1ib2xUYWJsZTo6YXRHbG9iYWxMZXZlbCk6CisgICAg
ICAgIChUU3ltYm9sVGFibGU6OnB1c2gpOgorICAgICAgICAoVFN5bWJvbFRhYmxlOjpnZXRHbG9i
YWxMZXZlbCk6CisgICAgICAgIChUU3ltYm9sVGFibGU6OmN1cnJlbnRMZXZlbCk6CisgICAgICAg
ICogc3JjL2xpYkdMRVN2Mi9TaGFkZXIuY3BwOgorICAgICAgICAoZ2w6OlNoYWRlcjo6U2hhZGVy
KToKKyAgICAgICAgKGdsOjpTaGFkZXI6OmNvbXBpbGVUb0hMU0wpOgorCiAyMDEwLTA4LTAzICBN
YXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkg
QWRlbGUgUGV0ZXJzb24uCkluZGV4OiBBTkdMRS9pbmNsdWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEFOR0xFL2luY2x1ZGUvR0xTTEFORy9TaGFkZXJMYW5nLmgJKHJldmlz
aW9uIDY0NjU1KQorKysgQU5HTEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCB0eXBlZGVmIHZvaWQqIFNoSGFuZGxlOwogLy8KIC8v
IERyaXZlciBjYWxscyB0aGVzZSB0byBjcmVhdGUgYW5kIGRlc3Ryb3kgY29tcGlsZXIgb2JqZWN0
cy4KIC8vCi1TaEhhbmRsZSBTaENvbnN0cnVjdENvbXBpbGVyKEVTaExhbmd1YWdlLCBFU2hTcGVj
KTsgIC8vIG9uZSBwZXIgc2hhZGVyCitTaEhhbmRsZSBTaENvbnN0cnVjdENvbXBpbGVyKEVTaExh
bmd1YWdlLCBFU2hTcGVjLCBjb25zdCBUQnVpbHRJblJlc291cmNlKik7CiB2b2lkIFNoRGVzdHJ1
Y3QoU2hIYW5kbGUpOwogCiAvLwpAQCAtODUsNyArODUsNiBAQCBpbnQgU2hDb21waWxlKAogICAg
IGNvbnN0IGNoYXIqIGNvbnN0IHNoYWRlclN0cmluZ3NbXSwKICAgICBjb25zdCBpbnQgbnVtU3Ry
aW5ncywKICAgICBjb25zdCBFU2hPcHRpbWl6YXRpb25MZXZlbCwKLSAgICBjb25zdCBUQnVpbHRJ
blJlc291cmNlICpyZXNvdXJjZXMsCiAgICAgaW50IGRlYnVnT3B0aW9ucwogICAgICk7CiAKSW5k
ZXg6IEFOR0xFL3NyYy9jb21waWxlci9Jbml0aWFsaXplLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBBTkdM
RS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZS5jcHAJKHJldmlzaW9uIDY0NjU1KQorKysgQU5HTEUv
c3JjL2NvbXBpbGVyL0luaXRpYWxpemUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNCw1MDkgKzE0
LDUyMSBAQAogCiAjaW5jbHVkZSAiY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgiCiAKLXZvaWQgVEJ1
aWx0SW5zOjppbml0aWFsaXplKCkKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8KKy8vIFByb3Rv
dHlwZXMgZm9yIGJ1aWx0LWluIGZ1bmN0aW9ucyBzZWVuIGJ5IGJvdGggdmVydGV4IGFuZCBmcmFn
bWVudCBzaGFkZXJzLgorLy8KKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorc3RhdGljIFRTdHJpbmcg
QnVpbHRJbkZ1bmN0aW9uc0NvbW1vbigpCiB7CisgICAgVFN0cmluZyBzOworCiAgICAgLy8KLSAg
ICAvLyBJbml0aWFsaXplIGFsbCB0aGUgYnVpbHQtaW4gc3RyaW5ncyBmb3IgcGFyc2luZy4KKyAg
ICAvLyBBbmdsZSBhbmQgVHJpZ29ub21ldHJpYyBGdW5jdGlvbnMuCiAgICAgLy8KLSAgICBUU3Ry
aW5nIEJ1aWx0SW5GdW5jdGlvbnM7Ci0gICAgVFN0cmluZyBCdWlsdEluRnVuY3Rpb25zVmVydGV4
OwotICAgIFRTdHJpbmcgQnVpbHRJbkZ1bmN0aW9uc0ZyYWdtZW50OwotICAgIFRTdHJpbmcgU3Rh
bmRhcmRVbmlmb3JtczsKLSAgICBUU3RyaW5nIFZlcnRleERlZmF1bHRQcmVjaXNpb247Ci0gICAg
VFN0cmluZyBGcmFnbWVudERlZmF1bHRQcmVjaXNpb247Ci0KLSAgICB7Ci0gICAgICAgIC8vPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotICAgICAgICAvLwotICAgICAgICAvLyBQcm90b3R5cGVzIGZvciBi
dWlsdC1pbiBmdW5jdGlvbnMgc2VlbiBieSBib3RoIHZlcnRleCBhbmQgZnJhZ21lbnQgc2hhZGVy
cy4KLSAgICAgICAgLy8KLSAgICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSAgICAgICAg
VFN0cmluZyYgcyA9IEJ1aWx0SW5GdW5jdGlvbnM7Ci0KLSAgICAgICAgLy8KLSAgICAgICAgLy8g
QW5nbGUgYW5kIFRyaWdvbm9tZXRyaWMgRnVuY3Rpb25zLgotICAgICAgICAvLwotICAgICAgICBz
LmFwcGVuZChUU3RyaW5nKCJmbG9hdCByYWRpYW5zKGZsb2F0IGRlZ3JlZXMpOyIpKTsKLSAgICAg
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgcmFkaWFucyh2ZWMyICBkZWdyZWVzKTsiKSk7Ci0g
ICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHJhZGlhbnModmVjMyAgZGVncmVlcyk7Iikp
OwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICByYWRpYW5zKHZlYzQgIGRlZ3JlZXMp
OyIpKTsKLQotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBkZWdyZWVzKGZsb2F0IHJh
ZGlhbnMpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgZGVncmVlcyh2ZWMy
ICByYWRpYW5zKTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGRlZ3JlZXMo
dmVjMyAgcmFkaWFucyk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBkZWdy
ZWVzKHZlYzQgIHJhZGlhbnMpOyIpKTsKLQotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9h
dCBzaW4oZmxvYXQgYW5nbGUpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAg
c2luKHZlYzIgIGFuZ2xlKTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHNp
bih2ZWMzICBhbmdsZSk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBzaW4o
dmVjNCAgYW5nbGUpOyIpKTsKLQotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBjb3Mo
ZmxvYXQgYW5nbGUpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgY29zKHZl
YzIgIGFuZ2xlKTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGNvcyh2ZWMz
ICBhbmdsZSk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBjb3ModmVjNCAg
YW5nbGUpOyIpKTsKLQotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCB0YW4oZmxvYXQg
YW5nbGUpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgdGFuKHZlYzIgIGFu
Z2xlKTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHRhbih2ZWMzICBhbmds
ZSk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICB0YW4odmVjNCAgYW5nbGUp
OyIpKTsKLQotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBhc2luKGZsb2F0IHgpOyIp
KTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgYXNpbih2ZWMyICB4KTsiKSk7Ci0g
ICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGFzaW4odmVjMyAgeCk7IikpOwotICAgICAg
ICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBhc2luKHZlYzQgIHgpOyIpKTsKLQotICAgICAgICBz
LmFwcGVuZChUU3RyaW5nKCJmbG9hdCBhY29zKGZsb2F0IHgpOyIpKTsKLSAgICAgICAgcy5hcHBl
bmQoVFN0cmluZygidmVjMiAgYWNvcyh2ZWMyICB4KTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRT
dHJpbmcoInZlYzMgIGFjb3ModmVjMyAgeCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWM0ICBhY29zKHZlYzQgIHgpOyIpKTsKLQotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJm
bG9hdCBhdGFuKGZsb2F0IHksIGZsb2F0IHgpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjMiAgYXRhbih2ZWMyICB5LCB2ZWMyICB4KTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRT
dHJpbmcoInZlYzMgIGF0YW4odmVjMyAgeSwgdmVjMyAgeCk7IikpOwotICAgICAgICBzLmFwcGVu
ZChUU3RyaW5nKCJ2ZWM0ICBhdGFuKHZlYzQgIHksIHZlYzQgIHgpOyIpKTsKLQotICAgICAgICBz
LmFwcGVuZChUU3RyaW5nKCJmbG9hdCBhdGFuKGZsb2F0IHlfb3Zlcl94KTsiKSk7Ci0gICAgICAg
IHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGF0YW4odmVjMiAgeV9vdmVyX3gpOyIpKTsKLSAgICAg
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgYXRhbih2ZWMzICB5X292ZXJfeCk7IikpOwotICAg
ICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBhdGFuKHZlYzQgIHlfb3Zlcl94KTsiKSk7Ci0K
LSAgICAgICAgLy8KLSAgICAgICAgLy8gRXhwb25lbnRpYWwgRnVuY3Rpb25zLgotICAgICAgICAv
LwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBwb3coZmxvYXQgeCwgZmxvYXQgeSk7
IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBwb3codmVjMiAgeCwgdmVjMiAg
eSk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBwb3codmVjMyAgeCwgdmVj
MyAgeSk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBwb3codmVjNCAgeCwg
dmVjNCAgeSk7IikpOwotCi0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGV4cChmbG9h
dCB4KTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGV4cCh2ZWMyICB4KTsi
KSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGV4cCh2ZWMzICB4KTsiKSk7Ci0g
ICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGV4cCh2ZWM0ICB4KTsiKSk7Ci0KLSAgICAg
ICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbG9nKGZsb2F0IHgpOyIpKTsKLSAgICAgICAgcy5h
cHBlbmQoVFN0cmluZygidmVjMiAgbG9nKHZlYzIgIHgpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQo
VFN0cmluZygidmVjMyAgbG9nKHZlYzMgIHgpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjNCAgbG9nKHZlYzQgIHgpOyIpKTsKLQotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJm
bG9hdCBleHAyKGZsb2F0IHgpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAg
ZXhwMih2ZWMyICB4KTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGV4cDIo
dmVjMyAgeCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBleHAyKHZlYzQg
IHgpOyIpKTsKLQotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBsb2cyKGZsb2F0IHgp
OyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgbG9nMih2ZWMyICB4KTsiKSk7
Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGxvZzIodmVjMyAgeCk7IikpOwotICAg
ICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBsb2cyKHZlYzQgIHgpOyIpKTsKLQotICAgICAg
ICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBzcXJ0KGZsb2F0IHgpOyIpKTsKLSAgICAgICAgcy5h
cHBlbmQoVFN0cmluZygidmVjMiAgc3FydCh2ZWMyICB4KTsiKSk7Ci0gICAgICAgIHMuYXBwZW5k
KFRTdHJpbmcoInZlYzMgIHNxcnQodmVjMyAgeCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWM0ICBzcXJ0KHZlYzQgIHgpOyIpKTsKLQotICAgICAgICBzLmFwcGVuZChUU3RyaW5n
KCJmbG9hdCBpbnZlcnNlc3FydChmbG9hdCB4KTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJp
bmcoInZlYzIgIGludmVyc2VzcXJ0KHZlYzIgIHgpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0
cmluZygidmVjMyAgaW52ZXJzZXNxcnQodmVjMyAgeCk7IikpOwotICAgICAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWM0ICBpbnZlcnNlc3FydCh2ZWM0ICB4KTsiKSk7Ci0KLSAgICAgICAgLy8KLSAg
ICAgICAgLy8gQ29tbW9uIEZ1bmN0aW9ucy4KLSAgICAgICAgLy8KLSAgICAgICAgcy5hcHBlbmQo
VFN0cmluZygiZmxvYXQgYWJzKGZsb2F0IHgpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjMiAgYWJzKHZlYzIgIHgpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVj
MyAgYWJzKHZlYzMgIHgpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgYWJz
KHZlYzQgIHgpOyIpKTsKLQotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBzaWduKGZs
b2F0IHgpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgc2lnbih2ZWMyICB4
KTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHNpZ24odmVjMyAgeCk7Iikp
OwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBzaWduKHZlYzQgIHgpOyIpKTsKLQot
ICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBmbG9vcihmbG9hdCB4KTsiKSk7Ci0gICAg
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGZsb29yKHZlYzIgIHgpOyIpKTsKLSAgICAgICAg
cy5hcHBlbmQoVFN0cmluZygidmVjMyAgZmxvb3IodmVjMyAgeCk7IikpOwotICAgICAgICBzLmFw
cGVuZChUU3RyaW5nKCJ2ZWM0ICBmbG9vcih2ZWM0ICB4KTsiKSk7Ci0KLSAgICAgICAgcy5hcHBl
bmQoVFN0cmluZygiZmxvYXQgY2VpbChmbG9hdCB4KTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRT
dHJpbmcoInZlYzIgIGNlaWwodmVjMiAgeCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWMzICBjZWlsKHZlYzMgIHgpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVj
NCAgY2VpbCh2ZWM0ICB4KTsiKSk7Ci0KLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQg
ZnJhY3QoZmxvYXQgeCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBmcmFj
dCh2ZWMyICB4KTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGZyYWN0KHZl
YzMgIHgpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgZnJhY3QodmVjNCAg
eCk7IikpOwotCi0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IG1vZChmbG9hdCB4LCBm
bG9hdCB5KTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG1vZCh2ZWMyICB4
LCBmbG9hdCB5KTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIG1vZCh2ZWMz
ICB4LCBmbG9hdCB5KTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIG1vZCh2
ZWM0ICB4LCBmbG9hdCB5KTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG1v
ZCh2ZWMyICB4LCB2ZWMyICB5KTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMg
IG1vZCh2ZWMzICB4LCB2ZWMzICB5KTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzQgIG1vZCh2ZWM0ICB4LCB2ZWM0ICB5KTsiKSk7Ci0KLSAgICAgICAgcy5hcHBlbmQoVFN0cmlu
ZygiZmxvYXQgbWluKGZsb2F0IHgsIGZsb2F0IHkpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0
cmluZygidmVjMiAgbWluKHZlYzIgIHgsIGZsb2F0IHkpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQo
VFN0cmluZygidmVjMyAgbWluKHZlYzMgIHgsIGZsb2F0IHkpOyIpKTsKLSAgICAgICAgcy5hcHBl
bmQoVFN0cmluZygidmVjNCAgbWluKHZlYzQgIHgsIGZsb2F0IHkpOyIpKTsKLSAgICAgICAgcy5h
cHBlbmQoVFN0cmluZygidmVjMiAgbWluKHZlYzIgIHgsIHZlYzIgIHkpOyIpKTsKLSAgICAgICAg
cy5hcHBlbmQoVFN0cmluZygidmVjMyAgbWluKHZlYzMgIHgsIHZlYzMgIHkpOyIpKTsKLSAgICAg
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgbWluKHZlYzQgIHgsIHZlYzQgIHkpOyIpKTsKLQot
ICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBtYXgoZmxvYXQgeCwgZmxvYXQgeSk7Iikp
OwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBtYXgodmVjMiAgeCwgZmxvYXQgeSk7
IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBtYXgodmVjMyAgeCwgZmxvYXQg
eSk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBtYXgodmVjNCAgeCwgZmxv
YXQgeSk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBtYXgodmVjMiAgeCwg
dmVjMiAgeSk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBtYXgodmVjMyAg
eCwgdmVjMyAgeSk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBtYXgodmVj
NCAgeCwgdmVjNCAgeSk7IikpOwotCi0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGNs
YW1wKGZsb2F0IHgsIGZsb2F0IG1pblZhbCwgZmxvYXQgbWF4VmFsKTsiKSk7Ci0gICAgICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzIgIGNsYW1wKHZlYzIgIHgsIGZsb2F0IG1pblZhbCwgZmxvYXQg
bWF4VmFsKTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGNsYW1wKHZlYzMg
IHgsIGZsb2F0IG1pblZhbCwgZmxvYXQgbWF4VmFsKTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRT
dHJpbmcoInZlYzQgIGNsYW1wKHZlYzQgIHgsIGZsb2F0IG1pblZhbCwgZmxvYXQgbWF4VmFsKTsi
KSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGNsYW1wKHZlYzIgIHgsIHZlYzIg
IG1pblZhbCwgdmVjMiAgbWF4VmFsKTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzMgIGNsYW1wKHZlYzMgIHgsIHZlYzMgIG1pblZhbCwgdmVjMyAgbWF4VmFsKTsiKSk7Ci0gICAg
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGNsYW1wKHZlYzQgIHgsIHZlYzQgIG1pblZhbCwg
dmVjNCAgbWF4VmFsKTsiKSk7Ci0KLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbWl4
KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IGEpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjMiAgbWl4KHZlYzIgIHgsIHZlYzIgIHksIGZsb2F0IGEpOyIpKTsKLSAgICAgICAgcy5h
cHBlbmQoVFN0cmluZygidmVjMyAgbWl4KHZlYzMgIHgsIHZlYzMgIHksIGZsb2F0IGEpOyIpKTsK
LSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgbWl4KHZlYzQgIHgsIHZlYzQgIHksIGZs
b2F0IGEpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgbWl4KHZlYzIgIHgs
IHZlYzIgIHksIHZlYzIgIGEpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAg
bWl4KHZlYzMgIHgsIHZlYzMgIHksIHZlYzMgIGEpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0
cmluZygidmVjNCAgbWl4KHZlYzQgIHgsIHZlYzQgIHksIHZlYzQgIGEpOyIpKTsKLQotICAgICAg
ICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBzdGVwKGZsb2F0IGVkZ2UsIGZsb2F0IHgpOyIpKTsK
LSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgc3RlcCh2ZWMyICBlZGdlLCB2ZWMyICB4
KTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHN0ZXAodmVjMyAgZWRnZSwg
dmVjMyAgeCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBzdGVwKHZlYzQg
IGVkZ2UsIHZlYzQgIHgpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgc3Rl
cChmbG9hdCBlZGdlLCB2ZWMyICB4KTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzMgIHN0ZXAoZmxvYXQgZWRnZSwgdmVjMyAgeCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWM0ICBzdGVwKGZsb2F0IGVkZ2UsIHZlYzQgIHgpOyIpKTsKLQotICAgICAgICBzLmFw
cGVuZChUU3RyaW5nKCJmbG9hdCBzbW9vdGhzdGVwKGZsb2F0IGVkZ2UwLCBmbG9hdCBlZGdlMSwg
ZmxvYXQgeCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBzbW9vdGhzdGVw
KHZlYzIgIGVkZ2UwLCB2ZWMyICBlZGdlMSwgdmVjMiAgeCk7IikpOwotICAgICAgICBzLmFwcGVu
ZChUU3RyaW5nKCJ2ZWMzICBzbW9vdGhzdGVwKHZlYzMgIGVkZ2UwLCB2ZWMzICBlZGdlMSwgdmVj
MyAgeCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBzbW9vdGhzdGVwKHZl
YzQgIGVkZ2UwLCB2ZWM0ICBlZGdlMSwgdmVjNCAgeCk7IikpOwotICAgICAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWMyICBzbW9vdGhzdGVwKGZsb2F0IGVkZ2UwLCBmbG9hdCBlZGdlMSwgdmVjMiAg
eCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBzbW9vdGhzdGVwKGZsb2F0
IGVkZ2UwLCBmbG9hdCBlZGdlMSwgdmVjMyAgeCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWM0ICBzbW9vdGhzdGVwKGZsb2F0IGVkZ2UwLCBmbG9hdCBlZGdlMSwgdmVjNCAgeCk7
IikpOwotCi0gICAgICAgIC8vCi0gICAgICAgIC8vIEdlb21ldHJpYyBGdW5jdGlvbnMuCi0gICAg
ICAgIC8vCi0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGxlbmd0aChmbG9hdCB4KTsi
KSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGxlbmd0aCh2ZWMyICB4KTsiKSk7
Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGxlbmd0aCh2ZWMzICB4KTsiKSk7Ci0g
ICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGxlbmd0aCh2ZWM0ICB4KTsiKSk7Ci0KLSAg
ICAgICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZGlzdGFuY2UoZmxvYXQgcDAsIGZsb2F0IHAx
KTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNlKHZlYzIgIHAw
LCB2ZWMyICBwMSk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBkaXN0YW5j
ZSh2ZWMzICBwMCwgdmVjMyAgcDEpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygiZmxv
YXQgZGlzdGFuY2UodmVjNCAgcDAsIHZlYzQgIHAxKTsiKSk7Ci0KLSAgICAgICAgcy5hcHBlbmQo
VFN0cmluZygiZmxvYXQgZG90KGZsb2F0IHgsIGZsb2F0IHkpOyIpKTsKLSAgICAgICAgcy5hcHBl
bmQoVFN0cmluZygiZmxvYXQgZG90KHZlYzIgIHgsIHZlYzIgIHkpOyIpKTsKLSAgICAgICAgcy5h
cHBlbmQoVFN0cmluZygiZmxvYXQgZG90KHZlYzMgIHgsIHZlYzMgIHkpOyIpKTsKLSAgICAgICAg
cy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZG90KHZlYzQgIHgsIHZlYzQgIHkpOyIpKTsKLQotICAg
ICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzIGNyb3NzKHZlYzMgeCwgdmVjMyB5KTsiKSk7Ci0g
ICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IG5vcm1hbGl6ZShmbG9hdCB4KTsiKSk7Ci0g
ICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG5vcm1hbGl6ZSh2ZWMyICB4KTsiKSk7Ci0g
ICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIG5vcm1hbGl6ZSh2ZWMzICB4KTsiKSk7Ci0g
ICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIG5vcm1hbGl6ZSh2ZWM0ICB4KTsiKSk7Ci0K
LSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZmFjZWZvcndhcmQoZmxvYXQgTiwgZmxv
YXQgSSwgZmxvYXQgTnJlZik7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBm
YWNlZm9yd2FyZCh2ZWMyICBOLCB2ZWMyICBJLCB2ZWMyICBOcmVmKTsiKSk7Ci0gICAgICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzMgIGZhY2Vmb3J3YXJkKHZlYzMgIE4sIHZlYzMgIEksIHZlYzMg
IE5yZWYpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgZmFjZWZvcndhcmQo
dmVjNCAgTiwgdmVjNCAgSSwgdmVjNCAgTnJlZik7IikpOwotCi0gICAgICAgIHMuYXBwZW5kKFRT
dHJpbmcoImZsb2F0IHJlZmxlY3QoZmxvYXQgSSwgZmxvYXQgTik7IikpOwotICAgICAgICBzLmFw
cGVuZChUU3RyaW5nKCJ2ZWMyICByZWZsZWN0KHZlYzIgIEksIHZlYzIgIE4pOyIpKTsKLSAgICAg
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgcmVmbGVjdCh2ZWMzICBJLCB2ZWMzICBOKTsiKSk7
Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIHJlZmxlY3QodmVjNCAgSSwgdmVjNCAg
Tik7IikpOwotCi0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IHJlZnJhY3QoZmxvYXQg
SSwgZmxvYXQgTiwgZmxvYXQgZXRhKTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzIgIHJlZnJhY3QodmVjMiAgSSwgdmVjMiAgTiwgZmxvYXQgZXRhKTsiKSk7Ci0gICAgICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzMgIHJlZnJhY3QodmVjMyAgSSwgdmVjMyAgTiwgZmxvYXQgZXRh
KTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIHJlZnJhY3QodmVjNCAgSSwg
dmVjNCAgTiwgZmxvYXQgZXRhKTsiKSk7Ci0KLSAgICAgICAgLy8KLSAgICAgICAgLy8gTWF0cml4
IEZ1bmN0aW9ucy4KLSAgICAgICAgLy8KLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygibWF0MiBt
YXRyaXhDb21wTXVsdChtYXQyIHgsIG1hdDIgeSk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3Ry
aW5nKCJtYXQzIG1hdHJpeENvbXBNdWx0KG1hdDMgeCwgbWF0MyB5KTsiKSk7Ci0gICAgICAgIHMu
YXBwZW5kKFRTdHJpbmcoIm1hdDQgbWF0cml4Q29tcE11bHQobWF0NCB4LCBtYXQ0IHkpOyIpKTsK
LQotICAgICAgICAvLwotICAgICAgICAvLyBWZWN0b3IgcmVsYXRpb25hbCBmdW5jdGlvbnMuCi0g
ICAgICAgIC8vCi0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIGxlc3NUaGFuKHZlYzIg
eCwgdmVjMiB5KTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGxlc3NUaGFu
KHZlYzMgeCwgdmVjMyB5KTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGxl
c3NUaGFuKHZlYzQgeCwgdmVjNCB5KTsiKSk7Ci0KLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygi
YnZlYzIgbGVzc1RoYW4oaXZlYzIgeCwgaXZlYzIgeSk7IikpOwotICAgICAgICBzLmFwcGVuZChU
U3RyaW5nKCJidmVjMyBsZXNzVGhhbihpdmVjMyB4LCBpdmVjMyB5KTsiKSk7Ci0gICAgICAgIHMu
YXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGxlc3NUaGFuKGl2ZWM0IHgsIGl2ZWM0IHkpOyIpKTsKLQot
ICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBsZXNzVGhhbkVxdWFsKHZlYzIgeCwgdmVj
MiB5KTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGxlc3NUaGFuRXF1YWwo
dmVjMyB4LCB2ZWMzIHkpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgbGVz
c1RoYW5FcXVhbCh2ZWM0IHgsIHZlYzQgeSk7IikpOwotCi0gICAgICAgIHMuYXBwZW5kKFRTdHJp
bmcoImJ2ZWMyIGxlc3NUaGFuRXF1YWwoaXZlYzIgeCwgaXZlYzIgeSk7IikpOwotICAgICAgICBz
LmFwcGVuZChUU3RyaW5nKCJidmVjMyBsZXNzVGhhbkVxdWFsKGl2ZWMzIHgsIGl2ZWMzIHkpOyIp
KTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgbGVzc1RoYW5FcXVhbChpdmVjNCB4
LCBpdmVjNCB5KTsiKSk7Ci0KLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgZ3JlYXRl
clRoYW4odmVjMiB4LCB2ZWMyIHkpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygiYnZl
YzMgZ3JlYXRlclRoYW4odmVjMyB4LCB2ZWMzIHkpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0
cmluZygiYnZlYzQgZ3JlYXRlclRoYW4odmVjNCB4LCB2ZWM0IHkpOyIpKTsKLQotICAgICAgICBz
LmFwcGVuZChUU3RyaW5nKCJidmVjMiBncmVhdGVyVGhhbihpdmVjMiB4LCBpdmVjMiB5KTsiKSk7
Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGdyZWF0ZXJUaGFuKGl2ZWMzIHgsIGl2
ZWMzIHkpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgZ3JlYXRlclRoYW4o
aXZlYzQgeCwgaXZlYzQgeSk7IikpOwotCi0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMy
IGdyZWF0ZXJUaGFuRXF1YWwodmVjMiB4LCB2ZWMyIHkpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQo
VFN0cmluZygiYnZlYzMgZ3JlYXRlclRoYW5FcXVhbCh2ZWMzIHgsIHZlYzMgeSk7IikpOwotICAg
ICAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBncmVhdGVyVGhhbkVxdWFsKHZlYzQgeCwgdmVj
NCB5KTsiKSk7Ci0KLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgZ3JlYXRlclRoYW5F
cXVhbChpdmVjMiB4LCBpdmVjMiB5KTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2
ZWMzIGdyZWF0ZXJUaGFuRXF1YWwoaXZlYzMgeCwgaXZlYzMgeSk7IikpOwotICAgICAgICBzLmFw
cGVuZChUU3RyaW5nKCJidmVjNCBncmVhdGVyVGhhbkVxdWFsKGl2ZWM0IHgsIGl2ZWM0IHkpOyIp
KTsKLQotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBlcXVhbCh2ZWMyIHgsIHZlYzIg
eSk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBlcXVhbCh2ZWMzIHgsIHZl
YzMgeSk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBlcXVhbCh2ZWM0IHgs
IHZlYzQgeSk7IikpOwotCi0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIGVxdWFsKGl2
ZWMyIHgsIGl2ZWMyIHkpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgZXF1
YWwoaXZlYzMgeCwgaXZlYzMgeSk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVj
NCBlcXVhbChpdmVjNCB4LCBpdmVjNCB5KTsiKSk7Ci0KLSAgICAgICAgcy5hcHBlbmQoVFN0cmlu
ZygiYnZlYzIgZXF1YWwoYnZlYzIgeCwgYnZlYzIgeSk7IikpOwotICAgICAgICBzLmFwcGVuZChU
U3RyaW5nKCJidmVjMyBlcXVhbChidmVjMyB4LCBidmVjMyB5KTsiKSk7Ci0gICAgICAgIHMuYXBw
ZW5kKFRTdHJpbmcoImJ2ZWM0IGVxdWFsKGJ2ZWM0IHgsIGJ2ZWM0IHkpOyIpKTsKLQotICAgICAg
ICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBub3RFcXVhbCh2ZWMyIHgsIHZlYzIgeSk7IikpOwot
ICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBub3RFcXVhbCh2ZWMzIHgsIHZlYzMgeSk7
IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBub3RFcXVhbCh2ZWM0IHgsIHZl
YzQgeSk7IikpOwotCi0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIG5vdEVxdWFsKGl2
ZWMyIHgsIGl2ZWMyIHkpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgbm90
RXF1YWwoaXZlYzMgeCwgaXZlYzMgeSk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJi
dmVjNCBub3RFcXVhbChpdmVjNCB4LCBpdmVjNCB5KTsiKSk7Ci0KLSAgICAgICAgcy5hcHBlbmQo
VFN0cmluZygiYnZlYzIgbm90RXF1YWwoYnZlYzIgeCwgYnZlYzIgeSk7IikpOwotICAgICAgICBz
LmFwcGVuZChUU3RyaW5nKCJidmVjMyBub3RFcXVhbChidmVjMyB4LCBidmVjMyB5KTsiKSk7Ci0g
ICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IG5vdEVxdWFsKGJ2ZWM0IHgsIGJ2ZWM0IHkp
OyIpKTsKLQotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJib29sIGFueShidmVjMiB4KTsiKSk7
Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoImJvb2wgYW55KGJ2ZWMzIHgpOyIpKTsKLSAgICAg
ICAgcy5hcHBlbmQoVFN0cmluZygiYm9vbCBhbnkoYnZlYzQgeCk7IikpOwotCi0gICAgICAgIHMu
YXBwZW5kKFRTdHJpbmcoImJvb2wgYWxsKGJ2ZWMyIHgpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQo
VFN0cmluZygiYm9vbCBhbGwoYnZlYzMgeCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5n
KCJib29sIGFsbChidmVjNCB4KTsiKSk7Ci0KLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygiYnZl
YzIgbm90KGJ2ZWMyIHgpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgbm90
KGJ2ZWMzIHgpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgbm90KGJ2ZWM0
IHgpOyIpKTsKLQotICAgICAgICAvLwotICAgICAgICAvLyBUZXh0dXJlIEZ1bmN0aW9ucy4KLSAg
ICAgICAgLy8KLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkQoc2FtcGxl
cjJEIHNhbXBsZXIsIHZlYzIgY29vcmQpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjNCB0ZXh0dXJlMkRQcm9qKHNhbXBsZXIyRCBzYW1wbGVyLCB2ZWMzIGNvb3JkKTsiKSk7Ci0g
ICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZTJEUHJvaihzYW1wbGVyMkQgc2Ft
cGxlciwgdmVjNCBjb29yZCk7IikpOwotCi0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQg
dGV4dHVyZUN1YmUoc2FtcGxlckN1YmUgc2FtcGxlciwgdmVjMyBjb29yZCk7IikpOwotCi0gICAg
ICAgIC8vCi0gICAgICAgIC8vIE5vaXNlIGZ1bmN0aW9ucy4KLSAgICAgICAgLy8KLSAgICAvLwlz
LmFwcGVuZChUU3RyaW5nKCJmbG9hdCBub2lzZTEoZmxvYXQgeCk7IikpOwotICAgIC8vCXMuYXBw
ZW5kKFRTdHJpbmcoImZsb2F0IG5vaXNlMSh2ZWMyICB4KTsiKSk7Ci0gICAgLy8Jcy5hcHBlbmQo
VFN0cmluZygiZmxvYXQgbm9pc2UxKHZlYzMgIHgpOyIpKTsKLSAgICAvLwlzLmFwcGVuZChUU3Ry
aW5nKCJmbG9hdCBub2lzZTEodmVjNCAgeCk7IikpOwotCi0gICAgLy8Jcy5hcHBlbmQoVFN0cmlu
ZygidmVjMiBub2lzZTIoZmxvYXQgeCk7IikpOwotICAgIC8vCXMuYXBwZW5kKFRTdHJpbmcoInZl
YzIgbm9pc2UyKHZlYzIgIHgpOyIpKTsKLSAgICAvLwlzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyIG5v
aXNlMih2ZWMzICB4KTsiKSk7Ci0gICAgLy8Jcy5hcHBlbmQoVFN0cmluZygidmVjMiBub2lzZTIo
dmVjNCAgeCk7IikpOwotCi0gICAgLy8Jcy5hcHBlbmQoVFN0cmluZygidmVjMyBub2lzZTMoZmxv
YXQgeCk7IikpOwotICAgIC8vCXMuYXBwZW5kKFRTdHJpbmcoInZlYzMgbm9pc2UzKHZlYzIgIHgp
OyIpKTsKLSAgICAvLwlzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzIG5vaXNlMyh2ZWMzICB4KTsiKSk7
Ci0gICAgLy8Jcy5hcHBlbmQoVFN0cmluZygidmVjMyBub2lzZTModmVjNCAgeCk7IikpOwotCi0g
ICAgLy8Jcy5hcHBlbmQoVFN0cmluZygidmVjNCBub2lzZTQoZmxvYXQgeCk7IikpOwotICAgIC8v
CXMuYXBwZW5kKFRTdHJpbmcoInZlYzQgbm9pc2U0KHZlYzIgIHgpOyIpKTsKLSAgICAvLwlzLmFw
cGVuZChUU3RyaW5nKCJ2ZWM0IG5vaXNlNCh2ZWMzICB4KTsiKSk7Ci0gICAgLy8Jcy5hcHBlbmQo
VFN0cmluZygidmVjNCBub2lzZTQodmVjNCAgeCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmco
ImZsb2F0IHJhZGlhbnMoZmxvYXQgZGVncmVlcyk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzIgIHJhZGlhbnModmVjMiAgZGVncmVlcyk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzMgIHJhZGlhbnModmVjMyAgZGVncmVlcyk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzQgIHJhZGlhbnModmVjNCAgZGVncmVlcyk7IikpOworCisgICAgcy5hcHBlbmQoVFN0cmlu
ZygiZmxvYXQgZGVncmVlcyhmbG9hdCByYWRpYW5zKTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjMiAgZGVncmVlcyh2ZWMyICByYWRpYW5zKTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjMyAgZGVncmVlcyh2ZWMzICByYWRpYW5zKTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjNCAgZGVncmVlcyh2ZWM0ICByYWRpYW5zKTsiKSk7CisKKyAgICBzLmFwcGVuZChUU3Ry
aW5nKCJmbG9hdCBzaW4oZmxvYXQgYW5nbGUpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWMyICBzaW4odmVjMiAgYW5nbGUpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBz
aW4odmVjMyAgYW5nbGUpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBzaW4odmVj
NCAgYW5nbGUpOyIpKTsKKworICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGNvcyhmbG9hdCBh
bmdsZSk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGNvcyh2ZWMyICBhbmdsZSk7
IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGNvcyh2ZWMzICBhbmdsZSk7IikpOwor
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGNvcyh2ZWM0ICBhbmdsZSk7IikpOworCisgICAg
cy5hcHBlbmQoVFN0cmluZygiZmxvYXQgdGFuKGZsb2F0IGFuZ2xlKTsiKSk7CisgICAgcy5hcHBl
bmQoVFN0cmluZygidmVjMiAgdGFuKHZlYzIgIGFuZ2xlKTsiKSk7CisgICAgcy5hcHBlbmQoVFN0
cmluZygidmVjMyAgdGFuKHZlYzMgIGFuZ2xlKTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjNCAgdGFuKHZlYzQgIGFuZ2xlKTsiKSk7CisKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9h
dCBhc2luKGZsb2F0IHgpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBhc2luKHZl
YzIgIHgpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBhc2luKHZlYzMgIHgpOyIp
KTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBhc2luKHZlYzQgIHgpOyIpKTsKKworICAg
IHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGFjb3MoZmxvYXQgeCk7IikpOworICAgIHMuYXBwZW5k
KFRTdHJpbmcoInZlYzIgIGFjb3ModmVjMiAgeCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzMgIGFjb3ModmVjMyAgeCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGFj
b3ModmVjNCAgeCk7IikpOworCisgICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgYXRhbihmbG9h
dCB5LCBmbG9hdCB4KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgYXRhbih2ZWMy
ICB5LCB2ZWMyICB4KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgYXRhbih2ZWMz
ICB5LCB2ZWMzICB4KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgYXRhbih2ZWM0
ICB5LCB2ZWM0ICB4KTsiKSk7CisKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBhdGFuKGZs
b2F0IHlfb3Zlcl94KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgYXRhbih2ZWMy
ICB5X292ZXJfeCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGF0YW4odmVjMyAg
eV9vdmVyX3gpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBhdGFuKHZlYzQgIHlf
b3Zlcl94KTsiKSk7CiAKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygiXG4iKSk7Ci0gICAgfQot
ICAgIHsKLSAgICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgICAgIC8vCi0gICAgICAg
IC8vIFByb3RvdHlwZXMgZm9yIGJ1aWx0LWluIGZ1bmN0aW9ucyBzZWVuIGJ5IHZlcnRleCBzaGFk
ZXJzIG9ubHkuCi0gICAgICAgIC8vCi0gICAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0g
ICAgICAgIFRTdHJpbmcmIHMgPSBCdWlsdEluRnVuY3Rpb25zVmVydGV4OwotCi0gICAgICAgIC8v
Ci0gICAgICAgIC8vIEdlb21ldHJpYyBGdW5jdGlvbnMuCi0gICAgICAgIC8vCi0gICAgICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzQgZnRyYW5zZm9ybSgpOyIpKTsKLQotICAgICAgICAvLwotICAg
ICAgICAvLyBUZXh0dXJlIEZ1bmN0aW9ucy4KLSAgICAgICAgLy8KLSAgICAgICAgcy5hcHBlbmQo
VFN0cmluZygidmVjNCB0ZXh0dXJlMkRMb2Qoc2FtcGxlcjJEIHNhbXBsZXIsIHZlYzIgY29vcmQs
IGZsb2F0IGxvZCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUy
RFByb2pMb2Qoc2FtcGxlcjJEIHNhbXBsZXIsIHZlYzMgY29vcmQsIGZsb2F0IGxvZCk7IikpOwot
ICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFByb2pMb2Qoc2FtcGxlcjJE
IHNhbXBsZXIsIHZlYzQgY29vcmQsIGZsb2F0IGxvZCk7IikpOworICAgIC8vCisgICAgLy8gRXhw
b25lbnRpYWwgRnVuY3Rpb25zLgorICAgIC8vCisgICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQg
cG93KGZsb2F0IHgsIGZsb2F0IHkpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBw
b3codmVjMiAgeCwgdmVjMiAgeSk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHBv
dyh2ZWMzICB4LCB2ZWMzICB5KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgcG93
KHZlYzQgIHgsIHZlYzQgIHkpOyIpKTsKKworICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGV4
cChmbG9hdCB4KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgZXhwKHZlYzIgIHgp
OyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBleHAodmVjMyAgeCk7IikpOworICAg
IHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGV4cCh2ZWM0ICB4KTsiKSk7CisKKyAgICBzLmFwcGVu
ZChUU3RyaW5nKCJmbG9hdCBsb2coZmxvYXQgeCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzIgIGxvZyh2ZWMyICB4KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbG9n
KHZlYzMgIHgpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBsb2codmVjNCAgeCk7
IikpOworCisgICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZXhwMihmbG9hdCB4KTsiKSk7Cisg
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgZXhwMih2ZWMyICB4KTsiKSk7CisgICAgcy5hcHBl
bmQoVFN0cmluZygidmVjMyAgZXhwMih2ZWMzICB4KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjNCAgZXhwMih2ZWM0ICB4KTsiKSk7CisKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9h
dCBsb2cyKGZsb2F0IHgpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBsb2cyKHZl
YzIgIHgpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBsb2cyKHZlYzMgIHgpOyIp
KTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBsb2cyKHZlYzQgIHgpOyIpKTsKKworICAg
IHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IHNxcnQoZmxvYXQgeCk7IikpOworICAgIHMuYXBwZW5k
KFRTdHJpbmcoInZlYzIgIHNxcnQodmVjMiAgeCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzMgIHNxcnQodmVjMyAgeCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIHNx
cnQodmVjNCAgeCk7IikpOworCisgICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgaW52ZXJzZXNx
cnQoZmxvYXQgeCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGludmVyc2VzcXJ0
KHZlYzIgIHgpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBpbnZlcnNlc3FydCh2
ZWMzICB4KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgaW52ZXJzZXNxcnQodmVj
NCAgeCk7IikpOwogCi0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZUN1YmVM
b2Qoc2FtcGxlckN1YmUgc2FtcGxlciwgdmVjMyBjb29yZCwgZmxvYXQgbG9kKTsiKSk7CisgICAg
Ly8KKyAgICAvLyBDb21tb24gRnVuY3Rpb25zLgorICAgIC8vCisgICAgcy5hcHBlbmQoVFN0cmlu
ZygiZmxvYXQgYWJzKGZsb2F0IHgpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBh
YnModmVjMiAgeCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGFicyh2ZWMzICB4
KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgYWJzKHZlYzQgIHgpOyIpKTsKKwor
ICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IHNpZ24oZmxvYXQgeCk7IikpOworICAgIHMuYXBw
ZW5kKFRTdHJpbmcoInZlYzIgIHNpZ24odmVjMiAgeCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJp
bmcoInZlYzMgIHNpZ24odmVjMyAgeCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQg
IHNpZ24odmVjNCAgeCk7IikpOworCisgICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZmxvb3Io
ZmxvYXQgeCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGZsb29yKHZlYzIgIHgp
OyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBmbG9vcih2ZWMzICB4KTsiKSk7Cisg
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgZmxvb3IodmVjNCAgeCk7IikpOworCisgICAgcy5h
cHBlbmQoVFN0cmluZygiZmxvYXQgY2VpbChmbG9hdCB4KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0
cmluZygidmVjMiAgY2VpbCh2ZWMyICB4KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVj
MyAgY2VpbCh2ZWMzICB4KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgY2VpbCh2
ZWM0ICB4KTsiKSk7CisKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBmcmFjdChmbG9hdCB4
KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgZnJhY3QodmVjMiAgeCk7IikpOwor
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGZyYWN0KHZlYzMgIHgpOyIpKTsKKyAgICBzLmFw
cGVuZChUU3RyaW5nKCJ2ZWM0ICBmcmFjdCh2ZWM0ICB4KTsiKSk7CisKKyAgICBzLmFwcGVuZChU
U3RyaW5nKCJmbG9hdCBtb2QoZmxvYXQgeCwgZmxvYXQgeSk7IikpOworICAgIHMuYXBwZW5kKFRT
dHJpbmcoInZlYzIgIG1vZCh2ZWMyICB4LCBmbG9hdCB5KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0
cmluZygidmVjMyAgbW9kKHZlYzMgIHgsIGZsb2F0IHkpOyIpKTsKKyAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWM0ICBtb2QodmVjNCAgeCwgZmxvYXQgeSk7IikpOworICAgIHMuYXBwZW5kKFRTdHJp
bmcoInZlYzIgIG1vZCh2ZWMyICB4LCB2ZWMyICB5KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjMyAgbW9kKHZlYzMgIHgsIHZlYzMgIHkpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWM0ICBtb2QodmVjNCAgeCwgdmVjNCAgeSk7IikpOworCisgICAgcy5hcHBlbmQoVFN0cmlu
ZygiZmxvYXQgbWluKGZsb2F0IHgsIGZsb2F0IHkpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWMyICBtaW4odmVjMiAgeCwgZmxvYXQgeSk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzMgIG1pbih2ZWMzICB4LCBmbG9hdCB5KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjNCAgbWluKHZlYzQgIHgsIGZsb2F0IHkpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWMyICBtaW4odmVjMiAgeCwgdmVjMiAgeSk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzMgIG1pbih2ZWMzICB4LCB2ZWMzICB5KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVj
NCAgbWluKHZlYzQgIHgsIHZlYzQgIHkpOyIpKTsKKworICAgIHMuYXBwZW5kKFRTdHJpbmcoImZs
b2F0IG1heChmbG9hdCB4LCBmbG9hdCB5KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVj
MiAgbWF4KHZlYzIgIHgsIGZsb2F0IHkpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMz
ICBtYXgodmVjMyAgeCwgZmxvYXQgeSk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQg
IG1heCh2ZWM0ICB4LCBmbG9hdCB5KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAg
bWF4KHZlYzIgIHgsIHZlYzIgIHkpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBt
YXgodmVjMyAgeCwgdmVjMyAgeSk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIG1h
eCh2ZWM0ICB4LCB2ZWM0ICB5KTsiKSk7CisKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBj
bGFtcChmbG9hdCB4LCBmbG9hdCBtaW5WYWwsIGZsb2F0IG1heFZhbCk7IikpOworICAgIHMuYXBw
ZW5kKFRTdHJpbmcoInZlYzIgIGNsYW1wKHZlYzIgIHgsIGZsb2F0IG1pblZhbCwgZmxvYXQgbWF4
VmFsKTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgY2xhbXAodmVjMyAgeCwgZmxv
YXQgbWluVmFsLCBmbG9hdCBtYXhWYWwpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0
ICBjbGFtcCh2ZWM0ICB4LCBmbG9hdCBtaW5WYWwsIGZsb2F0IG1heFZhbCk7IikpOworICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzIgIGNsYW1wKHZlYzIgIHgsIHZlYzIgIG1pblZhbCwgdmVjMiAg
bWF4VmFsKTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgY2xhbXAodmVjMyAgeCwg
dmVjMyAgbWluVmFsLCB2ZWMzICBtYXhWYWwpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWM0ICBjbGFtcCh2ZWM0ICB4LCB2ZWM0ICBtaW5WYWwsIHZlYzQgIG1heFZhbCk7IikpOworCisg
ICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbWl4KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IGEp
OyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBtaXgodmVjMiAgeCwgdmVjMiAgeSwg
ZmxvYXQgYSk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIG1peCh2ZWMzICB4LCB2
ZWMzICB5LCBmbG9hdCBhKTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgbWl4KHZl
YzQgIHgsIHZlYzQgIHksIGZsb2F0IGEpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMy
ICBtaXgodmVjMiAgeCwgdmVjMiAgeSwgdmVjMiAgYSk7IikpOworICAgIHMuYXBwZW5kKFRTdHJp
bmcoInZlYzMgIG1peCh2ZWMzICB4LCB2ZWMzICB5LCB2ZWMzICBhKTsiKSk7CisgICAgcy5hcHBl
bmQoVFN0cmluZygidmVjNCAgbWl4KHZlYzQgIHgsIHZlYzQgIHksIHZlYzQgIGEpOyIpKTsKKwor
ICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IHN0ZXAoZmxvYXQgZWRnZSwgZmxvYXQgeCk7Iikp
OworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHN0ZXAodmVjMiAgZWRnZSwgdmVjMiAgeCk7
IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHN0ZXAodmVjMyAgZWRnZSwgdmVjMyAg
eCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIHN0ZXAodmVjNCAgZWRnZSwgdmVj
NCAgeCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHN0ZXAoZmxvYXQgZWRnZSwg
dmVjMiAgeCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHN0ZXAoZmxvYXQgZWRn
ZSwgdmVjMyAgeCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIHN0ZXAoZmxvYXQg
ZWRnZSwgdmVjNCAgeCk7IikpOworCisgICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgc21vb3Ro
c3RlcChmbG9hdCBlZGdlMCwgZmxvYXQgZWRnZTEsIGZsb2F0IHgpOyIpKTsKKyAgICBzLmFwcGVu
ZChUU3RyaW5nKCJ2ZWMyICBzbW9vdGhzdGVwKHZlYzIgIGVkZ2UwLCB2ZWMyICBlZGdlMSwgdmVj
MiAgeCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHNtb290aHN0ZXAodmVjMyAg
ZWRnZTAsIHZlYzMgIGVkZ2UxLCB2ZWMzICB4KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjNCAgc21vb3Roc3RlcCh2ZWM0ICBlZGdlMCwgdmVjNCAgZWRnZTEsIHZlYzQgIHgpOyIpKTsK
KyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBzbW9vdGhzdGVwKGZsb2F0IGVkZ2UwLCBmbG9h
dCBlZGdlMSwgdmVjMiAgeCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHNtb290
aHN0ZXAoZmxvYXQgZWRnZTAsIGZsb2F0IGVkZ2UxLCB2ZWMzICB4KTsiKSk7CisgICAgcy5hcHBl
bmQoVFN0cmluZygidmVjNCAgc21vb3Roc3RlcChmbG9hdCBlZGdlMCwgZmxvYXQgZWRnZTEsIHZl
YzQgIHgpOyIpKTsKIAotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJcbiIpKTsKLSAgICB9Ci0g
ICAgewotICAgICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICAgICAgLy8KLSAgICAgICAg
Ly8gUHJvdG90eXBlcyBmb3IgYnVpbHQtaW4gZnVuY3Rpb25zIHNlZW4gYnkgZnJhZ21lbnQgc2hh
ZGVycyBvbmx5LgotICAgICAgICAvLwotICAgICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQot
ICAgICAgICBUU3RyaW5nJiBzID0gQnVpbHRJbkZ1bmN0aW9uc0ZyYWdtZW50OwotCi0gICAgICAg
IC8vCi0gICAgICAgIC8vIFRleHR1cmUgRnVuY3Rpb25zLgotICAgICAgICAvLwotICAgICAgICBz
LmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRChzYW1wbGVyMkQgc2FtcGxlciwgdmVjMiBj
b29yZCwgZmxvYXQgYmlhcyk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRl
eHR1cmUyRFByb2ooc2FtcGxlcjJEIHNhbXBsZXIsIHZlYzMgY29vcmQsIGZsb2F0IGJpYXMpOyIp
KTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRQcm9qKHNhbXBsZXIy
RCBzYW1wbGVyLCB2ZWM0IGNvb3JkLCBmbG9hdCBiaWFzKTsiKSk7Ci0KLSAgICAgICAgcy5hcHBl
bmQoVFN0cmluZygidmVjNCB0ZXh0dXJlQ3ViZShzYW1wbGVyQ3ViZSBzYW1wbGVyLCB2ZWMzIGNv
b3JkLCBmbG9hdCBiaWFzKTsiKSk7Ci0KLSAgICAvLwlzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBk
RmR4KGZsb2F0IHApOyIpKTsKLSAgICAvLwlzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBkRmR4KHZl
YzIgIHApOyIpKTsKLSAgICAvLwlzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBkRmR4KHZlYzMgIHAp
OyIpKTsKLSAgICAvLwlzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBkRmR4KHZlYzQgIHApOyIpKTsK
LQotICAgIC8vCXMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRGZHkoZmxvYXQgcCk7IikpOwotICAg
IC8vCXMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGRGZHkodmVjMiAgcCk7IikpOwotICAgIC8vCXMu
YXBwZW5kKFRTdHJpbmcoInZlYzMgIGRGZHkodmVjMyAgcCk7IikpOwotICAgIC8vCXMuYXBwZW5k
KFRTdHJpbmcoInZlYzQgIGRGZHkodmVjNCAgcCk7IikpOwotCi0gICAgICAgIHMuYXBwZW5kKFRT
dHJpbmcoImZsb2F0IGZ3aWR0aChmbG9hdCBwKTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJp
bmcoInZlYzIgIGZ3aWR0aCh2ZWMyICBwKTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzMgIGZ3aWR0aCh2ZWMzICBwKTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzQgIGZ3aWR0aCh2ZWM0ICBwKTsiKSk7CisgICAgLy8KKyAgICAvLyBHZW9tZXRyaWMgRnVuY3Rp
b25zLgorICAgIC8vCisgICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbGVuZ3RoKGZsb2F0IHgp
OyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBsZW5ndGgodmVjMiAgeCk7IikpOwor
ICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGxlbmd0aCh2ZWMzICB4KTsiKSk7CisgICAgcy5h
cHBlbmQoVFN0cmluZygiZmxvYXQgbGVuZ3RoKHZlYzQgIHgpOyIpKTsKKworICAgIHMuYXBwZW5k
KFRTdHJpbmcoImZsb2F0IGRpc3RhbmNlKGZsb2F0IHAwLCBmbG9hdCBwMSk7IikpOworICAgIHMu
YXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNlKHZlYzIgIHAwLCB2ZWMyICBwMSk7IikpOwor
ICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNlKHZlYzMgIHAwLCB2ZWMzICBwMSk7
IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNlKHZlYzQgIHAwLCB2ZWM0
ICBwMSk7IikpOworCisgICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZG90KGZsb2F0IHgsIGZs
b2F0IHkpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBkb3QodmVjMiAgeCwgdmVj
MiAgeSk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRvdCh2ZWMzICB4LCB2ZWMz
ICB5KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZG90KHZlYzQgIHgsIHZlYzQg
IHkpOyIpKTsKKworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgY3Jvc3ModmVjMyB4LCB2ZWMz
IHkpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBub3JtYWxpemUoZmxvYXQgeCk7
IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG5vcm1hbGl6ZSh2ZWMyICB4KTsiKSk7
CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbm9ybWFsaXplKHZlYzMgIHgpOyIpKTsKKyAg
ICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBub3JtYWxpemUodmVjNCAgeCk7IikpOworCisgICAg
cy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZmFjZWZvcndhcmQoZmxvYXQgTiwgZmxvYXQgSSwgZmxv
YXQgTnJlZik7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGZhY2Vmb3J3YXJkKHZl
YzIgIE4sIHZlYzIgIEksIHZlYzIgIE5yZWYpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWMzICBmYWNlZm9yd2FyZCh2ZWMzICBOLCB2ZWMzICBJLCB2ZWMzICBOcmVmKTsiKSk7CisgICAg
cy5hcHBlbmQoVFN0cmluZygidmVjNCAgZmFjZWZvcndhcmQodmVjNCAgTiwgdmVjNCAgSSwgdmVj
NCAgTnJlZik7IikpOworCisgICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgcmVmbGVjdChmbG9h
dCBJLCBmbG9hdCBOKTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgcmVmbGVjdCh2
ZWMyICBJLCB2ZWMyICBOKTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgcmVmbGVj
dCh2ZWMzICBJLCB2ZWMzICBOKTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgcmVm
bGVjdCh2ZWM0ICBJLCB2ZWM0ICBOKTsiKSk7CisKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9h
dCByZWZyYWN0KGZsb2F0IEksIGZsb2F0IE4sIGZsb2F0IGV0YSk7IikpOworICAgIHMuYXBwZW5k
KFRTdHJpbmcoInZlYzIgIHJlZnJhY3QodmVjMiAgSSwgdmVjMiAgTiwgZmxvYXQgZXRhKTsiKSk7
CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgcmVmcmFjdCh2ZWMzICBJLCB2ZWMzICBOLCBm
bG9hdCBldGEpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICByZWZyYWN0KHZlYzQg
IEksIHZlYzQgIE4sIGZsb2F0IGV0YSk7IikpOwogCi0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmco
IlxuIikpOwotICAgIH0KLSAgICB7Ci0gICAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAg
ICAgICAvLwotICAgICAgICAvLyBTdGFuZGFyZCBVbmlmb3JtcwotICAgICAgICAvLwotICAgICAg
ICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLQotICAgICAgICBUU3RyaW5nJiBzID0gU3RhbmRhcmRV
bmlmb3JtczsKLQotICAgICAgICAvLwotICAgICAgICAvLyBEZXB0aCByYW5nZSBpbiB3aW5kb3cg
Y29vcmRpbmF0ZXMKLSAgICAgICAgLy8KLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygic3RydWN0
IGdsX0RlcHRoUmFuZ2VQYXJhbWV0ZXJzIHsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmco
IiAgICBoaWdocCBmbG9hdCBuZWFyOyIpKTsgICAgICAgIC8vIG4KLSAgICAgICAgcy5hcHBlbmQo
VFN0cmluZygiICAgIGhpZ2hwIGZsb2F0IGZhcjsiKSk7ICAgICAgICAgLy8gZgotICAgICAgICBz
LmFwcGVuZChUU3RyaW5nKCIgICAgaGlnaHAgZmxvYXQgZGlmZjsiKSk7ICAgICAgICAvLyBmIC0g
bgotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ9OyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0
cmluZygidW5pZm9ybSBnbF9EZXB0aFJhbmdlUGFyYW1ldGVycyBnbF9EZXB0aFJhbmdlOyIpKTsK
KyAgICAvLworICAgIC8vIE1hdHJpeCBGdW5jdGlvbnMuCisgICAgLy8KKyAgICBzLmFwcGVuZChU
U3RyaW5nKCJtYXQyIG1hdHJpeENvbXBNdWx0KG1hdDIgeCwgbWF0MiB5KTsiKSk7CisgICAgcy5h
cHBlbmQoVFN0cmluZygibWF0MyBtYXRyaXhDb21wTXVsdChtYXQzIHgsIG1hdDMgeSk7IikpOwor
ICAgIHMuYXBwZW5kKFRTdHJpbmcoIm1hdDQgbWF0cml4Q29tcE11bHQobWF0NCB4LCBtYXQ0IHkp
OyIpKTsKIAotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJcbiIpKTsKLSAgICB9Ci0gICAgewot
ICAgICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICAgICAgLy8KLSAgICAgICAgLy8gRGVm
YXVsdCBwcmVjaXNpb24gZm9yIHZlcnRleCBzaGFkZXJzLgotICAgICAgICAvLwotICAgICAgICAv
Lz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLQotICAgICAgICBUU3RyaW5nJiBzID0gVmVydGV4RGVmYXVs
dFByZWNpc2lvbjsKLQotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJwcmVjaXNpb24gaGlnaHAg
aW50OyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygicHJlY2lzaW9uIGhpZ2hwIGZsb2F0
OyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygiXG4iKSk7Ci0gICAgfQotICAgIHsKLSAg
ICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgICAgIC8vCi0gICAgICAgIC8vIERlZmF1
bHQgcHJlY2lzaW9uIGZvciBmcmFnbWVudCBzaGFkZXJzLgotICAgICAgICAvLwotICAgICAgICAv
Lz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLSAgICAgICAgCi0gICAgICAgIFRTdHJpbmcmIHMgPSBGcmFn
bWVudERlZmF1bHRQcmVjaXNpb247Ci0gICAgICAgIAotICAgICAgICBzLmFwcGVuZChUU3RyaW5n
KCJwcmVjaXNpb24gbWVkaXVtcCBpbnQ7IikpOwotICAgICAgICAvLyBObyBkZWZhdWx0IHByZWNp
c2lvbiBmb3IgZmxvYXQgaW4gZnJhZ21lbnQgc2hhZGVycwotICAgICAgICBzLmFwcGVuZChUU3Ry
aW5nKCJcbiIpKTsKLSAgICB9CisgICAgLy8KKyAgICAvLyBWZWN0b3IgcmVsYXRpb25hbCBmdW5j
dGlvbnMuCisgICAgLy8KKyAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBsZXNzVGhhbih2ZWMy
IHgsIHZlYzIgeSk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGxlc3NUaGFuKHZl
YzMgeCwgdmVjMyB5KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgbGVzc1RoYW4o
dmVjNCB4LCB2ZWM0IHkpOyIpKTsKKworICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIGxlc3NU
aGFuKGl2ZWMyIHgsIGl2ZWMyIHkpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBs
ZXNzVGhhbihpdmVjMyB4LCBpdmVjMyB5KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygiYnZl
YzQgbGVzc1RoYW4oaXZlYzQgeCwgaXZlYzQgeSk7IikpOworCisgICAgcy5hcHBlbmQoVFN0cmlu
ZygiYnZlYzIgbGVzc1RoYW5FcXVhbCh2ZWMyIHgsIHZlYzIgeSk7IikpOworICAgIHMuYXBwZW5k
KFRTdHJpbmcoImJ2ZWMzIGxlc3NUaGFuRXF1YWwodmVjMyB4LCB2ZWMzIHkpOyIpKTsKKyAgICBz
LmFwcGVuZChUU3RyaW5nKCJidmVjNCBsZXNzVGhhbkVxdWFsKHZlYzQgeCwgdmVjNCB5KTsiKSk7
CisKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBsZXNzVGhhbkVxdWFsKGl2ZWMyIHgsIGl2
ZWMyIHkpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBsZXNzVGhhbkVxdWFsKGl2
ZWMzIHgsIGl2ZWMzIHkpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBsZXNzVGhh
bkVxdWFsKGl2ZWM0IHgsIGl2ZWM0IHkpOyIpKTsKKworICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2
ZWMyIGdyZWF0ZXJUaGFuKHZlYzIgeCwgdmVjMiB5KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmlu
ZygiYnZlYzMgZ3JlYXRlclRoYW4odmVjMyB4LCB2ZWMzIHkpOyIpKTsKKyAgICBzLmFwcGVuZChU
U3RyaW5nKCJidmVjNCBncmVhdGVyVGhhbih2ZWM0IHgsIHZlYzQgeSk7IikpOworCisgICAgcy5h
cHBlbmQoVFN0cmluZygiYnZlYzIgZ3JlYXRlclRoYW4oaXZlYzIgeCwgaXZlYzIgeSk7IikpOwor
ICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGdyZWF0ZXJUaGFuKGl2ZWMzIHgsIGl2ZWMzIHkp
OyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBncmVhdGVyVGhhbihpdmVjNCB4LCBp
dmVjNCB5KTsiKSk7CisKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBncmVhdGVyVGhhbkVx
dWFsKHZlYzIgeCwgdmVjMiB5KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgZ3Jl
YXRlclRoYW5FcXVhbCh2ZWMzIHgsIHZlYzMgeSk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmco
ImJ2ZWM0IGdyZWF0ZXJUaGFuRXF1YWwodmVjNCB4LCB2ZWM0IHkpOyIpKTsKKworICAgIHMuYXBw
ZW5kKFRTdHJpbmcoImJ2ZWMyIGdyZWF0ZXJUaGFuRXF1YWwoaXZlYzIgeCwgaXZlYzIgeSk7Iikp
OworICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGdyZWF0ZXJUaGFuRXF1YWwoaXZlYzMgeCwg
aXZlYzMgeSk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGdyZWF0ZXJUaGFuRXF1
YWwoaXZlYzQgeCwgaXZlYzQgeSk7IikpOworCisgICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIg
ZXF1YWwodmVjMiB4LCB2ZWMyIHkpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBl
cXVhbCh2ZWMzIHgsIHZlYzMgeSk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGVx
dWFsKHZlYzQgeCwgdmVjNCB5KTsiKSk7CisKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBl
cXVhbChpdmVjMiB4LCBpdmVjMiB5KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMg
ZXF1YWwoaXZlYzMgeCwgaXZlYzMgeSk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0
IGVxdWFsKGl2ZWM0IHgsIGl2ZWM0IHkpOyIpKTsKKworICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2
ZWMyIGVxdWFsKGJ2ZWMyIHgsIGJ2ZWMyIHkpOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJi
dmVjMyBlcXVhbChidmVjMyB4LCBidmVjMyB5KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygi
YnZlYzQgZXF1YWwoYnZlYzQgeCwgYnZlYzQgeSk7IikpOworCisgICAgcy5hcHBlbmQoVFN0cmlu
ZygiYnZlYzIgbm90RXF1YWwodmVjMiB4LCB2ZWMyIHkpOyIpKTsKKyAgICBzLmFwcGVuZChUU3Ry
aW5nKCJidmVjMyBub3RFcXVhbCh2ZWMzIHgsIHZlYzMgeSk7IikpOworICAgIHMuYXBwZW5kKFRT
dHJpbmcoImJ2ZWM0IG5vdEVxdWFsKHZlYzQgeCwgdmVjNCB5KTsiKSk7CisKKyAgICBzLmFwcGVu
ZChUU3RyaW5nKCJidmVjMiBub3RFcXVhbChpdmVjMiB4LCBpdmVjMiB5KTsiKSk7CisgICAgcy5h
cHBlbmQoVFN0cmluZygiYnZlYzMgbm90RXF1YWwoaXZlYzMgeCwgaXZlYzMgeSk7IikpOworICAg
IHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IG5vdEVxdWFsKGl2ZWM0IHgsIGl2ZWM0IHkpOyIpKTsK
KworICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIG5vdEVxdWFsKGJ2ZWMyIHgsIGJ2ZWMyIHkp
OyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBub3RFcXVhbChidmVjMyB4LCBidmVj
MyB5KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgbm90RXF1YWwoYnZlYzQgeCwg
YnZlYzQgeSk7IikpOworCisgICAgcy5hcHBlbmQoVFN0cmluZygiYm9vbCBhbnkoYnZlYzIgeCk7
IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoImJvb2wgYW55KGJ2ZWMzIHgpOyIpKTsKKyAgICBz
LmFwcGVuZChUU3RyaW5nKCJib29sIGFueShidmVjNCB4KTsiKSk7CisKKyAgICBzLmFwcGVuZChU
U3RyaW5nKCJib29sIGFsbChidmVjMiB4KTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygiYm9v
bCBhbGwoYnZlYzMgeCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoImJvb2wgYWxsKGJ2ZWM0
IHgpOyIpKTsKKworICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIG5vdChidmVjMiB4KTsiKSk7
CisgICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgbm90KGJ2ZWMzIHgpOyIpKTsKKyAgICBzLmFw
cGVuZChUU3RyaW5nKCJidmVjNCBub3QoYnZlYzQgeCk7IikpOwogCi0gICAgYnVpbHRJblN0cmlu
Z3NbRVNoTGFuZ0ZyYWdtZW50XS5wdXNoX2JhY2soRnJhZ21lbnREZWZhdWx0UHJlY2lzaW9uKTsK
LSAgICBidWlsdEluU3RyaW5nc1tFU2hMYW5nRnJhZ21lbnRdLnB1c2hfYmFjayhCdWlsdEluRnVu
Y3Rpb25zLmNfc3RyKCkpOwotICAgIGJ1aWx0SW5TdHJpbmdzW0VTaExhbmdGcmFnbWVudF0ucHVz
aF9iYWNrKEJ1aWx0SW5GdW5jdGlvbnNGcmFnbWVudCk7Ci0gICAgYnVpbHRJblN0cmluZ3NbRVNo
TGFuZ0ZyYWdtZW50XS5wdXNoX2JhY2soU3RhbmRhcmRVbmlmb3Jtcyk7Ci0gICAgCi0gICAgYnVp
bHRJblN0cmluZ3NbRVNoTGFuZ1ZlcnRleF0ucHVzaF9iYWNrKFZlcnRleERlZmF1bHRQcmVjaXNp
b24pOwotICAgIGJ1aWx0SW5TdHJpbmdzW0VTaExhbmdWZXJ0ZXhdLnB1c2hfYmFjayhCdWlsdElu
RnVuY3Rpb25zKTsKLSAgICBidWlsdEluU3RyaW5nc1tFU2hMYW5nVmVydGV4XS5wdXNoX2JhY2so
QnVpbHRJbkZ1bmN0aW9uc1ZlcnRleCk7Ci0gICAgYnVpbHRJblN0cmluZ3NbRVNoTGFuZ1ZlcnRl
eF0ucHVzaF9iYWNrKFN0YW5kYXJkVW5pZm9ybXMpOworICAgIC8vCisgICAgLy8gVGV4dHVyZSBG
dW5jdGlvbnMuCisgICAgLy8KKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRChz
YW1wbGVyMkQgc2FtcGxlciwgdmVjMiBjb29yZCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzQgdGV4dHVyZTJEUHJvaihzYW1wbGVyMkQgc2FtcGxlciwgdmVjMyBjb29yZCk7IikpOwor
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZTJEUHJvaihzYW1wbGVyMkQgc2FtcGxl
ciwgdmVjNCBjb29yZCk7IikpOworCisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJl
Q3ViZShzYW1wbGVyQ3ViZSBzYW1wbGVyLCB2ZWMzIGNvb3JkKTsiKSk7CisKKyAgICAvLworICAg
IC8vIE5vaXNlIGZ1bmN0aW9ucy4KKyAgICAvLworICAgIC8vcy5hcHBlbmQoVFN0cmluZygiZmxv
YXQgbm9pc2UxKGZsb2F0IHgpOyIpKTsKKyAgICAvL3MuYXBwZW5kKFRTdHJpbmcoImZsb2F0IG5v
aXNlMSh2ZWMyICB4KTsiKSk7CisgICAgLy9zLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBub2lzZTEo
dmVjMyAgeCk7IikpOworICAgIC8vcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbm9pc2UxKHZlYzQg
IHgpOyIpKTsKKworICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjMiBub2lzZTIoZmxvYXQgeCk7
IikpOworICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjMiBub2lzZTIodmVjMiAgeCk7IikpOwor
ICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjMiBub2lzZTIodmVjMyAgeCk7IikpOworICAgIC8v
cy5hcHBlbmQoVFN0cmluZygidmVjMiBub2lzZTIodmVjNCAgeCk7IikpOworCisgICAgLy9zLmFw
cGVuZChUU3RyaW5nKCJ2ZWMzIG5vaXNlMyhmbG9hdCB4KTsiKSk7CisgICAgLy9zLmFwcGVuZChU
U3RyaW5nKCJ2ZWMzIG5vaXNlMyh2ZWMyICB4KTsiKSk7CisgICAgLy9zLmFwcGVuZChUU3RyaW5n
KCJ2ZWMzIG5vaXNlMyh2ZWMzICB4KTsiKSk7CisgICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWMz
IG5vaXNlMyh2ZWM0ICB4KTsiKSk7CisKKyAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzQgbm9p
c2U0KGZsb2F0IHgpOyIpKTsKKyAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzQgbm9pc2U0KHZl
YzIgIHgpOyIpKTsKKyAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzQgbm9pc2U0KHZlYzMgIHgp
OyIpKTsKKyAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzQgbm9pc2U0KHZlYzQgIHgpOyIpKTsK
KworICAgIHMuYXBwZW5kKFRTdHJpbmcoIlxuIikpOworICAgIHJldHVybiBzOwogfQogCi12b2lk
IFRCdWlsdEluczo6aW5pdGlhbGl6ZShjb25zdCBUQnVpbHRJblJlc291cmNlICZyZXNvdXJjZXMp
CisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KKy8vCisvLyBQcm90b3R5cGVzIGZvciBidWlsdC1pbiBm
dW5jdGlvbnMgc2VlbiBieSB2ZXJ0ZXggc2hhZGVycyBvbmx5LgorLy8KKy8vPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQorc3RhdGljIFRTdHJpbmcgQnVpbHRJbkZ1bmN0aW9uc1ZlcnRleCgpCiB7Ci0gICAg
VFN0cmluZ1N0cmVhbSBidWlsdEluczsKKyAgICBUU3RyaW5nIHM7CiAKLSAgICAvLyBJbXBsZW1l
bnRhdGlvbiBkZXBlbmRlbnQgY29uc3RhbnRzCi0gICAgYnVpbHRJbnMgPDwgImNvbnN0IGludCBn
bF9NYXhWZXJ0ZXhBdHRyaWJzID0gIiA8PCByZXNvdXJjZXMubWF4VmVydGV4QXR0cmlicyA8PCAi
OyI7Ci0gICAgYnVpbHRJbnMgPDwgImNvbnN0IGludCBnbF9NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9y
cyA9ICIgPDwgcmVzb3VyY2VzLm1heFZlcnRleFVuaWZvcm1WZWN0b3JzIDw8ICI7IjsKLQotICAg
IGJ1aWx0SW5zIDw8ICJjb25zdCBpbnQgZ2xfTWF4VmFyeWluZ1ZlY3RvcnMgPSAiIDw8IHJlc291
cmNlcy5tYXhWYXJ5aW5nVmVjdG9ycyA8PCAiOyI7Ci0gICAgYnVpbHRJbnMgPDwgImNvbnN0IGlu
dCBnbF9NYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyA9ICIgPDwgcmVzb3VyY2VzLm1heFZlcnRl
eFRleHR1cmVJbWFnZVVuaXRzIDw8ICI7IjsKLSAgICBidWlsdElucyA8PCAiY29uc3QgaW50IGds
X01heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMgPSAiIDw8IHJlc291cmNlcy5tYXhDb21iaW5l
ZFRleHR1cmVJbWFnZVVuaXRzIDw8ICI7IjsKLSAgICBidWlsdElucyA8PCAiY29uc3QgaW50IGds
X01heFRleHR1cmVJbWFnZVVuaXRzID0gIiA8PCByZXNvdXJjZXMubWF4VGV4dHVyZUltYWdlVW5p
dHMgPDwgIjsiOwotICAgIGJ1aWx0SW5zIDw8ICJjb25zdCBpbnQgZ2xfTWF4RnJhZ21lbnRVbmlm
b3JtVmVjdG9ycyA9ICIgPDwgcmVzb3VyY2VzLm1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMgPDwg
IjsiOwotICAgIGJ1aWx0SW5zIDw8ICJjb25zdCBpbnQgZ2xfTWF4RHJhd0J1ZmZlcnMgPSAiIDw8
IHJlc291cmNlcy5tYXhEcmF3QnVmZmVycyA8PCAiOyI7CisgICAgLy8KKyAgICAvLyBHZW9tZXRy
aWMgRnVuY3Rpb25zLgorICAgIC8vCisgICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IGZ0cmFu
c2Zvcm0oKTsiKSk7CisKKyAgICAvLworICAgIC8vIFRleHR1cmUgRnVuY3Rpb25zLgorICAgIC8v
CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRMb2Qoc2FtcGxlcjJEIHNhbXBs
ZXIsIHZlYzIgY29vcmQsIGZsb2F0IGxvZCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzQgdGV4dHVyZTJEUHJvakxvZChzYW1wbGVyMkQgc2FtcGxlciwgdmVjMyBjb29yZCwgZmxvYXQg
bG9kKTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRQcm9qTG9kKHNh
bXBsZXIyRCBzYW1wbGVyLCB2ZWM0IGNvb3JkLCBmbG9hdCBsb2QpOyIpKTsKKyAgICBzLmFwcGVu
ZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmVDdWJlTG9kKHNhbXBsZXJDdWJlIHNhbXBsZXIsIHZlYzMg
Y29vcmQsIGZsb2F0IGxvZCk7IikpOworCisgICAgcy5hcHBlbmQoVFN0cmluZygiXG4iKSk7Cisg
ICAgcmV0dXJuIHM7Cit9CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8KKy8vIFByb3RvdHlw
ZXMgZm9yIGJ1aWx0LWluIGZ1bmN0aW9ucyBzZWVuIGJ5IGZyYWdtZW50IHNoYWRlcnMgb25seS4K
Ky8vCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KK3N0YXRpYyBUU3RyaW5nIEJ1aWx0SW5GdW5jdGlv
bnNGcmFnbWVudCgpCit7CisgICAgVFN0cmluZyBzOworCisgICAgLy8KKyAgICAvLyBUZXh0dXJl
IEZ1bmN0aW9ucy4KKyAgICAvLworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZTJE
KHNhbXBsZXIyRCBzYW1wbGVyLCB2ZWMyIGNvb3JkLCBmbG9hdCBiaWFzKTsiKSk7CisgICAgcy5h
cHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRQcm9qKHNhbXBsZXIyRCBzYW1wbGVyLCB2ZWMz
IGNvb3JkLCBmbG9hdCBiaWFzKTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0
dXJlMkRQcm9qKHNhbXBsZXIyRCBzYW1wbGVyLCB2ZWM0IGNvb3JkLCBmbG9hdCBiaWFzKTsiKSk7
CisgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlQ3ViZShzYW1wbGVyQ3ViZSBzYW1w
bGVyLCB2ZWMzIGNvb3JkLCBmbG9hdCBiaWFzKTsiKSk7CisKKyAgICAvL3MuYXBwZW5kKFRTdHJp
bmcoImZsb2F0IGRGZHgoZmxvYXQgcCk7IikpOworICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVj
MiAgZEZkeCh2ZWMyICBwKTsiKSk7CisgICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBkRmR4
KHZlYzMgIHApOyIpKTsKKyAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGRGZHgodmVjNCAg
cCk7IikpOworCisgICAgLy9zLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBkRmR5KGZsb2F0IHApOyIp
KTsKKyAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGRGZHkodmVjMiAgcCk7IikpOworICAg
IC8vcy5hcHBlbmQoVFN0cmluZygidmVjMyAgZEZkeSh2ZWMzICBwKTsiKSk7CisgICAgLy9zLmFw
cGVuZChUU3RyaW5nKCJ2ZWM0ICBkRmR5KHZlYzQgIHApOyIpKTsKKworICAgIHMuYXBwZW5kKFRT
dHJpbmcoImZsb2F0IGZ3aWR0aChmbG9hdCBwKTsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjMiAgZndpZHRoKHZlYzIgIHApOyIpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBm
d2lkdGgodmVjMyAgcCk7IikpOworICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGZ3aWR0aCh2
ZWM0ICBwKTsiKSk7CiAKLSAgICBidWlsdEluU3RyaW5nc1tFU2hMYW5nRnJhZ21lbnRdLnB1c2hf
YmFjayhidWlsdElucy5zdHIoKSk7Ci0gICAgYnVpbHRJblN0cmluZ3NbRVNoTGFuZ1ZlcnRleF0u
cHVzaF9iYWNrKGJ1aWx0SW5zLnN0cigpKTsKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJcbiIpKTsK
KyAgICByZXR1cm4gczsKIH0KIAotdm9pZCBJZGVudGlmeUJ1aWx0SW5zKEVTaExhbmd1YWdlIGxh
bmd1YWdlLCBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKQorLy89PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
CisvLworLy8gU3RhbmRhcmQgdW5pZm9ybXMuCisvLworLy89PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Citz
dGF0aWMgVFN0cmluZyBTdGFuZGFyZFVuaWZvcm1zKCkKK3sKKyAgICBUU3RyaW5nIHM7CisKKyAg
ICAvLworICAgIC8vIERlcHRoIHJhbmdlIGluIHdpbmRvdyBjb29yZGluYXRlcworICAgIC8vCisg
ICAgcy5hcHBlbmQoVFN0cmluZygic3RydWN0IGdsX0RlcHRoUmFuZ2VQYXJhbWV0ZXJzIHsiKSk7
CisgICAgcy5hcHBlbmQoVFN0cmluZygiICAgIGhpZ2hwIGZsb2F0IG5lYXI7IikpOyAgICAgICAg
Ly8gbgorICAgIHMuYXBwZW5kKFRTdHJpbmcoIiAgICBoaWdocCBmbG9hdCBmYXI7IikpOyAgICAg
ICAgIC8vIGYKKyAgICBzLmFwcGVuZChUU3RyaW5nKCIgICAgaGlnaHAgZmxvYXQgZGlmZjsiKSk7
ICAgICAgICAvLyBmIC0gbgorICAgIHMuYXBwZW5kKFRTdHJpbmcoIn07IikpOworICAgIHMuYXBw
ZW5kKFRTdHJpbmcoInVuaWZvcm0gZ2xfRGVwdGhSYW5nZVBhcmFtZXRlcnMgZ2xfRGVwdGhSYW5n
ZTsiKSk7CisKKyAgICBzLmFwcGVuZChUU3RyaW5nKCJcbiIpKTsKKyAgICByZXR1cm4gczsKK30K
KworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CisvLworLy8gRGVmYXVsdCBwcmVjaXNpb24gZm9yIHZl
cnRleCBzaGFkZXJzLgorLy8KKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorc3RhdGljIFRTdHJpbmcg
RGVmYXVsdFByZWNpc2lvblZlcnRleCgpCit7CisgICAgVFN0cmluZyBzOworCisgICAgcy5hcHBl
bmQoVFN0cmluZygicHJlY2lzaW9uIGhpZ2hwIGludDsiKSk7CisgICAgcy5hcHBlbmQoVFN0cmlu
ZygicHJlY2lzaW9uIGhpZ2hwIGZsb2F0OyIpKTsKKworICAgIHMuYXBwZW5kKFRTdHJpbmcoIlxu
IikpOworICAgIHJldHVybiBzOworfQorCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vCisvLyBE
ZWZhdWx0IHByZWNpc2lvbiBmb3IgZnJhZ21lbnQgc2hhZGVycy4KKy8vCisvLz09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KK3N0YXRpYyBUU3RyaW5nIERlZmF1bHRQcmVjaXNpb25GcmFnbWVudCgpCit7Cisg
ICAgVFN0cmluZyBzOworCisgICAgcy5hcHBlbmQoVFN0cmluZygicHJlY2lzaW9uIG1lZGl1bXAg
aW50OyIpKTsKKyAgICAvLyBObyBkZWZhdWx0IHByZWNpc2lvbiBmb3IgZmxvYXQgaW4gZnJhZ21l
bnQgc2hhZGVycworCisgICAgcy5hcHBlbmQoVFN0cmluZygiXG4iKSk7CisgICAgcmV0dXJuIHM7
Cit9CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8KKy8vIEltcGxlbWVudGF0aW9uIGRlcGVu
ZGVudCBidWlsdC1pbiBjb25zdGFudHMuCisvLworLy89PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitzdGF0
aWMgVFN0cmluZyBCdWlsdEluQ29uc3RhbnRzKGNvbnN0IFRCdWlsdEluUmVzb3VyY2UgJnJlc291
cmNlcykKK3sKKyAgICBUU3RyaW5nU3RyZWFtIHM7CisKKyAgICBzIDw8ICJjb25zdCBpbnQgZ2xf
TWF4VmVydGV4QXR0cmlicyA9ICIgPDwgcmVzb3VyY2VzLm1heFZlcnRleEF0dHJpYnMgPDwgIjsi
OworICAgIHMgPDwgImNvbnN0IGludCBnbF9NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyA9ICIgPDwg
cmVzb3VyY2VzLm1heFZlcnRleFVuaWZvcm1WZWN0b3JzIDw8ICI7IjsKKworICAgIHMgPDwgImNv
bnN0IGludCBnbF9NYXhWYXJ5aW5nVmVjdG9ycyA9ICIgPDwgcmVzb3VyY2VzLm1heFZhcnlpbmdW
ZWN0b3JzIDw8ICI7IjsKKyAgICBzIDw8ICJjb25zdCBpbnQgZ2xfTWF4VmVydGV4VGV4dHVyZUlt
YWdlVW5pdHMgPSAiIDw8IHJlc291cmNlcy5tYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyA8PCAi
OyI7CisgICAgcyA8PCAiY29uc3QgaW50IGdsX01heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMg
PSAiIDw8IHJlc291cmNlcy5tYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzIDw8ICI7IjsKKyAg
ICBzIDw8ICJjb25zdCBpbnQgZ2xfTWF4VGV4dHVyZUltYWdlVW5pdHMgPSAiIDw8IHJlc291cmNl
cy5tYXhUZXh0dXJlSW1hZ2VVbml0cyA8PCAiOyI7CisgICAgcyA8PCAiY29uc3QgaW50IGdsX01h
eEZyYWdtZW50VW5pZm9ybVZlY3RvcnMgPSAiIDw8IHJlc291cmNlcy5tYXhGcmFnbWVudFVuaWZv
cm1WZWN0b3JzIDw8ICI7IjsKKyAgICBzIDw8ICJjb25zdCBpbnQgZ2xfTWF4RHJhd0J1ZmZlcnMg
PSAiIDw8IHJlc291cmNlcy5tYXhEcmF3QnVmZmVycyA8PCAiOyI7CisKKyAgICByZXR1cm4gcy5z
dHIoKTsKK30KKwordm9pZCBUQnVpbHRJbnM6OmluaXRpYWxpemUoRVNoTGFuZ3VhZ2UgbGFuZ3Vh
Z2UsIEVTaFNwZWMgc3BlYywgY29uc3QgVEJ1aWx0SW5SZXNvdXJjZSYgcmVzb3VyY2VzKQorewor
ICAgIHN3aXRjaCAobGFuZ3VhZ2UpIHsKKyAgICBjYXNlIEVTaExhbmdGcmFnbWVudDoKKyAgICAg
ICAgYnVpbHRJblN0cmluZ3MucHVzaF9iYWNrKERlZmF1bHRQcmVjaXNpb25GcmFnbWVudCgpKTsK
KyAgICAgICAgYnVpbHRJblN0cmluZ3MucHVzaF9iYWNrKEJ1aWx0SW5GdW5jdGlvbnNDb21tb24o
KSk7CisgICAgICAgIGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFjayhCdWlsdEluRnVuY3Rpb25zRnJh
Z21lbnQoKSk7CisgICAgICAgIGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFjayhTdGFuZGFyZFVuaWZv
cm1zKCkpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRVNoTGFuZ1ZlcnRleDoKKyAgICAg
ICAgYnVpbHRJblN0cmluZ3MucHVzaF9iYWNrKERlZmF1bHRQcmVjaXNpb25WZXJ0ZXgoKSk7Cisg
ICAgICAgIGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFjayhCdWlsdEluRnVuY3Rpb25zQ29tbW9uKCkp
OworICAgICAgICBidWlsdEluU3RyaW5ncy5wdXNoX2JhY2soQnVpbHRJbkZ1bmN0aW9uc1ZlcnRl
eCgpKTsKKyAgICAgICAgYnVpbHRJblN0cmluZ3MucHVzaF9iYWNrKFN0YW5kYXJkVW5pZm9ybXMo
KSk7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDogYXNzZXJ0KGZhbHNlICYmICJMYW5n
dWFnZSBub3Qgc3VwcG9ydGVkIik7CisgICAgfQorCisgICAgYnVpbHRJblN0cmluZ3MucHVzaF9i
YWNrKEJ1aWx0SW5Db25zdGFudHMocmVzb3VyY2VzKSk7Cit9CisKK3ZvaWQgSWRlbnRpZnlCdWls
dElucyhFU2hMYW5ndWFnZSBsYW5ndWFnZSwgRVNoU3BlYyBzcGVjLCBjb25zdCBUQnVpbHRJblJl
c291cmNlJiByZXNvdXJjZXMsIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUpCiB7CiAgICAgLy8K
ICAgICAvLyBGaXJzdCwgaW5zZXJ0IHNvbWUgc3BlY2lhbCBidWlsdC1pbiB2YXJpYWJsZXMgdGhh
dCBhcmUgbm90IGluIAogICAgIC8vIHRoZSBidWlsdC1pbiBoZWFkZXIgZmlsZXMuCiAgICAgLy8K
ICAgICBzd2l0Y2gobGFuZ3VhZ2UpIHsKLQotICAgIGNhc2UgRVNoTGFuZ0ZyYWdtZW50OiB7Ci0g
ICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoKm5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJp
bmcoImdsX0ZyYWdDb29yZCIpLCAgICAgICAgICAgICAgICAgICBUVHlwZShFYnRGbG9hdCwgRWJw
TWVkaXVtLCBFdnFGcmFnQ29vcmQsICAgNCkpKTsKLSAgICAgICAgICAgIHN5bWJvbFRhYmxlLmlu
c2VydCgqbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfRnJvbnRGYWNpbmciKSwgICAg
ICAgICAgICAgICAgIFRUeXBlKEVidEJvb2wsICBFYnBVbmRlZmluZWQsIEV2cUZyb250RmFjaW5n
LCAxKSkpOwotICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KCpuZXcgVFZhcmlhYmxlKE5l
d1Bvb2xUU3RyaW5nKCJnbF9GcmFnQ29sb3IiKSwgICAgICAgICAgICAgICAgICAgVFR5cGUoRWJ0
RmxvYXQsIEVicE1lZGl1bSwgRXZxRnJhZ0NvbG9yLCAgIDQpKSk7Ci0gICAgICAgICAgICBzeW1i
b2xUYWJsZS5pbnNlcnQoKm5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX0ZyYWdEYXRh
W2dsX01heERyYXdCdWZmZXJzXSIpLCBUVHlwZShFYnRGbG9hdCwgRWJwTWVkaXVtLCBFdnFGcmFn
RGF0YSwgICAgNCkpKTsKLSAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydCgqbmV3IFRWYXJp
YWJsZShOZXdQb29sVFN0cmluZygiZ2xfUG9pbnRDb29yZCIpLCAgICAgICAgICAgICAgICAgIFRU
eXBlKEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2cVBvaW50Q29vcmQsICAyKSkpOwotCi0gICAgICAg
IH0KKyAgICBjYXNlIEVTaExhbmdGcmFnbWVudDoKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0
KCpuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9GcmFnQ29vcmQiKSwgICAgICAgICAg
ICAgICAgICAgVFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxRnJhZ0Nvb3JkLCAgIDQpKSk7
CisgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydCgqbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmlu
ZygiZ2xfRnJvbnRGYWNpbmciKSwgICAgICAgICAgICAgICAgIFRUeXBlKEVidEJvb2wsICBFYnBV
bmRlZmluZWQsIEV2cUZyb250RmFjaW5nLCAxKSkpOworICAgICAgICBzeW1ib2xUYWJsZS5pbnNl
cnQoKm5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX0ZyYWdDb2xvciIpLCAgICAgICAg
ICAgICAgICAgICBUVHlwZShFYnRGbG9hdCwgRWJwTWVkaXVtLCBFdnFGcmFnQ29sb3IsICAgNCkp
KTsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KCpuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3Ry
aW5nKCJnbF9GcmFnRGF0YVtnbF9NYXhEcmF3QnVmZmVyc10iKSwgVFR5cGUoRWJ0RmxvYXQsIEVi
cE1lZGl1bSwgRXZxRnJhZ0RhdGEsICAgIDQpKSk7CisgICAgICAgIHN5bWJvbFRhYmxlLmluc2Vy
dCgqbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfUG9pbnRDb29yZCIpLCAgICAgICAg
ICAgICAgICAgIFRUeXBlKEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2cVBvaW50Q29vcmQsICAyKSkp
OwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgRVNoTGFuZ1ZlcnRleDoKICAgICAgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0KCpuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9Qb3NpdGlv
biIpLCAgICBUVHlwZShFYnRGbG9hdCwgRWJwSGlnaCwgRXZxUG9zaXRpb24sICAgIDQpKSk7CiAg
ICAgICAgIHN5bWJvbFRhYmxlLmluc2VydCgqbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygi
Z2xfUG9pbnRTaXplIiksICAgVFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxUG9pbnRTaXpl
LCAgIDEpKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6IGJyZWFrOworCisgICAgZGVm
YXVsdDogYXNzZXJ0KGZhbHNlICYmICJMYW5ndWFnZSBub3Qgc3VwcG9ydGVkIik7CiAgICAgfQog
CiAgICAgLy8KQEAgLTU3OCwyNyArNTkwLDIwIEBAIHZvaWQgSWRlbnRpZnlCdWlsdElucyhFU2hM
YW5ndWFnZSBsYW5ndWEKICAgICBzeW1ib2xUYWJsZS5yZWxhdGVUb09wZXJhdG9yKCJhbnkiLCAg
ICAgICAgICBFT3BBbnkpOwogICAgIHN5bWJvbFRhYmxlLnJlbGF0ZVRvT3BlcmF0b3IoImFsbCIs
ICAgICAgICAgIEVPcEFsbCk7CiAKLSAgICBzd2l0Y2gobGFuZ3VhZ2UpCi0gICAgewotICAgIGNh
c2UgRVNoTGFuZ1ZlcnRleDoKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFU2hMYW5nRnJhZ21l
bnQ6Ci0gICAgLy8Jc3ltYm9sVGFibGUucmVsYXRlVG9PcGVyYXRvcigiZEZkeCIsICAgICAgICAg
RU9wRFBkeCk7ICAgICAvLyBPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgZXh0ZW5zaW9uCi0gICAg
Ly8Jc3ltYm9sVGFibGUucmVsYXRlVG9PcGVyYXRvcigiZEZkeSIsICAgICAgICAgRU9wRFBkeSk7
ICAgICAvLyBPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgZXh0ZW5zaW9uCi0gICAgLy8Jc3ltYm9s
VGFibGUucmVsYXRlVG9PcGVyYXRvcigiZndpZHRoIiwgICAgICAgRU9wRndpZHRoKTsgICAvLyBP
RVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgZXh0ZW5zaW9uCi0gICAgICAgIGJyZWFrOwotICAgIGRl
ZmF1bHQ6IGFzc2VydChmYWxzZSAmJiAiTGFuZ3VhZ2Ugbm90IHN1cHBvcnRlZCIpOwotICAgIH0K
LX0KKyAgICAvLyBNYXAgbGFuZ3VhZ2Utc3BlY2lmaWMgb3BlcmF0b3JzLgorICAgIHN3aXRjaChs
YW5ndWFnZSkgew0KKyAgICBjYXNlIEVTaExhbmdWZXJ0ZXg6DQorICAgICAgICBicmVhazsNCisg
ICAgY2FzZSBFU2hMYW5nRnJhZ21lbnQ6DQorICAgICAgICAvL3N5bWJvbFRhYmxlLnJlbGF0ZVRv
T3BlcmF0b3IoImRGZHgiLCAgIEVPcERQZHgpOyAgICAvLyBPRVNfc3RhbmRhcmRfZGVyaXZhdGl2
ZXMgZXh0ZW5zaW9uDQorICAgICAgICAvL3N5bWJvbFRhYmxlLnJlbGF0ZVRvT3BlcmF0b3IoImRG
ZHkiLCAgIEVPcERQZHkpOyAgICAvLyBPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgZXh0ZW5zaW9u
DQorICAgICAgICAvL3N5bWJvbFRhYmxlLnJlbGF0ZVRvT3BlcmF0b3IoImZ3aWR0aCIsIEVPcEZ3
aWR0aCk7ICAvLyBPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgZXh0ZW5zaW9uDQorICAgICAgICBi
cmVhazsNCisgICAgZGVmYXVsdDogYnJlYWs7DQorICAgIH0NCiAKLXZvaWQgSWRlbnRpZnlCdWls
dElucyhFU2hMYW5ndWFnZSBsYW5ndWFnZSwgVFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSwgY29u
c3QgVEJ1aWx0SW5SZXNvdXJjZSAmcmVzb3VyY2VzKQotewotICAgIC8vCi0gICAgLy8gRmlyc3Qs
IGluc2VydCBzb21lIHNwZWNpYWwgYnVpbHQtaW4gdmFyaWFibGVzIHRoYXQgYXJlIG5vdCBpbiAK
LSAgICAvLyB0aGUgYnVpbHQtaW4gaGVhZGVyIGZpbGVzLgotICAgIC8vCisgICAgLy8gRmluYWxs
eSBhZGQgcmVzb3VyY2Utc3BlY2lmaWMgdmFyaWFibGVzLgogICAgIHN3aXRjaChsYW5ndWFnZSkg
ewotCiAgICAgY2FzZSBFU2hMYW5nRnJhZ21lbnQ6IHsKICAgICAgICAgICAgIC8vIFNldCB1cCBn
bF9GcmFnRGF0YS4gIFRoZSBhcnJheSBzaXplLgogICAgICAgICAgICAgVFR5cGUgZnJhZ0RhdGEo
RWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxRnJhZ0NvbG9yLCAgIDQsIGZhbHNlLCB0cnVlKTsKQEAg
LTYwNiwxNCArNjExLDcgQEAgdm9pZCBJZGVudGlmeUJ1aWx0SW5zKEVTaExhbmd1YWdlIGxhbmd1
YQogICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KCpuZXcgVFZhcmlhYmxlKE5ld1Bvb2xU
U3RyaW5nKCJnbF9GcmFnRGF0YSIpLCAgICBmcmFnRGF0YSkpOwogICAgICAgICB9CiAgICAgICAg
IGJyZWFrOwotCiAgICAgZGVmYXVsdDogYnJlYWs7CiAgICAgfQogfQogCi1jb25zdCBjaGFyKiBH
ZXRQcmVwcm9jZXNzb3JCdWlsdGluU3RyaW5nKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgY2hhciAq
UHJlcHJvY2Vzc29yQnVpbHRpblN0cmluZyA9ICIiOwotCi0gICAgcmV0dXJuIFByZXByb2Nlc3Nv
ckJ1aWx0aW5TdHJpbmc7Ci19CkluZGV4OiBBTkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEFOR0xFL3NyYy9jb21waWxlci9Jbml0aWFsaXplLmgJKHJldmlzaW9u
IDY0NjU1KQorKysgQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRpYWxpemUuaAkod29ya2luZyBjb3B5
KQpAQCAtMTcsMTkgKzE3LDE4IEBAIHR5cGVkZWYgVFZlY3RvcjxUU3RyaW5nPiBUQnVpbHRJblN0
cmluZ3MKIAogY2xhc3MgVEJ1aWx0SW5zIHsKIHB1YmxpYzoKLQlQT09MX0FMTE9DQVRPUl9ORVdf
REVMRVRFKEdsb2JhbFBvb2xBbGxvY2F0b3IpCi0Jdm9pZCBpbml0aWFsaXplKCk7Ci0Jdm9pZCBp
bml0aWFsaXplKGNvbnN0IFRCdWlsdEluUmVzb3VyY2UmIHJlc291cmNlcyk7Ci0JVEJ1aWx0SW5T
dHJpbmdzKiBnZXRCdWlsdEluU3RyaW5ncygpIHsgcmV0dXJuIGJ1aWx0SW5TdHJpbmdzOyB9Cisg
ICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURShHbG9iYWxQb29sQWxsb2NhdG9yKQorCisgICAg
dm9pZCBpbml0aWFsaXplKEVTaExhbmd1YWdlIGxhbmd1YWdlLCBFU2hTcGVjIHNwZWMsIGNvbnN0
IFRCdWlsdEluUmVzb3VyY2UmIHJlc291cmNlcyk7CisgICAgY29uc3QgVEJ1aWx0SW5TdHJpbmdz
JiBnZXRCdWlsdEluU3RyaW5ncygpIHsgcmV0dXJuIGJ1aWx0SW5TdHJpbmdzOyB9CisKIHByb3Rl
Y3RlZDoKLQlUQnVpbHRJblN0cmluZ3MgYnVpbHRJblN0cmluZ3NbRVNoTGFuZ0NvdW50XTsKKyAg
ICBUQnVpbHRJblN0cmluZ3MgYnVpbHRJblN0cmluZ3M7CiB9OwogCi12b2lkIElkZW50aWZ5QnVp
bHRJbnMoRVNoTGFuZ3VhZ2UsIFRTeW1ib2xUYWJsZSYpOwotdm9pZCBJZGVudGlmeUJ1aWx0SW5z
KEVTaExhbmd1YWdlLCBUU3ltYm9sVGFibGUmLCBjb25zdCBUQnVpbHRJblJlc291cmNlICZyZXNv
dXJjZXMpOwotYm9vbCBHZW5lcmF0ZUJ1aWx0SW5TeW1ib2xUYWJsZShjb25zdCBUQnVpbHRJblJl
c291cmNlKiByZXNvdXJjZXMsIFRJbmZvU2luayYsIFRTeW1ib2xUYWJsZSosIEVTaExhbmd1YWdl
IGxhbmd1YWdlID0gRVNoTGFuZ0NvdW50KTsKLWJvb2wgSW5pdGlhbGl6ZVN5bWJvbFRhYmxlKFRC
dWlsdEluU3RyaW5ncyogQnVpbHRJblN0cmluZ3MsIEVTaExhbmd1YWdlIGxhbmd1YWdlLCBUSW5m
b1NpbmsmIGluZm9TaW5rLCBjb25zdCBUQnVpbHRJblJlc291cmNlICpyZXNvdXJjZXMsIFRTeW1i
b2xUYWJsZSopOwotY29uc3QgY2hhciogR2V0UHJlcHJvY2Vzc29yQnVpbHRpblN0cmluZygpOwor
dm9pZCBJZGVudGlmeUJ1aWx0SW5zKEVTaExhbmd1YWdlIGxhbmd1YWdlLCBFU2hTcGVjIHNwZWMs
IGNvbnN0IFRCdWlsdEluUmVzb3VyY2UmIHJlc291cmNlcywKKyAgICAgICAgICAgICAgICAgICAg
ICBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKTsKKwogZXh0ZXJuICJDIiBpbnQgSW5pdFByZXBy
b2Nlc3Nvcih2b2lkKTsKIGV4dGVybiAiQyIgaW50IEZpbmFsaXplUHJlcHJvY2Vzc29yKHZvaWQp
OwogCkluZGV4OiBBTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0wuY3BwCShyZXZpc2lvbiA2NDY1NSkKKysr
IEFOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzkx
LDEzICszOTEsMTcgQEAgYm9vbCBUT3V0cHV0R0xTTDo6dmlzaXRTZWxlY3Rpb24oVmlzaXQgdgog
CiAgICAgaWYgKG5vZGUtPnVzZXNUZXJuYXJ5T3BlcmF0b3IoKSkKICAgICB7Ci0gICAgICAgIG91
dCA8PCAiKCI7CisgICAgICAgIC8vIE5vdGljZSB0d28gYnJhY2tldHMgYXQgdGhlIGJlZ2lubmlu
ZyBhbmQgZW5kLiBUaGUgb3V0ZXIgb25lcworICAgICAgICAvLyBlbmNhcHN1bGF0ZSB0aGUgd2hv
bGUgdGVybmFyeSBleHByZXNzaW9uLiBUaGlzIHByZXNlcnZlcyB0aGUKKyAgICAgICAgLy8gb3Jk
ZXIgb2YgcHJlY2VkZW5jZSB3aGVuIHRlcm5hcnkgZXhwcmVzc2lvbnMgYXJlIHVzZWQgaW4gYQor
ICAgICAgICAvLyBjb21wb3VuZCBleHByZXNzaW9uLCBpLmUuLCBjID0gMiAqIChhIDwgYiA/IDEg
OiAyKS4KKyAgICAgICAgb3V0IDw8ICIoKCI7CiAgICAgICAgIG5vZGUtPmdldENvbmRpdGlvbigp
LT50cmF2ZXJzZSh0aGlzKTsKICAgICAgICAgb3V0IDw8ICIpID8gKCI7CiAgICAgICAgIG5vZGUt
PmdldFRydWVCbG9jaygpLT50cmF2ZXJzZSh0aGlzKTsKICAgICAgICAgb3V0IDw8ICIpIDogKCI7
CiAgICAgICAgIG5vZGUtPmdldEZhbHNlQmxvY2soKS0+dHJhdmVyc2UodGhpcyk7Ci0gICAgICAg
IG91dCA8PCAiKSI7CisgICAgICAgIG91dCA8PCAiKSkiOwogICAgIH0KICAgICBlbHNlCiAgICAg
ewpJbmRleDogQU5HTEUvc3JjL2NvbXBpbGVyL1NoSGFuZGxlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gQU5H
TEUvc3JjL2NvbXBpbGVyL1NoSGFuZGxlLmgJKHJldmlzaW9uIDY0NjU1KQorKysgQU5HTEUvc3Jj
L2NvbXBpbGVyL1NoSGFuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3LDYgKzE3LDcgQEAKICNp
bmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKIAogI2luY2x1ZGUgImNvbXBpbGVyL0luZm9T
aW5rLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvU3ltYm9sVGFibGUuaCIKIAogY2xhc3MgVENvbXBp
bGVyOwogY2xhc3MgVEludGVybU5vZGU7CkBAIC00MCwxOCArNDEsMjQgQEAgcHVibGljOgogICAg
IFRDb21waWxlcihFU2hMYW5ndWFnZSBsLCBFU2hTcGVjIHMpIDogbGFuZ3VhZ2UobCksIHNwZWMo
cykgeyB9CiAgICAgdmlydHVhbCB+VENvbXBpbGVyKCkgeyB9CiAKLSAgICBFU2hMYW5ndWFnZSBn
ZXRMYW5ndWFnZSgpIHsgcmV0dXJuIGxhbmd1YWdlOyB9Ci0gICAgRVNoU3BlYyBnZXRTcGVjKCkg
eyByZXR1cm4gc3BlYzsgfQotICAgIHZpcnR1YWwgVEluZm9TaW5rJiBnZXRJbmZvU2luaygpIHsg
cmV0dXJuIGluZm9TaW5rOyB9CisgICAgRVNoTGFuZ3VhZ2UgZ2V0TGFuZ3VhZ2UoKSBjb25zdCB7
IHJldHVybiBsYW5ndWFnZTsgfQorICAgIEVTaFNwZWMgZ2V0U3BlYygpIGNvbnN0IHsgcmV0dXJu
IHNwZWM7IH0KKyAgICBUU3ltYm9sVGFibGUmIGdldFN5bWJvbFRhYmxlKCkgeyByZXR1cm4gc3lt
Ym9sVGFibGU7IH0KKyAgICBUSW5mb1NpbmsmIGdldEluZm9TaW5rKCkgeyByZXR1cm4gaW5mb1Np
bms7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBjb21waWxlKFRJbnRlcm1Ob2RlKiByb290KSA9IDA7
CiAKICAgICB2aXJ0dWFsIFRDb21waWxlciogZ2V0QXNDb21waWxlcigpIHsgcmV0dXJuIHRoaXM7
IH0KIAotICAgIFRJbmZvU2luayBpbmZvU2luazsKIHByb3RlY3RlZDoKICAgICBFU2hMYW5ndWFn
ZSBsYW5ndWFnZTsKICAgICBFU2hTcGVjIHNwZWM7CisKKyAgICAvLyBCdWlsdC1pbiBzeW1ib2wg
dGFibGUgZm9yIHRoZSBnaXZlbiBsYW5ndWFnZSwgc3BlYywgYW5kIHJlc291cmNlcy4KKyAgICAv
LyBJdCBpcyBwcmVzZXJ2ZWQgZnJvbSBjb21waWxlLXRvLWNvbXBpbGUuCisgICAgVFN5bWJvbFRh
YmxlIHN5bWJvbFRhYmxlOworICAgIC8vIE91dHB1dCBzaW5rLgorICAgIFRJbmZvU2luayBpbmZv
U2luazsKIH07CiAKIC8vCkluZGV4OiBBTkdMRS9zcmMvY29tcGlsZXIvU2hhZGVyTGFuZy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gQU5HTEUvc3JjL2NvbXBpbGVyL1NoYWRlckxhbmcuY3BwCShyZXZpc2lv
biA2NDY1NSkKKysrIEFOR0xFL3NyYy9jb21waWxlci9TaGFkZXJMYW5nLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTcsMTUgKzE3LDY4IEBACiAjaW5jbHVkZSAiY29tcGlsZXIvU2hIYW5kbGUuaCIK
ICNpbmNsdWRlICJjb21waWxlci9TeW1ib2xUYWJsZS5oIgogCi0vLwotLy8gQSBzeW1ib2wgdGFi
bGUgZm9yIGVhY2ggbGFuZ3VhZ2UuICBFYWNoIGhhcyBhIGRpZmZlcmVudAotLy8gc2V0IG9mIGJ1
aWx0LWlucywgYW5kIHdlIHdhbnQgdG8gcHJlc2VydmUgdGhhdCBmcm9tCi0vLyBjb21waWxlIHRv
IGNvbXBpbGUuCi0vLwotVFN5bWJvbFRhYmxlKiBTeW1ib2xUYWJsZXNbRVNoTGFuZ0NvdW50XTsK
K3N0YXRpYyBib29sIEluaXRpYWxpemVTeW1ib2xUYWJsZSgKKyAgICAgICAgY29uc3QgVEJ1aWx0
SW5TdHJpbmdzJiBidWlsdEluU3RyaW5ncywKKyAgICAgICAgRVNoTGFuZ3VhZ2UgbGFuZ3VhZ2Us
IEVTaFNwZWMgc3BlYywgY29uc3QgVEJ1aWx0SW5SZXNvdXJjZSYgcmVzb3VyY2VzLAorICAgICAg
ICBUSW5mb1NpbmsmIGluZm9TaW5rLCBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKQoreworICAg
IFRJbnRlcm1lZGlhdGUgaW50ZXJtZWRpYXRlKGluZm9TaW5rKTsKKyAgICBUUGFyc2VDb250ZXh0
IHBhcnNlQ29udGV4dChzeW1ib2xUYWJsZSwgaW50ZXJtZWRpYXRlLCBsYW5ndWFnZSwgc3BlYywg
aW5mb1NpbmspOworCisgICAgR2xvYmFsUGFyc2VDb250ZXh0ID0gJnBhcnNlQ29udGV4dDsKKwor
ICAgIHNldEluaXRpYWxTdGF0ZSgpOworCisgICAgYXNzZXJ0KHN5bWJvbFRhYmxlLmlzRW1wdHko
KSk7ICAgICAgIAorICAgIC8vCisgICAgLy8gUGFyc2UgdGhlIGJ1aWx0LWlucy4gIFRoaXMgc2hv
dWxkIG9ubHkgaGFwcGVuIG9uY2UgcGVyCisgICAgLy8gbGFuZ3VhZ2Ugc3ltYm9sIHRhYmxlLgor
ICAgIC8vCisgICAgLy8gUHVzaCB0aGUgc3ltYm9sIHRhYmxlIHRvIGdpdmUgaXQgYW4gaW5pdGlh
bCBzY29wZS4gIFRoaXMKKyAgICAvLyBwdXNoIHNob3VsZCBub3QgaGF2ZSBhIGNvcnJlc3BvbmRp
bmcgcG9wLCBzbyB0aGF0IGJ1aWx0LWlucworICAgIC8vIGFyZSBwcmVzZXJ2ZWQsIGFuZCB0aGUg
dGVzdCBmb3IgYW4gZW1wdHkgdGFibGUgZmFpbHMuCisgICAgLy8KKyAgICBzeW1ib2xUYWJsZS5w
dXNoKCk7CisgICAgCisgICAgLy9Jbml0aWFsaXplIHRoZSBQcmVwcm9jZXNzb3IKKyAgICBpZiAo
SW5pdFByZXByb2Nlc3NvcigpKQorICAgIHsKKyAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdl
KEVQcmVmaXhJbnRlcm5hbEVycm9yLCAgIlVuYWJsZSB0byBpbnRpYWxpemUgdGhlIFByZXByb2Nl
c3NvciIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCisgICAgZm9yIChUQnVpbHRJ
blN0cmluZ3M6OmNvbnN0X2l0ZXJhdG9yIGkgPSBidWlsdEluU3RyaW5ncy5iZWdpbigpOyBpICE9
IGJ1aWx0SW5TdHJpbmdzLmVuZCgpOyArK2kpCisgICAgeworICAgICAgICBjb25zdCBjaGFyKiBi
dWlsdEluU2hhZGVyc1sxXTsKKyAgICAgICAgaW50IGJ1aWx0SW5MZW5ndGhzWzFdOworCisgICAg
ICAgIGJ1aWx0SW5TaGFkZXJzWzBdID0gKCppKS5jX3N0cigpOworICAgICAgICBidWlsdEluTGVu
Z3Roc1swXSA9IChpbnQpICgqaSkuc2l6ZSgpOworCisgICAgICAgIGlmIChQYVBhcnNlU3RyaW5n
cyhjb25zdF9jYXN0PGNoYXIqKj4oYnVpbHRJblNoYWRlcnMpLCBidWlsdEluTGVuZ3RocywgMSwg
cGFyc2VDb250ZXh0KSAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgICBpbmZvU2luay5pbmZv
Lm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJVbmFibGUgdG8gcGFyc2UgYnVpbHQtaW5z
Iik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBJ
ZGVudGlmeUJ1aWx0SW5zKGxhbmd1YWdlLCBzcGVjLCByZXNvdXJjZXMsIHN5bWJvbFRhYmxlKTsK
KworICAgIEZpbmFsaXplUHJlcHJvY2Vzc29yKCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
c3RhdGljIGJvb2wgR2VuZXJhdGVCdWlsdEluU3ltYm9sVGFibGUoCisgICAgICAgIEVTaExhbmd1
YWdlIGxhbmd1YWdlLCBFU2hTcGVjIHNwZWMsIGNvbnN0IFRCdWlsdEluUmVzb3VyY2UmIHJlc291
cmNlcywKKyAgICAgICAgVEluZm9TaW5rJiBpbmZvU2luaywgVFN5bWJvbFRhYmxlJiBzeW1ib2xU
YWJsZSkKK3sKKyAgICBUQnVpbHRJbnMgYnVpbHRJbnM7CisKKyAgICBidWlsdElucy5pbml0aWFs
aXplKGxhbmd1YWdlLCBzcGVjLCByZXNvdXJjZXMpOworICAgIHJldHVybiBJbml0aWFsaXplU3lt
Ym9sVGFibGUoYnVpbHRJbnMuZ2V0QnVpbHRJblN0cmluZ3MoKSwgbGFuZ3VhZ2UsIHNwZWMsIHJl
c291cmNlcywgaW5mb1NpbmssIHN5bWJvbFRhYmxlKTsKK30KIAotVFBvb2xBbGxvY2F0b3IqIFBl
clByb2Nlc3NHUEEgPSAwOwogLy8KIC8vIFRoaXMgaXMgdGhlIHBsYXRmb3JtIGluZGVwZW5kZW50
IGludGVyZmFjZSBiZXR3ZWVuIGFuIE9HTCBkcml2ZXIKIC8vIGFuZCB0aGUgc2hhZGluZyBsYW5n
dWFnZSBjb21waWxlci4KQEAgLTM3LDQyICs5MCw3IEBAIFRQb29sQWxsb2NhdG9yKiBQZXJQcm9j
ZXNzR1BBID0gMDsKIC8vCiBpbnQgU2hJbml0aWFsaXplKCkKIHsKLSAgICBUSW5mb1NpbmsgaW5m
b1Npbms7Ci0gICAgYm9vbCByZXQgPSB0cnVlOwotCi0gICAgaWYgKCFJbml0UHJvY2VzcygpKQot
ICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQg
b25jZSBwZXIgcHJvY2Vzcy4gSWYgaXRzIGNhbGxlZCBieSBtdWx0aXBsZSB0aHJlYWRzLCB0aGVu
IAotICAgIC8vIHdlIG5lZWQgdG8gaGF2ZSB0aHJlYWQgc3luY2hyb25pemF0aW9uIGNvZGUgYXJv
dW5kIHRoZSBpbml0aWFsaXphdGlvbiBvZiBwZXIgcHJvY2VzcwotICAgIC8vIGdsb2JhbCBwb29s
IGFsbG9jYXRvcgotICAgIGlmICghUGVyUHJvY2Vzc0dQQSkgeyAKLSAgICAgICAgVFBvb2xBbGxv
Y2F0b3IgKmJ1aWx0SW5Qb29sQWxsb2NhdG9yID0gbmV3IFRQb29sQWxsb2NhdG9yKHRydWUpOwot
ICAgICAgICBidWlsdEluUG9vbEFsbG9jYXRvci0+cHVzaCgpOwotICAgICAgICBUUG9vbEFsbG9j
YXRvciogZ1Bvb2xBbGxvY2F0b3IgPSAmR2xvYmFsUG9vbEFsbG9jYXRvcjsKLSAgICAgICAgU2V0
R2xvYmFsUG9vbEFsbG9jYXRvclB0cihidWlsdEluUG9vbEFsbG9jYXRvcik7Ci0KLSAgICAgICAg
VFN5bWJvbFRhYmxlIHN5bVRhYmxlc1tFU2hMYW5nQ291bnRdOwotICAgICAgICBHZW5lcmF0ZUJ1
aWx0SW5TeW1ib2xUYWJsZSgwLCBpbmZvU2luaywgc3ltVGFibGVzKTsKLQotICAgICAgICBQZXJQ
cm9jZXNzR1BBID0gbmV3IFRQb29sQWxsb2NhdG9yKHRydWUpOwotICAgICAgICBQZXJQcm9jZXNz
R1BBLT5wdXNoKCk7Ci0gICAgICAgIFNldEdsb2JhbFBvb2xBbGxvY2F0b3JQdHIoUGVyUHJvY2Vz
c0dQQSk7Ci0KLSAgICAgICAgU3ltYm9sVGFibGVzW0VTaExhbmdWZXJ0ZXhdID0gbmV3IFRTeW1i
b2xUYWJsZTsKLSAgICAgICAgU3ltYm9sVGFibGVzW0VTaExhbmdWZXJ0ZXhdLT5jb3B5VGFibGUo
c3ltVGFibGVzW0VTaExhbmdWZXJ0ZXhdKTsKLSAgICAgICAgU3ltYm9sVGFibGVzW0VTaExhbmdG
cmFnbWVudF0gPSBuZXcgVFN5bWJvbFRhYmxlOwotICAgICAgICBTeW1ib2xUYWJsZXNbRVNoTGFu
Z0ZyYWdtZW50XS0+Y29weVRhYmxlKHN5bVRhYmxlc1tFU2hMYW5nRnJhZ21lbnRdKTsKLQotICAg
ICAgICBTZXRHbG9iYWxQb29sQWxsb2NhdG9yUHRyKGdQb29sQWxsb2NhdG9yKTsKLQotICAgICAg
ICBzeW1UYWJsZXNbRVNoTGFuZ1ZlcnRleF0ucG9wKCk7Ci0gICAgICAgIHN5bVRhYmxlc1tFU2hM
YW5nRnJhZ21lbnRdLnBvcCgpOwotCi0gICAgICAgIGJ1aWx0SW5Qb29sQWxsb2NhdG9yLT5wb3BB
bGwoKTsKLSAgICAgICAgZGVsZXRlIGJ1aWx0SW5Qb29sQWxsb2NhdG9yOyAgICAgICAgCi0KLSAg
ICB9CisgICAgYm9vbCByZXQgPSBJbml0UHJvY2VzcygpOwogCiAgICAgcmV0dXJuIHJldCA/IDEg
OiAwOwogfQpAQCAtODEsMTMgKzk5LDIyIEBAIGludCBTaEluaXRpYWxpemUoKQogLy8gRHJpdmVy
IGNhbGxzIHRoZXNlIHRvIGNyZWF0ZSBhbmQgZGVzdHJveSBjb21waWxlciBvYmplY3RzLgogLy8K
IAotU2hIYW5kbGUgU2hDb25zdHJ1Y3RDb21waWxlcihFU2hMYW5ndWFnZSBsYW5ndWFnZSwgRVNo
U3BlYyBzcGVjKQorU2hIYW5kbGUgU2hDb25zdHJ1Y3RDb21waWxlcihFU2hMYW5ndWFnZSBsYW5n
dWFnZSwgRVNoU3BlYyBzcGVjLCBjb25zdCBUQnVpbHRJblJlc291cmNlKiByZXNvdXJjZXMpCiB7
CiAgICAgaWYgKCFJbml0VGhyZWFkKCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgVFNoSGFu
ZGxlQmFzZSogYmFzZSA9IHN0YXRpY19jYXN0PFRTaEhhbmRsZUJhc2UqPihDb25zdHJ1Y3RDb21w
aWxlcihsYW5ndWFnZSwgc3BlYykpOwotICAgIAorICAgIFRDb21waWxlciogY29tcGlsZXIgPSBi
YXNlLT5nZXRBc0NvbXBpbGVyKCk7CisgICAgaWYgKGNvbXBpbGVyID09IDApCisgICAgICAgIHJl
dHVybiAwOworCisgICAgLy8gR2VuZXJhdGUgYnVpbHQtaW4gc3ltYm9sIHRhYmxlLgorICAgIGlm
ICghR2VuZXJhdGVCdWlsdEluU3ltYm9sVGFibGUobGFuZ3VhZ2UsIHNwZWMsICpyZXNvdXJjZXMs
IGNvbXBpbGVyLT5nZXRJbmZvU2luaygpLCBjb21waWxlci0+Z2V0U3ltYm9sVGFibGUoKSkpIHsK
KyAgICAgICAgU2hEZXN0cnVjdChiYXNlKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGJhc2UpOwogfQogCkBAIC0xMDYsOTcg
KzEzMyw4IEBAIHZvaWQgU2hEZXN0cnVjdChTaEhhbmRsZSBoYW5kbGUpCiAvLyBDbGVhbnVwIHN5
bWJvbCB0YWJsZXMKIC8vCiBpbnQgU2hGaW5hbGl6ZSgpCi17ICAKLSAgaWYgKFBlclByb2Nlc3NH
UEEpIHsKLSAgICBQZXJQcm9jZXNzR1BBLT5wb3BBbGwoKTsKLSAgICBkZWxldGUgUGVyUHJvY2Vz
c0dQQTsKLSAgICBQZXJQcm9jZXNzR1BBID0gMDsKLSAgfQotICBmb3IgKGludCBpID0gMDsgaSA8
IEVTaExhbmdDb3VudDsgKytpKSB7Ci0gICAgZGVsZXRlIFN5bWJvbFRhYmxlc1tpXTsKLSAgICBT
eW1ib2xUYWJsZXNbaV0gPSAwOwotICB9Ci0gIHJldHVybiAxOwotfQotCi1ib29sIEdlbmVyYXRl
QnVpbHRJblN5bWJvbFRhYmxlKGNvbnN0IFRCdWlsdEluUmVzb3VyY2UqIHJlc291cmNlcywgVElu
Zm9TaW5rJiBpbmZvU2luaywgVFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZXMsIEVTaExhbmd1YWdl
IGxhbmd1YWdlKQotewotICAgIFRCdWlsdElucyBidWlsdEluczsKLSAgICAKLQlpZiAocmVzb3Vy
Y2VzKSB7Ci0JCWJ1aWx0SW5zLmluaXRpYWxpemUoKnJlc291cmNlcyk7Ci0JCUluaXRpYWxpemVT
eW1ib2xUYWJsZShidWlsdElucy5nZXRCdWlsdEluU3RyaW5ncygpLCBsYW5ndWFnZSwgaW5mb1Np
bmssIHJlc291cmNlcywgc3ltYm9sVGFibGVzKTsKLQl9IGVsc2UgewotCQlidWlsdElucy5pbml0
aWFsaXplKCk7Ci0JCUluaXRpYWxpemVTeW1ib2xUYWJsZShidWlsdElucy5nZXRCdWlsdEluU3Ry
aW5ncygpLCBFU2hMYW5nVmVydGV4LCBpbmZvU2luaywgcmVzb3VyY2VzLCBzeW1ib2xUYWJsZXMp
OwotCQlJbml0aWFsaXplU3ltYm9sVGFibGUoYnVpbHRJbnMuZ2V0QnVpbHRJblN0cmluZ3MoKSwg
RVNoTGFuZ0ZyYWdtZW50LCBpbmZvU2luaywgcmVzb3VyY2VzLCBzeW1ib2xUYWJsZXMpOwotCX0K
LQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEluaXRpYWxpemVTeW1ib2xUYWJsZShUQnVp
bHRJblN0cmluZ3MqIEJ1aWx0SW5TdHJpbmdzLCBFU2hMYW5ndWFnZSBsYW5ndWFnZSwgVEluZm9T
aW5rJiBpbmZvU2luaywgY29uc3QgVEJ1aWx0SW5SZXNvdXJjZSogcmVzb3VyY2VzLCBUU3ltYm9s
VGFibGUqIHN5bWJvbFRhYmxlcykKIHsKLSAgICBUSW50ZXJtZWRpYXRlIGludGVybWVkaWF0ZShp
bmZvU2luayk7CQotICAgIFRTeW1ib2xUYWJsZSogc3ltYm9sVGFibGU7Ci0JCi0JaWYgKHJlc291
cmNlcykKLQkJc3ltYm9sVGFibGUgPSBzeW1ib2xUYWJsZXM7Ci0JZWxzZQotCQlzeW1ib2xUYWJs
ZSA9ICZzeW1ib2xUYWJsZXNbbGFuZ3VhZ2VdOwotCi0gICAgLy8gVE9ETyhhbG9rcCk6IEludmVz
dGlnYXRlIGlmIGEgcGFyc2UtY29udGV4dCBpcyBuZWNlc3NhcnkgaGVyZSBhbmQKLSAgICAvLyBp
ZiBzeW1ib2wtdGFibGUgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIEdMRVMyIGFuZCBXZWJHTCBzcGVj
cy4KLSAgICBUUGFyc2VDb250ZXh0IHBhcnNlQ29udGV4dCgqc3ltYm9sVGFibGUsIGludGVybWVk
aWF0ZSwgbGFuZ3VhZ2UsIEVTaFNwZWNHTEVTMiwgaW5mb1NpbmspOwotCi0gICAgR2xvYmFsUGFy
c2VDb250ZXh0ID0gJnBhcnNlQ29udGV4dDsKLSAgICAKLSAgICBzZXRJbml0aWFsU3RhdGUoKTsK
LQotICAgIGFzc2VydChzeW1ib2xUYWJsZS0+aXNFbXB0eSgpIHx8IHN5bWJvbFRhYmxlLT5hdFNo
YXJlZEJ1aWx0SW5MZXZlbCgpKTsKLSAgICAgICAKLSAgICAvLwotICAgIC8vIFBhcnNlIHRoZSBi
dWlsdC1pbnMuICBUaGlzIHNob3VsZCBvbmx5IGhhcHBlbiBvbmNlIHBlcgotICAgIC8vIGxhbmd1
YWdlIHN5bWJvbCB0YWJsZS4KLSAgICAvLwotICAgIC8vIFB1c2ggdGhlIHN5bWJvbCB0YWJsZSB0
byBnaXZlIGl0IGFuIGluaXRpYWwgc2NvcGUuICBUaGlzCi0gICAgLy8gcHVzaCBzaG91bGQgbm90
IGhhdmUgYSBjb3JyZXNwb25kaW5nIHBvcCwgc28gdGhhdCBidWlsdC1pbnMKLSAgICAvLyBhcmUg
cHJlc2VydmVkLCBhbmQgdGhlIHRlc3QgZm9yIGFuIGVtcHR5IHRhYmxlIGZhaWxzLgotICAgIC8v
Ci0KLSAgICBzeW1ib2xUYWJsZS0+cHVzaCgpOwotICAgIAotICAgIC8vSW5pdGlhbGl6ZSB0aGUg
UHJlcHJvY2Vzc29yCi0gICAgaW50IHJldCA9IEluaXRQcmVwcm9jZXNzb3IoKTsKLSAgICBpZiAo
cmV0KSB7Ci0gICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJv
ciwgICJVbmFibGUgdG8gaW50aWFsaXplIHRoZSBQcmVwcm9jZXNzb3IiKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBmb3IgKFRCdWlsdEluU3RyaW5nczo6aXRlcmF0
b3IgaSAgPSBCdWlsdEluU3RyaW5nc1twYXJzZUNvbnRleHQubGFuZ3VhZ2VdLmJlZ2luKCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICE9IEJ1aWx0SW5TdHJpbmdzW3Bh
cnNlQ29udGV4dC5sYW5ndWFnZV0uZW5kKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICArK2kpIHsKLSAgICAgICAgY29uc3QgY2hhciogYnVpbHRJblNoYWRlcnNbMV07Ci0g
ICAgICAgIGludCBidWlsdEluTGVuZ3Roc1sxXTsKLQotICAgICAgICBidWlsdEluU2hhZGVyc1sw
XSA9ICgqaSkuY19zdHIoKTsKLSAgICAgICAgYnVpbHRJbkxlbmd0aHNbMF0gPSAoaW50KSAoKmkp
LnNpemUoKTsKLQotICAgICAgICBpZiAoUGFQYXJzZVN0cmluZ3MoY29uc3RfY2FzdDxjaGFyKio+
KGJ1aWx0SW5TaGFkZXJzKSwgYnVpbHRJbkxlbmd0aHMsIDEsIHBhcnNlQ29udGV4dCkgIT0gMCkg
ewotICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9y
LCAiVW5hYmxlIHRvIHBhcnNlIGJ1aWx0LWlucyIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICB9Ci0gICAgfQotCi0JaWYgKHJlc291cmNlcykgewotCQlJZGVudGlmeUJ1aWx0
SW5zKHBhcnNlQ29udGV4dC5sYW5ndWFnZSwgKnN5bWJvbFRhYmxlLCAqcmVzb3VyY2VzKTsKLQl9
IGVsc2UgewkJCQkJCQkJCSAgIAotCQlJZGVudGlmeUJ1aWx0SW5zKHBhcnNlQ29udGV4dC5sYW5n
dWFnZSwgKnN5bWJvbFRhYmxlKTsKLQl9Ci0KLSAgICBGaW5hbGl6ZVByZXByb2Nlc3NvcigpOwot
Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIDE7CiB9CiAKIC8vCkBAIC0yMTEsNyArMTQ5
LDYgQEAgaW50IFNoQ29tcGlsZSgKICAgICBjb25zdCBjaGFyKiBjb25zdCBzaGFkZXJTdHJpbmdz
W10sCiAgICAgY29uc3QgaW50IG51bVN0cmluZ3MsCiAgICAgY29uc3QgRVNoT3B0aW1pemF0aW9u
TGV2ZWwgb3B0TGV2ZWwsCi0gICAgY29uc3QgVEJ1aWx0SW5SZXNvdXJjZSogcmVzb3VyY2VzLAog
ICAgIGludCBkZWJ1Z09wdGlvbnMKICAgICApCiB7CkBAIC0yMjcsNyArMTY0LDcgQEAgaW50IFNo
Q29tcGlsZSgKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCiAgICAgR2xvYmFsUG9vbEFsbG9jYXRv
ci5wdXNoKCk7Ci0gICAgVEluZm9TaW5rJiBpbmZvU2luayA9IGNvbXBpbGVyLT5pbmZvU2luazsK
KyAgICBUSW5mb1NpbmsmIGluZm9TaW5rID0gY29tcGlsZXItPmdldEluZm9TaW5rKCk7CiAgICAg
aW5mb1NpbmsuaW5mby5lcmFzZSgpOwogICAgIGluZm9TaW5rLmRlYnVnLmVyYXNlKCk7CiAgICAg
aW5mb1Npbmsub2JqLmVyYXNlKCk7CkBAIC0yMzYsMjUgKzE3MywyMiBAQCBpbnQgU2hDb21waWxl
KAogICAgICAgICByZXR1cm4gMTsKIAogICAgIFRJbnRlcm1lZGlhdGUgaW50ZXJtZWRpYXRlKGlu
Zm9TaW5rKTsKLSAgICBUU3ltYm9sVGFibGUgc3ltYm9sVGFibGUoKlN5bWJvbFRhYmxlc1tjb21w
aWxlci0+Z2V0TGFuZ3VhZ2UoKV0pOwotICAgIAotICAgIEdlbmVyYXRlQnVpbHRJblN5bWJvbFRh
YmxlKHJlc291cmNlcywgaW5mb1NpbmssICZzeW1ib2xUYWJsZSwgY29tcGlsZXItPmdldExhbmd1
YWdlKCkpOworICAgIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSBjb21waWxlci0+Z2V0U3lt
Ym9sVGFibGUoKTsKIAogICAgIFRQYXJzZUNvbnRleHQgcGFyc2VDb250ZXh0KHN5bWJvbFRhYmxl
LCBpbnRlcm1lZGlhdGUsIGNvbXBpbGVyLT5nZXRMYW5ndWFnZSgpLCBjb21waWxlci0+Z2V0U3Bl
YygpLCBpbmZvU2luayk7CiAgICAgcGFyc2VDb250ZXh0LmluaXRpYWxpemVFeHRlbnNpb25CZWhh
dmlvcigpOwotCiAgICAgR2xvYmFsUGFyc2VDb250ZXh0ID0gJnBhcnNlQ29udGV4dDsKLSAgICAK
KyAKICAgICBzZXRJbml0aWFsU3RhdGUoKTsKIAotICAgIEluaXRQcmVwcm9jZXNzb3IoKTsgICAg
CisgICAgSW5pdFByZXByb2Nlc3NvcigpOwogICAgIC8vCiAgICAgLy8gUGFyc2UgdGhlIGFwcGxp
Y2F0aW9uJ3Mgc2hhZGVycy4gIEFsbCB0aGUgZm9sbG93aW5nIHN5bWJvbCB0YWJsZQogICAgIC8v
IHdvcmsgd2lsbCBiZSB0aHJvdy1hd2F5LCBzbyBwdXNoIGEgbmV3IGFsbG9jYXRpb24gc2NvcGUg
dGhhdCBjYW4KICAgICAvLyBiZSB0aHJvd24gYXdheSwgdGhlbiBwdXNoIGEgc2NvcGUgZm9yIHRo
ZSBjdXJyZW50IHNoYWRlcidzIGdsb2JhbHMuCiAgICAgLy8KICAgICBib29sIHN1Y2Nlc3MgPSB0
cnVlOwotICAgIAorCiAgICAgc3ltYm9sVGFibGUucHVzaCgpOwogICAgIGlmICghc3ltYm9sVGFi
bGUuYXRHbG9iYWxMZXZlbCgpKQogICAgICAgICBwYXJzZUNvbnRleHQuaW5mb1NpbmsuaW5mby5t
ZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiV3Jvbmcgc3ltYm9sIHRhYmxlIGxldmVsIik7
CkBAIC0zMDEsNyArMjM1LDcgQEAgaW50IFNoQ29tcGlsZSgKICAgICAvLyBFbnN1cmUgc3ltYm9s
IHRhYmxlIGlzIHJldHVybmVkIHRvIHRoZSBidWlsdC1pbiBsZXZlbCwKICAgICAvLyB0aHJvd2lu
ZyBhd2F5IGFsbCBidXQgdGhlIGJ1aWx0LWlucy4KICAgICAvLwotICAgIHdoaWxlICghIHN5bWJv
bFRhYmxlLmF0U2hhcmVkQnVpbHRJbkxldmVsKCkpCisgICAgd2hpbGUgKCFzeW1ib2xUYWJsZS5h
dEJ1aWx0SW5MZXZlbCgpKQogICAgICAgICBzeW1ib2xUYWJsZS5wb3AoKTsKIAogICAgIEZpbmFs
aXplUHJlcHJvY2Vzc29yKCk7CkluZGV4OiBBTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBBTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuaAkocmV2aXNp
b24gNjQ2NTUpCisrKyBBTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMzEsOSArMzEsOSBAQAogLy8KIAogI2luY2x1ZGUgPGFzc2VydC5oPgotI2luY2x1
ZGUgImNvbXBpbGVyL0NvbW1vbi5oIgotI2luY2x1ZGUgImNvbXBpbGVyL2ludGVybWVkaWF0ZS5o
IgorCiAjaW5jbHVkZSAiY29tcGlsZXIvSW5mb1NpbmsuaCIKKyNpbmNsdWRlICJjb21waWxlci9p
bnRlcm1lZGlhdGUuaCIKIAogLy8KIC8vIFN5bWJvbCBiYXNlIGNsYXNzLiAgKENhbiBidWlsZCBm
dW5jdGlvbnMgb3IgdmFyaWFibGVzIG91dCBvZiB0aGVzZS4uLikKQEAgLTIzOSwxMyArMjM5LDYg
QEAgcHVibGljOgogICAgICAgICAvLwogICAgIH0KIAotICAgIFRTeW1ib2xUYWJsZShUU3ltYm9s
VGFibGUmIHN5bVRhYmxlKQotICAgIHsKLSAgICAgICAgdGFibGUucHVzaF9iYWNrKHN5bVRhYmxl
LnRhYmxlWzBdKTsKLSAgICAgICAgcHJlY2lzaW9uU3RhY2sucHVzaF9iYWNrKCBzeW1UYWJsZS5w
cmVjaXNpb25TdGFja1swXSApOwotICAgICAgICB1bmlxdWVJZCA9IHN5bVRhYmxlLnVuaXF1ZUlk
OwotICAgIH0KLQogICAgIH5UU3ltYm9sVGFibGUoKQogICAgIHsKICAgICAgICAgLy8gbGV2ZWwg
MCBpcyBhbHdheXMgYnVpbHQgSW4gc3ltYm9scywgc28gd2UgbmV2ZXIgcG9wIHRoYXQgb3V0CkBA
IC0yNTksMTEgKzI1MiwxMCBAQCBwdWJsaWM6CiAgICAgLy8gZ2xvYmFscyBhcmUgYXQgbGV2ZWwg
MS4KICAgICAvLwogICAgIGJvb2wgaXNFbXB0eSgpIHsgcmV0dXJuIHRhYmxlLnNpemUoKSA9PSAw
OyB9Ci0gICAgYm9vbCBhdEJ1aWx0SW5MZXZlbCgpIHsgcmV0dXJuIGF0U2hhcmVkQnVpbHRJbkxl
dmVsKCkgfHwgYXREeW5hbWljQnVpbHRJbkxldmVsKCk7IH0KLSAgICBib29sIGF0U2hhcmVkQnVp
bHRJbkxldmVsKCkgeyByZXR1cm4gdGFibGUuc2l6ZSgpID09IDE7IH0JCi0gICAgYm9vbCBhdEds
b2JhbExldmVsKCkgeyByZXR1cm4gdGFibGUuc2l6ZSgpIDw9IDM7IH0KKyAgICBib29sIGF0QnVp
bHRJbkxldmVsKCkgeyByZXR1cm4gdGFibGUuc2l6ZSgpID09IDE7IH0KKyAgICBib29sIGF0R2xv
YmFsTGV2ZWwoKSB7IHJldHVybiB0YWJsZS5zaXplKCkgPD0gMjsgfQogICAgIHZvaWQgcHVzaCgp
Ci0gICAgeyAKKyAgICB7CiAgICAgICAgIHRhYmxlLnB1c2hfYmFjayhuZXcgVFN5bWJvbFRhYmxl
TGV2ZWwpOwogICAgICAgICBwcmVjaXNpb25TdGFjay5wdXNoX2JhY2soIFByZWNpc2lvblN0YWNr
TGV2ZWwoKSApOwogICAgIH0KQEAgLTI5Nyw3ICsyODksNyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBzeW1ib2w7CiAgICAgfQogCi0gICAgVFN5bWJvbFRhYmxlTGV2ZWwqIGdldEdsb2JhbExl
dmVsKCkgeyBhc3NlcnQodGFibGUuc2l6ZSgpID49IDMpOyByZXR1cm4gdGFibGVbMl07IH0KKyAg
ICBUU3ltYm9sVGFibGVMZXZlbCogZ2V0R2xvYmFsTGV2ZWwoKSB7IGFzc2VydCh0YWJsZS5zaXpl
KCkgPj0gMik7IHJldHVybiB0YWJsZVsxXTsgfQogICAgIHZvaWQgcmVsYXRlVG9PcGVyYXRvcihj
b25zdCBjaGFyKiBuYW1lLCBUT3BlcmF0b3Igb3ApIHsgdGFibGVbMF0tPnJlbGF0ZVRvT3BlcmF0
b3IobmFtZSwgb3ApOyB9CiAgICAgaW50IGdldE1heFN5bWJvbElkKCkgeyByZXR1cm4gdW5pcXVl
SWQ7IH0KICAgICB2b2lkIGR1bXAoVEluZm9TaW5rICZpbmZvU2luaykgY29uc3Q7CkBAIC0zMjks
NyArMzIxLDYgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6ICAgIAogICAgIGludCBjdXJyZW50TGV2
ZWwoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHRhYmxlLnNpemUoKSkgLSAxOyB9
Ci0gICAgYm9vbCBhdER5bmFtaWNCdWlsdEluTGV2ZWwoKSB7IHJldHVybiB0YWJsZS5zaXplKCkg
PT0gMjsgfQogCiAgICAgc3RkOjp2ZWN0b3I8VFN5bWJvbFRhYmxlTGV2ZWwqPiB0YWJsZTsKICAg
ICB0eXBlZGVmIHN0ZDo6bWFwPCBUQmFzaWNUeXBlLCBUUHJlY2lzaW9uID4gUHJlY2lzaW9uU3Rh
Y2tMZXZlbDsKSW5kZXg6IEFOR0xFL3NyYy9saWJHTEVTdjIvU2hhZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBBTkdMRS9zcmMvbGliR0xFU3YyL1NoYWRlci5jcHAJKHJldmlzaW9uIDY0NjU1KQorKysg
QU5HTEUvc3JjL2xpYkdMRVN2Mi9TaGFkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw4ICsz
NCwxOCBAQCBTaGFkZXI6OlNoYWRlcihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgCiAKICAgICAg
ICAgaWYgKHJlc3VsdCkKICAgICAgICAgewotICAgICAgICAgICAgbUZyYWdtZW50Q29tcGlsZXIg
PSBTaENvbnN0cnVjdENvbXBpbGVyKEVTaExhbmdGcmFnbWVudCwgRVNoU3BlY0dMRVMyKTsKLSAg
ICAgICAgICAgIG1WZXJ0ZXhDb21waWxlciA9IFNoQ29uc3RydWN0Q29tcGlsZXIoRVNoTGFuZ1Zl
cnRleCwgRVNoU3BlY0dMRVMyKTsKKyAgICAgICAgICAgIFRCdWlsdEluUmVzb3VyY2UgcmVzb3Vy
Y2VzOworICAgICAgICAgICAgcmVzb3VyY2VzLm1heFZlcnRleEF0dHJpYnMgPSBNQVhfVkVSVEVY
X0FUVFJJQlM7CisgICAgICAgICAgICByZXNvdXJjZXMubWF4VmVydGV4VW5pZm9ybVZlY3RvcnMg
PSBNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUzsKKyAgICAgICAgICAgIHJlc291cmNlcy5tYXhW
YXJ5aW5nVmVjdG9ycyA9IE1BWF9WQVJZSU5HX1ZFQ1RPUlM7CisgICAgICAgICAgICByZXNvdXJj
ZXMubWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMgPSBNQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0Vf
VU5JVFM7CisgICAgICAgICAgICByZXNvdXJjZXMubWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0
cyA9IE1BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTOworICAgICAgICAgICAgcmVzb3Vy
Y2VzLm1heFRleHR1cmVJbWFnZVVuaXRzID0gTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFM7CisgICAg
ICAgICAgICByZXNvdXJjZXMubWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycyA9IE1BWF9GUkFHTUVO
VF9VTklGT1JNX1ZFQ1RPUlM7CisgICAgICAgICAgICByZXNvdXJjZXMubWF4RHJhd0J1ZmZlcnMg
PSBNQVhfRFJBV19CVUZGRVJTOworCisgICAgICAgICAgICBtRnJhZ21lbnRDb21waWxlciA9IFNo
Q29uc3RydWN0Q29tcGlsZXIoRVNoTGFuZ0ZyYWdtZW50LCBFU2hTcGVjR0xFUzIsICZyZXNvdXJj
ZXMpOworICAgICAgICAgICAgbVZlcnRleENvbXBpbGVyID0gU2hDb25zdHJ1Y3RDb21waWxlcihF
U2hMYW5nVmVydGV4LCBFU2hTcGVjR0xFUzIsICZyZXNvdXJjZXMpOwogICAgICAgICB9CiAgICAg
fQogCkBAIC0yNjcsMTggKzI3Nyw3IEBAIHZvaWQgU2hhZGVyOjpjb21waWxlVG9ITFNMKHZvaWQg
KmNvbXBpbGUKICAgICBkZWxldGVbXSBtSW5mb0xvZzsKICAgICBtSW5mb0xvZyA9IE5VTEw7CiAK
LSAgICBUQnVpbHRJblJlc291cmNlIHJlc291cmNlczsKLQotICAgIHJlc291cmNlcy5tYXhWZXJ0
ZXhBdHRyaWJzID0gTUFYX1ZFUlRFWF9BVFRSSUJTOwotICAgIHJlc291cmNlcy5tYXhWZXJ0ZXhV
bmlmb3JtVmVjdG9ycyA9IE1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTOwotICAgIHJlc291cmNl
cy5tYXhWYXJ5aW5nVmVjdG9ycyA9IE1BWF9WQVJZSU5HX1ZFQ1RPUlM7Ci0gICAgcmVzb3VyY2Vz
Lm1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzID0gTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VO
SVRTOwotICAgIHJlc291cmNlcy5tYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzID0gTUFYX0NP
TUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFM7Ci0gICAgcmVzb3VyY2VzLm1heFRleHR1cmVJbWFn
ZVVuaXRzID0gTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFM7Ci0gICAgcmVzb3VyY2VzLm1heEZyYWdt
ZW50VW5pZm9ybVZlY3RvcnMgPSBNQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTOwotICAgIHJl
c291cmNlcy5tYXhEcmF3QnVmZmVycyA9IE1BWF9EUkFXX0JVRkZFUlM7Ci0KLSAgICBpbnQgcmVz
dWx0ID0gU2hDb21waWxlKGNvbXBpbGVyLCAmbVNvdXJjZSwgMSwgRVNoT3B0Tm9uZSwgJnJlc291
cmNlcywgRURlYnVnT3BOb25lKTsKKyAgICBpbnQgcmVzdWx0ID0gU2hDb21waWxlKGNvbXBpbGVy
LCAmbVNvdXJjZSwgMSwgRVNoT3B0Tm9uZSwgRURlYnVnT3BOb25lKTsKICAgICBjb25zdCBjaGFy
ICpvYmogPSBTaEdldE9iamVjdENvZGUoY29tcGlsZXIpOwogICAgIGNvbnN0IGNoYXIgKmluZm8g
PSBTaEdldEluZm9Mb2coY29tcGlsZXIpOwogCg==
</data>
<flag name="review"
          id="51841"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
    <flag name="commit-queue"
          id="51842"
          type_id="3"
          status="-"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>