<?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>57948</bug_id>
          
          <creation_ts>2011-04-06 07:51:22 -0700</creation_ts>
          <short_desc>JSC bindings generator: support non-object numbers as callback arguments</short_desc>
          <delta_ts>2011-05-01 10:45:41 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>57927</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kinuko Yasuda">kinuko</reporter>
          <assigned_to name="Kinuko Yasuda">kinuko</assigned_to>
          <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>380357</commentid>
    <comment_count>0</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2011-04-06 07:51:22 -0700</bug_when>
    <thetext>Current JSC bindings generator does not assumes callback method&apos;s argument type is always String or Object, but non-object numbers should be also supported.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380359</commentid>
    <comment_count>1</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2011-04-06 07:52:38 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; Current JSC bindings generator does not assumes callback method&apos;s argument type is always String or Object, but non-object numbers should be also supported.

(Fixing the description... &quot;does not assumes&quot; -&gt; &quot;assumes&quot;)

Current JSC bindings generator assumes callback method&apos;s argument type is always String or Object, but non-object numbers should be also supported.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380370</commentid>
    <comment_count>2</comment_count>
      <attachid>88419</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2011-04-06 08:03:01 -0700</bug_when>
    <thetext>Created attachment 88419
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380379</commentid>
    <comment_count>3</comment_count>
      <attachid>88424</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2011-04-06 08:10:38 -0700</bug_when>
    <thetext>Created attachment 88424
Patch

Updated ChangeLog comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380483</commentid>
    <comment_count>4</comment_count>
      <attachid>88424</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-04-06 09:31:16 -0700</bug_when>
    <thetext>Comment on attachment 88424
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=88424&amp;action=review

&gt; Source/WebCore/bindings/scripts/test/JS/JSTestCallback.cpp:141
&gt; +bool JSTestCallback::callbackWithInteger(int* intParam)
&gt; +{
&gt; +    if (!canInvokeCallback())
&gt; +        return true;
&gt; +
&gt; +    RefPtr&lt;JSTestCallback&gt; protect(this);
&gt; +
&gt; +    JSLock lock(SilenceAssertionsOnly);
&gt; +
&gt; +    MarkedArgumentBuffer args;
&gt; +    args.append(jsNumber(static_cast&lt;int&gt;(intParam)));

This is definitely wrong and won’t even compile. You can’t just cast an int* to an int.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381050</commentid>
    <comment_count>5</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2011-04-06 18:57:06 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 88424 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=88424&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/test/JS/JSTestCallback.cpp:141
&gt; &gt; +bool JSTestCallback::callbackWithInteger(int* intParam)
&gt; &gt; +{
&gt; &gt; +    if (!canInvokeCallback())
&gt; &gt; +        return true;
&gt; &gt; +
&gt; &gt; +    RefPtr&lt;JSTestCallback&gt; protect(this);
&gt; &gt; +
&gt; &gt; +    JSLock lock(SilenceAssertionsOnly);
&gt; &gt; +
&gt; &gt; +    MarkedArgumentBuffer args;
&gt; &gt; +    args.append(jsNumber(static_cast&lt;int&gt;(intParam)));
&gt; 
&gt; This is definitely wrong and won’t even compile. You can’t just cast an int* to an int.

Hmm, it has compiled and worked in my testing environment.  Looking into the generated JS file, the callback method seems to be given a int parameter (or long long parameter if we pass a long long one).  Would you mind giving some hint how I could fix the code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381051</commentid>
    <comment_count>6</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2011-04-06 18:58:01 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 88424 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=88424&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/bindings/scripts/test/JS/JSTestCallback.cpp:141
&gt; &gt; &gt; +bool JSTestCallback::callbackWithInteger(int* intParam)
&gt; &gt; &gt; +{
&gt; &gt; &gt; +    if (!canInvokeCallback())
&gt; &gt; &gt; +        return true;
&gt; &gt; &gt; +
&gt; &gt; &gt; +    RefPtr&lt;JSTestCallback&gt; protect(this);
&gt; &gt; &gt; +
&gt; &gt; &gt; +    JSLock lock(SilenceAssertionsOnly);
&gt; &gt; &gt; +
&gt; &gt; &gt; +    MarkedArgumentBuffer args;
&gt; &gt; &gt; +    args.append(jsNumber(static_cast&lt;int&gt;(intParam)));
&gt; &gt; 
&gt; &gt; This is definitely wrong and won’t even compile. You can’t just cast an int* to an int.
&gt; 
&gt; Hmm, it has compiled and worked in my testing environment.  Looking into the generated JS file, the callback method seems to be given a int parameter (or long long parameter if we pass a long long one).  Would you mind giving some hint how I could fix the code?

Ah ok, the generated test code looks wrong.  Let me take a look at it again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381127</commentid>
    <comment_count>7</comment_count>
      <attachid>88571</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2011-04-06 22:09:06 -0700</bug_when>
    <thetext>Created attachment 88571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381128</commentid>
    <comment_count>8</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2011-04-06 22:10:45 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 88424 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=88424&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/test/JS/JSTestCallback.cpp:141
&gt; &gt; +bool JSTestCallback::callbackWithInteger(int* intParam)
&gt; &gt; +{
&gt; &gt; +    if (!canInvokeCallback())
&gt; &gt; +        return true;
&gt; &gt; +
&gt; &gt; +    RefPtr&lt;JSTestCallback&gt; protect(this);
&gt; &gt; +
&gt; &gt; +    JSLock lock(SilenceAssertionsOnly);
&gt; &gt; +
&gt; &gt; +    MarkedArgumentBuffer args;
&gt; &gt; +    args.append(jsNumber(static_cast&lt;int&gt;(intParam)));
&gt; 
&gt; This is definitely wrong and won’t even compile. You can’t just cast an int* to an int.

Seems like int was not considered as a native type in JSC.  Added some more checks and updated the test code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381132</commentid>
    <comment_count>9</comment_count>
      <attachid>88574</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2011-04-06 22:35:25 -0700</bug_when>
    <thetext>Created attachment 88574
Patch

rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381136</commentid>
    <comment_count>10</comment_count>
      <attachid>88576</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2011-04-06 22:42:45 -0700</bug_when>
    <thetext>Created attachment 88576
Patch

Rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383838</commentid>
    <comment_count>11</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2011-04-11 23:24:59 -0700</bug_when>
    <thetext>Could someone take a look at this patch again?  Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392926</commentid>
    <comment_count>12</comment_count>
      <attachid>88576</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-04-26 16:06:29 -0700</bug_when>
    <thetext>Comment on attachment 88576
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=88576&amp;action=review

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2290
&gt; +                    push(@implContent, &quot;    args.append(jsNumber(static_cast&lt;$paramType&gt;(${paramName})));\n&quot;);

Why the static_cast? The code should work fine, perhaps better, without it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393130</commentid>
    <comment_count>13</comment_count>
      <attachid>88576</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2011-04-26 17:04:39 -0700</bug_when>
    <thetext>Comment on attachment 88576
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=88576&amp;action=review

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2290
&gt;&gt; +                    push(@implContent, &quot;    args.append(jsNumber(static_cast&lt;$paramType&gt;(${paramName})));\n&quot;);
&gt; 
&gt; Why the static_cast? The code should work fine, perhaps better, without it.

Indeed, the static_cast seems wrong in all places that its used so r- for that. Please revise and resubmit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394365</commentid>
    <comment_count>14</comment_count>
      <attachid>91472</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2011-04-28 04:35:51 -0700</bug_when>
    <thetext>Created attachment 91472
Removed unnecessary static_casts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395362</commentid>
    <comment_count>15</comment_count>
      <attachid>91472</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-04-29 10:58:42 -0700</bug_when>
    <thetext>Comment on attachment 91472
Removed unnecessary static_casts.

View in context: https://bugs.webkit.org/attachment.cgi?id=91472&amp;action=review

I get the impression that the regression test results are out of date. Your patch includes both your changes and an update to make the tests right. It would be better to first land a fix to the test results so that your patch only covered your changes, not unrelated test result updates.

&gt; Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:400
&gt;  
&gt; +
&gt;  JSValue jsTestObjReflectedStringAttr(ExecState* exec, JSValue slotBase, const Identifier&amp;)

Do you know what’s causing all these additional blank lines?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395954</commentid>
    <comment_count>16</comment_count>
      <attachid>91472</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-01 10:45:41 -0700</bug_when>
    <thetext>Comment on attachment 91472
Removed unnecessary static_casts.

Please remove the extra blank lines in the generation to make this diff more readable.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88419</attachid>
            <date>2011-04-06 08:03:01 -0700</date>
            <delta_ts>2011-04-06 08:10:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch</filename>
            <type>text/plain</type>
            <size>15286</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhYzBiYWZmLi40NmFmZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkg
QEAKKzIwMTEtMDQtMDYgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEpTQyBiaW5kaW5n
cyBnZW5lcmF0b3I6IHN1cHBvcnQgbm9uLW9iamVjdCBudW1iZXJzIGFzIGNhbGxiYWNrIGFyZ3Vt
ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc5
NDgKKworICAgICAgICBDdXJyZW50IEpTQyBiaW5kaW5ncyBnZW5lcmF0b3IgZG9lcyBub3Qgc3Vw
cG9ydCBudW1lcmljIHBhcmFtZXRlcnMsIGJ1dAorICAgICAgICB0aGV5IHNob3VsZCBiZSBzdXBw
b3J0ZWQgKGFzIG90aGVyIGJpbmRpbmdzIGRvKS4KKworICAgICAgICBBZGRlZCB0ZXN0cyBpbiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxiYWNrLmlkbC4KKworICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9DUFAvV2ViRE9NVGVzdENhbGxiYWNrLmNwcDoKKyAgICAgICAgKFdlYkRPTVRlc3RD
YWxsYmFjazo6Y2FsbGJhY2tXaXRoSW50ZWdlcik6CisgICAgICAgIChXZWJET01UZXN0Q2FsbGJh
Y2s6OmNhbGxiYWNrV2l0aFVuc2lnbmVkTG9uZ1BhcmFtKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RDYWxsYmFjay5oOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFjay5jcHA6CisgICAgICAg
ICh3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfY2FsbGJhY2tfd2l0aF9pbnRlZ2VyKToKKyAgICAg
ICAgKHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFja193aXRoX3Vuc2lnbmVkX2xvbmdf
cGFyYW0pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERP
TVRlc3RDYWxsYmFjay5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDYWxsYmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxsYmFjazo6Y2FsbGJh
Y2tXaXRoTm9QYXJhbSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxsYmFjazo6Y2FsbGJh
Y2tXaXRoSW50ZWdlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxsYmFjazo6Y2FsbGJh
Y2tXaXRoVW5zaWduZWRMb25nUGFyYW0pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDYWxsYmFjay5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9P
YmpDL0RPTVRlc3RDYWxsYmFjay5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9P
YmpDL0RPTVRlc3RDYWxsYmFjay5tbToKKyAgICAgICAgKC1bRE9NVGVzdENhbGxiYWNrIGNhbGxi
YWNrV2l0aEludGVnZXI6XSk6CisgICAgICAgICgtW0RPTVRlc3RDYWxsYmFjayBjYWxsYmFja1dp
dGhVbnNpZ25lZExvbmdQYXJhbTpdKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdENhbGxiYWNrLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0Q2FsbGJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0Q2FsbGJhY2s6OmNhbGxi
YWNrV2l0aEludGVnZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0Q2FsbGJhY2s6OmNhbGxi
YWNrV2l0aFVuc2lnbmVkTG9uZ1BhcmFtKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0Q2FsbGJhY2suaDoKKwogMjAxMS0wMy0zMCAgUGF2ZWwgUG9kaXZpbG92ICA8
cG9kaXZpbG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxk
bWFuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQppbmRleCAxMmI0NzdiLi42MmIyOTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMjI2NCw5ICsyMjY0LDEx
IEBAIHN1YiBHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiXG4iIC4gR2V0TmF0aXZlVHlwZSgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+
dHlwZSkgLiAiICR7Y2xhc3NOYW1lfTo6IiAuICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lIC4g
IigiKTsKIAogICAgICAgICAgICAgbXkgQGFyZ3MgPSAoKTsKKyAgICAgICAgICAgIG15ICRuZWVk
RXhlY1N0YXRlID0gMDsKICAgICAgICAgICAgIGZvcmVhY2ggbXkgJHBhcmFtIChAcGFyYW1zKSB7
CiAgICAgICAgICAgICAgICAgQWRkSW5jbHVkZXNGb3JUeXBlKCRwYXJhbS0+dHlwZSwgMSk7CiAg
ICAgICAgICAgICAgICAgcHVzaChAYXJncywgR2V0TmF0aXZlVHlwZSgkcGFyYW0tPnR5cGUpIC4g
IiAiIC4gJHBhcmFtLT5uYW1lKTsKKyAgICAgICAgICAgICAgICAkbmVlZEV4ZWNTdGF0ZSA9IDEg
aWYgKCEkY29kZUdlbmVyYXRvci0+SXNOdW1lcmljVHlwZSgkcGFyYW0tPnR5cGUpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCBqb2luKCIsICIsIEBhcmdz
KSk7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIilcbiIpOwpAQCAtMjI3NiwxMyAr
MjI3OCwxNSBAQCBzdWIgR2VuZXJhdGVDYWxsYmFja0ltcGxlbWVudGF0aW9uCiAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRydWU7XG5cbiIpOwogICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgUmVmUHRyPCRjbGFzc05hbWU+IHByb3RlY3Qo
dGhpcyk7XG5cbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNMb2Nr
IGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTtcblxuIik7Ci0gICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBFeGVjU3RhdGUqIGV4ZWMgPSBtX2RhdGEtPmdsb2JhbE9iamVjdCgp
LT5nbG9iYWxFeGVjKCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IEV4ZWNTdGF0ZSogZXhlYyA9IG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTtc
biIpIGlmICRuZWVkRXhlY1N0YXRlOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJncztcbiIpOwogCiAgICAgICAgICAgICBmb3JlYWNo
IG15ICRwYXJhbSAoQHBhcmFtcykgewogICAgICAgICAgICAgICAgIG15ICRwYXJhbU5hbWUgPSAk
cGFyYW0tPm5hbWU7CiAgICAgICAgICAgICAgICAgaWYgKCRwYXJhbS0+dHlwZSBlcSAiRE9NU3Ry
aW5nIikgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhcmdz
LmFwcGVuZChqc1N0cmluZyhleGVjLCAke3BhcmFtTmFtZX0pKTtcbiIpOworICAgICAgICAgICAg
ICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc051bWVyaWNUeXBlKCRwYXJhbS0+dHlwZSkp
IHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXJncy5hcHBl
bmQoanNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50Pigke3BhcmFtTmFtZX0pKSk7XG4iKTsKICAgICAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBhcmdzLmFwcGVuZCh0b0pTKGV4ZWMsICR7cGFyYW1OYW1lfSkpO1xuIik7CiAgICAg
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0NQUC9XZWJET01UZXN0Q2FsbGJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0Q2FsbGJhY2suY3BwCmluZGV4IGQxMmQwYzMu
LmI0YjY3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9DUFAvV2ViRE9NVGVzdENhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RDYWxsYmFjay5jcHAKQEAgLTEyNSw2ICsxMjUs
MjIgQEAgYm9vbCBXZWJET01UZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aFN0cmluZ0xpc3QoY29u
c3QgV2ViRE9NRE9NU3RyaW5nTGlzdCYgbGlzdFAKICAgICByZXR1cm4gaW1wbCgpLT5jYWxsYmFj
a1dpdGhTdHJpbmdMaXN0KHRvV2ViQ29yZShsaXN0UGFyYW0pKTsKIH0KIAorYm9vbCBXZWJET01U
ZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aEludGVnZXIoaW50IGludFBhcmFtKQoreworICAgIGlm
ICghaW1wbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gaW1wbCgpLT5j
YWxsYmFja1dpdGhJbnRlZ2VyKGludFBhcmFtKTsKK30KKworYm9vbCBXZWJET01UZXN0Q2FsbGJh
Y2s6OmNhbGxiYWNrV2l0aFVuc2lnbmVkTG9uZ1BhcmFtKHVuc2lnbmVkIHVuc2lnbmVkTG9uZ1Bh
cmFtKQoreworICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gaW1wbCgpLT5jYWxsYmFja1dpdGhVbnNpZ25lZExvbmdQYXJhbSh1bnNpZ25lZExvbmdQ
YXJhbSk7Cit9CisKIFdlYkNvcmU6OlRlc3RDYWxsYmFjayogdG9XZWJDb3JlKGNvbnN0IFdlYkRP
TVRlc3RDYWxsYmFjayYgd3JhcHBlcikKIHsKICAgICByZXR1cm4gd3JhcHBlci5pbXBsKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRP
TVRlc3RDYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQ
UC9XZWJET01UZXN0Q2FsbGJhY2suaAppbmRleCA4ZDExYTRiLi5jNzlhZjcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RDYWxs
YmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2Vi
RE9NVGVzdENhbGxiYWNrLmgKQEAgLTUzLDYgKzUzLDggQEAgcHVibGljOgogICAgIGludCBjYWxs
YmFja1dpdGhOb25Cb29sUmV0dXJuVHlwZShjb25zdCBXZWJET01DbGFzczMmIGNsYXNzM1BhcmFt
KTsKICAgICBpbnQgY3VzdG9tQ2FsbGJhY2soY29uc3QgV2ViRE9NQ2xhc3M1JiBjbGFzczVQYXJh
bSwgY29uc3QgV2ViRE9NQ2xhc3M2JiBjbGFzczZQYXJhbSk7CiAgICAgYm9vbCBjYWxsYmFja1dp
dGhTdHJpbmdMaXN0KGNvbnN0IFdlYkRPTURPTVN0cmluZ0xpc3QmIGxpc3RQYXJhbSk7CisgICAg
Ym9vbCBjYWxsYmFja1dpdGhJbnRlZ2VyKGludCBpbnRQYXJhbSk7CisgICAgYm9vbCBjYWxsYmFj
a1dpdGhVbnNpZ25lZExvbmdQYXJhbSh1bnNpZ25lZCB1bnNpZ25lZExvbmdQYXJhbSk7CiAKICAg
ICBXZWJDb3JlOjpUZXN0Q2FsbGJhY2sqIGltcGwoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdENh
bGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0
L1dlYktpdERPTVRlc3RDYWxsYmFjay5jcHAKaW5kZXggYjYzZjUwZS4uOGQxZDNmMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0
RE9NVGVzdENhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2suY3BwCkBAIC0xMzUsNiArMTM1LDI2
IEBAIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFja193aXRoX3N0cmluZ19saXN0KFdl
YktpdERPTVRlc3RDYWxsYmFjayogc2VsZiwKICAgICByZXR1cm4gcmVzOwogfQogCitnYm9vbGVh
bgord2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2NhbGxiYWNrX3dpdGhfaW50ZWdlcihXZWJLaXRE
T01UZXN0Q2FsbGJhY2sqIHNlbGYsIGdpbnQgaW50X3BhcmFtKQoreworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKHNlbGYsIDApOworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKKyAgICBXZWJDb3JlOjpUZXN0Q2FsbGJhY2sgKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNl
bGYpOworICAgIGdib29sZWFuIHJlcyA9IGl0ZW0tPmNhbGxiYWNrV2l0aEludGVnZXIoaW50X3Bh
cmFtKTsKKyAgICByZXR1cm4gcmVzOworfQorCitnYm9vbGVhbgord2Via2l0X2RvbV90ZXN0X2Nh
bGxiYWNrX2NhbGxiYWNrX3dpdGhfdW5zaWduZWRfbG9uZ19wYXJhbShXZWJLaXRET01UZXN0Q2Fs
bGJhY2sqIHNlbGYsIGd1bG9uZyB1bnNpZ25lZF9sb25nX3BhcmFtKQoreworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKHNlbGYsIDApOworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpUZXN0Q2FsbGJhY2sgKiBpdGVtID0gV2ViS2l0Ojpjb3Jl
KHNlbGYpOworICAgIGdib29sZWFuIHJlcyA9IGl0ZW0tPmNhbGxiYWNrV2l0aFVuc2lnbmVkTG9u
Z1BhcmFtKHVuc2lnbmVkX2xvbmdfcGFyYW0pOworICAgIHJldHVybiByZXM7Cit9CisKIAogR19E
RUZJTkVfVFlQRShXZWJLaXRET01UZXN0Q2FsbGJhY2ssIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFj
aywgV0VCS0lUX1RZUEVfRE9NX09CSkVDVCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdENhbGxiYWNrLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0
Q2FsbGJhY2suaAppbmRleCA1NDFhZmIyLi5mMjljNjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2su
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJL
aXRET01UZXN0Q2FsbGJhY2suaApAQCAtNjEsNiArNjEsMTIgQEAgd2Via2l0X2RvbV90ZXN0X2Nh
bGxiYWNrX2NhbGxiYWNrX3dpdGhfbm9uX2Jvb2xfcmV0dXJuX3R5cGUoV2ViS2l0RE9NVGVzdENh
bGxiYWMKIFdFQktJVF9BUEkgZ2Jvb2xlYW4KIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxs
YmFja193aXRoX3N0cmluZ19saXN0KFdlYktpdERPTVRlc3RDYWxsYmFjayogc2VsZiwgV2ViS2l0
RE9NRE9NU3RyaW5nTGlzdCogbGlzdF9wYXJhbSk7CiAKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dl
YmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFja193aXRoX2ludGVnZXIoV2ViS2l0RE9NVGVz
dENhbGxiYWNrKiBzZWxmLCBnaW50IGludF9wYXJhbSk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4K
K3dlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFja193aXRoX3Vuc2lnbmVkX2xvbmdfcGFy
YW0oV2ViS2l0RE9NVGVzdENhbGxiYWNrKiBzZWxmLCBndWxvbmcgdW5zaWduZWRfbG9uZ19wYXJh
bSk7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZiAvKiBXZWJLaXRET01UZXN0Q2FsbGJhY2tfaCAq
LwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDYWxsYmFjay5jcHAKaW5kZXggYTUyMzRkOS4uNTdjZjY4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2Fs
bGJhY2suY3BwCkBAIC02Niw3ICs2Niw2IEBAIGJvb2wgSlNUZXN0Q2FsbGJhY2s6OmNhbGxiYWNr
V2l0aE5vUGFyYW0oKQogCiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsK
IAotICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4
ZWMoKTsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogCiAgICAgYm9vbCByYWlzZWRF
eGNlcHRpb24gPSBmYWxzZTsKQEAgLTEyOSw2ICsxMjgsNDAgQEAgYm9vbCBKU1Rlc3RDYWxsYmFj
azo6Y2FsbGJhY2tXaXRoU3RyaW5nTGlzdChET01TdHJpbmdMaXN0KiBsaXN0UGFyYW0pCiAgICAg
cmV0dXJuICFyYWlzZWRFeGNlcHRpb247CiB9CiAKK2Jvb2wgSlNUZXN0Q2FsbGJhY2s6OmNhbGxi
YWNrV2l0aEludGVnZXIoaW50KiBpbnRQYXJhbSkKK3sKKyAgICBpZiAoIWNhbkludm9rZUNhbGxi
YWNrKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgUmVmUHRyPEpTVGVzdENhbGxiYWNr
PiBwcm90ZWN0KHRoaXMpOworCisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5
KTsKKworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgYXJncy5hcHBlbmQoanNO
dW1iZXIoc3RhdGljX2Nhc3Q8aW50PihpbnRQYXJhbSkpKTsKKworICAgIGJvb2wgcmFpc2VkRXhj
ZXB0aW9uID0gZmFsc2U7CisgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayhhcmdzLCAmcmFpc2Vk
RXhjZXB0aW9uKTsKKyAgICByZXR1cm4gIXJhaXNlZEV4Y2VwdGlvbjsKK30KKworYm9vbCBKU1Rl
c3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoVW5zaWduZWRMb25nUGFyYW0odW5zaWduZWQgdW5zaWdu
ZWRMb25nUGFyYW0pCit7CisgICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIFJlZlB0cjxKU1Rlc3RDYWxsYmFjaz4gcHJvdGVjdCh0aGlzKTsK
KworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CisKKyAgICBNYXJrZWRB
cmd1bWVudEJ1ZmZlciBhcmdzOworICAgIGFyZ3MuYXBwZW5kKGpzTnVtYmVyKHN0YXRpY19jYXN0
PGludD4odW5zaWduZWRMb25nUGFyYW0pKSk7CisKKyAgICBib29sIHJhaXNlZEV4Y2VwdGlvbiA9
IGZhbHNlOworICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywgJnJhaXNlZEV4Y2VwdGlv
bik7CisgICAgcmV0dXJuICFyYWlzZWRFeGNlcHRpb247Cit9CisKIH0KIAogI2VuZGlmIC8vIEVO
QUJMRShEQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmgKaW5kZXggMjI2ZTg3NC4uNjQ1MTc4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENh
bGxiYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENhbGxiYWNrLmgKQEAgLTQ2LDYgKzQ2LDggQEAgcHVibGljOgogICAgIENPTVBJTEVfQVNT
RVJUKGZhbHNlKSAgICB2aXJ0dWFsIGludCBjYWxsYmFja1dpdGhOb25Cb29sUmV0dXJuVHlwZShD
bGFzczMqIGNsYXNzM1BhcmFtKTsKICAgICB2aXJ0dWFsIGludCBjdXN0b21DYWxsYmFjayhDbGFz
czUqIGNsYXNzNVBhcmFtLCBDbGFzczYqIGNsYXNzNlBhcmFtKTsKICAgICB2aXJ0dWFsIGJvb2wg
Y2FsbGJhY2tXaXRoU3RyaW5nTGlzdChET01TdHJpbmdMaXN0KiBsaXN0UGFyYW0pOworICAgIHZp
cnR1YWwgYm9vbCBjYWxsYmFja1dpdGhJbnRlZ2VyKGludCogaW50UGFyYW0pOworICAgIHZpcnR1
YWwgYm9vbCBjYWxsYmFja1dpdGhVbnNpZ25lZExvbmdQYXJhbSh1bnNpZ25lZCB1bnNpZ25lZExv
bmdQYXJhbSk7CiAKIHByaXZhdGU6CiAgICAgSlNUZXN0Q2FsbGJhY2soSlNDOjpKU09iamVjdCog
Y2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2FsbGJhY2suaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDYWxsYmFjay5oCmluZGV4
IDNkNmY3YmQ5Li40NjBkYmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2FsbGJhY2suaApAQCAtNDMsNiArNDMs
OCBAQAogLSAoaW50KWNhbGxiYWNrV2l0aE5vbkJvb2xSZXR1cm5UeXBlOihET01DbGFzczMgKilj
bGFzczNQYXJhbTsKIC0gKGludCljdXN0b21DYWxsYmFjazooRE9NQ2xhc3M1ICopY2xhc3M1UGFy
YW0gY2xhc3M2UGFyYW06KERPTUNsYXNzNiAqKWNsYXNzNlBhcmFtOwogLSAoQk9PTCljYWxsYmFj
a1dpdGhTdHJpbmdMaXN0OihET01ET01TdHJpbmdMaXN0ICopbGlzdFBhcmFtOworLSAoQk9PTClj
YWxsYmFja1dpdGhJbnRlZ2VyOihpbnQpaW50UGFyYW07CistIChCT09MKWNhbGxiYWNrV2l0aFVu
c2lnbmVkTG9uZ1BhcmFtOih1bnNpZ25lZCl1bnNpZ25lZExvbmdQYXJhbTsKIEBlbmQKIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2Jq
Qy9ET01UZXN0Q2FsbGJhY2subW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvT2JqQy9ET01UZXN0Q2FsbGJhY2subW0KaW5kZXggZTA3MGRlNS4uM2E4YjgzNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENh
bGxiYWNrLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpD
L0RPTVRlc3RDYWxsYmFjay5tbQpAQCAtMTE3LDYgKzExNywxOCBAQAogICAgIHJldHVybiBJTVBM
LT5jYWxsYmFja1dpdGhTdHJpbmdMaXN0KGNvcmUobGlzdFBhcmFtKSk7CiB9CiAKKy0gKEJPT0wp
Y2FsbGJhY2tXaXRoSW50ZWdlcjooaW50KWludFBhcmFtCit7CisgICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5jYWxsYmFja1dpdGhJbnRl
Z2VyKGludFBhcmFtKTsKK30KKworLSAoQk9PTCljYWxsYmFja1dpdGhVbnNpZ25lZExvbmdQYXJh
bToodW5zaWduZWQpdW5zaWduZWRMb25nUGFyYW0KK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPmNhbGxiYWNrV2l0aFVuc2lnbmVk
TG9uZ1BhcmFtKHVuc2lnbmVkTG9uZ1BhcmFtKTsKK30KKwogQGVuZAogCiBXZWJDb3JlOjpUZXN0
Q2FsbGJhY2sqIGNvcmUoRE9NVGVzdENhbGxiYWNrICp3cmFwcGVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RDYWxsYmFjay5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxiYWNrLmlkbAppbmRleCAy
NDc1MjUxLi4yMjdjYzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdENhbGxiYWNrLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdENhbGxiYWNrLmlkbApAQCAtMzksNSArMzksNyBAQCBtb2R1bGUgdGVz
dCB7CiAgICAgICBsb25nIGNhbGxiYWNrV2l0aE5vbkJvb2xSZXR1cm5UeXBlKGluIENsYXNzMyBj
bGFzczNQYXJhbSk7CiAgICAgICBbQ3VzdG9tXSBsb25nIGN1c3RvbUNhbGxiYWNrKGluIENsYXNz
NSBjbGFzczVQYXJhbSwgaW4gQ2xhc3M2IGNsYXNzNlBhcmFtKTsKICAgICAgIGJvb2xlYW4gY2Fs
bGJhY2tXaXRoU3RyaW5nTGlzdChpbiBET01TdHJpbmdMaXN0IGxpc3RQYXJhbSk7CisgICAgICBi
b29sZWFuIGNhbGxiYWNrV2l0aEludGVnZXIoaW4gaW50IGludFBhcmFtKTsKKyAgICAgIGJvb2xl
YW4gY2FsbGJhY2tXaXRoVW5zaWduZWRMb25nUGFyYW0oaW4gdW5zaWduZWQgbG9uZyB1bnNpZ25l
ZExvbmdQYXJhbSk7CiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDYWxsYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q2FsbGJhY2suY3BwCmluZGV4IGMxN2Y3M2Qu
LjNkZmRhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RDYWxsYmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdENhbGxiYWNrLmNwcApAQCAtMjQsNiArMjQsNyBAQAogI2lmIEVO
QUJMRShEQVRBQkFTRSkKIAogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNp
bmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOENsYXNzMS5oIgogI2luY2x1ZGUgIlY4
Q2xhc3MyLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21Wb2lkQ2FsbGJhY2suaCIKQEAgLTE1OCw2ICsx
NTksNjAgQEAgYm9vbCBWOFRlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoU3RyaW5nTGlzdChQYXNz
UmVmUHRyPERPTVN0cmluZ0xpc3Q+IGxpc3RQYXJhbSkKICAgICByZXR1cm4gIWludm9rZUNhbGxi
YWNrKG1fY2FsbGJhY2ssIDEsIGFyZ3YsIGNhbGxiYWNrUmV0dXJuVmFsdWUsIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSk7CiB9CiAKK2Jvb2wgVjhUZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aElu
dGVnZXIoaW50IGludFBhcmFtKQoreworICAgIGlmICghY2FuSW52b2tlQ2FsbGJhY2soKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CisK
KyAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiB2OENvbnRleHQgPSB0b1Y4Q29udGV4dChzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIG1fd29ybGRDb250ZXh0KTsKKyAgICBpZiAodjhDb250ZXh0
LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICB2ODo6Q29udGV4dDo6U2Nv
cGUgc2NvcGUodjhDb250ZXh0KTsKKworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBpbnRQYXJh
bUhhbmRsZSA9IHY4OjpJbnRlZ2VyOjpOZXcoaW50UGFyYW0pOworICAgIGlmIChpbnRQYXJhbUhh
bmRsZS5Jc0VtcHR5KCkpIHsKKyAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsKKyAgICAgICAg
aW50UGFyYW1IYW5kbGUKKyAgICB9OworCisgICAgYm9vbCBjYWxsYmFja1JldHVyblZhbHVlID0g
ZmFsc2U7CisgICAgcmV0dXJuICFpbnZva2VDYWxsYmFjayhtX2NhbGxiYWNrLCAxLCBhcmd2LCBj
YWxsYmFja1JldHVyblZhbHVlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworfQorCitib29s
IFY4VGVzdENhbGxiYWNrOjpjYWxsYmFja1dpdGhVbnNpZ25lZExvbmdQYXJhbSh1bnNpZ25lZCB1
bnNpZ25lZExvbmdQYXJhbSkKK3sKKyAgICBpZiAoIWNhbkludm9rZUNhbGxiYWNrKCkpCisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworCisg
ICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0gdG9WOENvbnRleHQoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCBtX3dvcmxkQ29udGV4dCk7CisgICAgaWYgKHY4Q29udGV4dC5J
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgdjg6OkNvbnRleHQ6OlNjb3Bl
IHNjb3BlKHY4Q29udGV4dCk7CisKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdW5zaWduZWRM
b25nUGFyYW1IYW5kbGUgPSB2ODo6SW50ZWdlcjo6TmV3RnJvbVVuc2lnbmVkKHVuc2lnbmVkTG9u
Z1BhcmFtKTsKKyAgICBpZiAodW5zaWduZWRMb25nUGFyYW1IYW5kbGUuSXNFbXB0eSgpKSB7Cisg
ICAgICAgIENSQVNIKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7CisgICAgICAgIHVuc2lnbmVkTG9uZ1BhcmFtSGFu
ZGxlCisgICAgfTsKKworICAgIGJvb2wgY2FsbGJhY2tSZXR1cm5WYWx1ZSA9IGZhbHNlOworICAg
IHJldHVybiAhaW52b2tlQ2FsbGJhY2sobV9jYWxsYmFjaywgMSwgYXJndiwgY2FsbGJhY2tSZXR1
cm5WYWx1ZSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKERBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdENhbGxiYWNrLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q2FsbGJhY2suaAppbmRl
eCAxOTRmMTNjLi5lYmNiMmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q2FsbGJhY2suaApAQCAtNTEsNiArNTEsOCBAQCBw
dWJsaWM6CiAgICAgQ09NUElMRV9BU1NFUlQoZmFsc2UpICAgIHZpcnR1YWwgaW50IGNhbGxiYWNr
V2l0aE5vbkJvb2xSZXR1cm5UeXBlKENsYXNzMyogY2xhc3MzUGFyYW0pOwogICAgIHZpcnR1YWwg
aW50IGN1c3RvbUNhbGxiYWNrKENsYXNzNSogY2xhc3M1UGFyYW0sIENsYXNzNiogY2xhc3M2UGFy
YW0pOwogICAgIHZpcnR1YWwgYm9vbCBjYWxsYmFja1dpdGhTdHJpbmdMaXN0KFBhc3NSZWZQdHI8
RE9NU3RyaW5nTGlzdD4gbGlzdFBhcmFtKTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FsbGJhY2tXaXRo
SW50ZWdlcihpbnQgaW50UGFyYW0pOworICAgIHZpcnR1YWwgYm9vbCBjYWxsYmFja1dpdGhVbnNp
Z25lZExvbmdQYXJhbSh1bnNpZ25lZCB1bnNpZ25lZExvbmdQYXJhbSk7CiAKIHByaXZhdGU6CiAg
ICAgVjhUZXN0Q2FsbGJhY2sodjg6OkxvY2FsPHY4OjpPYmplY3Q+LCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0Kik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88424</attachid>
            <date>2011-04-06 08:10:38 -0700</date>
            <delta_ts>2011-04-06 22:09:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch</filename>
            <type>text/plain</type>
            <size>15593</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhYzBiYWZmLi42N2FmMzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAg
QEAKKzIwMTEtMDQtMDYgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEpTQyBiaW5kaW5n
cyBnZW5lcmF0b3I6IHN1cHBvcnQgbm9uLW9iamVjdCBudW1iZXJzIGFzIGNhbGxiYWNrIGFyZ3Vt
ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc5
NDgKKworICAgICAgICBDdXJyZW50IEpTQyBiaW5kaW5ncyBnZW5lcmF0b3IgZG9lcyBub3Qgc3Vw
cG9ydCBudW1lcmljIHBhcmFtZXRlcnMsIGJ1dAorICAgICAgICB0aGV5IHNob3VsZCBiZSBzdXBw
b3J0ZWQgKGFzIG90aGVyIGJpbmRpbmdzIGRvKS4KKworICAgICAgICBBZGRlZCB0ZXN0cyBpbiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxiYWNrLmlkbC4KKworICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOiBBZGRlZCBJc051bWVyaWNUeXBlIGhhbmRs
aW5nLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdENhbGxi
YWNrLmNwcDogVXBkYXRlZCAoZ2VuZXJhdGVkKS4KKyAgICAgICAgKFdlYkRPTVRlc3RDYWxsYmFj
azo6Y2FsbGJhY2tXaXRoSW50ZWdlcik6CisgICAgICAgIChXZWJET01UZXN0Q2FsbGJhY2s6OmNh
bGxiYWNrV2l0aFVuc2lnbmVkTG9uZ1BhcmFtKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQ1BQL1dlYkRPTVRlc3RDYWxsYmFjay5oOiBVcGRhdGVkIChnZW5lcmF0ZWQpLgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFj
ay5jcHA6IFVwZGF0ZWQgKGdlbmVyYXRlZCkuCisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfY2Fs
bGJhY2tfY2FsbGJhY2tfd2l0aF9pbnRlZ2VyKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9j
YWxsYmFja19jYWxsYmFja193aXRoX3Vuc2lnbmVkX2xvbmdfcGFyYW0pOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFjay5oOiBVcGRh
dGVkIChnZW5lcmF0ZWQpLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDYWxsYmFjay5jcHA6IFVwZGF0ZWQgKGdlbmVyYXRlZCkuCisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoTm9QYXJhbSk6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoSW50ZWdlcik6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoVW5zaWduZWRMb25nUGFyYW0pOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5oOiBVcGRhdGVkIChnZW5l
cmF0ZWQpLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDYWxs
YmFjay5oOiBVcGRhdGVkIChnZW5lcmF0ZWQpLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RDYWxsYmFjay5tbTogVXBkYXRlZCAoZ2VuZXJhdGVkKS4KKyAgICAg
ICAgKC1bRE9NVGVzdENhbGxiYWNrIGNhbGxiYWNrV2l0aEludGVnZXI6XSk6CisgICAgICAgICgt
W0RPTVRlc3RDYWxsYmFjayBjYWxsYmFja1dpdGhVbnNpZ25lZExvbmdQYXJhbTpdKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxiYWNrLmlkbDogQWRkZWQgdGVzdCBj
YWxsYmFjayBtZXRob2RzCisgICAgICAgIHRoYXQgdGFrZSBudW1lcmljIHBhcmFtZXRlcnMuCisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdENhbGxiYWNrLmNwcDogVXBk
YXRlZCAoZ2VuZXJhdGVkKS4KKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdENhbGxiYWNrOjpjYWxs
YmFja1dpdGhJbnRlZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdENhbGxiYWNrOjpjYWxs
YmFja1dpdGhVbnNpZ25lZExvbmdQYXJhbSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdENhbGxiYWNrLmg6IFVwZGF0ZWQgKGdlbmVyYXRlZCkuCisKIDIwMTEtMDMt
MzAgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggMTJiNDc3Yi4uNjJiMjk0MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KQEAgLTIyNjQsOSArMjI2NCwxMSBAQCBzdWIgR2VuZXJhdGVDYWxsYmFja0ltcGxlbWVudGF0
aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIiAuIEdldE5hdGl2ZVR5cGUo
JGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUpIC4gIiAke2NsYXNzTmFtZX06OiIgLiAkZnVuY3Rp
b24tPnNpZ25hdHVyZS0+bmFtZSAuICIoIik7CiAKICAgICAgICAgICAgIG15IEBhcmdzID0gKCk7
CisgICAgICAgICAgICBteSAkbmVlZEV4ZWNTdGF0ZSA9IDA7CiAgICAgICAgICAgICBmb3JlYWNo
IG15ICRwYXJhbSAoQHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFkZEluY2x1ZGVzRm9yVHlw
ZSgkcGFyYW0tPnR5cGUsIDEpOwogICAgICAgICAgICAgICAgIHB1c2goQGFyZ3MsIEdldE5hdGl2
ZVR5cGUoJHBhcmFtLT50eXBlKSAuICIgIiAuICRwYXJhbS0+bmFtZSk7CisgICAgICAgICAgICAg
ICAgJG5lZWRFeGVjU3RhdGUgPSAxIGlmICghJGNvZGVHZW5lcmF0b3ItPklzTnVtZXJpY1R5cGUo
JHBhcmFtLT50eXBlKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgam9pbigiLCAiLCBAYXJncykpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIpXG4iKTsKQEAgLTIyNzYsMTMgKzIyNzgsMTUgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tJbXBs
ZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVy
biB0cnVlO1xuXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFJlZlB0
cjwkY2xhc3NOYW1lPiBwcm90ZWN0KHRoaXMpO1xuXG4iKTsKICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7XG5cbiIp
OwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgRXhlY1N0YXRlKiBleGVjID0g
bV9kYXRhLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpO1xuIik7CisgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBFeGVjU3RhdGUqIGV4ZWMgPSBtX2RhdGEtPmdsb2JhbE9i
amVjdCgpLT5nbG9iYWxFeGVjKCk7XG4iKSBpZiAkbmVlZEV4ZWNTdGF0ZTsKICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7XG4iKTsK
IAogICAgICAgICAgICAgZm9yZWFjaCBteSAkcGFyYW0gKEBwYXJhbXMpIHsKICAgICAgICAgICAg
ICAgICBteSAkcGFyYW1OYW1lID0gJHBhcmFtLT5uYW1lOwogICAgICAgICAgICAgICAgIGlmICgk
cGFyYW0tPnR5cGUgZXEgIkRPTVN0cmluZyIpIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgYXJncy5hcHBlbmQoanNTdHJpbmcoZXhlYywgJHtwYXJhbU5hbWV9
KSk7XG4iKTsKKyAgICAgICAgICAgICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SXNOdW1l
cmljVHlwZSgkcGFyYW0tPnR5cGUpKSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGFyZ3MuYXBwZW5kKGpzTnVtYmVyKHN0YXRpY19jYXN0PGludD4oJHtwYXJh
bU5hbWV9KSkpO1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXJncy5hcHBlbmQodG9KUyhleGVjLCAke3Bh
cmFtTmFtZX0pKTtcbiIpOwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdENhbGxiYWNrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdENhbGxi
YWNrLmNwcAppbmRleCBkMTJkMGMzLi5iNGI2NzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RDYWxsYmFjay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0Q2FsbGJh
Y2suY3BwCkBAIC0xMjUsNiArMTI1LDIyIEBAIGJvb2wgV2ViRE9NVGVzdENhbGxiYWNrOjpjYWxs
YmFja1dpdGhTdHJpbmdMaXN0KGNvbnN0IFdlYkRPTURPTVN0cmluZ0xpc3QmIGxpc3RQCiAgICAg
cmV0dXJuIGltcGwoKS0+Y2FsbGJhY2tXaXRoU3RyaW5nTGlzdCh0b1dlYkNvcmUobGlzdFBhcmFt
KSk7CiB9CiAKK2Jvb2wgV2ViRE9NVGVzdENhbGxiYWNrOjpjYWxsYmFja1dpdGhJbnRlZ2VyKGlu
dCBpbnRQYXJhbSkKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgcmV0dXJuIGltcGwoKS0+Y2FsbGJhY2tXaXRoSW50ZWdlcihpbnRQYXJhbSk7Cit9CisK
K2Jvb2wgV2ViRE9NVGVzdENhbGxiYWNrOjpjYWxsYmFja1dpdGhVbnNpZ25lZExvbmdQYXJhbSh1
bnNpZ25lZCB1bnNpZ25lZExvbmdQYXJhbSkKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGltcGwoKS0+Y2FsbGJhY2tXaXRoVW5zaWduZWRM
b25nUGFyYW0odW5zaWduZWRMb25nUGFyYW0pOworfQorCiBXZWJDb3JlOjpUZXN0Q2FsbGJhY2sq
IHRvV2ViQ29yZShjb25zdCBXZWJET01UZXN0Q2FsbGJhY2smIHdyYXBwZXIpCiB7CiAgICAgcmV0
dXJuIHdyYXBwZXIuaW1wbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0Q2FsbGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdENhbGxiYWNrLmgKaW5kZXggOGQxMWE0
Yi4uYzc5YWY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0NQUC9XZWJET01UZXN0Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RDYWxsYmFjay5oCkBAIC01Myw2ICs1Myw4IEBA
IHB1YmxpYzoKICAgICBpbnQgY2FsbGJhY2tXaXRoTm9uQm9vbFJldHVyblR5cGUoY29uc3QgV2Vi
RE9NQ2xhc3MzJiBjbGFzczNQYXJhbSk7CiAgICAgaW50IGN1c3RvbUNhbGxiYWNrKGNvbnN0IFdl
YkRPTUNsYXNzNSYgY2xhc3M1UGFyYW0sIGNvbnN0IFdlYkRPTUNsYXNzNiYgY2xhc3M2UGFyYW0p
OwogICAgIGJvb2wgY2FsbGJhY2tXaXRoU3RyaW5nTGlzdChjb25zdCBXZWJET01ET01TdHJpbmdM
aXN0JiBsaXN0UGFyYW0pOworICAgIGJvb2wgY2FsbGJhY2tXaXRoSW50ZWdlcihpbnQgaW50UGFy
YW0pOworICAgIGJvb2wgY2FsbGJhY2tXaXRoVW5zaWduZWRMb25nUGFyYW0odW5zaWduZWQgdW5z
aWduZWRMb25nUGFyYW0pOwogCiAgICAgV2ViQ29yZTo6VGVzdENhbGxiYWNrKiBpbXBsKCkgY29u
c3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9H
T2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2suY3BwCmluZGV4IGI2
M2Y1MGUuLjhkMWQzZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFjay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdENhbGxiYWNr
LmNwcApAQCAtMTM1LDYgKzEzNSwyNiBAQCB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfY2FsbGJh
Y2tfd2l0aF9zdHJpbmdfbGlzdChXZWJLaXRET01UZXN0Q2FsbGJhY2sqIHNlbGYsCiAgICAgcmV0
dXJuIHJlczsKIH0KIAorZ2Jvb2xlYW4KK3dlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFj
a193aXRoX2ludGVnZXIoV2ViS2l0RE9NVGVzdENhbGxiYWNrKiBzZWxmLCBnaW50IGludF9wYXJh
bSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKKyAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6VGVzdENhbGxiYWNrICog
aXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBnYm9vbGVhbiByZXMgPSBpdGVtLT5jYWxs
YmFja1dpdGhJbnRlZ2VyKGludF9wYXJhbSk7CisgICAgcmV0dXJuIHJlczsKK30KKworZ2Jvb2xl
YW4KK3dlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFja193aXRoX3Vuc2lnbmVkX2xvbmdf
cGFyYW0oV2ViS2l0RE9NVGVzdENhbGxiYWNrKiBzZWxmLCBndWxvbmcgdW5zaWduZWRfbG9uZ19w
YXJhbSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKKyAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6VGVzdENhbGxiYWNr
ICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBnYm9vbGVhbiByZXMgPSBpdGVtLT5j
YWxsYmFja1dpdGhVbnNpZ25lZExvbmdQYXJhbSh1bnNpZ25lZF9sb25nX3BhcmFtKTsKKyAgICBy
ZXR1cm4gcmVzOworfQorCiAKIEdfREVGSU5FX1RZUEUoV2ViS2l0RE9NVGVzdENhbGxiYWNrLCB3
ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2ssIFdFQktJVF9UWVBFX0RPTV9PQkpFQ1QpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktp
dERPTVRlc3RDYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0dPYmplY3QvV2ViS2l0RE9NVGVzdENhbGxiYWNrLmgKaW5kZXggNTQxYWZiMi4uZjI5YzY0NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3Qv
V2ViS2l0RE9NVGVzdENhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdENhbGxiYWNrLmgKQEAgLTYxLDYgKzYxLDEy
IEBAIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFja193aXRoX25vbl9ib29sX3JldHVy
bl90eXBlKFdlYktpdERPTVRlc3RDYWxsYmFjCiBXRUJLSVRfQVBJIGdib29sZWFuCiB3ZWJraXRf
ZG9tX3Rlc3RfY2FsbGJhY2tfY2FsbGJhY2tfd2l0aF9zdHJpbmdfbGlzdChXZWJLaXRET01UZXN0
Q2FsbGJhY2sqIHNlbGYsIFdlYktpdERPTURPTVN0cmluZ0xpc3QqIGxpc3RfcGFyYW0pOwogCitX
RUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfY2FsbGJhY2tfd2l0
aF9pbnRlZ2VyKFdlYktpdERPTVRlc3RDYWxsYmFjayogc2VsZiwgZ2ludCBpbnRfcGFyYW0pOwor
CitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfY2FsbGJhY2tf
d2l0aF91bnNpZ25lZF9sb25nX3BhcmFtKFdlYktpdERPTVRlc3RDYWxsYmFjayogc2VsZiwgZ3Vs
b25nIHVuc2lnbmVkX2xvbmdfcGFyYW0pOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYgLyogV2Vi
S2l0RE9NVGVzdENhbGxiYWNrX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suY3BwCmluZGV4IGE1MjM0ZDku
LjU3Y2Y2ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDYWxsYmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmNwcApAQCAtNjYsNyArNjYsNiBAQCBib29sIEpT
VGVzdENhbGxiYWNrOjpjYWxsYmFja1dpdGhOb1BhcmFtKCkKIAogICAgIEpTTG9jayBsb2NrKFNp
bGVuY2VBc3NlcnRpb25zT25seSk7CiAKLSAgICBFeGVjU3RhdGUqIGV4ZWMgPSBtX2RhdGEtPmds
b2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJn
czsKIAogICAgIGJvb2wgcmFpc2VkRXhjZXB0aW9uID0gZmFsc2U7CkBAIC0xMjksNiArMTI4LDQw
IEBAIGJvb2wgSlNUZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aFN0cmluZ0xpc3QoRE9NU3RyaW5n
TGlzdCogbGlzdFBhcmFtKQogICAgIHJldHVybiAhcmFpc2VkRXhjZXB0aW9uOwogfQogCitib29s
IEpTVGVzdENhbGxiYWNrOjpjYWxsYmFja1dpdGhJbnRlZ2VyKGludCogaW50UGFyYW0pCit7Cisg
ICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IFJlZlB0cjxKU1Rlc3RDYWxsYmFjaz4gcHJvdGVjdCh0aGlzKTsKKworICAgIEpTTG9jayBsb2Nr
KFNpbGVuY2VBc3NlcnRpb25zT25seSk7CisKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdz
OworICAgIGFyZ3MuYXBwZW5kKGpzTnVtYmVyKHN0YXRpY19jYXN0PGludD4oaW50UGFyYW0pKSk7
CisKKyAgICBib29sIHJhaXNlZEV4Y2VwdGlvbiA9IGZhbHNlOworICAgIG1fZGF0YS0+aW52b2tl
Q2FsbGJhY2soYXJncywgJnJhaXNlZEV4Y2VwdGlvbik7CisgICAgcmV0dXJuICFyYWlzZWRFeGNl
cHRpb247Cit9CisKK2Jvb2wgSlNUZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aFVuc2lnbmVkTG9u
Z1BhcmFtKHVuc2lnbmVkIHVuc2lnbmVkTG9uZ1BhcmFtKQoreworICAgIGlmICghY2FuSW52b2tl
Q2FsbGJhY2soKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBSZWZQdHI8SlNUZXN0Q2Fs
bGJhY2s+IHByb3RlY3QodGhpcyk7CisKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9u
c09ubHkpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICBhcmdzLmFwcGVu
ZChqc051bWJlcihzdGF0aWNfY2FzdDxpbnQ+KHVuc2lnbmVkTG9uZ1BhcmFtKSkpOworCisgICAg
Ym9vbCByYWlzZWRFeGNlcHRpb24gPSBmYWxzZTsKKyAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNr
KGFyZ3MsICZyYWlzZWRFeGNlcHRpb24pOworICAgIHJldHVybiAhcmFpc2VkRXhjZXB0aW9uOwor
fQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5oCmluZGV4
IDIyNmU4NzQuLjY0NTE3ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5oCkBAIC00Niw2ICs0Niw4IEBAIHB1
YmxpYzoKICAgICBDT01QSUxFX0FTU0VSVChmYWxzZSkgICAgdmlydHVhbCBpbnQgY2FsbGJhY2tX
aXRoTm9uQm9vbFJldHVyblR5cGUoQ2xhc3MzKiBjbGFzczNQYXJhbSk7CiAgICAgdmlydHVhbCBp
bnQgY3VzdG9tQ2FsbGJhY2soQ2xhc3M1KiBjbGFzczVQYXJhbSwgQ2xhc3M2KiBjbGFzczZQYXJh
bSk7CiAgICAgdmlydHVhbCBib29sIGNhbGxiYWNrV2l0aFN0cmluZ0xpc3QoRE9NU3RyaW5nTGlz
dCogbGlzdFBhcmFtKTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FsbGJhY2tXaXRoSW50ZWdlcihpbnQq
IGludFBhcmFtKTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FsbGJhY2tXaXRoVW5zaWduZWRMb25nUGFy
YW0odW5zaWduZWQgdW5zaWduZWRMb25nUGFyYW0pOwogCiBwcml2YXRlOgogICAgIEpTVGVzdENh
bGxiYWNrKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVz
dENhbGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9E
T01UZXN0Q2FsbGJhY2suaAppbmRleCAzZDZmN2JkOS4uNDYwZGJmYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENhbGxiYWNrLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENh
bGxiYWNrLmgKQEAgLTQzLDYgKzQzLDggQEAKIC0gKGludCljYWxsYmFja1dpdGhOb25Cb29sUmV0
dXJuVHlwZTooRE9NQ2xhc3MzICopY2xhc3MzUGFyYW07CiAtIChpbnQpY3VzdG9tQ2FsbGJhY2s6
KERPTUNsYXNzNSAqKWNsYXNzNVBhcmFtIGNsYXNzNlBhcmFtOihET01DbGFzczYgKiljbGFzczZQ
YXJhbTsKIC0gKEJPT0wpY2FsbGJhY2tXaXRoU3RyaW5nTGlzdDooRE9NRE9NU3RyaW5nTGlzdCAq
KWxpc3RQYXJhbTsKKy0gKEJPT0wpY2FsbGJhY2tXaXRoSW50ZWdlcjooaW50KWludFBhcmFtOwor
LSAoQk9PTCljYWxsYmFja1dpdGhVbnNpZ25lZExvbmdQYXJhbToodW5zaWduZWQpdW5zaWduZWRM
b25nUGFyYW07CiBAZW5kCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENhbGxiYWNrLm1tIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENhbGxiYWNrLm1tCmluZGV4IGUw
NzBkZTUuLjNhOGI4MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9PYmpDL0RPTVRlc3RDYWxsYmFjay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2FsbGJhY2subW0KQEAgLTExNyw2ICsxMTcs
MTggQEAKICAgICByZXR1cm4gSU1QTC0+Y2FsbGJhY2tXaXRoU3RyaW5nTGlzdChjb3JlKGxpc3RQ
YXJhbSkpOwogfQogCistIChCT09MKWNhbGxiYWNrV2l0aEludGVnZXI6KGludClpbnRQYXJhbQor
eworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4g
SU1QTC0+Y2FsbGJhY2tXaXRoSW50ZWdlcihpbnRQYXJhbSk7Cit9CisKKy0gKEJPT0wpY2FsbGJh
Y2tXaXRoVW5zaWduZWRMb25nUGFyYW06KHVuc2lnbmVkKXVuc2lnbmVkTG9uZ1BhcmFtCit7Cisg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBM
LT5jYWxsYmFja1dpdGhVbnNpZ25lZExvbmdQYXJhbSh1bnNpZ25lZExvbmdQYXJhbSk7Cit9CisK
IEBlbmQKIAogV2ViQ29yZTo6VGVzdENhbGxiYWNrKiBjb3JlKERPTVRlc3RDYWxsYmFjayAqd3Jh
cHBlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0Q2FsbGJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RDYWxsYmFjay5pZGwKaW5kZXggMjQ3NTI1MS4uMjI3Y2MzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RDYWxsYmFjay5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RDYWxsYmFjay5pZGwKQEAgLTM5
LDUgKzM5LDcgQEAgbW9kdWxlIHRlc3QgewogICAgICAgbG9uZyBjYWxsYmFja1dpdGhOb25Cb29s
UmV0dXJuVHlwZShpbiBDbGFzczMgY2xhc3MzUGFyYW0pOwogICAgICAgW0N1c3RvbV0gbG9uZyBj
dXN0b21DYWxsYmFjayhpbiBDbGFzczUgY2xhc3M1UGFyYW0sIGluIENsYXNzNiBjbGFzczZQYXJh
bSk7CiAgICAgICBib29sZWFuIGNhbGxiYWNrV2l0aFN0cmluZ0xpc3QoaW4gRE9NU3RyaW5nTGlz
dCBsaXN0UGFyYW0pOworICAgICAgYm9vbGVhbiBjYWxsYmFja1dpdGhJbnRlZ2VyKGluIGludCBp
bnRQYXJhbSk7CisgICAgICBib29sZWFuIGNhbGxiYWNrV2l0aFVuc2lnbmVkTG9uZ1BhcmFtKGlu
IHVuc2lnbmVkIGxvbmcgdW5zaWduZWRMb25nUGFyYW0pOwogICAgIH07CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q2FsbGJhY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdENhbGxi
YWNrLmNwcAppbmRleCBjMTdmNzNkLi4zZGZkYTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q2FsbGJhY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDYWxsYmFjay5jcHAKQEAg
LTI0LDYgKzI0LDcgQEAKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhD
bGFzczEuaCIKICNpbmNsdWRlICJWOENsYXNzMi5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tVm9pZENh
bGxiYWNrLmgiCkBAIC0xNTgsNiArMTU5LDYwIEBAIGJvb2wgVjhUZXN0Q2FsbGJhY2s6OmNhbGxi
YWNrV2l0aFN0cmluZ0xpc3QoUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBsaXN0UGFyYW0pCiAg
ICAgcmV0dXJuICFpbnZva2VDYWxsYmFjayhtX2NhbGxiYWNrLCAxLCBhcmd2LCBjYWxsYmFja1Jl
dHVyblZhbHVlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogfQogCitib29sIFY4VGVzdENh
bGxiYWNrOjpjYWxsYmFja1dpdGhJbnRlZ2VyKGludCBpbnRQYXJhbSkKK3sKKyAgICBpZiAoIWNh
bkludm9rZUNhbGxiYWNrKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgdjg6OkhhbmRs
ZVNjb3BlIGhhbmRsZVNjb3BlOworCisgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gdjhDb250
ZXh0ID0gdG9WOENvbnRleHQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX3dvcmxkQ29udGV4
dCk7CisgICAgaWYgKHY4Q29udGV4dC5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKHY4Q29udGV4dCk7CisKKyAgICB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gaW50UGFyYW1IYW5kbGUgPSB2ODo6SW50ZWdlcjo6TmV3KGludFBhcmFt
KTsKKyAgICBpZiAoaW50UGFyYW1IYW5kbGUuSXNFbXB0eSgpKSB7CisgICAgICAgIENSQVNIKCk7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBhcmd2W10gPSB7CisgICAgICAgIGludFBhcmFtSGFuZGxlCisgICAgfTsKKworICAgIGJvb2wg
Y2FsbGJhY2tSZXR1cm5WYWx1ZSA9IGZhbHNlOworICAgIHJldHVybiAhaW52b2tlQ2FsbGJhY2so
bV9jYWxsYmFjaywgMSwgYXJndiwgY2FsbGJhY2tSZXR1cm5WYWx1ZSwgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKTsKK30KKworYm9vbCBWOFRlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoVW5zaWdu
ZWRMb25nUGFyYW0odW5zaWduZWQgdW5zaWduZWRMb25nUGFyYW0pCit7CisgICAgaWYgKCFjYW5J
bnZva2VDYWxsYmFjaygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHY4OjpIYW5kbGVT
Y29wZSBoYW5kbGVTY29wZTsKKworICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IHY4Q29udGV4
dCA9IHRvVjhDb250ZXh0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV93b3JsZENvbnRleHQp
OworICAgIGlmICh2OENvbnRleHQuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZSh2OENvbnRleHQpOworCisgICAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHVuc2lnbmVkTG9uZ1BhcmFtSGFuZGxlID0gdjg6OkludGVnZXI6Ok5ld0Zy
b21VbnNpZ25lZCh1bnNpZ25lZExvbmdQYXJhbSk7CisgICAgaWYgKHVuc2lnbmVkTG9uZ1BhcmFt
SGFuZGxlLklzRW1wdHkoKSkgeworICAgICAgICBDUkFTSCgpOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geworICAgICAg
ICB1bnNpZ25lZExvbmdQYXJhbUhhbmRsZQorICAgIH07CisKKyAgICBib29sIGNhbGxiYWNrUmV0
dXJuVmFsdWUgPSBmYWxzZTsKKyAgICByZXR1cm4gIWludm9rZUNhbGxiYWNrKG1fY2FsbGJhY2ss
IDEsIGFyZ3YsIGNhbGxiYWNrUmV0dXJuVmFsdWUsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShEQVRBQkFT
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RDYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdENhbGxiYWNrLmgKaW5kZXggMTk0ZjEzYy4uZWJjYjJmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdENhbGxiYWNrLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdENhbGxiYWNr
LmgKQEAgLTUxLDYgKzUxLDggQEAgcHVibGljOgogICAgIENPTVBJTEVfQVNTRVJUKGZhbHNlKSAg
ICB2aXJ0dWFsIGludCBjYWxsYmFja1dpdGhOb25Cb29sUmV0dXJuVHlwZShDbGFzczMqIGNsYXNz
M1BhcmFtKTsKICAgICB2aXJ0dWFsIGludCBjdXN0b21DYWxsYmFjayhDbGFzczUqIGNsYXNzNVBh
cmFtLCBDbGFzczYqIGNsYXNzNlBhcmFtKTsKICAgICB2aXJ0dWFsIGJvb2wgY2FsbGJhY2tXaXRo
U3RyaW5nTGlzdChQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGxpc3RQYXJhbSk7CisgICAgdmly
dHVhbCBib29sIGNhbGxiYWNrV2l0aEludGVnZXIoaW50IGludFBhcmFtKTsKKyAgICB2aXJ0dWFs
IGJvb2wgY2FsbGJhY2tXaXRoVW5zaWduZWRMb25nUGFyYW0odW5zaWduZWQgdW5zaWduZWRMb25n
UGFyYW0pOwogCiBwcml2YXRlOgogICAgIFY4VGVzdENhbGxiYWNrKHY4OjpMb2NhbDx2ODo6T2Jq
ZWN0PiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwo=
</data>
<flag name="review"
          id="80918"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88571</attachid>
            <date>2011-04-06 22:09:06 -0700</date>
            <delta_ts>2011-04-06 22:35:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch</filename>
            <type>text/plain</type>
            <size>17808</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhYzBiYWZmLi42N2FmMzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAg
QEAKKzIwMTEtMDQtMDYgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEpTQyBiaW5kaW5n
cyBnZW5lcmF0b3I6IHN1cHBvcnQgbm9uLW9iamVjdCBudW1iZXJzIGFzIGNhbGxiYWNrIGFyZ3Vt
ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc5
NDgKKworICAgICAgICBDdXJyZW50IEpTQyBiaW5kaW5ncyBnZW5lcmF0b3IgZG9lcyBub3Qgc3Vw
cG9ydCBudW1lcmljIHBhcmFtZXRlcnMsIGJ1dAorICAgICAgICB0aGV5IHNob3VsZCBiZSBzdXBw
b3J0ZWQgKGFzIG90aGVyIGJpbmRpbmdzIGRvKS4KKworICAgICAgICBBZGRlZCB0ZXN0cyBpbiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxiYWNrLmlkbC4KKworICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOiBBZGRlZCBJc051bWVyaWNUeXBlIGhhbmRs
aW5nLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdENhbGxi
YWNrLmNwcDogVXBkYXRlZCAoZ2VuZXJhdGVkKS4KKyAgICAgICAgKFdlYkRPTVRlc3RDYWxsYmFj
azo6Y2FsbGJhY2tXaXRoSW50ZWdlcik6CisgICAgICAgIChXZWJET01UZXN0Q2FsbGJhY2s6OmNh
bGxiYWNrV2l0aFVuc2lnbmVkTG9uZ1BhcmFtKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQ1BQL1dlYkRPTVRlc3RDYWxsYmFjay5oOiBVcGRhdGVkIChnZW5lcmF0ZWQpLgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFj
ay5jcHA6IFVwZGF0ZWQgKGdlbmVyYXRlZCkuCisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfY2Fs
bGJhY2tfY2FsbGJhY2tfd2l0aF9pbnRlZ2VyKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9j
YWxsYmFja19jYWxsYmFja193aXRoX3Vuc2lnbmVkX2xvbmdfcGFyYW0pOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFjay5oOiBVcGRh
dGVkIChnZW5lcmF0ZWQpLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDYWxsYmFjay5jcHA6IFVwZGF0ZWQgKGdlbmVyYXRlZCkuCisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoTm9QYXJhbSk6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoSW50ZWdlcik6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoVW5zaWduZWRMb25nUGFyYW0pOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5oOiBVcGRhdGVkIChnZW5l
cmF0ZWQpLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDYWxs
YmFjay5oOiBVcGRhdGVkIChnZW5lcmF0ZWQpLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RDYWxsYmFjay5tbTogVXBkYXRlZCAoZ2VuZXJhdGVkKS4KKyAgICAg
ICAgKC1bRE9NVGVzdENhbGxiYWNrIGNhbGxiYWNrV2l0aEludGVnZXI6XSk6CisgICAgICAgICgt
W0RPTVRlc3RDYWxsYmFjayBjYWxsYmFja1dpdGhVbnNpZ25lZExvbmdQYXJhbTpdKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxiYWNrLmlkbDogQWRkZWQgdGVzdCBj
YWxsYmFjayBtZXRob2RzCisgICAgICAgIHRoYXQgdGFrZSBudW1lcmljIHBhcmFtZXRlcnMuCisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdENhbGxiYWNrLmNwcDogVXBk
YXRlZCAoZ2VuZXJhdGVkKS4KKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdENhbGxiYWNrOjpjYWxs
YmFja1dpdGhJbnRlZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdENhbGxiYWNrOjpjYWxs
YmFja1dpdGhVbnNpZ25lZExvbmdQYXJhbSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdENhbGxiYWNrLmg6IFVwZGF0ZWQgKGdlbmVyYXRlZCkuCisKIDIwMTEtMDMt
MzAgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggMTJiNDc3Yi4uMzc2MWJmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KQEAgLTIyNjQsOSArMjI2NCwxMSBAQCBzdWIgR2VuZXJhdGVDYWxsYmFja0ltcGxlbWVudGF0
aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIiAuIEdldE5hdGl2ZVR5cGUo
JGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUpIC4gIiAke2NsYXNzTmFtZX06OiIgLiAkZnVuY3Rp
b24tPnNpZ25hdHVyZS0+bmFtZSAuICIoIik7CiAKICAgICAgICAgICAgIG15IEBhcmdzID0gKCk7
CisgICAgICAgICAgICBteSAkbmVlZEV4ZWNTdGF0ZSA9IDA7CiAgICAgICAgICAgICBmb3JlYWNo
IG15ICRwYXJhbSAoQHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFkZEluY2x1ZGVzRm9yVHlw
ZSgkcGFyYW0tPnR5cGUsIDEpOwogICAgICAgICAgICAgICAgIHB1c2goQGFyZ3MsIEdldE5hdGl2
ZVR5cGUoJHBhcmFtLT50eXBlKSAuICIgIiAuICRwYXJhbS0+bmFtZSk7CisgICAgICAgICAgICAg
ICAgJG5lZWRFeGVjU3RhdGUgPSAxIGlmICghJGNvZGVHZW5lcmF0b3ItPklzTnVtZXJpY1R5cGUo
JHBhcmFtLT50eXBlKSB8fCAhSXNOYXRpdmVUeXBlKCRwYXJhbS0+dHlwZSkpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIGpvaW4oIiwgIiwgQGFyZ3MpKTsK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiKVxuIik7CkBAIC0yMjc2LDEzICsyMjc4
LDE2IEBAIHN1YiBHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdHJ1ZTtcblxuIik7CiAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBSZWZQdHI8JGNsYXNzTmFtZT4gcHJvdGVjdCh0aGlz
KTtcblxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU0xvY2sgbG9j
ayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpO1xuXG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPmds
b2JhbEV4ZWMoKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgRXhl
Y1N0YXRlKiBleGVjID0gbV9kYXRhLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpO1xuIikg
aWYgJG5lZWRFeGVjU3RhdGU7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBN
YXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzO1xuIik7CiAKICAgICAgICAgICAgIGZvcmVhY2ggbXkg
JHBhcmFtIChAcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgbXkgJHBhcmFtTmFtZSA9ICRwYXJh
bS0+bmFtZTsKICAgICAgICAgICAgICAgICBpZiAoJHBhcmFtLT50eXBlIGVxICJET01TdHJpbmci
KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGFyZ3MuYXBw
ZW5kKGpzU3RyaW5nKGV4ZWMsICR7cGFyYW1OYW1lfSkpO1xuIik7CisgICAgICAgICAgICAgICAg
fSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPklzTnVtZXJpY1R5cGUoJHBhcmFtLT50eXBlKSAmJiBJ
c05hdGl2ZVR5cGUoJHBhcmFtLT50eXBlKSkgeworICAgICAgICAgICAgICAgICAgICBteSAkcGFy
YW1UeXBlID0gKCRwYXJhbS0+dHlwZSBlcSAiZmxvYXQiKSA/ICJkb3VibGUiIDogR2V0TmF0aXZl
VHlwZSgkcGFyYW0tPnR5cGUpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBhcmdzLmFwcGVuZChqc051bWJlcihzdGF0aWNfY2FzdDwkcGFyYW1UeXBlPigke3Bh
cmFtTmFtZX0pKSk7XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhcmdzLmFwcGVuZCh0b0pTKGV4ZWMsICR7
cGFyYW1OYW1lfSkpO1xuIik7CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0Q2FsbGJhY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0Q2Fs
bGJhY2suY3BwCmluZGV4IGQxMmQwYzMuLjc3NzE1ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdENhbGxiYWNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RDYWxs
YmFjay5jcHAKQEAgLTEyNSw2ICsxMjUsMzAgQEAgYm9vbCBXZWJET01UZXN0Q2FsbGJhY2s6OmNh
bGxiYWNrV2l0aFN0cmluZ0xpc3QoY29uc3QgV2ViRE9NRE9NU3RyaW5nTGlzdCYgbGlzdFAKICAg
ICByZXR1cm4gaW1wbCgpLT5jYWxsYmFja1dpdGhTdHJpbmdMaXN0KHRvV2ViQ29yZShsaXN0UGFy
YW0pKTsKIH0KIAorYm9vbCBXZWJET01UZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aEludGVnZXIo
aW50IGludFBhcmFtKQoreworICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXR1cm4gaW1wbCgpLT5jYWxsYmFja1dpdGhJbnRlZ2VyKGludFBhcmFtKTsKK30K
KworYm9vbCBXZWJET01UZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aEZsb2F0KGZsb2F0IGZsb2F0
UGFyYW0pCit7CisgICAgaWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHJldHVybiBpbXBsKCktPmNhbGxiYWNrV2l0aEZsb2F0KGZsb2F0UGFyYW0pOworfQorCitib29s
IFdlYkRPTVRlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoTG9uZ0xvbmdQYXJhbShsb25nIGxvbmcg
bG9uZ0xvbmdQYXJhbSkKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgcmV0dXJuIGltcGwoKS0+Y2FsbGJhY2tXaXRoTG9uZ0xvbmdQYXJhbShsb25nTG9u
Z1BhcmFtKTsKK30KKwogV2ViQ29yZTo6VGVzdENhbGxiYWNrKiB0b1dlYkNvcmUoY29uc3QgV2Vi
RE9NVGVzdENhbGxiYWNrJiB3cmFwcGVyKQogewogICAgIHJldHVybiB3cmFwcGVyLmltcGwoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2Vi
RE9NVGVzdENhbGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
Q1BQL1dlYkRPTVRlc3RDYWxsYmFjay5oCmluZGV4IDhkMTFhNGIuLmUxMDUzM2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdENh
bGxiYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9X
ZWJET01UZXN0Q2FsbGJhY2suaApAQCAtNTMsNiArNTMsOSBAQCBwdWJsaWM6CiAgICAgaW50IGNh
bGxiYWNrV2l0aE5vbkJvb2xSZXR1cm5UeXBlKGNvbnN0IFdlYkRPTUNsYXNzMyYgY2xhc3MzUGFy
YW0pOwogICAgIGludCBjdXN0b21DYWxsYmFjayhjb25zdCBXZWJET01DbGFzczUmIGNsYXNzNVBh
cmFtLCBjb25zdCBXZWJET01DbGFzczYmIGNsYXNzNlBhcmFtKTsKICAgICBib29sIGNhbGxiYWNr
V2l0aFN0cmluZ0xpc3QoY29uc3QgV2ViRE9NRE9NU3RyaW5nTGlzdCYgbGlzdFBhcmFtKTsKKyAg
ICBib29sIGNhbGxiYWNrV2l0aEludGVnZXIoaW50IGludFBhcmFtKTsKKyAgICBib29sIGNhbGxi
YWNrV2l0aEZsb2F0KGZsb2F0IGZsb2F0UGFyYW0pOworICAgIGJvb2wgY2FsbGJhY2tXaXRoTG9u
Z0xvbmdQYXJhbShsb25nIGxvbmcgbG9uZ0xvbmdQYXJhbSk7CiAKICAgICBXZWJDb3JlOjpUZXN0
Q2FsbGJhY2sqIGltcGwoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdENhbGxiYWNrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RD
YWxsYmFjay5jcHAKaW5kZXggYjYzZjUwZS4uZWJmODk1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdENhbGxiYWNr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01UZXN0Q2FsbGJhY2suY3BwCkBAIC0xMzUsNiArMTM1LDM2IEBAIHdlYmtpdF9kb21f
dGVzdF9jYWxsYmFja19jYWxsYmFja193aXRoX3N0cmluZ19saXN0KFdlYktpdERPTVRlc3RDYWxs
YmFjayogc2VsZiwKICAgICByZXR1cm4gcmVzOwogfQogCitnYm9vbGVhbgord2Via2l0X2RvbV90
ZXN0X2NhbGxiYWNrX2NhbGxiYWNrX3dpdGhfaW50ZWdlcihXZWJLaXRET01UZXN0Q2FsbGJhY2sq
IHNlbGYsIGdsb25nIGludF9wYXJhbSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxm
LCAwKTsKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2Vi
Q29yZTo6VGVzdENhbGxiYWNrICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBnYm9v
bGVhbiByZXMgPSBpdGVtLT5jYWxsYmFja1dpdGhJbnRlZ2VyKGludF9wYXJhbSk7CisgICAgcmV0
dXJuIHJlczsKK30KKworZ2Jvb2xlYW4KK3dlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFj
a193aXRoX2Zsb2F0KFdlYktpdERPTVRlc3RDYWxsYmFjayogc2VsZiwgZ2Zsb2F0IGZsb2F0X3Bh
cmFtKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOworICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpUZXN0Q2FsbGJhY2sg
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdib29sZWFuIHJlcyA9IGl0ZW0tPmNh
bGxiYWNrV2l0aEZsb2F0KGZsb2F0X3BhcmFtKTsKKyAgICByZXR1cm4gcmVzOworfQorCitnYm9v
bGVhbgord2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2NhbGxiYWNrX3dpdGhfbG9uZ19sb25nX3Bh
cmFtKFdlYktpdERPTVRlc3RDYWxsYmFjayogc2VsZiwgZ2ludDY0IGxvbmdfbG9uZ19wYXJhbSkK
K3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKKyAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6VGVzdENhbGxiYWNrICogaXRl
bSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBnYm9vbGVhbiByZXMgPSBpdGVtLT5jYWxsYmFj
a1dpdGhMb25nTG9uZ1BhcmFtKGxvbmdfbG9uZ19wYXJhbSk7CisgICAgcmV0dXJuIHJlczsKK30K
KwogCiBHX0RFRklORV9UWVBFKFdlYktpdERPTVRlc3RDYWxsYmFjaywgd2Via2l0X2RvbV90ZXN0
X2NhbGxiYWNrLCBXRUJLSVRfVFlQRV9ET01fT0JKRUNUKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2FsbGJh
Y2suaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktp
dERPTVRlc3RDYWxsYmFjay5oCmluZGV4IDU0MWFmYjIuLjI3MjAwYWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RD
YWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2Jq
ZWN0L1dlYktpdERPTVRlc3RDYWxsYmFjay5oCkBAIC02MSw2ICs2MSwxNSBAQCB3ZWJraXRfZG9t
X3Rlc3RfY2FsbGJhY2tfY2FsbGJhY2tfd2l0aF9ub25fYm9vbF9yZXR1cm5fdHlwZShXZWJLaXRE
T01UZXN0Q2FsbGJhYwogV0VCS0lUX0FQSSBnYm9vbGVhbgogd2Via2l0X2RvbV90ZXN0X2NhbGxi
YWNrX2NhbGxiYWNrX3dpdGhfc3RyaW5nX2xpc3QoV2ViS2l0RE9NVGVzdENhbGxiYWNrKiBzZWxm
LCBXZWJLaXRET01ET01TdHJpbmdMaXN0KiBsaXN0X3BhcmFtKTsKIAorV0VCS0lUX0FQSSBnYm9v
bGVhbgord2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2NhbGxiYWNrX3dpdGhfaW50ZWdlcihXZWJL
aXRET01UZXN0Q2FsbGJhY2sqIHNlbGYsIGdsb25nIGludF9wYXJhbSk7CisKK1dFQktJVF9BUEkg
Z2Jvb2xlYW4KK3dlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFja193aXRoX2Zsb2F0KFdl
YktpdERPTVRlc3RDYWxsYmFjayogc2VsZiwgZ2Zsb2F0IGZsb2F0X3BhcmFtKTsKKworV0VCS0lU
X0FQSSBnYm9vbGVhbgord2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2NhbGxiYWNrX3dpdGhfbG9u
Z19sb25nX3BhcmFtKFdlYktpdERPTVRlc3RDYWxsYmFjayogc2VsZiwgZ2ludDY0IGxvbmdfbG9u
Z19wYXJhbSk7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZiAvKiBXZWJLaXRET01UZXN0Q2FsbGJh
Y2tfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5jcHAKaW5kZXggYTUyMzRkOS4uMTcwNjczMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxi
YWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q2FsbGJhY2suY3BwCkBAIC02Niw3ICs2Niw2IEBAIGJvb2wgSlNUZXN0Q2FsbGJhY2s6OmNh
bGxiYWNrV2l0aE5vUGFyYW0oKQogCiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNP
bmx5KTsKIAotICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPmds
b2JhbEV4ZWMoKTsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogCiAgICAgYm9vbCBy
YWlzZWRFeGNlcHRpb24gPSBmYWxzZTsKQEAgLTEyOSw2ICsxMjgsNTcgQEAgYm9vbCBKU1Rlc3RD
YWxsYmFjazo6Y2FsbGJhY2tXaXRoU3RyaW5nTGlzdChET01TdHJpbmdMaXN0KiBsaXN0UGFyYW0p
CiAgICAgcmV0dXJuICFyYWlzZWRFeGNlcHRpb247CiB9CiAKK2Jvb2wgSlNUZXN0Q2FsbGJhY2s6
OmNhbGxiYWNrV2l0aEludGVnZXIoaW50IGludFBhcmFtKQoreworICAgIGlmICghY2FuSW52b2tl
Q2FsbGJhY2soKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBSZWZQdHI8SlNUZXN0Q2Fs
bGJhY2s+IHByb3RlY3QodGhpcyk7CisKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9u
c09ubHkpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICBhcmdzLmFwcGVu
ZChqc051bWJlcihzdGF0aWNfY2FzdDxpbnQ+KGludFBhcmFtKSkpOworCisgICAgYm9vbCByYWlz
ZWRFeGNlcHRpb24gPSBmYWxzZTsKKyAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKGFyZ3MsICZy
YWlzZWRFeGNlcHRpb24pOworICAgIHJldHVybiAhcmFpc2VkRXhjZXB0aW9uOworfQorCitib29s
IEpTVGVzdENhbGxiYWNrOjpjYWxsYmFja1dpdGhGbG9hdChmbG9hdCBmbG9hdFBhcmFtKQorewor
ICAgIGlmICghY2FuSW52b2tlQ2FsbGJhY2soKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICBSZWZQdHI8SlNUZXN0Q2FsbGJhY2s+IHByb3RlY3QodGhpcyk7CisKKyAgICBKU0xvY2sgbG9j
ayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJn
czsKKyAgICBhcmdzLmFwcGVuZChqc051bWJlcihzdGF0aWNfY2FzdDxkb3VibGU+KGZsb2F0UGFy
YW0pKSk7CisKKyAgICBib29sIHJhaXNlZEV4Y2VwdGlvbiA9IGZhbHNlOworICAgIG1fZGF0YS0+
aW52b2tlQ2FsbGJhY2soYXJncywgJnJhaXNlZEV4Y2VwdGlvbik7CisgICAgcmV0dXJuICFyYWlz
ZWRFeGNlcHRpb247Cit9CisKK2Jvb2wgSlNUZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aExvbmdM
b25nUGFyYW0obG9uZyBsb25nIGxvbmdMb25nUGFyYW0pCit7CisgICAgaWYgKCFjYW5JbnZva2VD
YWxsYmFjaygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIFJlZlB0cjxKU1Rlc3RDYWxs
YmFjaz4gcHJvdGVjdCh0aGlzKTsKKworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25z
T25seSk7CisKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOworICAgIGFyZ3MuYXBwZW5k
KGpzTnVtYmVyKHN0YXRpY19jYXN0PGxvbmcgbG9uZz4obG9uZ0xvbmdQYXJhbSkpKTsKKworICAg
IGJvb2wgcmFpc2VkRXhjZXB0aW9uID0gZmFsc2U7CisgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFj
ayhhcmdzLCAmcmFpc2VkRXhjZXB0aW9uKTsKKyAgICByZXR1cm4gIXJhaXNlZEV4Y2VwdGlvbjsK
K30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKERBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suaAppbmRl
eCAyMjZlODc0Li45YmQwOTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suaApAQCAtNDYsNiArNDYsOSBAQCBw
dWJsaWM6CiAgICAgQ09NUElMRV9BU1NFUlQoZmFsc2UpICAgIHZpcnR1YWwgaW50IGNhbGxiYWNr
V2l0aE5vbkJvb2xSZXR1cm5UeXBlKENsYXNzMyogY2xhc3MzUGFyYW0pOwogICAgIHZpcnR1YWwg
aW50IGN1c3RvbUNhbGxiYWNrKENsYXNzNSogY2xhc3M1UGFyYW0sIENsYXNzNiogY2xhc3M2UGFy
YW0pOwogICAgIHZpcnR1YWwgYm9vbCBjYWxsYmFja1dpdGhTdHJpbmdMaXN0KERPTVN0cmluZ0xp
c3QqIGxpc3RQYXJhbSk7CisgICAgdmlydHVhbCBib29sIGNhbGxiYWNrV2l0aEludGVnZXIoaW50
IGludFBhcmFtKTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FsbGJhY2tXaXRoRmxvYXQoZmxvYXQgZmxv
YXRQYXJhbSk7CisgICAgdmlydHVhbCBib29sIGNhbGxiYWNrV2l0aExvbmdMb25nUGFyYW0obG9u
ZyBsb25nIGxvbmdMb25nUGFyYW0pOwogCiBwcml2YXRlOgogICAgIEpTVGVzdENhbGxiYWNrKEpT
Qzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENhbGxiYWNr
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2Fs
bGJhY2suaAppbmRleCAzZDZmN2JkOS4uNmFhMzFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENhbGxiYWNrLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENhbGxiYWNrLmgK
QEAgLTQzLDYgKzQzLDkgQEAKIC0gKGludCljYWxsYmFja1dpdGhOb25Cb29sUmV0dXJuVHlwZToo
RE9NQ2xhc3MzICopY2xhc3MzUGFyYW07CiAtIChpbnQpY3VzdG9tQ2FsbGJhY2s6KERPTUNsYXNz
NSAqKWNsYXNzNVBhcmFtIGNsYXNzNlBhcmFtOihET01DbGFzczYgKiljbGFzczZQYXJhbTsKIC0g
KEJPT0wpY2FsbGJhY2tXaXRoU3RyaW5nTGlzdDooRE9NRE9NU3RyaW5nTGlzdCAqKWxpc3RQYXJh
bTsKKy0gKEJPT0wpY2FsbGJhY2tXaXRoSW50ZWdlcjooaW50KWludFBhcmFtOworLSAoQk9PTClj
YWxsYmFja1dpdGhGbG9hdDooZmxvYXQpZmxvYXRQYXJhbTsKKy0gKEJPT0wpY2FsbGJhY2tXaXRo
TG9uZ0xvbmdQYXJhbToobG9uZyBsb25nKWxvbmdMb25nUGFyYW07CiBAZW5kCiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9N
VGVzdENhbGxiYWNrLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NVGVzdENhbGxiYWNrLm1tCmluZGV4IGUwNzBkZTUuLjQ2YWJjOTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDYWxsYmFj
ay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0Q2FsbGJhY2subW0KQEAgLTExNyw2ICsxMTcsMjQgQEAKICAgICByZXR1cm4gSU1QTC0+Y2Fs
bGJhY2tXaXRoU3RyaW5nTGlzdChjb3JlKGxpc3RQYXJhbSkpOwogfQogCistIChCT09MKWNhbGxi
YWNrV2l0aEludGVnZXI6KGludClpbnRQYXJhbQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+Y2FsbGJhY2tXaXRoSW50ZWdlcihp
bnRQYXJhbSk7Cit9CisKKy0gKEJPT0wpY2FsbGJhY2tXaXRoRmxvYXQ6KGZsb2F0KWZsb2F0UGFy
YW0KK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0
dXJuIElNUEwtPmNhbGxiYWNrV2l0aEZsb2F0KGZsb2F0UGFyYW0pOworfQorCistIChCT09MKWNh
bGxiYWNrV2l0aExvbmdMb25nUGFyYW06KGxvbmcgbG9uZylsb25nTG9uZ1BhcmFtCit7CisgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5j
YWxsYmFja1dpdGhMb25nTG9uZ1BhcmFtKGxvbmdMb25nUGFyYW0pOworfQorCiBAZW5kCiAKIFdl
YkNvcmU6OlRlc3RDYWxsYmFjayogY29yZShET01UZXN0Q2FsbGJhY2sgKndyYXBwZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxiYWNr
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2FsbGJhY2su
aWRsCmluZGV4IDI0NzUyNTEuLjgyZDI1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2FsbGJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2FsbGJhY2suaWRsCkBAIC0zOSw1ICszOSw4IEBA
IG1vZHVsZSB0ZXN0IHsKICAgICAgIGxvbmcgY2FsbGJhY2tXaXRoTm9uQm9vbFJldHVyblR5cGUo
aW4gQ2xhc3MzIGNsYXNzM1BhcmFtKTsKICAgICAgIFtDdXN0b21dIGxvbmcgY3VzdG9tQ2FsbGJh
Y2soaW4gQ2xhc3M1IGNsYXNzNVBhcmFtLCBpbiBDbGFzczYgY2xhc3M2UGFyYW0pOwogICAgICAg
Ym9vbGVhbiBjYWxsYmFja1dpdGhTdHJpbmdMaXN0KGluIERPTVN0cmluZ0xpc3QgbGlzdFBhcmFt
KTsKKyAgICAgIGJvb2xlYW4gY2FsbGJhY2tXaXRoSW50ZWdlcihpbiBsb25nIGludFBhcmFtKTsK
KyAgICAgIGJvb2xlYW4gY2FsbGJhY2tXaXRoRmxvYXQoaW4gZmxvYXQgZmxvYXRQYXJhbSk7Cisg
ICAgICBib29sZWFuIGNhbGxiYWNrV2l0aExvbmdMb25nUGFyYW0oaW4gbG9uZyBsb25nIGxvbmdM
b25nUGFyYW0pOwogICAgIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q2FsbGJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdENhbGxiYWNrLmNwcAppbmRleCBjMTdmNzNkLi42
YTc3NDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0Q2FsbGJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RDYWxsYmFjay5jcHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpZiBFTkFC
TEUoREFUQUJBU0UpCiAKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5j
bHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhDbGFzczEuaCIKICNpbmNsdWRlICJWOENs
YXNzMi5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tVm9pZENhbGxiYWNrLmgiCkBAIC0xNTgsNiArMTU5
LDg3IEBAIGJvb2wgVjhUZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aFN0cmluZ0xpc3QoUGFzc1Jl
ZlB0cjxET01TdHJpbmdMaXN0PiBsaXN0UGFyYW0pCiAgICAgcmV0dXJuICFpbnZva2VDYWxsYmFj
ayhtX2NhbGxiYWNrLCAxLCBhcmd2LCBjYWxsYmFja1JldHVyblZhbHVlLCBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpOwogfQogCitib29sIFY4VGVzdENhbGxiYWNrOjpjYWxsYmFja1dpdGhJbnRl
Z2VyKGludCBpbnRQYXJhbSkKK3sKKyAgICBpZiAoIWNhbkludm9rZUNhbGxiYWNrKCkpCisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworCisg
ICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0gdG9WOENvbnRleHQoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCBtX3dvcmxkQ29udGV4dCk7CisgICAgaWYgKHY4Q29udGV4dC5J
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgdjg6OkNvbnRleHQ6OlNjb3Bl
IHNjb3BlKHY4Q29udGV4dCk7CisKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaW50UGFyYW1I
YW5kbGUgPSB2ODo6SW50ZWdlcjo6TmV3KGludFBhcmFtKTsKKyAgICBpZiAoaW50UGFyYW1IYW5k
bGUuSXNFbXB0eSgpKSB7CisgICAgICAgIENSQVNIKCk7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7CisgICAgICAgIGlu
dFBhcmFtSGFuZGxlCisgICAgfTsKKworICAgIGJvb2wgY2FsbGJhY2tSZXR1cm5WYWx1ZSA9IGZh
bHNlOworICAgIHJldHVybiAhaW52b2tlQ2FsbGJhY2sobV9jYWxsYmFjaywgMSwgYXJndiwgY2Fs
bGJhY2tSZXR1cm5WYWx1ZSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKK30KKworYm9vbCBW
OFRlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoRmxvYXQoZmxvYXQgZmxvYXRQYXJhbSkKK3sKKyAg
ICBpZiAoIWNhbkludm9rZUNhbGxiYWNrKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
djg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworCisgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4
dD4gdjhDb250ZXh0ID0gdG9WOENvbnRleHQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX3dv
cmxkQ29udGV4dCk7CisgICAgaWYgKHY4Q29udGV4dC5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKHY4Q29udGV4dCk7CisKKyAg
ICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZmxvYXRQYXJhbUhhbmRsZSA9IHY4OjpOdW1iZXI6Ok5l
dyhmbG9hdFBhcmFtKTsKKyAgICBpZiAoZmxvYXRQYXJhbUhhbmRsZS5Jc0VtcHR5KCkpIHsKKyAg
ICAgICAgQ1JBU0goKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsKKyAgICAgICAgZmxvYXRQYXJhbUhhbmRsZQorICAg
IH07CisKKyAgICBib29sIGNhbGxiYWNrUmV0dXJuVmFsdWUgPSBmYWxzZTsKKyAgICByZXR1cm4g
IWludm9rZUNhbGxiYWNrKG1fY2FsbGJhY2ssIDEsIGFyZ3YsIGNhbGxiYWNrUmV0dXJuVmFsdWUs
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Cit9CisKK2Jvb2wgVjhUZXN0Q2FsbGJhY2s6OmNh
bGxiYWNrV2l0aExvbmdMb25nUGFyYW0obG9uZyBsb25nIGxvbmdMb25nUGFyYW0pCit7CisgICAg
aWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHY4
OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKKworICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+
IHY4Q29udGV4dCA9IHRvVjhDb250ZXh0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV93b3Js
ZENvbnRleHQpOworICAgIGlmICh2OENvbnRleHQuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZSh2OENvbnRleHQpOworCisgICAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGxvbmdMb25nUGFyYW1IYW5kbGUgPSB2ODo6TnVtYmVyOjpO
ZXcoc3RhdGljX2Nhc3Q8ZG91YmxlPihsb25nTG9uZ1BhcmFtKSk7CisgICAgaWYgKGxvbmdMb25n
UGFyYW1IYW5kbGUuSXNFbXB0eSgpKSB7CisgICAgICAgIENSQVNIKCk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7Cisg
ICAgICAgIGxvbmdMb25nUGFyYW1IYW5kbGUKKyAgICB9OworCisgICAgYm9vbCBjYWxsYmFja1Jl
dHVyblZhbHVlID0gZmFsc2U7CisgICAgcmV0dXJuICFpbnZva2VDYWxsYmFjayhtX2NhbGxiYWNr
LCAxLCBhcmd2LCBjYWxsYmFja1JldHVyblZhbHVlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoREFUQUJB
U0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0Q2FsbGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RDYWxsYmFjay5oCmluZGV4IDE5NGYxM2MuLmI0MjAyZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDYWxsYmFjay5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDYWxsYmFj
ay5oCkBAIC01MSw2ICs1MSw5IEBAIHB1YmxpYzoKICAgICBDT01QSUxFX0FTU0VSVChmYWxzZSkg
ICAgdmlydHVhbCBpbnQgY2FsbGJhY2tXaXRoTm9uQm9vbFJldHVyblR5cGUoQ2xhc3MzKiBjbGFz
czNQYXJhbSk7CiAgICAgdmlydHVhbCBpbnQgY3VzdG9tQ2FsbGJhY2soQ2xhc3M1KiBjbGFzczVQ
YXJhbSwgQ2xhc3M2KiBjbGFzczZQYXJhbSk7CiAgICAgdmlydHVhbCBib29sIGNhbGxiYWNrV2l0
aFN0cmluZ0xpc3QoUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBsaXN0UGFyYW0pOworICAgIHZp
cnR1YWwgYm9vbCBjYWxsYmFja1dpdGhJbnRlZ2VyKGludCBpbnRQYXJhbSk7CisgICAgdmlydHVh
bCBib29sIGNhbGxiYWNrV2l0aEZsb2F0KGZsb2F0IGZsb2F0UGFyYW0pOworICAgIHZpcnR1YWwg
Ym9vbCBjYWxsYmFja1dpdGhMb25nTG9uZ1BhcmFtKGxvbmcgbG9uZyBsb25nTG9uZ1BhcmFtKTsK
IAogcHJpdmF0ZToKICAgICBWOFRlc3RDYWxsYmFjayh2ODo6TG9jYWw8djg6Ok9iamVjdD4sIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88574</attachid>
            <date>2011-04-06 22:35:25 -0700</date>
            <delta_ts>2011-04-06 22:35:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch</filename>
            <type>text/plain</type>
            <size>37093</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTAwYTc5Mi4uYTBjYmE5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE5NDUsNiArMTk0NSwxMSBAQCBJRiAoRU5BQkxFX1BST0dSRVNTX1RBRykKICAg
ICApCiBFTkRJRiAoKQogCitpZiAoRU5BQkxFX1FVT1RBKQorICAgIExJU1QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUworICAgICAgICBzdG9yYWdlL1N0b3JhZ2VJbmZvLmNwcAorICAgICkKK0VORElG
ICgpCiAKIAogIyBNb2R1bGVzIHRoYXQgdGhlIGJpbmRpbmdzIGdlbmVyYXRvciBzY3JpcHRzIG1h
eSB1c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA3NWNlMDQ5Li5lODI5MGI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzAgQEAKKzIwMTEtMDQtMDYgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBt
b2NrIGltcGxlbWVudGF0aW9uIGFuZCBwbHVtYmluZyBjb2RlIGZvciB1bmlmaWVkIFF1b3RhIEFQ
SQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc5MjcK
KworICAgICAgICBBZGRlZCBtb2NrIGltcGxlbWVudGF0aW9uIGFuZCBzb21lIHBsdW1iaW5nIGNv
ZGUgZm9yIHRoZSBxdW90YSBBUEksCisgICAgICAgIHRoYXQgaXMgYmFzZWQgb24gdGhlIGRpc2N1
c3Npb24gb24gcHVibGljLXdlYmFwcHM6CisgICAgICAgIGh0dHA6Ly9saXN0cy53My5vcmcvQXJj
aGl2ZXMvUHVibGljL3B1YmxpYy13ZWJhcHBzLzIwMTFKYW5NYXIvMDM0Ni5odG1sCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzOiB0ZXN0cyB3aWxsIGJlIGFkZGVkIHdoZW4gd2UgZXhwb3NlIHRoZSBB
UEkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkZWQgbmV3IGZpbGUgZW50cmllcy4K
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5jcHA6IEFkZGVkIG5ldyBmaWxlIGVudHJpZXMuCisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZTogQWRkZWQgbmV3IGZpbGUgZW50cmllcy4KKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkZWQgbmV3IGZpbGUgZW50cmllcy4KKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6IEFkZGVkIG5ldyBmaWxlIGVudHJpZXMuCisgICAgICAgICogV2ViQ29y
ZS5wcm86IEFkZGVkIG5ldyBmaWxlIGVudHJpZXMuCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2o6IEFkZGVkIG5ldyBmaWxlIGVudHJpZXMuCisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZCBuZXcgZmlsZSBlbnRyaWVzLgorICAg
ICAgICAqIHN0b3JhZ2UvU3RvcmFnZUluZm8uY3BwOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdl
L1N0b3JhZ2VJbmZvLmg6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZUluZm9FcnJv
ckNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZUluZm9RdW90YUNh
bGxiYWNrLmg6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZUluZm9Vc2FnZUNhbGxi
YWNrLmg6IEFkZGVkLgorCiAyMDExLTA0LTA2ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
CmluZGV4IGVlNzBhNGYuLjY4N2I3NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0zMjQ1LDE3
ICszMjQ1LDIyIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9TUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjay5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L1NRTFRyYW5zYWN0aW9uU3luYy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU1FMVHJh
bnNhY3Rpb25TeW5jLmggXAorCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAgXAor
CVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL1N0b3JhZ2VBcmVhLmggXAogCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFJ
bXBsLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaCBcCiAJ
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5oIFwKLQlTb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L1N0b3JhZ2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudC5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50LmggXAogCVNvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oIFwKLQlTb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL1N0b3JhZ2VFdmVudC5oIFwKLQlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaCBc
CisJU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlSW5mby5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZUluZm8uaCBcCisJU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlSW5mb0Vycm9yQ2FsbGJhY2suaCBcCisJU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdl
SW5mb1F1b3RhQ2FsbGJhY2suaCBcCisJU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlSW5m
b1VzYWdlQ2FsbGJhY2suaCBcCiAJU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTWFwLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTWFwLmggXAogCVNvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGU5
ZjdmMmEuLmEwNjA0N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTU1MTcsNiArNTUxNywxMSBAQAog
ICAgICAgICAgICAgJ3N0b3JhZ2UvU3RvcmFnZUV2ZW50LmgnLAogICAgICAgICAgICAgJ3N0b3Jh
Z2UvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvU3Rv
cmFnZUV2ZW50RGlzcGF0Y2hlci5oJywKKyAgICAgICAgICAgICdzdG9yYWdlL1N0b3JhZ2VJbmZv
LmNwcCcsCisgICAgICAgICAgICAnc3RvcmFnZS9TdG9yYWdlSW5mby5oJywKKyAgICAgICAgICAg
ICdzdG9yYWdlL1N0b3JhZ2VJbmZvRXJyb3JDYWxsYmFjay5oJywKKyAgICAgICAgICAgICdzdG9y
YWdlL1N0b3JhZ2VJbmZvUXVvdGFDYWxsYmFjay5oJywKKyAgICAgICAgICAgICdzdG9yYWdlL1N0
b3JhZ2VJbmZvVXNhZ2VDYWxsYmFjay5oJywKICAgICAgICAgICAgICdzdG9yYWdlL1N0b3JhZ2VN
YXAuY3BwJywKICAgICAgICAgICAgICdzdG9yYWdlL1N0b3JhZ2VNYXAuaCcsCiAgICAgICAgICAg
ICAnc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IGQ0MjIx
ZmYuLjVhODNjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0yOTI0LDYgKzI5MjQsMTcgQEAgY29udGFp
bnMoREVGSU5FUywgRU5BQkxFX0lOUFVUX1NQRUVDSD0xKSB7CiAgICAgICAgIHJlbmRlcmluZy9S
ZW5kZXJJbnB1dFNwZWVjaC5jcHAKIH0KIAorY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1FVT1RB
PTEpIHsKKyAgICBIRUFERVJTICs9IFwKKyAgICAgICAgc3RvcmFnZS9TdG9yYWdlSW5mby5oIFwK
KyAgICAgICAgc3RvcmFnZS9TdG9yYWdlSW5mb0Vycm9yQ2FsbGJhY2suaCBcCisgICAgICAgIHN0
b3JhZ2UvU3RvcmFnZUluZm9RdW90YUNhbGxiYWNrLmggXAorICAgICAgICBzdG9yYWdlL1N0b3Jh
Z2VJbmZvVXNhZ2VDYWxsYmFjay5oCisKKyAgICBTT1VSQ0VTICs9IFwKKyAgICAgICAgc3RvcmFn
ZS9TdG9yYWdlSW5mby5jcHAKK30KKwogY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1ZJREVPPTEp
IHsKICAgICBTT1VSQ0VTICs9IFwKICAgICAgICAgaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGFi
MjExNzYuLjg2NGIwZmQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCkBAIC02NjE2Miw2ICs2NjE2MiwyNiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXFN0b3JhZ2VJbmZvLmNwcCIKKwkJ
CQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3RvcmFnZVxT
dG9yYWdlSW5mby5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxzdG9yYWdlXFN0b3JhZ2VJbmZvRXJyb3JDYWxsYmFjay5oIgorCQkJCT4KKwkJCTwv
RmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXFN0b3JhZ2VJbmZv
UXVvdGFDYWxsYmFjay5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlxzdG9yYWdlXFN0b3JhZ2VJbmZvVXNhZ2VDYWxsYmFjay5oIgorCQkJCT4KKwkJ
CTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXFN0b3JhZ2VN
YXAuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxMDhkM2M2Li40MTc0NzI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0y
NjQ5LDYgKzI2NDksMTEgQEAKIAkJODYyNDNEMDExMUJDMzFGNzAwQ0MwMDZBIC8qIEpTQXJyYXlC
dWZmZXJWaWV3SGVscGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NjI0M0QwMDExQkMzMUY3MDBDQzAwNkEgLyogSlNBcnJheUJ1ZmZlclZpZXdIZWxw
ZXIuaCAqLzsgfTsKIAkJODZEOTgyRjcxMjVDMTU0MDAwQUQ5RTNEIC8qIERvY3VtZW50VGltaW5n
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQ5ODJG
NjEyNUMxNTQwMDBBRDlFM0QgLyogRG9jdW1lbnRUaW1pbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4OTBBRTBFMTEyNTZBMDc5MDBGNTk2OEMg
LyogRGlyZWN0b3J5UmVhZGVyQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODkwQUUwRTAxMjU2QTA3OTAwRjU5NjhDIC8qIERpcmVjdG9yeVJlYWRl
ckJhc2UuaCAqLzsgfTsKKwkJODkyQ0YxOTIxMzRDNjIwRDAwQUFFREExIC8qIFN0b3JhZ2VJbmZv
RXJyb3JDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODkyQ0YxOEQxMzRDNjIwRDAwQUFFREExIC8qIFN0b3JhZ2VJbmZvRXJyb3JDYWxsYmFj
ay5oICovOyB9OworCQk4OTJDRjE5MzEzNEM2MjBEMDBBQUVEQTEgLyogU3RvcmFnZUluZm9RdW90
YUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4OTJDRjE4RTEzNEM2MjBEMDBBQUVEQTEgLyogU3RvcmFnZUluZm9RdW90YUNhbGxiYWNrLmgg
Ki87IH07CisJCTg5MkNGMTk0MTM0QzYyMEQwMEFBRURBMSAvKiBTdG9yYWdlSW5mb1VzYWdlQ2Fs
bGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5
MkNGMThGMTM0QzYyMEQwMEFBRURBMSAvKiBTdG9yYWdlSW5mb1VzYWdlQ2FsbGJhY2suaCAqLzsg
fTsKKwkJODkyQ0YxRUMxMzRDNjU1NTAwQUFFREExIC8qIFN0b3JhZ2VJbmZvLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5MkNGMUVBMTM0QzY1NTUw
MEFBRURBMSAvKiBTdG9yYWdlSW5mby5jcHAgKi87IH07CisJCTg5MkNGMUVEMTM0QzY1NTUwMEFB
RURBMSAvKiBTdG9yYWdlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODkyQ0YxRUIxMzRDNjU1NTAwQUFFREExIC8qIFN0b3JhZ2VJbmZvLmggKi87
IH07CiAJCTg5M0M0N0E3MTIzODkwOEIwMDJCM0Q4NiAvKiBGaWxlQ2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5M0M0N0E1MTIzODkwOEIw
MDJCM0Q4NiAvKiBGaWxlQ2FsbGJhY2suaCAqLzsgfTsKIAkJODkzQzQ3QTgxMjM4OTA4QjAwMkIz
RDg2IC8qIEZpbGVXcml0ZXJDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODkzQzQ3QTYxMjM4OTA4QjAwMkIzRDg2IC8qIEZpbGVXcml0ZXJD
YWxsYmFjay5oICovOyB9OwogCQk4OTNDNDdCNzEyMzhBMDk5MDAyQjNEODYgLyogSlNGaWxlQ2Fs
bGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODkzQzQ3QjUxMjM4QTA5OTAwMkIzRDg2IC8qIEpTRmlsZUNhbGxiYWNrLmNwcCAqLzsgfTsKQEAg
LTkxNzMsNiArOTE3OCwxMSBAQAogCQk4NjI0M0QwMDExQkMzMUY3MDBDQzAwNkEgLyogSlNBcnJh
eUJ1ZmZlclZpZXdIZWxwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNB
cnJheUJ1ZmZlclZpZXdIZWxwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZE
OTgyRjYxMjVDMTU0MDAwQUQ5RTNEIC8qIERvY3VtZW50VGltaW5nLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50VGltaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg5MEFFMEUwMTI1NkEwNzkwMEY1OTY4QyAvKiBEaXJlY3RvcnlSZWFkZXJCYXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERpcmVjdG9yeVJlYWRlckJhc2Uu
aDsgcGF0aCA9IGZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4OTJDRjE4RDEzNEM2MjBEMDBBQUVEQTEgLyogU3RvcmFnZUluZm9FcnJv
ckNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VJbmZv
RXJyb3JDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4OTJDRjE4RTEz
NEM2MjBEMDBBQUVEQTEgLyogU3RvcmFnZUluZm9RdW90YUNhbGxiYWNrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VJbmZvUXVvdGFDYWxsYmFjay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk4OTJDRjE4RjEzNEM2MjBEMDBBQUVEQTEgLyogU3RvcmFn
ZUluZm9Vc2FnZUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
b3JhZ2VJbmZvVXNhZ2VDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4
OTJDRjFFQTEzNEM2NTU1MDBBQUVEQTEgLyogU3RvcmFnZUluZm8uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RvcmFnZUluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4OTJDRjFFQjEzNEM2NTU1MDBBQUVEQTEgLyogU3RvcmFnZUluZm8uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZUluZm8uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODkzQzQ3QTUxMjM4OTA4QjAwMkIzRDg2IC8qIEZpbGVDYWxs
YmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGaWxlQ2FsbGJhY2suaDsg
cGF0aCA9IGZpbGVhcGkvRmlsZUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTg5M0M0N0E2MTIzODkwOEIwMDJCM0Q4NiAvKiBGaWxlV3JpdGVyQ2FsbGJhY2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRmlsZVdyaXRlckNhbGxiYWNrLmg7IHBhdGgg
PSBmaWxlYXBpL0ZpbGVXcml0ZXJDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4OTNDNDdCNTEyMzhBMDk5MDAyQjNEODYgLyogSlNGaWxlQ2FsbGJhY2suY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGaWxlQ2FsbGJhY2suY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMxMzMsNiArMTMxNDMsMTEgQEAKIAkJCQk1MUUw
QkFCRDBEQTU1NDg0MDBBOUU0MTcgLyogU3RvcmFnZUV2ZW50LmlkbCAqLywKIAkJCQlDNUU5QjY3
NjEwNjk3RTEzMDBDN0JCMUEgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAgKi8sCiAJCQkJ
QzVFQkREODExMDVFRERFQzAwNTY4MTZGIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaCAqLywK
KwkJCQk4OTJDRjFFQTEzNEM2NTU1MDBBQUVEQTEgLyogU3RvcmFnZUluZm8uY3BwICovLAorCQkJ
CTg5MkNGMUVCMTM0QzY1NTUwMEFBRURBMSAvKiBTdG9yYWdlSW5mby5oICovLAorCQkJCTg5MkNG
MThEMTM0QzYyMEQwMEFBRURBMSAvKiBTdG9yYWdlSW5mb0Vycm9yQ2FsbGJhY2suaCAqLywKKwkJ
CQk4OTJDRjE4RTEzNEM2MjBEMDBBQUVEQTEgLyogU3RvcmFnZUluZm9RdW90YUNhbGxiYWNrLmgg
Ki8sCisJCQkJODkyQ0YxOEYxMzRDNjIwRDAwQUFFREExIC8qIFN0b3JhZ2VJbmZvVXNhZ2VDYWxs
YmFjay5oICovLAogCQkJCTUxRTBCQjM3MERBNUFDQjYwMEE5RTQxNyAvKiBTdG9yYWdlTWFwLmNw
cCAqLywKIAkJCQk1MUUwQkIzNjBEQTVBQ0I2MDBBOUU0MTcgLyogU3RvcmFnZU1hcC5oICovLAog
CQkJCUM1MEQwRTgwMEZGNDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNlLmNwcCAqLywK
QEAgLTIyODM3LDYgKzIyODUyLDEwIEBACiAJCQkJRTFBMzE2MkQxMzRCQzMyRDAwN0M5QTRGIC8q
IFdlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFBMzE2
NjMxMzRCQ0FFODAwN0M5QTRGIC8qIEhUTUxDb252ZXJ0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIxRDVFQ0I1MTM0QjU4REEwMDg3Qzc4RiAvKiBDYWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk4OTJDRjE5MjEzNEM2MjBEMDBBQUVEQTEgLyogU3RvcmFnZUluZm9FcnJvckNh
bGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQk4OTJDRjE5MzEzNEM2MjBEMDBBQUVEQTEgLyog
U3RvcmFnZUluZm9RdW90YUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQk4OTJDRjE5NDEz
NEM2MjBEMDBBQUVEQTEgLyogU3RvcmFnZUluZm9Vc2FnZUNhbGxiYWNrLmggaW4gSGVhZGVycyAq
LywKKwkJCQk4OTJDRjFFRDEzNEM2NTU1MDBBQUVEQTEgLyogU3RvcmFnZUluZm8uaCBpbiBIZWFk
ZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpAQCAtMjU1MjYsNiArMjU1NDUsNyBAQAogCQkJCUZEMDZERkE1MTM0QTRERUYwMDZG
NUQ3RCAvKiBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRTFBMzE2MkUxMzRCQzMyRDAwN0M5QTRGIC8qIFdlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJh
cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUIxODI3NDkzMTM0Q0E0QzEwMEI5OEMyRCAvKiBDYWxs
YmFja0Z1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTg5MkNGMUVDMTM0QzY1NTUwMEFB
RURBMSAvKiBTdG9yYWdlSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9TdG9yYWdlSW5mby5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmM4
OTMwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUlu
Zm8uY3BwCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUo
UVVPVEEpCisKKyNpbmNsdWRlICJTdG9yYWdlSW5mby5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKKyNpbmNsdWRlICJTdG9yYWdlSW5mb0Vycm9yQ2FsbGJhY2suaCIKKyNpbmNsdWRl
ICJTdG9yYWdlSW5mb1F1b3RhQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJTdG9yYWdlSW5mb1VzYWdl
Q2FsbGJhY2suaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OworCitTdG9yYWdlSW5mbzo6U3RvcmFnZUluZm8oKQoreworfQorCisjaWYgIVBM
QVRGT1JNKENIUk9NSVVNKQordm9pZCBTdG9yYWdlSW5mbzo6cXVlcnlVc2FnZUFuZFF1b3RhKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBpbnQsIFBhc3NSZWZQdHI8U3RvcmFnZUluZm9Vc2FnZUNh
bGxiYWNrPiwgUGFzc1JlZlB0cjxTdG9yYWdlSW5mb0Vycm9yQ2FsbGJhY2s+KQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgU3RvcmFnZUluZm86OnJlcXVlc3RRdW90YShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgaW50LCB1bnNpZ25lZCBsb25nIGxvbmcsIFBhc3NSZWZQdHI8
U3RvcmFnZUluZm9RdW90YUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxTdG9yYWdlSW5mb0Vycm9yQ2Fs
bGJhY2s+KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisjZW5kaWYKKworU3RvcmFnZUlu
Zm86On5TdG9yYWdlSW5mbygpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShRVU9UQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUluZm8uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzQyNjg5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlSW5mby5oCkBAIC0wLDAgKzEsNjcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFN0b3JhZ2VJbmZvX2gKKyNkZWZpbmUgU3RvcmFnZUluZm9faAorCisjaWYgRU5BQkxF
KFFVT1RBKQorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7CitjbGFzcyBTdG9yYWdlSW5mb0Vycm9yQ2FsbGJhY2s7CitjbGFzcyBTdG9yYWdl
SW5mb1F1b3RhQ2FsbGJhY2s7CitjbGFzcyBTdG9yYWdlSW5mb1VzYWdlQ2FsbGJhY2s7CisKK2Ns
YXNzIFN0b3JhZ2VJbmZvIDogcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZUluZm8+IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdG9yYWdlSW5mbz4gY3JlYXRlKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RvcmFnZUluZm8oKSk7CisgICAgfQorCisgICAg
dm9pZCBxdWVyeVVzYWdlQW5kUXVvdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGludCBzdG9y
YWdlVHlwZSwgUGFzc1JlZlB0cjxTdG9yYWdlSW5mb1VzYWdlQ2FsbGJhY2s+LCBQYXNzUmVmUHRy
PFN0b3JhZ2VJbmZvRXJyb3JDYWxsYmFjaz4pOworICAgIHZvaWQgcmVxdWVzdFF1b3RhKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBpbnQgc3RvcmFnZVR5cGUsIHVuc2lnbmVkIGxvbmcgbG9uZyBu
ZXdRdW90YUluQnl0ZXMsIFBhc3NSZWZQdHI8U3RvcmFnZUluZm9RdW90YUNhbGxiYWNrPiwgUGFz
c1JlZlB0cjxTdG9yYWdlSW5mb0Vycm9yQ2FsbGJhY2s+KTsKKworcHJpdmF0ZToKKyAgICBTdG9y
YWdlSW5mbygpOworICAgIH5TdG9yYWdlSW5mbygpOworCisgICAgZnJpZW5kIGNsYXNzIFJlZkNv
dW50ZWQ8U3RvcmFnZUluZm8+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKFFVT1RBKQorCisjZW5kaWYgLy8gU3RvcmFnZUluZm9faApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlSW5mb0Vycm9yQ2FsbGJhY2suaCBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUluZm9FcnJvckNhbGxiYWNrLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmUzZDc1ZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUluZm9FcnJvckNhbGxiYWNrLmgKQEAgLTAsMCAr
MSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgU3RvcmFnZUluZm9FcnJvckNhbGxiYWNrX2gKKyNkZWZpbmUgU3RvcmFn
ZUluZm9FcnJvckNhbGxiYWNrX2gKKworI2lmIEVOQUJMRShRVU9UQSkKKworI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE9NQ29yZUV4
Y2VwdGlvbjsKKworY2xhc3MgU3RvcmFnZUluZm9FcnJvckNhbGxiYWNrIDogcHVibGljIFJlZkNv
dW50ZWQ8U3RvcmFnZUluZm9FcnJvckNhbGxiYWNrPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+
U3RvcmFnZUluZm9FcnJvckNhbGxiYWNrKCkgeyB9CisgICAgdmlydHVhbCBib29sIGhhbmRsZUV2
ZW50KERPTUNvcmVFeGNlcHRpb24qKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoUVVPVEEpCisKKyNlbmRpZiAvLyBTdG9yYWdlSW5mb0Vycm9y
Q2FsbGJhY2tfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlSW5m
b1F1b3RhQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUluZm9RdW90
YUNhbGxiYWNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjZmZGU5OQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUluZm9RdW90
YUNhbGxiYWNrLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU3RvcmFnZUluZm9RdW90YUNhbGxi
YWNrX2gKKyNkZWZpbmUgU3RvcmFnZUluZm9RdW90YUNhbGxiYWNrX2gKKworI2lmIEVOQUJMRShR
VU9UQSkKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgU3RvcmFnZUluZm9RdW90YUNhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8
U3RvcmFnZUluZm9RdW90YUNhbGxiYWNrPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+U3RvcmFn
ZUluZm9RdW90YUNhbGxiYWNrKCkgeyB9CisgICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KHVu
c2lnbmVkIGxvbmcgbG9uZyBncmFudGVkUXVvdGFJbkJ5dGVzKSA9IDA7Cit9OworCit9IC8vIG5h
bWVzcGFjZQorCisjZW5kaWYgLy8gRU5BQkxFKFFVT1RBKQorCisjZW5kaWYgLy8gU3RvcmFnZUlu
Zm9RdW90YUNhbGxiYWNrX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3Rv
cmFnZUluZm9Vc2FnZUNhbGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VJ
bmZvVXNhZ2VDYWxsYmFjay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgz
ODI2MTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VJ
bmZvVXNhZ2VDYWxsYmFjay5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFN0b3JhZ2VJbmZvVXNh
Z2VDYWxsYmFja19oCisjZGVmaW5lIFN0b3JhZ2VJbmZvVXNhZ2VDYWxsYmFja19oCisKKyNpZiBF
TkFCTEUoUVVPVEEpCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFN0b3JhZ2VJbmZvVXNhZ2VDYWxsYmFjayA6IHB1YmxpYyBSZWZD
b3VudGVkPFN0b3JhZ2VJbmZvVXNhZ2VDYWxsYmFjaz4geworcHVibGljOgorICAgIHZpcnR1YWwg
flN0b3JhZ2VJbmZvVXNhZ2VDYWxsYmFjaygpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVF
dmVudCh1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFVzYWdlSW5CeXRlcywgdW5zaWduZWQgbG9u
ZyBsb25nIGN1cnJlbnRRdW90YUluQnl0ZXMpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlCisK
KyNlbmRpZiAvLyBFTkFCTEUoUVVPVEEpCisKKyNlbmRpZiAvLyBTdG9yYWdlSW5mb1VzYWdlQ2Fs
bGJhY2tfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA2NTg0NzI0Li5kNzE5YjcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTA0LTA2ICBL
aW51a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbW9jayBpbXBsZW1lbnRhdGlvbiBhbmQg
cGx1bWJpbmcgY29kZSBmb3IgdW5pZmllZCBRdW90YSBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3OTI3CisKKyAgICAgICAgQWRkZWQgcGx1bWJp
bmcgY29kZSBmb3IgdGhlIHF1b3RhIEFQSSwgdGhhdCBpcyBiYXNlZCBvbiB0aGUKKyAgICAgICAg
ZGlzY3Vzc2lvbiBvbiBwdWJsaWMtd2ViYXBwczoKKyAgICAgICAgaHR0cDovL2xpc3RzLnczLm9y
Zy9BcmNoaXZlcy9QdWJsaWMvcHVibGljLXdlYmFwcHMvMjAxMUphbk1hci8wMzQ2Lmh0bWwKKwor
ICAgICAgICAqIFdlYktpdC5neXA6IEFkZGVkIG5ldyBmaWxlIGVudHJpZXMuCisgICAgICAgICog
c3JjL1N0b3JhZ2VJbmZvQ2hyb21pdW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvV2ViU3Rv
cmFnZVF1b3RhQ2FsbGJhY2tzSW1wbC5jcHA6IEFkZGVkLiBBbiBpbXBsZW1lbnRhdGlvbiBvZgor
ICAgICAgICBXZWJTdG9yYWdlUXVvdGFDYWxsYmFja3MuCisgICAgICAgICogc3JjL1dlYlN0b3Jh
Z2VRdW90YUNhbGxiYWNrc0ltcGwuaDogQWRkZWQuCisKIDIwMTEtMDQtMDYgIEFzYW5rYSBIZXJh
dGggIDxhc2Fua2FAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZp
c2hlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCAyNjNiNDllLi5jN2NiNjRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC00MDAsNiArNDAwLDcgQEAKICAgICAgICAg
ICAgICAgICAnc3JjL1N0b3JhZ2VFdmVudERpc3BhdGNoZXJDaHJvbWl1bS5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlckltcGwuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1N0b3JhZ2VFdmVudERpc3BhdGNoZXJJbXBsLmgnLAorICAgICAgICAgICAg
ICAgICdzcmMvU3RvcmFnZUluZm9DaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMv
U3RvcmFnZU5hbWVzcGFjZVByb3h5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9TdG9yYWdl
TmFtZXNwYWNlUHJveHkuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9UZW1wb3JhcnlHbHVlLmgn
LApAQCAtNTUyLDYgKzU1Myw4IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTdG9yYWdlRXZl
bnREaXNwYXRjaGVySW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlN0b3JhZ2VOYW1l
c3BhY2VJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTdG9yYWdlTmFtZXNwYWNl
SW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYlN0b3JhZ2VRdW90YUNhbGxiYWNrc0lt
cGwuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYlN0b3JhZ2VRdW90YUNhbGxiYWNrc0lt
cGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTdHJpbmcuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYlRleHRSdW4uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlRocmVh
ZFNhZmVEYXRhLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9T
dG9yYWdlSW5mb0Nocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3Jh
Z2VJbmZvQ2hyb21pdW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRi
OTk2MzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TdG9y
YWdlSW5mb0Nocm9taXVtLmNwcApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlN0b3JhZ2VJbmZvLmgiCisKKyNpZiBFTkFCTEUoUVVPVEEpCisKKyNpbmNsdWRl
ICJET01Db3JlRXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU3RvcmFnZUluZm9FcnJvckNhbGxi
YWNrLmgiCisjaW5jbHVkZSAiU3RvcmFnZUluZm9RdW90YUNhbGxiYWNrLmgiCisjaW5jbHVkZSAi
U3RvcmFnZUluZm9Vc2FnZUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIK
KyNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIKKyNpbmNsdWRlICJXZWJTdG9yYWdlUXVvdGFDYWxs
YmFja3NJbXBsLmgiCisjaW5jbHVkZSAiV2ViU3RvcmFnZVF1b3RhVHlwZS5oIgorCit1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgU3RvcmFnZUlu
Zm86OnF1ZXJ5VXNhZ2VBbmRRdW90YShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBp
bnQgc3RvcmFnZVR5cGUsIFBhc3NSZWZQdHI8U3RvcmFnZUluZm9Vc2FnZUNhbGxiYWNrPiBzdWNj
ZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8U3RvcmFnZUluZm9FcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrKQoreworICAgIEFTU0VSVChjb250ZXh0KTsKKyAgICBpZiAoY29udGV4dC0+aXNEb2N1
bWVudCgpKSB7CisgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3Vt
ZW50Kj4oY29udGV4dCk7CisgICAgICAgIFdlYkZyYW1lSW1wbCogd2ViRnJhbWUgPSBXZWJGcmFt
ZUltcGw6OmZyb21GcmFtZShkb2N1bWVudC0+ZnJhbWUoKSk7CisgICAgICAgIHdlYkZyYW1lLT5j
bGllbnQoKS0+cXVlcnlTdG9yYWdlVXNhZ2VBbmRRdW90YSh3ZWJGcmFtZSwgc3RhdGljX2Nhc3Q8
V2ViU3RvcmFnZVF1b3RhVHlwZT4oc3RvcmFnZVR5cGUpLCBXZWJTdG9yYWdlUXVvdGFDYWxsYmFj
a3NJbXBsOjpjcmVhdGVGb3JVc2FnZUNhbGxiYWNrKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxs
YmFjaykpOworICAgIH0gZWxzZSBpZiAoZXJyb3JDYWxsYmFjaykgeworICAgICAgICAvLyBUaGlz
IG11c3Qgbm90IGJlIGNhbGxlZCBpbiB0aGUgd29ya2VyIGNvbnRleHQuCisgICAgICAgIEV4Y2Vw
dGlvbkNvZGVEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbjsKKyAgICAgICAgZ2V0RXhjZXB0aW9uQ29k
ZURlc2NyaXB0aW9uKE5PVF9TVVBQT1JURURfRVJSLCBkZXNjcmlwdGlvbik7CisgICAgICAgIGVy
cm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KERPTUNvcmVFeGNlcHRpb246OmNyZWF0ZShkZXNjcmlw
dGlvbikuZ2V0KCkpOworICAgIH0KK30KKwordm9pZCBTdG9yYWdlSW5mbzo6cmVxdWVzdFF1b3Rh
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGludCBzdG9yYWdlVHlwZSwgdW5zaWdu
ZWQgbG9uZyBsb25nIG5ld1F1b3RhSW5CeXRlcywgUGFzc1JlZlB0cjxTdG9yYWdlSW5mb1F1b3Rh
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxTdG9yYWdlSW5mb0Vycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2spCit7CisgICAgQVNTRVJUKGNvbnRleHQpOworICAgIGlmIChj
b250ZXh0LT5pc0RvY3VtZW50KCkpIHsKKyAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3Rh
dGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KTsKKyAgICAgICAgV2ViRnJhbWVJbXBsKiB3ZWJG
cmFtZSA9IFdlYkZyYW1lSW1wbDo6ZnJvbUZyYW1lKGRvY3VtZW50LT5mcmFtZSgpKTsKKyAgICAg
ICAgd2ViRnJhbWUtPmNsaWVudCgpLT5yZXF1ZXN0U3RvcmFnZVF1b3RhKHdlYkZyYW1lLCBzdGF0
aWNfY2FzdDxXZWJTdG9yYWdlUXVvdGFUeXBlPihzdG9yYWdlVHlwZSksIG5ld1F1b3RhSW5CeXRl
cywgV2ViU3RvcmFnZVF1b3RhQ2FsbGJhY2tzSW1wbDo6Y3JlYXRlRm9yUXVvdGFDYWxsYmFjayhz
dWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKKyAgICB9IGVsc2UgaWYgKGVycm9yQ2Fs
bGJhY2spIHsKKyAgICAgICAgLy8gVGhpcyBtdXN0IG5vdCBiZSBjYWxsZWQgaW4gdGhlIHdvcmtl
ciBjb250ZXh0LgorICAgICAgICBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZGVzY3JpcHRpb247
CisgICAgICAgIGdldEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbihOT1RfU1VQUE9SVEVEX0VSUiwg
ZGVzY3JpcHRpb24pOworICAgICAgICBlcnJvckNhbGxiYWNrLT5oYW5kbGVFdmVudChET01Db3Jl
RXhjZXB0aW9uOjpjcmVhdGUoZGVzY3JpcHRpb24pLmdldCgpKTsKKyAgICB9Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShRVU9UQSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlN0b3JhZ2VRdW90YUNhbGxiYWNrc0ltcGwu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3RvcmFnZVF1b3RhQ2FsbGJhY2tz
SW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjgyMzhiMQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlN0b3JhZ2VRdW90
YUNhbGxiYWNrc0ltcGwuY3BwCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViU3RvcmFnZVF1b3RhQ2FsbGJhY2tzSW1wbC5oIgorCisjaWYgRU5BQkxFKFFV
T1RBKQorCisjaW5jbHVkZSAiRE9NQ29yZUV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIlN0b3JhZ2VJ
bmZvRXJyb3JDYWxsYmFjay5oIgorI2luY2x1ZGUgIlN0b3JhZ2VJbmZvUXVvdGFDYWxsYmFjay5o
IgorI2luY2x1ZGUgIlN0b3JhZ2VJbmZvVXNhZ2VDYWxsYmFjay5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlN0b3JhZ2VRdW90YUNhbGxi
YWNrc0ltcGw6OldlYlN0b3JhZ2VRdW90YUNhbGxiYWNrc0ltcGwoUGFzc1JlZlB0cjxXZWJDb3Jl
OjpTdG9yYWdlSW5mb1VzYWdlQ2FsbGJhY2s+IHVzYWdlQ2FsbGJhY2ssIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6U3RvcmFnZUluZm9FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQorICAgIDogbV91
c2FnZUNhbGxiYWNrKHVzYWdlQ2FsbGJhY2spCisgICAgLCBtX2Vycm9yQ2FsbGJhY2soZXJyb3JD
YWxsYmFjaykKK3sKK30KKworV2ViU3RvcmFnZVF1b3RhQ2FsbGJhY2tzSW1wbDo6V2ViU3RvcmFn
ZVF1b3RhQ2FsbGJhY2tzSW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VJbmZvUXVvdGFD
YWxsYmFjaz4gcXVvdGFDYWxsYmFjaywgUGFzc1JlZlB0cjxXZWJDb3JlOjpTdG9yYWdlSW5mb0Vy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCisgICAgOiBtX3F1b3RhQ2FsbGJhY2socXVvdGFD
YWxsYmFjaykKKyAgICAsIG1fZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNrKQoreworfQorCitX
ZWJTdG9yYWdlUXVvdGFDYWxsYmFja3NJbXBsOjp+V2ViU3RvcmFnZVF1b3RhQ2FsbGJhY2tzSW1w
bCgpCit7Cit9CisKK3ZvaWQgV2ViU3RvcmFnZVF1b3RhQ2FsbGJhY2tzSW1wbDo6ZGlkUXVlcnlT
dG9yYWdlVXNhZ2VBbmRRdW90YSh1bnNpZ25lZCBsb25nIGxvbmcgdXNhZ2VJbkJ5dGVzLCB1bnNp
Z25lZCBsb25nIGxvbmcgcXVvdGFJbkJ5dGVzKQoreworICAgIGlmIChtX3VzYWdlQ2FsbGJhY2sp
CisgICAgICAgIG1fdXNhZ2VDYWxsYmFjay0+aGFuZGxlRXZlbnQodXNhZ2VJbkJ5dGVzLCBxdW90
YUluQnl0ZXMpOworICAgIGRlbGV0ZSB0aGlzOworfQorCit2b2lkIFdlYlN0b3JhZ2VRdW90YUNh
bGxiYWNrc0ltcGw6Ondhc0dyYW50ZWRTdG9yYWdlUXVvdGEodW5zaWduZWQgbG9uZyBsb25nIGdy
YW50ZWRRdW90YUluQnl0ZXMpCit7CisgICAgaWYgKG1fcXVvdGFDYWxsYmFjaykKKyAgICAgICAg
bV9xdW90YUNhbGxiYWNrLT5oYW5kbGVFdmVudChncmFudGVkUXVvdGFJbkJ5dGVzKTsKKyAgICBk
ZWxldGUgdGhpczsKK30KKwordm9pZCBXZWJTdG9yYWdlUXVvdGFDYWxsYmFja3NJbXBsOjpkaWRG
YWlsKFdlYkV4Y2VwdGlvbkNvZGUgZXJyb3IpCit7CisgICAgaWYgKG1fZXJyb3JDYWxsYmFjaykg
eworICAgICAgICBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZGVzY3JpcHRpb247CisgICAgICAg
IGdldEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbihlcnJvciwgZGVzY3JpcHRpb24pOworICAgICAg
ICBtX2Vycm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KERPTUNvcmVFeGNlcHRpb246OmNyZWF0ZShk
ZXNjcmlwdGlvbikuZ2V0KCkpOworICAgIH0KKyAgICBkZWxldGUgdGhpczsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUVVPVEEpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTdG9yYWdlUXVvdGFDYWxsYmFja3NJbXBsLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTdG9yYWdlUXVvdGFDYWxsYmFja3NJbXBs
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNjNTExOAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlN0b3JhZ2VRdW90YUNhbGxi
YWNrc0ltcGwuaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTdG9yYWdlUXVvdGFDYWxsYmFj
a3NJbXBsX2gKKyNkZWZpbmUgV2ViU3RvcmFnZVF1b3RhQ2FsbGJhY2tzSW1wbF9oCisKKyNpbmNs
dWRlICJXZWJTdG9yYWdlUXVvdGFDYWxsYmFja3MuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTdG9yYWdlSW5mb0Vycm9yQ2FsbGJhY2s7
CitjbGFzcyBTdG9yYWdlSW5mb1F1b3RhQ2FsbGJhY2s7CitjbGFzcyBTdG9yYWdlSW5mb1VzYWdl
Q2FsbGJhY2s7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTdG9yYWdlUXVv
dGFDYWxsYmFja3NJbXBsIDogcHVibGljIFdlYlN0b3JhZ2VRdW90YUNhbGxiYWNrcyB7CitwdWJs
aWM6CisgICAgc3RhdGljIFdlYlN0b3JhZ2VRdW90YUNhbGxiYWNrc0ltcGwqIGNyZWF0ZUZvclVz
YWdlQ2FsbGJhY2soUGFzc1JlZlB0cjxXZWJDb3JlOjpTdG9yYWdlSW5mb1VzYWdlQ2FsbGJhY2s+
IHVzYWdlQ2FsbGJhY2ssIFBhc3NSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZUluZm9FcnJvckNhbGxi
YWNrPiBlcnJvckNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgLy8gVGhpcyByZXR1cm5zIGEgbGVh
a2VkIHB0ciAodGhlIGNsYXNzIGlzIHNlbGYtZGVzdHJ1Y3RlZCkuCisgICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgV2ViU3RvcmFnZVF1b3RhQ2FsbGJhY2tzSW1wbCh1c2FnZUNhbGxiYWNrLCBl
cnJvckNhbGxiYWNrKSkubGVha1B0cigpOworICAgIH0KKworICAgIHN0YXRpYyBXZWJTdG9yYWdl
UXVvdGFDYWxsYmFja3NJbXBsKiBjcmVhdGVGb3JRdW90YUNhbGxiYWNrKFBhc3NSZWZQdHI8V2Vi
Q29yZTo6U3RvcmFnZUluZm9RdW90YUNhbGxiYWNrPiBxdW90YUNhbGxiYWNrLCBQYXNzUmVmUHRy
PFdlYkNvcmU6OlN0b3JhZ2VJbmZvRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKKyAgICB7
CisgICAgICAgIC8vIFRoaXMgcmV0dXJucyBhIGxlYWtlZCBwdHIgKHRoZSBjbGFzcyBpcyBzZWxm
LWRlc3RydWN0ZWQpLgorICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYlN0b3JhZ2VRdW90
YUNhbGxiYWNrc0ltcGwocXVvdGFDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpLmxlYWtQdHIoKTsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIH5XZWJTdG9yYWdlUXVvdGFDYWxsYmFja3NJbXBsKCk7CisK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkUXVlcnlTdG9yYWdlVXNhZ2VBbmRRdW90YSh1bnNpZ25lZCBs
b25nIGxvbmcgdXNhZ2VJbkJ5dGVzLCB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGFJbkJ5dGVzKTsK
KyAgICB2aXJ0dWFsIHZvaWQgd2FzR3JhbnRlZFN0b3JhZ2VRdW90YSh1bnNpZ25lZCBsb25nIGxv
bmcgZ3JhbnRlZFF1b3RhSW5CeXRlcyk7CisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViRXhj
ZXB0aW9uQ29kZSBlcnJvcik7CisKK3ByaXZhdGU6CisgICAgV2ViU3RvcmFnZVF1b3RhQ2FsbGJh
Y2tzSW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VJbmZvVXNhZ2VDYWxsYmFjaz4sIFBh
c3NSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZUluZm9FcnJvckNhbGxiYWNrPik7CisgICAgV2ViU3Rv
cmFnZVF1b3RhQ2FsbGJhY2tzSW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VJbmZvUXVv
dGFDYWxsYmFjaz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZUluZm9FcnJvckNhbGxiYWNr
Pik7CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZUluZm9Vc2FnZUNhbGxiYWNrPiBtX3Vz
YWdlQ2FsbGJhY2s7CisgICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VJbmZvUXVvdGFDYWxsYmFj
az4gbV9xdW90YUNhbGxiYWNrOworICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlSW5mb0Vycm9y
Q2FsbGJhY2s+IG1fZXJyb3JDYWxsYmFjazsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gV2ViU3RvcmFnZVF1b3RhQ2FsbGJhY2tzSW1wbF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88576</attachid>
            <date>2011-04-06 22:42:45 -0700</date>
            <delta_ts>2011-04-28 04:35:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch</filename>
            <type>text/plain</type>
            <size>17612</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NWNlMDQ5Li44MzA1M2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAg
QEAKKzIwMTEtMDQtMDYgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEpTQyBiaW5kaW5n
cyBnZW5lcmF0b3I6IHN1cHBvcnQgbm9uLW9iamVjdCBudW1iZXJzIGFzIGNhbGxiYWNrIGFyZ3Vt
ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc5
NDgKKworICAgICAgICBDdXJyZW50IEpTQyBiaW5kaW5ncyBnZW5lcmF0b3IgZG9lcyBub3Qgc3Vw
cG9ydCBudW1lcmljIHBhcmFtZXRlcnMsIGJ1dAorICAgICAgICB0aGV5IHNob3VsZCBiZSBzdXBw
b3J0ZWQgKGFzIG90aGVyIGJpbmRpbmdzIGRvKS4KKworICAgICAgICBBZGRlZCB0ZXN0cyBpbiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxiYWNrLmlkbC4KKworICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOiBBZGRlZCBJc051bWVyaWNUeXBlIGhhbmRs
aW5nLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdENhbGxi
YWNrLmNwcDogVXBkYXRlZCAoZ2VuZXJhdGVkKS4KKyAgICAgICAgKFdlYkRPTVRlc3RDYWxsYmFj
azo6Y2FsbGJhY2tXaXRoSW50ZWdlcik6CisgICAgICAgIChXZWJET01UZXN0Q2FsbGJhY2s6OmNh
bGxiYWNrV2l0aFVuc2lnbmVkTG9uZ1BhcmFtKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQ1BQL1dlYkRPTVRlc3RDYWxsYmFjay5oOiBVcGRhdGVkIChnZW5lcmF0ZWQpLgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFj
ay5jcHA6IFVwZGF0ZWQgKGdlbmVyYXRlZCkuCisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfY2Fs
bGJhY2tfY2FsbGJhY2tfd2l0aF9pbnRlZ2VyKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9j
YWxsYmFja19jYWxsYmFja193aXRoX3Vuc2lnbmVkX2xvbmdfcGFyYW0pOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFjay5oOiBVcGRh
dGVkIChnZW5lcmF0ZWQpLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDYWxsYmFjay5jcHA6IFVwZGF0ZWQgKGdlbmVyYXRlZCkuCisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoTm9QYXJhbSk6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoSW50ZWdlcik6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoVW5zaWduZWRMb25nUGFyYW0pOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5oOiBVcGRhdGVkIChnZW5l
cmF0ZWQpLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDYWxs
YmFjay5oOiBVcGRhdGVkIChnZW5lcmF0ZWQpLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RDYWxsYmFjay5tbTogVXBkYXRlZCAoZ2VuZXJhdGVkKS4KKyAgICAg
ICAgKC1bRE9NVGVzdENhbGxiYWNrIGNhbGxiYWNrV2l0aEludGVnZXI6XSk6CisgICAgICAgICgt
W0RPTVRlc3RDYWxsYmFjayBjYWxsYmFja1dpdGhVbnNpZ25lZExvbmdQYXJhbTpdKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxiYWNrLmlkbDogQWRkZWQgdGVzdCBj
YWxsYmFjayBtZXRob2RzCisgICAgICAgIHRoYXQgdGFrZSBudW1lcmljIHBhcmFtZXRlcnMuCisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdENhbGxiYWNrLmNwcDogVXBk
YXRlZCAoZ2VuZXJhdGVkKS4KKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdENhbGxiYWNrOjpjYWxs
YmFja1dpdGhJbnRlZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdENhbGxiYWNrOjpjYWxs
YmFja1dpdGhVbnNpZ25lZExvbmdQYXJhbSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdENhbGxiYWNrLmg6IFVwZGF0ZWQgKGdlbmVyYXRlZCkuCisKIDIwMTEtMDQt
MDYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KaW5kZXggMTJiNDc3Yi4uMzc2MWJmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTIyNjQs
OSArMjI2NCwxMSBAQCBzdWIgR2VuZXJhdGVDYWxsYmFja0ltcGxlbWVudGF0aW9uCiAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIiAuIEdldE5hdGl2ZVR5cGUoJGZ1bmN0aW9uLT5z
aWduYXR1cmUtPnR5cGUpIC4gIiAke2NsYXNzTmFtZX06OiIgLiAkZnVuY3Rpb24tPnNpZ25hdHVy
ZS0+bmFtZSAuICIoIik7CiAKICAgICAgICAgICAgIG15IEBhcmdzID0gKCk7CisgICAgICAgICAg
ICBteSAkbmVlZEV4ZWNTdGF0ZSA9IDA7CiAgICAgICAgICAgICBmb3JlYWNoIG15ICRwYXJhbSAo
QHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFkZEluY2x1ZGVzRm9yVHlwZSgkcGFyYW0tPnR5
cGUsIDEpOwogICAgICAgICAgICAgICAgIHB1c2goQGFyZ3MsIEdldE5hdGl2ZVR5cGUoJHBhcmFt
LT50eXBlKSAuICIgIiAuICRwYXJhbS0+bmFtZSk7CisgICAgICAgICAgICAgICAgJG5lZWRFeGVj
U3RhdGUgPSAxIGlmICghJGNvZGVHZW5lcmF0b3ItPklzTnVtZXJpY1R5cGUoJHBhcmFtLT50eXBl
KSB8fCAhSXNOYXRpdmVUeXBlKCRwYXJhbS0+dHlwZSkpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsIGpvaW4oIiwgIiwgQGFyZ3MpKTsKICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiKVxuIik7CkBAIC0yMjc2LDEzICsyMjc4LDE2IEBAIHN1YiBH
ZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICByZXR1cm4gdHJ1ZTtcblxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBSZWZQdHI8JGNsYXNzTmFtZT4gcHJvdGVjdCh0aGlzKTtcblxuIik7CiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNz
ZXJ0aW9uc09ubHkpO1xuXG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IEV4ZWNTdGF0ZSogZXhlYyA9IG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTtc
biIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgRXhlY1N0YXRlKiBleGVj
ID0gbV9kYXRhLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpO1xuIikgaWYgJG5lZWRFeGVj
U3RhdGU7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBhcmdzO1xuIik7CiAKICAgICAgICAgICAgIGZvcmVhY2ggbXkgJHBhcmFtIChAcGFy
YW1zKSB7CiAgICAgICAgICAgICAgICAgbXkgJHBhcmFtTmFtZSA9ICRwYXJhbS0+bmFtZTsKICAg
ICAgICAgICAgICAgICBpZiAoJHBhcmFtLT50eXBlIGVxICJET01TdHJpbmciKSB7CiAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5n
KGV4ZWMsICR7cGFyYW1OYW1lfSkpO1xuIik7CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGNv
ZGVHZW5lcmF0b3ItPklzTnVtZXJpY1R5cGUoJHBhcmFtLT50eXBlKSAmJiBJc05hdGl2ZVR5cGUo
JHBhcmFtLT50eXBlKSkgeworICAgICAgICAgICAgICAgICAgICBteSAkcGFyYW1UeXBlID0gKCRw
YXJhbS0+dHlwZSBlcSAiZmxvYXQiKSA/ICJkb3VibGUiIDogR2V0TmF0aXZlVHlwZSgkcGFyYW0t
PnR5cGUpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhcmdz
LmFwcGVuZChqc051bWJlcihzdGF0aWNfY2FzdDwkcGFyYW1UeXBlPigke3BhcmFtTmFtZX0pKSk7
XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBhcmdzLmFwcGVuZCh0b0pTKGV4ZWMsICR7cGFyYW1OYW1lfSkp
O1xuIik7CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0Q2FsbGJhY2suY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0Q2FsbGJhY2suY3BwCmlu
ZGV4IGQxMmQwYzMuLjc3NzE1ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdENhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RDYWxsYmFjay5jcHAKQEAg
LTEyNSw2ICsxMjUsMzAgQEAgYm9vbCBXZWJET01UZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aFN0
cmluZ0xpc3QoY29uc3QgV2ViRE9NRE9NU3RyaW5nTGlzdCYgbGlzdFAKICAgICByZXR1cm4gaW1w
bCgpLT5jYWxsYmFja1dpdGhTdHJpbmdMaXN0KHRvV2ViQ29yZShsaXN0UGFyYW0pKTsKIH0KIAor
Ym9vbCBXZWJET01UZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aEludGVnZXIoaW50IGludFBhcmFt
KQoreworICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1
cm4gaW1wbCgpLT5jYWxsYmFja1dpdGhJbnRlZ2VyKGludFBhcmFtKTsKK30KKworYm9vbCBXZWJE
T01UZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aEZsb2F0KGZsb2F0IGZsb2F0UGFyYW0pCit7Cisg
ICAgaWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBpbXBs
KCktPmNhbGxiYWNrV2l0aEZsb2F0KGZsb2F0UGFyYW0pOworfQorCitib29sIFdlYkRPTVRlc3RD
YWxsYmFjazo6Y2FsbGJhY2tXaXRoTG9uZ0xvbmdQYXJhbShsb25nIGxvbmcgbG9uZ0xvbmdQYXJh
bSkKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIGltcGwoKS0+Y2FsbGJhY2tXaXRoTG9uZ0xvbmdQYXJhbShsb25nTG9uZ1BhcmFtKTsKK30K
KwogV2ViQ29yZTo6VGVzdENhbGxiYWNrKiB0b1dlYkNvcmUoY29uc3QgV2ViRE9NVGVzdENhbGxi
YWNrJiB3cmFwcGVyKQogewogICAgIHJldHVybiB3cmFwcGVyLmltcGwoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdENhbGxi
YWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRl
c3RDYWxsYmFjay5oCmluZGV4IDhkMTFhNGIuLmUxMDUzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdENhbGxiYWNrLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0Q2Fs
bGJhY2suaApAQCAtNTMsNiArNTMsOSBAQCBwdWJsaWM6CiAgICAgaW50IGNhbGxiYWNrV2l0aE5v
bkJvb2xSZXR1cm5UeXBlKGNvbnN0IFdlYkRPTUNsYXNzMyYgY2xhc3MzUGFyYW0pOwogICAgIGlu
dCBjdXN0b21DYWxsYmFjayhjb25zdCBXZWJET01DbGFzczUmIGNsYXNzNVBhcmFtLCBjb25zdCBX
ZWJET01DbGFzczYmIGNsYXNzNlBhcmFtKTsKICAgICBib29sIGNhbGxiYWNrV2l0aFN0cmluZ0xp
c3QoY29uc3QgV2ViRE9NRE9NU3RyaW5nTGlzdCYgbGlzdFBhcmFtKTsKKyAgICBib29sIGNhbGxi
YWNrV2l0aEludGVnZXIoaW50IGludFBhcmFtKTsKKyAgICBib29sIGNhbGxiYWNrV2l0aEZsb2F0
KGZsb2F0IGZsb2F0UGFyYW0pOworICAgIGJvb2wgY2FsbGJhY2tXaXRoTG9uZ0xvbmdQYXJhbShs
b25nIGxvbmcgbG9uZ0xvbmdQYXJhbSk7CiAKICAgICBXZWJDb3JlOjpUZXN0Q2FsbGJhY2sqIGlt
cGwoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdENhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFjay5jcHAK
aW5kZXggYjYzZjUwZS4uZWJmODk1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdENhbGxiYWNrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0
Q2FsbGJhY2suY3BwCkBAIC0xMzUsNiArMTM1LDM2IEBAIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFj
a19jYWxsYmFja193aXRoX3N0cmluZ19saXN0KFdlYktpdERPTVRlc3RDYWxsYmFjayogc2VsZiwK
ICAgICByZXR1cm4gcmVzOwogfQogCitnYm9vbGVhbgord2Via2l0X2RvbV90ZXN0X2NhbGxiYWNr
X2NhbGxiYWNrX3dpdGhfaW50ZWdlcihXZWJLaXRET01UZXN0Q2FsbGJhY2sqIHNlbGYsIGdsb25n
IGludF9wYXJhbSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKKyAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6VGVzdENh
bGxiYWNrICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBnYm9vbGVhbiByZXMgPSBp
dGVtLT5jYWxsYmFja1dpdGhJbnRlZ2VyKGludF9wYXJhbSk7CisgICAgcmV0dXJuIHJlczsKK30K
KworZ2Jvb2xlYW4KK3dlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFja193aXRoX2Zsb2F0
KFdlYktpdERPTVRlc3RDYWxsYmFjayogc2VsZiwgZ2Zsb2F0IGZsb2F0X3BhcmFtKQoreworICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOworICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpUZXN0Q2FsbGJhY2sgKiBpdGVtID0gV2Vi
S2l0Ojpjb3JlKHNlbGYpOworICAgIGdib29sZWFuIHJlcyA9IGl0ZW0tPmNhbGxiYWNrV2l0aEZs
b2F0KGZsb2F0X3BhcmFtKTsKKyAgICByZXR1cm4gcmVzOworfQorCitnYm9vbGVhbgord2Via2l0
X2RvbV90ZXN0X2NhbGxiYWNrX2NhbGxiYWNrX3dpdGhfbG9uZ19sb25nX3BhcmFtKFdlYktpdERP
TVRlc3RDYWxsYmFjayogc2VsZiwgZ2ludDY0IGxvbmdfbG9uZ19wYXJhbSkKK3sKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6VGVzdENhbGxiYWNrICogaXRlbSA9IFdlYktpdDo6
Y29yZShzZWxmKTsKKyAgICBnYm9vbGVhbiByZXMgPSBpdGVtLT5jYWxsYmFja1dpdGhMb25nTG9u
Z1BhcmFtKGxvbmdfbG9uZ19wYXJhbSk7CisgICAgcmV0dXJuIHJlczsKK30KKwogCiBHX0RFRklO
RV9UWVBFKFdlYktpdERPTVRlc3RDYWxsYmFjaywgd2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrLCBX
RUJLSVRfVFlQRV9ET01fT0JKRUNUKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2suaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxs
YmFjay5oCmluZGV4IDU0MWFmYjIuLjI3MjAwYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFjay5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERP
TVRlc3RDYWxsYmFjay5oCkBAIC02MSw2ICs2MSwxNSBAQCB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJh
Y2tfY2FsbGJhY2tfd2l0aF9ub25fYm9vbF9yZXR1cm5fdHlwZShXZWJLaXRET01UZXN0Q2FsbGJh
YwogV0VCS0lUX0FQSSBnYm9vbGVhbgogd2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2NhbGxiYWNr
X3dpdGhfc3RyaW5nX2xpc3QoV2ViS2l0RE9NVGVzdENhbGxiYWNrKiBzZWxmLCBXZWJLaXRET01E
T01TdHJpbmdMaXN0KiBsaXN0X3BhcmFtKTsKIAorV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0
X2RvbV90ZXN0X2NhbGxiYWNrX2NhbGxiYWNrX3dpdGhfaW50ZWdlcihXZWJLaXRET01UZXN0Q2Fs
bGJhY2sqIHNlbGYsIGdsb25nIGludF9wYXJhbSk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dl
YmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFja193aXRoX2Zsb2F0KFdlYktpdERPTVRlc3RD
YWxsYmFjayogc2VsZiwgZ2Zsb2F0IGZsb2F0X3BhcmFtKTsKKworV0VCS0lUX0FQSSBnYm9vbGVh
bgord2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2NhbGxiYWNrX3dpdGhfbG9uZ19sb25nX3BhcmFt
KFdlYktpdERPTVRlc3RDYWxsYmFjayogc2VsZiwgZ2ludDY0IGxvbmdfbG9uZ19wYXJhbSk7CisK
IEdfRU5EX0RFQ0xTCiAKICNlbmRpZiAvKiBXZWJLaXRET01UZXN0Q2FsbGJhY2tfaCAqLwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENh
bGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDYWxsYmFjay5jcHAKaW5kZXggYTUyMzRkOS4uMTcwNjczMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2su
Y3BwCkBAIC02Niw3ICs2Niw2IEBAIGJvb2wgSlNUZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aE5v
UGFyYW0oKQogCiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIAotICAg
IEV4ZWNTdGF0ZSogZXhlYyA9IG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsK
ICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogCiAgICAgYm9vbCByYWlzZWRFeGNlcHRp
b24gPSBmYWxzZTsKQEAgLTEyOSw2ICsxMjgsNTcgQEAgYm9vbCBKU1Rlc3RDYWxsYmFjazo6Y2Fs
bGJhY2tXaXRoU3RyaW5nTGlzdChET01TdHJpbmdMaXN0KiBsaXN0UGFyYW0pCiAgICAgcmV0dXJu
ICFyYWlzZWRFeGNlcHRpb247CiB9CiAKK2Jvb2wgSlNUZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0
aEludGVnZXIoaW50IGludFBhcmFtKQoreworICAgIGlmICghY2FuSW52b2tlQ2FsbGJhY2soKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBSZWZQdHI8SlNUZXN0Q2FsbGJhY2s+IHByb3Rl
Y3QodGhpcyk7CisKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworCisg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICBhcmdzLmFwcGVuZChqc051bWJlcihz
dGF0aWNfY2FzdDxpbnQ+KGludFBhcmFtKSkpOworCisgICAgYm9vbCByYWlzZWRFeGNlcHRpb24g
PSBmYWxzZTsKKyAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKGFyZ3MsICZyYWlzZWRFeGNlcHRp
b24pOworICAgIHJldHVybiAhcmFpc2VkRXhjZXB0aW9uOworfQorCitib29sIEpTVGVzdENhbGxi
YWNrOjpjYWxsYmFja1dpdGhGbG9hdChmbG9hdCBmbG9hdFBhcmFtKQoreworICAgIGlmICghY2Fu
SW52b2tlQ2FsbGJhY2soKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBSZWZQdHI8SlNU
ZXN0Q2FsbGJhY2s+IHByb3RlY3QodGhpcyk7CisKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNz
ZXJ0aW9uc09ubHkpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICBhcmdz
LmFwcGVuZChqc051bWJlcihzdGF0aWNfY2FzdDxkb3VibGU+KGZsb2F0UGFyYW0pKSk7CisKKyAg
ICBib29sIHJhaXNlZEV4Y2VwdGlvbiA9IGZhbHNlOworICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJh
Y2soYXJncywgJnJhaXNlZEV4Y2VwdGlvbik7CisgICAgcmV0dXJuICFyYWlzZWRFeGNlcHRpb247
Cit9CisKK2Jvb2wgSlNUZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aExvbmdMb25nUGFyYW0obG9u
ZyBsb25nIGxvbmdMb25nUGFyYW0pCit7CisgICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIFJlZlB0cjxKU1Rlc3RDYWxsYmFjaz4gcHJvdGVj
dCh0aGlzKTsKKworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CisKKyAg
ICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOworICAgIGFyZ3MuYXBwZW5kKGpzTnVtYmVyKHN0
YXRpY19jYXN0PGxvbmcgbG9uZz4obG9uZ0xvbmdQYXJhbSkpKTsKKworICAgIGJvb2wgcmFpc2Vk
RXhjZXB0aW9uID0gZmFsc2U7CisgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayhhcmdzLCAmcmFp
c2VkRXhjZXB0aW9uKTsKKyAgICByZXR1cm4gIXJhaXNlZEV4Y2VwdGlvbjsKK30KKwogfQogCiAj
ZW5kaWYgLy8gRU5BQkxFKERBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suaAppbmRleCAyMjZlODc0Li45
YmQwOTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suaApAQCAtNDYsNiArNDYsOSBAQCBwdWJsaWM6CiAgICAg
Q09NUElMRV9BU1NFUlQoZmFsc2UpICAgIHZpcnR1YWwgaW50IGNhbGxiYWNrV2l0aE5vbkJvb2xS
ZXR1cm5UeXBlKENsYXNzMyogY2xhc3MzUGFyYW0pOwogICAgIHZpcnR1YWwgaW50IGN1c3RvbUNh
bGxiYWNrKENsYXNzNSogY2xhc3M1UGFyYW0sIENsYXNzNiogY2xhc3M2UGFyYW0pOwogICAgIHZp
cnR1YWwgYm9vbCBjYWxsYmFja1dpdGhTdHJpbmdMaXN0KERPTVN0cmluZ0xpc3QqIGxpc3RQYXJh
bSk7CisgICAgdmlydHVhbCBib29sIGNhbGxiYWNrV2l0aEludGVnZXIoaW50IGludFBhcmFtKTsK
KyAgICB2aXJ0dWFsIGJvb2wgY2FsbGJhY2tXaXRoRmxvYXQoZmxvYXQgZmxvYXRQYXJhbSk7Cisg
ICAgdmlydHVhbCBib29sIGNhbGxiYWNrV2l0aExvbmdMb25nUGFyYW0obG9uZyBsb25nIGxvbmdM
b25nUGFyYW0pOwogCiBwcml2YXRlOgogICAgIEpTVGVzdENhbGxiYWNrKEpTQzo6SlNPYmplY3Qq
IGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENhbGxiYWNrLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2FsbGJhY2suaAppbmRl
eCAzZDZmN2JkOS4uNmFhMzFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENhbGxiYWNrLmgKQEAgLTQzLDYgKzQz
LDkgQEAKIC0gKGludCljYWxsYmFja1dpdGhOb25Cb29sUmV0dXJuVHlwZTooRE9NQ2xhc3MzICop
Y2xhc3MzUGFyYW07CiAtIChpbnQpY3VzdG9tQ2FsbGJhY2s6KERPTUNsYXNzNSAqKWNsYXNzNVBh
cmFtIGNsYXNzNlBhcmFtOihET01DbGFzczYgKiljbGFzczZQYXJhbTsKIC0gKEJPT0wpY2FsbGJh
Y2tXaXRoU3RyaW5nTGlzdDooRE9NRE9NU3RyaW5nTGlzdCAqKWxpc3RQYXJhbTsKKy0gKEJPT0wp
Y2FsbGJhY2tXaXRoSW50ZWdlcjooaW50KWludFBhcmFtOworLSAoQk9PTCljYWxsYmFja1dpdGhG
bG9hdDooZmxvYXQpZmxvYXRQYXJhbTsKKy0gKEJPT0wpY2FsbGJhY2tXaXRoTG9uZ0xvbmdQYXJh
bToobG9uZyBsb25nKWxvbmdMb25nUGFyYW07CiBAZW5kCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENhbGxiYWNr
Lm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENh
bGxiYWNrLm1tCmluZGV4IGUwNzBkZTUuLjQ2YWJjOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDYWxsYmFjay5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2FsbGJhY2su
bW0KQEAgLTExNyw2ICsxMTcsMjQgQEAKICAgICByZXR1cm4gSU1QTC0+Y2FsbGJhY2tXaXRoU3Ry
aW5nTGlzdChjb3JlKGxpc3RQYXJhbSkpOwogfQogCistIChCT09MKWNhbGxiYWNrV2l0aEludGVn
ZXI6KGludClpbnRQYXJhbQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+Y2FsbGJhY2tXaXRoSW50ZWdlcihpbnRQYXJhbSk7Cit9
CisKKy0gKEJPT0wpY2FsbGJhY2tXaXRoRmxvYXQ6KGZsb2F0KWZsb2F0UGFyYW0KK3sKKyAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPmNh
bGxiYWNrV2l0aEZsb2F0KGZsb2F0UGFyYW0pOworfQorCistIChCT09MKWNhbGxiYWNrV2l0aExv
bmdMb25nUGFyYW06KGxvbmcgbG9uZylsb25nTG9uZ1BhcmFtCit7CisgICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5jYWxsYmFja1dpdGhM
b25nTG9uZ1BhcmFtKGxvbmdMb25nUGFyYW0pOworfQorCiBAZW5kCiAKIFdlYkNvcmU6OlRlc3RD
YWxsYmFjayogY29yZShET01UZXN0Q2FsbGJhY2sgKndyYXBwZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxiYWNrLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2FsbGJhY2suaWRsCmluZGV4IDI0
NzUyNTEuLjgyZDI1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0Q2FsbGJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0Q2FsbGJhY2suaWRsCkBAIC0zOSw1ICszOSw4IEBAIG1vZHVsZSB0ZXN0
IHsKICAgICAgIGxvbmcgY2FsbGJhY2tXaXRoTm9uQm9vbFJldHVyblR5cGUoaW4gQ2xhc3MzIGNs
YXNzM1BhcmFtKTsKICAgICAgIFtDdXN0b21dIGxvbmcgY3VzdG9tQ2FsbGJhY2soaW4gQ2xhc3M1
IGNsYXNzNVBhcmFtLCBpbiBDbGFzczYgY2xhc3M2UGFyYW0pOwogICAgICAgYm9vbGVhbiBjYWxs
YmFja1dpdGhTdHJpbmdMaXN0KGluIERPTVN0cmluZ0xpc3QgbGlzdFBhcmFtKTsKKyAgICAgIGJv
b2xlYW4gY2FsbGJhY2tXaXRoSW50ZWdlcihpbiBsb25nIGludFBhcmFtKTsKKyAgICAgIGJvb2xl
YW4gY2FsbGJhY2tXaXRoRmxvYXQoaW4gZmxvYXQgZmxvYXRQYXJhbSk7CisgICAgICBib29sZWFu
IGNhbGxiYWNrV2l0aExvbmdMb25nUGFyYW0oaW4gbG9uZyBsb25nIGxvbmdMb25nUGFyYW0pOwog
ICAgIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0Q2FsbGJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdENhbGxiYWNrLmNwcAppbmRleCBiMGE0ZjY5Li42YTc3NDQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q2Fs
bGJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RDYWxsYmFjay5jcHAKQEAgLTE1OSw2ICsxNTksODcgQEAgYm9vbCBWOFRlc3RDYWxsYmFj
azo6Y2FsbGJhY2tXaXRoU3RyaW5nTGlzdChQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGxpc3RQ
YXJhbSkKICAgICByZXR1cm4gIWludm9rZUNhbGxiYWNrKG1fY2FsbGJhY2ssIDEsIGFyZ3YsIGNh
bGxiYWNrUmV0dXJuVmFsdWUsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiB9CiAKK2Jvb2wg
VjhUZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aEludGVnZXIoaW50IGludFBhcmFtKQoreworICAg
IGlmICghY2FuSW52b2tlQ2FsbGJhY2soKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICB2
ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CisKKyAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0
PiB2OENvbnRleHQgPSB0b1Y4Q29udGV4dChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fd29y
bGRDb250ZXh0KTsKKyAgICBpZiAodjhDb250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUodjhDb250ZXh0KTsKKworICAg
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBpbnRQYXJhbUhhbmRsZSA9IHY4OjpJbnRlZ2VyOjpOZXco
aW50UGFyYW0pOworICAgIGlmIChpbnRQYXJhbUhhbmRsZS5Jc0VtcHR5KCkpIHsKKyAgICAgICAg
Q1JBU0goKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGFyZ3ZbXSA9IHsKKyAgICAgICAgaW50UGFyYW1IYW5kbGUKKyAgICB9OworCisg
ICAgYm9vbCBjYWxsYmFja1JldHVyblZhbHVlID0gZmFsc2U7CisgICAgcmV0dXJuICFpbnZva2VD
YWxsYmFjayhtX2NhbGxiYWNrLCAxLCBhcmd2LCBjYWxsYmFja1JldHVyblZhbHVlLCBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpOworfQorCitib29sIFY4VGVzdENhbGxiYWNrOjpjYWxsYmFja1dp
dGhGbG9hdChmbG9hdCBmbG9hdFBhcmFtKQoreworICAgIGlmICghY2FuSW52b2tlQ2FsbGJhY2so
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2Nv
cGU7CisKKyAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiB2OENvbnRleHQgPSB0b1Y4Q29udGV4
dChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fd29ybGRDb250ZXh0KTsKKyAgICBpZiAodjhD
b250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICB2ODo6Q29udGV4
dDo6U2NvcGUgc2NvcGUodjhDb250ZXh0KTsKKworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBm
bG9hdFBhcmFtSGFuZGxlID0gdjg6Ok51bWJlcjo6TmV3KGZsb2F0UGFyYW0pOworICAgIGlmIChm
bG9hdFBhcmFtSGFuZGxlLklzRW1wdHkoKSkgeworICAgICAgICBDUkFTSCgpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0g
eworICAgICAgICBmbG9hdFBhcmFtSGFuZGxlCisgICAgfTsKKworICAgIGJvb2wgY2FsbGJhY2tS
ZXR1cm5WYWx1ZSA9IGZhbHNlOworICAgIHJldHVybiAhaW52b2tlQ2FsbGJhY2sobV9jYWxsYmFj
aywgMSwgYXJndiwgY2FsbGJhY2tSZXR1cm5WYWx1ZSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKK30KKworYm9vbCBWOFRlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoTG9uZ0xvbmdQYXJhbShs
b25nIGxvbmcgbG9uZ0xvbmdQYXJhbSkKK3sKKyAgICBpZiAoIWNhbkludm9rZUNhbGxiYWNrKCkp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3Bl
OworCisgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0gdG9WOENvbnRleHQo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX3dvcmxkQ29udGV4dCk7CisgICAgaWYgKHY4Q29u
dGV4dC5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgdjg6OkNvbnRleHQ6
OlNjb3BlIHNjb3BlKHY4Q29udGV4dCk7CisKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbG9u
Z0xvbmdQYXJhbUhhbmRsZSA9IHY4OjpOdW1iZXI6Ok5ldyhzdGF0aWNfY2FzdDxkb3VibGU+KGxv
bmdMb25nUGFyYW0pKTsKKyAgICBpZiAobG9uZ0xvbmdQYXJhbUhhbmRsZS5Jc0VtcHR5KCkpIHsK
KyAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsKKyAgICAgICAgbG9uZ0xvbmdQYXJhbUhhbmRs
ZQorICAgIH07CisKKyAgICBib29sIGNhbGxiYWNrUmV0dXJuVmFsdWUgPSBmYWxzZTsKKyAgICBy
ZXR1cm4gIWludm9rZUNhbGxiYWNrKG1fY2FsbGJhY2ssIDEsIGFyZ3YsIGNhbGxiYWNrUmV0dXJu
VmFsdWUsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShEQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDYWxsYmFjay5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdENhbGxiYWNrLmgKaW5kZXgg
MTk0ZjEzYy4uYjQyMDJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdENhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdENhbGxiYWNrLmgKQEAgLTUxLDYgKzUxLDkgQEAgcHVi
bGljOgogICAgIENPTVBJTEVfQVNTRVJUKGZhbHNlKSAgICB2aXJ0dWFsIGludCBjYWxsYmFja1dp
dGhOb25Cb29sUmV0dXJuVHlwZShDbGFzczMqIGNsYXNzM1BhcmFtKTsKICAgICB2aXJ0dWFsIGlu
dCBjdXN0b21DYWxsYmFjayhDbGFzczUqIGNsYXNzNVBhcmFtLCBDbGFzczYqIGNsYXNzNlBhcmFt
KTsKICAgICB2aXJ0dWFsIGJvb2wgY2FsbGJhY2tXaXRoU3RyaW5nTGlzdChQYXNzUmVmUHRyPERP
TVN0cmluZ0xpc3Q+IGxpc3RQYXJhbSk7CisgICAgdmlydHVhbCBib29sIGNhbGxiYWNrV2l0aElu
dGVnZXIoaW50IGludFBhcmFtKTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FsbGJhY2tXaXRoRmxvYXQo
ZmxvYXQgZmxvYXRQYXJhbSk7CisgICAgdmlydHVhbCBib29sIGNhbGxiYWNrV2l0aExvbmdMb25n
UGFyYW0obG9uZyBsb25nIGxvbmdMb25nUGFyYW0pOwogCiBwcml2YXRlOgogICAgIFY4VGVzdENh
bGxiYWNrKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91472</attachid>
            <date>2011-04-28 04:35:51 -0700</date>
            <delta_ts>2011-05-01 10:45:41 -0700</delta_ts>
            <desc>Removed unnecessary static_casts.</desc>
            <filename>bug-57948-20110428203549.patch</filename>
            <type>text/plain</type>
            <size>68602</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODUxNzIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3NmZmYThmNDA0ZGQxMDZl
NWU5NzEzZjkzOTg2NTJmNzg3N2YwNjc1Li5lMWQzMWJjMWM3OGIyZDJhY2U3NDM2M2FmM2RhNmI3
ZjIxNDUwN2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMDQtMjYgIEtpbnVr
byBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEpTQyBiaW5kaW5ncyBnZW5lcmF0b3I6IHN1cHBvcnQg
bm9uLW9iamVjdCBudW1iZXJzIGFzIGNhbGxiYWNrIGFyZ3VtZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc5NDgKKworICAgICAgICBDdXJyZW50
IEpTQyBiaW5kaW5ncyBnZW5lcmF0b3IgZG9lcyBub3Qgc3VwcG9ydCBudW1lcmljIHBhcmFtZXRl
cnMsIGJ1dAorICAgICAgICB0aGV5IHNob3VsZCBiZSBzdXBwb3J0ZWQgKGFzIG90aGVyIGJpbmRp
bmdzIGRvKS4KKworICAgICAgICBBZGRlZCB0ZXN0cyBpbiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdENhbGxiYWNrLmlkbC4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtOiBBZGRlZCBJc051bWVyaWNUeXBlIGhhbmRsaW5nLgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdENhbGxiYWNrLmNwcDogVXBkYXRlZCAoZ2Vu
ZXJhdGVkKS4KKyAgICAgICAgKFdlYkRPTVRlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoSW50ZWdl
cik6CisgICAgICAgIChXZWJET01UZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aFVuc2lnbmVkTG9u
Z1BhcmFtKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RD
YWxsYmFjay5oOiBVcGRhdGVkIChnZW5lcmF0ZWQpLgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFjay5jcHA6IFVwZGF0ZWQgKGdlbmVy
YXRlZCkuCisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfY2FsbGJhY2tfd2l0aF9p
bnRlZ2VyKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFja193aXRo
X3Vuc2lnbmVkX2xvbmdfcGFyYW0pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9H
T2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFjay5oOiBVcGRhdGVkIChnZW5lcmF0ZWQpLgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5jcHA6IFVwZGF0
ZWQgKGdlbmVyYXRlZCkuCisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxsYmFjazo6Y2FsbGJh
Y2tXaXRoTm9QYXJhbSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxsYmFjazo6Y2FsbGJh
Y2tXaXRoSW50ZWdlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxsYmFjazo6Y2FsbGJh
Y2tXaXRoVW5zaWduZWRMb25nUGFyYW0pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDYWxsYmFjay5oOiBVcGRhdGVkIChnZW5lcmF0ZWQpLgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDYWxsYmFjay5oOiBVcGRhdGVkIChnZW5l
cmF0ZWQpLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDYWxs
YmFjay5tbTogVXBkYXRlZCAoZ2VuZXJhdGVkKS4KKyAgICAgICAgKC1bRE9NVGVzdENhbGxiYWNr
IGNhbGxiYWNrV2l0aEludGVnZXI6XSk6CisgICAgICAgICgtW0RPTVRlc3RDYWxsYmFjayBjYWxs
YmFja1dpdGhVbnNpZ25lZExvbmdQYXJhbTpdKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdENhbGxiYWNrLmlkbDogQWRkZWQgdGVzdCBjYWxsYmFjayBtZXRob2RzCisgICAg
ICAgIHRoYXQgdGFrZSBudW1lcmljIHBhcmFtZXRlcnMuCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdENhbGxiYWNrLmNwcDogVXBkYXRlZCAoZ2VuZXJhdGVkKS4KKyAg
ICAgICAgKFdlYkNvcmU6OlY4VGVzdENhbGxiYWNrOjpjYWxsYmFja1dpdGhJbnRlZ2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4VGVzdENhbGxiYWNrOjpjYWxsYmFja1dpdGhVbnNpZ25lZExvbmdQ
YXJhbSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdENhbGxiYWNr
Lmg6IFVwZGF0ZWQgKGdlbmVyYXRlZCkuCisKIDIwMTEtMDQtMjYgIEFsZXhhbmRlciBQYXZsb3Yg
IDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxk
bWFuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQppbmRleCBiNWQ1MTFkNDlkYzM1YTZkYWFiZjIzOWE3NTVlZDk1NTBiMjhkMjk3Li42
MWYzMjI4ZDEzYTY3ZTJjMDMwOTY4MDM1Zjg2Yzc3MjhkYWQ5NTcyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMjM1Miw5
ICsyMzUyLDExIEBAIHN1YiBHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb24KICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iIC4gR2V0TmF0aXZlVHlwZSgkZnVuY3Rpb24tPnNp
Z25hdHVyZS0+dHlwZSkgLiAiICR7Y2xhc3NOYW1lfTo6IiAuICRmdW5jdGlvbi0+c2lnbmF0dXJl
LT5uYW1lIC4gIigiKTsKIAogICAgICAgICAgICAgbXkgQGFyZ3MgPSAoKTsKKyAgICAgICAgICAg
IG15ICRuZWVkRXhlY1N0YXRlID0gMDsKICAgICAgICAgICAgIGZvcmVhY2ggbXkgJHBhcmFtIChA
cGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgQWRkSW5jbHVkZXNGb3JUeXBlKCRwYXJhbS0+dHlw
ZSwgMSk7CiAgICAgICAgICAgICAgICAgcHVzaChAYXJncywgR2V0TmF0aXZlVHlwZSgkcGFyYW0t
PnR5cGUpIC4gIiAiIC4gJHBhcmFtLT5uYW1lKTsKKyAgICAgICAgICAgICAgICAkbmVlZEV4ZWNT
dGF0ZSA9IDEgaWYgKCEkY29kZUdlbmVyYXRvci0+SXNOdW1lcmljVHlwZSgkcGFyYW0tPnR5cGUp
IHx8ICFJc05hdGl2ZVR5cGUoJHBhcmFtLT50eXBlKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgam9pbigiLCAiLCBAYXJncykpOwogICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIpXG4iKTsKQEAgLTIzNjQsMTMgKzIzNjYsMTUgQEAgc3ViIEdl
bmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybiB0cnVlO1xuXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIFJlZlB0cjwkY2xhc3NOYW1lPiBwcm90ZWN0KHRoaXMpO1xuXG4iKTsKICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3Nl
cnRpb25zT25seSk7XG5cbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
RXhlY1N0YXRlKiBleGVjID0gbV9kYXRhLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpO1xu
Iik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBFeGVjU3RhdGUqIGV4ZWMg
PSBtX2RhdGEtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7XG4iKSBpZiAkbmVlZEV4ZWNT
dGF0ZTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIE1hcmtlZEFyZ3VtZW50
QnVmZmVyIGFyZ3M7XG4iKTsKIAogICAgICAgICAgICAgZm9yZWFjaCBteSAkcGFyYW0gKEBwYXJh
bXMpIHsKICAgICAgICAgICAgICAgICBteSAkcGFyYW1OYW1lID0gJHBhcmFtLT5uYW1lOwogICAg
ICAgICAgICAgICAgIGlmICgkcGFyYW0tPnR5cGUgZXEgIkRPTVN0cmluZyIpIHsKICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXJncy5hcHBlbmQoanNTdHJpbmco
ZXhlYywgJHtwYXJhbU5hbWV9KSk7XG4iKTsKKyAgICAgICAgICAgICAgICB9IGVsc2lmICgkY29k
ZUdlbmVyYXRvci0+SXNOdW1lcmljVHlwZSgkcGFyYW0tPnR5cGUpICYmIElzTmF0aXZlVHlwZSgk
cGFyYW0tPnR5cGUpKSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGFyZ3MuYXBwZW5kKGpzTnVtYmVyKCR7cGFyYW1OYW1lfSkpO1xuIik7CiAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgYXJncy5hcHBlbmQodG9KUyhleGVjLCBtX2RhdGEtPmdsb2JhbE9iamVjdCgpLCAke3BhcmFt
TmFtZX0pKTtcbiIpOwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdENhbGxiYWNrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdENhbGxiYWNr
LmNwcAppbmRleCBkMTJkMGMzNmRlMTFlMzczNDQyOTdjOWYzZDc2OTY4M2JiYzY5MzhjLi43Nzcx
NTg2NjlmZWRjMGFjY2U0YThlYTM3YjQyMzBiZTIxMDEzZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RDYWxsYmFjay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0
Q2FsbGJhY2suY3BwCkBAIC0xMjUsNiArMTI1LDMwIEBAIGJvb2wgV2ViRE9NVGVzdENhbGxiYWNr
OjpjYWxsYmFja1dpdGhTdHJpbmdMaXN0KGNvbnN0IFdlYkRPTURPTVN0cmluZ0xpc3QmIGxpc3RQ
CiAgICAgcmV0dXJuIGltcGwoKS0+Y2FsbGJhY2tXaXRoU3RyaW5nTGlzdCh0b1dlYkNvcmUobGlz
dFBhcmFtKSk7CiB9CiAKK2Jvb2wgV2ViRE9NVGVzdENhbGxiYWNrOjpjYWxsYmFja1dpdGhJbnRl
Z2VyKGludCBpbnRQYXJhbSkKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuIGltcGwoKS0+Y2FsbGJhY2tXaXRoSW50ZWdlcihpbnRQYXJhbSk7
Cit9CisKK2Jvb2wgV2ViRE9NVGVzdENhbGxiYWNrOjpjYWxsYmFja1dpdGhGbG9hdChmbG9hdCBm
bG9hdFBhcmFtKQoreworICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICByZXR1cm4gaW1wbCgpLT5jYWxsYmFja1dpdGhGbG9hdChmbG9hdFBhcmFtKTsKK30KKwor
Ym9vbCBXZWJET01UZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aExvbmdMb25nUGFyYW0obG9uZyBs
b25nIGxvbmdMb25nUGFyYW0pCit7CisgICAgaWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiBpbXBsKCktPmNhbGxiYWNrV2l0aExvbmdMb25nUGFyYW0obG9u
Z0xvbmdQYXJhbSk7Cit9CisKIFdlYkNvcmU6OlRlc3RDYWxsYmFjayogdG9XZWJDb3JlKGNvbnN0
IFdlYkRPTVRlc3RDYWxsYmFjayYgd3JhcHBlcikKIHsKICAgICByZXR1cm4gd3JhcHBlci5pbXBs
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQ
L1dlYkRPTVRlc3RDYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0NQUC9XZWJET01UZXN0Q2FsbGJhY2suaAppbmRleCA4ZDExYTRiZTJiZWNmMzI3ZjU0NjYx
NDRjNDY4ZmMwNTcyNTczNWNhLi5lMTA1MzNmZGFhYjFkZGVjMjJkMGI3Yzg1YjkyMTM5ZTVkZWFl
NTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQ
L1dlYkRPTVRlc3RDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9DUFAvV2ViRE9NVGVzdENhbGxiYWNrLmgKQEAgLTUzLDYgKzUzLDkgQEAgcHVibGlj
OgogICAgIGludCBjYWxsYmFja1dpdGhOb25Cb29sUmV0dXJuVHlwZShjb25zdCBXZWJET01DbGFz
czMmIGNsYXNzM1BhcmFtKTsKICAgICBpbnQgY3VzdG9tQ2FsbGJhY2soY29uc3QgV2ViRE9NQ2xh
c3M1JiBjbGFzczVQYXJhbSwgY29uc3QgV2ViRE9NQ2xhc3M2JiBjbGFzczZQYXJhbSk7CiAgICAg
Ym9vbCBjYWxsYmFja1dpdGhTdHJpbmdMaXN0KGNvbnN0IFdlYkRPTURPTVN0cmluZ0xpc3QmIGxp
c3RQYXJhbSk7CisgICAgYm9vbCBjYWxsYmFja1dpdGhJbnRlZ2VyKGludCBpbnRQYXJhbSk7Cisg
ICAgYm9vbCBjYWxsYmFja1dpdGhGbG9hdChmbG9hdCBmbG9hdFBhcmFtKTsKKyAgICBib29sIGNh
bGxiYWNrV2l0aExvbmdMb25nUGFyYW0obG9uZyBsb25nIGxvbmdMb25nUGFyYW0pOwogCiAgICAg
V2ViQ29yZTo6VGVzdENhbGxiYWNrKiBpbXBsKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxs
YmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01UZXN0Q2FsbGJhY2suY3BwCmluZGV4IGI2M2Y1MGU5NDZkN2YxZGMwMWZiNzE1ODJk
MjQ1YWI3NDI0NzE0MGEuLmViZjg5NTM2MzYzOTQzOWM2NGRhZmRmMjU3MzI2YmRhNjI0N2MwYTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0
L1dlYktpdERPTVRlc3RDYWxsYmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdENhbGxiYWNrLmNwcApAQCAtMTM1LDYg
KzEzNSwzNiBAQCB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfY2FsbGJhY2tfd2l0aF9zdHJpbmdf
bGlzdChXZWJLaXRET01UZXN0Q2FsbGJhY2sqIHNlbGYsCiAgICAgcmV0dXJuIHJlczsKIH0KIAor
Z2Jvb2xlYW4KK3dlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFja193aXRoX2ludGVnZXIo
V2ViS2l0RE9NVGVzdENhbGxiYWNrKiBzZWxmLCBnbG9uZyBpbnRfcGFyYW0pCit7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOworICAgIFdlYkNvcmU6OlRlc3RDYWxsYmFjayAqIGl0ZW0gPSBXZWJLaXQ6
OmNvcmUoc2VsZik7CisgICAgZ2Jvb2xlYW4gcmVzID0gaXRlbS0+Y2FsbGJhY2tXaXRoSW50ZWdl
cihpbnRfcGFyYW0pOworICAgIHJldHVybiByZXM7Cit9CisKK2dib29sZWFuCit3ZWJraXRfZG9t
X3Rlc3RfY2FsbGJhY2tfY2FsbGJhY2tfd2l0aF9mbG9hdChXZWJLaXRET01UZXN0Q2FsbGJhY2sq
IHNlbGYsIGdmbG9hdCBmbG9hdF9wYXJhbSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChz
ZWxmLCAwKTsKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAg
V2ViQ29yZTo6VGVzdENhbGxiYWNrICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBn
Ym9vbGVhbiByZXMgPSBpdGVtLT5jYWxsYmFja1dpdGhGbG9hdChmbG9hdF9wYXJhbSk7CisgICAg
cmV0dXJuIHJlczsKK30KKworZ2Jvb2xlYW4KK3dlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxs
YmFja193aXRoX2xvbmdfbG9uZ19wYXJhbShXZWJLaXRET01UZXN0Q2FsbGJhY2sqIHNlbGYsIGdp
bnQ2NCBsb25nX2xvbmdfcGFyYW0pCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwg
MCk7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdlYkNv
cmU6OlRlc3RDYWxsYmFjayAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ2Jvb2xl
YW4gcmVzID0gaXRlbS0+Y2FsbGJhY2tXaXRoTG9uZ0xvbmdQYXJhbShsb25nX2xvbmdfcGFyYW0p
OworICAgIHJldHVybiByZXM7Cit9CisKIAogR19ERUZJTkVfVFlQRShXZWJLaXRET01UZXN0Q2Fs
bGJhY2ssIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFjaywgV0VCS0lUX1RZUEVfRE9NX09CSkVDVCkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmpl
Y3QvV2ViS2l0RE9NVGVzdENhbGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2suaAppbmRleCA1NDFhZmIyYWU1
NjQyMTgwNjBjZDIxZDBiOWZkZjc2MDJmNzVkNmRmLi4yNzIwMGFiN2VkNzAyMjhjNDY1NWM4YmI5
NmYwMmNmNGFlNTgzNWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2su
aApAQCAtNjEsNiArNjEsMTUgQEAgd2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2NhbGxiYWNrX3dp
dGhfbm9uX2Jvb2xfcmV0dXJuX3R5cGUoV2ViS2l0RE9NVGVzdENhbGxiYWMKIFdFQktJVF9BUEkg
Z2Jvb2xlYW4KIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFja193aXRoX3N0cmluZ19s
aXN0KFdlYktpdERPTVRlc3RDYWxsYmFjayogc2VsZiwgV2ViS2l0RE9NRE9NU3RyaW5nTGlzdCog
bGlzdF9wYXJhbSk7CiAKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9kb21fdGVzdF9jYWxs
YmFja19jYWxsYmFja193aXRoX2ludGVnZXIoV2ViS2l0RE9NVGVzdENhbGxiYWNrKiBzZWxmLCBn
bG9uZyBpbnRfcGFyYW0pOworCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfZG9tX3Rlc3Rf
Y2FsbGJhY2tfY2FsbGJhY2tfd2l0aF9mbG9hdChXZWJLaXRET01UZXN0Q2FsbGJhY2sqIHNlbGYs
IGdmbG9hdCBmbG9hdF9wYXJhbSk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9kb21f
dGVzdF9jYWxsYmFja19jYWxsYmFja193aXRoX2xvbmdfbG9uZ19wYXJhbShXZWJLaXRET01UZXN0
Q2FsbGJhY2sqIHNlbGYsIGdpbnQ2NCBsb25nX2xvbmdfcGFyYW0pOworCiBHX0VORF9ERUNMUwog
CiAjZW5kaWYgLyogV2ViS2l0RE9NVGVzdENhbGxiYWNrX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suY3Bw
CmluZGV4IGE1MjM0ZDlkZDU0MGNjMWJkYTYzYmQ1Nzg5NGI5N2I2YjRlMWNiYmEuLjZlOGNmMmI1
MzZhYmJkYzA5NDMzZmQ4M2NhZjlmMzg4OTFjNjIyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmNwcApA
QCAtNjYsNyArNjYsNiBAQCBib29sIEpTVGVzdENhbGxiYWNrOjpjYWxsYmFja1dpdGhOb1BhcmFt
KCkKIAogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAKLSAgICBFeGVj
U3RhdGUqIGV4ZWMgPSBtX2RhdGEtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7CiAgICAg
TWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKIAogICAgIGJvb2wgcmFpc2VkRXhjZXB0aW9uID0g
ZmFsc2U7CkBAIC04NSw3ICs4NCw3IEBAIGJvb2wgSlNUZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0
aENsYXNzMVBhcmFtKENsYXNzMSogY2xhc3MxUGFyYW0pCiAKICAgICBFeGVjU3RhdGUqIGV4ZWMg
PSBtX2RhdGEtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7CiAgICAgTWFya2VkQXJndW1l
bnRCdWZmZXIgYXJnczsKLSAgICBhcmdzLmFwcGVuZCh0b0pTKGV4ZWMsIGNsYXNzMVBhcmFtKSk7
CisgICAgYXJncy5hcHBlbmQodG9KUyhleGVjLCBtX2RhdGEtPmdsb2JhbE9iamVjdCgpLCBjbGFz
czFQYXJhbSkpOwogCiAgICAgYm9vbCByYWlzZWRFeGNlcHRpb24gPSBmYWxzZTsKICAgICBtX2Rh
dGEtPmludm9rZUNhbGxiYWNrKGFyZ3MsICZyYWlzZWRFeGNlcHRpb24pOwpAQCAtMTAzLDcgKzEw
Miw3IEBAIGJvb2wgSlNUZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aENsYXNzMlBhcmFtKENsYXNz
MiogY2xhc3MyUGFyYW0sIGNvbnN0IFN0cmluZyYKIAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1f
ZGF0YS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKICAgICBNYXJrZWRBcmd1bWVudEJ1
ZmZlciBhcmdzOwotICAgIGFyZ3MuYXBwZW5kKHRvSlMoZXhlYywgY2xhc3MyUGFyYW0pKTsKKyAg
ICBhcmdzLmFwcGVuZCh0b0pTKGV4ZWMsIG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCksIGNsYXNzMlBh
cmFtKSk7CiAgICAgYXJncy5hcHBlbmQoanNTdHJpbmcoZXhlYywgc3RyQXJnKSk7CiAKICAgICBi
b29sIHJhaXNlZEV4Y2VwdGlvbiA9IGZhbHNlOwpAQCAtMTIyLDcgKzEyMSw1OCBAQCBib29sIEpT
VGVzdENhbGxiYWNrOjpjYWxsYmFja1dpdGhTdHJpbmdMaXN0KERPTVN0cmluZ0xpc3QqIGxpc3RQ
YXJhbSkKIAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPmds
b2JhbEV4ZWMoKTsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwotICAgIGFyZ3MuYXBw
ZW5kKHRvSlMoZXhlYywgbGlzdFBhcmFtKSk7CisgICAgYXJncy5hcHBlbmQodG9KUyhleGVjLCBt
X2RhdGEtPmdsb2JhbE9iamVjdCgpLCBsaXN0UGFyYW0pKTsKKworICAgIGJvb2wgcmFpc2VkRXhj
ZXB0aW9uID0gZmFsc2U7CisgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayhhcmdzLCAmcmFpc2Vk
RXhjZXB0aW9uKTsKKyAgICByZXR1cm4gIXJhaXNlZEV4Y2VwdGlvbjsKK30KKworYm9vbCBKU1Rl
c3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoSW50ZWdlcihpbnQgaW50UGFyYW0pCit7CisgICAgaWYg
KCFjYW5JbnZva2VDYWxsYmFjaygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIFJlZlB0
cjxKU1Rlc3RDYWxsYmFjaz4gcHJvdGVjdCh0aGlzKTsKKworICAgIEpTTG9jayBsb2NrKFNpbGVu
Y2VBc3NlcnRpb25zT25seSk7CisKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOworICAg
IGFyZ3MuYXBwZW5kKGpzTnVtYmVyKGludFBhcmFtKSk7CisKKyAgICBib29sIHJhaXNlZEV4Y2Vw
dGlvbiA9IGZhbHNlOworICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywgJnJhaXNlZEV4
Y2VwdGlvbik7CisgICAgcmV0dXJuICFyYWlzZWRFeGNlcHRpb247Cit9CisKK2Jvb2wgSlNUZXN0
Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aEZsb2F0KGZsb2F0IGZsb2F0UGFyYW0pCit7CisgICAgaWYg
KCFjYW5JbnZva2VDYWxsYmFjaygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIFJlZlB0
cjxKU1Rlc3RDYWxsYmFjaz4gcHJvdGVjdCh0aGlzKTsKKworICAgIEpTTG9jayBsb2NrKFNpbGVu
Y2VBc3NlcnRpb25zT25seSk7CisKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOworICAg
IGFyZ3MuYXBwZW5kKGpzTnVtYmVyKGZsb2F0UGFyYW0pKTsKKworICAgIGJvb2wgcmFpc2VkRXhj
ZXB0aW9uID0gZmFsc2U7CisgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayhhcmdzLCAmcmFpc2Vk
RXhjZXB0aW9uKTsKKyAgICByZXR1cm4gIXJhaXNlZEV4Y2VwdGlvbjsKK30KKworYm9vbCBKU1Rl
c3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoTG9uZ0xvbmdQYXJhbShsb25nIGxvbmcgbG9uZ0xvbmdQ
YXJhbSkKK3sKKyAgICBpZiAoIWNhbkludm9rZUNhbGxiYWNrKCkpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgUmVmUHRyPEpTVGVzdENhbGxiYWNrPiBwcm90ZWN0KHRoaXMpOworCisgICAg
SlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKKworICAgIE1hcmtlZEFyZ3VtZW50
QnVmZmVyIGFyZ3M7CisgICAgYXJncy5hcHBlbmQoanNOdW1iZXIobG9uZ0xvbmdQYXJhbSkpOwog
CiAgICAgYm9vbCByYWlzZWRFeGNlcHRpb24gPSBmYWxzZTsKICAgICBtX2RhdGEtPmludm9rZUNh
bGxiYWNrKGFyZ3MsICZyYWlzZWRFeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suaAppbmRleCAyMjZl
ODc0M2RlZTJlNjZjZjc3YjIyZjE3ODkyNGNiN2VmNGJlN2FiLi45YmQwOTNlZDA3MjVkNjVmYTc2
ODIzMTA2NzRkMDExM2Y4OGUzMjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suaApAQCAtNDYsNiArNDYsOSBA
QCBwdWJsaWM6CiAgICAgQ09NUElMRV9BU1NFUlQoZmFsc2UpICAgIHZpcnR1YWwgaW50IGNhbGxi
YWNrV2l0aE5vbkJvb2xSZXR1cm5UeXBlKENsYXNzMyogY2xhc3MzUGFyYW0pOwogICAgIHZpcnR1
YWwgaW50IGN1c3RvbUNhbGxiYWNrKENsYXNzNSogY2xhc3M1UGFyYW0sIENsYXNzNiogY2xhc3M2
UGFyYW0pOwogICAgIHZpcnR1YWwgYm9vbCBjYWxsYmFja1dpdGhTdHJpbmdMaXN0KERPTVN0cmlu
Z0xpc3QqIGxpc3RQYXJhbSk7CisgICAgdmlydHVhbCBib29sIGNhbGxiYWNrV2l0aEludGVnZXIo
aW50IGludFBhcmFtKTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FsbGJhY2tXaXRoRmxvYXQoZmxvYXQg
ZmxvYXRQYXJhbSk7CisgICAgdmlydHVhbCBib29sIGNhbGxiYWNrV2l0aExvbmdMb25nUGFyYW0o
bG9uZyBsb25nIGxvbmdMb25nUGFyYW0pOwogCiBwcml2YXRlOgogICAgIEpTVGVzdENhbGxiYWNr
KEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50
ZXJmYWNlLmNwcAppbmRleCBjZTBmZWY2N2NmNzIwMmM5OWUyMDc2MzhlNWNjNzlkODhjOTM5MWI3
Li44OWYzMWUzZDUyOTQ0ZjYxZGFlOGFmYzQwNDJlMGYzMmJkYzAyODFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50
ZXJmYWNlLmNwcApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYs
IEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJv
cGVydHlEZXNjcmlwdG9yJik7CiAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5m
bzsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJl
KEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQor
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKICAgICAgICAg
cmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBKU0M6
OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90
Q291bnQsICZzX2luZm8pOwogICAgIH0KQEAgLTkwLDEyICs5MCwxMiBAQCBKU1Rlc3RJbnRlcmZh
Y2VDb25zdHJ1Y3Rvcjo6SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
LCBKU0RPTUdsbwogCiBib29sIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PEpT
VGVzdEludGVyZmFjZUNvbnN0cnVjdG9yLCBET01PYmplY3Q+KGV4ZWMsICZKU1Rlc3RJbnRlcmZh
Y2VDb25zdHJ1Y3RvclRhYmxlLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIHJldHVy
biBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IsIEpTRE9NV3Jh
cHBlcj4oZXhlYywgJkpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yVGFibGUsIHRoaXMsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAgIHJl
dHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3Is
IERPTU9iamVjdD4oZXhlYywgJkpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yVGFibGUsIHRoaXMs
IHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CisgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlRGVz
Y3JpcHRvcjxKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvciwgSlNET01XcmFwcGVyPihleGVjLCAm
SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZSwgdGhpcywgcHJvcGVydHlOYW1lLCBkZXNj
cmlwdG9yKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RJbnRlcmZh
Y2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0SW50ZXJmYWNlKEV4ZWNTdGF0ZSogZXhlYykK
QEAgLTEzMywxMCArMTMzLDEwIEBAIEpTT2JqZWN0KiBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGU6
OnNlbGYoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgcmV0dXJu
IGdldERPTVByb3RvdHlwZTxKU1Rlc3RJbnRlcmZhY2U+KGV4ZWMsIGdsb2JhbE9iamVjdCk7CiB9
CiAKLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RJbnRlcmZhY2U6OnNfaW5mbyA9IHsgIlRlc3RJbnRl
cmZhY2UiLCAmRE9NT2JqZWN0V2l0aEdsb2JhbFBvaW50ZXI6OnNfaW5mbywgJkpTVGVzdEludGVy
ZmFjZVRhYmxlLCAwIH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0SW50ZXJmYWNlOjpzX2luZm8g
PSB7ICJUZXN0SW50ZXJmYWNlIiwgJkpTRE9NV3JhcHBlcjo6c19pbmZvLCAmSlNUZXN0SW50ZXJm
YWNlVGFibGUsIDAgfTsKIAotSlNUZXN0SW50ZXJmYWNlOjpKU1Rlc3RJbnRlcmZhY2UoTm9uTnVs
bFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFBhc3NSZWZQdHI8VGVzdEludGVyZmFjZT4gaW1wbCkKLSAgICA6IERPTU9iamVj
dFdpdGhHbG9iYWxQb2ludGVyKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQorSlNUZXN0SW50ZXJm
YWNlOjpKU1Rlc3RJbnRlcmZhY2UoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VGVzdEludGVyZmFjZT4gaW1wbCkKKyAgICA6
IEpTRE9NV3JhcHBlcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKICAgICAsIG1faW1wbChpbXBs
KQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CkBAIC0xNDQsNyArMTQ0LDcgQEAg
SlNUZXN0SW50ZXJmYWNlOjpKU1Rlc3RJbnRlcmZhY2UoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0
dXJlPiBzdHJ1Y3R1cmUsIEpTRE9NR2wKIAogSlNPYmplY3QqIEpTVGVzdEludGVyZmFjZTo6Y3Jl
YXRlUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKIHsKLSAgICByZXR1cm4gbmV3IChleGVjKSBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUoZ2xv
YmFsT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShnbG9i
YWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkp
OworICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZShleGVjLT5n
bG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlOjpjcmVh
dGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+b2Jq
ZWN0UHJvdG90eXBlKCkpKTsKIH0KIAogYm9vbCBKU1Rlc3RJbnRlcmZhY2U6OmdldE93blByb3Bl
cnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQpAQCAtMTY4LDEwICsxNjgsMTEgQEAgSlNWYWx1ZSBKU1Rlc3RJ
bnRlcmZhY2U6OmdldENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE8KICAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0SW50ZXJmYWNlQ29u
c3RydWN0b3I+KGV4ZWMsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2Jq
ZWN0KSk7CiB9CiAKLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0SW50ZXJmYWNlKiBvYmplY3QpCitKU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVGVzdEludGVyZmFjZSogaW1wbCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NT2Jq
ZWN0V3JhcHBlcjxKU1Rlc3RJbnRlcmZhY2U+KGV4ZWMsIGdsb2JhbE9iamVjdCwgb2JqZWN0KTsK
KyAgICByZXR1cm4gd3JhcDxKU1Rlc3RJbnRlcmZhY2U+KGV4ZWMsIGdsb2JhbE9iamVjdCwgaW1w
bCk7CiB9CisKIFRlc3RJbnRlcmZhY2UqIHRvVGVzdEludGVyZmFjZShKU0M6OkpTVmFsdWUgdmFs
dWUpCiB7CiAgICAgcmV0dXJuIHZhbHVlLmluaGVyaXRzKCZKU1Rlc3RJbnRlcmZhY2U6OnNfaW5m
bykgPyBzdGF0aWNfY2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihhc09iamVjdCh2YWx1ZSkpLT5pbXBs
KCkgOiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCmluZGV4IDVlZTMzYTBlZDgxNDBhNTUxN2MxN2JjYTQ4
MWM1OGZlMjUwYTNiOWEuLmE5MGY0MTM3MGFmYzJlZjRhNjQzNTJiMjc2MTEzOGZiODE1MTc4YjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW50ZXJmYWNlLmgKQEAgLTMyLDE2ICszMiwxNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIFRlc3RJbnRlcmZhY2U7CiAKLWNsYXNzIEpTVGVzdEludGVyZmFjZSA6IHB1
YmxpYyBET01PYmplY3RXaXRoR2xvYmFsUG9pbnRlciB7Ci0gICAgdHlwZWRlZiBET01PYmplY3RX
aXRoR2xvYmFsUG9pbnRlciBCYXNlOworY2xhc3MgSlNUZXN0SW50ZXJmYWNlIDogcHVibGljIEpT
RE9NV3JhcHBlciB7CisgICAgdHlwZWRlZiBKU0RPTVdyYXBwZXIgQmFzZTsKIHB1YmxpYzoKLSAg
ICBKU1Rlc3RJbnRlcmZhY2UoTm9uTnVsbFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+LCBKU0RP
TUdsb2JhbE9iamVjdCosIFBhc3NSZWZQdHI8VGVzdEludGVyZmFjZT4pOworICAgIEpTVGVzdElu
dGVyZmFjZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjxU
ZXN0SW50ZXJmYWNlPik7CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlw
ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICB2aXJ0dWFsIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgdmlydHVhbCBib29s
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIHN0
YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxKU0M6OlN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpj
cmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgIH0K
QEAgLTYzLDExICs2MywxMSBAQCBjbGFzcyBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUgOiBwdWJs
aWMgSlNDOjpKU09iamVjdFdpdGhHbG9iYWxPYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBK
U0M6OkpTT2JqZWN0KiBzZWxmKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCop
OwogICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBKU0M6OlN0cnVj
dHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsK
ICAgICB9Ci0gICAgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+IHN0cnVjdHVy
ZSkgOiBKU0M6OkpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSkgeyB9CisgICAgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKEpTQzo6SlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0
dXJlKiBzdHJ1Y3R1cmUpIDogSlNDOjpKU09iamVjdFdpdGhHbG9iYWxPYmplY3QoZ2xvYmFsRGF0
YSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpIHsgfQogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAppbmRleCBlZmFl
ZTNiYjE0ZDMyYzg1M2VhMzA3ODM0ZmNiOWI4Yjk0ZmYzNjZjLi5iNWJhMTM1MmE2ZDY1YTEzN2Ji
NzU1YjU3YTE1MzUzYjc1YjA4NzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlm
aWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlND
OjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8g
c19pbmZvOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewogICAg
ICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUs
IEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91
c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgfQpAQCAtODksMTIgKzg5LDEyIEBAIEpTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3Rvcjo6SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lckNvbnN0cnVjdG9yCiAKIGJvb2wgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0
cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICByZXR1cm4gZ2V0
U3RhdGljVmFsdWVTbG90PEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3Rvciwg
RE9NT2JqZWN0PihleGVjLCAmSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9y
VGFibGUsIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgcmV0dXJuIGdldFN0YXRpY1Zh
bHVlU2xvdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IsIEpTRE9NV3Jh
cHBlcj4oZXhlYywgJkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvclRhYmxl
LCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXJDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjxK
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IsIERPTU9iamVjdD4oZXhlYywg
JkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvclRhYmxlLCB0aGlzLCBwcm9w
ZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOworICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0
b3I8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yLCBKU0RPTVdyYXBwZXI+
KGV4ZWMsICZKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3JUYWJsZSwgdGhp
cywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KIAogLyogSGFzaCB0YWJsZSBmb3IgcHJv
dG90eXBlICovCkBAIC0xMjksMTAgKzEyOSwxMCBAQCBib29sIEpTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXJQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqCiAg
ICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcjxKU09iamVjdD4oZXhlYywgJkpT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGVUYWJsZSwgdGhpcywgcHJvcGVydHlO
YW1lLCBkZXNjcmlwdG9yKTsKIH0KIAotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXI6OnNfaW5mbyA9IHsgIlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIiwgJkRP
TU9iamVjdFdpdGhHbG9iYWxQb2ludGVyOjpzX2luZm8sICZKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyVGFibGUsIDAgfTsKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyOjpzX2luZm8gPSB7ICJUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciIsICZKU0RPTVdy
YXBwZXI6OnNfaW5mbywgJkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJUYWJsZSwgMCB9Owog
Ci1KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyKE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
PiBpbXBsKQotICAgIDogRE9NT2JqZWN0V2l0aEdsb2JhbFBvaW50ZXIoc3RydWN0dXJlLCBnbG9i
YWxPYmplY3QpCitKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQYXNzUmVmUHRyPFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiBpbXBsKQor
ICAgIDogSlNET01XcmFwcGVyKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQogICAgICwgbV9pbXBs
KGltcGwpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKQEAgLTE0MCw3ICsxNDAs
NyBAQCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyKE5vbk51bGxQYXNzUmVmUHRyPFN0cgogCiBKU09iamVjdCogSlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lcjo6Y3JlYXRlUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gbmV3IChleGVjKSBKU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlKGdsb2JhbE9iamVjdCwgSlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+Z2xv
YmFsRGF0YSgpLCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CisgICAgcmV0dXJu
IG5ldyAoZXhlYykgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZShleGVjLT5n
bG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclBy
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9i
YWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CiB9CiAKIGJvb2wgSlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lcjo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCkBAIC0xNzksMTAg
KzE3OSwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXJQcm90b3R5cGVGdW5jdGlvbk1ldGhvZAogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0
YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lciogb2JqZWN0KQorSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyKiBpbXBsKQogewotICAgIHJldHVybiBnZXRET01PYmplY3RXcmFwcGVyPEpTVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+KGV4ZWMsIGdsb2JhbE9iamVjdCwgb2JqZWN0KTsKKyAg
ICByZXR1cm4gd3JhcDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPihleGVjLCBnbG9iYWxP
YmplY3QsIGltcGwpOwogfQorCiBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogdG9UZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lcihKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgcmV0dXJuIHZh
bHVlLmluaGVyaXRzKCZKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpzX2luZm8pID8gc3Rh
dGljX2Nhc3Q8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcio+KGFzT2JqZWN0KHZhbHVlKSkt
PmltcGwoKSA6IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaApp
bmRleCBmZGI4YTAyOGFmYWZmMzhkYWMxOWNmMTVjZDUxMTM3ZThiYzQyZDc0Li5lOTJhZjE3NTQ0
ZWY0OGFmNjQ0YjA0MzBjMGZkNDYwODg2NzRiODY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyLmgKQEAgLTMwLDE2ICszMCwxNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOwogCi1jbGFzcyBKU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIDogcHVibGljIERPTU9iamVjdFdpdGhHbG9iYWxQb2ludGVy
IHsKLSAgICB0eXBlZGVmIERPTU9iamVjdFdpdGhHbG9iYWxQb2ludGVyIEJhc2U7CitjbGFzcyBK
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIDogcHVibGljIEpTRE9NV3JhcHBlciB7CisgICAg
dHlwZWRlZiBKU0RPTVdyYXBwZXIgQmFzZTsKIHB1YmxpYzoKLSAgICBKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyKE5vbk51bGxQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiwgSlNET01HbG9i
YWxPYmplY3QqLCBQYXNzUmVmUHRyPFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPik7CisgICAg
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFs
T2JqZWN0KiwgUGFzc1JlZlB0cjxUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4pOwogICAgIHN0
YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChK
U0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6
OlByb3BlcnR5U2xvdCYpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0lu
Zm8gc19pbmZvOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+IGNyZWF0
ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
CiAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3Rv
dHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5v
bnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICB9CkBAIC02MywxMSArNjMsMTEgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CiAgICAgdmlydHVh
bCBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRl
bnRpZmllciYsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgdmlydHVhbCBib29sIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYs
IEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SlNDOjpT
dHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGds
b2JhbERhdGEsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICB9Ci0gICAgSlNU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiBzdHJ1Y3R1cmUp
IDogSlNDOjpKU09iamVjdFdpdGhHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUp
IHsgfQorICAgIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGUoSlNDOjpKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgOiBKU0M6OkpTT2JqZWN0V2l0aEdsb2JhbE9iamVj
dChnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkgeyB9CiBwcm90ZWN0ZWQ6CiAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlkZXNH
ZXRPd25Qcm9wZXJ0eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmlu
ZGV4IGE5OGNhZmEyN2RmOGNhNzIzOWY4Mzk5OTIxN2QyMWExMWIxY2VjMDcuLjA1ODQxOTg5MzYy
NTA4MGZmNjc4ZjlkMTkzZDk4NmMyMjA3ZWFjNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0zOCw3ICszOCw2
IEBACiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVGVzdE9i
ai5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTTnVt
YmVyQ2VsbC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYv
R2V0UHRyLmg+CiAKQEAgLTE0OSw3ICsxNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IGdldE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmll
ciYsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6
UHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNf
aW5mbzsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4gY3JlYXRlU3RydWN0
dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQorICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBK
U0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNT
bG90Q291bnQsICZzX2luZm8pOwogICAgIH0KQEAgLTE2OCwxMiArMTY3LDEyIEBAIEpTVGVzdE9i
akNvbnN0cnVjdG9yOjpKU1Rlc3RPYmpDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnCiAKIGJvb2wgSlNUZXN0T2JqQ29uc3RydWN0b3I6OmdldE93blByb3Bl
cnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQogewotICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNU
ZXN0T2JqQ29uc3RydWN0b3IsIERPTU9iamVjdD4oZXhlYywgJkpTVGVzdE9iakNvbnN0cnVjdG9y
VGFibGUsIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgcmV0dXJuIGdldFN0YXRpY1Zh
bHVlU2xvdDxKU1Rlc3RPYmpDb25zdHJ1Y3RvciwgSlNET01XcmFwcGVyPihleGVjLCAmSlNUZXN0
T2JqQ29uc3RydWN0b3JUYWJsZSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9v
bCBKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjxK
U1Rlc3RPYmpDb25zdHJ1Y3RvciwgRE9NT2JqZWN0PihleGVjLCAmSlNUZXN0T2JqQ29uc3RydWN0
b3JUYWJsZSwgdGhpcywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKKyAgICByZXR1cm4gZ2V0
U3RhdGljVmFsdWVEZXNjcmlwdG9yPEpTVGVzdE9iakNvbnN0cnVjdG9yLCBKU0RPTVdyYXBwZXI+
KGV4ZWMsICZKU1Rlc3RPYmpDb25zdHJ1Y3RvclRhYmxlLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIGRl
c2NyaXB0b3IpOwogfQogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KQEAgLTI1NCwx
MCArMjUzLDEwIEBAIGJvb2wgSlNUZXN0T2JqUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmCiAgICAgcmV0dXJuIGdldFN0YXRp
Y1Byb3BlcnR5RGVzY3JpcHRvcjxKU1Rlc3RPYmpQcm90b3R5cGUsIEpTT2JqZWN0PihleGVjLCAm
SlNUZXN0T2JqUHJvdG90eXBlVGFibGUsIHRoaXMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7
CiB9CiAKLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RPYmo6OnNfaW5mbyA9IHsgIlRlc3RPYmoiLCAm
RE9NT2JqZWN0V2l0aEdsb2JhbFBvaW50ZXI6OnNfaW5mbywgJkpTVGVzdE9ialRhYmxlLCAwIH07
Citjb25zdCBDbGFzc0luZm8gSlNUZXN0T2JqOjpzX2luZm8gPSB7ICJUZXN0T2JqIiwgJkpTRE9N
V3JhcHBlcjo6c19pbmZvLCAmSlNUZXN0T2JqVGFibGUsIDAgfTsKIAotSlNUZXN0T2JqOjpKU1Rl
c3RPYmooTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VGVzdE9iaj4gaW1wbCkKLSAgICA6IERP
TU9iamVjdFdpdGhHbG9iYWxQb2ludGVyKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQorSlNUZXN0
T2JqOjpKU1Rlc3RPYmooU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VGVzdE9iaj4gaW1wbCkKKyAgICA6IEpTRE9NV3JhcHBl
cihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKICAgICAsIG1faW1wbChpbXBsKQogewogICAgIEFT
U0VSVChpbmhlcml0cygmc19pbmZvKSk7CkBAIC0yNjUsNyArMjY0LDcgQEAgSlNUZXN0T2JqOjpK
U1Rlc3RPYmooTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIEpTRE9NR2xv
YmFsT2JqZWN0KgogCiBKU09iamVjdCogSlNUZXN0T2JqOjpjcmVhdGVQcm90b3R5cGUoRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBu
ZXcgKGV4ZWMpIEpTVGVzdE9ialByb3RvdHlwZShnbG9iYWxPYmplY3QsIEpTVGVzdE9ialByb3Rv
dHlwZTo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxP
YmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CisgICAgcmV0dXJuIG5ldyAoZXhlYykgSlNUZXN0
T2JqUHJvdG90eXBlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RPYmpQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xv
YmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwogfQogCiBib29sIEpTVGVzdE9iajo6Z2V0
T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCkBAIC0yODcsNiArMjg2LDcgQEAgSlNWYWx1ZSBq
c1Rlc3RPYmpSZWFkT25seUludEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNl
LCBjb25zdCBJZGVudGkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisKIEpTVmFsdWUganNUZXN0
T2JqUmVhZE9ubHlTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwg
Y29uc3QgSWRlbnRpZmllciYpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGlj
X2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKQEAgLTI5Niw2ICsyOTYsNyBA
QCBKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5U3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKwogSlNW
YWx1ZSBqc1Rlc3RPYmpSZWFkT25seVRlc3RPYmpBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKQEAgLTMw
NSw2ICszMDYsNyBAQCBKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5VGVzdE9iakF0dHIoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZAogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKKwogSlNWYWx1ZSBqc1Rlc3RPYmpTaG9ydEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwpAQCAt
MzE0LDYgKzMxNiw3IEBAIEpTVmFsdWUganNUZXN0T2JqU2hvcnRBdHRyKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAorCiBKU1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCiB7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJh
c2UpKTsKQEAgLTMyMyw2ICszMjYsNyBAQCBKU1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVkU2hvcnRB
dHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbgogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKKwogSlNWYWx1ZSBqc1Rlc3RPYmpJbnRBdHRyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCiB7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJh
c2UpKTsKQEAgLTMzMiw2ICszMzYsNyBAQCBKU1ZhbHVlIGpzVGVzdE9iakludEF0dHIoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCisKIEpTVmFsdWUganNUZXN0T2JqTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCiB7CiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xv
dEJhc2UpKTsKQEAgLTM0MSw2ICszNDYsNyBAQCBKU1ZhbHVlIGpzVGVzdE9iakxvbmdMb25nQXR0
cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZQogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKKwogSlNWYWx1ZSBqc1Rlc3RPYmpVbnNpZ25lZExvbmdMb25n
QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXIm
KQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+
KGFzT2JqZWN0KHNsb3RCYXNlKSk7CkBAIC0zNTAsNiArMzU2LDcgQEAgSlNWYWx1ZSBqc1Rlc3RP
YmpVbnNpZ25lZExvbmdMb25nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2Us
IGNvbnN0IEkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisKIEpTVmFsdWUganNUZXN0T2JqU3Ry
aW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZp
ZXImKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9i
aio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CkBAIC0zNTksNiArMzY2LDcgQEAgSlNWYWx1ZSBqc1Rl
c3RPYmpTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3Qg
SWRlbnRpZmllciYKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisKIEpTVmFsdWUganNUZXN0T2Jq
VGVzdE9iakF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVu
dGlmaWVyJikKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rl
c3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwpAQCAtMzY4LDYgKzM3Niw3IEBAIEpTVmFsdWUg
anNUZXN0T2JqVGVzdE9iakF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBj
b25zdCBJZGVudGlmaWVyCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorCiBKU1ZhbHVlIGpzVGVz
dE9ialhNTE9iakF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJikKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxK
U1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwpAQCAtMzc3LDYgKzM4Niw3IEBAIEpTVmFs
dWUganNUZXN0T2JqWE1MT2JqQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2Us
IGNvbnN0IElkZW50aWZpZXImCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorCiBKU1ZhbHVlIGpz
VGVzdE9iakNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElk
ZW50aWZpZXImKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpT
VGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CkBAIC0zODYsNiArMzk2LDcgQEAgSlNWYWx1
ZSBqc1Rlc3RPYmpDcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25z
dCBJZGVudGlmaWVyJikKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisKIEpTVmFsdWUganNUZXN0
T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2Us
IGNvbnN0IElkZW50aWZpZXImKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRp
Y19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CkBAIC0zOTUsNiArNDA2LDcg
QEAgSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWQKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisKIEpT
VmFsdWUganNUZXN0T2JqUmVmbGVjdGVkSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKQEAg
LTQwNCw2ICs0MTYsNyBAQCBKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEludGVncmFsQXR0cihF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAorCiBKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRy
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCiB7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNP
YmplY3Qoc2xvdEJhc2UpKTsKQEAgLTQxMyw2ICs0MjYsNyBAQCBKU1ZhbHVlIGpzVGVzdE9ialJl
ZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90
QmFzZQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKwogSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0
ZWRCb29sZWFuQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElk
ZW50aWZpZXImKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpT
VGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CkBAIC00MjIsNiArNDM2LDcgQEAgSlNWYWx1
ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
c2xvdEJhc2UsIGNvbnN0IEkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisKIEpTVmFsdWUganNU
ZXN0T2JqUmVmbGVjdGVkVVJMQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2Us
IGNvbnN0IElkZW50aWZpZXImKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRp
Y19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CkBAIC00MzEsNiArNDQ2LDcg
QEAgSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnQKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisKIEpT
VmFsdWUganNUZXN0T2JqUmVmbGVjdGVkTm9uRW1wdHlVUkxBdHRyKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCiB7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsK
QEAgLTQ0MCw2ICs0NTYsNyBAQCBKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZE5vbkVtcHR5VVJM
QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbgogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKKwogSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCiB7CiAgICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qo
c2xvdEJhc2UpKTsKQEAgLTQ0OSw2ICs0NjYsNyBAQCBKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3Rl
ZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZAog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKwogSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0
b21JbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJikKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxK
U1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwpAQCAtNDU4LDYgKzQ3Niw3IEBAIEpTVmFs
dWUganNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZSwKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisKIEpTVmFsdWUganNU
ZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwpAQCAtNDY3
LDYgKzQ4Niw3IEBAIEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAorCiBKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0dHIoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKIHsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90
QmFzZSkpOwpAQCAtNDc2LDYgKzQ5Niw3IEBAIEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQ3Vz
dG9tVVJMQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAorCiBKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbU5v
bkVtcHR5VVJMQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElk
ZW50aWZpZXImKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpT
VGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CkBAIC00ODUsNiArNTA2LDcgQEAgSlNWYWx1
ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21Ob25FbXB0eVVSTEF0dHIoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHNsb3RCYXMKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisKIEpTVmFsdWUganNU
ZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNs
b3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwpAQCAtNDk1LDYg
KzUxNyw3IEBAIEpTVmFsdWUganNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAorCiBKU1ZhbHVlIGpzVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCiB7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJh
c2UpKTsKQEAgLTUwNCw2ICs1MjcsNyBAQCBKU1ZhbHVlIGpzVGVzdE9iakF0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29ucwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKKwogSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdldHRl
ckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50
aWZpZXImKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVz
dE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CkBAIC01MTQsNiArNTM4LDcgQEAgSlNWYWx1ZSBq
c1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgc2xvdEJhc2UKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisKIEpTVmFsdWUganNUZXN0
T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwpAQCAtNTIz
LDEyICs1NDgsMTQgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2Vw
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCisKIEpTVmFsdWUganNUZXN0T2JqQ3VzdG9tQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQogewogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAg
ICAgcmV0dXJuIGNhc3RlZFRoaXMtPmN1c3RvbUF0dHIoZXhlYyk7CiB9CiAKKwogSlNWYWx1ZSBq
c1Rlc3RPYmpTY3JpcHRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFz
ZSwgY29uc3QgSWRlbnRpZmllciYpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3Rh
dGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKQEAgLTUzOCw2ICs1NjUs
NyBAQCBKU1ZhbHVlIGpzVGVzdE9ialNjcmlwdFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKwog
I2lmIEVOQUJMRShDb25kaXRpb24xKQogSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIx
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCiB7
CkBAIC01NDcsNiArNTc1LDcgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnQKICAgICBKU1ZhbHVl
IHJlc3VsdCA9IGpzTnVtYmVyKGltcC0+Y29uZGl0aW9uYWxBdHRyMSgpKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQorCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24xKSAmJiBFTkFCTEUo
Q29uZGl0aW9uMikKQEAgLTU1OCw2ICs1ODcsNyBAQCBKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlv
bmFsQXR0cjIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudAog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wLT5jb25kaXRpb25hbEF0dHIyKCkpOwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CisKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEp
IHx8IEVOQUJMRShDb25kaXRpb24yKQpAQCAtNTY5LDYgKzU5OSw3IEBAIEpTVmFsdWUganNUZXN0
T2JqQ29uZGl0aW9uYWxBdHRyMyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNv
bnN0IElkZW50CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXAtPmNvbmRpdGlvbmFs
QXR0cjMoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KKwogI2VuZGlmCiAKIEpTVmFsdWUganNU
ZXN0T2JqRGVzY3JpcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25z
dCBJZGVudGlmaWVyJikKQEAgLTU4MCw2ICs2MTEsNyBAQCBKU1ZhbHVlIGpzVGVzdE9iakRlc2Ny
aXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmll
cgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKwogSlNWYWx1ZSBqc1Rlc3RPYmpJZChFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQogewogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNs
b3RCYXNlKSk7CkBAIC01ODksNiArNjIxLDcgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpJZChFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKKwogSlNWYWx1ZSBqc1Rlc3RPYmpIYXNoKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCiB7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsK
QEAgLTU5OCw2ICs2MzEsNyBAQCBKU1ZhbHVlIGpzVGVzdE9iakhhc2goRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCisKIEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKIHsKICAgICBKU1Rlc3RPYmoqIGRv
bU9iamVjdCA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CkBA
IC02MTYsNiArNjUwLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpTaG9ydEF0dHIoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKICAgICBpbXAtPnNldFNo
b3J0QXR0cih2YWx1ZS50b0ludDMyKGV4ZWMpKTsKIH0KIAorCiB2b2lkIHNldEpTVGVzdE9ialVu
c2lnbmVkU2hvcnRBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8
SlNUZXN0T2JqKj4odGhpc09iamVjdCk7CkBAIC02MjMsNiArNjU4LDcgQEAgdm9pZCBzZXRKU1Rl
c3RPYmpVbnNpZ25lZFNob3J0QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0LCBKU1ZhbHUKICAgICBpbXAtPnNldFVuc2lnbmVkU2hvcnRBdHRyKHZhbHVlLnRvVUludDMy
KGV4ZWMpKTsKIH0KIAorCiB2b2lkIHNldEpTVGVzdE9iakludEF0dHIoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPih0aGlzT2JqZWN0KTsKQEAgLTYz
MCw2ICs2NjYsNyBAQCB2b2lkIHNldEpTVGVzdE9iakludEF0dHIoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKICAgICBpbXAtPnNldEludEF0dHIo
dmFsdWUudG9JbnQzMihleGVjKSk7CiB9CiAKKwogdm9pZCBzZXRKU1Rlc3RPYmpMb25nTG9uZ0F0
dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
IHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPih0
aGlzT2JqZWN0KTsKQEAgLTYzNyw2ICs2NzQsNyBAQCB2b2lkIHNldEpTVGVzdE9iakxvbmdMb25n
QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbAog
ICAgIGltcC0+c2V0TG9uZ0xvbmdBdHRyKHN0YXRpY19jYXN0PGxvbmcgbG9uZz4odmFsdWUudG9J
bnRlZ2VyKGV4ZWMpKSk7CiB9CiAKKwogdm9pZCBzZXRKU1Rlc3RPYmpVbnNpZ25lZExvbmdMb25n
QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+
KHRoaXNPYmplY3QpOwpAQCAtNjQ0LDYgKzY4Miw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqVW5zaWdu
ZWRMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNW
CiAgICAgaW1wLT5zZXRVbnNpZ25lZExvbmdMb25nQXR0cihzdGF0aWNfY2FzdDx1bnNpZ25lZCBs
b25nIGxvbmc+KHZhbHVlLnRvSW50ZWdlcihleGVjKSkpOwogfQogCisKIHZvaWQgc2V0SlNUZXN0
T2JqU3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpT
VGVzdE9iaio+KHRoaXNPYmplY3QpOwpAQCAtNjUxLDYgKzY5MCw3IEBAIHZvaWQgc2V0SlNUZXN0
T2JqU3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlCiAgICAgaW1wLT5zZXRTdHJpbmdBdHRyKHVzdHJpbmdUb1N0cmluZyh2YWx1ZS50
b1N0cmluZyhleGVjKSkpOwogfQogCisKIHZvaWQgc2V0SlNUZXN0T2JqVGVzdE9iakF0dHIoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPih0aGlzT2Jq
ZWN0KTsKQEAgLTY1OCw2ICs2OTgsNyBAQCB2b2lkIHNldEpTVGVzdE9ialRlc3RPYmpBdHRyKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdQogICAgIGlt
cC0+c2V0VGVzdE9iakF0dHIodG9UZXN0T2JqKHZhbHVlKSk7CiB9CiAKKwogdm9pZCBzZXRKU1Rl
c3RPYmpYTUxPYmpBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8
SlNUZXN0T2JqKj4odGhpc09iamVjdCk7CkBAIC02NjUsNiArNzA2LDcgQEAgdm9pZCBzZXRKU1Rl
c3RPYmpYTUxPYmpBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUKICAgICBpbXAtPnNldFhNTE9iakF0dHIodG9UZXN0T2JqKHZhbHVlKSk7CiB9
CiAKKwogdm9pZCBzZXRKU1Rlc3RPYmpDcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPih0aGlzT2JqZWN0KTsKQEAgLTY3Miw2ICs3MTQsNyBA
QCB2b2lkIHNldEpTVGVzdE9iakNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogICAgIGltcC0+c2V0Q3JlYXRlKHZhbHVlLnRvQm9vbGVh
bihleGVjKSk7CiB9CiAKKwogdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4odGhpc09i
amVjdCk7CkBAIC02NzksNiArNzIyLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRTdHJp
bmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmEKICAgICBp
bXAtPnNldEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHN0cmluZ2F0dHJB
dHRyLCB2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhleGVjLCB2YWx1ZSkpOwogfQogCisKIHZv
aWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4odGhpc09iamVjdCk7CkBAIC02ODYsNiAr
NzMwLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlMKICAgICBpbXAtPnNldEludGVncmFsQXR0
cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkaW50ZWdyYWxhdHRyQXR0ciwgdmFs
dWUudG9JbnQzMihleGVjKSk7CiB9CiAKKwogdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVbnNp
Z25lZEludGVncmFsQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0
PEpTVGVzdE9iaio+KHRoaXNPYmplY3QpOwpAQCAtNjkzLDYgKzczOCw3IEBAIHZvaWQgc2V0SlNU
ZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogdGhpc09iCiAgICAgaW1wLT5zZXRVbnNpZ25lZEludGVncmFsQXR0cmlidXRlKFdlYkNv
cmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdW5zaWduZWRpbnRlZ3JhbGF0dHJBdHRyLCB2YWx1ZS50
b1VJbnQzMihleGVjKSk7CiB9CiAKKwogdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFu
QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+
KHRoaXNPYmplY3QpOwpAQCAtNzAwLDYgKzc0Niw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVj
dGVkQm9vbGVhbkF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNW
CiAgICAgaW1wLT5zZXRCb29sZWFuQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVj
dGVkYm9vbGVhbmF0dHJBdHRyLCB2YWx1ZS50b0Jvb2xlYW4oZXhlYykpOwogfQogCisKIHZvaWQg
c2V0SlNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KHRoaXNPYmplY3QpOwpAQCAtNzA3LDYgKzc1NCw3IEBA
IHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlCiAgICAgaW1wLT5zZXRBdHRyaWJ1dGUoV2ViQ29yZTo6
SFRNTE5hbWVzOjpyZWZsZWN0ZWR1cmxhdHRyQXR0ciwgdmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hl
Y2soZXhlYywgdmFsdWUpKTsKIH0KIAorCiB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZE5vbkVt
cHR5VVJMQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVz
dE9iaio+KHRoaXNPYmplY3QpOwpAQCAtNzE0LDYgKzc2Miw3IEBAIHZvaWQgc2V0SlNUZXN0T2Jq
UmVmbGVjdGVkTm9uRW1wdHlVUkxBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNP
YmplY3QsCiAgICAgaW1wLT5zZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0
ZWRub25lbXB0eXVybGF0dHJBdHRyLCB2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhleGVjLCB2
YWx1ZSkpOwogfQogCisKIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KHRoaXNPYmpl
Y3QpOwpAQCAtNzIxLDYgKzc3MCw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5n
QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhCiAgICAgaW1w
LT5zZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50U3RyaW5nQXR0
ckF0dHIsIHZhbHVlVG9TdHJpbmdXaXRoTnVsbENoZWNrKGV4ZWMsIHZhbHVlKSk7CiB9CiAKKwog
dm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPih0aGlzT2JqZWN0KTsKQEAg
LTcyOCw2ICs3NzgsNyBAQCB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFs
QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZQogICAgIGltcC0+c2V0SW50
ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50SW50ZWdyYWxB
dHRyQXR0ciwgdmFsdWUudG9JbnQzMihleGVjKSk7CiB9CiAKKwogdm9pZCBzZXRKU1Rlc3RPYmpS
ZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0
YXRpY19jYXN0PEpTVGVzdE9iaio+KHRoaXNPYmplY3QpOwpAQCAtNzM1LDYgKzc4Niw3IEBAIHZv
aWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogdGhpc09iamVjCiAgICAgaW1wLT5zZXRCb29sZWFuQXR0cmlidXRlKFdlYkNv
cmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudEJvb2xlYW5BdHRyQXR0ciwgdmFsdWUudG9Cb29s
ZWFuKGV4ZWMpKTsKIH0KIAorCiB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0
dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
IHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPih0
aGlzT2JqZWN0KTsKQEAgLTc0Miw2ICs3OTQsNyBAQCB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3Rl
ZEN1c3RvbVVSTEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSgog
ICAgIGltcC0+c2V0QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudFVS
TEF0dHJBdHRyLCB2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhleGVjLCB2YWx1ZSkpOwogfQog
CisKIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tTm9uRW1wdHlVUkxBdHRyKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4odGhpc09iamVj
dCk7CkBAIC03NDksNiArODAyLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21O
b25FbXB0eVVSTEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc08KICAgICBpbXAt
PnNldEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnROb25FbXB0eVVS
TEF0dHJBdHRyLCB2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhleGVjLCB2YWx1ZSkpOwogfQog
CisKIHZvaWQgc2V0SlNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPih0aGlzT2JqZWN0KTsKQEAg
LTc1OCw2ICs4MTIsNyBAQCB2b2lkIHNldEpTVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsCiAgICAgc2V0RE9NRXhjZXB0
aW9uKGV4ZWMsIGVjKTsKIH0KIAorCiB2b2lkIHNldEpTVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhj
ZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2Jq
Kj4odGhpc09iamVjdCk7CkBAIC03NjcsNiArODIyLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpBdHRy
V2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0
LAogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiB9CiAKKwogdm9pZCBzZXRKU1Rlc3RP
YmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KHRoaXNPYmplY3QpOwpAQCAtNzc2LDYgKzgzMiw3
IEBAIHZvaWQgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iCiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVj
KTsKIH0KIAorCiB2b2lkIHNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4odGhp
c09iamVjdCk7CkBAIC03ODUsMTEgKzg0MiwxMyBAQCB2b2lkIHNldEpTVGVzdE9ialN0cmluZ0F0
dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYgog
ICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiB9CiAKKwogdm9pZCBzZXRKU1Rlc3RPYmpD
dXN0b21BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCiB7CiAgICAgc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4odGhpc09iamVjdCktPnNldEN1
c3RvbUF0dHIoZXhlYywgdmFsdWUpOwogfQogCisKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKIHZv
aWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewpAQCAtNzk3LDYgKzg1Niw3IEBAIHZvaWQg
c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0
aGlzT2JqZWN0LCBKU1ZhbHVlCiAgICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9i
aio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAgICAgaW1wLT5zZXRDb25kaXRpb25hbEF0dHIxKHZh
bHVlLnRvSW50MzIoZXhlYykpOwogfQorCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24x
KSAmJiBFTkFCTEUoQ29uZGl0aW9uMikKQEAgLTgwNiw2ICs4NjYsNyBAQCB2b2lkIHNldEpTVGVz
dE9iakNvbmRpdGlvbmFsQXR0cjIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVj
dCwgSlNWYWx1ZQogICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0
ZWRUaGlzLT5pbXBsKCkpOwogICAgIGltcC0+c2V0Q29uZGl0aW9uYWxBdHRyMih2YWx1ZS50b0lu
dDMyKGV4ZWMpKTsKIH0KKwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5B
QkxFKENvbmRpdGlvbjIpCkBAIC04MTUsNiArODc2LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpDb25k
aXRpb25hbEF0dHIzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFs
dWUKICAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+
aW1wbCgpKTsKICAgICBpbXAtPnNldENvbmRpdGlvbmFsQXR0cjModmFsdWUudG9JbnQzMihleGVj
KSk7CiB9CisKICNlbmRpZgogCiB2b2lkIHNldEpTVGVzdE9iaklkKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCkBAIC04MjQsNiArODg2LDcgQEAg
dm9pZCBzZXRKU1Rlc3RPYmpJZChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQogICAgIGltcC0+c2V0SWQodmFsdWUudG9JbnQzMihleGVjKSk7CiB9
CiAKKwogSlNWYWx1ZSBKU1Rlc3RPYmo6OmdldENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4gZ2V0RE9NQ29uc3Ry
dWN0b3I8SlNUZXN0T2JqQ29uc3RydWN0b3I+KGV4ZWMsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CkBAIC0xNjMxLDEwICsxNjk0LDExIEBAIEpTVmFsdWUg
anNUZXN0T2JqQ09OU1RfVkFMVUVfMTQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBjb25zdCBJ
ZGVudGlmaWVyJikKICAgICByZXR1cm4ganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50PigweDFhYmMp
KTsKIH0KIAotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RPYmoqIG9iamVjdCkKK0pTQzo6SlNWYWx1ZSB0
b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBUZXN0T2JqKiBpbXBsKQogewotICAgIHJldHVybiBnZXRET01PYmplY3RXcmFwcGVyPEpTVGVz
dE9iaj4oZXhlYywgZ2xvYmFsT2JqZWN0LCBvYmplY3QpOworICAgIHJldHVybiB3cmFwPEpTVGVz
dE9iaj4oZXhlYywgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKIH0KKwogVGVzdE9iaiogdG9UZXN0T2Jq
KEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gdmFsdWUuaW5oZXJpdHMoJkpTVGVz
dE9iajo6c19pbmZvKSA/IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHZhbHVlKSkt
PmltcGwoKSA6IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmgKaW5kZXggNzUxMjM5YmE0OGViZGE0NTRjOWFlNzY4ZjQxODE3OGZl
OTI5YjY0ZC4uOTUwMDI5ZmNjMjI2MWMzMmU3N2Y2YTRiYmQ2YmE0OTUzZjQxYmZhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
aApAQCAtMzAsMTcgKzMwLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGVzdE9i
ajsKIAotY2xhc3MgSlNUZXN0T2JqIDogcHVibGljIERPTU9iamVjdFdpdGhHbG9iYWxQb2ludGVy
IHsKLSAgICB0eXBlZGVmIERPTU9iamVjdFdpdGhHbG9iYWxQb2ludGVyIEJhc2U7CitjbGFzcyBK
U1Rlc3RPYmogOiBwdWJsaWMgSlNET01XcmFwcGVyIHsKKyAgICB0eXBlZGVmIEpTRE9NV3JhcHBl
ciBCYXNlOwogcHVibGljOgotICAgIEpTVGVzdE9iaihOb25OdWxsUGFzc1JlZlB0cjxKU0M6OlN0
cnVjdHVyZT4sIEpTRE9NR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjxUZXN0T2JqPik7CisgICAg
SlNUZXN0T2JqKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QqLCBQYXNzUmVmUHRy
PFRlc3RPYmo+KTsKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHZpcnR1YWwgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgdmlydHVh
bCB2b2lkIHB1dChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGlj
IGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpT
Qzo6U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1
ZSBwcm90b3R5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0
ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgfQpAQCAt
NzIsMTEgKzcyLDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8g
c19pbmZvOwogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3Rh
dGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHZp
cnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpFeGVjU3RhdGUqLCBjb25z
dCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gSlNDOjpT
dHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlND
OjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5m
byk7CiAgICAgfQotICAgIEpTVGVzdE9ialByb3RvdHlwZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiBzdHJ1Y3R1cmUp
IDogSlNDOjpKU09iamVjdFdpdGhHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUp
IHsgfQorICAgIEpTVGVzdE9ialByb3RvdHlwZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlKSA6IEpTQzo6SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlKSB7IH0KIHByb3RlY3RlZDoKICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8
IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXggNTM1Zjk5YmI2YjU4NzAwZDU4
MzlkNjZkYTZhODU4YTNmYWQxODkwNC4uZTZjNDM0ODdmY2Q2NjBjYzZkZjBlOTcwODQxODc1ODA4
NDMyMGU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZS5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50
aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBK
U0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5m
byBzX2luZm87Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+IGNyZWF0ZVN0
cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CiAg
ICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlw
ZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnlt
b3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICB9CkBAIC05MCwxMiArOTAsMTIgQEAgSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3I6OkpTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGUKIAogYm9vbCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2VDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAg
cmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2VDb25zdHJ1Y3RvciwgRE9NT2JqZWN0PihleGVjLCAmSlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90
KTsKKyAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yLCBKU0RPTVdyYXBwZXI+KGV4ZWMsICZKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvclRhYmxlLCB0aGlzLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvcikKIHsKLSAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVEZXNjcmlwdG9yPEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yLCBET01PYmplY3Q+KGV4ZWMs
ICZKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvclRhYmxlLCB0
aGlzLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOworICAgIHJldHVybiBnZXRTdGF0aWNWYWx1
ZURlc2NyaXB0b3I8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0
b3IsIEpTRE9NV3JhcHBlcj4oZXhlYywgJkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZUNvbnN0cnVjdG9yVGFibGUsIHRoaXMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9
CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwpAQCAtMTE5LDEwICsxMTksMTAgQEAg
SlNPYmplY3QqIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZTo6
c2VsZihFeGVjU3RhdGUqIGV4ZWMsIEoKICAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4oZXhlYywgZ2xvYmFsT2JqZWN0KTsKIH0K
IAotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6
c19pbmZvID0geyAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICZET01PYmpl
Y3RXaXRoR2xvYmFsUG9pbnRlcjo6c19pbmZvLCAmSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlVGFibGUsIDAgfTsKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2U6OnNfaW5mbyA9IHsgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UiLCAmSlNET01XcmFwcGVyOjpzX2luZm8sICZKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VUYWJsZSwgMCB9OwogCi1KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2U6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZShOb25OdWxsUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUGFzc1JlZlB0cjxUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPiBpbXBs
KQotICAgIDogRE9NT2JqZWN0V2l0aEdsb2JhbFBvaW50ZXIoc3RydWN0dXJlLCBnbG9iYWxPYmpl
Y3QpCitKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OkpTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlPiBpbXBsKQorICAgIDogSlNET01XcmFwcGVyKHN0cnVjdHVyZSwgZ2xvYmFsT2Jq
ZWN0KQogICAgICwgbV9pbXBsKGltcGwpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8p
KTsKQEAgLTEzMCw3ICsxMzAsNyBAQCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2U6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZShOb25OdQogCiBKU09iamVj
dCogSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpjcmVhdGVQcm90b3R5cGUo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJl
dHVybiBuZXcgKGV4ZWMpIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3Rv
dHlwZShnbG9iYWxPYmplY3QsIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVBy
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9i
YWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CisgICAgcmV0dXJuIG5ldyAoZXhlYykgSlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKGV4ZWMtPmdsb2JhbERh
dGEoKSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xv
YmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwogfQogCiBib29sIEpTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCkBA
IC0xNTIsNiArMTUyLDcgQEAgSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2VWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEIKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCisKIEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVu
dGlmaWVyJikKIHsKICAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGRv
bU9iamVjdCA9IHN0YXRpY19jYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CkBAIC0xNjMsMTAgKzE2NCwxMSBAQCBKU1ZhbHVlIEpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6Z2V0Q29uc3RydWN0b3IoRXhlY1N0
YXRlKiBleGVjLCBKUwogICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcj4oZXhlYywgc3RhdGljX2Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAotSlNDOjpKU1ZhbHVlIHRvSlMo
SlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIG9iamVjdCkKK0pTQzo6SlNWYWx1ZSB0
b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBpbXBsKQogewotICAgIHJldHVy
biBnZXRET01PYmplY3RXcmFwcGVyPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZT4oZXhlYywgZ2xvYmFsT2JqZWN0LCBvYmplY3QpOworICAgIHJldHVybiB3cmFwPEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4oZXhlYywgZ2xvYmFsT2JqZWN0LCBpbXBsKTsK
IH0KKwogVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogdG9UZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICByZXR1cm4g
dmFsdWUuaW5oZXJpdHMoJkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6c19p
bmZvKSA/IHN0YXRpY19jYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+
KGFzT2JqZWN0KHZhbHVlKSktPmltcGwoKSA6IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgKaW5kZXggZDVmODg3OWZmNTRlNjA3YWVl
NjIzYjg4NjhjYmM4NWY4MDQ2NDViMC4uMTMxNjlhZjUyNzg3NDljYzQ3MjdlYWFjYzJiN2U0NDEw
OTk1OWUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UuaApAQCAtMzIsMTYgKzMyLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTsKIAotY2xhc3MgSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIDogcHVibGljIERPTU9iamVjdFdpdGhHbG9i
YWxQb2ludGVyIHsKLSAgICB0eXBlZGVmIERPTU9iamVjdFdpdGhHbG9iYWxQb2ludGVyIEJhc2U7
CitjbGFzcyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgOiBwdWJsaWMgSlNE
T01XcmFwcGVyIHsKKyAgICB0eXBlZGVmIEpTRE9NV3JhcHBlciBCYXNlOwogcHVibGljOgotICAg
IEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZShOb25OdWxsUGFzc1JlZlB0cjxK
U0M6OlN0cnVjdHVyZT4sIEpTRE9NR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjxUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPik7CisgICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QqLCBQYXNzUmVm
UHRyPFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+KTsKICAgICBzdGF0aWMgSlND
OjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2Jh
bE9iamVjdCopOwogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVj
U3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0
eVNsb3QmKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6
RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJv
cGVydHlEZXNjcmlwdG9yJik7CiAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5m
bzsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewogICAgICAg
ICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIEpT
Qzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Ns
b3RDb3VudCwgJnNfaW5mbyk7CiAgICAgfQpAQCAtNjMsMTEgKzYzLDExIEBAIGNsYXNzIEpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpT
T2JqZWN0V2l0aEdsCiBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHNlbGYoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIGNvbnN0IEpT
Qzo6Q2xhc3NJbmZvIHNfaW5mbzsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVy
ZT4gY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQorICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0
YSwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgIH0KLSAgICBKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUoSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4gc3RydWN0dXJl
KSA6IEpTQzo6SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
KSB7IH0KKyAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUo
SlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgOiBKU0M6OkpTT2JqZWN0V2l0aEds
b2JhbE9iamVjdChnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkgeyB9CiBwcm90
ZWN0ZWQ6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3M7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENhbGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2FsbGJhY2suaAppbmRleCAzZDZmN2JkOTMw
OTJhNzk5NTYxOTUxNTM2ZDQxOWFhNjhjNDZiZTY1Li42YWEzMWQyNzNlZjhmYzA1NTI4NzM4Zjgz
NTk0MzE2ODg2Nzc5ZDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2FsbGJhY2suaApAQCAtNDMsNiArNDMsOSBA
QAogLSAoaW50KWNhbGxiYWNrV2l0aE5vbkJvb2xSZXR1cm5UeXBlOihET01DbGFzczMgKiljbGFz
czNQYXJhbTsKIC0gKGludCljdXN0b21DYWxsYmFjazooRE9NQ2xhc3M1ICopY2xhc3M1UGFyYW0g
Y2xhc3M2UGFyYW06KERPTUNsYXNzNiAqKWNsYXNzNlBhcmFtOwogLSAoQk9PTCljYWxsYmFja1dp
dGhTdHJpbmdMaXN0OihET01ET01TdHJpbmdMaXN0ICopbGlzdFBhcmFtOworLSAoQk9PTCljYWxs
YmFja1dpdGhJbnRlZ2VyOihpbnQpaW50UGFyYW07CistIChCT09MKWNhbGxiYWNrV2l0aEZsb2F0
OihmbG9hdClmbG9hdFBhcmFtOworLSAoQk9PTCljYWxsYmFja1dpdGhMb25nTG9uZ1BhcmFtOihs
b25nIGxvbmcpbG9uZ0xvbmdQYXJhbTsKIEBlbmQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2FsbGJhY2subW0g
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2FsbGJh
Y2subW0KaW5kZXggZTA3MGRlNThjYzM4NGY5YWE2ZjA1MWQ4M2IyM2UxZGVmNWFmMDA4MC4uNDZh
YmM5OGRiMWVhMjZiN2Q1ZjU5NzljZWMyZjYxMGVjZDg1N2RiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENhbGxiYWNrLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDYWxs
YmFjay5tbQpAQCAtMTE3LDYgKzExNywyNCBAQAogICAgIHJldHVybiBJTVBMLT5jYWxsYmFja1dp
dGhTdHJpbmdMaXN0KGNvcmUobGlzdFBhcmFtKSk7CiB9CiAKKy0gKEJPT0wpY2FsbGJhY2tXaXRo
SW50ZWdlcjooaW50KWludFBhcmFtCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5jYWxsYmFja1dpdGhJbnRlZ2VyKGludFBhcmFt
KTsKK30KKworLSAoQk9PTCljYWxsYmFja1dpdGhGbG9hdDooZmxvYXQpZmxvYXRQYXJhbQorewor
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1Q
TC0+Y2FsbGJhY2tXaXRoRmxvYXQoZmxvYXRQYXJhbSk7Cit9CisKKy0gKEJPT0wpY2FsbGJhY2tX
aXRoTG9uZ0xvbmdQYXJhbToobG9uZyBsb25nKWxvbmdMb25nUGFyYW0KK3sKKyAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPmNhbGxiYWNr
V2l0aExvbmdMb25nUGFyYW0obG9uZ0xvbmdQYXJhbSk7Cit9CisKIEBlbmQKIAogV2ViQ29yZTo6
VGVzdENhbGxiYWNrKiBjb3JlKERPTVRlc3RDYWxsYmFjayAqd3JhcHBlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2FsbGJhY2suaWRsIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RDYWxsYmFjay5pZGwKaW5k
ZXggMjQ3NTI1MWI4MGJjNDRiNjMyM2IwZDhlZTYwNmU2ZTJmYjRjZDY3MS4uODJkMjU2M2RiNTI3
NjdhYWYwMDQwYTg1MWFjMzI0OTVjZWI4YjI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RDYWxsYmFjay5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RDYWxsYmFjay5pZGwKQEAgLTM5LDUgKzM5LDgg
QEAgbW9kdWxlIHRlc3QgewogICAgICAgbG9uZyBjYWxsYmFja1dpdGhOb25Cb29sUmV0dXJuVHlw
ZShpbiBDbGFzczMgY2xhc3MzUGFyYW0pOwogICAgICAgW0N1c3RvbV0gbG9uZyBjdXN0b21DYWxs
YmFjayhpbiBDbGFzczUgY2xhc3M1UGFyYW0sIGluIENsYXNzNiBjbGFzczZQYXJhbSk7CiAgICAg
ICBib29sZWFuIGNhbGxiYWNrV2l0aFN0cmluZ0xpc3QoaW4gRE9NU3RyaW5nTGlzdCBsaXN0UGFy
YW0pOworICAgICAgYm9vbGVhbiBjYWxsYmFja1dpdGhJbnRlZ2VyKGluIGxvbmcgaW50UGFyYW0p
OworICAgICAgYm9vbGVhbiBjYWxsYmFja1dpdGhGbG9hdChpbiBmbG9hdCBmbG9hdFBhcmFtKTsK
KyAgICAgIGJvb2xlYW4gY2FsbGJhY2tXaXRoTG9uZ0xvbmdQYXJhbShpbiBsb25nIGxvbmcgbG9u
Z0xvbmdQYXJhbSk7CiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDYWxsYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q2FsbGJhY2suY3BwCmluZGV4IGIwYTRmNjky
NDUzYmViMzkzZjkyMjM2NzE3MTMxNzVlODA3MmY4MGQuLjZhNzc0NDFhYzg2NDIwNDUxYmY2NmVm
Yzc1ZjFlNTRkZmIwMDg5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RDYWxsYmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdENhbGxiYWNrLmNwcApAQCAtMTU5LDYgKzE1OSw4
NyBAQCBib29sIFY4VGVzdENhbGxiYWNrOjpjYWxsYmFja1dpdGhTdHJpbmdMaXN0KFBhc3NSZWZQ
dHI8RE9NU3RyaW5nTGlzdD4gbGlzdFBhcmFtKQogICAgIHJldHVybiAhaW52b2tlQ2FsbGJhY2so
bV9jYWxsYmFjaywgMSwgYXJndiwgY2FsbGJhY2tSZXR1cm5WYWx1ZSwgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKTsKIH0KIAorYm9vbCBWOFRlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoSW50ZWdl
cihpbnQgaW50UGFyYW0pCit7CisgICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKKworICAg
IHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IHY4Q29udGV4dCA9IHRvVjhDb250ZXh0KHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgbV93b3JsZENvbnRleHQpOworICAgIGlmICh2OENvbnRleHQuSXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHY4OjpDb250ZXh0OjpTY29wZSBz
Y29wZSh2OENvbnRleHQpOworCisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGludFBhcmFtSGFu
ZGxlID0gdjg6OkludGVnZXI6Ok5ldyhpbnRQYXJhbSk7CisgICAgaWYgKGludFBhcmFtSGFuZGxl
LklzRW1wdHkoKSkgeworICAgICAgICBDUkFTSCgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geworICAgICAgICBpbnRQ
YXJhbUhhbmRsZQorICAgIH07CisKKyAgICBib29sIGNhbGxiYWNrUmV0dXJuVmFsdWUgPSBmYWxz
ZTsKKyAgICByZXR1cm4gIWludm9rZUNhbGxiYWNrKG1fY2FsbGJhY2ssIDEsIGFyZ3YsIGNhbGxi
YWNrUmV0dXJuVmFsdWUsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Cit9CisKK2Jvb2wgVjhU
ZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aEZsb2F0KGZsb2F0IGZsb2F0UGFyYW0pCit7CisgICAg
aWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHY4
OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKKworICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+
IHY4Q29udGV4dCA9IHRvVjhDb250ZXh0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV93b3Js
ZENvbnRleHQpOworICAgIGlmICh2OENvbnRleHQuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZSh2OENvbnRleHQpOworCisgICAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGZsb2F0UGFyYW1IYW5kbGUgPSB2ODo6TnVtYmVyOjpOZXco
ZmxvYXRQYXJhbSk7CisgICAgaWYgKGZsb2F0UGFyYW1IYW5kbGUuSXNFbXB0eSgpKSB7CisgICAg
ICAgIENSQVNIKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBhcmd2W10gPSB7CisgICAgICAgIGZsb2F0UGFyYW1IYW5kbGUKKyAgICB9
OworCisgICAgYm9vbCBjYWxsYmFja1JldHVyblZhbHVlID0gZmFsc2U7CisgICAgcmV0dXJuICFp
bnZva2VDYWxsYmFjayhtX2NhbGxiYWNrLCAxLCBhcmd2LCBjYWxsYmFja1JldHVyblZhbHVlLCBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworfQorCitib29sIFY4VGVzdENhbGxiYWNrOjpjYWxs
YmFja1dpdGhMb25nTG9uZ1BhcmFtKGxvbmcgbG9uZyBsb25nTG9uZ1BhcmFtKQoreworICAgIGlm
ICghY2FuSW52b2tlQ2FsbGJhY2soKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICB2ODo6
SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CisKKyAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiB2
OENvbnRleHQgPSB0b1Y4Q29udGV4dChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fd29ybGRD
b250ZXh0KTsKKyAgICBpZiAodjhDb250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUodjhDb250ZXh0KTsKKworICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBsb25nTG9uZ1BhcmFtSGFuZGxlID0gdjg6Ok51bWJlcjo6TmV3
KHN0YXRpY19jYXN0PGRvdWJsZT4obG9uZ0xvbmdQYXJhbSkpOworICAgIGlmIChsb25nTG9uZ1Bh
cmFtSGFuZGxlLklzRW1wdHkoKSkgeworICAgICAgICBDUkFTSCgpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geworICAg
ICAgICBsb25nTG9uZ1BhcmFtSGFuZGxlCisgICAgfTsKKworICAgIGJvb2wgY2FsbGJhY2tSZXR1
cm5WYWx1ZSA9IGZhbHNlOworICAgIHJldHVybiAhaW52b2tlQ2FsbGJhY2sobV9jYWxsYmFjaywg
MSwgYXJndiwgY2FsbGJhY2tSZXR1cm5WYWx1ZSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKERBVEFCQVNF
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdENhbGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0Q2FsbGJhY2suaAppbmRleCAxOTRmMTNjM2ZlMjU2MzNiNWRmMDllN2FiNjllNTA3ZGJk
OGQ0MWFmLi5iNDIwMmVkYWI5NjU5ZjI0MjBkZDMxYmM5YzI2NDcxYjFkNTkwODFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q2FsbGJh
Y2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
Q2FsbGJhY2suaApAQCAtNTEsNiArNTEsOSBAQCBwdWJsaWM6CiAgICAgQ09NUElMRV9BU1NFUlQo
ZmFsc2UpICAgIHZpcnR1YWwgaW50IGNhbGxiYWNrV2l0aE5vbkJvb2xSZXR1cm5UeXBlKENsYXNz
MyogY2xhc3MzUGFyYW0pOwogICAgIHZpcnR1YWwgaW50IGN1c3RvbUNhbGxiYWNrKENsYXNzNSog
Y2xhc3M1UGFyYW0sIENsYXNzNiogY2xhc3M2UGFyYW0pOwogICAgIHZpcnR1YWwgYm9vbCBjYWxs
YmFja1dpdGhTdHJpbmdMaXN0KFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gbGlzdFBhcmFtKTsK
KyAgICB2aXJ0dWFsIGJvb2wgY2FsbGJhY2tXaXRoSW50ZWdlcihpbnQgaW50UGFyYW0pOworICAg
IHZpcnR1YWwgYm9vbCBjYWxsYmFja1dpdGhGbG9hdChmbG9hdCBmbG9hdFBhcmFtKTsKKyAgICB2
aXJ0dWFsIGJvb2wgY2FsbGJhY2tXaXRoTG9uZ0xvbmdQYXJhbShsb25nIGxvbmcgbG9uZ0xvbmdQ
YXJhbSk7CiAKIHByaXZhdGU6CiAgICAgVjhUZXN0Q2FsbGJhY2sodjg6OkxvY2FsPHY4OjpPYmpl
Y3Q+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Cg==
</data>
<flag name="review"
          id="84316"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>