<?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>83666</bug_id>
          
          <creation_ts>2012-04-10 23:32:50 -0700</creation_ts>
          <short_desc>op_is_foo should be optimized</short_desc>
          <delta_ts>2012-04-12 07:19:22 -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>JavaScriptCore</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>loki</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zherczeg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>600063</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-04-10 23:32:50 -0700</bug_when>
    <thetext>Currently the op_is_foo opcodes result in C function calls, and the DFG doesn&apos;t handle them.

These opcodes should have fast inline assembly code and the DFG should handle them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600065</commentid>
    <comment_count>1</comment_count>
      <attachid>136632</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-04-10 23:35:51 -0700</bug_when>
    <thetext>Created attachment 136632
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600075</commentid>
    <comment_count>2</comment_count>
      <attachid>136632</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-10 23:58:16 -0700</bug_when>
    <thetext>Comment on attachment 136632
work in progress

Attachment 136632 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12380765</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600077</commentid>
    <comment_count>3</comment_count>
      <attachid>136636</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-04-11 00:01:12 -0700</bug_when>
    <thetext>Created attachment 136636
more

but still not done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600081</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-11 00:03:40 -0700</bug_when>
    <thetext>Attachment 136636 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:422:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 19 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>600084</commentid>
    <comment_count>5</comment_count>
      <attachid>136636</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-11 00:07:43 -0700</bug_when>
    <thetext>Comment on attachment 136636
more

Attachment 136636 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12382707</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600086</commentid>
    <comment_count>6</comment_count>
      <attachid>136636</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-11 00:14:41 -0700</bug_when>
    <thetext>Comment on attachment 136636
more

Attachment 136636 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12384672</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600088</commentid>
    <comment_count>7</comment_count>
      <attachid>136636</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-04-11 00:17:52 -0700</bug_when>
    <thetext>Comment on attachment 136636
more

Attachment 136636 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12379912</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600596</commentid>
    <comment_count>8</comment_count>
      <attachid>136757</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-04-11 14:36:31 -0700</bug_when>
    <thetext>Created attachment 136757
ready for review but still needs a bit more love</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600598</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-11 14:39:34 -0700</bug_when>
    <thetext>Attachment 136757 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/dfg/DFGOperations.h:88:  DFG_OPERATION is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:422:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 2 in 24 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>600611</commentid>
    <comment_count>10</comment_count>
      <attachid>136757</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-04-11 14:52:52 -0700</bug_when>
    <thetext>Comment on attachment 136757
ready for review but still needs a bit more love

Attachment 136757 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12389138</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600636</commentid>
    <comment_count>11</comment_count>
      <attachid>136757</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-11 15:27:47 -0700</bug_when>
    <thetext>Comment on attachment 136757
ready for review but still needs a bit more love

Attachment 136757 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12389152</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600646</commentid>
    <comment_count>12</comment_count>
      <attachid>136757</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-11 15:40:15 -0700</bug_when>
    <thetext>Comment on attachment 136757
ready for review but still needs a bit more love

Attachment 136757 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12393019</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600776</commentid>
    <comment_count>13</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-04-11 18:05:30 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/113930</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600777</commentid>
    <comment_count>14</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-04-11 18:06:05 -0700</bug_when>
    <thetext>I should note that I landed after fixing 32-bit and ARM bugs.  I will watch the bots to see that my work in this department was indeed fruitful and not completely destructive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600913</commentid>
    <comment_count>15</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-04-11 23:08:48 -0700</bug_when>
    <thetext>Reopen, because it broke the Qt-ARM build:

../../../../Source/JavaScriptCore/jit/JITOpcodes32_64.cpp: In member function &apos;void JSC::JIT::emit_op_is_string(JSC::Instruction*)&apos;:
../../../../Source/JavaScriptCore/jit/JITOpcodes32_64.cpp:683:101: error: &apos;compare8&apos; was not declared in this scope

It seems compare8 is still missing from MacroAssemblerARM.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600925</commentid>
    <comment_count>16</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-04-11 23:23:17 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Reopen, because it broke the Qt-ARM build:
&gt; 
&gt; ../../../../Source/JavaScriptCore/jit/JITOpcodes32_64.cpp: In member function &apos;void JSC::JIT::emit_op_is_string(JSC::Instruction*)&apos;:
&gt; ../../../../Source/JavaScriptCore/jit/JITOpcodes32_64.cpp:683:101: error: &apos;compare8&apos; was not declared in this scope
&gt; 
&gt; It seems compare8 is still missing from MacroAssemblerARM.h

Weird, I would have expected http://trac.webkit.org/changeset/113934 to fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601204</commentid>
    <comment_count>17</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-04-12 07:19:22 -0700</bug_when>
    <thetext>Build fixed in http://trac.webkit.org/changeset/113955</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136632</attachid>
            <date>2012-04-10 23:35:51 -0700</date>
            <delta_ts>2012-04-11 00:01:12 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>opisfoo_patch_1.diff</filename>
            <type>text/plain</type>
            <size>15498</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTEzODMwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBA
CisyMDEyLTA0LTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
b3BfaXNfZm9vIHNob3VsZCBiZSBvcHRpbWl6ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNjY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisgICAgICAgIAorICAgICAgICBXb3JrIGluIHByb2dyZXNzLiBTbyBmYXIgSSBq
dXN0IGhhdmUgb3BfaXNfdW5kZWZpbmVkLgorCisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0U3Rh
dGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OmV4ZWN1dGUpOgorICAg
ICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDU0VQaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OnBlcmZvcm1Ob2RlQ1NFKToKKyAgICAgICAg
KiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2FuQ29tcGlsZU9w
Y29kZSk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgIChERkcpOgorICAg
ICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAg
ICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFp
blBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKEpJVCk6CisgICAgICAgICog
aml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfdW5kZWZp
bmVkKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc191bmRlZmluZWQpOgorICAgICAgICAoSlND
KToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChMTEludCk6
CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKExMSW50KToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc206CisKIDIwMTItMDQtMTAgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNv
bT4KIAogICAgICAgICBBdHRlbXB0IHRvIGZpeCB0aGUgV2luZG93cyBidWlsZC4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNp
b24gMTEzODI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAzLDYgKzQwMywxMSBAQCBib29sIEFic3RyYWN0U3Rh
dGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQo
UHJlZGljdEJvb2xlYW4pOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgICAgIAorICAgIGNh
c2UgSXNVbmRlZmluZWQ6IHsKKyAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0
Qm9vbGVhbik7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgICAgIAogICAgIGNhc2Ug
Q29tcGFyZUxlc3M6CiAgICAgY2FzZSBDb21wYXJlTGVzc0VxOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDExMzgy
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzI3LDYgKzE3MjcsMTIgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQsIGFkZFRvR3JhcGgoSW5zdGFuY2VPZiwgdmFsdWUsIGJhc2VWYWx1ZSwgcHJv
dG90eXBlKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pbnN0YW5jZW9mKTsKICAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2Ugb3BfaXNfdW5kZWZpbmVkOiB7CisgICAg
ICAgICAgICBOb2RlSW5kZXggdmFsdWUgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3Bl
cmFuZCk7CisgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwg
YWRkVG9HcmFwaChJc1VuZGVmaW5lZCwgdmFsdWUpKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RF
KG9wX2lzX3VuZGVmaW5lZCk7CisgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX25vdDogewog
ICAgICAgICAgICAgTm9kZUluZGV4IHZhbHVlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5j
cHAJKHJldmlzaW9uIDExMzgyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NF
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODgsNiArNTg4LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CiAgICAgICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoK
ICAgICAgICAgY2FzZSBJbnQzMlRvRG91YmxlOgorICAgICAgICBjYXNlIElzVW5kZWZpbmVkOgog
ICAgICAgICAgICAgc2V0UmVwbGFjZW1lbnQocHVyZUNTRShub2RlKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAxMTM4MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5Niw3IEBA
IGlubGluZSBib29sIGNhbkNvbXBpbGVPcGNvZGUoT3Bjb2RlSUQgb3AKICAgICBjYXNlIG9wX21v
djoKICAgICBjYXNlIG9wX2NoZWNrX2hhc19pbnN0YW5jZToKICAgICBjYXNlIG9wX2luc3RhbmNl
b2Y6CisgICAgY2FzZSBvcF9pc191bmRlZmluZWQ6CiAgICAgY2FzZSBvcF9ub3Q6CiAgICAgY2Fz
ZSBvcF9sZXNzOgogICAgIGNhc2Ugb3BfbGVzc2VxOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMTEzODI4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNiArMTcwLDcg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEJyZWFrcG9pbnQs
IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAogICAgIG1hY3JvKENoZWNr
SGFzSW5zdGFuY2UsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhJbnN0YW5jZU9mLCBO
b2RlUmVzdWx0Qm9vbGVhbikgXAorICAgIG1hY3JvKElzVW5kZWZpbmVkLCBOb2RlUmVzdWx0Qm9v
bGVhbikgXAogICAgIG1hY3JvKExvZ2ljYWxOb3QsIE5vZGVSZXN1bHRCb29sZWFuIHwgTm9kZU1p
Z2h0Q2xvYmJlcikgXAogICAgIG1hY3JvKFRvUHJpbWl0aXZlLCBOb2RlUmVzdWx0SlMgfCBOb2Rl
TXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKICAgICBtYWNybyhTdHJDYXQsIE5v
ZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncyB8IE5vZGVDbG9i
YmVyc1dvcmxkKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTEzODI4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3OSw3ICszNzksOCBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIENvbXBhcmVHcmVhdGVyRXE6CiAgICAgICAgIGNhc2UgQ29tcGFyZUVxOgogICAg
ICAgICBjYXNlIENvbXBhcmVTdHJpY3RFcToKLSAgICAgICAgY2FzZSBJbnN0YW5jZU9mOiB7Cisg
ICAgICAgIGNhc2UgSW5zdGFuY2VPZjoKKyAgICAgICAgY2FzZSBJc1VuZGVmaW5lZDogewogICAg
ICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFByZWRpY3RCb29sZWFuKTsKICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0RmxhZ3Mobm9kZSk7CiAgICAgICAgICAgICBi
cmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTEzODI4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzU5Miw2ICszNTkyLDI0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9k
ZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBJc1VuZGVmaW5lZDogeworICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgCisgICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wIGlzQ2VsbCA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpFcXVhbCwgdmFsdWUu
dGFnR1BSKCksIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwor
ICAgICAgICAKKyAgICAgICAgbV9qaXQuY29tcGFyZTMyKEpJVENvbXBpbGVyOjpFcXVhbCwgdmFs
dWUudGFnR1BSKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpVbmRlZmluZWRUYWcpLCByZXN1bHQu
Z3ByKCkpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwor
ICAgICAgICAKKyAgICAgICAgaXNDZWxsLmxpbmsoJm1faml0KTsKKyAgICAgICAgbV9qaXQubG9h
ZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZS5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBtX2ppdC50ZXN0OChKSVRD
b21waWxlcjo6Tm9uWmVybywgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0LmdwcigpLCBTdHJ1
Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgCisgICAgICAgIGRvbmUubGluaygm
bV9qaXQpOworICAgICAgICBib29sZWFuUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jb21waWxlSW5k
ZXgpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIFBoaToKICAgICBjYXNlIEZs
dXNoOgogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTEzODI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzU2Myw2ICszNTYzLDI1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSYgbm9kZSkKICAgICAgICAgY29tcGlsZUluc3RhbmNlT2Yobm9kZSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBJc1VuZGVmaW5lZDogeworICAgICAgICBKU1Zh
bHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlz
Q2VsbCA9IG1faml0LmJyYW5jaFRlc3RQdHIoSklUQ29tcGlsZXI6Olplcm8sIHZhbHVlLmdwcigp
LCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworICAgICAgICAKKyAgICAgICAgbV9qaXQuY29t
cGFyZVB0cihKSVRDb21waWxlcjo6RXF1YWwsIHZhbHVlLmdwcigpLCBUcnVzdGVkSW1tMzIoVmFs
dWVVbmRlZmluZWQpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBk
b25lID0gbV9qaXQuanVtcCgpOworICAgICAgICAKKyAgICAgICAgaXNDZWxsLmxpbmsoJm1faml0
KTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZS5ncHIo
KSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIG1f
aml0LnRlc3Q4KEpJVENvbXBpbGVyOjpOb25aZXJvLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1
bHQuZ3ByKCksIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMy
KE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAKKyAgICAg
ICAgZG9uZS5saW5rKCZtX2ppdCk7CisgICAgICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKFZh
bHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5n
cHIoKSwgbV9jb21waWxlSW5kZXgsIERhdGFGb3JtYXRKU0Jvb2xlYW4pOworICAgICAgICBicmVh
azsKKyAgICB9CiAKICAgICBjYXNlIEZsdXNoOgogICAgIGNhc2UgUGhpOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTEzODI4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzQsNyArMjM0LDYgQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfVU5BUllfT1Ao
b3BfaXNfbnVtYmVyKQogICAgICAgICBERUZJTkVfVU5BUllfT1Aob3BfaXNfb2JqZWN0KQogICAg
ICAgICBERUZJTkVfVU5BUllfT1Aob3BfaXNfc3RyaW5nKQotICAgICAgICBERUZJTkVfVU5BUllf
T1Aob3BfaXNfdW5kZWZpbmVkKQogICAgICAgICBERUZJTkVfVU5BUllfT1Aob3BfdHlwZW9mKQog
CiAgICAgICAgIERFRklORV9PUChvcF9hZGQpCkBAIC0yNjksNiArMjY4LDcgQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3Njb3Bl
ZF92YXIpCiAgICAgICAgIERFRklORV9PUChvcF9jaGVja19oYXNfaW5zdGFuY2UpCiAgICAgICAg
IERFRklORV9PUChvcF9pbnN0YW5jZW9mKQorICAgICAgICBERUZJTkVfT1Aob3BfaXNfdW5kZWZp
bmVkKQogICAgICAgICBERUZJTkVfT1Aob3BfamVxX251bGwpCiAgICAgICAgIERFRklORV9PUChv
cF9qZmFsc2UpCiAgICAgICAgIERFRklORV9PUChvcF9qbXApCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgJKHJldmlzaW9uIDExMzgyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgJKHdvcmtpbmcgY29weSkKQEAgLTgwNCw2ICs4MDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2luaXRfbGF6eV9yZWcoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2NoZWNrX2hhc19pbnN0YW5jZShJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3BfaW5zdGFuY2VvZihJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfaXNfdW5kZWZpbmVkKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9q
ZXFfbnVsbChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfamZhbHNlKEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9qbXAoSW5zdHJ1Y3Rpb24qKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlz
aW9uIDExMzgyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMxLDYgKzYzMSwyNSBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfaW5zdGFuY2VvZihJbnN0cnVjCiAgICAgc3R1YkNhbGwuY2FsbChkc3QpOwogfQogCit2
b2lkIEpJVDo6ZW1pdF9vcF9pc191bmRlZmluZWQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3sKKyAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kOworICAgIHVuc2lnbmVkIHZhbHVlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZDsKKyAgICAKKyAgICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDEsIHJlZ1QwKTsKKyAgICBKdW1wIGlz
Q2VsbCA9IGJyYW5jaChFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFn
KSk7CisKKyAgICBjb21wYXJlMzIoRXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
VW5kZWZpbmVkVGFnKSwgcmVnVDApOworICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKKyAgICAKKyAg
ICBpc0NlbGwubGluayh0aGlzKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMSk7CisgICAgdGVzdDgoTm9uWmVybywgQWRkcmVzcyhy
ZWdUMSwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCksIHJlZ1QwKTsKKyAgICAKKyAgICBkb25lLmxpbmsodGhpcyk7
CisgICAgZW1pdFN0b3JlQm9vbChkc3QsIHJlZ1QwKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3Bf
dGVhcl9vZmZfYWN0aXZhdGlvbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIHVuc2lnbmVkIGFjdGl2YXRpb24gPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZpc2lv
biAxMTM4MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NjUsNiArNDY1LDI2IEBAIHZvaWQgSklUOjplbWl0X29wX2luc3Rh
bmNlb2YoSW5zdHJ1Y3Rpb24KICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CiB9CiAK
K3ZvaWQgSklUOjplbWl0X29wX2lzX3VuZGVmaW5lZChJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQoreworICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQ7CisgICAgdW5zaWduZWQgdmFsdWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kOworICAgIAorICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QwKTsKKyAg
ICBKdW1wIGlzQ2VsbCA9IGVtaXRKdW1wSWZKU0NlbGwocmVnVDApOworCisgICAgY29tcGFyZVB0
cihFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihWYWx1ZVVuZGVmaW5lZCksIHJlZ1QwKTsKKyAg
ICBKdW1wIGRvbmUgPSBqdW1wKCk7CisgICAgCisgICAgaXNDZWxsLmxpbmsodGhpcyk7CisgICAg
bG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDEp
OworICAgIHRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDEsIFN0cnVjdHVyZTo6dHlwZUluZm9G
bGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpLCByZWdU
MCk7CisgICAgCisgICAgZG9uZS5saW5rKHRoaXMpOworICAgIGVtaXRUYWdBc0Jvb2xJbW1lZGlh
dGUocmVnVDApOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKK30KKwogdm9pZCBK
SVQ6OmVtaXRfb3BfY2FsbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IGNvbXBpbGVPcENhbGwob3BfY2FsbCwgY3VycmVudEluc3RydWN0aW9uLCBtX2NhbGxMaW5rSW5m
b0luZGV4KyspOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwCShyZXZpc2lvbiAxMTM4MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MDIsMTMgKzcwMiw2
IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90eXBlb2YpCiAgICAgTExJTlRfUkVU
VVJOKGpzVHlwZVN0cmluZ0ZvclZhbHVlKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7
CiB9CiAKLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pc191bmRlZmluZWQpCi17Ci0g
ICAgTExJTlRfQkVHSU4oKTsKLSAgICBKU1ZhbHVlIHYgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KTsKLSAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKHYuaXNDZWxsKCkgPyB2LmFzQ2VsbCgpLT5z
dHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKCkgOiB2LmlzVW5k
ZWZpbmVkKCkpKTsKLX0KLQogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2lzX2Jvb2xl
YW4pCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5oCShyZXZpc2lvbiAxMTM4MjgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTMy
LDcgKzEzMiw2IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXR4b3IpOwogTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NoZWNrX2hhc19pbnN0YW5jZSk7CiBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW5zdGFuY2VvZik7CiBMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfdHlwZW9mKTsKLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pc191
bmRlZmluZWQpOwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2lzX2Jvb2xlYW4pOwog
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2lzX251bWJlcik7CiBMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfaXNfc3RyaW5nKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZp
c2lvbiAxMTM4MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtODYyLDYgKzg2MiwyMyBAQCBfbGxp
bnRfb3BfaW5zdGFuY2VvZjoKICAgICBkaXNwYXRjaCg1KQogCiAKK19sbGludF9vcF9pc191bmRl
ZmluZWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxv
YWRpIDRbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAg
ICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgYmllcSB0Miwg
Q2VsbFRhZywgLm9wSXNVbmRlZmluZWRDZWxsCisgICAgY2llcSB0MiwgVW5kZWZpbmVkVGFnLCB0
MworICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNo
KDMpCisub3BJc1VuZGVmaW5lZENlbGw6CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0
M10sIHQxCisgICAgdGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFn
c1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQxCisgICAgc3RvcmVpIHQxLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMykKKworCiBtYWNybyByZXNvbHZlR2xv
YmFsKHNpemUsIHNsb3cpCiAgICAgIyBPcGVyYW5kcyBhcmUgYXMgZm9sbG93czoKICAgICAjIDRb
UENdICAgRGVzdGluYXRpb24gZm9yIHRoZSBsb2FkLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9u
IDExMzgyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC03MzIsNiArNzMyLDI0IEBAIF9sbGludF9vcF9p
bnN0YW5jZW9mOgogICAgIGRpc3BhdGNoKDUpCiAKIAorX2xsaW50X29wX2lzX3VuZGVmaW5lZDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGlzIDE2W1BCLCBQQywgOF0sIHQxCisgICAg
bG9hZGlzIDhbUEIsIFBDLCA4XSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0
MCkKKyAgICBidHB6IHQwLCB0YWdNYXNrLCAub3BJc1VuZGVmaW5lZENlbGwKKyAgICBjcGVxIHQw
LCBWYWx1ZVVuZGVmaW5lZCwgdDMKKyAgICBvcnAgVmFsdWVGYWxzZSwgdDMKKyAgICBzdG9yZXAg
dDMsIFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDMpCisub3BJc1VuZGVmaW5lZENlbGw6Cisg
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgdGJueiBTdHJ1Y3R1cmU6
Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0sIE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQsIHQxCisgICAgb3JwIFZhbHVlRmFsc2UsIHQxCisgICAgc3RvcmVwIHQxLCBbY2ZyLCB0Miwg
OF0KKyAgICBkaXNwYXRjaCgzKQorCisKIG1hY3JvIHJlc29sdmVHbG9iYWwoc2l6ZSwgc2xvdykK
ICAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgogICAgICMgOFtQQiwgUEMsIDhdICAgRGVz
dGluYXRpb24gZm9yIHRoZSBsb2FkLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMTEzODI4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MjMsMTIgKzQyMyw2IEBAIF9sbGludF9vcF90eXBlb2Y6CiAgICAgZGlz
cGF0Y2goMykKIAogCi1fbGxpbnRfb3BfaXNfdW5kZWZpbmVkOgotICAgIHRyYWNlRXhlY3V0aW9u
KCkKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pc191bmRlZmluZWQpCi0gICAg
ZGlzcGF0Y2goMykKLQotCiBfbGxpbnRfb3BfaXNfYm9vbGVhbjoKICAgICB0cmFjZUV4ZWN1dGlv
bigpCiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXNfYm9vbGVhbikK
</data>
<flag name="commit-queue"
          id="141502"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136636</attachid>
            <date>2012-04-11 00:01:12 -0700</date>
            <delta_ts>2012-04-11 14:36:31 -0700</delta_ts>
            <desc>more</desc>
            <filename>opisfoo_patch_2.diff</filename>
            <type>text/plain</type>
            <size>23735</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTEzODMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBA
CisyMDEyLTA0LTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
b3BfaXNfZm9vIHNob3VsZCBiZSBvcHRpbWl6ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNjY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisgICAgICAgIAorICAgICAgICBXb3JrIGluIHByb2dyZXNzLiBTbyBmYXIgSSdt
IDEvMyBkb25lLgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6
CisgICAgICAgIChNYWNyb0Fzc2VtYmxlclg4Nl82NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyWDg2XzY0Ojp0ZXN0UHRyKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6cGVyZm9ybU5vZGVDU0UpOgorICAgICAgICAqIGRm
Zy9ERkdDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2Rl
KToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKERGRyk6CisgICAgICAg
ICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAg
ICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAoSklUKToKKyAgICAgICAgKiBqaXQv
SklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc191bmRlZmluZWQp
OgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX2Jvb2xlYW4p
OgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfaXNfdW5kZWZpbmVkKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9pc19ib29sZWFuKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5j
cHA6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoK
KyAgICAgICAgKExMSW50KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogb2ZmbGluZWFz
bS9hcm12Ny5yYjoKKyAgICAgICAgKiBvZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYjoKKyAgICAg
ICAgKiBvZmZsaW5lYXNtL3g4Ni5yYjoKKwogMjAxMi0wNC0xMCAgQ2FybG9zIEdhcmNpYSBDYW1w
b3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4IG1ha2Ug
ZGlzdGNoZWNrIGlzc3Vlcy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDExMzgyOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAko
d29ya2luZyBjb3B5KQpAQCAtNDAyLDcgKzQwMiw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3Nl
bWJsZXIudGVzdHFfcnIocmVnLCBtYXNrKTsKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJs
ZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOwogICAgIH0KLQorICAgIAogICAgIEp1bXAgYnJh
bmNoVGVzdFB0cihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcsIFRydXN0ZWRJ
bW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7CiAgICAgICAgIC8vIGlmIHdlIGFy
ZSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIGxvdyBzZXZlbiBiaXRzLCB0aGlzIGNhbiBiZSB0ZXN0
ZWQgd2l0aCBhIHRlc3RiCkBAIC00MTUsNiArNDE1LDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOwogICAgIH0KIAor
ICAgIHZvaWQgdGVzdFB0cihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcsIFRy
dXN0ZWRJbW0zMiBtYXNrLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBpZiAobWFz
ay5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIudGVzdHFfcnIocmVnLCBy
ZWcpOworICAgICAgICBlbHNlIGlmICgobWFzay5tX3ZhbHVlICYgfjB4N2YpID09IDApCisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci50ZXN0Yl9pOHIobWFzay5tX3ZhbHVlLCByZWcpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci50ZXN0cV9pMzJyKG1hc2subV92YWx1ZSwg
cmVnKTsKKyAgICAgICAgc2V0MzIoeDg2Q29uZGl0aW9uKGNvbmQpLCBkZXN0KTsKKyAgICB9CisK
ICAgICBKdW1wIGJyYW5jaFRlc3RQdHIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRk
cmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCiAgICAg
ewogICAgICAgICBsb2FkUHRyKGFkZHJlc3MubV9wdHIsIHNjcmF0Y2hSZWdpc3Rlcik7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHJl
dmlzaW9uIDExMzgyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RT
dGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMyw2ICs0MDMsMTIgQEAgYm9vbCBBYnN0cmFj
dFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCku
c2V0KFByZWRpY3RCb29sZWFuKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgICAgICAKKyAg
ICBjYXNlIElzVW5kZWZpbmVkOgorICAgIGNhc2UgSXNCb29sZWFuOiB7CisgICAgICAgIGZvck5v
ZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdEJvb2xlYW4pOworICAgICAgICBicmVhazsKKyAgICB9
CiAgICAgICAgICAgICAKICAgICBjYXNlIENvbXBhcmVMZXNzOgogICAgIGNhc2UgQ29tcGFyZUxl
c3NFcToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCShyZXZpc2lvbiAxMTM4MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcyNyw2ICsxNzI3LDE4
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAg
IHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBhZGRUb0dyYXBoKEluc3RhbmNl
T2YsIHZhbHVlLCBiYXNlVmFsdWUsIHByb3RvdHlwZSkpOwogICAgICAgICAgICAgTkVYVF9PUENP
REUob3BfaW5zdGFuY2VvZik7CiAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNl
IG9wX2lzX3VuZGVmaW5lZDogeworICAgICAgICAgICAgTm9kZUluZGV4IHZhbHVlID0gZ2V0KGN1
cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgc2V0KGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGFkZFRvR3JhcGgoSXNVbmRlZmluZWQsIHZhbHVlKSk7
CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pc191bmRlZmluZWQpOworICAgICAgICB9CisK
KyAgICAgICAgY2FzZSBvcF9pc19ib29sZWFuOiB7CisgICAgICAgICAgICBOb2RlSW5kZXggdmFs
dWUgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBz
ZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgYWRkVG9HcmFwaChJc0Jvb2xlYW4s
IHZhbHVlKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pc19ib29sZWFuKTsKKyAgICAg
ICAgfQogCiAgICAgICAgIGNhc2Ugb3Bfbm90OiB7CiAgICAgICAgICAgICBOb2RlSW5kZXggdmFs
dWUgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2aXNpb24gMTEzODI4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU4OCw2ICs1ODgsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFN0cmluZ0NoYXJBdDoK
ICAgICAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgogICAgICAgICBjYXNlIEludDMyVG9Eb3Vi
bGU6CisgICAgICAgIGNhc2UgSXNVbmRlZmluZWQ6CisgICAgICAgIGNhc2UgSXNCb29sZWFuOgog
ICAgICAgICAgICAgc2V0UmVwbGFjZW1lbnQocHVyZUNTRShub2RlKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAxMTM4MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5Niw4IEBA
IGlubGluZSBib29sIGNhbkNvbXBpbGVPcGNvZGUoT3Bjb2RlSUQgb3AKICAgICBjYXNlIG9wX21v
djoKICAgICBjYXNlIG9wX2NoZWNrX2hhc19pbnN0YW5jZToKICAgICBjYXNlIG9wX2luc3RhbmNl
b2Y6CisgICAgY2FzZSBvcF9pc191bmRlZmluZWQ6CisgICAgY2FzZSBvcF9pc19ib29sZWFuOgog
ICAgIGNhc2Ugb3Bfbm90OgogICAgIGNhc2Ugb3BfbGVzczoKICAgICBjYXNlIG9wX2xlc3NlcToK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDEx
MzgyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTcwLDYgKzE3MCw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKICAgICBtYWNybyhCcmVha3BvaW50LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJz
V29ybGQpIFwKICAgICBtYWNybyhDaGVja0hhc0luc3RhbmNlLCBOb2RlTXVzdEdlbmVyYXRlKSBc
CiAgICAgbWFjcm8oSW5zdGFuY2VPZiwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKKyAgICBtYWNybyhJ
c1VuZGVmaW5lZCwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKKyAgICBtYWNybyhJc0Jvb2xlYW4sIE5v
ZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oTG9naWNhbE5vdCwgTm9kZVJlc3VsdEJvb2xl
YW4gfCBOb2RlTWlnaHRDbG9iYmVyKSBcCiAgICAgbWFjcm8oVG9QcmltaXRpdmUsIE5vZGVSZXN1
bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAogICAgIG1hY3Jv
KFN0ckNhdCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdz
IHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZp
c2lvbiAxMTM4MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc5LDcgKzM3OSw5IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgQ29tcGFyZUdyZWF0ZXJFcToKICAgICAgICAgY2FzZSBDb21w
YXJlRXE6CiAgICAgICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOgotICAgICAgICBjYXNlIEluc3Rh
bmNlT2Y6IHsKKyAgICAgICAgY2FzZSBJbnN0YW5jZU9mOgorICAgICAgICBjYXNlIElzVW5kZWZp
bmVkOgorICAgICAgICBjYXNlIElzQm9vbGVhbjogewogICAgICAgICAgICAgY2hhbmdlZCB8PSBz
ZXRQcmVkaWN0aW9uKFByZWRpY3RCb29sZWFuKTsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVy
Z2VEZWZhdWx0RmxhZ3Mobm9kZSk7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAko
cmV2aXNpb24gMTEzODI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU5Miw2ICszNTkyLDMzIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCisgICAgY2FzZSBJc1VuZGVmaW5lZDogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2
YWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzKTsKKyAgICAgICAgCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzQ2VsbCA9IG1faml0
LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpFcXVhbCwgdmFsdWUudGFnR1BSKCksIEpJVENvbXBpbGVy
OjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOworICAgICAgICAKKyAgICAgICAgbV9q
aXQuY29tcGFyZTMyKEpJVENvbXBpbGVyOjpFcXVhbCwgdmFsdWUudGFnR1BSKCksIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpVbmRlZmluZWRUYWcpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOworICAgICAgICAKKyAgICAgICAgaXND
ZWxsLmxpbmsoJm1faml0KTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRk
cmVzcyh2YWx1ZS5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZXN1
bHQuZ3ByKCkpOworICAgICAgICBtX2ppdC50ZXN0OChKSVRDb21waWxlcjo6Tm9uWmVybywgSklU
Q29tcGlsZXI6OkFkZHJlc3MocmVzdWx0LmdwcigpLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NP
ZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSwgcmVzdWx0Lmdw
cigpKTsKKyAgICAgICAgCisgICAgICAgIGRvbmUubGluaygmbV9qaXQpOworICAgICAgICBib29s
ZWFuUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jb21waWxlSW5kZXgpOworICAgICAgICBicmVhazsK
KyAgICB9CisKKyAgICBjYXNlIElzQm9vbGVhbjogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2
YWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzLCB2YWx1ZSk7CisgICAgICAgIAorICAgICAgICBtX2ppdC5jb21wYXJlMzIoSklUQ29tcGls
ZXI6OkVxdWFsLCB2YWx1ZS50YWdHUFIoKSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihCb29s
ZWFuVGFnKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgYm9vbGVhblJlc3VsdChyZXN1bHQuZ3By
KCksIG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBQ
aGk6CiAgICAgY2FzZSBGbHVzaDoKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDEx
MzgyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM1NjMsNiArMzU2MywzNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIGNvbXBpbGVJbnN0YW5jZU9mKG5vZGUp
OwogICAgICAgICBicmVhazsKICAgICB9CisgICAgICAgIAorICAgIGNhc2UgSXNVbmRlZmluZWQ6
IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDEoKSk7Cisg
ICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIAorICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBpc0NlbGwgPSBtX2ppdC5icmFuY2hUZXN0UHRyKEpJVENvbXBpbGVyOjpa
ZXJvLCB2YWx1ZS5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKKyAgICAgICAgCisg
ICAgICAgIG1faml0LmNvbXBhcmVQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCB2YWx1ZS5ncHIoKSwg
VHJ1c3RlZEltbTMyKFZhbHVlVW5kZWZpbmVkKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgSklU
Q29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKKyAgICAgICAgCisgICAgICAgIGlz
Q2VsbC5saW5rKCZtX2ppdCk7CisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFk
ZHJlc3ModmFsdWUuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZXN1bHQuZ3By
KCkpOworICAgICAgICBtX2ppdC50ZXN0OChKSVRDb21waWxlcjo6Tm9uWmVybywgSklUQ29tcGls
ZXI6OkFkZHJlc3MocmVzdWx0LmdwcigpLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQo
KSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSwgcmVzdWx0LmdwcigpKTsK
KyAgICAgICAgCisgICAgICAgIGRvbmUubGluaygmbV9qaXQpOworICAgICAgICBtX2ppdC5vcjMy
KFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY29tcGlsZUluZGV4LCBEYXRhRm9ybWF0SlNCb29sZWFu
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAgICAKKyAgICBjYXNlIElzQm9vbGVhbjog
eworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAg
ICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCB2YWx1ZSk7CisgICAgICAgIAorICAgICAg
ICBtX2ppdC5tb3ZlKHZhbHVlLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBtX2ppdC54
b3JQdHIoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0Lmdwcigp
KTsKKyAgICAgICAgbV9qaXQudGVzdFB0cihKSVRDb21waWxlcjo6WmVybywgcmVzdWx0Lmdwcigp
LCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KH4xKSksIHJl
c3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKFZhbHVlRmFsc2Up
LCByZXN1bHQuZ3ByKCkpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9j
b21waWxlSW5kZXgsIERhdGFGb3JtYXRKU0Jvb2xlYW4pOworICAgICAgICBicmVhazsKKyAgICB9
CiAKICAgICBjYXNlIEZsdXNoOgogICAgIGNhc2UgUGhpOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAkocmV2aXNpb24gMTEzODI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjksMTIgKzIyOSwxMCBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9CSU5BUllfT1Aob3BfbGVz
c2VxKQogICAgICAgICBERUZJTkVfQklOQVJZX09QKG9wX2dyZWF0ZXIpCiAgICAgICAgIERFRklO
RV9CSU5BUllfT1Aob3BfZ3JlYXRlcmVxKQotICAgICAgICBERUZJTkVfVU5BUllfT1Aob3BfaXNf
Ym9vbGVhbikKICAgICAgICAgREVGSU5FX1VOQVJZX09QKG9wX2lzX2Z1bmN0aW9uKQogICAgICAg
ICBERUZJTkVfVU5BUllfT1Aob3BfaXNfbnVtYmVyKQogICAgICAgICBERUZJTkVfVU5BUllfT1Ao
b3BfaXNfb2JqZWN0KQogICAgICAgICBERUZJTkVfVU5BUllfT1Aob3BfaXNfc3RyaW5nKQotICAg
ICAgICBERUZJTkVfVU5BUllfT1Aob3BfaXNfdW5kZWZpbmVkKQogICAgICAgICBERUZJTkVfVU5B
UllfT1Aob3BfdHlwZW9mKQogCiAgICAgICAgIERFRklORV9PUChvcF9hZGQpCkBAIC0yNjksNiAr
MjY3LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJ
TkVfT1Aob3BfZ2V0X3Njb3BlZF92YXIpCiAgICAgICAgIERFRklORV9PUChvcF9jaGVja19oYXNf
aW5zdGFuY2UpCiAgICAgICAgIERFRklORV9PUChvcF9pbnN0YW5jZW9mKQorICAgICAgICBERUZJ
TkVfT1Aob3BfaXNfdW5kZWZpbmVkKQorICAgICAgICBERUZJTkVfT1Aob3BfaXNfYm9vbGVhbikK
ICAgICAgICAgREVGSU5FX09QKG9wX2plcV9udWxsKQogICAgICAgICBERUZJTkVfT1Aob3BfamZh
bHNlKQogICAgICAgICBERUZJTkVfT1Aob3Bfam1wKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oCShyZXZpc2lvbiAxMTM4MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CSh3b3JraW5nIGNvcHkpCkBAIC04MDQsNiArODA0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9pbml0X2xhenlfcmVnKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9jaGVja19oYXNfaW5zdGFuY2UoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X2lzX3VuZGVmaW5lZChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaXNfYm9v
bGVhbihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfamVxX251bGwoSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2pmYWxzZShJbnN0cnVjdGlvbiopOwogICAg
ICAgICB2b2lkIGVtaXRfb3Bfam1wKEluc3RydWN0aW9uKik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAxMTM4MjgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYzMSw2ICs2MzEsMzUgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNl
b2YoSW5zdHJ1YwogICAgIHN0dWJDYWxsLmNhbGwoZHN0KTsKIH0KIAordm9pZCBKSVQ6OmVtaXRf
b3BfaXNfdW5kZWZpbmVkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAg
dW5zaWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICB1bnNp
Z25lZCB2YWx1ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgCisgICAg
ZW1pdExvYWQodmFsdWUsIHJlZ1QxLCByZWdUMCk7CisgICAgSnVtcCBpc0NlbGwgPSBicmFuY2go
RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOworCisgICAgY29t
cGFyZTMyKEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlVuZGVmaW5lZFRhZyks
IHJlZ1QwKTsKKyAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CisgICAgCisgICAgaXNDZWxsLmxpbmso
dGhpcyk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgcmVnVDEpOworICAgIHRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDEsIFN0cnVjdHVy
ZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQpLCByZWdUMCk7CisgICAgCisgICAgZG9uZS5saW5rKHRoaXMpOworICAgIGVtaXRTdG9y
ZUJvb2woZHN0LCByZWdUMCk7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX2lzX2Jvb2xlYW4oSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICB1bnNpZ25lZCBkc3QgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIHZhbHVlID0gY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICAKKyAgICBlbWl0TG9hZFRhZyh2YWx1ZSwg
cmVnVDApOworICAgIGNvbXBhcmUzMihFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpCb29sZWFuVGFnKSwgcmVnVDApOworICAgIGVtaXRTdG9yZUJvb2woZHN0LCByZWdUMCk7Cit9
CisKIHZvaWQgSklUOjplbWl0X29wX3RlYXJfb2ZmX2FjdGl2YXRpb24oSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICB1bnNpZ25lZCBhY3RpdmF0aW9uID0gY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMTEzODI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDY1LDYgKzQ2NSwzOCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKEluc3RydWN0aW9uCiAgICAgZW1pdFB1dFZpcnR1
YWxSZWdpc3Rlcihkc3QpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9pc191bmRlZmluZWQoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICB1bnNpZ25lZCBkc3QgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIHZhbHVlID0gY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICAKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKHZhbHVlLCByZWdUMCk7CisgICAgSnVtcCBpc0NlbGwgPSBlbWl0SnVtcElmSlNDZWxsKHJl
Z1QwKTsKKworICAgIGNvbXBhcmVQdHIoRXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoVmFsdWVV
bmRlZmluZWQpLCByZWdUMCk7CisgICAgSnVtcCBkb25lID0ganVtcCgpOworICAgIAorICAgIGlz
Q2VsbC5saW5rKHRoaXMpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIHJlZ1QxKTsKKyAgICB0ZXN0OChOb25aZXJvLCBBZGRyZXNzKHJlZ1Qx
LCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkKSwgcmVnVDApOworICAgIAorICAgIGRvbmUubGluayh0aGlzKTsKKyAg
ICBlbWl0VGFnQXNCb29sSW1tZWRpYXRlKHJlZ1QwKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lz
dGVyKGRzdCk7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX2lzX2Jvb2xlYW4oSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIHZhbHVlID0gY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZDsKKyAgICAKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVl
LCByZWdUMCk7CisgICAgeG9yUHRyKFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihW
YWx1ZUZhbHNlKSksIHJlZ1QwKTsKKyAgICB0ZXN0UHRyKFplcm8sIHJlZ1QwLCBUcnVzdGVkSW1t
MzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4ofjEpKSwgcmVnVDApOworICAgIGVtaXRUYWdBc0Jvb2xJ
bW1lZGlhdGUocmVnVDApOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKK30KKwog
dm9pZCBKSVQ6OmVtaXRfb3BfY2FsbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewogICAgIGNvbXBpbGVPcENhbGwob3BfY2FsbCwgY3VycmVudEluc3RydWN0aW9uLCBtX2NhbGxM
aW5rSW5mb0luZGV4KyspOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxMTM4MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MDIsMTkg
KzcwMiw2IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90eXBlb2YpCiAgICAgTExJ
TlRfUkVUVVJOKGpzVHlwZVN0cmluZ0ZvclZhbHVlKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1
ZSgpKSk7CiB9CiAKLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pc191bmRlZmluZWQp
Ci17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBKU1ZhbHVlIHYgPSBMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKTsKLSAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKHYuaXNDZWxsKCkgPyB2LmFzQ2Vs
bCgpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKCkgOiB2
LmlzVW5kZWZpbmVkKCkpKTsKLX0KLQotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2lz
X2Jvb2xlYW4pCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBMTElOVF9SRVRVUk4oanNCb29s
ZWFuKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLmlzQm9vbGVhbigpKSk7Ci19Ci0KIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pc19udW1iZXIpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCShy
ZXZpc2lvbiAxMTM4MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDggKzEzMiw2IEBAIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9iaXR4b3IpOwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2NoZWNrX2hhc19pbnN0YW5jZSk7CiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW5z
dGFuY2VvZik7CiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdHlwZW9mKTsKLUxMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pc191bmRlZmluZWQpOwotTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2lzX2Jvb2xlYW4pOwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2lzX251bWJlcik7CiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXNfc3RyaW5n
KTsKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pc19vYmplY3QpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20JKHJldmlzaW9uIDExMzgyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAs
NiArMjAwLDE5IEBAIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGUoaW5kZXgsIHRhZywKIC5k
b25lOgogZW5kCiAKK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVUYWcoaW5kZXgsIHRhZykK
KyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQK
KyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHRhZworICAgIGptcCAuZG9uZQor
LmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2FkCisgICAgbG9hZHAg
Q29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3BheWxv
YWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBp
bmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAorICAg
ICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFu
dFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgbG9hZHAgVGFnT2Zmc2V0W3BheWxvYWQsIGluZGV4
LCA4XSwgdGFnCisuZG9uZToKK2VuZAorCiAjIEluZGV4IGFuZCBwYXlsb2FkIG1heSBiZSB0aGUg
c2FtZSByZWdpc3Rlci4gSW5kZXggbWF5IGJlIGNsb2JiZXJlZC4KIG1hY3JvIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUyUmVnKGluZGV4LCB0YWcsIHBheWxvYWQpCiAgICAgYmlndGVxIGluZGV4LCBG
aXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CkBAIC04NjIsNiArODc1LDM0IEBA
IF9sbGludF9vcF9pbnN0YW5jZW9mOgogICAgIGRpc3BhdGNoKDUpCiAKIAorX2xsaW50X29wX2lz
X3VuZGVmaW5lZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisg
ICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQz
KQorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBiaWVx
IHQyLCBDZWxsVGFnLCAub3BJc1VuZGVmaW5lZENlbGwKKyAgICBjaWVxIHQyLCBVbmRlZmluZWRU
YWcsIHQzCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlz
cGF0Y2goMykKKy5vcElzVW5kZWZpbmVkQ2VsbDoKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0
dXJlW3QzXSwgdDEKKyAgICB0Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjpt
X2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBzdG9yZWkgdDEsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9p
c19ib29sZWFuOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAg
ICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlVGFnKHQxLCB0MCkK
KyAgICBjaWVxIHQwLCBCb29sZWFuVGFnLCB0MAorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdP
ZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0Miwg
OF0KKyAgICBkaXNwYXRjaCgzKQorCisKIG1hY3JvIHJlc29sdmVHbG9iYWwoc2l6ZSwgc2xvdykK
ICAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgogICAgICMgNFtQQ10gICBEZXN0aW5hdGlv
biBmb3IgdGhlIGxvYWQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMTEzODI4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtp
bmcgY29weSkKQEAgLTczMiw2ICs3MzIsMzYgQEAgX2xsaW50X29wX2luc3RhbmNlb2Y6CiAgICAg
ZGlzcGF0Y2goNSkKIAogCitfbGxpbnRfb3BfaXNfdW5kZWZpbmVkOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaXMgMTZbUEIsIFBDLCA4XSwgdDEKKyAgICBsb2FkaXMgOFtQQiwgUEMs
IDhdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQwKQorICAgIGJ0cHogdDAs
IHRhZ01hc2ssIC5vcElzVW5kZWZpbmVkQ2VsbAorICAgIGNwZXEgdDAsIFZhbHVlVW5kZWZpbmVk
LCB0MworICAgIG9ycCBWYWx1ZUZhbHNlLCB0MworICAgIHN0b3JlcCB0MywgW2NmciwgdDIsIDhd
CisgICAgZGlzcGF0Y2goMykKKy5vcElzVW5kZWZpbmVkQ2VsbDoKKyAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICB0Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5
cGVJbmZvOjptX2ZsYWdzW3QwXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBvcnAg
VmFsdWVGYWxzZSwgdDEKKyAgICBzdG9yZXAgdDEsIFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNo
KDMpCisKKworX2xsaW50X29wX2lzX2Jvb2xlYW46CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpcyAxNltQQiwgUEMsIDhdLCB0MQorICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQyCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDApCisgICAgeG9ycCBWYWx1ZUZhbHNlLCB0
MAorICAgIHRweiB0MCwgfjEsIHQwCisgICAgb3JwIFZhbHVlRmFsc2UsIHQwCisgICAgc3RvcmVw
IHQwLCBbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKIG1hY3JvIHJlc29sdmVHbG9i
YWwoc2l6ZSwgc2xvdykKICAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgogICAgICMgOFtQ
QiwgUEMsIDhdICAgRGVzdGluYXRpb24gZm9yIHRoZSBsb2FkLgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNp
b24gMTEzODI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC00MjMsMTggKzQyMyw2IEBAIF9sbGludF9vcF90
eXBlb2Y6CiAgICAgZGlzcGF0Y2goMykKIAogCi1fbGxpbnRfb3BfaXNfdW5kZWZpbmVkOgotICAg
IHRyYWNlRXhlY3V0aW9uKCkKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pc191
bmRlZmluZWQpCi0gICAgZGlzcGF0Y2goMykKLQotCi1fbGxpbnRfb3BfaXNfYm9vbGVhbjoKLSAg
ICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXNf
Ym9vbGVhbikKLSAgICBkaXNwYXRjaCgzKQotCi0KIF9sbGludF9vcF9pc19udW1iZXI6CiAgICAg
dHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2lzX251
bWJlcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCShy
ZXZpc2lvbiAxMTM4MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12
Ny5yYgkod29ya2luZyBjb3B5KQpAQCAtNTY4LDcgKzU2OCw3IEBAIGRlZiBhcm1WN0xvd2VyUmVn
aXN0ZXJSZXVzZShsaXN0KQogICAgICAgICAgICAgY2FzZSBub2RlLm9wY29kZQogICAgICAgICAg
ICAgd2hlbiAiY2llcSIsICJjaW5lcSIsICJjaWEiLCAiY2lhZXEiLCAiY2liIiwgImNpYmVxIiwg
ImNpZ3QiLCAiY2lndGVxIiwgImNpbHQiLCAiY2lsdGVxIiwKICAgICAgICAgICAgICAgICAiY3Bl
cSIsICJjcG5lcSIsICJjcGEiLCAiY3BhZXEiLCAiY3BiIiwgImNwYmVxIiwgImNwZ3QiLCAiY3Bn
dGVxIiwgImNwbHQiLCAiY3BsdGVxIiwKLSAgICAgICAgICAgICAgICAidGlvIiwgInRpcyIsICJ0
aXoiLCAidGlueiIsICJ0Ym8iLCAidGJzIiwgInRieiIsICJ0Ym56IgorICAgICAgICAgICAgICAg
ICJ0aW8iLCAidGlzIiwgInRpeiIsICJ0aW56IiwgInRibyIsICJ0YnMiLCAidGJ6IiwgInRibnoi
LCAidHBvIiwgInRwcyIsICJ0cHoiLCAidHBueiIKICAgICAgICAgICAgICAgICBpZiBub2RlLm9w
ZXJhbmRzLnNpemUgPT0gMgogICAgICAgICAgICAgICAgICAgICBpZiBub2RlLm9wZXJhbmRzWzBd
ID09IG5vZGUub3BlcmFuZHNbMV0KICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFRtcC5u
ZXcobm9kZS5jb2RlT3JpZ2luLCA6Z3ByKQpAQCAtOTY4LDEzICs5NjgsMTMgQEAgY2xhc3MgSW5z
dHJ1Y3Rpb24KICAgICAgICAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJsdCIpCiAg
ICAgICAgIHdoZW4gImNpbHRlcSIsICJjcGx0ZXEiCiAgICAgICAgICAgICBlbWl0QXJtVjdDb21w
YXJlKG9wZXJhbmRzLCAibGUiKQotICAgICAgICB3aGVuICJ0aW8iLCAidGJvIgorICAgICAgICB3
aGVuICJ0aW8iLCAidGJvIiwgInRwbyIKICAgICAgICAgICAgIGVtaXRBcm1WN1Rlc3RTZXQob3Bl
cmFuZHMsICJ2cyIpCi0gICAgICAgIHdoZW4gInRpcyIsICJ0YnMiCisgICAgICAgIHdoZW4gInRp
cyIsICJ0YnMiLCAidHBzIgogICAgICAgICAgICAgZW1pdEFybVY3VGVzdFNldChvcGVyYW5kcywg
Im1pIikKLSAgICAgICAgd2hlbiAidGl6IiwgInRieiIKKyAgICAgICAgd2hlbiAidGl6IiwgInRi
eiIsICJ0cHoiCiAgICAgICAgICAgICBlbWl0QXJtVjdUZXN0U2V0KG9wZXJhbmRzLCAiZXEiKQot
ICAgICAgICB3aGVuICJ0aW56IiwgInRibnoiCisgICAgICAgIHdoZW4gInRpbnoiLCAidGJueiIs
ICJ0cG56IgogICAgICAgICAgICAgZW1pdEFybVY3VGVzdFNldChvcGVyYW5kcywgIm5lIikKICAg
ICAgICAgd2hlbiAicGVlayIKICAgICAgICAgICAgICRhc20ucHV0cyAibGRyICN7b3BlcmFuZHNb
MV0uYXJtVjdPcGVyYW5kfSwgW3NwLCBcIyN7b3BlcmFuZHNbMF0udmFsdWUgKiA0fV0iCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJi
CShyZXZpc2lvbiAxMTM4MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9p
bnN0cnVjdGlvbnMucmIJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw2ICsxNTEsMTAgQEAgTUFDUk9f
SU5TVFJVQ1RJT05TID0KICAgICAgInRicyIsCiAgICAgICJ0YnoiLAogICAgICAidGJueiIsCisg
ICAgICJ0cG8iLAorICAgICAidHBzIiwKKyAgICAgInRweiIsCisgICAgICJ0cG56IiwKICAgICAg
InBlZWsiLAogICAgICAicG9rZSIsCiAgICAgICJicGVxIiwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlzaW9uIDExMzgyOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgkod29ya2luZyBjb3B5KQpAQCAtOTQzLDYgKzk0
MywxNCBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgaGFuZGxlWDg2U2V0VGVzdCgi
c2V0eiIsIDppbnQpCiAgICAgICAgIHdoZW4gInRpbnoiCiAgICAgICAgICAgICBoYW5kbGVYODZT
ZXRUZXN0KCJzZXRueiIsIDppbnQpCisgICAgICAgIHdoZW4gInRwbyIKKyAgICAgICAgICAgIGhh
bmRsZVg4NlNldFRlc3QoInNldG8iLCA6cHRyKQorICAgICAgICB3aGVuICJ0cHMiCisgICAgICAg
ICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRzIiwgOnB0cikKKyAgICAgICAgd2hlbiAidHB6Igor
ICAgICAgICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0eiIsIDpwdHIpCisgICAgICAgIHdoZW4g
InRwbnoiCisgICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRueiIsIDpwdHIpCiAgICAg
ICAgIHdoZW4gInRibyIKICAgICAgICAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG8iLCA6Ynl0
ZSkKICAgICAgICAgd2hlbiAidGJzIgo=
</data>
<flag name="commit-queue"
          id="141504"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136757</attachid>
            <date>2012-04-11 14:36:31 -0700</date>
            <delta_ts>2012-04-11 15:40:15 -0700</delta_ts>
            <desc>ready for review but still needs a bit more love</desc>
            <filename>opisfoo_patch_3.diff</filename>
            <type>text/plain</type>
            <size>45610</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTEzOTA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc2IEBA
CisyMDEyLTA0LTExICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
b3BfaXNfZm9vIHNob3VsZCBiZSBvcHRpbWl6ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNjY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisgICAgICAgIAorICAgICAgICBXb3JrIGluIHByb2dyZXNzLiBTdGlsbCBuZWVk
IHRvIHRlc3QgdmFyaW91cyBwbGF0Zm9ybXMuCisgICAgICAgIAorICAgICAgICBUaGlzIGltcGxl
bWVudHMgaW5saW5pbmcgb2Ygb3BfaXNfdW5kZWZpbmVkLCBvcF9pc19zdHJpbmcsIG9wX2lzX251
bWJlciwKKyAgICAgICAgYW5kIG9wX2lzX2Jvb2xlYW4gaW4gTExJbnQgYW5kIHRoZSBiYXNlbGlu
ZSBKSVQuIG9wX2lzX29iamVjdCBhbmQKKyAgICAgICAgb3BfaXNfZnVuY3Rpb24gYXJlIG5vdCBp
bmxpbmVkIGJlY2F1c2UgdGhleSBhcmUgcXVpdGUgYSBiaXQgbW9yZSBjb21wbGV4LgorICAgICAg
ICAKKyAgICAgICAgVGhpcyBhbHNvIGltcGxlbWVudHMgYWxsIG9mIHRoZSBvcF9pc19mb28gb3Bj
b2RlcyBpbiB0aGUgREZHLCBidXQgaXQgZG9lcworICAgICAgICBub3QgZG8gYW55IHR5cGUgcHJv
ZmlsaW5nIGJhc2VkIG9wdGltaXphdGlvbnMsIHlldC4KKworICAgICAgICAqIGFzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbjo6Y29tcGFyZTgpOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJYODZDb21tb24pOgor
ICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAoTWFj
cm9Bc3NlbWJsZXJYODZfNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6
dGVzdFB0cik6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OmV4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRzKToKKyAgICAgICAgKENDYWxsSGVscGVy
cyk6CisgICAgICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpD
U0VQaGFzZTo6cGVyZm9ybU5vZGVDU0UpOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2RlKToKKyAgICAgICAgKiBkZmcv
REZHTm9kZVR5cGUuaDoKKyAgICAgICAgKERGRyk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9w
ZXJhdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmFwcGVuZENhbGxT
ZXRSZXN1bHQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklU
Ojpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAg
IChKSVQpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2lzX3VuZGVmaW5lZCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfaXNfYm9vbGVhbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc19u
dW1iZXIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfc3RyaW5nKToKKyAgICAgICAg
KiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lz
X3VuZGVmaW5lZCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
aXNfYm9vbGVhbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc19udW1iZXIpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfc3RyaW5nKToKKyAgICAgICAgKiBsbGludC9MTElu
dFNsb3dQYXRocy5jcHA6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQvTExJbnRT
bG93UGF0aHMuaDoKKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAg
ICogb2ZmbGluZWFzbS9hcm12Ny5yYjoKKyAgICAgICAgKiBvZmZsaW5lYXNtL2luc3RydWN0aW9u
cy5yYjoKKyAgICAgICAgKiBvZmZsaW5lYXNtL3g4Ni5yYjoKKwogMjAxMi0wNC0xMSAgRmlsaXAg
UGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEdsb2JhbCB2YXJpYWJsZSBwcmVk
aWN0aW9ucyBzaG91bGQgbm90IGJlIGNvYWxlc2NlZCB1bm5lY2Vzc2FyaWx5CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbi5oCShyZXZpc2lvbiAxMTM4MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEz
NTMsNiArMTM1MywxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnJldCgpOwogICAg
IH0KIAorICAgIHZvaWQgY29tcGFyZTgoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNz
IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuY21wYl9pbShyaWdodC5tX3ZhbHVlLCBsZWZ0Lm9mZnNldCwgbGVmdC5i
YXNlKTsKKyAgICAgICAgc2V0MzIoeDg2Q29uZGl0aW9uKGNvbmQpLCBkZXN0KTsKKyAgICB9Cisg
ICAgCiAgICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLmNtcGxfcnIocmlnaHQsIGxlZnQpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAko
cmV2aXNpb24gMTEzODI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4Nl82NC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MDIsNyArNDAyLDcgQEAgcHVi
bGljOgogICAgICAgICBtX2Fzc2VtYmxlci50ZXN0cV9ycihyZWcsIG1hc2spOwogICAgICAgICBy
ZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7CiAgICAgfQot
CisgICAgCiAgICAgSnVtcCBicmFuY2hUZXN0UHRyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIHJlZywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQogICAgIHsK
ICAgICAgICAgLy8gaWYgd2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgbG93IHNldmVuIGJp
dHMsIHRoaXMgY2FuIGJlIHRlc3RlZCB3aXRoIGEgdGVzdGIKQEAgLTQxNSw2ICs0MTUsMjMgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9u
KGNvbmQpKSk7CiAgICAgfQogCisgICAgdm9pZCB0ZXN0UHRyKFJlc3VsdENvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIHJlZywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIGlmIChtYXNrLm1fdmFsdWUgPT0gLTEpCisgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci50ZXN0cV9ycihyZWcsIHJlZyk7CisgICAgICAgIGVsc2UgaWYgKChtYXNrLm1fdmFsdWUg
JiB+MHg3ZikgPT0gMCkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3RiX2k4cihtYXNrLm1f
dmFsdWUsIHJlZyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3Rx
X2kzMnIobWFzay5tX3ZhbHVlLCByZWcpOworICAgICAgICBzZXQzMih4ODZDb25kaXRpb24oY29u
ZCksIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgdGVzdFB0cihSZXN1bHRDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCByZWcsIFJlZ2lzdGVySUQgbWFzaywgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIudGVzdHFfcnIocmVnLCBtYXNrKTsKKyAgICAgICAgc2V0
MzIoeDg2Q29uZGl0aW9uKGNvbmQpLCBkZXN0KTsKKyAgICB9CisKICAgICBKdW1wIGJyYW5jaFRl
c3RQdHIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBUcnVz
dGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCiAgICAgewogICAgICAgICBsb2FkUHRy
KGFkZHJlc3MubV9wdHIsIHNjcmF0Y2hSZWdpc3Rlcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDExMzgyOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwMyw2ICs0MDMsMTYgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVu
c2lnbmVkIGluZAogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RCb29sZWFu
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgICAgICAKKyAgICBjYXNlIElzVW5kZWZpbmVk
OgorICAgIGNhc2UgSXNCb29sZWFuOgorICAgIGNhc2UgSXNOdW1iZXI6CisgICAgY2FzZSBJc1N0
cmluZzoKKyAgICBjYXNlIElzT2JqZWN0OgorICAgIGNhc2UgSXNGdW5jdGlvbjogeworICAgICAg
ICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RCb29sZWFuKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQogICAgICAgICAgICAgCiAgICAgY2FzZSBDb21wYXJlTGVzczoKICAgICBjYXNlIENv
bXBhcmVMZXNzRXE6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTEzODI4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MjcsNiAr
MTcyNyw0MiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAg
ICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgYWRkVG9HcmFwaChJ
bnN0YW5jZU9mLCB2YWx1ZSwgYmFzZVZhbHVlLCBwcm90b3R5cGUpKTsKICAgICAgICAgICAgIE5F
WFRfT1BDT0RFKG9wX2luc3RhbmNlb2YpOwogICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgY2FzZSBvcF9pc191bmRlZmluZWQ6IHsKKyAgICAgICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9
IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIHNldChj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBhZGRUb0dyYXBoKElzVW5kZWZpbmVkLCB2
YWx1ZSkpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaXNfdW5kZWZpbmVkKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGNhc2Ugb3BfaXNfYm9vbGVhbjogeworICAgICAgICAgICAgTm9kZUlu
ZGV4IHZhbHVlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAg
ICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGFkZFRvR3JhcGgoSXNC
b29sZWFuLCB2YWx1ZSkpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaXNfYm9vbGVhbik7
CisgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX2lzX251bWJlcjogeworICAgICAgICAgICAg
Tm9kZUluZGV4IHZhbHVlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwor
ICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGFkZFRvR3Jh
cGgoSXNOdW1iZXIsIHZhbHVlKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pc19udW1i
ZXIpOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9pc19zdHJpbmc6IHsKKyAgICAgICAg
ICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5k
KTsKKyAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBhZGRU
b0dyYXBoKElzU3RyaW5nLCB2YWx1ZSkpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaXNf
c3RyaW5nKTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfaXNfb2JqZWN0OiB7CisgICAg
ICAgICAgICBOb2RlSW5kZXggdmFsdWUgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3Bl
cmFuZCk7CisgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwg
YWRkVG9HcmFwaChJc09iamVjdCwgdmFsdWUpKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X2lzX29iamVjdCk7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX2lzX2Z1bmN0aW9uOiB7
CisgICAgICAgICAgICBOb2RlSW5kZXggdmFsdWUgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzJd
LnUub3BlcmFuZCk7CisgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCwgYWRkVG9HcmFwaChJc0Z1bmN0aW9uLCB2YWx1ZSkpOworICAgICAgICAgICAgTkVYVF9P
UENPREUob3BfaXNfZnVuY3Rpb24pOworICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9ub3Q6
IHsKICAgICAgICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxI
ZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2Fs
bEhlbHBlcnMuaAkocmV2aXNpb24gMTEzODI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDQ2FsbEhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNiArODIsMTIgQEAgcHVi
bGljOgogICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CiAgICAgfQogCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEdQUlJlZyBhcmcxKQorICAgIHsKKyAgICAgICAg
cmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAg
ICB9CisKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CkBAIC0z
ODYsNiArMzkyLDExIEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAorICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhHUFJSZWcgYXJnMSkKKyAgICB7CisgICAgICAgIG1vdmUo
YXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHMoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAg
ICAgICAgc2V0dXBUd29TdHViQXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFy
Z3VtZW50R1BSMT4oYXJnMSwgYXJnMik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NTRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NTRVBoYXNlLmNwcAkocmV2aXNpb24gMTEzODI4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4OCw2ICs1ODgsMTIg
QEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CiAgICAgICAgIGNhc2UgU3Ry
aW5nQ2hhckNvZGVBdDoKICAgICAgICAgY2FzZSBJbnQzMlRvRG91YmxlOgorICAgICAgICBjYXNl
IElzVW5kZWZpbmVkOgorICAgICAgICBjYXNlIElzQm9vbGVhbjoKKyAgICAgICAgY2FzZSBJc051
bWJlcjoKKyAgICAgICAgY2FzZSBJc1N0cmluZzoKKyAgICAgICAgY2FzZSBJc09iamVjdDoKKyAg
ICAgICAgY2FzZSBJc0Z1bmN0aW9uOgogICAgICAgICAgICAgc2V0UmVwbGFjZW1lbnQocHVyZUNT
RShub2RlKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAxMTM4Mjgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC05Niw2ICs5NiwxMiBAQCBpbmxpbmUgYm9vbCBjYW5Db21waWxlT3Bjb2RlKE9w
Y29kZUlEIG9wCiAgICAgY2FzZSBvcF9tb3Y6CiAgICAgY2FzZSBvcF9jaGVja19oYXNfaW5zdGFu
Y2U6CiAgICAgY2FzZSBvcF9pbnN0YW5jZW9mOgorICAgIGNhc2Ugb3BfaXNfdW5kZWZpbmVkOgor
ICAgIGNhc2Ugb3BfaXNfYm9vbGVhbjoKKyAgICBjYXNlIG9wX2lzX251bWJlcjoKKyAgICBjYXNl
IG9wX2lzX3N0cmluZzoKKyAgICBjYXNlIG9wX2lzX29iamVjdDoKKyAgICBjYXNlIG9wX2lzX2Z1
bmN0aW9uOgogICAgIGNhc2Ugb3Bfbm90OgogICAgIGNhc2Ugb3BfbGVzczoKICAgICBjYXNlIG9w
X2xlc3NlcToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJl
dmlzaW9uIDExMzgyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDYgKzE3MCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oQnJlYWtwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5v
ZGVDbG9iYmVyc1dvcmxkKSBcCiAgICAgbWFjcm8oQ2hlY2tIYXNJbnN0YW5jZSwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAogICAgIG1hY3JvKEluc3RhbmNlT2YsIE5vZGVSZXN1bHRCb29sZWFuKSBcCisg
ICAgbWFjcm8oSXNVbmRlZmluZWQsIE5vZGVSZXN1bHRCb29sZWFuKSBcCisgICAgbWFjcm8oSXNC
b29sZWFuLCBOb2RlUmVzdWx0Qm9vbGVhbikgXAorICAgIG1hY3JvKElzTnVtYmVyLCBOb2RlUmVz
dWx0Qm9vbGVhbikgXAorICAgIG1hY3JvKElzU3RyaW5nLCBOb2RlUmVzdWx0Qm9vbGVhbikgXAor
ICAgIG1hY3JvKElzT2JqZWN0LCBOb2RlUmVzdWx0Qm9vbGVhbikgXAorICAgIG1hY3JvKElzRnVu
Y3Rpb24sIE5vZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oTG9naWNhbE5vdCwgTm9kZVJl
c3VsdEJvb2xlYW4gfCBOb2RlTWlnaHRDbG9iYmVyKSBcCiAgICAgbWFjcm8oVG9QcmltaXRpdmUs
IE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAog
ICAgIG1hY3JvKFN0ckNhdCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVI
YXNWYXJBcmdzIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTEzODI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTA0OSw3ICsxMDQ5LDE3IEBAIEpTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5j
dGkKICAgICByZXR1cm4gZnVuY3Rpb247CiB9CiAKLWRvdWJsZSBvcGVyYXRpb25GTW9kT25JbnRz
KGludDMyX3QgYSwgaW50MzJfdCBiKQorc2l6ZV90IERGR19PUEVSQVRJT04gb3BlcmF0aW9uSXNP
YmplY3QoRW5jb2RlZEpTVmFsdWUgdmFsdWUpCit7CisgICAgcmV0dXJuIGpzSXNPYmplY3RUeXBl
KEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkpOworfQorCitzaXplX3QgREZHX09QRVJBVElPTiBvcGVy
YXRpb25Jc0Z1bmN0aW9uKEVuY29kZWRKU1ZhbHVlIHZhbHVlKQoreworICAgIHJldHVybiBqc0lz
RnVuY3Rpb25UeXBlKEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkpOworfQorCitkb3VibGUgREZHX09Q
RVJBVElPTiBvcGVyYXRpb25GTW9kT25JbnRzKGludDMyX3QgYSwgaW50MzJfdCBiKQogewogICAg
IHJldHVybiBmbW9kKGEsIGIpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDExMzgyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4NSw3IEBAIHR5
cGVkZWYgaW50MzJfdCBERkdfT1BFUkFUSU9OICgqWl9ERkdPcGUKIHR5cGVkZWYgc2l6ZV90IERG
R19PUEVSQVRJT04gKCpTX0RGR09wZXJhdGlvbl9FQ0MpKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEpT
Q2VsbCopOwogdHlwZWRlZiBzaXplX3QgREZHX09QRVJBVElPTiAoKlNfREZHT3BlcmF0aW9uX0VK
KShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIHNpemVfdCBERkdfT1BFUkFU
SU9OICgqU19ERkdPcGVyYXRpb25fRUpKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUpOwordHlwZWRlZiBzaXplX3QgREZHX09QRVJBVElPTiAoKlNfREZHT3BlcmF0
aW9uX0opKEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgdm9pZCBERkdfT1BFUkFUSU9OICgqVl9E
RkdPcGVyYXRpb25fRUFaSikoRXhlY1N0YXRlKiwgSlNBcnJheSosIGludDMyX3QsIEVuY29kZWRK
U1ZhbHVlKTsKIHR5cGVkZWYgdm9pZCBERkdfT1BFUkFUSU9OICgqVl9ERkdPcGVyYXRpb25fRUNK
SikoRXhlY1N0YXRlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsK
IHR5cGVkZWYgdm9pZCBERkdfT1BFUkFUSU9OICgqVl9ERkdPcGVyYXRpb25fRUpDSSkoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEpTQ2VsbCosIElkZW50aWZpZXIqKTsKQEAgLTE1Niw3ICsx
NTcsOSBAQCBKU0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQWN0CiB2b2lkIERG
R19PUEVSQVRJT04gb3BlcmF0aW9uVGVhck9mZkFjdGl2YXRpb24oRXhlY1N0YXRlKiwgSlNDZWxs
Kik7CiBKU0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb24oRXhlY1N0YXRl
KiwgSlNDZWxsKik7CiBKU0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb25F
eHByZXNzaW9uKEV4ZWNTdGF0ZSosIEpTQ2VsbCopOwotZG91YmxlIG9wZXJhdGlvbkZNb2RPbklu
dHMoaW50MzJfdCwgaW50MzJfdCk7Citkb3VibGUgREZHX09QRVJBVElPTiBvcGVyYXRpb25GTW9k
T25JbnRzKGludDMyX3QsIGludDMyX3QpOworc2l6ZV90IERGR19PUEVSQVRJT04gb3BlcmF0aW9u
SXNPYmplY3QoRW5jb2RlZEpTVmFsdWUpOworc2l6ZV90IERGR19PUEVSQVRJT04gb3BlcmF0aW9u
SXNGdW5jdGlvbihFbmNvZGVkSlNWYWx1ZSk7CiAKIC8vIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8g
bG9va3VwIGFuIGV4Y2VwdGlvbiBoYW5kZXIsIGtleWVkIGJ5IGZhdWx0TG9jYXRpb24sIHdoaWNo
IGlzCiAvLyB0aGUgcmV0dXJuIGxvY2F0aW9uIGZyb20gb25lIG9mIHRoZSBjYWxscyBvdXQgdG8g
b25lIG9mIHRoZSBoZWxwZXIgb3BlcmF0aW9ucyBhYm92ZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwCShyZXZpc2lvbiAxMTM4MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc5LDcg
KzM3OSwxMyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENvbXBhcmVHcmVhdGVyRXE6CiAgICAg
ICAgIGNhc2UgQ29tcGFyZUVxOgogICAgICAgICBjYXNlIENvbXBhcmVTdHJpY3RFcToKLSAgICAg
ICAgY2FzZSBJbnN0YW5jZU9mOiB7CisgICAgICAgIGNhc2UgSW5zdGFuY2VPZjoKKyAgICAgICAg
Y2FzZSBJc1VuZGVmaW5lZDoKKyAgICAgICAgY2FzZSBJc0Jvb2xlYW46CisgICAgICAgIGNhc2Ug
SXNOdW1iZXI6CisgICAgICAgIGNhc2UgSXNTdHJpbmc6CisgICAgICAgIGNhc2UgSXNPYmplY3Q6
CisgICAgICAgIGNhc2UgSXNGdW5jdGlvbjogewogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQ
cmVkaWN0aW9uKFByZWRpY3RCb29sZWFuKTsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VE
ZWZhdWx0RmxhZ3Mobm9kZSk7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2
aXNpb24gMTEzODI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU5Miw2ICszNTkyLDg1IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCisgICAgY2FzZSBJc1VuZGVmaW5lZDogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1
ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlz
KTsKKyAgICAgICAgCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzQ2VsbCA9IG1faml0LmJy
YW5jaDMyKEpJVENvbXBpbGVyOjpFcXVhbCwgdmFsdWUudGFnR1BSKCksIEpJVENvbXBpbGVyOjpU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOworICAgICAgICAKKyAgICAgICAgbV9qaXQu
Y29tcGFyZTMyKEpJVENvbXBpbGVyOjpFcXVhbCwgdmFsdWUudGFnR1BSKCksIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpVbmRlZmluZWRUYWcpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOworICAgICAgICAKKyAgICAgICAgaXNDZWxs
LmxpbmsoJm1faml0KTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVz
cyh2YWx1ZS5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZXN1bHQu
Z3ByKCkpOworICAgICAgICBtX2ppdC50ZXN0OChKSVRDb21waWxlcjo6Tm9uWmVybywgSklUQ29t
cGlsZXI6OkFkZHJlc3MocmVzdWx0LmdwcigpLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZz
ZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSwgcmVzdWx0Lmdwcigp
KTsKKyAgICAgICAgCisgICAgICAgIGRvbmUubGluaygmbV9qaXQpOworICAgICAgICBib29sZWFu
UmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jb21waWxlSW5kZXgpOworICAgICAgICBicmVhazsKKyAg
ICB9CisKKyAgICBjYXNlIElzQm9vbGVhbjogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1
ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlz
LCB2YWx1ZSk7CisgICAgICAgIAorICAgICAgICBtX2ppdC5jb21wYXJlMzIoSklUQ29tcGlsZXI6
OkVxdWFsLCB2YWx1ZS50YWdHUFIoKSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpCb29sZWFuVGFnKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgYm9vbGVhblJlc3VsdChyZXN1
bHQuZ3ByKCksIG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
Y2FzZSBJc051bWJlcjogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2Rl
LmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCB2YWx1ZSk7Cisg
ICAgICAgIAorICAgICAgICBtX2ppdC5hZGQzMihUcnVzdGVkSW1tMzIoMSksIHZhbHVlLnRhZ0dQ
UigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBtX2ppdC5jb21wYXJlMzIoSklUQ29tcGlsZXI6
OkJlbG93LCByZXN1bHQuZ3ByKCksIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
TG93ZXN0VGFnICsgMSksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIGJvb2xlYW5SZXN1bHQocmVz
dWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAg
IGNhc2UgSXNTdHJpbmc6IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9k
ZS5jaGlsZDEoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgdmFsdWUpOwor
ICAgICAgICAKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOb3RDZWxsID0gbV9qaXQuYnJh
bmNoMzIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCB2YWx1ZS50YWdHUFIoKSwgSklUQ29tcGlsZXI6
OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CisgICAgICAgIAorICAgICAgICBtX2pp
dC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHZhbHVlLnBheWxvYWRHUFIoKSwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0LmNvbXBh
cmU4KEpJVENvbXBpbGVyOjpFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0Lmdwcigp
LCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKFN0cmluZ1R5
cGUpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0ganVt
cCgpOworICAgICAgICAKKyAgICAgICAgaXNOb3RDZWxsLmxpbmsoJm1faml0KTsKKyAgICAgICAg
bV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIAorICAg
ICAgICBkb25lLmxpbmsoJm1faml0KTsKKyAgICAgICAgYm9vbGVhblJlc3VsdChyZXN1bHQuZ3By
KCksIG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBJ
c09iamVjdDogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxk
MSgpKTsKKyAgICAgICAgR1BSUmVnIHZhbHVlVGFnR1BSID0gdmFsdWUudGFnR1BSKCk7CisgICAg
ICAgIEdQUlJlZyB2YWx1ZVBheWxvYWRHUFIgPSB2YWx1ZS5wYXlsb2FkR1BSKCk7CisgICAgICAg
IEdQUlJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1
bHQuZ3ByKCk7CisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uSXNPYmplY3QsIHJlc3VsdEdQUiwgdmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9h
ZEdQUik7CisgICAgICAgIGJvb2xlYW5SZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRl
eCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgSXNGdW5jdGlvbjogeworICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAg
R1BSUmVnIHZhbHVlVGFnR1BSID0gdmFsdWUudGFnR1BSKCk7CisgICAgICAgIEdQUlJlZyB2YWx1
ZVBheWxvYWRHUFIgPSB2YWx1ZS5wYXlsb2FkR1BSKCk7CisgICAgICAgIEdQUlJlc3VsdCByZXN1
bHQodGhpcyk7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAg
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSXNG
dW5jdGlvbiwgcmVzdWx0R1BSLCB2YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BSKTsKKyAgICAg
ICAgYm9vbGVhblJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBQaGk6CiAgICAgY2FzZSBGbHVzaDoKICAgICAgICAg
YnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDExMzgyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1NjMsNiAr
MzU2Myw5MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAg
ICAgIGNvbXBpbGVJbnN0YW5jZU9mKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAg
ICAgIAorICAgIGNhc2UgSXNVbmRlZmluZWQ6IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFs
dWUodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cyk7CisgICAgICAgIAorICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0NlbGwgPSBtX2ppdC5i
cmFuY2hUZXN0UHRyKEpJVENvbXBpbGVyOjpaZXJvLCB2YWx1ZS5ncHIoKSwgR1BSSW5mbzo6dGFn
TWFza1JlZ2lzdGVyKTsKKyAgICAgICAgCisgICAgICAgIG1faml0LmNvbXBhcmVQdHIoSklUQ29t
cGlsZXI6OkVxdWFsLCB2YWx1ZS5ncHIoKSwgVHJ1c3RlZEltbTMyKFZhbHVlVW5kZWZpbmVkKSwg
cmVzdWx0LmdwcigpKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1
bXAoKTsKKyAgICAgICAgCisgICAgICAgIGlzQ2VsbC5saW5rKCZtX2ppdCk7CisgICAgICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUuZ3ByKCksIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBtX2ppdC50ZXN0OChKSVRD
b21waWxlcjo6Tm9uWmVybywgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0LmdwcigpLCBTdHJ1
Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgCisgICAgICAgIGRvbmUubGluaygm
bV9qaXQpOworICAgICAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwgcmVz
dWx0LmdwcigpKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY29tcGls
ZUluZGV4LCBEYXRhRm9ybWF0SlNCb29sZWFuKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
ICAgICAKKyAgICBjYXNlIElzQm9vbGVhbjogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1
ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlz
LCB2YWx1ZSk7CisgICAgICAgIAorICAgICAgICBtX2ppdC5tb3ZlKHZhbHVlLmdwcigpLCByZXN1
bHQuZ3ByKCkpOworICAgICAgICBtX2ppdC54b3JQdHIoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0z
MihWYWx1ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgbV9qaXQudGVzdFB0cihKSVRD
b21waWxlcjo6WmVybywgcmVzdWx0LmdwcigpLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKHN0
YXRpY19jYXN0PGludDMyX3Q+KH4xKSksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0Lm9y
MzIoVHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBqc1Zh
bHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jb21waWxlSW5kZXgsIERhdGFGb3JtYXRKU0Jvb2xl
YW4pOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2UgSXNOdW1iZXI6
IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDEoKSk7Cisg
ICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgdmFsdWUpOworICAgICAgICAKKyAgICAg
ICAgbV9qaXQudGVzdFB0cihKSVRDb21waWxlcjo6Tm9uWmVybywgdmFsdWUuZ3ByKCksIEdQUklu
Zm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgbV9qaXQu
b3IzMihUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIGpz
VmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCwgRGF0YUZvcm1hdEpTQm9v
bGVhbik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBJc1N0cmlu
ZzogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsK
KyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCB2YWx1ZSk7CisgICAgICAgIAorICAg
ICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdENlbGwgPSBtX2ppdC5icmFuY2hUZXN0UHRyKEpJ
VENvbXBpbGVyOjpOb25aZXJvLCB2YWx1ZS5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVy
KTsKKyAgICAgICAgCisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3Mo
dmFsdWUuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZXN1bHQuZ3ByKCkpOwor
ICAgICAgICBtX2ppdC5jb21wYXJlOChKSVRDb21waWxlcjo6RXF1YWwsIEpJVENvbXBpbGVyOjpB
ZGRyZXNzKHJlc3VsdC5ncHIoKSwgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRy
dXN0ZWRJbW0zMihTdHJpbmdUeXBlKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgbV9qaXQub3Iz
MihUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CisgICAgICAgIAorICAgICAgICBpc05v
dENlbGwubGluaygmbV9qaXQpOworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihWYWx1
ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgCisgICAgICAgIGRvbmUubGluaygmbV9q
aXQpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jb21waWxlSW5kZXgs
IERhdGFGb3JtYXRKU0Jvb2xlYW4pOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAor
ICAgIGNhc2UgSXNPYmplY3Q6IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywg
bm9kZS5jaGlsZDEoKSk7CisgICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOwor
ICAgICAgICBHUFJSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BS
ID0gcmVzdWx0LmdwcigpOworICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbklzT2JqZWN0LCByZXN1bHRHUFIsIHZhbHVlR1BSKTsKKyAgICAg
ICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3VsdEdQUik7CisgICAg
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCwgRGF0YUZvcm1h
dEpTQm9vbGVhbik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgSXNGdW5jdGlv
bjogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsK
KyAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CisgICAgICAgIEdQUlJlc3Vs
dCByZXN1bHQodGhpcyk7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7
CisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uSXNGdW5jdGlvbiwgcmVzdWx0R1BSLCB2YWx1ZUdQUik7CisgICAgICAgIG1faml0Lm9yMzIo
VHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1bHRHUFIpOworICAgICAgICBqc1ZhbHVlUmVz
dWx0KHJlc3VsdC5ncHIoKSwgbV9jb21waWxlSW5kZXgsIERhdGFGb3JtYXRKU0Jvb2xlYW4pOwor
ICAgICAgICBicmVhazsKKyAgICB9CiAKICAgICBjYXNlIEZsdXNoOgogICAgIGNhc2UgUGhpOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAko
cmV2aXNpb24gMTEzODI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTc1LDYgKzExNzUsMTEgQEAgcHJpdmF0ZToK
ICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJ
bW1QdHIoY2VsbCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oU19ERkdPcGVyYXRpb25fSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHQsIEdQUlJlZyBhcmcxKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHMoYXJn
MSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKKyAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0RGR09wZXJh
dGlvbl9FSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwpAQCAtMTM2OCw2
ICsxMzczLDExIEBAIHByaXZhdGU6CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGNlbGwpKTsKICAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAg
IH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfREZHT3BlcmF0aW9uX0og
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXls
b2FkKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHMoYXJnMVBheWxvYWQsIGFy
ZzFUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19ERkdP
cGVyYXRpb25fRUogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMVRhZywgR1BS
UmVnIGFyZzFQYXlsb2FkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzFQYXlsb2FkLCBhcmcxVGFnKTsKQEAgLTE0NzIsNiArMTQ4MiwxMiBAQCBw
cml2YXRlOgogICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCByZXN1
bHQpOwogICAgICAgICByZXR1cm4gY2FsbDsKICAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwg
YXBwZW5kQ2FsbFNldFJlc3VsdChjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24sIEdQUlJlZyBy
ZXN1bHQpCisgICAgeworICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gbV9qaXQuYXBw
ZW5kQ2FsbChmdW5jdGlvbik7CisgICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFs
dWVHUFIsIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBjYWxsOworICAgIH0KICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KGNvbnN0IEZ1
bmN0aW9uUHRyJiBmdW5jdGlvbiwgR1BSUmVnIHJlc3VsdDEsIEdQUlJlZyByZXN1bHQyKQogICAg
IHsKICAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2soZnVuY3Rpb24pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2
aXNpb24gMTEzODI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMjksMTIgKzIyOSw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1h
aW5QYXNzKCkKICAgICAgICAgREVGSU5FX0JJTkFSWV9PUChvcF9sZXNzZXEpCiAgICAgICAgIERF
RklORV9CSU5BUllfT1Aob3BfZ3JlYXRlcikKICAgICAgICAgREVGSU5FX0JJTkFSWV9PUChvcF9n
cmVhdGVyZXEpCi0gICAgICAgIERFRklORV9VTkFSWV9PUChvcF9pc19ib29sZWFuKQogICAgICAg
ICBERUZJTkVfVU5BUllfT1Aob3BfaXNfZnVuY3Rpb24pCi0gICAgICAgIERFRklORV9VTkFSWV9P
UChvcF9pc19udW1iZXIpCiAgICAgICAgIERFRklORV9VTkFSWV9PUChvcF9pc19vYmplY3QpCi0g
ICAgICAgIERFRklORV9VTkFSWV9PUChvcF9pc19zdHJpbmcpCi0gICAgICAgIERFRklORV9VTkFS
WV9PUChvcF9pc191bmRlZmluZWQpCiAgICAgICAgIERFRklORV9VTkFSWV9PUChvcF90eXBlb2Yp
CiAKICAgICAgICAgREVGSU5FX09QKG9wX2FkZCkKQEAgLTI2OSw2ICsyNjUsMTAgQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3Nj
b3BlZF92YXIpCiAgICAgICAgIERFRklORV9PUChvcF9jaGVja19oYXNfaW5zdGFuY2UpCiAgICAg
ICAgIERFRklORV9PUChvcF9pbnN0YW5jZW9mKQorICAgICAgICBERUZJTkVfT1Aob3BfaXNfdW5k
ZWZpbmVkKQorICAgICAgICBERUZJTkVfT1Aob3BfaXNfYm9vbGVhbikKKyAgICAgICAgREVGSU5F
X09QKG9wX2lzX251bWJlcikKKyAgICAgICAgREVGSU5FX09QKG9wX2lzX3N0cmluZykKICAgICAg
ICAgREVGSU5FX09QKG9wX2plcV9udWxsKQogICAgICAgICBERUZJTkVfT1Aob3BfamZhbHNlKQog
ICAgICAgICBERUZJTkVfT1Aob3Bfam1wKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShy
ZXZpc2lvbiAxMTM4MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MDQsNiArODA0LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2
b2lkIGVtaXRfb3BfaW5pdF9sYXp5X3JlZyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3BfY2hlY2tfaGFzX2luc3RhbmNlKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9pbnN0YW5jZW9mKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9pc191
bmRlZmluZWQoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2lzX2Jvb2xlYW4o
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2lzX251bWJlcihJbnN0cnVjdGlv
biopOworICAgICAgICB2b2lkIGVtaXRfb3BfaXNfc3RyaW5nKEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9qZXFfbnVsbChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3BfamZhbHNlKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9qbXAoSW5z
dHJ1Y3Rpb24qKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAJKHJldmlzaW9uIDExMzgyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMxLDYgKzYzMSw2NiBA
QCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5zdGFuY2VvZihJbnN0cnVjCiAgICAgc3R1YkNhbGwu
Y2FsbChkc3QpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9pc191bmRlZmluZWQoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIHZhbHVlID0gY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICAKKyAgICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDEsIHJl
Z1QwKTsKKyAgICBKdW1wIGlzQ2VsbCA9IGJyYW5jaChFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpDZWxsVGFnKSk7CisKKyAgICBjb21wYXJlMzIoRXF1YWwsIHJlZ1QxLCBUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSwgcmVnVDApOworICAgIEp1bXAgZG9uZSA9
IGp1bXAoKTsKKyAgICAKKyAgICBpc0NlbGwubGluayh0aGlzKTsKKyAgICBsb2FkUHRyKEFkZHJl
c3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMSk7CisgICAgdGVzdDgo
Tm9uWmVybywgQWRkcmVzcyhyZWdUMSwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkp
LCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCksIHJlZ1QwKTsKKyAgICAKKyAg
ICBkb25lLmxpbmsodGhpcyk7CisgICAgZW1pdFN0b3JlQm9vbChkc3QsIHJlZ1QwKTsKK30KKwor
dm9pZCBKSVQ6OmVtaXRfb3BfaXNfYm9vbGVhbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQoreworICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQ7CisgICAgdW5zaWduZWQgdmFsdWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5k
OworICAgIAorICAgIGVtaXRMb2FkVGFnKHZhbHVlLCByZWdUMCk7CisgICAgY29tcGFyZTMyKEVx
dWFsLCByZWdUMCwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xlYW5UYWcpLCByZWdUMCk7Cisg
ICAgZW1pdFN0b3JlQm9vbChkc3QsIHJlZ1QwKTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3BfaXNf
bnVtYmVyKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgdW5zaWduZWQg
ZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICB1bnNpZ25lZCB2YWx1
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgCisgICAgZW1pdExvYWRU
YWcodmFsdWUsIHJlZ1QwKTsKKyAgICBhZGQzMihUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKKyAg
ICBjb21wYXJlMzIoQmVsb3csIHJlZ1QwLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFn
ICsgMSksIHJlZ1QwKTsKKyAgICBlbWl0U3RvcmVCb29sKGRzdCwgcmVnVDApOworICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QwKTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3Bf
aXNfc3RyaW5nKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgdW5zaWdu
ZWQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICB1bnNpZ25lZCB2
YWx1ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgCisgICAgZW1pdExv
YWQodmFsdWUsIHJlZ1QxLCByZWdUMCk7CisgICAgSnVtcCBpc05vdENlbGwgPSBicmFuY2goTm90
RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOworICAgIAorICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1Qx
KTsKKyAgICBjb21wYXJlOChFcXVhbCwgQWRkcmVzcyhyZWdUMSwgU3RydWN0dXJlOjp0eXBlSW5m
b1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSwgcmVnVDApOworICAgIEp1
bXAgZG9uZSA9IGp1bXAoKTsKKyAgICAKKyAgICBpc05vdENlbGwubGluaygmbV9qaXQpOworICAg
IG1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7CisgICAgCisgICAgZG9uZS5saW5rKCZtX2pp
dCk7CisgICAgZW1pdFN0b3JlQm9vbChkc3QsIHJlZ1QwKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRf
b3BfdGVhcl9vZmZfYWN0aXZhdGlvbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewogICAgIHVuc2lnbmVkIGFjdGl2YXRpb24gPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZp
c2lvbiAxMTM4MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NjUsNiArNDY1LDY5IEBAIHZvaWQgSklUOjplbWl0X29wX2lu
c3RhbmNlb2YoSW5zdHJ1Y3Rpb24KICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CiB9
CiAKK3ZvaWQgSklUOjplbWl0X29wX2lzX3VuZGVmaW5lZChJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQoreworICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQ7CisgICAgdW5zaWduZWQgdmFsdWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5v
cGVyYW5kOworICAgIAorICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QwKTsK
KyAgICBKdW1wIGlzQ2VsbCA9IGVtaXRKdW1wSWZKU0NlbGwocmVnVDApOworCisgICAgY29tcGFy
ZVB0cihFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihWYWx1ZVVuZGVmaW5lZCksIHJlZ1QwKTsK
KyAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CisgICAgCisgICAgaXNDZWxsLmxpbmsodGhpcyk7Cisg
ICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVn
VDEpOworICAgIHRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDEsIFN0cnVjdHVyZTo6dHlwZUlu
Zm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpLCBy
ZWdUMCk7CisgICAgCisgICAgZG9uZS5saW5rKHRoaXMpOworICAgIGVtaXRUYWdBc0Jvb2xJbW1l
ZGlhdGUocmVnVDApOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKK30KKwordm9p
ZCBKSVQ6OmVtaXRfb3BfaXNfYm9vbGVhbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQoreworICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7
CisgICAgdW5zaWduZWQgdmFsdWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwor
ICAgIAorICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QwKTsKKyAgICB4b3JQ
dHIoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KFZhbHVlRmFsc2UpKSwgcmVnVDAp
OworICAgIHRlc3RQdHIoWmVybywgcmVnVDAsIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQz
Ml90Pih+MSkpLCByZWdUMCk7CisgICAgZW1pdFRhZ0FzQm9vbEltbWVkaWF0ZShyZWdUMCk7Cisg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9p
c19udW1iZXIoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICB1bnNpZ25l
ZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIHZh
bHVlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICAKKyAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMCk7CisgICAgdGVzdFB0cihOb25aZXJvLCByZWdU
MCwgdGFnVHlwZU51bWJlclJlZ2lzdGVyLCByZWdUMCk7CisgICAgZW1pdFRhZ0FzQm9vbEltbWVk
aWF0ZShyZWdUMCk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOworfQorCit2b2lk
IEpJVDo6ZW1pdF9vcF9pc19zdHJpbmcoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3sKKyAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwor
ICAgIHVuc2lnbmVkIHZhbHVlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAg
ICAKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMCk7CisgICAgSnVtcCBp
c05vdENlbGwgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsKKyAgICAKKyAgICBsb2FkUHRy
KEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMSk7CisgICAg
Y29tcGFyZTgoRXF1YWwsIEFkZHJlc3MocmVnVDEsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zm
c2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSksIHJlZ1QwKTsKKyAgICBlbWl0VGFnQXNC
b29sSW1tZWRpYXRlKHJlZ1QwKTsKKyAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CisgICAgCisgICAg
aXNOb3RDZWxsLmxpbmsodGhpcyk7CisgICAgbW92ZShUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSks
IHJlZ1QwKTsKKyAgICAKKyAgICBkb25lLmxpbmsodGhpcyk7CisgICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3Rlcihkc3QpOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9jYWxsKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgY29tcGlsZU9wQ2FsbChvcF9jYWxsLCBjdXJyZW50
SW5zdHJ1Y3Rpb24sIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDExMzgyOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTcwMiwzMSArNzAyLDYgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3R5cGVvZikKICAgICBMTElOVF9SRVRVUk4oanNUeXBlU3RyaW5nRm9yVmFsdWUoZXhlYywg
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKIH0KIAotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2lzX3VuZGVmaW5lZCkKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIEpTVmFsdWUg
diA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOwotICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4o
di5pc0NlbGwoKSA/IHYuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQoKSA6IHYuaXNVbmRlZmluZWQoKSkpOwotfQotCi1MTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfaXNfYm9vbGVhbikKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAg
IExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkuaXNCb29sZWFu
KCkpKTsKLX0KLQotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2lzX251bWJlcikKLXsK
LSAgICBMTElOVF9CRUdJTigpOwotICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCkuaXNOdW1iZXIoKSkpOwotfQotCi1MTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfaXNfc3RyaW5nKQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgTExJTlRfUkVU
VVJOKGpzQm9vbGVhbihpc0pTU3RyaW5nKExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOwotfQot
CiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXNfb2JqZWN0KQogewogICAgIExMSU5U
X0JFR0lOKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuaAkocmV2aXNpb24gMTEzODI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMiwxMCArMTMyLDYgQEAgTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdHhvcik7CiBMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfY2hlY2tfaGFzX2luc3RhbmNlKTsKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9pbnN0YW5jZW9mKTsKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90eXBl
b2YpOwotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2lzX3VuZGVmaW5lZCk7Ci1MTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXNfYm9vbGVhbik7Ci1MTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfaXNfbnVtYmVyKTsKLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9pc19zdHJpbmcpOwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2lzX29iamVjdCk7
CiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXNfZnVuY3Rpb24pOwogTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2luKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lv
biAxMTM4MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMjAwLDYgKzIwMCwxOSBAQCBtYWNybyBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKGluZGV4LCB0YWcsCiAuZG9uZToKIGVuZAogCittYWNybyBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlVGFnKGluZGV4LCB0YWcpCisgICAgYmlndGVxIGluZGV4LCBG
aXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgbG9hZGkgVGFnT2Zmc2V0
W2NmciwgaW5kZXgsIDhdLCB0YWcKKyAgICBqbXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgcGF5bG9hZAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFu
dFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFtwYXlsb2FkXSwgcGF5bG9hZAorICAgICMg
VGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1
ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3
aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAz
LgorICAgIGxvYWRwIFRhZ09mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHRhZworLmRvbmU6Citl
bmQKKwogIyBJbmRleCBhbmQgcGF5bG9hZCBtYXkgYmUgdGhlIHNhbWUgcmVnaXN0ZXIuIEluZGV4
IG1heSBiZSBjbG9iYmVyZWQuCiBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhpbmRl
eCwgdGFnLCBwYXlsb2FkKQogICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVy
SW5kZXgsIC5jb25zdGFudApAQCAtODYyLDYgKzg3NSw2MiBAQCBfbGxpbnRfb3BfaW5zdGFuY2Vv
ZjoKICAgICBkaXNwYXRjaCg1KQogCiAKK19sbGludF9vcF9pc191bmRlZmluZWQ6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MAor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAgICBzdG9yZWkgQm9vbGVh
blRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wSXNV
bmRlZmluZWRDZWxsCisgICAgY2llcSB0MiwgVW5kZWZpbmVkVGFnLCB0MworICAgIHN0b3JlaSB0
MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDMpCisub3BJc1VuZGVm
aW5lZENlbGw6CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxCisgICAgdGJu
eiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQsIHQxCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfYm9vbGVhbjoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQyCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZyh0MSwgdDApCisgICAgY2llcSB0MCwgQm9vbGVh
blRhZywgdDAKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisg
ICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goMykK
KworCitfbGxpbnRfb3BfaXNfbnVtYmVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlVGFnKHQxLCB0MCkKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIs
IDhdCisgICAgYWRkaSAxLCB0MAorICAgIGNpYiB0MCwgTG93ZXN0VGFnICsgMSwgdDEKKyAgICBz
dG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisK
K19sbGludF9vcF9pc19zdHJpbmc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhb
UENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
dDEsIHQwLCB0MykKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhd
CisgICAgYmluZXEgdDAsIENlbGxUYWcsIC5vcElzU3RyaW5nTm90Q2VsbAorICAgIGxvYWRwIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MAorICAgIGNiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZv
ICsgVHlwZUluZm86Om1fdHlwZVt0MF0sIFN0cmluZ1R5cGUsIHQxCisgICAgc3RvcmVpIHQxLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goMykKKy5vcElzU3RyaW5nTm90
Q2VsbDoKKyAgICBzdG9yZXAgMCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3Bh
dGNoKDMpCisKKwogbWFjcm8gcmVzb2x2ZUdsb2JhbChzaXplLCBzbG93KQogICAgICMgT3BlcmFu
ZHMgYXJlIGFzIGZvbGxvd3M6CiAgICAgIyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9h
ZC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAxMTM4MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAt
NzMyLDYgKzczMiw2MyBAQCBfbGxpbnRfb3BfaW5zdGFuY2VvZjoKICAgICBkaXNwYXRjaCg1KQog
CiAKK19sbGludF9vcF9pc191bmRlZmluZWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpcyAxNltQQiwgUEMsIDhdLCB0MQorICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQyCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDApCisgICAgYnRweiB0MCwgdGFnTWFzaywgLm9w
SXNVbmRlZmluZWRDZWxsCisgICAgY3BlcSB0MCwgVmFsdWVVbmRlZmluZWQsIHQzCisgICAgb3Jw
IFZhbHVlRmFsc2UsIHQzCisgICAgc3RvcmVwIHQzLCBbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRj
aCgzKQorLm9wSXNVbmRlZmluZWRDZWxsOgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDBdLCB0MAorICAgIHRibnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxh
Z3NbdDBdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0MQorICAgIG9ycCBWYWx1ZUZhbHNlLCB0
MQorICAgIHN0b3JlcCB0MSwgW2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goMykKKworCitfbGxp
bnRfb3BfaXNfYm9vbGVhbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGlzIDE2W1BC
LCBQQywgOF0sIHQxCisgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDIKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHQxLCB0MCkKKyAgICB4b3JwIFZhbHVlRmFsc2UsIHQwCisgICAgdHB6IHQw
LCB+MSwgdDAKKyAgICBvcnAgVmFsdWVGYWxzZSwgdDAKKyAgICBzdG9yZXAgdDAsIFtjZnIsIHQy
LCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX251bWJlcjoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGlzIDE2W1BCLCBQQywgOF0sIHQxCisgICAgbG9hZGlzIDhb
UEIsIFBDLCA4XSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MCkKKyAgICB0
cG56IHQwLCB0YWdUeXBlTnVtYmVyLCB0MQorICAgIG9ycCBWYWx1ZUZhbHNlLCB0MQorICAgIHN0
b3JlcCB0MSwgW2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNf
c3RyaW5nOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaXMgMTZbUEIsIFBDLCA4XSwg
dDEKKyAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUodDEsIHQwKQorICAgIGJ0cG56IHQwLCB0YWdNYXNrLCAub3BJc1N0cmluZ05vdENlbGwKKyAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBjYmVxIFN0cnVjdHVyZTo6
bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBTdHJpbmdUeXBlLCB0MQorICAgIG9y
cCBWYWx1ZUZhbHNlLCB0MQorICAgIHN0b3JlcCB0MSwgW2NmciwgdDIsIDhdCisgICAgZGlzcGF0
Y2goMykKKy5vcElzU3RyaW5nTm90Q2VsbDoKKyAgICBzdG9yZXAgVmFsdWVGYWxzZSwgW2Nmciwg
dDIsIDhdCisgICAgZGlzcGF0Y2goMykKKworCiBtYWNybyByZXNvbHZlR2xvYmFsKHNpemUsIHNs
b3cpCiAgICAgIyBPcGVyYW5kcyBhcmUgYXMgZm9sbG93czoKICAgICAjIDhbUEIsIFBDLCA4XSAg
IERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDExMzgyOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQko
d29ya2luZyBjb3B5KQpAQCAtNDIzLDMwICs0MjMsNiBAQCBfbGxpbnRfb3BfdHlwZW9mOgogICAg
IGRpc3BhdGNoKDMpCiAKIAotX2xsaW50X29wX2lzX3VuZGVmaW5lZDoKLSAgICB0cmFjZUV4ZWN1
dGlvbigpCi0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXNfdW5kZWZpbmVkKQot
ICAgIGRpc3BhdGNoKDMpCi0KLQotX2xsaW50X29wX2lzX2Jvb2xlYW46Ci0gICAgdHJhY2VFeGVj
dXRpb24oKQotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2lzX2Jvb2xlYW4pCi0g
ICAgZGlzcGF0Y2goMykKLQotCi1fbGxpbnRfb3BfaXNfbnVtYmVyOgotICAgIHRyYWNlRXhlY3V0
aW9uKCkKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pc19udW1iZXIpCi0gICAg
ZGlzcGF0Y2goMykKLQotCi1fbGxpbnRfb3BfaXNfc3RyaW5nOgotICAgIHRyYWNlRXhlY3V0aW9u
KCkKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pc19zdHJpbmcpCi0gICAgZGlz
cGF0Y2goMykKLQotCiBfbGxpbnRfb3BfaXNfb2JqZWN0OgogICAgIHRyYWNlRXhlY3V0aW9uKCkK
ICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pc19vYmplY3QpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgkocmV2aXNpb24gMTEzODI4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIJKHdvcmtpbmcgY29w
eSkKQEAgLTUyMiwxMSArNTIyLDExIEBAIGRlZiBhcm1WN0xvd2VyTWlzcGxhY2VkQWRkcmVzc2Vz
KGxpc3QpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5v
cGNvZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJtVjdB
c1JlZ2lzdGVycyhuZXdMaXN0LCBwb3N0SW5zdHJ1Y3Rpb25zLCBub2RlLm9wZXJhbmRzLCAiaSIp
KQogICAgICAgICAgICAgd2hlbiAiYmJlcSIsICJiYm5lcSIsICJiYmEiLCAiYmJhZXEiLCAiYmJi
IiwgImJiYmVxIiwgImJ0Ym8iLCAiYnRieiIsICJidGJueiIsICJ0YnoiLCAidGJueiIsCi0gICAg
ICAgICAgICAgICAgInRibyIKKyAgICAgICAgICAgICAgICAidGJvIiwgImNiZXEiLCAiY2JuZXEi
LCAiY2JhIiwgImNiYWVxIiwgImNiYiIsICJjYmJlcSIKICAgICAgICAgICAgICAgICBuZXdMaXN0
IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5vcGNvZGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXJtVjdBc1JlZ2lzdGVycyhuZXdMaXN0LCBwb3N0SW5z
dHJ1Y3Rpb25zLCBub2RlLm9wZXJhbmRzLCAiYiIpKQotICAgICAgICAgICAgd2hlbiAiYmJndCIs
ICJiYmd0ZXEiLCAiYmJsdCIsICJiYmx0ZXEiLCAiYnRicyIsICJ0YnMiCisgICAgICAgICAgICB3
aGVuICJiYmd0IiwgImJiZ3RlcSIsICJiYmx0IiwgImJibHRlcSIsICJidGJzIiwgInRicyIsICJj
Ymd0IiwgImNiZ3RlcSIsICJjYmx0IiwgImNibHRlcSIKICAgICAgICAgICAgICAgICBuZXdMaXN0
IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5vcGNvZGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXJtVjdBc1JlZ2lzdGVycyhuZXdMaXN0LCBwb3N0SW5z
dHJ1Y3Rpb25zLCBub2RlLm9wZXJhbmRzLCAiYnMiKSkKQEAgLTU2OCw3ICs1NjgsOCBAQCBkZWYg
YXJtVjdMb3dlclJlZ2lzdGVyUmV1c2UobGlzdCkKICAgICAgICAgICAgIGNhc2Ugbm9kZS5vcGNv
ZGUKICAgICAgICAgICAgIHdoZW4gImNpZXEiLCAiY2luZXEiLCAiY2lhIiwgImNpYWVxIiwgImNp
YiIsICJjaWJlcSIsICJjaWd0IiwgImNpZ3RlcSIsICJjaWx0IiwgImNpbHRlcSIsCiAgICAgICAg
ICAgICAgICAgImNwZXEiLCAiY3BuZXEiLCAiY3BhIiwgImNwYWVxIiwgImNwYiIsICJjcGJlcSIs
ICJjcGd0IiwgImNwZ3RlcSIsICJjcGx0IiwgImNwbHRlcSIsCi0gICAgICAgICAgICAgICAgInRp
byIsICJ0aXMiLCAidGl6IiwgInRpbnoiLCAidGJvIiwgInRicyIsICJ0YnoiLCAidGJueiIKKyAg
ICAgICAgICAgICAgICAidGlvIiwgInRpcyIsICJ0aXoiLCAidGlueiIsICJ0Ym8iLCAidGJzIiwg
InRieiIsICJ0Ym56IiwgInRwbyIsICJ0cHMiLCAidHB6IiwgInRwbnoiLAorICAgICAgICAgICAg
ICAgICJjYmVxIiwgImNibmVxIiwgImNiYSIsICJjYmFlcSIsICJjYmIiLCAiY2JiZXEiLCAiY2Jn
dCIsICJjYmd0ZXEiLCAiY2JsdCIsICJjYmx0ZXEiCiAgICAgICAgICAgICAgICAgaWYgbm9kZS5v
cGVyYW5kcy5zaXplID09IDIKICAgICAgICAgICAgICAgICAgICAgaWYgbm9kZS5vcGVyYW5kc1sw
XSA9PSBub2RlLm9wZXJhbmRzWzFdCiAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBUbXAu
bmV3KG5vZGUuY29kZU9yaWdpbiwgOmdwcikKQEAgLTk0OCwzMyArOTQ5LDMzIEBAIGNsYXNzIElu
c3RydWN0aW9uCiAgICAgICAgICAgICAkYXNtLnB1dHMgImJrcHQgIzAiCiAgICAgICAgIHdoZW4g
InJldCIKICAgICAgICAgICAgICRhc20ucHV0cyAiYnggbHIiCi0gICAgICAgIHdoZW4gImNpZXEi
LCAiY3BlcSIKKyAgICAgICAgd2hlbiAiY2llcSIsICJjcGVxIiwgImNiZXEiCiAgICAgICAgICAg
ICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAiZXEiKQotICAgICAgICB3aGVuICJjaW5lcSIs
ICJjcG5lcSIKKyAgICAgICAgd2hlbiAiY2luZXEiLCAiY3BuZXEiLCAiY2JuZXEiCiAgICAgICAg
ICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAibmUiKQotICAgICAgICB3aGVuICJjaWEi
LCAiY3BhIgorICAgICAgICB3aGVuICJjaWEiLCAiY3BhIiwgImNiYSIKICAgICAgICAgICAgIGVt
aXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJoaSIpCi0gICAgICAgIHdoZW4gImNpYWVxIiwgImNw
YWVxIgorICAgICAgICB3aGVuICJjaWFlcSIsICJjcGFlcSIsICJjYmFlcSIKICAgICAgICAgICAg
IGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJocyIpCi0gICAgICAgIHdoZW4gImNpYiIsICJj
cGIiCisgICAgICAgIHdoZW4gImNpYiIsICJjcGIiLCAiY2JiIgogICAgICAgICAgICAgZW1pdEFy
bVY3Q29tcGFyZShvcGVyYW5kcywgImxvIikKLSAgICAgICAgd2hlbiAiY2liZXEiLCAiY3BiZXEi
CisgICAgICAgIHdoZW4gImNpYmVxIiwgImNwYmVxIiwgImNiYmVxIgogICAgICAgICAgICAgZW1p
dEFybVY3Q29tcGFyZShvcGVyYW5kcywgImxzIikKLSAgICAgICAgd2hlbiAiY2lndCIsICJjcGd0
IgorICAgICAgICB3aGVuICJjaWd0IiwgImNwZ3QiLCAiY2JndCIKICAgICAgICAgICAgIGVtaXRB
cm1WN0NvbXBhcmUob3BlcmFuZHMsICJndCIpCi0gICAgICAgIHdoZW4gImNpZ3RlcSIsICJjcGd0
ZXEiCisgICAgICAgIHdoZW4gImNpZ3RlcSIsICJjcGd0ZXEiLCAiY2JndGVxIgogICAgICAgICAg
ICAgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgImdlIikKLSAgICAgICAgd2hlbiAiY2lsdCIs
ICJjcGx0IgorICAgICAgICB3aGVuICJjaWx0IiwgImNwbHQiLCAiY2JsdCIKICAgICAgICAgICAg
IGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJsdCIpCi0gICAgICAgIHdoZW4gImNpbHRlcSIs
ICJjcGx0ZXEiCisgICAgICAgIHdoZW4gImNpbHRlcSIsICJjcGx0ZXEiLCAiY2JsdGVxIgogICAg
ICAgICAgICAgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgImxlIikKLSAgICAgICAgd2hlbiAi
dGlvIiwgInRibyIKKyAgICAgICAgd2hlbiAidGlvIiwgInRibyIsICJ0cG8iCiAgICAgICAgICAg
ICBlbWl0QXJtVjdUZXN0U2V0KG9wZXJhbmRzLCAidnMiKQotICAgICAgICB3aGVuICJ0aXMiLCAi
dGJzIgorICAgICAgICB3aGVuICJ0aXMiLCAidGJzIiwgInRwcyIKICAgICAgICAgICAgIGVtaXRB
cm1WN1Rlc3RTZXQob3BlcmFuZHMsICJtaSIpCi0gICAgICAgIHdoZW4gInRpeiIsICJ0YnoiCisg
ICAgICAgIHdoZW4gInRpeiIsICJ0YnoiLCAidHB6IgogICAgICAgICAgICAgZW1pdEFybVY3VGVz
dFNldChvcGVyYW5kcywgImVxIikKLSAgICAgICAgd2hlbiAidGlueiIsICJ0Ym56IgorICAgICAg
ICB3aGVuICJ0aW56IiwgInRibnoiLCAidHBueiIKICAgICAgICAgICAgIGVtaXRBcm1WN1Rlc3RT
ZXQob3BlcmFuZHMsICJuZSIpCiAgICAgICAgIHdoZW4gInBlZWsiCiAgICAgICAgICAgICAkYXNt
LnB1dHMgImxkciAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sIFtzcCwgXCMje29wZXJhbmRz
WzBdLnZhbHVlICogNH1dIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
aW5zdHJ1Y3Rpb25zLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMTEzODI4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzMsNiArMTMzLDE2IEBAIE1BQ1JPX0lOU1RSVUNUSU9OUyA9CiAgICAgICJicmVhayIsCiAgICAg
ICJjYWxsIiwKICAgICAgInJldCIsCisgICAgICJjYmVxIiwKKyAgICAgImNibmVxIiwKKyAgICAg
ImNiYSIsCisgICAgICJjYmFlcSIsCisgICAgICJjYmIiLAorICAgICAiY2JiZXEiLAorICAgICAi
Y2JndCIsCisgICAgICJjYmd0ZXEiLAorICAgICAiY2JsdCIsCisgICAgICJjYmx0ZXEiLAogICAg
ICAiY2llcSIsCiAgICAgICJjaW5lcSIsCiAgICAgICJjaWEiLApAQCAtMTUxLDYgKzE2MSwxMCBA
QCBNQUNST19JTlNUUlVDVElPTlMgPQogICAgICAidGJzIiwKICAgICAgInRieiIsCiAgICAgICJ0
Ym56IiwKKyAgICAgInRwbyIsCisgICAgICJ0cHMiLAorICAgICAidHB6IiwKKyAgICAgInRwbnoi
LAogICAgICAicGVlayIsCiAgICAgICJwb2tlIiwKICAgICAgImJwZXEiLApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMTEzODI4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCSh3b3JraW5nIGNvcHkpCkBAIC04
OTcsNDIgKzg5Nyw2MiBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgJGFzbS5wdXRz
ICJyZXQiCiAgICAgICAgIHdoZW4gImNpZXEiCiAgICAgICAgICAgICBoYW5kbGVYODZJbnRDb21w
YXJlU2V0KCJzZXRlIiwgOmludCkKKyAgICAgICAgd2hlbiAiY2JlcSIKKyAgICAgICAgICAgIGhh
bmRsZVg4NkludENvbXBhcmVTZXQoInNldGUiLCA6Ynl0ZSkKICAgICAgICAgd2hlbiAiY3BlcSIK
ICAgICAgICAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGUiLCA6cHRyKQogICAgICAg
ICB3aGVuICJjaW5lcSIKICAgICAgICAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldG5l
IiwgOmludCkKKyAgICAgICAgd2hlbiAiY2JuZXEiCisgICAgICAgICAgICBoYW5kbGVYODZJbnRD
b21wYXJlU2V0KCJzZXRuZSIsIDpieXRlKQogICAgICAgICB3aGVuICJjcG5lcSIKICAgICAgICAg
ICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldG5lIiwgOnB0cikKICAgICAgICAgd2hlbiAi
Y2lhIgogICAgICAgICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YSIsIDppbnQpCisg
ICAgICAgIHdoZW4gImNiYSIKKyAgICAgICAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNl
dGEiLCA6Ynl0ZSkKICAgICAgICAgd2hlbiAiY3BhIgogICAgICAgICAgICAgaGFuZGxlWDg2SW50
Q29tcGFyZVNldCgic2V0YSIsIDpwdHIpCiAgICAgICAgIHdoZW4gImNpYWVxIgogICAgICAgICAg
ICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YWUiLCA6aW50KQorICAgICAgICB3aGVuICJj
YmFlcSIKKyAgICAgICAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGFlIiwgOmJ5dGUp
CiAgICAgICAgIHdoZW4gImNwYWVxIgogICAgICAgICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNl
dCgic2V0YWUiLCA6cHRyKQogICAgICAgICB3aGVuICJjaWIiCiAgICAgICAgICAgICBoYW5kbGVY
ODZJbnRDb21wYXJlU2V0KCJzZXRiIiwgOmludCkKKyAgICAgICAgd2hlbiAiY2JiIgorICAgICAg
ICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YiIsIDpieXRlKQogICAgICAgICB3aGVu
ICJjcGIiCiAgICAgICAgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRiIiwgOnB0cikK
ICAgICAgICAgd2hlbiAiY2liZXEiCiAgICAgICAgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0
KCJzZXRiZSIsIDppbnQpCisgICAgICAgIHdoZW4gImNiYmVxIgorICAgICAgICAgICAgaGFuZGxl
WDg2SW50Q29tcGFyZVNldCgic2V0YmUiLCA6Ynl0ZSkKICAgICAgICAgd2hlbiAiY3BiZXEiCiAg
ICAgICAgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRiZSIsIDpwdHIpCiAgICAgICAg
IHdoZW4gImNpZ3QiCiAgICAgICAgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRnIiwg
OmludCkKKyAgICAgICAgd2hlbiAiY2JndCIKKyAgICAgICAgICAgIGhhbmRsZVg4NkludENvbXBh
cmVTZXQoInNldGciLCA6Ynl0ZSkKICAgICAgICAgd2hlbiAiY3BndCIKICAgICAgICAgICAgIGhh
bmRsZVg4NkludENvbXBhcmVTZXQoInNldGciLCA6cHRyKQogICAgICAgICB3aGVuICJjaWd0ZXEi
CiAgICAgICAgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRnZSIsIDppbnQpCisgICAg
ICAgIHdoZW4gImNiZ3RlcSIKKyAgICAgICAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNl
dGdlIiwgOmJ5dGUpCiAgICAgICAgIHdoZW4gImNwZ3RlcSIKICAgICAgICAgICAgIGhhbmRsZVg4
NkludENvbXBhcmVTZXQoInNldGdlIiwgOnB0cikKICAgICAgICAgd2hlbiAiY2lsdCIKICAgICAg
ICAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGwiLCA6aW50KQorICAgICAgICB3aGVu
ICJjYmx0IgorICAgICAgICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bCIsIDpieXRl
KQogICAgICAgICB3aGVuICJjcGx0IgogICAgICAgICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNl
dCgic2V0bCIsIDpwdHIpCiAgICAgICAgIHdoZW4gImNpbHRlcSIKICAgICAgICAgICAgIGhhbmRs
ZVg4NkludENvbXBhcmVTZXQoInNldGxlIiwgOmludCkKKyAgICAgICAgd2hlbiAiY2JsdGVxIgor
ICAgICAgICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bGUiLCA6Ynl0ZSkKICAgICAg
ICAgd2hlbiAiY3BsdGVxIgogICAgICAgICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0
bGUiLCA6cHRyKQogICAgICAgICB3aGVuICJ0aW8iCkBAIC05NDMsNiArOTYzLDE0IEBAIGNsYXNz
IEluc3RydWN0aW9uCiAgICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXR6IiwgOmludCkK
ICAgICAgICAgd2hlbiAidGlueiIKICAgICAgICAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG56
IiwgOmludCkKKyAgICAgICAgd2hlbiAidHBvIgorICAgICAgICAgICAgaGFuZGxlWDg2U2V0VGVz
dCgic2V0byIsIDpwdHIpCisgICAgICAgIHdoZW4gInRwcyIKKyAgICAgICAgICAgIGhhbmRsZVg4
NlNldFRlc3QoInNldHMiLCA6cHRyKQorICAgICAgICB3aGVuICJ0cHoiCisgICAgICAgICAgICBo
YW5kbGVYODZTZXRUZXN0KCJzZXR6IiwgOnB0cikKKyAgICAgICAgd2hlbiAidHBueiIKKyAgICAg
ICAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG56IiwgOnB0cikKICAgICAgICAgd2hlbiAidGJv
IgogICAgICAgICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDpieXRlKQogICAgICAgICB3
aGVuICJ0YnMiCg==
</data>
<flag name="review"
          id="141652"
          type_id="1"
          status="+"
          setter="barraclough"
    />
    <flag name="commit-queue"
          id="141654"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>