<?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>33835</bug_id>
          
          <creation_ts>2010-01-19 01:01:19 -0800</creation_ts>
          <short_desc>[Gtk] svg/custom/use-instanceRoot-event-bubbling.xhtml fails</short_desc>
          <delta_ts>2012-10-05 12:59:31 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Xan Lopez">xan.lopez</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
    
    <cc>krit</cc>
    
    <cc>ojan</cc>
    
    <cc>robert</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zan</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>182174</commentid>
    <comment_count>0</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-01-19 01:01:19 -0800</bug_when>
    <thetext>Parts of its state machine are constructed with very quick timeouts (100ms), which is a good way of making a test flakey :) (and, for instance, fails in the GTK+ bots).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182366</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-19 12:18:22 -0800</bug_when>
    <thetext>http://trac.webkit.org/browser/trunk/LayoutTests/svg/custom/use-instanceRoot-event-bubbling.xhtml
Added by WildFox 15 months ago.

Next time I see it fail, I&apos;ll link to the failure diff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182581</commentid>
    <comment_count>2</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-01-19 19:27:36 -0800</bug_when>
    <thetext>This is true, the test is flakey as all &lt;use&gt; tests are, because of a problem with instanceRoot() - if the renderer is not attached yet, we&apos;re just returning 0, instead of asking the document to update style.

This is only one part of the issue, there is a race condition with event listeners, that currently still cause shadow tree reclones, I&apos;ve fixed all these issues, and stability seems fine:

run-webkit-tests --repeat-each 50 -p `ls -l use-*.svg | sed -e &quot;s/.*\ use/svg\/custom\/use/&quot; | xargs`
Testing 49 test cases, repeating each test 50 times.
svg/custom ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
100.25s total testing time

all 2450 test cases succeeded</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182583</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-19 19:39:38 -0800</bug_when>
    <thetext>So you have a patch to fix this? Or one was already landed?  In which case, the revision link would be useful. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182588</commentid>
    <comment_count>4</comment_count>
      <attachid>46969</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-01-19 20:02:37 -0800</bug_when>
    <thetext>Created attachment 46969
Initial patch

Ran run-webkit-tests -p svg --tolerance 0, no new regressions. Ran all use* testcases with --repeat-each 50 -p, saw no leaks and/or timing issues.
Reenabling all affected testcases on all platforms. Let&apos;s hope &lt;use&gt; is stable now, when scripted from JS.

This is also a huge performance benefit when working with &lt;use&gt; + event listeners.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182590</commentid>
    <comment_count>5</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-01-19 20:03:25 -0800</bug_when>
    <thetext>*** Bug 32519 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182591</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-19 20:08:35 -0800</bug_when>
    <thetext>Attachment 46969 did not build on mac:
Build output: http://webkit-commit-queue.appspot.com/results/200841</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182595</commentid>
    <comment_count>7</comment_count>
      <attachid>46970</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-01-19 20:15:13 -0800</bug_when>
    <thetext>Created attachment 46970
Updated patch

Fix release builds, thanks to ews :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182598</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-19 20:20:21 -0800</bug_when>
    <thetext>Attachment 46970 did not build on mac:
Build output: http://webkit-commit-queue.appspot.com/results/201057</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182605</commentid>
    <comment_count>9</comment_count>
      <attachid>46973</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-01-19 20:40:19 -0800</bug_when>
    <thetext>Created attachment 46973
Updated patch v2

Damn, got it wrong - ASSERT_UNUSED requires 2 params - fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182888</commentid>
    <comment_count>10</comment_count>
      <attachid>47053</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-01-20 12:53:54 -0800</bug_when>
    <thetext>Created attachment 47053
Updated patch v3

Fix issues ap mentioned on IRC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182894</commentid>
    <comment_count>11</comment_count>
      <attachid>47053</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-01-20 13:08:33 -0800</bug_when>
    <thetext>Comment on attachment 47053
Updated patch v3

r=me. I didn&apos;t review SVG parts very deeply.

&gt;     // creation, as we can&apos;t wait for the lazy creation to happen if ie. JS wants to

This comment is old - but it sounds like that should be &quot;e.g.&quot;, not &quot;i.e.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182912</commentid>
    <comment_count>12</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-01-20 14:01:58 -0800</bug_when>
    <thetext>Landed in r53564.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182986</commentid>
    <comment_count>13</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-01-20 17:15:15 -0800</bug_when>
    <thetext>Still fails on Gtk, skipped there - works fine on other platforms so it must be a Gtk problem. The setTimeout(, 100) calls are gone, so it must be another issue. Marking as Gtk specific bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187141</commentid>
    <comment_count>14</comment_count>
      <attachid>47053</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-02 14:14:20 -0800</bug_when>
    <thetext>Comment on attachment 47053
Updated patch v3

Obsoleting this patch since it was landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221640</commentid>
    <comment_count>15</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-05-06 06:29:54 -0700</bug_when>
    <thetext>Can any gtk person run this test, and produce the actual/diffs.txt files and attach them here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248989</commentid>
    <comment_count>16</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-07-09 07:19:42 -0700</bug_when>
    <thetext>Changed component to SVG, so it shows up in my all-svg-bugs search.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735898</commentid>
    <comment_count>17</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-10-05 12:59:31 -0700</bug_when>
    <thetext>The test&apos;s no longer failing, so closing the bug.
http://test-results.appspot.com/dashboards/flakiness_dashboard.html#group=%40ToT%20-%20webkit.org&amp;showAllRuns=true&amp;tests=svg%2Fcustom%2Fuse-instanceRoot-event-bubbling.xhtml</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46969</attachid>
            <date>2010-01-19 20:02:37 -0800</date>
            <delta_ts>2010-01-19 20:15:13 -0800</delta_ts>
            <desc>Initial patch</desc>
            <filename>UseStabilityFixes.diff</filename>
            <type>text/plain</type>
            <size>45865</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzUxOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTAgQEAKKzIwMTAtMDEtMTkgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJt
YW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgc3ZnL2N1c3RvbS91c2UtaW5zdGFuY2VSb290LWV2ZW50LWJ1YmJsaW5nLnhodG1sIGlz
IGZsYWtleQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzM4MzUKKworICAgICAgICBtb3VzZUV2ZW50IGZpcmVzIG11dGlwbGUgdGltZXMgaW4gc3ZnL2N1
c3RvbS91c2UtaW5zdGFuY2VSb290LWFzLWV2ZW50LXRhcmdldC54aHRtbAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI1MTkKKworICAgICAgICBUZXN0
OiBzdmcvY3VzdG9tL3VzZS1pbnN0YW5jZVJvb3QtZXZlbnQtbGlzdGVuZXItbGl2ZW5lc3MueGh0
bWwKKworICAgICAgICBTdGFiaWxpemUgPHVzZT4gc2NyaXB0aW5nIHN1cHBvcnQgLSB1c2UgdGVz
dHMgYXJlIHJlbGlhYmxlIG5vdyAodGVzdGVkIHVzaW5nIC0tcmVwZWFjaC1lYWNoIDUwIC0tcmFu
ZG9tIC1wKQorCisgICAgICAgIERvIG5vdCByZWNsb25lIHRyZWVzIGFueW1vcmUgYmVjYXVzZSBv
ZiBldmVudCBsaXN0ZW5lciBjaGFuZ2VzLCBpbnN0ZWFkIGtlZXAgY29ycmVzcG9uZGluZ0VsZW1l
bnQgJiBzaGFkb3dUcmVlRWxlbWVudAorICAgICAgICBzeW5jaHJvbml6ZWQgZm9yIGVhY2ggU1ZH
RWxlbWVudEluc3RhbmNlIC0gYW55IG11dGF0aW9ucyBvbiBhbnkgZXZlbnQgbGlzdGVuZXJzIGFy
ZSBsaXZlLCBhbmQgdGFrZSBpbW1lZGlhdGUgZWZmZWN0LAorICAgICAgICB3L28gaGF2aW5nIHRv
IHJlbHkgb24gYSByZWNsb25lIC0gdGhpcyB3YXMgdGhlIHJvb3Qgb2Ygc2V2ZXJhbCByYWNlIGNv
bmRpdGlvbnMgbWFraW5nIHRoZSA8dXNlPiB0ZXN0cyBmbGFrZXkuCisKKyAgICAgICAgRml4IFNW
R1VzZUVsZW1lbnQ6Omluc3RhbmNlUm9vdCgpIHRvIGZvcmNlIHNoYWRvdyB0cmVlIGNyZWF0aW9u
LCBldmVuIGlmIGl0IHdhcyBub3QgYXR0YWNoZWQgc28gZmFyIC0gd2UgY2FuJ3Qgd2FpdAorICAg
ICAgICBmb3IgZmluaXNoZWRQYXJzaW5nKCkgdG8gYmUgY2FsbGVkIHdoaWNoIHdvdWxkIHJlY2Fs
Y3VsYXRlIHRoZSBkb2N1bWVudCBzdHlsZSBhbmQgYXR0YWNoIHRoZSBzaGFkb3cgdHJlZSBhcyBy
ZXN1bHQuCisgICAgICAgIFRoaXMgaXMgbm93IG1hdGNoaW5nIE9wZXJhcyBiZWhhdmlvdXIuCisK
KyAgICAgICAgT3B0aW1pemUgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcigpIHRvIG5vdCBj
cmVhdGUgZXZlbnQgbGlzdGVuZXJzIGlmIHRoZSBzdXBwbGllZCBBdHRyaWJ1dGUgaXNOdWxsKCkg
LSBvdGhlcndoaXNlCisgICAgICAgIERPTSBjYWxscyBsaWtlIHJlbW92ZUF0dHJpYnV0ZSgib25j
bGljayIpIGNhdXNlIGEgdGVtcG9yYXJ5IEpTRXZlbnRMaXN0ZW5lciB0byBiZSBjcmVhdGVkLCBh
ZGRlZCB0byB0aGUgZXZlbnQgbGlzdGVuZXIKKyAgICAgICAgY2FjaGUgYW5kIHJlbW92ZWQgYWZ0
ZXJ3YXJkcy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcik6IFJldHVy
biBlYXJseSBpZiB0aGUgc3VwcGxpZWQgYXR0cmlidXRlIGlzIG51bGwgYXMgZGlzY3Vzc2VkIHdp
dGggR2VvZmZyZXkuCisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0ZW5lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKTogRGl0
dG8uCisgICAgICAgICogZG9tL05vZGUuY3BwOiBTeW5jaHJvbml6ZSBldmVudCBsaXN0ZW5lcnMg
d2l0aCBhbGwgZWxlbWVudCBpbnN0YW5jZXMsIGluc3RlYWQgb2YgbWFya2luZyB0aGUgdXNlIGVs
ZW1lbnRzIHRvIHJlY2xvbmUuCisgICAgICAgIChXZWJDb3JlOjppbnN0YW5jZXNGb3JTVkdFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnRyeUFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6YWRkRXZlbnRMaXN0ZW5lcik6IFdoZW4gYWRkaW5nIGEgbGlzdGVuZXIs
IGdldCBhIGxpc3Qgb2YgZWxlbWVudCBpbnN0YW5jZXMgYW5kIGFkZCBpdCB0aGVpciBhcyB3ZWxs
LgorICAgICAgICAoV2ViQ29yZTo6dHJ5UmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKTogRGl0dG8gZm9yIHJlbW92YWxzLCBi
dXQgd2l0aCBzcGVjaWFsIGxvZ2ljIGZvciBsaXN0ZW5lcnMgY3JlYXRlZCBmcm9tIG1hcmt1cCAo
c2VlIGNvbW1lbnRzKQorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50SW5zdGFuY2UuY3BwOiBDbGVh
bmVkIHVwLCByZW1vdmluZyB1bm5jZXNzYXJ5IGNoZWNrcyBvZiBjb3JyZXNwb25kaW5nRWxlbWVu
dCgpIC0gdGhlcmUgaXMgYW4gQVNTRVJUIGluIHRoZSBjdG9yLgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRWxlbWVudEluc3RhbmNlOjppbnZhbGlkYXRlQWxsSW5zdGFuY2VzT2ZFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5jZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50SW5zdGFuY2U6OmFkZEV2ZW50TGlzdGVu
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudEluc3RhbmNlOjpyZW1vdmVFdmVudExp
c3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5jZTo6cmVtb3ZlQWxs
RXZlbnRMaXN0ZW5lcnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudEluc3RhbmNlOjpl
dmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudEluc3RhbmNlOjpl
bnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNwcDog
Q2FsbCBkb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKSB0
byBmb3JjZSBzaGFkb3cgdHJlZSBjcmVhdGlvbiwganVzdCBsaWtlIENTU1N0eWxlRGVjbCB3b3Jr
cy4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6Omluc3RhbmNlUm9vdCk6CisKIDIw
MTAtMDEtMTkgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkIGJ1aWxkIGZpeC4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RXZl
bnRMaXN0ZW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRF
dmVudExpc3RlbmVyLmNwcAkocmV2aXNpb24gNTM1MTgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw5IEBA
IHN0YXRpYyBjb25zdCBTdHJpbmcmIGV2ZW50UGFyYW1ldGVyTmFtZSgKIFBhc3NSZWZQdHI8SlNM
YXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihOb2RlKiBub2Rl
LCBBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgQVNTRVJUKG5vZGUpOworICAgIEFTU0VSVChhdHRy
KTsKKyAgICBpZiAoYXR0ci0+aXNOdWxsKCkpCisgICAgICAgIHJldHVybiAwOwogCiAgICAgaW50
IGxpbmVOdW1iZXIgPSAxOwogICAgIFN0cmluZyBzb3VyY2VVUkw7CkBAIC03OSw2ICs4MiwxMCBA
QCBQYXNzUmVmUHRyPEpTTGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZUF0CiAgICAgaWYgKCFmcmFt
ZSkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICBBU1NFUlQoYXR0cik7CisgICAgaWYgKGF0dHIt
PmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gMDsKKwogICAgIGludCBsaW5lTnVtYmVyID0gMTsK
ICAgICBTdHJpbmcgc291cmNlVVJMOwogICAgIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHRFdmVudExpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCShyZXZpc2lvbiA1MzUxOCkKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYg
KzQ2LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFBhc3NSZWZQdHI8VjhMYXp5RXZlbnRMaXN0
ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihOb2RlKiBub2RlLCBBdHRyaWJ1dGUq
IGF0dHIpCiB7CiAgICAgQVNTRVJUKG5vZGUpOworICAgIEFTU0VSVChhdHRyKTsKKyAgICBpZiAo
YXR0ci0+aXNOdWxsKCkpCisgICAgICAgIHJldHVybiAwOworCiAgICAgaW50IGxpbmVOdW1iZXIg
PSAxOwogICAgIGludCBjb2x1bW5OdW1iZXIgPSAwOwogICAgIFN0cmluZyBzb3VyY2VVUkw7CkBA
IC03Niw2ICs4MCwxMSBAQCBQYXNzUmVmUHRyPFY4TGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZUF0
CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICBBU1NFUlQobm9kZSk7
CisgICAgQVNTRVJUKGF0dHIpOworICAgIGlmIChhdHRyLT5pc051bGwoKSkKKyAgICAgICAgcmV0
dXJuIDA7CisKICAgICBpbnQgbGluZU51bWJlciA9IDE7CiAgICAgaW50IGNvbHVtbk51bWJlciA9
IDA7CiAgICAgU3RyaW5nIHNvdXJjZVVSTDsKSW5kZXg6IFdlYkNvcmUvZG9tL05vZGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL05vZGUuY3BwCShyZXZpc2lvbiA1MzUxOCkKKysrIFdl
YkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMyLDQ5ICsyMzMyLDE1MyBA
QCB2b2lkIE5vZGU6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQogICAgIHNldERpZE1vdmVU
b05ld093bmVyRG9jdW1lbnRXYXNDYWxsZWQodHJ1ZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9p
ZCB1cGRhdGVTVkdFbGVtZW50SW5zdGFuY2VzQWZ0ZXJFdmVudExpc3RlbmVyQ2hhbmdlKE5vZGUq
IHJlZmVyZW5jZU5vZGUpCisjaWYgRU5BQkxFKFNWRykKK3N0YXRpYyBpbmxpbmUgSGFzaFNldDxT
VkdFbGVtZW50SW5zdGFuY2UqPiBpbnN0YW5jZXNGb3JTVkdFbGVtZW50KE5vZGUqIG5vZGUpCit7
CisgICAgSGFzaFNldDxTVkdFbGVtZW50SW5zdGFuY2UqPiBpbnN0YW5jZXM7CisgCisgICAgQVNT
RVJUKG5vZGUpOworICAgIGlmICghbm9kZS0+aXNTVkdFbGVtZW50KCkgfHwgbm9kZS0+c2hhZG93
VHJlZVJvb3ROb2RlKCkpCisgICAgICAgIHJldHVybiBIYXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5j
ZSo+KCk7CisKKyAgICBTVkdFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRWxlbWVu
dCo+KG5vZGUpOworICAgIGlmICghZWxlbWVudC0+aXNTdHlsZWQoKSkKKyAgICAgICAgcmV0dXJu
IEhhc2hTZXQ8U1ZHRWxlbWVudEluc3RhbmNlKj4oKTsKKworICAgIFNWR1N0eWxlZEVsZW1lbnQq
IHN0eWxlZEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdTdHlsZWRFbGVtZW50Kj4oZWxlbWVudCk7
CisgICAgQVNTRVJUKCFzdHlsZWRFbGVtZW50LT5pbnN0YW5jZVVwZGF0ZXNCbG9ja2VkKCkpOwor
CisgICAgcmV0dXJuIHN0eWxlZEVsZW1lbnQtPmluc3RhbmNlc0ZvckVsZW1lbnQoKTsKK30KKyNl
bmRpZgorCitzdGF0aWMgaW5saW5lIGJvb2wgdHJ5QWRkRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJn
ZXROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExp
c3RlbmVyPiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQoreworICAgIGlmICghdGFyZ2V0Tm9k
ZS0+RXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNl
Q2FwdHVyZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChEb2N1bWVudCogZG9j
dW1lbnQgPSB0YXJnZXROb2RlLT5kb2N1bWVudCgpKQorICAgICAgICBkb2N1bWVudC0+YWRkTGlz
dGVuZXJUeXBlSWZOZWVkZWQoZXZlbnRUeXBlKTsKKworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIE5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsK
ICNpZiAhRU5BQkxFKFNWRykKLSAgICBVTlVTRURfUEFSQU0ocmVmZXJlbmNlTm9kZSk7CisgICAg
cmV0dXJuIHRyeUFkZEV2ZW50TGlzdGVuZXIodGhpcywgZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNl
Q2FwdHVyZSk7CiAjZWxzZQotICAgIEFTU0VSVChyZWZlcmVuY2VOb2RlKTsKLSAgICBpZiAoIXJl
ZmVyZW5jZU5vZGUtPmlzU1ZHRWxlbWVudCgpKQotICAgICAgICByZXR1cm47CisgICAgSGFzaFNl
dDxTVkdFbGVtZW50SW5zdGFuY2UqPiBpbnN0YW5jZXMgPSBpbnN0YW5jZXNGb3JTVkdFbGVtZW50
KHRoaXMpOworICAgIGlmIChpbnN0YW5jZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdHJ5
QWRkRXZlbnRMaXN0ZW5lcih0aGlzLCBldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsK
IAotICAgIC8vIEVsZW1lbnRzIGxpdmluZyBpbnNpZGUgYSA8dXNlPiBzaGFkb3cgdHJlZSwgbmV2
ZXIgY2F1c2UgYW55IHVwZGF0ZXMhCi0gICAgaWYgKHJlZmVyZW5jZU5vZGUtPnNoYWRvd1RyZWVS
b290Tm9kZSgpKQotICAgICAgICByZXR1cm47CisgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxp
c3RlbmVyRm9yUmVndWxhclRyZWUgPSBsaXN0ZW5lcjsKKyAgICBSZWZQdHI8RXZlbnRMaXN0ZW5l
cj4gbGlzdGVuZXJGb3JTaGFkb3dUcmVlID0gbGlzdGVuZXJGb3JSZWd1bGFyVHJlZTsKIAotICAg
IC8vIFdlJ3JlIHBvc3NpYmx5IChhIGNoaWxkIG9mKSBhbiBlbGVtZW50IHRoYXQgaXMgcmVmZXJl
bmNlZCBieSBhIDx1c2U+IGNsaWVudAotICAgIC8vIElmIGFuIGV2ZW50IGxpc3RlbmVycyBjaGFu
Z2VzIG9uIGEgcmVmZXJlbmNlZCBlbGVtZW50LCB1cGRhdGUgYWxsIGluc3RhbmNlcy4KLSAgICBm
b3IgKE5vZGUqIG5vZGUgPSByZWZlcmVuY2VOb2RlOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50
Tm9kZSgpKSB7Ci0gICAgICAgIGlmICghbm9kZS0+aGFzSUQoKSB8fCAhbm9kZS0+aXNTVkdFbGVt
ZW50KCkpCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICAvLyBBZGQgZXZlbnQgbGlzdGVuZXIg
dG8gcmVndWxhciBET00gZWxlbWVudAorICAgIGlmICghdHJ5QWRkRXZlbnRMaXN0ZW5lcih0aGlz
LCBldmVudFR5cGUsIGxpc3RlbmVyRm9yUmVndWxhclRyZWUucmVsZWFzZSgpLCB1c2VDYXB0dXJl
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIFNWR0VsZW1lbnRJbnN0YW5jZTo6
aW52YWxpZGF0ZUFsbEluc3RhbmNlc09mRWxlbWVudChzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4o
bm9kZSkpOwotICAgICAgICBicmVhazsKKyAgICAvLyBBZGQgZXZlbnQgbGlzdGVuZXIgdG8gYWxs
IHNoYWRvdyB0cmVlIERPTSBlbGVtZW50IGluc3RhbmNlcworICAgIGNvbnN0IEhhc2hTZXQ8U1ZH
RWxlbWVudEluc3RhbmNlKj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGluc3RhbmNlcy5lbmQoKTsK
KyAgICBmb3IgKEhhc2hTZXQ8U1ZHRWxlbWVudEluc3RhbmNlKj46OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gaW5zdGFuY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBBU1NFUlQo
KCppdCktPnNoYWRvd1RyZWVFbGVtZW50KCkpOworICAgICAgICBBU1NFUlQoKCppdCktPmNvcnJl
c3BvbmRpbmdFbGVtZW50KCkgPT0gdGhpcyk7CisKKyAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVu
ZXI+IGxpc3RlbmVyRm9yQ3VycmVudFNoYWRvd1RyZWVFbGVtZW50ID0gbGlzdGVuZXJGb3JTaGFk
b3dUcmVlOworICAgICAgICBib29sIHJlc3VsdCA9IHRyeUFkZEV2ZW50TGlzdGVuZXIoKCppdCkt
PnNoYWRvd1RyZWVFbGVtZW50KCksIGV2ZW50VHlwZSwgbGlzdGVuZXJGb3JDdXJyZW50U2hhZG93
VHJlZUVsZW1lbnQucmVsZWFzZSgpLCB1c2VDYXB0dXJlKTsKKyAgICAgICAgQVNTRVJUKHJlc3Vs
dCk7CiAgICAgfQorCisgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIH0KIAotYm9vbCBOb2RlOjph
ZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRy
PEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitzdGF0aWMgaW5saW5l
IGJvb2wgdHJ5UmVtb3ZlRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIsIGJvb2wgdXNlQ2Fw
dHVyZSkKIHsKLSAgICBpZiAoIUV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlw
ZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpKQorICAgIGlmICghdGFyZ2V0Tm9kZS0+RXZlbnRUYXJn
ZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSB0
aGlzLT5kb2N1bWVudCgpKQotICAgICAgICBkb2N1bWVudC0+YWRkTGlzdGVuZXJUeXBlSWZOZWVk
ZWQoZXZlbnRUeXBlKTsKLSAgICB1cGRhdGVTVkdFbGVtZW50SW5zdGFuY2VzQWZ0ZXJFdmVudExp
c3RlbmVyQ2hhbmdlKHRoaXMpOworICAgIC8vIFRPRE86IE5vdGlmeSBEb2N1bWVudCB0aGF0IHRo
ZSBsaXN0ZW5lciBoYXMgdmFuaXNoZWQuIFdlIG5lZWQgdG8ga2VlcCB0cmFjayBvZiBhIG51bWJl
ciBvZgorICAgIC8vIGxpc3RlbmVycyBmb3IgZWFjaCB0eXBlLCBub3QganVzdCBhIGJvb2wgLSBz
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzODYxCisKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBOb2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiBsaXN0ZW5lciwgYm9vbCB1c2VD
YXB0dXJlKQogewotICAgIGlmICghRXZlbnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZl
bnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSkpCisjaWYgIUVOQUJMRShTVkcpCisgICAgcmV0
dXJuIHRyeVJlbW92ZUV2ZW50TGlzdGVuZXIodGhpcywgZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNl
Q2FwdHVyZSk7CisjZWxzZQorICAgIEhhc2hTZXQ8U1ZHRWxlbWVudEluc3RhbmNlKj4gaW5zdGFu
Y2VzID0gaW5zdGFuY2VzRm9yU1ZHRWxlbWVudCh0aGlzKTsKKyAgICBpZiAoaW5zdGFuY2VzLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRyeVJlbW92ZUV2ZW50TGlzdGVuZXIodGhpcywgZXZl
bnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CisKKyAgICAvLyBFdmVudFRhcmdldDo6cmVt
b3ZlRXZlbnRMaXN0ZW5lciBjcmVhdGVzIGEgUGFzc1JlZlB0ciBhcm91bmQgdGhlIGdpdmVuIEV2
ZW50TGlzdGVuZXIKKyAgICAvLyBvYmplY3Qgd2hlbiBjcmVhdGluZyBhIHRlbXBvcmFyeSBSZWdp
c3RlcmVkRXZlbnRMaXN0ZW5lciBvYmplY3QgdXNlZCB0byBsb29rIHVwIHRoZQorICAgIC8vIGV2
ZW50IGxpc3RlbmVyIGluIGEgY2FjaGUuIElmIHdlIHdhbnQgdG8gYmUgYWJsZSB0byBjYWxsIHJl
bW92ZUV2ZW50TGlzdGVuZXIoKSBtdWx0aXBsZQorICAgIC8vIHRpbWVzIG9uIGRpZmZlcmVudCBu
b2Rlcywgd2UgaGF2ZSB0byBkZWxheSBpdHMgaW1tZWRpYXRlIGRlc3RydWN0aW9uLCB3aGljaCB3
b3VsZCBoYXBwZW4KKyAgICAvLyBhZnRlciB0aGUgZmlyc3QgY2FsbCBiZWxvdy4KKyAgICBSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4gcHJvdGVjdG9yKGxpc3RlbmVyKTsKKworICAgIC8vIFJlbW92ZSBl
dmVudCBsaXN0ZW5lciBmcm9tIHJlZ3VsYXIgRE9NIGVsZW1lbnQKKyAgICBpZiAoIXRyeVJlbW92
ZUV2ZW50TGlzdGVuZXIodGhpcywgZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHVwZGF0ZVNWR0VsZW1lbnRJbnN0YW5jZXNBZnRl
ckV2ZW50TGlzdGVuZXJDaGFuZ2UodGhpcyk7CisgICAgLy8gUmVtb3ZlIGV2ZW50IGxpc3RlbmVy
IGZyb20gYWxsIHNoYWRvdyB0cmVlIERPTSBlbGVtZW50IGluc3RhbmNlcworICAgIGNvbnN0IEhh
c2hTZXQ8U1ZHRWxlbWVudEluc3RhbmNlKj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGluc3RhbmNl
cy5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8U1ZHRWxlbWVudEluc3RhbmNlKj46OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gaW5zdGFuY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAg
ICBBU1NFUlQoKCppdCktPmNvcnJlc3BvbmRpbmdFbGVtZW50KCkgPT0gdGhpcyk7CisKKyAgICAg
ICAgU1ZHRWxlbWVudCogc2hhZG93VHJlZUVsZW1lbnQgPSAoKml0KS0+c2hhZG93VHJlZUVsZW1l
bnQoKTsKKyAgICAgICAgQVNTRVJUKHNoYWRvd1RyZWVFbGVtZW50KTsKKworICAgICAgICBpZiAo
dHJ5UmVtb3ZlRXZlbnRMaXN0ZW5lcihzaGFkb3dUcmVlRWxlbWVudCwgZXZlbnRUeXBlLCBsaXN0
ZW5lciwgdXNlQ2FwdHVyZSkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAvLyBU
aGlzIGNhc2UgY2FuIG9ubHkgYmUgaGl0IGZvciBldmVudCBsaXN0ZW5lcnMgY3JlYXRlZCBmcm9t
IG1hcmt1cAorICAgICAgICBBU1NFUlQobGlzdGVuZXItPndhc0NyZWF0ZWRGcm9tTWFya3VwKCkp
OworCisgICAgICAgIC8vIElmIHRoZSBldmVudCBsaXN0ZW5lciAnbGlzdGVuZXInIGhhcyBiZWVu
IGNyZWF0ZWQgZnJvbSBtYXJrdXAgYW5kIGhhcyBiZWVuIGZpcmVkIGJlZm9yZQorICAgICAgICAv
LyB0aGVuIEpTTGF6eUV2ZW50TGlzdGVuZXI6OnBhcnNlQ29kZSgpIGhhcyBiZWVuIGNhbGxlZCBh
bmQgbV9qc0Z1bmN0aW9uIG9mIHRoYXQgbGlzdGVuZXIKKyAgICAgICAgLy8gaGFzIGJlZW4gY3Jl
YXRlZCAocmVhZDogaXQncyBub3QgMCBhbnltb3JlKS4gRHVyaW5nIHNoYWRvdyB0cmVlIGNyZWF0
aW9uLCB0aGUgZXZlbnQKKyAgICAgICAgLy8gbGlzdGVuZXIgRE9NIGF0dHJpYnV0ZSBoYXMgYmVl
biBjbG9uZWQsIGFuZCBhbm90aGVyIGV2ZW50IGxpc3RlbmVyIGhhcyBiZWVuIHNldHVwIGluCisg
ICAgICAgIC8vIHRoZSBzaGFkb3cgdHJlZS4gSWYgdGhhdCBldmVudCBsaXN0ZW5lciBoYXMgbm90
IGJlZW4gdXNlZCB5ZXQsIG1fanNGdW5jdGlvbiBpcyBzdGlsbCAwLAorICAgICAgICAvLyBhbmQg
dHJ5UmVtb3ZlRXZlbnRMaXN0ZW5lcigpIGFib3ZlIHdpbGwgZmFpbC4gV29yayBhcm91bmQgdGhh
dCB2ZXJ5IHNlbGRvbSBwcm9ibGVtLgorICAgICAgICBFdmVudFRhcmdldERhdGEqIGRhdGEgPSBz
aGFkb3dUcmVlRWxlbWVudC0+ZXZlbnRUYXJnZXREYXRhKCk7CisgICAgICAgIEFTU0VSVChkYXRh
KTsKKworICAgICAgICBFdmVudExpc3RlbmVyTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT5l
dmVudExpc3RlbmVyTWFwLmZpbmQoZXZlbnRUeXBlKTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdCAh
PSBkYXRhLT5ldmVudExpc3RlbmVyTWFwLmVuZCgpKTsKKworICAgICAgICBFdmVudExpc3RlbmVy
VmVjdG9yKiBlbnRyeSA9IHJlc3VsdC0+c2Vjb25kOworICAgICAgICBBU1NFUlQoZW50cnkpOwor
CisgICAgICAgIHVuc2lnbmVkIGludCBpbmRleCA9IDA7CisgICAgICAgIGJvb2wgZm91bmRMaXN0
ZW5lciA9IGZhbHNlOworCisgICAgICAgIEV2ZW50TGlzdGVuZXJWZWN0b3I6Oml0ZXJhdG9yIGVu
ZCA9IGVudHJ5LT5lbmQoKTsKKyAgICAgICAgZm9yIChFdmVudExpc3RlbmVyVmVjdG9yOjppdGVy
YXRvciBpdCA9IGVudHJ5LT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAg
IGlmICghKCppdCkubGlzdGVuZXItPndhc0NyZWF0ZWRGcm9tTWFya3VwKCkpIHsKKyAgICAgICAg
ICAgICAgICArK2luZGV4OworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBmb3VuZExpc3RlbmVyID0gdHJ1ZTsKKyAgICAgICAgICAgIGVudHJ5
LT5yZW1vdmUoaW5kZXgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAg
ICBBU1NFUlQoZm91bmRMaXN0ZW5lcik7CisKKyAgICAgICAgaWYgKGVudHJ5LT5pc0VtcHR5KCkp
IHsgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBkZWxldGUgZW50cnk7CisgICAgICAgICAg
ICBkYXRhLT5ldmVudExpc3RlbmVyTWFwLnJlbW92ZShyZXN1bHQpOworICAgICAgICB9CisgICAg
fQorCiAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKIH0KIAogRXZlbnRUYXJnZXREYXRhKiBOb2Rl
OjpldmVudFRhcmdldERhdGEoKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuY3BwCShy
ZXZpc2lvbiA1MzUxOCkKKysrIFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMjAwNywg
MjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAgICBDb3B5cmln
aHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM5LDEzICs0MCw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIHN0YXRpYyBXVEY6OlJlZkNvdW50ZWRMZWFrQ291bnRlciBpbnN0YW5jZUNvdW50ZXIo
IldlYkNvcmVTVkdFbGVtZW50SW5zdGFuY2UiKTsKICNlbmRpZgogCi1zdGF0aWMgRXZlbnRUYXJn
ZXREYXRhJiBkdW1teUV2ZW50VGFyZ2V0RGF0YSgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NB
TChFdmVudFRhcmdldERhdGEsIGR1bW15RXZlbnRUYXJnZXREYXRhLCAoKSk7Ci0gICAgZHVtbXlF
dmVudFRhcmdldERhdGEuZXZlbnRMaXN0ZW5lck1hcC5jbGVhcigpOwotICAgIHJldHVybiBkdW1t
eUV2ZW50VGFyZ2V0RGF0YTsKLX0KLQogU1ZHRWxlbWVudEluc3RhbmNlOjpTVkdFbGVtZW50SW5z
dGFuY2UoU1ZHVXNlRWxlbWVudCogdXNlRWxlbWVudCwgUGFzc1JlZlB0cjxTVkdFbGVtZW50PiBv
cmlnaW5hbEVsZW1lbnQpCiAgICAgOiBtX3VzZUVsZW1lbnQodXNlRWxlbWVudCkKICAgICAsIG1f
ZWxlbWVudChvcmlnaW5hbEVsZW1lbnQpCkBAIC05NSwxMCArODksMTAgQEAgdm9pZCBTVkdFbGVt
ZW50SW5zdGFuY2U6OmFwcGVuZENoaWxkKFBhcwogCiB2b2lkIFNWR0VsZW1lbnRJbnN0YW5jZTo6
aW52YWxpZGF0ZUFsbEluc3RhbmNlc09mRWxlbWVudChTVkdFbGVtZW50KiBlbGVtZW50KQogewot
ICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC0+aXNTdHlsZWQoKSkKKyAgICBpZiAoIWVsZW1l
bnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChzdGF0aWNfY2FzdDxTVkdTdHlsZWRFbGVt
ZW50Kj4oZWxlbWVudCktPmluc3RhbmNlVXBkYXRlc0Jsb2NrZWQoKSkKKyAgICBpZiAoZWxlbWVu
dC0+aXNTdHlsZWQoKSAmJiBzdGF0aWNfY2FzdDxTVkdTdHlsZWRFbGVtZW50Kj4oZWxlbWVudCkt
Pmluc3RhbmNlVXBkYXRlc0Jsb2NrZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSGFzaFNl
dDxTVkdFbGVtZW50SW5zdGFuY2UqPiBzZXQgPSBlbGVtZW50LT5pbnN0YW5jZXNGb3JFbGVtZW50
KCk7CkBAIC0xMTcsMzAgKzExMSwyMiBAQCB2b2lkIFNWR0VsZW1lbnRJbnN0YW5jZTo6aW52YWxp
ZGF0ZUFsbEluCiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFNWR0VsZW1lbnRJbnN0YW5jZTo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7Ci0gICAgaWYgKFNWR0VsZW1lbnQqIGVs
ZW1lbnQgPSBjb3JyZXNwb25kaW5nRWxlbWVudCgpKQotICAgICAgICByZXR1cm4gZWxlbWVudC0+
ZG9jdW1lbnQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9lbGVtZW50LT5kb2N1bWVu
dCgpOwogfQogCiBib29sIFNWR0VsZW1lbnRJbnN0YW5jZTo6YWRkRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0
ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewotICAgIGlmICghY29ycmVzcG9uZGluZ0VsZW1lbnQo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBjb3JyZXNwb25kaW5nRWxlbWVu
dCgpLT5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOwor
ICAgIHJldHVybiBtX2VsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5l
ciwgdXNlQ2FwdHVyZSk7CiB9CiAKIGJvb2wgU1ZHRWxlbWVudEluc3RhbmNlOjpyZW1vdmVFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiBs
aXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewotICAgIGlmICghY29ycmVzcG9uZGluZ0VsZW1l
bnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBjb3JyZXNwb25kaW5nRWxl
bWVudCgpLT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1
cmUpOworICAgIHJldHVybiBtX2VsZW1lbnQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBl
LCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CiB9CiAKIHZvaWQgU1ZHRWxlbWVudEluc3RhbmNlOjpy
ZW1vdmVBbGxFdmVudExpc3RlbmVycygpCiB7Ci0gICAgaWYgKCFjb3JyZXNwb25kaW5nRWxlbWVu
dCgpKQotICAgICAgICByZXR1cm47Ci0gICAgY29ycmVzcG9uZGluZ0VsZW1lbnQoKS0+cmVtb3Zl
QWxsRXZlbnRMaXN0ZW5lcnMoKTsKKyAgICBtX2VsZW1lbnQtPnJlbW92ZUFsbEV2ZW50TGlzdGVu
ZXJzKCk7CiB9CiAKIGJvb2wgU1ZHRWxlbWVudEluc3RhbmNlOjpkaXNwYXRjaEV2ZW50KFBhc3NS
ZWZQdHI8RXZlbnQ+IHBycEV2ZW50KQpAQCAtMTYwLDE0ICsxNDYsMTcgQEAgYm9vbCBTVkdFbGVt
ZW50SW5zdGFuY2U6OmRpc3BhdGNoRXZlbnQoUAogCiBFdmVudFRhcmdldERhdGEqIFNWR0VsZW1l
bnRJbnN0YW5jZTo6ZXZlbnRUYXJnZXREYXRhKCkKIHsKLSAgICByZXR1cm4gY29ycmVzcG9uZGlu
Z0VsZW1lbnQoKSA/IGNvcnJlc3BvbmRpbmdFbGVtZW50KCktPmV2ZW50VGFyZ2V0RGF0YSgpIDog
MDsKKyAgICByZXR1cm4gbV9lbGVtZW50LT5ldmVudFRhcmdldERhdGEoKTsKIH0KIAogRXZlbnRU
YXJnZXREYXRhKiBTVkdFbGVtZW50SW5zdGFuY2U6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCiB7
Ci0gICAgcmV0dXJuICZkdW1teUV2ZW50VGFyZ2V0RGF0YSgpOyAvLyByZXR1cm4gc29tZXRoaW5n
LCBzbyB3ZSBkb24ndCBjcmFzaAorICAgIC8vIEF2b2lkIGNyYXNoaW5nIC0gcmV0dXJuIGEgZGVm
YXVsdCBkdW1teSB2YWx1ZQorICAgIERFRklORV9TVEFUSUNfTE9DQUwoRXZlbnRUYXJnZXREYXRh
LCBkdW1teUV2ZW50VGFyZ2V0RGF0YSwgKCkpOworICAgIGR1bW15RXZlbnRUYXJnZXREYXRhLmV2
ZW50TGlzdGVuZXJNYXAuY2xlYXIoKTsKKyAgICByZXR1cm4gJmR1bW15RXZlbnRUYXJnZXREYXRh
OwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9CiAKLSNlbmRpZiAvLyBFTkFCTEUoU1ZH
KQorI2VuZGlmCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkocmV2aXNpb24gNTM1MTgpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsMTIgKzgw
LDggQEAgU1ZHRWxlbWVudEluc3RhbmNlKiBTVkdVc2VFbGVtZW50OjppbnN0YQogICAgIC8vIElm
IHRoZXJlIGlzIG5vIGVsZW1lbnQgaW5zdGFuY2UgdHJlZSwgZm9yY2UgaW1tZWRpYXRlIFNWR0Vs
ZW1lbnRJbnN0YW5jZSB0cmVlCiAgICAgLy8gY3JlYXRpb24sIGFzIHdlIGNhbid0IHdhaXQgZm9y
IHRoZSBsYXp5IGNyZWF0aW9uIHRvIGhhcHBlbiBpZiBpZS4gSlMgd2FudHMgdG8KICAgICAvLyBh
Y2Nlc3MgdGhlIGluc3RhbmNlUm9vdCBvYmplY3QgcmlnaHQgYWZ0ZXIgY3JlYXRpbmcgdGhlIGVs
ZW1lbnQgb24tdGhlLWZseQotICAgIGlmICghbV90YXJnZXRFbGVtZW50SW5zdGFuY2UpIHsKLSAg
ICAgICAgaWYgKFJlbmRlclNWR1NoYWRvd1RyZWVSb290Q29udGFpbmVyKiBzaGFkb3dSb290ID0g
c3RhdGljX2Nhc3Q8UmVuZGVyU1ZHU2hhZG93VHJlZVJvb3RDb250YWluZXIqPihyZW5kZXJlcigp
KSkgewotICAgICAgICAgICAgc2hhZG93Um9vdC0+bWFya1NoYWRvd1RyZWVGb3JSZWNyZWF0aW9u
KCk7Ci0gICAgICAgICAgICBzaGFkb3dSb290LT51cGRhdGVGcm9tRWxlbWVudCgpOwotICAgICAg
ICB9Ci0gICAgfQorICAgIGlmICghbV90YXJnZXRFbGVtZW50SW5zdGFuY2UpCisgICAgICAgIGRv
Y3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCiAgICAg
cmV0dXJuIG1fdGFyZ2V0RWxlbWVudEluc3RhbmNlLmdldCgpOwogfQpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gNTM1MTgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwyOCBAQAorMjAxMC0wMS0xOSAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5A
cmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBzdmcvY3VzdG9tL3VzZS1pbnN0YW5jZVJvb3QtZXZlbnQtYnViYmxpbmcueGh0bWwgaXMgZmxh
a2V5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzgz
NQorCisgICAgICAgIG1vdXNlRXZlbnQgZmlyZXMgbXV0aXBsZSB0aW1lcyBpbiBzdmcvY3VzdG9t
L3VzZS1pbnN0YW5jZVJvb3QtYXMtZXZlbnQtdGFyZ2V0LnhodG1sCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjUxOQorCisgICAgICAgIFN0YWJpbGl6
ZSA8dXNlPiBzY3JpcHRpbmcgc3VwcG9ydCAtIHVzZSB0ZXN0cyBhcmUgcmVsaWFibGUgbm93ICh0
ZXN0ZWQgdXNpbmcgLS1yZXBlYWNoLWVhY2ggNTAgLS1yYW5kb20gLXApCisgICAgICAgIFJlZW5h
YmxlIHRoZSB0ZXN0cyBpbiBxdWVzdGlvbiBvbiBndGsgLyBxdCAvIHdpbi4gbWFjIHdhcyBvbmx5
IGFmZmVjdGVkIGZyb20gdGltZSB0byB0aW1lIChhbHdheXMgcmVwcm9kdWNhYmxlIHVzaW5nIC0t
cmVwZWF0LWVhY2ggNTAgdGhvdWdoLikKKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVk
OiBVbnNraXAgdXNlLWluc3RhbmNlUm9vdC1ldmVudC1saXN0ZW5lcnMueGh0bWwgLyB1c2UtaW5z
dGFuY2VSb290LWV2ZW50LWJ1YmJsaW5nLnhodG1sIC8gdXNlLWluc3RhbmNlUm9vdC1hcy1ldmVu
dC10YXJnZXQueGh0bWwKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOiBVbnNraXAgdXNl
LWluc3RhbmNlUm9vdC1hcy1ldmVudC10YXJnZXQueGh0bWwKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vU2tpcHBlZDogRGl0dG8uCisgICAgICAgICogc3ZnL2N1c3RvbS9yZXNvdXJjZXMvdXNlLWlu
c3RhbmNlUm9vdC1ldmVudC1idWJibGluZy5qczoKKyAgICAgICAgKGV2ZW50SGFuZGxlcik6IE5v
IG5lZWQgYW55bW9yZSB0byByZWx5IG9uIGEgMTAwbXMgdGltZW91dC4KKyAgICAgICAgKiBzdmcv
Y3VzdG9tL3Jlc291cmNlcy91c2UtaW5zdGFuY2VSb290LWV2ZW50LWxpc3RlbmVycy5qczoKKyAg
ICAgICAgKGV2ZW50SGFuZGxlcik6IERpdHRvLgorICAgICAgICAqIHN2Zy9jdXN0b20vdXNlLWlu
c3RhbmNlUm9vdC1hcy1ldmVudC10YXJnZXQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN2Zy9j
dXN0b20vdXNlLWluc3RhbmNlUm9vdC1hcy1ldmVudC10YXJnZXQueGh0bWw6IFJld3JvdGUgdGVz
dCAtIHdlIGRvbid0IG5lZWQgdG8gd29yayBhcm91bmQgc2hhZG93IHRyZWUgcmVjbG9uZSBpc3N1
ZXMgYW55bW9yZS4KKyAgICAgICAgKiBzdmcvY3VzdG9tL3VzZS1pbnN0YW5jZVJvb3QtZXZlbnQt
bGlzdGVuZXItbGl2ZW5lc3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvY3Vz
dG9tL3VzZS1pbnN0YW5jZVJvb3QtZXZlbnQtbGlzdGVuZXItbGl2ZW5lc3MueGh0bWw6IEFkZGVk
LgorCiAyMDEwLTAxLTE3ICBKb24gSG9uZXljdXR0ICA8amhvbmV5Y3V0dEBhcHBsZS5jb20+CiAK
ICAgICAgICAgTVNBQTogVGhlIGNoaWxkIDxvcHRpb24+IGVsZW1lbnRzIG9mIGEgbm9uLW11bHRp
cGxlIDxzZWxlY3Q+IGFyZSBub3QKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lw
cGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCShyZXZp
c2lvbiA1MzUxOCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCSh3b3JraW5n
IGNvcHkpCkBAIC0zNjk5LDcgKzM2OTksNiBAQCBzdmcvY3VzdG9tL3N2Zy1kaXNhbGxvd2VkLWlu
LWRhc2hib2FyZC1vCiBzdmcvY3VzdG9tL3N2Zy1mb250cy1pbi10ZXh0LWNvbnRyb2xzLmh0bWwK
IHN2Zy9jdXN0b20vdXNlLWVsZW1lbnRJbnN0YW5jZS1ldmVudC10YXJnZXQuc3ZnCiBzdmcvY3Vz
dG9tL3VzZS1lbGVtZW50SW5zdGFuY2UtbWV0aG9kcy5zdmcKLXN2Zy9jdXN0b20vdXNlLWluc3Rh
bmNlUm9vdC1ldmVudC1saXN0ZW5lcnMueGh0bWwKIHN2Zy9jdXN0b20vdXNlLW9uLXN5bWJvbC1p
bnNpZGUtcGF0dGVybi5zdmcKIHN2Zy9jdXN0b20vdXNlLXNldEF0dHJpYnV0ZS1jcmFzaC5zdmcK
ICMgICBUZXN0cyBnZW5lcmF0aW5nIG5ldyByZXN1bHRzCkBAIC01NzE4LDExICs1NzE3LDYgQEAg
ZmFzdC9ldmVudHMvdG91Y2gKICMgU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zMjQ0MQogZmFzdC9wYXJzZXIveGh0bWwtY2xvc2Utd2hpbGUtcGFyc2luZy54aHRt
bAogCi0jIEJ1ZyAzMjUxOSAtICBtb3VzZUV2ZW50IGZpcmVzIG11dGlwbGUgdGltZXMgaW4KLSMg
ICAgICAgICAgICAgIExheW91dFRlc3RzL3N2Zy9jdXN0b20vdXNlLWluc3RhbmNlUm9vdC1hcy1l
dmVudC10YXJnZXQueGh0bWwKLSMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMyNTE5Ci1zdmcvY3VzdG9tL3VzZS1pbnN0YW5jZVJvb3QtYXMtZXZlbnQtdGFyZ2V0Lnho
dG1sCi0KICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyNjA0CiAj
IEZhaWxzIG9uIHRoZSByZWxlYXNlIGJvdCBiZWNhdXNlIG9mLCBhcHBhcmVudGx5LCByb3VkaW5n
IGVycm9ycwogc3ZnL2N1c3RvbS9wYXRoLWdldFRvdGFsTGVuZ3RoLnN2ZwpAQCAtNTc3OSw4ICs1
NzczLDMgQEAgc3ZnL2N1c3RvbS9yZWxhdGl2ZS1zaXplZC1kZWVwLXNoYWRvdy10cgogc3ZnL2N1
c3RvbS9yZWxhdGl2ZS1zaXplZC1zaGFkb3ctdHJlZS1jb250ZW50LnhodG1sCiBzdmcvY3VzdG9t
L3RleHQteHktdXBkYXRlcy1TVkdMaXN0LnhodG1sCiBzdmcvdGV4dC9zZWxlY3Rpb24tYmFja2dy
b3VuZC1jb2xvci54aHRtbAotCi0jIEZsYWtleSBTVkcgdGVzdCwgdXNlcyAnc2V0VGltZW91dCgx
MDApJwotIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM4MzUKLXN2
Zy9jdXN0b20vdXNlLWluc3RhbmNlUm9vdC1ldmVudC1idWJibGluZy54aHRtbAotCkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL3F0L1NraXBwZWQJKHJldmlzaW9uIDUzNTE4KQorKysgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtNTA3MiwxMSArNTA3Miw2IEBAIGh0
dHAvdGVzdHMvbmF2aWdhdGlvbi9wYXJzZWQtaWZyYW1lLWR5bmEKICMgVGhlIGJ1ZyB3aXRoIHRo
aXMgdGVzdCBpcyB0cmFja2VkIHVuZGVyIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zMjUyMQogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1i
YXNpYy1kZW5pZWQtcHJlZmxpZ2h0LWNhY2hlLmh0bWwKIAotIyBCdWcgMzI1MTkgLSAgbW91c2VF
dmVudCBmaXJlcyBtdXRpcGxlIHRpbWVzIGluIAotIyAgICAgICAgICAgICAgTGF5b3V0VGVzdHMv
c3ZnL2N1c3RvbS91c2UtaW5zdGFuY2VSb290LWFzLWV2ZW50LXRhcmdldC54aHRtbAotIyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI1MTkKLXN2Zy9jdXN0b20vdXNl
LWluc3RhbmNlUm9vdC1hcy1ldmVudC10YXJnZXQueGh0bWwKLQogIyBNaXNzaW5nIHZhcmlhYmxl
czoKICMgU1ZHQWx0R2x5cGhFbGVtZW50LCBTVkdBbmltYXRlRWxlbWVudCwgU1ZHQW5pbWF0ZUNv
bG9yRWxlbWVudCwgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQKICMgU1ZHRm9udEVsZW1lbnQs
IFNWR0dseXBoRWxlbWVudCwgU1ZHTWlzc2luZ0dseXBoRWxlbWVudCwgU1ZHRm9udEZhY2VFbGVt
ZW50LCBTVkdGb250RmFjZVNyY0VsZW1lbnQKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3dp
bi9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVk
CShyZXZpc2lvbiA1MzUxOCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCSh3
b3JraW5nIGNvcHkpCkBAIC03MjEsMTEgKzcyMSw2IEBAIGZhc3QvZXZlbnRzL3RvdWNoCiBodHRw
L3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtZ2V0U1ZHRG9jdW1lbnQtaWZyYW1lLmh0bWwKIGh0
dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1nZXRTVkdEb2N1bWVudC1vYmplY3QuaHRtbAog
Ci0jIEJ1ZyAzMjUxOSAtICBtb3VzZUV2ZW50IGZpcmVzIG11dGlwbGUgdGltZXMgaW4KLSMgICAg
ICAgICAgICAgIExheW91dFRlc3RzL3N2Zy9jdXN0b20vdXNlLWluc3RhbmNlUm9vdC1hcy1ldmVu
dC10YXJnZXQueGh0bWwKLSMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMyNTE5Ci1zdmcvY3VzdG9tL3VzZS1pbnN0YW5jZVJvb3QtYXMtZXZlbnQtdGFyZ2V0LnhodG1s
Ci0KICMgaHR0cDovL3dlYmtpdC5vcmcvYi8zMjUzMiAtIFRpbWUgb3V0CiBodHRwL3Rlc3RzL25h
dmlnYXRpb24vZHluYW1pYy1pZnJhbWUtZHluYW1pYy1mb3JtLWJhY2stZW50cnkuaHRtbAogaHR0
cC90ZXN0cy9uYXZpZ2F0aW9uL3BhcnNlZC1pZnJhbWUtZHluYW1pYy1mb3JtLWJhY2stZW50cnku
aHRtbApJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS91c2UtaW5zdGFuY2VSb290LWFzLWV2
ZW50LXRhcmdldC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2N1
c3RvbS91c2UtaW5zdGFuY2VSb290LWFzLWV2ZW50LXRhcmdldC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDUzNTE4KQorKysgTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS91c2UtaW5zdGFuY2VSb290LWFz
LWV2ZW50LXRhcmdldC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcg
QEAgUEFTUyBjdXJyZW50RXZlbnQudGFyZ2V0ID09IGN1cnJlbnRFdmVudAogUEFTUyBjdXJyZW50
RXZlbnQudGFyZ2V0LmNvcnJlc3BvbmRpbmdFbGVtZW50ID09IGN1cnJlbnRFdmVudC5jdXJyZW50
VGFyZ2V0LmNvcnJlc3BvbmRpbmdFbGVtZW50IGlzIHRydWUKIFBBU1MgY3VycmVudEV2ZW50LnRh
cmdldC5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCA9PSBjdXJyZW50RXZlbnQuY3VycmVudFRhcmdl
dC5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCBpcyB0cnVlCiAKLVRlc3QgIzM6IFZlcmlmeSB0aGF0
IGV2ZW50IGxpc3RlbmVycyBhdHRhY2hlZCB0byB0aGUgc2hhZG93IHRyZWUgZWxlbWVudHMgYXJl
IGNvcGllZCB3aGVuIHVzZSByZWNsb25lcyB0aGUgaW50ZXJuYWwgc2hhZG93IHRyZWUKK1Rlc3Qg
IzM6IFZlcmlmeSB0aGF0IGV2ZW50cyBkaXNwYXRjaGVkIGJ5IHRoZSB1c2VyIGVuZCB1cCBvbiB0
aGUgU1ZHRWxlbWVudEluc3RhbmNlIG9iamVjdHMKIAogUEFTUyBjdXJyZW50RXZlbnQudG9TdHJp
bmcoKSBpcyAiW29iamVjdCBNb3VzZUV2ZW50XSIKIFBBU1MgY3VycmVudEV2ZW50LnR5cGUudG9T
dHJpbmcoKSBpcyAibW91c2VvdmVyIgpAQCAtNDYsMzUgKzQ2LDcgQEAgUEFTUyBjdXJyZW50RXZl
bnQudGFyZ2V0ID09IGN1cnJlbnRFdmVudAogUEFTUyBjdXJyZW50RXZlbnQudGFyZ2V0LmNvcnJl
c3BvbmRpbmdFbGVtZW50ID09IGN1cnJlbnRFdmVudC5jdXJyZW50VGFyZ2V0LmNvcnJlc3BvbmRp
bmdFbGVtZW50IGlzIHRydWUKIFBBU1MgY3VycmVudEV2ZW50LnRhcmdldC5jb3JyZXNwb25kaW5n
VXNlRWxlbWVudCA9PSBjdXJyZW50RXZlbnQuY3VycmVudFRhcmdldC5jb3JyZXNwb25kaW5nVXNl
RWxlbWVudCBpcyB0cnVlCiAKLVRlc3QgIzQ6IFZlcmlmeSB0aGF0IGV2ZW50cyBkaXNwYXRjaGVk
IHRvIHRoZSByZWZlcmVuY2VkIGVsZW1lbnQgZW5kIHVwIG9uIHRoZSBTVkVsZW1lbnRJbnN0YW5j
ZSBvYmplY3RzCi0KLVBBU1MgY3VycmVudEV2ZW50LnRvU3RyaW5nKCkgaXMgIltvYmplY3QgTW91
c2VFdmVudF0iCi1QQVNTIGN1cnJlbnRFdmVudC50eXBlLnRvU3RyaW5nKCkgaXMgIm1vdXNlb3Zl
ciIKLVBBU1MgY3VycmVudEV2ZW50LnRhcmdldC50b1N0cmluZygpIGlzICJbb2JqZWN0IFNWR0Vs
ZW1lbnRJbnN0YW5jZV0iCi1QQVNTIGN1cnJlbnRFdmVudC5jdXJyZW50VGFyZ2V0LnRvU3RyaW5n
KCkgaXMgIltvYmplY3QgU1ZHRWxlbWVudEluc3RhbmNlXSIKLVBBU1MgY3VycmVudEV2ZW50LnRh
cmdldC5jb3JyZXNwb25kaW5nRWxlbWVudCA9PSByZWN0RWxlbWVudCBpcyB0cnVlCi1QQVNTIGN1
cnJlbnRFdmVudC50YXJnZXQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQgPT0gdXNlRWxlbWVudCBp
cyB0cnVlCi1QQVNTIGN1cnJlbnRFdmVudC5jdXJyZW50VGFyZ2V0LmNvcnJlc3BvbmRpbmdFbGVt
ZW50ID09IHJlY3RFbGVtZW50IGlzIHRydWUKLVBBU1MgY3VycmVudEV2ZW50LmN1cnJlbnRUYXJn
ZXQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQgPT0gdXNlRWxlbWVudCBpcyB0cnVlCi1QQVNTIGN1
cnJlbnRFdmVudC50YXJnZXQgPT0gY3VycmVudEV2ZW50LmN1cnJlbnRUYXJnZXQgaXMgdHJ1ZQot
UEFTUyBjdXJyZW50RXZlbnQudGFyZ2V0LmNvcnJlc3BvbmRpbmdFbGVtZW50ID09IGN1cnJlbnRF
dmVudC5jdXJyZW50VGFyZ2V0LmNvcnJlc3BvbmRpbmdFbGVtZW50IGlzIHRydWUKLVBBU1MgY3Vy
cmVudEV2ZW50LnRhcmdldC5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCA9PSBjdXJyZW50RXZlbnQu
Y3VycmVudFRhcmdldC5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCBpcyB0cnVlCi0KLVRlc3QgIzU6
IFZlcmlmeSB0aGF0IGV2ZW50IGxpc3RlbmVycyBhdHRhY2hlZCB0byB0aGUgcmVmZXJlbmNlZCBl
bGVtZW50cyBhcmUgY29waWVkIHdoZW4gdXNlIHJlY2xvbmVzIHRoZSBpbnRlcm5hbCBzaGFkb3cg
dHJlZQotCi1QQVNTIGN1cnJlbnRFdmVudC50b1N0cmluZygpIGlzICJbb2JqZWN0IE1vdXNlRXZl
bnRdIgotUEFTUyBjdXJyZW50RXZlbnQudHlwZS50b1N0cmluZygpIGlzICJtb3VzZW92ZXIiCi1Q
QVNTIGN1cnJlbnRFdmVudC50YXJnZXQudG9TdHJpbmcoKSBpcyAiW29iamVjdCBTVkdFbGVtZW50
SW5zdGFuY2VdIgotUEFTUyBjdXJyZW50RXZlbnQuY3VycmVudFRhcmdldC50b1N0cmluZygpIGlz
ICJbb2JqZWN0IFNWR0VsZW1lbnRJbnN0YW5jZV0iCi1QQVNTIGN1cnJlbnRFdmVudC50YXJnZXQu
Y29ycmVzcG9uZGluZ0VsZW1lbnQgPT0gcmVjdEVsZW1lbnQgaXMgdHJ1ZQotUEFTUyBjdXJyZW50
RXZlbnQudGFyZ2V0LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50ID09IHVzZUVsZW1lbnQgaXMgdHJ1
ZQotUEFTUyBjdXJyZW50RXZlbnQuY3VycmVudFRhcmdldC5jb3JyZXNwb25kaW5nRWxlbWVudCA9
PSByZWN0RWxlbWVudCBpcyB0cnVlCi1QQVNTIGN1cnJlbnRFdmVudC5jdXJyZW50VGFyZ2V0LmNv
cnJlc3BvbmRpbmdVc2VFbGVtZW50ID09IHVzZUVsZW1lbnQgaXMgdHJ1ZQotUEFTUyBjdXJyZW50
RXZlbnQudGFyZ2V0ID09IGN1cnJlbnRFdmVudC5jdXJyZW50VGFyZ2V0IGlzIHRydWUKLVBBU1Mg
Y3VycmVudEV2ZW50LnRhcmdldC5jb3JyZXNwb25kaW5nRWxlbWVudCA9PSBjdXJyZW50RXZlbnQu
Y3VycmVudFRhcmdldC5jb3JyZXNwb25kaW5nRWxlbWVudCBpcyB0cnVlCi1QQVNTIGN1cnJlbnRF
dmVudC50YXJnZXQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQgPT0gY3VycmVudEV2ZW50LmN1cnJl
bnRUYXJnZXQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQgaXMgdHJ1ZQotCi1UZXN0ICM2OiBWZXJp
ZnkgdGhhdCBhIGNsaWNrIGV2ZW50IGdvdCBkaXNwYXRjaGVkIHRvIHRoZSBvcmlnaW5hbCB0cmVl
IGFzIGRlZmluZWQgaW4gdGhlIG1hcmt1cCwgd2hlbiBzZW50IHRvIHRoZSAncmVjdEVsZW1lbnQn
CitUZXN0ICM0OiBWZXJpZnkgdGhhdCBhIGNsaWNrIGV2ZW50IGdvdCBkaXNwYXRjaGVkIHRvIHRo
ZSBvcmlnaW5hbCB0cmVlIGFzIGRlZmluZWQgaW4gdGhlIG1hcmt1cCwgd2hlbiBzZW50IHRvIHRo
ZSAncmVjdEVsZW1lbnQnCiAKIFBBU1MgY3VycmVudEV2ZW50LnRvU3RyaW5nKCkgaXMgIltvYmpl
Y3QgTW91c2VFdmVudF0iCiBQQVNTIGN1cnJlbnRFdmVudC50eXBlLnRvU3RyaW5nKCkgaXMgImNs
aWNrIgpAQCAtODQsMjEgKzU2LDcgQEAgUEFTUyBjdXJyZW50RXZlbnQudGFyZ2V0ID09IHJlY3RF
bGVtZW50IAogUEFTUyBjdXJyZW50RXZlbnQuY3VycmVudFRhcmdldCA9PSByZWN0RWxlbWVudCBp
cyB0cnVlCiBQQVNTIGN1cnJlbnRFdmVudC50YXJnZXQgPT0gY3VycmVudEV2ZW50LmN1cnJlbnRU
YXJnZXQgaXMgdHJ1ZQogCi1UZXN0ICM3OiBWZXJpZnkgdGhhdCBhIGNsaWNrIGV2ZW50IGdvdCBk
aXNwYXRjaGVkIHRvIHRoZSBpbnN0YW5jZSB0cmVlIHdoZW4gc2VudCB0byB0aGUgJ3VzZUVsZW1l
bnQuaW5zdGFuY2VSb290JyB3aXRoIGFuIGV2ZW50IGxpc3RlbmVyIGF0dGFjaGVkIHRvICdyZWN0
RWxlbWVudCcKLQotUEFTUyBjdXJyZW50RXZlbnQudG9TdHJpbmcoKSBpcyAiW29iamVjdCBNb3Vz
ZUV2ZW50XSIKLVBBU1MgY3VycmVudEV2ZW50LnR5cGUudG9TdHJpbmcoKSBpcyAiY2xpY2siCi1Q
QVNTIGN1cnJlbnRFdmVudC50YXJnZXQudG9TdHJpbmcoKSBpcyAiW29iamVjdCBTVkdFbGVtZW50
SW5zdGFuY2VdIgotUEFTUyBjdXJyZW50RXZlbnQuY3VycmVudFRhcmdldC50b1N0cmluZygpIGlz
ICJbb2JqZWN0IFNWR0VsZW1lbnRJbnN0YW5jZV0iCi1QQVNTIGN1cnJlbnRFdmVudC50YXJnZXQu
Y29ycmVzcG9uZGluZ0VsZW1lbnQgPT0gcmVjdEVsZW1lbnQgaXMgdHJ1ZQotUEFTUyBjdXJyZW50
RXZlbnQudGFyZ2V0LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50ID09IHVzZUVsZW1lbnQgaXMgdHJ1
ZQotUEFTUyBjdXJyZW50RXZlbnQuY3VycmVudFRhcmdldC5jb3JyZXNwb25kaW5nRWxlbWVudCA9
PSByZWN0RWxlbWVudCBpcyB0cnVlCi1QQVNTIGN1cnJlbnRFdmVudC5jdXJyZW50VGFyZ2V0LmNv
cnJlc3BvbmRpbmdVc2VFbGVtZW50ID09IHVzZUVsZW1lbnQgaXMgdHJ1ZQotUEFTUyBjdXJyZW50
RXZlbnQudGFyZ2V0ID09IGN1cnJlbnRFdmVudC5jdXJyZW50VGFyZ2V0IGlzIHRydWUKLVBBU1Mg
Y3VycmVudEV2ZW50LnRhcmdldC5jb3JyZXNwb25kaW5nRWxlbWVudCA9PSBjdXJyZW50RXZlbnQu
Y3VycmVudFRhcmdldC5jb3JyZXNwb25kaW5nRWxlbWVudCBpcyB0cnVlCi1QQVNTIGN1cnJlbnRF
dmVudC50YXJnZXQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQgPT0gY3VycmVudEV2ZW50LmN1cnJl
bnRUYXJnZXQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQgaXMgdHJ1ZQotCi1UZXN0ICM4OiBWZXJp
ZnkgdGhhdCB0aGUgb3JpZ2luYWwgY2xpY2sgZXZlbnQgbGlzdGVuZXIgZGVmaW5lZCBpbiBtYXJr
dXAgaXMgc3RpbGwgd29ya2luZyBwcm9wZXJseQorVGVzdCAjNTogVmVyaWZ5IHRoYXQgYSBjbGlj
ayBldmVudCBnb3QgZGlzcGF0Y2hlZCB0byB0aGUgaW5zdGFuY2UgdHJlZSB3aGVuIHNlbnQgdG8g
dGhlICd1c2VFbGVtZW50Lmluc3RhbmNlUm9vdCcgd2l0aCBhbiBldmVudCBsaXN0ZW5lciBhdHRh
Y2hlZCB0byAncmVjdEVsZW1lbnQnCiAKIFBBU1MgY3VycmVudEV2ZW50LnRvU3RyaW5nKCkgaXMg
IltvYmplY3QgTW91c2VFdmVudF0iCiBQQVNTIGN1cnJlbnRFdmVudC50eXBlLnRvU3RyaW5nKCkg
aXMgImNsaWNrIgpAQCAtMTEyLDcgKzcwLDcgQEAgUEFTUyBjdXJyZW50RXZlbnQudGFyZ2V0ID09
IGN1cnJlbnRFdmVudAogUEFTUyBjdXJyZW50RXZlbnQudGFyZ2V0LmNvcnJlc3BvbmRpbmdFbGVt
ZW50ID09IGN1cnJlbnRFdmVudC5jdXJyZW50VGFyZ2V0LmNvcnJlc3BvbmRpbmdFbGVtZW50IGlz
IHRydWUKIFBBU1MgY3VycmVudEV2ZW50LnRhcmdldC5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCA9
PSBjdXJyZW50RXZlbnQuY3VycmVudFRhcmdldC5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCBpcyB0
cnVlCiAKLVRlc3QgIzk6IFZlcmlmeSB0aGF0IHRoZSBvcmlnaW5hbCBjbGljayBldmVudCBsaXN0
ZW5lciBnb3QgcmVtb3ZlZCBhbmQgYSBuZXcgb25lIGF0dGFjaGVkIHRvIHRoZSB1c2Ugcm9vdCBT
VkdFbGVtZW50SW5zdGFuY2UKK1Rlc3QgIzY6IFZlcmlmeSB0aGF0IHRoZSBvcmlnaW5hbCBjbGlj
ayBldmVudCBsaXN0ZW5lciBnb3QgcmVtb3ZlZCBhbmQgYSBuZXcgb25lIGF0dGFjaGVkIGlzIGF0
dGFjaGVkIHRvIHRoZSB1c2Ugcm9vdCBTVkdFbGVtZW50SW5zdGFuY2UKIAogUEFTUyBjdXJyZW50
RXZlbnQudG9TdHJpbmcoKSBpcyAiW29iamVjdCBNb3VzZUV2ZW50XSIKIFBBU1MgY3VycmVudEV2
ZW50LnR5cGUudG9TdHJpbmcoKSBpcyAiY2xpY2siCkBAIC0xMjYsNyArODQsNyBAQCBQQVNTIGN1
cnJlbnRFdmVudC50YXJnZXQgPT0gY3VycmVudEV2ZW50CiBQQVNTIGN1cnJlbnRFdmVudC50YXJn
ZXQuY29ycmVzcG9uZGluZ0VsZW1lbnQgPT0gY3VycmVudEV2ZW50LmN1cnJlbnRUYXJnZXQuY29y
cmVzcG9uZGluZ0VsZW1lbnQgaXMgdHJ1ZQogUEFTUyBjdXJyZW50RXZlbnQudGFyZ2V0LmNvcnJl
c3BvbmRpbmdVc2VFbGVtZW50ID09IGN1cnJlbnRFdmVudC5jdXJyZW50VGFyZ2V0LmNvcnJlc3Bv
bmRpbmdVc2VFbGVtZW50IGlzIHRydWUKIAotVGVzdCAjMTA6IFZlcmlmeSB0aGF0IHRoZSBzaW11
bGF0ZWQgY2xpY2sgZXZlbnQgZ290IGRpc3BhdGNoZWQgdG8gdGhlIHJpZ2h0IHRhcmdldAorVGVz
dCAjODogVmVyaWZ5IHRoYXQgdGhlIHNpbXVsYXRlZCBjbGljayBldmVudCBnb3QgZGlzcGF0Y2hl
ZCB0byB0aGUgcmlnaHQgdGFyZ2V0CiAKIFBBU1MgY3VycmVudEV2ZW50LnRvU3RyaW5nKCkgaXMg
IltvYmplY3QgTW91c2VFdmVudF0iCiBQQVNTIGN1cnJlbnRFdmVudC50eXBlLnRvU3RyaW5nKCkg
aXMgImNsaWNrIgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS91c2UtaW5zdGFuY2VSb290
LWFzLWV2ZW50LXRhcmdldC54aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvY3Vz
dG9tL3VzZS1pbnN0YW5jZVJvb3QtYXMtZXZlbnQtdGFyZ2V0LnhodG1sCShyZXZpc2lvbiA1MzUx
OCkKKysrIExheW91dFRlc3RzL3N2Zy9jdXN0b20vdXNlLWluc3RhbmNlUm9vdC1hcy1ldmVudC10
YXJnZXQueGh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTksMjMgKzksMzYgQEAKICAgPGRlZnM+CiAg
ICAgICA8cmVjdCBpZD0idGFyZ2V0IiBmaWxsPSJyZWQiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAw
IiBvbmNsaWNrPSJldmVudEhhbmRsZXIoZXZ0KSIvPgogICA8L2RlZnM+Ci0gIDx1c2UgaWQ9InRl
c3QiIHhsaW5rOmhyZWY9InVybCgjdGFyZ2V0KSIvPgorICA8dXNlIGlkPSJ0ZXN0IiB4bGluazpo
cmVmPSIjdGFyZ2V0Ii8+CiA8L3N2Zz4KIAogPHAgaWQ9ImRlc2NyaXB0aW9uIi8+CiA8ZGl2IGlk
PSJjb25zb2xlIi8+CiAKIDxzY3JpcHQ+Ci12YXIgY3VycmVudEV2ZW50OwotdmFyIG5leHRFdmVu
dFR5cGU7Ci12YXIgZXZlbnROb3RpZmljYXRpb247CisvLyBTZXR0aW5nIHVwIHRoZSB0ZXN0Y2Fz
ZQoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisKK3ZhciB1c2VFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRlc3QiKTsKK3ZhciByZWN0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0YXJnZXQiKTsKIAorLy8gU3RhcnQgdGVzdCBpbW1lZGlhdGVseSwgdG8gc2VlIHdoZXRl
ciBpbnN0YW5jZVJvb3QgaXMgYWxyZWFkeSBhdmFpbGFibGUsIGFzIGV4cGVjdGVkLgorZGVzY3Jp
cHRpb24oIlRlc3QgU1ZHIHVzZSBlbGVtZW50IHNwZWNpZmljIGV2ZW50IGhhbmRsaW5nIHVzaW5n
IFNWR0VsZW1lbnRJbnN0YW5jZTogIik7CitkZWJ1ZygiJ3VzZUVsZW1lbnQnIGlzIHRoZSBvcmln
aW5hbCB1c2UgZWxlbWVudCIpOworZGVidWcoIidyZWN0RWxlbWVudCcgaXMgdGhlIG9yaWdpbmFs
IGVsZW1lbnQgd2hpY2ggZ2V0cyBjbG9uZWQgYnkgdGhlIHVzZSBlbGVtZW50Iik7CitldmVudFRl
c3RPbmUoKTsKKworLy8gSGVscGVyIGZ1bmN0aW9ucwogZnVuY3Rpb24gZXZlbnRIYW5kbGVyKGV2
dCkKIHsKLSAgICBpZiAoZXZ0LnR5cGUgIT0gbmV4dEV2ZW50VHlwZSkKKyAgICBpZiAoZXZ0LnR5
cGUgIT0gbmV4dEV2ZW50VHlwZSkgeworICAgICAgICBkZWJ1ZygiUkVDRUlWRUQgVU5FWFBFQ1RF
RCBFVkVOVCEgc2hvdWxkQmU9JyIgKyBuZXh0RXZlbnRUeXBlICsgIicgd2FzPSciICsgZXZ0LnR5
cGUgKyAiJyIpOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgY3VycmVudEV2ZW50ID0g
ZXZ0OworICAgIG5leHRFdmVudFR5cGUgPSAibm90IHlldCBzZXQiOwogICAgIGV2YWwoZXZlbnRO
b3RpZmljYXRpb24pOwogfQogCkBAIC0zNSw4ICs0OCwxMiBAQCBmdW5jdGlvbiBmaXJlTW91c2VP
dmVyRXZlbnQobmV3RXZlbnROb3RpCiAgICAgbmV4dEV2ZW50VHlwZSA9ICJtb3VzZW92ZXIiOwog
ICAgIGV2ZW50Tm90aWZpY2F0aW9uID0gbmV3RXZlbnROb3RpZmljYXRpb247CiAKLSAgICBpZiAo
d2luZG93LmV2ZW50U2VuZGVyKQotICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyg1MCwg
NTApOworICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDIwMCwgMjAw
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDUwLCA1MCk7CisgICAgICAg
IH0sIDApOworICAgIH0KIH0KIAogZnVuY3Rpb24gZmlyZU1vdXNlQ2xpY2tFdmVudChuZXdFdmVu
dE5vdGlmaWNhdGlvbikKQEAgLTQ2LDE2ICs2MywxOCBAQCBmdW5jdGlvbiBmaXJlTW91c2VDbGlj
a0V2ZW50KG5ld0V2ZW50Tm90CiAgICAgZXZlbnROb3RpZmljYXRpb24gPSBuZXdFdmVudE5vdGlm
aWNhdGlvbjsKIAogICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKLSAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oNTAsIDUwKTsKLSAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3du
KCk7Ci0gICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDUwLCA1MCk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgfSwgMCk7CiAgICAgfQogfQogCi1mdW5jdGlvbiBm
aXJlU2ltdWxhdGVkTW91c2VDbGlja0V2ZW50KG5ld0V2ZW50Tm90aWZpY2F0aW9uLCBldmVudFRh
cmdldCkKK2Z1bmN0aW9uIGZpcmVTaW11bGF0ZWRNb3VzZU92ZXJFdmVudChuZXdFdmVudE5vdGlm
aWNhdGlvbiwgZXZlbnRUYXJnZXQpCiB7CiAgICAgY3VycmVudEV2ZW50ID0gdW5kZWZpbmVkOwot
ICAgIG5leHRFdmVudFR5cGUgPSAiY2xpY2siOworICAgIG5leHRFdmVudFR5cGUgPSAibW91c2Vv
dmVyIjsKICAgICBldmVudE5vdGlmaWNhdGlvbiA9IG5ld0V2ZW50Tm90aWZpY2F0aW9uOwogCiAg
ICAgdmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnRzIik7CkBAIC02
NCwxMSArODMsMTcgQEAgZnVuY3Rpb24gZmlyZVNpbXVsYXRlZE1vdXNlQ2xpY2tFdmVudChuZQog
ICAgIGV2ZW50VGFyZ2V0LmRpc3BhdGNoRXZlbnQoZXZlbnQpOwogfQogCi1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKK2Z1bmN0aW9uIGZpcmVTaW11bGF0ZWRNb3VzZUNsaWNrRXZlbnQobmV3RXZlbnROb3Rp
ZmljYXRpb24sIGV2ZW50VGFyZ2V0KQoreworICAgIGN1cnJlbnRFdmVudCA9IHVuZGVmaW5lZDsK
KyAgICBuZXh0RXZlbnRUeXBlID0gImNsaWNrIjsKKyAgICBldmVudE5vdGlmaWNhdGlvbiA9IG5l
d0V2ZW50Tm90aWZpY2F0aW9uOwogCi12YXIgdXNlRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ0ZXN0Iik7Ci12YXIgcmVjdEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgidGFyZ2V0Iik7CisgICAgdmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNl
RXZlbnRzIik7CisgICAgZXZlbnQuaW5pdE1vdXNlRXZlbnQobmV4dEV2ZW50VHlwZSwgdHJ1ZSwg
dHJ1ZSwgZG9jdW1lbnQuZGVmYXVsdFZpZXcsIDEsIDAsIDAsIDAsIDAsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCAwLCBudWxsKTsKKworICAgIGV2ZW50VGFyZ2V0LmRpc3BhdGNoRXZlbnQo
ZXZlbnQpOworfQogCiBmdW5jdGlvbiB2ZXJpZnlFdmVudChldnRTdHJpbmcsIHRhcmdldFN0cmlu
ZywgY3VycmVudFRhcmdldFN0cmluZykKIHsKQEAgLTExMywzMyArMTM4LDQxIEBAIGZ1bmN0aW9u
IHZlcmlmeUNsaWNrRXZlbnRPblJlZmVyZW5jZWQoKQogICAgIHNob3VsZEJlVHJ1ZSgiY3VycmVu
dEV2ZW50LnRhcmdldCA9PSBjdXJyZW50RXZlbnQuY3VycmVudFRhcmdldCIpOwogfQogCi1kZXNj
cmlwdGlvbigiVGVzdCBTVkcgdXNlIGVsZW1lbnQgc3BlY2lmaWMgZXZlbnQgaGFuZGxpbmcgdXNp
bmcgU1ZHRWxlbWVudEluc3RhbmNlOiAiKTsKLWRlYnVnKCIndXNlRWxlbWVudCcgaXMgdGhlIG9y
aWdpbmFsIHVzZSBlbGVtZW50Iik7Ci1kZWJ1ZygiJ3JlY3RFbGVtZW50JyBpcyB0aGUgb3JpZ2lu
YWwgZWxlbWVudCB3aGljaCBnZXRzIGNsb25lZCBieSB0aGUgdXNlIGVsZW1lbnQiKTsKK2Z1bmN0
aW9uIGNoZWNrRXZlbnRMaXN0ZW5lck5vdFJlYWNoYWJsZSgpCit7CisgICAgZGVidWcoIiIpOwor
ICAgIGRlYnVnKCJZT1UgU0hPVUxEIE5PVCBTRUUgVEhJUyBURVhULiBPVEhFUldISVNFIFJFTU9W
SU5HIEVWRU5UIExJU1RFTkVSUyBGQUlMRUQhIik7CisgICAgZGVidWcoIiIpOworfQogCi1kZWJ1
ZygiIik7Ci1kZWJ1ZygiVGVzdCAjMTogVmVyaWZ5IHRoYXQgdGhlIHVzZSBlbGVtZW50IGFuZCB0
aGUgY29udGFpbmVkIFNWR0VsZW1lbnRJbnN0YW5jZSBvYmplY3RzIGFyZSB2YWxpZCIpOwotZGVi
dWcoIiIpOworLy8gRXZlbnQgdGVzdCBzZWN0aW9ucworZnVuY3Rpb24gZXZlbnRUZXN0T25lKCkK
K3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3QgIzE6IFZlcmlmeSB0aGF0IHRoZSB1
c2UgZWxlbWVudCBhbmQgdGhlIGNvbnRhaW5lZCBTVkdFbGVtZW50SW5zdGFuY2Ugb2JqZWN0cyBh
cmUgdmFsaWQiKTsKKyAgICBkZWJ1ZygiIik7CiAKLXNob3VsZEJlRXF1YWxUb1N0cmluZygidXNl
RWxlbWVudC50b1N0cmluZygpIiwgIltvYmplY3QgU1ZHVXNlRWxlbWVudF0iKTsKLXNob3VsZEJl
RXF1YWxUb1N0cmluZygidXNlRWxlbWVudC5pbnN0YW5jZVJvb3QudG9TdHJpbmcoKSIsICJbb2Jq
ZWN0IFNWR0VsZW1lbnRJbnN0YW5jZV0iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInVz
ZUVsZW1lbnQudG9TdHJpbmcoKSIsICJbb2JqZWN0IFNWR1VzZUVsZW1lbnRdIik7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJ1c2VFbGVtZW50Lmluc3RhbmNlUm9vdC50b1N0cmluZygpIiwg
IltvYmplY3QgU1ZHRWxlbWVudEluc3RhbmNlXSIpOwogCi1zaG91bGRCZUVxdWFsVG9TdHJpbmco
InVzZUVsZW1lbnQuaW5zdGFuY2VSb290LmNvcnJlc3BvbmRpbmdFbGVtZW50LnRvU3RyaW5nKCki
LCAiW29iamVjdCBTVkdSZWN0RWxlbWVudF0iKTsKLXNob3VsZEJlVHJ1ZSgidXNlRWxlbWVudC5p
bnN0YW5jZVJvb3QuY29ycmVzcG9uZGluZ0VsZW1lbnQgPT0gcmVjdEVsZW1lbnQiKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoInVzZUVsZW1lbnQuaW5zdGFuY2VSb290LmNvcnJlc3BvbmRp
bmdFbGVtZW50LnRvU3RyaW5nKCkiLCAiW29iamVjdCBTVkdSZWN0RWxlbWVudF0iKTsKKyAgICBz
aG91bGRCZVRydWUoInVzZUVsZW1lbnQuaW5zdGFuY2VSb290LmNvcnJlc3BvbmRpbmdFbGVtZW50
ID09IHJlY3RFbGVtZW50Iik7CiAKLXNob3VsZEJlRXF1YWxUb1N0cmluZygidXNlRWxlbWVudC5p
bnN0YW5jZVJvb3QuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQudG9TdHJpbmcoKSIsICJbb2JqZWN0
IFNWR1VzZUVsZW1lbnRdIik7Ci1zaG91bGRCZVRydWUoInVzZUVsZW1lbnQuaW5zdGFuY2VSb290
LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50ID09IHVzZUVsZW1lbnQiKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoInVzZUVsZW1lbnQuaW5zdGFuY2VSb290LmNvcnJlc3BvbmRpbmdVc2VFbGVt
ZW50LnRvU3RyaW5nKCkiLCAiW29iamVjdCBTVkdVc2VFbGVtZW50XSIpOworICAgIHNob3VsZEJl
VHJ1ZSgidXNlRWxlbWVudC5pbnN0YW5jZVJvb3QuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQgPT0g
dXNlRWxlbWVudCIpOwogCi1zaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiB1c2VFbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIiLCAiZnVuY3Rpb24iKTsKLXNob3VsZEJlRXF1YWxUb1N0cmluZygi
dHlwZW9mIHVzZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciIsICJmdW5jdGlvbiIpOwotc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2YgdXNlRWxlbWVudC5kaXNwYXRjaEV2ZW50IiwgImZ1
bmN0aW9uIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2YgdXNlRWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyIiwgImZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJ0eXBlb2YgdXNlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyIiwgImZ1bmN0aW9uIik7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2YgdXNlRWxlbWVudC5kaXNwYXRjaEV2ZW50
IiwgImZ1bmN0aW9uIik7CiAKLS8vIFNwZWM6IEFuIGVsZW1lbnQgYW5kIGFsbCBpdHMgY29ycmVz
cG9uZGluZyBTVkdFbGVtZW50SW5zdGFuY2Ugb2JqZWN0cyBzaGFyZSBhbiBldmVudAotLy8gbGlz
dGVuZXIgbGlzdC4gVGhlIGN1cnJlbnRUYXJnZXQgYXR0cmlidXRlIG9mIHRoZSBldmVudCBjYW4g
YmUgdXNlZCB0byBkZXRlcm1pbmUgdGhyb3VnaAotLy8gd2hpY2ggb2JqZWN0IGFuIGV2ZW50IGxp
c3RlbmVyIHdhcyBpbnZva2VkLgotdXNlRWxlbWVudC5pbnN0YW5jZVJvb3QuYWRkRXZlbnRMaXN0
ZW5lcigibW91c2VvdmVyIiwgZXZlbnRIYW5kbGVyLCBmYWxzZSk7CisgICAgLy8gU3BlYzogQW4g
ZWxlbWVudCBhbmQgYWxsIGl0cyBjb3JyZXNwb25kaW5nIFNWR0VsZW1lbnRJbnN0YW5jZSBvYmpl
Y3RzIHNoYXJlIGFuIGV2ZW50CisgICAgLy8gbGlzdGVuZXIgbGlzdC4gVGhlIGN1cnJlbnRUYXJn
ZXQgYXR0cmlidXRlIG9mIHRoZSBldmVudCBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgdGhyb3Vn
aAorICAgIC8vIHdoaWNoIG9iamVjdCBhbiBldmVudCBsaXN0ZW5lciB3YXMgaW52b2tlZC4KKyAg
ICB1c2VFbGVtZW50Lmluc3RhbmNlUm9vdC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLCBl
dmVudEhhbmRsZXIsIGZhbHNlKTsKKyAgICBmaXJlTW91c2VPdmVyRXZlbnQoImV2ZW50VGVzdFR3
bygpIik7Cit9CiAKLWZ1bmN0aW9uIHN0YXJ0RXZlbnRUZXN0cygpCitmdW5jdGlvbiBldmVudFRl
c3RUd28oKQogewogICAgIGRlYnVnKCIiKTsKICAgICBkZWJ1ZygiVGVzdCAjMjogVmVyaWZ5IHRo
YXQgZXZlbnRzIGRpc3BhdGNoZWQgdG8gdGhlIFNWR0VsZW1lbnRJbnN0YW5jZSBvYmplY3RzIGhh
dmUgY29ycmVjdCB0YXJnZXQgcHJvcGVydHkgdmFsdWVzIik7CkBAIC0xNTUsMTAyICsxODgsNzAg
QEAgZnVuY3Rpb24gc3RhcnRFdmVudFRlc3RzKCkKICAgICAvLyByZWd1bGFyIHRyZWUgdG8gdGhl
IHJvb3QgZWxlbWVudCBpbiBidWJibGluZyBwaGFzZS4KICAgICB2ZXJpZnlNb3VzZU92ZXJFdmVu
dCgpOwogCi0gICAgLy8gUHJlcGFyZSBmb3IgbmV4dCB0ZXN0Ci0gICAgdXNlRWxlbWVudC5pbnN0
YW5jZVJvb3QucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIiwgZXZlbnRIYW5kbGVyLCBm
YWxzZSk7Ci0gICAgdXNlRWxlbWVudC5pbnN0YW5jZVJvb3QuYWRkRXZlbnRMaXN0ZW5lcigibW91
c2VvdmVyIiwgZXZlbnRIYW5kbGVyLCBmYWxzZSk7Ci0KLSAgICAvLyBDYXVzZXMgc3ZnQXR0cmli
dXRlQ2hhbmdlZCgpIGxvZ2ljIHRvIHJlY2xvbmUgdGhlIHNoYWRvdyB0cmVlCi0gICAgLy8gSWYg
J1Rlc3QgIzMnIGlzIG5vdCBleGVjdXRlZCwgdGhlbiBpdCBkaWRuJ3QgcHJvcGVybHkgcmVjbG9u
ZSB0aGUgZXZlbnQgbGlzdGVuZXJzLgotICAgIHVzZUVsZW1lbnQuaW5zdGFuY2VSb290LmNvcnJl
c3BvbmRpbmdFbGVtZW50LnNldEF0dHJpYnV0ZSgieCIsIHVzZUVsZW1lbnQuaW5zdGFuY2VSb290
LmNvcnJlc3BvbmRpbmdFbGVtZW50LmdldEF0dHJpYnV0ZSgieCIpKTsKLQotICAgIGZpcmVNb3Vz
ZU92ZXJFdmVudCgiZXZlbnRUZXN0T25lKCkiKTsKLX0KLQotZnVuY3Rpb24gZXZlbnRUZXN0T25l
KCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIlRlc3QgIzM6IFZlcmlmeSB0aGF0IGV2
ZW50IGxpc3RlbmVycyBhdHRhY2hlZCB0byB0aGUgc2hhZG93IHRyZWUgZWxlbWVudHMgYXJlIGNv
cGllZCB3aGVuIHVzZSByZWNsb25lcyB0aGUgaW50ZXJuYWwgc2hhZG93IHRyZWUiKTsKLSAgICBk
ZWJ1ZygiIik7Ci0KLSAgICAvLyBTcGVjOiBJZiBldmVudCBhdHRyaWJ1dGVzIGFyZSBhc3NpZ25l
ZCB0byByZWZlcmVuY2VkIGVsZW1lbnRzLCB0aGVuIHRoZSBhY3R1YWwgdGFyZ2V0IGZvciB0aGUg
ZXZlbnQgd2lsbCBiZSB0aGUKLSAgICAvLyBTVkdFbGVtZW50SW5zdGFuY2Ugb2JqZWN0IHdpdGhp
biB0aGUgImluc3RhbmNlIHRyZWUiIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIHJlZmVyZW5j
ZWQgZWxlbWVudC4KLSAgICB2ZXJpZnlNb3VzZU92ZXJFdmVudCgpOwotCi0gICAgLy8gUHJlcGFy
ZSBmb3IgbmV4dCB0ZXN0CiAgICAgdXNlRWxlbWVudC5pbnN0YW5jZVJvb3QucmVtb3ZlRXZlbnRM
aXN0ZW5lcigibW91c2VvdmVyIiwgZXZlbnRIYW5kbGVyLCBmYWxzZSk7CisgICAgZmlyZVNpbXVs
YXRlZE1vdXNlT3ZlckV2ZW50KCJjaGVja0V2ZW50TGlzdGVuZXJOb3RSZWFjaGFibGUoKSIsIHVz
ZUVsZW1lbnQuaW5zdGFuY2VSb290KTsKKyAgICBmaXJlU2ltdWxhdGVkTW91c2VPdmVyRXZlbnQo
ImNoZWNrRXZlbnRMaXN0ZW5lck5vdFJlYWNoYWJsZSgpIiwgcmVjdEVsZW1lbnQpOwogICAgIHJl
Y3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3ZlciIsIGV2ZW50SGFuZGxlciwgZmFs
c2UpOwogCi0gICAgZmlyZU1vdXNlT3ZlckV2ZW50KCJldmVudFRlc3RUd28oKSIpOwotfQotCi1m
dW5jdGlvbiBldmVudFRlc3RUd28oKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVGVz
dCAjNDogVmVyaWZ5IHRoYXQgZXZlbnRzIGRpc3BhdGNoZWQgdG8gdGhlIHJlZmVyZW5jZWQgZWxl
bWVudCBlbmQgdXAgb24gdGhlIFNWRWxlbWVudEluc3RhbmNlIG9iamVjdHMiKTsKLSAgICBkZWJ1
ZygiIik7Ci0KLSAgICB2ZXJpZnlNb3VzZU92ZXJFdmVudCgpOwotCi0gICAgLy8gUHJlcGFyZSBm
b3IgbmV4dCB0ZXN0Ci0gICAgcmVjdEVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vv
dmVyIiwgZXZlbnRIYW5kbGVyLCBmYWxzZSk7Ci0gICAgcmVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigibW91c2VvdmVyIiwgZXZlbnRIYW5kbGVyLCBmYWxzZSk7Ci0KLSAgICAvLyBDYXVzZXMg
c3ZnQXR0cmlidXRlQ2hhbmdlZCgpIGxvZ2ljIHRvIHJlY2xvbmUgdGhlIHNoYWRvdyB0cmVlCi0g
ICAgLy8gSWYgJ1Rlc3QgIzUnIGlzIG5vdCBleGVjdXRlZCwgdGhlbiBpdCBkaWRuJ3QgcHJvcGVy
bHkgcmVjbG9uZSB0aGUgZXZlbnQgbGlzdGVuZXJzLgotICAgIHJlY3RFbGVtZW50LnNldEF0dHJp
YnV0ZSgieCIsIHJlY3RFbGVtZW50LmdldEF0dHJpYnV0ZSgieCIpKTsKLQogICAgIGZpcmVNb3Vz
ZU92ZXJFdmVudCgiZXZlbnRUZXN0VGhyZWUoKSIpOwogfQogCiBmdW5jdGlvbiBldmVudFRlc3RU
aHJlZSgpCiB7CiAgICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJUZXN0ICM1OiBWZXJpZnkgdGhh
dCBldmVudCBsaXN0ZW5lcnMgYXR0YWNoZWQgdG8gdGhlIHJlZmVyZW5jZWQgZWxlbWVudHMgYXJl
IGNvcGllZCB3aGVuIHVzZSByZWNsb25lcyB0aGUgaW50ZXJuYWwgc2hhZG93IHRyZWUiKTsKKyAg
ICBkZWJ1ZygiVGVzdCAjMzogVmVyaWZ5IHRoYXQgZXZlbnRzIGRpc3BhdGNoZWQgYnkgdGhlIHVz
ZXIgZW5kIHVwIG9uIHRoZSBTVkdFbGVtZW50SW5zdGFuY2Ugb2JqZWN0cyIpOwogICAgIGRlYnVn
KCIiKTsKIAogICAgIHZlcmlmeU1vdXNlT3ZlckV2ZW50KCk7CiAKLSAgICAvLyBQcmVwYXJlIGZv
ciBuZXh0IHRlc3QKLSAgICByZWN0RWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW92
ZXIiLCBldmVudEhhbmRsZXIsIGZhbHNlKTsKLQorICAgIHVzZUVsZW1lbnQuaW5zdGFuY2VSb290
LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlb3ZlciIsIGV2ZW50SGFuZGxlciwgZmFsc2UpOwor
ICAgIGZpcmVTaW11bGF0ZWRNb3VzZU92ZXJFdmVudCgiY2hlY2tFdmVudExpc3RlbmVyTm90UmVh
Y2hhYmxlKCkiLCB1c2VFbGVtZW50Lmluc3RhbmNlUm9vdCk7CisgICAgZmlyZVNpbXVsYXRlZE1v
dXNlT3ZlckV2ZW50KCJjaGVja0V2ZW50TGlzdGVuZXJOb3RSZWFjaGFibGUoKSIsIHJlY3RFbGVt
ZW50KTsKICAgICBmaXJlU2ltdWxhdGVkTW91c2VDbGlja0V2ZW50KCJldmVudFRlc3RGb3VyKCki
LCByZWN0RWxlbWVudCk7CiB9CiAKIGZ1bmN0aW9uIGV2ZW50VGVzdEZvdXIoKQogewogICAgIGRl
YnVnKCIiKTsKLSAgICBkZWJ1ZygiVGVzdCAjNjogVmVyaWZ5IHRoYXQgYSBjbGljayBldmVudCBn
b3QgZGlzcGF0Y2hlZCB0byB0aGUgb3JpZ2luYWwgdHJlZSBhcyBkZWZpbmVkIGluIHRoZSBtYXJr
dXAsIHdoZW4gc2VudCB0byB0aGUgJ3JlY3RFbGVtZW50JyIpOyAKKyAgICBkZWJ1ZygiVGVzdCAj
NDogVmVyaWZ5IHRoYXQgYSBjbGljayBldmVudCBnb3QgZGlzcGF0Y2hlZCB0byB0aGUgb3JpZ2lu
YWwgdHJlZSBhcyBkZWZpbmVkIGluIHRoZSBtYXJrdXAsIHdoZW4gc2VudCB0byB0aGUgJ3JlY3RF
bGVtZW50JyIpOyAKICAgICBkZWJ1ZygiIik7CiAKICAgICB2ZXJpZnlDbGlja0V2ZW50T25SZWZl
cmVuY2VkKCk7CiAKLSAgICAvLyBQcmVwYXJlIGZvciBuZXh0IHRlc3QKICAgICBmaXJlU2ltdWxh
dGVkTW91c2VDbGlja0V2ZW50KCJldmVudFRlc3RGaXZlKCkiLCB1c2VFbGVtZW50Lmluc3RhbmNl
Um9vdCk7CiB9CiAKIGZ1bmN0aW9uIGV2ZW50VGVzdEZpdmUoKQogewogICAgIGRlYnVnKCIiKTsK
LSAgICBkZWJ1ZygiVGVzdCAjNzogVmVyaWZ5IHRoYXQgYSBjbGljayBldmVudCBnb3QgZGlzcGF0
Y2hlZCB0byB0aGUgaW5zdGFuY2UgdHJlZSB3aGVuIHNlbnQgdG8gdGhlICd1c2VFbGVtZW50Lmlu
c3RhbmNlUm9vdCcgd2l0aCBhbiBldmVudCBsaXN0ZW5lciBhdHRhY2hlZCB0byAncmVjdEVsZW1l
bnQnIik7IAorICAgIGRlYnVnKCJUZXN0ICM1OiBWZXJpZnkgdGhhdCBhIGNsaWNrIGV2ZW50IGdv
dCBkaXNwYXRjaGVkIHRvIHRoZSBpbnN0YW5jZSB0cmVlIHdoZW4gc2VudCB0byB0aGUgJ3VzZUVs
ZW1lbnQuaW5zdGFuY2VSb290JyB3aXRoIGFuIGV2ZW50IGxpc3RlbmVyIGF0dGFjaGVkIHRvICdy
ZWN0RWxlbWVudCciKTsgCiAgICAgZGVidWcoIiIpOwogCiAgICAgdmVyaWZ5Q2xpY2tFdmVudCgp
OwogCi0gICAgLy8gUHJlcGFyZSBmb3IgbmV4dCB0ZXN0CisgICAgLy8gVGhpcyB0ZXN0cyBhIHdl
YmtpdCBzcGVjaWZpYyBxdWlyazogcmVtb3ZlQXR0cmlidXRlKCkgb24gdGhlIHRhcmdldCBlbGVt
ZW50LCBjYXVzZXMgdXMgdG8gcmVjbG9uZSB0aGUgc2hhZG93IHRyZWUuCisgICAgLy8gQWxsIGV2
ZW50IGxpc3RlbmVyIG11dGF0aW9ucyBhcmUgc3luY2hyb25pemVkIHdpdGggdGhlIHNoYWRvdyB0
cmVlIGFuZCBkbyBub3QgY2F1c2UgcmVjbG9uZXMuIFNvIGlmIHdlIGFkZCB0aGUKKyAgICAvLyBj
bGljayBldmVudCBsaXN0ZW5lciB0byB0aGUgY3VycmVudCBpbnN0YW5jZVJvb3QsIHJlbW92ZSB0
aGUgZXhpc3RpbmcgY2xpY2sgbGlzdGVuZXIgZnJvbSBtYXJrdXAgYW5kIHRoZW4gZmlyZQorICAg
IC8vIGEgY2xpY2sgZXZlbnQsIHdlJ3JlIHN1cmUgdGhhdCB0aGUgc2hhZG93IHRyZWUgaXMgcmVj
bG9uZWQgYmVmb3JlIHRoZSBldmVudFRlc3RTaXgoKSBmdW5jdGlvbiBpcyBleGVjdXRlZC4KKyAg
ICAvLyBJZiBldmVudFRlc3RTaXgoKSBpcyByZWFjaGVkLCB3ZSd2ZSBwcm9wZXJseSBwcmVzZXJ2
ZWQgdGhlIGR5bmFtaWNhbGx5IGNyZWF0ZWQgY2xpY2sgZXZlbnQgbGlzdGVuZXIgYWZ0ZXIgcmVj
bG9uaW5nLgorICAgIHVzZUVsZW1lbnQuaW5zdGFuY2VSb290LmFkZEV2ZW50TGlzdGVuZXIoImNs
aWNrIiwgZXZlbnRIYW5kbGVyLCBmYWxzZSk7CisgICAgcmVjdEVsZW1lbnQucmVtb3ZlQXR0cmli
dXRlKCJvbmNsaWNrIik7CisKICAgICBmaXJlTW91c2VDbGlja0V2ZW50KCJldmVudFRlc3RTaXgo
KSIpOwogfQogCiBmdW5jdGlvbiBldmVudFRlc3RTaXgoKQogewogICAgIGRlYnVnKCIiKTsKLSAg
ICBkZWJ1ZygiVGVzdCAjODogVmVyaWZ5IHRoYXQgdGhlIG9yaWdpbmFsIGNsaWNrIGV2ZW50IGxp
c3RlbmVyIGRlZmluZWQgaW4gbWFya3VwIGlzIHN0aWxsIHdvcmtpbmcgcHJvcGVybHkiKTsKKyAg
ICBkZWJ1ZygiVGVzdCAjNjogVmVyaWZ5IHRoYXQgdGhlIG9yaWdpbmFsIGNsaWNrIGV2ZW50IGxp
c3RlbmVyIGdvdCByZW1vdmVkIGFuZCBhIG5ldyBvbmUgYXR0YWNoZWQgaXMgYXR0YWNoZWQgdG8g
dGhlIHVzZSByb290IFNWR0VsZW1lbnRJbnN0YW5jZSIpOwogICAgIGRlYnVnKCIiKTsKIAogICAg
IHZlcmlmeUNsaWNrRXZlbnQoKTsKIAotICAgIC8vIFByZXBhcmUgZm9yIG5leHQgdGVzdAotICAg
IHJlY3RFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZXZlbnRIYW5kbGVyLCBm
YWxzZSk7Ci0gICAgdXNlRWxlbWVudC5pbnN0YW5jZVJvb3QuYWRkRXZlbnRMaXN0ZW5lcigiY2xp
Y2siLCBldmVudEhhbmRsZXIsIGZhbHNlKTsKKyAgICB1c2VFbGVtZW50Lmluc3RhbmNlUm9vdC5y
ZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsIGV2ZW50SGFuZGxlciwgZmFsc2UpOworICAgIGZp
cmVTaW11bGF0ZWRNb3VzZUNsaWNrRXZlbnQoImNoZWNrRXZlbnRMaXN0ZW5lck5vdFJlYWNoYWJs
ZSgpIiwgdXNlRWxlbWVudC5pbnN0YW5jZVJvb3QpOworICAgIGZpcmVTaW11bGF0ZWRNb3VzZUNs
aWNrRXZlbnQoImNoZWNrRXZlbnRMaXN0ZW5lck5vdFJlYWNoYWJsZSgpIiwgcmVjdEVsZW1lbnQp
OworICAgIHJlY3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZXZlbnRIYW5kbGVy
LCBmYWxzZSk7CiAKICAgICBmaXJlTW91c2VDbGlja0V2ZW50KCJldmVudFRlc3RTZXZlbigpIik7
CiB9CkBAIC0yNTgsMzAgKzI1OSwzMiBAQCBmdW5jdGlvbiBldmVudFRlc3RTaXgoKQogZnVuY3Rp
b24gZXZlbnRUZXN0U2V2ZW4oKQogewogICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVGVzdCAj
OTogVmVyaWZ5IHRoYXQgdGhlIG9yaWdpbmFsIGNsaWNrIGV2ZW50IGxpc3RlbmVyIGdvdCByZW1v
dmVkIGFuZCBhIG5ldyBvbmUgYXR0YWNoZWQgdG8gdGhlIHVzZSByb290IFNWR0VsZW1lbnRJbnN0
YW5jZSIpOworICAgIGRlYnVnKCJUZXN0ICM3OiBWZXJpZnkgdGhhdCB0aGUgcmVjcmVhdGluZyB0
aGUgb3JpZ2luYWwgY2xpY2sgZXZlbnQgbGlzdGVuZXIgZHluYW1pY2FsbHkgd29ya2VkIGFuZCB0
aGUgZXZlbnQgaXMgbm93IGRpc3BhdGNoZWQgdG8gdGhlIHJlZ3VsYXIgRE9NIik7CiAgICAgZGVi
dWcoIiIpOwogCi0gICAgdmVyaWZ5Q2xpY2tFdmVudCgpOworICAgIHZlcmlmeUNsaWNrRXZlbnRP
blJlZmVyZW5jZWQoKTsKIAogICAgIC8vIFByZXBhcmUgZm9yIG5leHQgdGVzdHMKICAgICBmaXJl
U2ltdWxhdGVkTW91c2VDbGlja0V2ZW50KCJldmVudFRlc3RFaWdodCgpIiwgdXNlRWxlbWVudC5p
bnN0YW5jZVJvb3QpOwogfQogCi1mdW5jdGlvbiBldmVudFRlc3RFaWdodCgpCitmdW5jdGlvbiBl
dmVudFRlc3RTZXZlbigpCiB7CiAgICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJUZXN0ICMxMDog
VmVyaWZ5IHRoYXQgdGhlIHNpbXVsYXRlZCBjbGljayBldmVudCBnb3QgZGlzcGF0Y2hlZCB0byB0
aGUgcmlnaHQgdGFyZ2V0Iik7CisgICAgZGVidWcoIlRlc3QgIzg6IFZlcmlmeSB0aGF0IHRoZSBz
aW11bGF0ZWQgY2xpY2sgZXZlbnQgZ290IGRpc3BhdGNoZWQgdG8gdGhlIHJpZ2h0IHRhcmdldCIp
OwogICAgIGRlYnVnKCIiKTsKIAogICAgIHZlcmlmeUNsaWNrRXZlbnQoKTsKIAogICAgIC8vIENs
ZWFudXAKICAgICB1c2VFbGVtZW50Lmluc3RhbmNlUm9vdC5yZW1vdmVFdmVudExpc3RlbmVyKCJj
bGljayIsIGV2ZW50SGFuZGxlciwgZmFsc2UpOworICAgIGZpcmVTaW11bGF0ZWRNb3VzZUNsaWNr
RXZlbnQoImNoZWNrRXZlbnRMaXN0ZW5lck5vdFJlYWNoYWJsZSgpIiwgdXNlRWxlbWVudC5pbnN0
YW5jZVJvb3QpOworICAgIGZpcmVTaW11bGF0ZWRNb3VzZUNsaWNrRXZlbnQoImNoZWNrRXZlbnRM
aXN0ZW5lck5vdFJlYWNoYWJsZSgpIiwgcmVjdEVsZW1lbnQpOwogCi0gICAgc3RvcEV2ZW50VGVz
dHMoKTsKKyAgICBmaW5pc2hUZXN0cygpOwogfQogCi1mdW5jdGlvbiBzdG9wRXZlbnRUZXN0cygp
CitmdW5jdGlvbiBmaW5pc2hUZXN0cygpCiB7CiAgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKIApAQCAtMjkyLDggKzI5NSw2IEBAIGZ1bmN0aW9uIHN0b3BFdmVudFRlc3RzKCkKICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQogICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CiB9Ci0KLWZpcmVNb3VzZU92ZXJFdmVudCgic3RhcnRFdmVudFRl
c3RzKCkiKTsKIDwvc2NyaXB0PgogCiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvY3Vz
dG9tL3VzZS1pbnN0YW5jZVJvb3QtZXZlbnQtbGlzdGVuZXItbGl2ZW5lc3MtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9jdXN0b20vdXNlLWluc3RhbmNlUm9vdC1l
dmVudC1saXN0ZW5lci1saXZlbmVzcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9zdmcvY3VzdG9tL3VzZS1pbnN0YW5jZVJvb3QtZXZlbnQtbGlzdGVuZXItbGl2ZW5l
c3MtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACitUZXN0IHBhc3NlZApJ
bmRleDogTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS91c2UtaW5zdGFuY2VSb290LWV2ZW50LWxpc3Rl
bmVyLWxpdmVuZXNzLnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9jdXN0b20v
dXNlLWluc3RhbmNlUm9vdC1ldmVudC1saXN0ZW5lci1saXZlbmVzcy54aHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL3N2Zy9jdXN0b20vdXNlLWluc3RhbmNlUm9vdC1ldmVudC1saXN0
ZW5lci1saXZlbmVzcy54aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MyBAQAorPD94bWwg
dmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJzdGFy
dFRlc3QoKSI+CisKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjEwMHB4IiBoZWln
aHQ9IjEwMHB4Ij4KKyAgPGRlZnM+CisgICAgICA8cmVjdCBpZD0idGFyZ2V0IiBmaWxsPSJncmVl
biIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiLz4KKyAgPC9kZWZzPgorICA8dXNlIGlkPSJ0ZXN0
IiB4bGluazpocmVmPSIjdGFyZ2V0Ii8+Cis8L3N2Zz4KKworPGRpdiBpZD0iY29uc29sZSI+VGVz
dCBmYWlsZWQ8L2Rpdj4KKworPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBldmVudEhhbmRs
ZXIoKQoreworICAgIHZhciBkaXZFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNv
bnNvbGUiKTsKKyAgICBkaXZFbGVtZW50LnRleHRDb250ZW50ID0gIlRlc3QgcGFzc2VkIjsKKwor
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gZmlyZVNpbXVsYXRlZE1vdXNl
Q2xpY2tFdmVudChldmVudFRhcmdldCkKK3sKKyAgICB2YXIgZXZlbnQgPSBkb2N1bWVudC5jcmVh
dGVFdmVudCgiTW91c2VFdmVudHMiKTsKKyAgICBldmVudC5pbml0TW91c2VFdmVudCgiY2xpY2si
LCB0cnVlLCB0cnVlLCBkb2N1bWVudC5kZWZhdWx0VmlldywgMSwgMCwgMCwgMCwgMCwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIDAsIG51bGwpOworICAgIGV2ZW50VGFyZ2V0LmRpc3BhdGNo
RXZlbnQoZXZlbnQpOworfQorCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgdmFyIHVzZUVs
ZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOworCisgICAgLy8gTm8tb3As
IGFzIG5vIGxpc3RlbmVyIGlzIG5vdCB5ZXQgcmVnaXN0ZXJlZAorICAgIGZpcmVTaW11bGF0ZWRN
b3VzZUNsaWNrRXZlbnQodXNlRWxlbWVudC5pbnN0YW5jZVJvb3QpOworCisgICAgLy8gQWRkIGxp
c3RlbmVyCisgICAgdXNlRWxlbWVudC5pbnN0YW5jZVJvb3QuYWRkRXZlbnRMaXN0ZW5lcigiY2xp
Y2siLCBldmVudEhhbmRsZXIsIGZhbHNlKTsKKworICAgIC8vIFNob3VsZCBmaXJlIGltbWVkaWF0
ZWx5IGFuZCBmaW5pc2ggdGhlIHRlc3QKKyAgICBmaXJlU2ltdWxhdGVkTW91c2VDbGlja0V2ZW50
KHVzZUVsZW1lbnQuaW5zdGFuY2VSb290KTsKK30KKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3Jlc291cmNlcy91c2UtaW5zdGFuY2VS
b290LWV2ZW50LWJ1YmJsaW5nLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9jdXN0
b20vcmVzb3VyY2VzL3VzZS1pbnN0YW5jZVJvb3QtZXZlbnQtYnViYmxpbmcuanMJKHJldmlzaW9u
IDUzNTE4KQorKysgTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9yZXNvdXJjZXMvdXNlLWluc3RhbmNl
Um9vdC1ldmVudC1idWJibGluZy5qcwkod29ya2luZyBjb3B5KQpAQCAtMzUsMTIgKzM1LDggQEAg
ZnVuY3Rpb24gZXZlbnRIYW5kbGVyKGV2dCwgbGFiZWwpIHsKICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoIm1zZyIsIGV4cGVjdGVkW2V2ZW50Q291bnRlcl0pOwogICAgICsrZXZlbnRDb3VudGVy
OwogCi0gICAgaWYgKGxhYmVsID09IGNvdW50ZXIpIHsKLSAgICAgICAgaWYgKGxhYmVsID09IHRl
c3RzKQotICAgICAgICAgICAgc2V0VGltZW91dCgiZmluaXNoVGVzdCgpIiwgMTAwKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgc2V0VGltZW91dCgibmV4dFRlc3QoKSIsIDEwMCk7Ci0gICAg
fQorICAgIGlmIChsYWJlbCA9PSBjb3VudGVyKQorICAgICAgICBzZXRUaW1lb3V0KGxhYmVsID09
IHRlc3RzID8gZmluaXNoVGVzdCA6IG5leHRUZXN0LCAwKTsKIH0KIAogZnVuY3Rpb24gZmluaXNo
VGVzdCgpCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3Jlc291cmNlcy91c2UtaW5zdGFu
Y2VSb290LWV2ZW50LWxpc3RlbmVycy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcv
Y3VzdG9tL3Jlc291cmNlcy91c2UtaW5zdGFuY2VSb290LWV2ZW50LWxpc3RlbmVycy5qcwkocmV2
aXNpb24gNTM1MTgpCisrKyBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3Jlc291cmNlcy91c2UtaW5z
dGFuY2VSb290LWV2ZW50LWxpc3RlbmVycy5qcwkod29ya2luZyBjb3B5KQpAQCAtMTgsNyArMTgs
NyBAQCBmdW5jdGlvbiBldmVudEhhbmRsZXIoZXZ0KQogICAgICAgICAgICAgZGVidWcoIlRlc3Qg
IiArIGNvdW50ZXIgKyAiIC8gIiArIHRlc3RzICsgIiBGQUlMRUQgKGV4cGVjdGVkOiAnIiArIGV4
cGVjdGVkICsgIicgYWN0dWFsOiAnIiArIGV2dC50eXBlICsgIicpIik7CiAgICAgfQogCi0gICAg
c2V0VGltZW91dChjb3VudGVyIDwgdGVzdHMgPyBkcml2ZVRlc3RzIDogZmluaXNoVGVzdCwgMTAw
KTsKKyAgICBzZXRUaW1lb3V0KGNvdW50ZXIgPCB0ZXN0cyA/IGRyaXZlVGVzdHMgOiBmaW5pc2hU
ZXN0LCAwKTsKIH0KIAogZnVuY3Rpb24gZmluaXNoVGVzdCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46970</attachid>
            <date>2010-01-19 20:15:13 -0800</date>
            <delta_ts>2010-01-19 20:40:19 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>UseStabilityFixes.diff</filename>
            <type>text/plain</type>
            <size>45872</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzUxOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTAgQEAKKzIwMTAtMDEtMTkgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJt
YW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgc3ZnL2N1c3RvbS91c2UtaW5zdGFuY2VSb290LWV2ZW50LWJ1YmJsaW5nLnhodG1sIGlz
IGZsYWtleQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzM4MzUKKworICAgICAgICBtb3VzZUV2ZW50IGZpcmVzIG11dGlwbGUgdGltZXMgaW4gc3ZnL2N1
c3RvbS91c2UtaW5zdGFuY2VSb290LWFzLWV2ZW50LXRhcmdldC54aHRtbAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI1MTkKKworICAgICAgICBUZXN0
OiBzdmcvY3VzdG9tL3VzZS1pbnN0YW5jZVJvb3QtZXZlbnQtbGlzdGVuZXItbGl2ZW5lc3MueGh0
bWwKKworICAgICAgICBTdGFiaWxpemUgPHVzZT4gc2NyaXB0aW5nIHN1cHBvcnQgLSB1c2UgdGVz
dHMgYXJlIHJlbGlhYmxlIG5vdyAodGVzdGVkIHVzaW5nIC0tcmVwZWFjaC1lYWNoIDUwIC0tcmFu
ZG9tIC1wKQorCisgICAgICAgIERvIG5vdCByZWNsb25lIHRyZWVzIGFueW1vcmUgYmVjYXVzZSBv
ZiBldmVudCBsaXN0ZW5lciBjaGFuZ2VzLCBpbnN0ZWFkIGtlZXAgY29ycmVzcG9uZGluZ0VsZW1l
bnQgJiBzaGFkb3dUcmVlRWxlbWVudAorICAgICAgICBzeW5jaHJvbml6ZWQgZm9yIGVhY2ggU1ZH
RWxlbWVudEluc3RhbmNlIC0gYW55IG11dGF0aW9ucyBvbiBhbnkgZXZlbnQgbGlzdGVuZXJzIGFy
ZSBsaXZlLCBhbmQgdGFrZSBpbW1lZGlhdGUgZWZmZWN0LAorICAgICAgICB3L28gaGF2aW5nIHRv
IHJlbHkgb24gYSByZWNsb25lIC0gdGhpcyB3YXMgdGhlIHJvb3Qgb2Ygc2V2ZXJhbCByYWNlIGNv
bmRpdGlvbnMgbWFraW5nIHRoZSA8dXNlPiB0ZXN0cyBmbGFrZXkuCisKKyAgICAgICAgRml4IFNW
R1VzZUVsZW1lbnQ6Omluc3RhbmNlUm9vdCgpIHRvIGZvcmNlIHNoYWRvdyB0cmVlIGNyZWF0aW9u
LCBldmVuIGlmIGl0IHdhcyBub3QgYXR0YWNoZWQgc28gZmFyIC0gd2UgY2FuJ3Qgd2FpdAorICAg
ICAgICBmb3IgZmluaXNoZWRQYXJzaW5nKCkgdG8gYmUgY2FsbGVkIHdoaWNoIHdvdWxkIHJlY2Fs
Y3VsYXRlIHRoZSBkb2N1bWVudCBzdHlsZSBhbmQgYXR0YWNoIHRoZSBzaGFkb3cgdHJlZSBhcyBy
ZXN1bHQuCisgICAgICAgIFRoaXMgaXMgbm93IG1hdGNoaW5nIE9wZXJhcyBiZWhhdmlvdXIuCisK
KyAgICAgICAgT3B0aW1pemUgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcigpIHRvIG5vdCBj
cmVhdGUgZXZlbnQgbGlzdGVuZXJzIGlmIHRoZSBzdXBwbGllZCBBdHRyaWJ1dGUgaXNOdWxsKCkg
LSBvdGhlcndoaXNlCisgICAgICAgIERPTSBjYWxscyBsaWtlIHJlbW92ZUF0dHJpYnV0ZSgib25j
bGljayIpIGNhdXNlIGEgdGVtcG9yYXJ5IEpTRXZlbnRMaXN0ZW5lciB0byBiZSBjcmVhdGVkLCBh
ZGRlZCB0byB0aGUgZXZlbnQgbGlzdGVuZXIKKyAgICAgICAgY2FjaGUgYW5kIHJlbW92ZWQgYWZ0
ZXJ3YXJkcy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcik6IFJldHVy
biBlYXJseSBpZiB0aGUgc3VwcGxpZWQgYXR0cmlidXRlIGlzIG51bGwgYXMgZGlzY3Vzc2VkIHdp
dGggR2VvZmZyZXkuCisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0ZW5lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKTogRGl0
dG8uCisgICAgICAgICogZG9tL05vZGUuY3BwOiBTeW5jaHJvbml6ZSBldmVudCBsaXN0ZW5lcnMg
d2l0aCBhbGwgZWxlbWVudCBpbnN0YW5jZXMsIGluc3RlYWQgb2YgbWFya2luZyB0aGUgdXNlIGVs
ZW1lbnRzIHRvIHJlY2xvbmUuCisgICAgICAgIChXZWJDb3JlOjppbnN0YW5jZXNGb3JTVkdFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnRyeUFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6YWRkRXZlbnRMaXN0ZW5lcik6IFdoZW4gYWRkaW5nIGEgbGlzdGVuZXIs
IGdldCBhIGxpc3Qgb2YgZWxlbWVudCBpbnN0YW5jZXMgYW5kIGFkZCBpdCB0aGVpciBhcyB3ZWxs
LgorICAgICAgICAoV2ViQ29yZTo6dHJ5UmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKTogRGl0dG8gZm9yIHJlbW92YWxzLCBi
dXQgd2l0aCBzcGVjaWFsIGxvZ2ljIGZvciBsaXN0ZW5lcnMgY3JlYXRlZCBmcm9tIG1hcmt1cCAo
c2VlIGNvbW1lbnRzKQorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50SW5zdGFuY2UuY3BwOiBDbGVh
bmVkIHVwLCByZW1vdmluZyB1bm5jZXNzYXJ5IGNoZWNrcyBvZiBjb3JyZXNwb25kaW5nRWxlbWVu
dCgpIC0gdGhlcmUgaXMgYW4gQVNTRVJUIGluIHRoZSBjdG9yLgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRWxlbWVudEluc3RhbmNlOjppbnZhbGlkYXRlQWxsSW5zdGFuY2VzT2ZFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5jZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50SW5zdGFuY2U6OmFkZEV2ZW50TGlzdGVu
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudEluc3RhbmNlOjpyZW1vdmVFdmVudExp
c3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5jZTo6cmVtb3ZlQWxs
RXZlbnRMaXN0ZW5lcnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudEluc3RhbmNlOjpl
dmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudEluc3RhbmNlOjpl
bnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNwcDog
Q2FsbCBkb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKSB0
byBmb3JjZSBzaGFkb3cgdHJlZSBjcmVhdGlvbiwganVzdCBsaWtlIENTU1N0eWxlRGVjbCB3b3Jr
cy4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6Omluc3RhbmNlUm9vdCk6CisKIDIw
MTAtMDEtMTkgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkIGJ1aWxkIGZpeC4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RXZl
bnRMaXN0ZW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRF
dmVudExpc3RlbmVyLmNwcAkocmV2aXNpb24gNTM1MTgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw5IEBA
IHN0YXRpYyBjb25zdCBTdHJpbmcmIGV2ZW50UGFyYW1ldGVyTmFtZSgKIFBhc3NSZWZQdHI8SlNM
YXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihOb2RlKiBub2Rl
LCBBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgQVNTRVJUKG5vZGUpOworICAgIEFTU0VSVChhdHRy
KTsKKyAgICBpZiAoYXR0ci0+aXNOdWxsKCkpCisgICAgICAgIHJldHVybiAwOwogCiAgICAgaW50
IGxpbmVOdW1iZXIgPSAxOwogICAgIFN0cmluZyBzb3VyY2VVUkw7CkBAIC03OSw2ICs4MiwxMCBA
QCBQYXNzUmVmUHRyPEpTTGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZUF0CiAgICAgaWYgKCFmcmFt
ZSkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICBBU1NFUlQoYXR0cik7CisgICAgaWYgKGF0dHIt
PmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gMDsKKwogICAgIGludCBsaW5lTnVtYmVyID0gMTsK
ICAgICBTdHJpbmcgc291cmNlVVJMOwogICAgIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHRFdmVudExpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCShyZXZpc2lvbiA1MzUxOCkKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYg
KzQ2LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFBhc3NSZWZQdHI8VjhMYXp5RXZlbnRMaXN0
ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihOb2RlKiBub2RlLCBBdHRyaWJ1dGUq
IGF0dHIpCiB7CiAgICAgQVNTRVJUKG5vZGUpOworICAgIEFTU0VSVChhdHRyKTsKKyAgICBpZiAo
YXR0ci0+aXNOdWxsKCkpCisgICAgICAgIHJldHVybiAwOworCiAgICAgaW50IGxpbmVOdW1iZXIg
PSAxOwogICAgIGludCBjb2x1bW5OdW1iZXIgPSAwOwogICAgIFN0cmluZyBzb3VyY2VVUkw7CkBA
IC03Niw2ICs4MCwxMSBAQCBQYXNzUmVmUHRyPFY4TGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZUF0
CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICBBU1NFUlQobm9kZSk7
CisgICAgQVNTRVJUKGF0dHIpOworICAgIGlmIChhdHRyLT5pc051bGwoKSkKKyAgICAgICAgcmV0
dXJuIDA7CisKICAgICBpbnQgbGluZU51bWJlciA9IDE7CiAgICAgaW50IGNvbHVtbk51bWJlciA9
IDA7CiAgICAgU3RyaW5nIHNvdXJjZVVSTDsKSW5kZXg6IFdlYkNvcmUvZG9tL05vZGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL05vZGUuY3BwCShyZXZpc2lvbiA1MzUxOCkKKysrIFdl
YkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMyLDQ5ICsyMzMyLDE1MyBA
QCB2b2lkIE5vZGU6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQogICAgIHNldERpZE1vdmVU
b05ld093bmVyRG9jdW1lbnRXYXNDYWxsZWQodHJ1ZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9p
ZCB1cGRhdGVTVkdFbGVtZW50SW5zdGFuY2VzQWZ0ZXJFdmVudExpc3RlbmVyQ2hhbmdlKE5vZGUq
IHJlZmVyZW5jZU5vZGUpCisjaWYgRU5BQkxFKFNWRykKK3N0YXRpYyBpbmxpbmUgSGFzaFNldDxT
VkdFbGVtZW50SW5zdGFuY2UqPiBpbnN0YW5jZXNGb3JTVkdFbGVtZW50KE5vZGUqIG5vZGUpCit7
CisgICAgSGFzaFNldDxTVkdFbGVtZW50SW5zdGFuY2UqPiBpbnN0YW5jZXM7CisgCisgICAgQVNT
RVJUKG5vZGUpOworICAgIGlmICghbm9kZS0+aXNTVkdFbGVtZW50KCkgfHwgbm9kZS0+c2hhZG93
VHJlZVJvb3ROb2RlKCkpCisgICAgICAgIHJldHVybiBIYXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5j
ZSo+KCk7CisKKyAgICBTVkdFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRWxlbWVu
dCo+KG5vZGUpOworICAgIGlmICghZWxlbWVudC0+aXNTdHlsZWQoKSkKKyAgICAgICAgcmV0dXJu
IEhhc2hTZXQ8U1ZHRWxlbWVudEluc3RhbmNlKj4oKTsKKworICAgIFNWR1N0eWxlZEVsZW1lbnQq
IHN0eWxlZEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdTdHlsZWRFbGVtZW50Kj4oZWxlbWVudCk7
CisgICAgQVNTRVJUKCFzdHlsZWRFbGVtZW50LT5pbnN0YW5jZVVwZGF0ZXNCbG9ja2VkKCkpOwor
CisgICAgcmV0dXJuIHN0eWxlZEVsZW1lbnQtPmluc3RhbmNlc0ZvckVsZW1lbnQoKTsKK30KKyNl
bmRpZgorCitzdGF0aWMgaW5saW5lIGJvb2wgdHJ5QWRkRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJn
ZXROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExp
c3RlbmVyPiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQoreworICAgIGlmICghdGFyZ2V0Tm9k
ZS0+RXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNl
Q2FwdHVyZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChEb2N1bWVudCogZG9j
dW1lbnQgPSB0YXJnZXROb2RlLT5kb2N1bWVudCgpKQorICAgICAgICBkb2N1bWVudC0+YWRkTGlz
dGVuZXJUeXBlSWZOZWVkZWQoZXZlbnRUeXBlKTsKKworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIE5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsK
ICNpZiAhRU5BQkxFKFNWRykKLSAgICBVTlVTRURfUEFSQU0ocmVmZXJlbmNlTm9kZSk7CisgICAg
cmV0dXJuIHRyeUFkZEV2ZW50TGlzdGVuZXIodGhpcywgZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNl
Q2FwdHVyZSk7CiAjZWxzZQotICAgIEFTU0VSVChyZWZlcmVuY2VOb2RlKTsKLSAgICBpZiAoIXJl
ZmVyZW5jZU5vZGUtPmlzU1ZHRWxlbWVudCgpKQotICAgICAgICByZXR1cm47CisgICAgSGFzaFNl
dDxTVkdFbGVtZW50SW5zdGFuY2UqPiBpbnN0YW5jZXMgPSBpbnN0YW5jZXNGb3JTVkdFbGVtZW50
KHRoaXMpOworICAgIGlmIChpbnN0YW5jZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdHJ5
QWRkRXZlbnRMaXN0ZW5lcih0aGlzLCBldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsK
IAotICAgIC8vIEVsZW1lbnRzIGxpdmluZyBpbnNpZGUgYSA8dXNlPiBzaGFkb3cgdHJlZSwgbmV2
ZXIgY2F1c2UgYW55IHVwZGF0ZXMhCi0gICAgaWYgKHJlZmVyZW5jZU5vZGUtPnNoYWRvd1RyZWVS
b290Tm9kZSgpKQotICAgICAgICByZXR1cm47CisgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxp
c3RlbmVyRm9yUmVndWxhclRyZWUgPSBsaXN0ZW5lcjsKKyAgICBSZWZQdHI8RXZlbnRMaXN0ZW5l
cj4gbGlzdGVuZXJGb3JTaGFkb3dUcmVlID0gbGlzdGVuZXJGb3JSZWd1bGFyVHJlZTsKIAotICAg
IC8vIFdlJ3JlIHBvc3NpYmx5IChhIGNoaWxkIG9mKSBhbiBlbGVtZW50IHRoYXQgaXMgcmVmZXJl
bmNlZCBieSBhIDx1c2U+IGNsaWVudAotICAgIC8vIElmIGFuIGV2ZW50IGxpc3RlbmVycyBjaGFu
Z2VzIG9uIGEgcmVmZXJlbmNlZCBlbGVtZW50LCB1cGRhdGUgYWxsIGluc3RhbmNlcy4KLSAgICBm
b3IgKE5vZGUqIG5vZGUgPSByZWZlcmVuY2VOb2RlOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50
Tm9kZSgpKSB7Ci0gICAgICAgIGlmICghbm9kZS0+aGFzSUQoKSB8fCAhbm9kZS0+aXNTVkdFbGVt
ZW50KCkpCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICAvLyBBZGQgZXZlbnQgbGlzdGVuZXIg
dG8gcmVndWxhciBET00gZWxlbWVudAorICAgIGlmICghdHJ5QWRkRXZlbnRMaXN0ZW5lcih0aGlz
LCBldmVudFR5cGUsIGxpc3RlbmVyRm9yUmVndWxhclRyZWUucmVsZWFzZSgpLCB1c2VDYXB0dXJl
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIFNWR0VsZW1lbnRJbnN0YW5jZTo6
aW52YWxpZGF0ZUFsbEluc3RhbmNlc09mRWxlbWVudChzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4o
bm9kZSkpOwotICAgICAgICBicmVhazsKKyAgICAvLyBBZGQgZXZlbnQgbGlzdGVuZXIgdG8gYWxs
IHNoYWRvdyB0cmVlIERPTSBlbGVtZW50IGluc3RhbmNlcworICAgIGNvbnN0IEhhc2hTZXQ8U1ZH
RWxlbWVudEluc3RhbmNlKj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGluc3RhbmNlcy5lbmQoKTsK
KyAgICBmb3IgKEhhc2hTZXQ8U1ZHRWxlbWVudEluc3RhbmNlKj46OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gaW5zdGFuY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBBU1NFUlQo
KCppdCktPnNoYWRvd1RyZWVFbGVtZW50KCkpOworICAgICAgICBBU1NFUlQoKCppdCktPmNvcnJl
c3BvbmRpbmdFbGVtZW50KCkgPT0gdGhpcyk7CisKKyAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVu
ZXI+IGxpc3RlbmVyRm9yQ3VycmVudFNoYWRvd1RyZWVFbGVtZW50ID0gbGlzdGVuZXJGb3JTaGFk
b3dUcmVlOworICAgICAgICBib29sIHJlc3VsdCA9IHRyeUFkZEV2ZW50TGlzdGVuZXIoKCppdCkt
PnNoYWRvd1RyZWVFbGVtZW50KCksIGV2ZW50VHlwZSwgbGlzdGVuZXJGb3JDdXJyZW50U2hhZG93
VHJlZUVsZW1lbnQucmVsZWFzZSgpLCB1c2VDYXB0dXJlKTsKKyAgICAgICAgQVNTRVJUX1VOVVNF
RChyZXN1bHQpOwogICAgIH0KKworICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiB9CiAKLWJvb2wg
Tm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFz
c1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorc3RhdGlj
IGlubGluZSBib29sIHRyeVJlbW92ZUV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0Tm9kZSwgY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29s
IHVzZUNhcHR1cmUpCiB7Ci0gICAgaWYgKCFFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcihl
dmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKSkKKyAgICBpZiAoIXRhcmdldE5vZGUtPkV2
ZW50VGFyZ2V0OjpyZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNh
cHR1cmUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gdGhpcy0+ZG9jdW1lbnQoKSkKLSAgICAgICAgZG9jdW1lbnQtPmFkZExpc3RlbmVyVHlw
ZUlmTmVlZGVkKGV2ZW50VHlwZSk7Ci0gICAgdXBkYXRlU1ZHRWxlbWVudEluc3RhbmNlc0FmdGVy
RXZlbnRMaXN0ZW5lckNoYW5nZSh0aGlzKTsKKyAgICAvLyBUT0RPOiBOb3RpZnkgRG9jdW1lbnQg
dGhhdCB0aGUgbGlzdGVuZXIgaGFzIHZhbmlzaGVkLiBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2Yg
YSBudW1iZXIgb2YKKyAgICAvLyBsaXN0ZW5lcnMgZm9yIGVhY2ggdHlwZSwgbm90IGp1c3QgYSBi
b29sIC0gc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzg2MQor
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIsIGJv
b2wgdXNlQ2FwdHVyZSkKIHsKLSAgICBpZiAoIUV2ZW50VGFyZ2V0OjpyZW1vdmVFdmVudExpc3Rl
bmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpKQorI2lmICFFTkFCTEUoU1ZHKQor
ICAgIHJldHVybiB0cnlSZW1vdmVFdmVudExpc3RlbmVyKHRoaXMsIGV2ZW50VHlwZSwgbGlzdGVu
ZXIsIHVzZUNhcHR1cmUpOworI2Vsc2UKKyAgICBIYXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5jZSo+
IGluc3RhbmNlcyA9IGluc3RhbmNlc0ZvclNWR0VsZW1lbnQodGhpcyk7CisgICAgaWYgKGluc3Rh
bmNlcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cnlSZW1vdmVFdmVudExpc3RlbmVyKHRo
aXMsIGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOworCisgICAgLy8gRXZlbnRUYXJn
ZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIgY3JlYXRlcyBhIFBhc3NSZWZQdHIgYXJvdW5kIHRoZSBn
aXZlbiBFdmVudExpc3RlbmVyCisgICAgLy8gb2JqZWN0IHdoZW4gY3JlYXRpbmcgYSB0ZW1wb3Jh
cnkgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIgb2JqZWN0IHVzZWQgdG8gbG9vayB1cCB0aGUKKyAg
ICAvLyBldmVudCBsaXN0ZW5lciBpbiBhIGNhY2hlLiBJZiB3ZSB3YW50IHRvIGJlIGFibGUgdG8g
Y2FsbCByZW1vdmVFdmVudExpc3RlbmVyKCkgbXVsdGlwbGUKKyAgICAvLyB0aW1lcyBvbiBkaWZm
ZXJlbnQgbm9kZXMsIHdlIGhhdmUgdG8gZGVsYXkgaXRzIGltbWVkaWF0ZSBkZXN0cnVjdGlvbiwg
d2hpY2ggd291bGQgaGFwcGVuCisgICAgLy8gYWZ0ZXIgdGhlIGZpcnN0IGNhbGwgYmVsb3cuCisg
ICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IHByb3RlY3RvcihsaXN0ZW5lcik7CisKKyAgICAvLyBS
ZW1vdmUgZXZlbnQgbGlzdGVuZXIgZnJvbSByZWd1bGFyIERPTSBlbGVtZW50CisgICAgaWYgKCF0
cnlSZW1vdmVFdmVudExpc3RlbmVyKHRoaXMsIGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1
cmUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB1cGRhdGVTVkdFbGVtZW50SW5zdGFu
Y2VzQWZ0ZXJFdmVudExpc3RlbmVyQ2hhbmdlKHRoaXMpOworICAgIC8vIFJlbW92ZSBldmVudCBs
aXN0ZW5lciBmcm9tIGFsbCBzaGFkb3cgdHJlZSBET00gZWxlbWVudCBpbnN0YW5jZXMKKyAgICBj
b25zdCBIYXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5jZSo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBp
bnN0YW5jZXMuZW5kKCk7CisgICAgZm9yIChIYXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5jZSo+Ojpj
b25zdF9pdGVyYXRvciBpdCA9IGluc3RhbmNlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
KyAgICAgICAgQVNTRVJUKCgqaXQpLT5jb3JyZXNwb25kaW5nRWxlbWVudCgpID09IHRoaXMpOwor
CisgICAgICAgIFNWR0VsZW1lbnQqIHNoYWRvd1RyZWVFbGVtZW50ID0gKCppdCktPnNoYWRvd1Ry
ZWVFbGVtZW50KCk7CisgICAgICAgIEFTU0VSVChzaGFkb3dUcmVlRWxlbWVudCk7CisKKyAgICAg
ICAgaWYgKHRyeVJlbW92ZUV2ZW50TGlzdGVuZXIoc2hhZG93VHJlZUVsZW1lbnQsIGV2ZW50VHlw
ZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgLy8gVGhpcyBjYXNlIGNhbiBvbmx5IGJlIGhpdCBmb3IgZXZlbnQgbGlzdGVuZXJzIGNyZWF0
ZWQgZnJvbSBtYXJrdXAKKyAgICAgICAgQVNTRVJUKGxpc3RlbmVyLT53YXNDcmVhdGVkRnJvbU1h
cmt1cCgpKTsKKworICAgICAgICAvLyBJZiB0aGUgZXZlbnQgbGlzdGVuZXIgJ2xpc3RlbmVyJyBo
YXMgYmVlbiBjcmVhdGVkIGZyb20gbWFya3VwIGFuZCBoYXMgYmVlbiBmaXJlZCBiZWZvcmUKKyAg
ICAgICAgLy8gdGhlbiBKU0xhenlFdmVudExpc3RlbmVyOjpwYXJzZUNvZGUoKSBoYXMgYmVlbiBj
YWxsZWQgYW5kIG1fanNGdW5jdGlvbiBvZiB0aGF0IGxpc3RlbmVyCisgICAgICAgIC8vIGhhcyBi
ZWVuIGNyZWF0ZWQgKHJlYWQ6IGl0J3Mgbm90IDAgYW55bW9yZSkuIER1cmluZyBzaGFkb3cgdHJl
ZSBjcmVhdGlvbiwgdGhlIGV2ZW50CisgICAgICAgIC8vIGxpc3RlbmVyIERPTSBhdHRyaWJ1dGUg
aGFzIGJlZW4gY2xvbmVkLCBhbmQgYW5vdGhlciBldmVudCBsaXN0ZW5lciBoYXMgYmVlbiBzZXR1
cCBpbgorICAgICAgICAvLyB0aGUgc2hhZG93IHRyZWUuIElmIHRoYXQgZXZlbnQgbGlzdGVuZXIg
aGFzIG5vdCBiZWVuIHVzZWQgeWV0LCBtX2pzRnVuY3Rpb24gaXMgc3RpbGwgMCwKKyAgICAgICAg
Ly8gYW5kIHRyeVJlbW92ZUV2ZW50TGlzdGVuZXIoKSBhYm92ZSB3aWxsIGZhaWwuIFdvcmsgYXJv
dW5kIHRoYXQgdmVyeSBzZWxkb20gcHJvYmxlbS4KKyAgICAgICAgRXZlbnRUYXJnZXREYXRhKiBk
YXRhID0gc2hhZG93VHJlZUVsZW1lbnQtPmV2ZW50VGFyZ2V0RGF0YSgpOworICAgICAgICBBU1NF
UlQoZGF0YSk7CisKKyAgICAgICAgRXZlbnRMaXN0ZW5lck1hcDo6aXRlcmF0b3IgcmVzdWx0ID0g
ZGF0YS0+ZXZlbnRMaXN0ZW5lck1hcC5maW5kKGV2ZW50VHlwZSk7CisgICAgICAgIEFTU0VSVChy
ZXN1bHQgIT0gZGF0YS0+ZXZlbnRMaXN0ZW5lck1hcC5lbmQoKSk7CisKKyAgICAgICAgRXZlbnRM
aXN0ZW5lclZlY3RvciogZW50cnkgPSByZXN1bHQtPnNlY29uZDsKKyAgICAgICAgQVNTRVJUKGVu
dHJ5KTsKKworICAgICAgICB1bnNpZ25lZCBpbnQgaW5kZXggPSAwOworICAgICAgICBib29sIGZv
dW5kTGlzdGVuZXIgPSBmYWxzZTsKKworICAgICAgICBFdmVudExpc3RlbmVyVmVjdG9yOjppdGVy
YXRvciBlbmQgPSBlbnRyeS0+ZW5kKCk7CisgICAgICAgIGZvciAoRXZlbnRMaXN0ZW5lclZlY3Rv
cjo6aXRlcmF0b3IgaXQgPSBlbnRyeS0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAg
ICAgICAgICBpZiAoISgqaXQpLmxpc3RlbmVyLT53YXNDcmVhdGVkRnJvbU1hcmt1cCgpKSB7Cisg
ICAgICAgICAgICAgICAgKytpbmRleDsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgZm91bmRMaXN0ZW5lciA9IHRydWU7CisgICAgICAgICAg
ICBlbnRyeS0+cmVtb3ZlKGluZGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisK
KyAgICAgICAgQVNTRVJUKGZvdW5kTGlzdGVuZXIpOworCisgICAgICAgIGlmIChlbnRyeS0+aXNF
bXB0eSgpKSB7ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgZGVsZXRlIGVudHJ5OworICAg
ICAgICAgICAgZGF0YS0+ZXZlbnRMaXN0ZW5lck1hcC5yZW1vdmUocmVzdWx0KTsKKyAgICAgICAg
fQorICAgIH0KKwogICAgIHJldHVybiB0cnVlOworI2VuZGlmCiB9CiAKIEV2ZW50VGFyZ2V0RGF0
YSogTm9kZTo6ZXZlbnRUYXJnZXREYXRhKCkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJ
bnN0YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNl
LmNwcAkocmV2aXNpb24gNTM1MTgpCisrKyBXZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMp
IDIwMDcsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgICAg
Q29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zOSwxMyArNDAsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBzdGF0aWMgV1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXIgaW5zdGFuY2VD
b3VudGVyKCJXZWJDb3JlU1ZHRWxlbWVudEluc3RhbmNlIik7CiAjZW5kaWYKIAotc3RhdGljIEV2
ZW50VGFyZ2V0RGF0YSYgZHVtbXlFdmVudFRhcmdldERhdGEoKQotewotICAgIERFRklORV9TVEFU
SUNfTE9DQUwoRXZlbnRUYXJnZXREYXRhLCBkdW1teUV2ZW50VGFyZ2V0RGF0YSwgKCkpOwotICAg
IGR1bW15RXZlbnRUYXJnZXREYXRhLmV2ZW50TGlzdGVuZXJNYXAuY2xlYXIoKTsKLSAgICByZXR1
cm4gZHVtbXlFdmVudFRhcmdldERhdGE7Ci19Ci0KIFNWR0VsZW1lbnRJbnN0YW5jZTo6U1ZHRWxl
bWVudEluc3RhbmNlKFNWR1VzZUVsZW1lbnQqIHVzZUVsZW1lbnQsIFBhc3NSZWZQdHI8U1ZHRWxl
bWVudD4gb3JpZ2luYWxFbGVtZW50KQogICAgIDogbV91c2VFbGVtZW50KHVzZUVsZW1lbnQpCiAg
ICAgLCBtX2VsZW1lbnQob3JpZ2luYWxFbGVtZW50KQpAQCAtOTUsMTAgKzg5LDEwIEBAIHZvaWQg
U1ZHRWxlbWVudEluc3RhbmNlOjphcHBlbmRDaGlsZChQYXMKIAogdm9pZCBTVkdFbGVtZW50SW5z
dGFuY2U6OmludmFsaWRhdGVBbGxJbnN0YW5jZXNPZkVsZW1lbnQoU1ZHRWxlbWVudCogZWxlbWVu
dCkKIHsKLSAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQtPmlzU3R5bGVkKCkpCisgICAgaWYg
KCFlbGVtZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoc3RhdGljX2Nhc3Q8U1ZHU3R5
bGVkRWxlbWVudCo+KGVsZW1lbnQpLT5pbnN0YW5jZVVwZGF0ZXNCbG9ja2VkKCkpCisgICAgaWYg
KGVsZW1lbnQtPmlzU3R5bGVkKCkgJiYgc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkRWxlbWVudCo+KGVs
ZW1lbnQpLT5pbnN0YW5jZVVwZGF0ZXNCbG9ja2VkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IEhhc2hTZXQ8U1ZHRWxlbWVudEluc3RhbmNlKj4gc2V0ID0gZWxlbWVudC0+aW5zdGFuY2VzRm9y
RWxlbWVudCgpOwpAQCAtMTE3LDMwICsxMTEsMjIgQEAgdm9pZCBTVkdFbGVtZW50SW5zdGFuY2U6
OmludmFsaWRhdGVBbGxJbgogCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBTVkdFbGVtZW50SW5z
dGFuY2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewotICAgIGlmIChTVkdFbGVt
ZW50KiBlbGVtZW50ID0gY29ycmVzcG9uZGluZ0VsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIGVs
ZW1lbnQtPmRvY3VtZW50KCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG1fZWxlbWVudC0+
ZG9jdW1lbnQoKTsKIH0KIAogYm9vbCBTVkdFbGVtZW50SW5zdGFuY2U6OmFkZEV2ZW50TGlzdGVu
ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5l
cj4gbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKLSAgICBpZiAoIWNvcnJlc3BvbmRpbmdF
bGVtZW50KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gY29ycmVzcG9uZGlu
Z0VsZW1lbnQoKS0+YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0
dXJlKTsKKyAgICByZXR1cm4gbV9lbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwg
bGlzdGVuZXIsIHVzZUNhcHR1cmUpOwogfQogCiBib29sIFNWR0VsZW1lbnRJbnN0YW5jZTo6cmVt
b3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0
ZW5lciogbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKLSAgICBpZiAoIWNvcnJlc3BvbmRp
bmdFbGVtZW50KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gY29ycmVzcG9u
ZGluZ0VsZW1lbnQoKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1
c2VDYXB0dXJlKTsKKyAgICByZXR1cm4gbV9lbGVtZW50LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2
ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOwogfQogCiB2b2lkIFNWR0VsZW1lbnRJbnN0
YW5jZTo6cmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKQogewotICAgIGlmICghY29ycmVzcG9uZGlu
Z0VsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNvcnJlc3BvbmRpbmdFbGVtZW50KCkt
PnJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCk7CisgICAgbV9lbGVtZW50LT5yZW1vdmVBbGxFdmVu
dExpc3RlbmVycygpOwogfQogCiBib29sIFNWR0VsZW1lbnRJbnN0YW5jZTo6ZGlzcGF0Y2hFdmVu
dChQYXNzUmVmUHRyPEV2ZW50PiBwcnBFdmVudCkKQEAgLTE2MCwxNCArMTQ2LDE3IEBAIGJvb2wg
U1ZHRWxlbWVudEluc3RhbmNlOjpkaXNwYXRjaEV2ZW50KFAKIAogRXZlbnRUYXJnZXREYXRhKiBT
VkdFbGVtZW50SW5zdGFuY2U6OmV2ZW50VGFyZ2V0RGF0YSgpCiB7Ci0gICAgcmV0dXJuIGNvcnJl
c3BvbmRpbmdFbGVtZW50KCkgPyBjb3JyZXNwb25kaW5nRWxlbWVudCgpLT5ldmVudFRhcmdldERh
dGEoKSA6IDA7CisgICAgcmV0dXJuIG1fZWxlbWVudC0+ZXZlbnRUYXJnZXREYXRhKCk7CiB9CiAK
IEV2ZW50VGFyZ2V0RGF0YSogU1ZHRWxlbWVudEluc3RhbmNlOjplbnN1cmVFdmVudFRhcmdldERh
dGEoKQogewotICAgIHJldHVybiAmZHVtbXlFdmVudFRhcmdldERhdGEoKTsgLy8gcmV0dXJuIHNv
bWV0aGluZywgc28gd2UgZG9uJ3QgY3Jhc2gKKyAgICAvLyBBdm9pZCBjcmFzaGluZyAtIHJldHVy
biBhIGRlZmF1bHQgZHVtbXkgdmFsdWUKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEV2ZW50VGFy
Z2V0RGF0YSwgZHVtbXlFdmVudFRhcmdldERhdGEsICgpKTsKKyAgICBkdW1teUV2ZW50VGFyZ2V0
RGF0YS5ldmVudExpc3RlbmVyTWFwLmNsZWFyKCk7CisgICAgcmV0dXJuICZkdW1teUV2ZW50VGFy
Z2V0RGF0YTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfQogCi0jZW5kaWYgLy8gRU5B
QkxFKFNWRykKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDUzNTE4
KQorKysgV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgw
LDEyICs4MCw4IEBAIFNWR0VsZW1lbnRJbnN0YW5jZSogU1ZHVXNlRWxlbWVudDo6aW5zdGEKICAg
ICAvLyBJZiB0aGVyZSBpcyBubyBlbGVtZW50IGluc3RhbmNlIHRyZWUsIGZvcmNlIGltbWVkaWF0
ZSBTVkdFbGVtZW50SW5zdGFuY2UgdHJlZQogICAgIC8vIGNyZWF0aW9uLCBhcyB3ZSBjYW4ndCB3
YWl0IGZvciB0aGUgbGF6eSBjcmVhdGlvbiB0byBoYXBwZW4gaWYgaWUuIEpTIHdhbnRzIHRvCiAg
ICAgLy8gYWNjZXNzIHRoZSBpbnN0YW5jZVJvb3Qgb2JqZWN0IHJpZ2h0IGFmdGVyIGNyZWF0aW5n
IHRoZSBlbGVtZW50IG9uLXRoZS1mbHkKLSAgICBpZiAoIW1fdGFyZ2V0RWxlbWVudEluc3RhbmNl
KSB7Ci0gICAgICAgIGlmIChSZW5kZXJTVkdTaGFkb3dUcmVlUm9vdENvbnRhaW5lciogc2hhZG93
Um9vdCA9IHN0YXRpY19jYXN0PFJlbmRlclNWR1NoYWRvd1RyZWVSb290Q29udGFpbmVyKj4ocmVu
ZGVyZXIoKSkpIHsKLSAgICAgICAgICAgIHNoYWRvd1Jvb3QtPm1hcmtTaGFkb3dUcmVlRm9yUmVj
cmVhdGlvbigpOwotICAgICAgICAgICAgc2hhZG93Um9vdC0+dXBkYXRlRnJvbUVsZW1lbnQoKTsK
LSAgICAgICAgfQotICAgIH0KKyAgICBpZiAoIW1fdGFyZ2V0RWxlbWVudEluc3RhbmNlKQorICAg
ICAgICBkb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsK
IAogICAgIHJldHVybiBtX3RhcmdldEVsZW1lbnRJbnN0YW5jZS5nZXQoKTsKIH0KSW5kZXg6IExh
eW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDUzNTE4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjggQEAKKzIwMTAtMDEtMTkgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1t
ZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgc3ZnL2N1c3RvbS91c2UtaW5zdGFuY2VSb290LWV2ZW50LWJ1YmJsaW5nLnhodG1s
IGlzIGZsYWtleQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzM4MzUKKworICAgICAgICBtb3VzZUV2ZW50IGZpcmVzIG11dGlwbGUgdGltZXMgaW4gc3Zn
L2N1c3RvbS91c2UtaW5zdGFuY2VSb290LWFzLWV2ZW50LXRhcmdldC54aHRtbAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI1MTkKKworICAgICAgICBT
dGFiaWxpemUgPHVzZT4gc2NyaXB0aW5nIHN1cHBvcnQgLSB1c2UgdGVzdHMgYXJlIHJlbGlhYmxl
IG5vdyAodGVzdGVkIHVzaW5nIC0tcmVwZWFjaC1lYWNoIDUwIC0tcmFuZG9tIC1wKQorICAgICAg
ICBSZWVuYWJsZSB0aGUgdGVzdHMgaW4gcXVlc3Rpb24gb24gZ3RrIC8gcXQgLyB3aW4uIG1hYyB3
YXMgb25seSBhZmZlY3RlZCBmcm9tIHRpbWUgdG8gdGltZSAoYWx3YXlzIHJlcHJvZHVjYWJsZSB1
c2luZyAtLXJlcGVhdC1lYWNoIDUwIHRob3VnaC4pCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsv
U2tpcHBlZDogVW5za2lwIHVzZS1pbnN0YW5jZVJvb3QtZXZlbnQtbGlzdGVuZXJzLnhodG1sIC8g
dXNlLWluc3RhbmNlUm9vdC1ldmVudC1idWJibGluZy54aHRtbCAvIHVzZS1pbnN0YW5jZVJvb3Qt
YXMtZXZlbnQtdGFyZ2V0LnhodG1sCisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDogVW5z
a2lwIHVzZS1pbnN0YW5jZVJvb3QtYXMtZXZlbnQtdGFyZ2V0LnhodG1sCisgICAgICAgICogcGxh
dGZvcm0vd2luL1NraXBwZWQ6IERpdHRvLgorICAgICAgICAqIHN2Zy9jdXN0b20vcmVzb3VyY2Vz
L3VzZS1pbnN0YW5jZVJvb3QtZXZlbnQtYnViYmxpbmcuanM6CisgICAgICAgIChldmVudEhhbmRs
ZXIpOiBObyBuZWVkIGFueW1vcmUgdG8gcmVseSBvbiBhIDEwMG1zIHRpbWVvdXQuCisgICAgICAg
ICogc3ZnL2N1c3RvbS9yZXNvdXJjZXMvdXNlLWluc3RhbmNlUm9vdC1ldmVudC1saXN0ZW5lcnMu
anM6CisgICAgICAgIChldmVudEhhbmRsZXIpOiBEaXR0by4KKyAgICAgICAgKiBzdmcvY3VzdG9t
L3VzZS1pbnN0YW5jZVJvb3QtYXMtZXZlbnQtdGFyZ2V0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBzdmcvY3VzdG9tL3VzZS1pbnN0YW5jZVJvb3QtYXMtZXZlbnQtdGFyZ2V0LnhodG1sOiBSZXdy
b3RlIHRlc3QgLSB3ZSBkb24ndCBuZWVkIHRvIHdvcmsgYXJvdW5kIHNoYWRvdyB0cmVlIHJlY2xv
bmUgaXNzdWVzIGFueW1vcmUuCisgICAgICAgICogc3ZnL2N1c3RvbS91c2UtaW5zdGFuY2VSb290
LWV2ZW50LWxpc3RlbmVyLWxpdmVuZXNzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
c3ZnL2N1c3RvbS91c2UtaW5zdGFuY2VSb290LWV2ZW50LWxpc3RlbmVyLWxpdmVuZXNzLnhodG1s
OiBBZGRlZC4KKwogMjAxMC0wMS0xNyAgSm9uIEhvbmV5Y3V0dCAgPGpob25leWN1dHRAYXBwbGUu
Y29tPgogCiAgICAgICAgIE1TQUE6IFRoZSBjaGlsZCA8b3B0aW9uPiBlbGVtZW50cyBvZiBhIG5v
bi1tdWx0aXBsZSA8c2VsZWN0PiBhcmUgbm90CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBl
ZAkocmV2aXNpb24gNTM1MTgpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAko
d29ya2luZyBjb3B5KQpAQCAtMzY5OSw3ICszNjk5LDYgQEAgc3ZnL2N1c3RvbS9zdmctZGlzYWxs
b3dlZC1pbi1kYXNoYm9hcmQtbwogc3ZnL2N1c3RvbS9zdmctZm9udHMtaW4tdGV4dC1jb250cm9s
cy5odG1sCiBzdmcvY3VzdG9tL3VzZS1lbGVtZW50SW5zdGFuY2UtZXZlbnQtdGFyZ2V0LnN2Zwog
c3ZnL2N1c3RvbS91c2UtZWxlbWVudEluc3RhbmNlLW1ldGhvZHMuc3ZnCi1zdmcvY3VzdG9tL3Vz
ZS1pbnN0YW5jZVJvb3QtZXZlbnQtbGlzdGVuZXJzLnhodG1sCiBzdmcvY3VzdG9tL3VzZS1vbi1z
eW1ib2wtaW5zaWRlLXBhdHRlcm4uc3ZnCiBzdmcvY3VzdG9tL3VzZS1zZXRBdHRyaWJ1dGUtY3Jh
c2guc3ZnCiAjICAgVGVzdHMgZ2VuZXJhdGluZyBuZXcgcmVzdWx0cwpAQCAtNTcxOCwxMSArNTcx
Nyw2IEBAIGZhc3QvZXZlbnRzL3RvdWNoCiAjIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzI0NDEKIGZhc3QvcGFyc2VyL3hodG1sLWNsb3NlLXdoaWxlLXBhcnNp
bmcueGh0bWwKIAotIyBCdWcgMzI1MTkgLSAgbW91c2VFdmVudCBmaXJlcyBtdXRpcGxlIHRpbWVz
IGluCi0jICAgICAgICAgICAgICBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3VzZS1pbnN0YW5jZVJv
b3QtYXMtZXZlbnQtdGFyZ2V0LnhodG1sCi0jIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMjUxOQotc3ZnL2N1c3RvbS91c2UtaW5zdGFuY2VSb290LWFzLWV2ZW50LXRh
cmdldC54aHRtbAotCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
MjYwNAogIyBGYWlscyBvbiB0aGUgcmVsZWFzZSBib3QgYmVjYXVzZSBvZiwgYXBwYXJlbnRseSwg
cm91ZGluZyBlcnJvcnMKIHN2Zy9jdXN0b20vcGF0aC1nZXRUb3RhbExlbmd0aC5zdmcKQEAgLTU3
NzksOCArNTc3MywzIEBAIHN2Zy9jdXN0b20vcmVsYXRpdmUtc2l6ZWQtZGVlcC1zaGFkb3ctdHIK
IHN2Zy9jdXN0b20vcmVsYXRpdmUtc2l6ZWQtc2hhZG93LXRyZWUtY29udGVudC54aHRtbAogc3Zn
L2N1c3RvbS90ZXh0LXh5LXVwZGF0ZXMtU1ZHTGlzdC54aHRtbAogc3ZnL3RleHQvc2VsZWN0aW9u
LWJhY2tncm91bmQtY29sb3IueGh0bWwKLQotIyBGbGFrZXkgU1ZHIHRlc3QsIHVzZXMgJ3NldFRp
bWVvdXQoMTAwKScKLSMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMz
ODM1Ci1zdmcvY3VzdG9tL3VzZS1pbnN0YW5jZVJvb3QtZXZlbnQtYnViYmxpbmcueGh0bWwKLQpJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCShyZXZpc2lvbiA1MzUxOCkKKysrIExheW91dFRl
c3RzL3BsYXRmb3JtL3F0L1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTUwNzIsMTEgKzUwNzIs
NiBAQCBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFyc2VkLWlmcmFtZS1keW5hCiAjIFRoZSBidWcg
d2l0aCB0aGlzIHRlc3QgaXMgdHJhY2tlZCB1bmRlciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzI1MjEKIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNv
bnRyb2wtYmFzaWMtZGVuaWVkLXByZWZsaWdodC1jYWNoZS5odG1sCiAKLSMgQnVnIDMyNTE5IC0g
IG1vdXNlRXZlbnQgZmlyZXMgbXV0aXBsZSB0aW1lcyBpbiAKLSMgICAgICAgICAgICAgIExheW91
dFRlc3RzL3N2Zy9jdXN0b20vdXNlLWluc3RhbmNlUm9vdC1hcy1ldmVudC10YXJnZXQueGh0bWwK
LSMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyNTE5Ci1zdmcvY3Vz
dG9tL3VzZS1pbnN0YW5jZVJvb3QtYXMtZXZlbnQtdGFyZ2V0LnhodG1sCi0KICMgTWlzc2luZyB2
YXJpYWJsZXM6CiAjIFNWR0FsdEdseXBoRWxlbWVudCwgU1ZHQW5pbWF0ZUVsZW1lbnQsIFNWR0Fu
aW1hdGVDb2xvckVsZW1lbnQsIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50CiAjIFNWR0ZvbnRF
bGVtZW50LCBTVkdHbHlwaEVsZW1lbnQsIFNWR01pc3NpbmdHbHlwaEVsZW1lbnQsIFNWR0ZvbnRG
YWNlRWxlbWVudCwgU1ZHRm9udEZhY2VTcmNFbGVtZW50CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4vU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
U2tpcHBlZAkocmV2aXNpb24gNTM1MTgpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tp
cHBlZAkod29ya2luZyBjb3B5KQpAQCAtNzIxLDExICs3MjEsNiBAQCBmYXN0L2V2ZW50cy90b3Vj
aAogaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELWdldFNWR0RvY3VtZW50LWlmcmFtZS5o
dG1sCiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtZ2V0U1ZHRG9jdW1lbnQtb2JqZWN0
Lmh0bWwKIAotIyBCdWcgMzI1MTkgLSAgbW91c2VFdmVudCBmaXJlcyBtdXRpcGxlIHRpbWVzIGlu
Ci0jICAgICAgICAgICAgICBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3VzZS1pbnN0YW5jZVJvb3Qt
YXMtZXZlbnQtdGFyZ2V0LnhodG1sCi0jIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zMjUxOQotc3ZnL2N1c3RvbS91c2UtaW5zdGFuY2VSb290LWFzLWV2ZW50LXRhcmdl
dC54aHRtbAotCiAjIGh0dHA6Ly93ZWJraXQub3JnL2IvMzI1MzIgLSBUaW1lIG91dAogaHR0cC90
ZXN0cy9uYXZpZ2F0aW9uL2R5bmFtaWMtaWZyYW1lLWR5bmFtaWMtZm9ybS1iYWNrLWVudHJ5Lmh0
bWwKIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9wYXJzZWQtaWZyYW1lLWR5bmFtaWMtZm9ybS1iYWNr
LWVudHJ5Lmh0bWwKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9jdXN0b20vdXNlLWluc3RhbmNlUm9v
dC1hcy1ldmVudC10YXJnZXQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3N2Zy9jdXN0b20vdXNlLWluc3RhbmNlUm9vdC1hcy1ldmVudC10YXJnZXQtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiA1MzUxOCkKKysrIExheW91dFRlc3RzL3N2Zy9jdXN0b20vdXNlLWluc3RhbmNl
Um9vdC1hcy1ldmVudC10YXJnZXQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3
ICszMiw3IEBAIFBBU1MgY3VycmVudEV2ZW50LnRhcmdldCA9PSBjdXJyZW50RXZlbnQKIFBBU1Mg
Y3VycmVudEV2ZW50LnRhcmdldC5jb3JyZXNwb25kaW5nRWxlbWVudCA9PSBjdXJyZW50RXZlbnQu
Y3VycmVudFRhcmdldC5jb3JyZXNwb25kaW5nRWxlbWVudCBpcyB0cnVlCiBQQVNTIGN1cnJlbnRF
dmVudC50YXJnZXQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQgPT0gY3VycmVudEV2ZW50LmN1cnJl
bnRUYXJnZXQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQgaXMgdHJ1ZQogCi1UZXN0ICMzOiBWZXJp
ZnkgdGhhdCBldmVudCBsaXN0ZW5lcnMgYXR0YWNoZWQgdG8gdGhlIHNoYWRvdyB0cmVlIGVsZW1l
bnRzIGFyZSBjb3BpZWQgd2hlbiB1c2UgcmVjbG9uZXMgdGhlIGludGVybmFsIHNoYWRvdyB0cmVl
CitUZXN0ICMzOiBWZXJpZnkgdGhhdCBldmVudHMgZGlzcGF0Y2hlZCBieSB0aGUgdXNlciBlbmQg
dXAgb24gdGhlIFNWR0VsZW1lbnRJbnN0YW5jZSBvYmplY3RzCiAKIFBBU1MgY3VycmVudEV2ZW50
LnRvU3RyaW5nKCkgaXMgIltvYmplY3QgTW91c2VFdmVudF0iCiBQQVNTIGN1cnJlbnRFdmVudC50
eXBlLnRvU3RyaW5nKCkgaXMgIm1vdXNlb3ZlciIKQEAgLTQ2LDM1ICs0Niw3IEBAIFBBU1MgY3Vy
cmVudEV2ZW50LnRhcmdldCA9PSBjdXJyZW50RXZlbnQKIFBBU1MgY3VycmVudEV2ZW50LnRhcmdl
dC5jb3JyZXNwb25kaW5nRWxlbWVudCA9PSBjdXJyZW50RXZlbnQuY3VycmVudFRhcmdldC5jb3Jy
ZXNwb25kaW5nRWxlbWVudCBpcyB0cnVlCiBQQVNTIGN1cnJlbnRFdmVudC50YXJnZXQuY29ycmVz
cG9uZGluZ1VzZUVsZW1lbnQgPT0gY3VycmVudEV2ZW50LmN1cnJlbnRUYXJnZXQuY29ycmVzcG9u
ZGluZ1VzZUVsZW1lbnQgaXMgdHJ1ZQogCi1UZXN0ICM0OiBWZXJpZnkgdGhhdCBldmVudHMgZGlz
cGF0Y2hlZCB0byB0aGUgcmVmZXJlbmNlZCBlbGVtZW50IGVuZCB1cCBvbiB0aGUgU1ZFbGVtZW50
SW5zdGFuY2Ugb2JqZWN0cwotCi1QQVNTIGN1cnJlbnRFdmVudC50b1N0cmluZygpIGlzICJbb2Jq
ZWN0IE1vdXNlRXZlbnRdIgotUEFTUyBjdXJyZW50RXZlbnQudHlwZS50b1N0cmluZygpIGlzICJt
b3VzZW92ZXIiCi1QQVNTIGN1cnJlbnRFdmVudC50YXJnZXQudG9TdHJpbmcoKSBpcyAiW29iamVj
dCBTVkdFbGVtZW50SW5zdGFuY2VdIgotUEFTUyBjdXJyZW50RXZlbnQuY3VycmVudFRhcmdldC50
b1N0cmluZygpIGlzICJbb2JqZWN0IFNWR0VsZW1lbnRJbnN0YW5jZV0iCi1QQVNTIGN1cnJlbnRF
dmVudC50YXJnZXQuY29ycmVzcG9uZGluZ0VsZW1lbnQgPT0gcmVjdEVsZW1lbnQgaXMgdHJ1ZQot
UEFTUyBjdXJyZW50RXZlbnQudGFyZ2V0LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50ID09IHVzZUVs
ZW1lbnQgaXMgdHJ1ZQotUEFTUyBjdXJyZW50RXZlbnQuY3VycmVudFRhcmdldC5jb3JyZXNwb25k
aW5nRWxlbWVudCA9PSByZWN0RWxlbWVudCBpcyB0cnVlCi1QQVNTIGN1cnJlbnRFdmVudC5jdXJy
ZW50VGFyZ2V0LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50ID09IHVzZUVsZW1lbnQgaXMgdHJ1ZQot
UEFTUyBjdXJyZW50RXZlbnQudGFyZ2V0ID09IGN1cnJlbnRFdmVudC5jdXJyZW50VGFyZ2V0IGlz
IHRydWUKLVBBU1MgY3VycmVudEV2ZW50LnRhcmdldC5jb3JyZXNwb25kaW5nRWxlbWVudCA9PSBj
dXJyZW50RXZlbnQuY3VycmVudFRhcmdldC5jb3JyZXNwb25kaW5nRWxlbWVudCBpcyB0cnVlCi1Q
QVNTIGN1cnJlbnRFdmVudC50YXJnZXQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQgPT0gY3VycmVu
dEV2ZW50LmN1cnJlbnRUYXJnZXQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQgaXMgdHJ1ZQotCi1U
ZXN0ICM1OiBWZXJpZnkgdGhhdCBldmVudCBsaXN0ZW5lcnMgYXR0YWNoZWQgdG8gdGhlIHJlZmVy
ZW5jZWQgZWxlbWVudHMgYXJlIGNvcGllZCB3aGVuIHVzZSByZWNsb25lcyB0aGUgaW50ZXJuYWwg
c2hhZG93IHRyZWUKLQotUEFTUyBjdXJyZW50RXZlbnQudG9TdHJpbmcoKSBpcyAiW29iamVjdCBN
b3VzZUV2ZW50XSIKLVBBU1MgY3VycmVudEV2ZW50LnR5cGUudG9TdHJpbmcoKSBpcyAibW91c2Vv
dmVyIgotUEFTUyBjdXJyZW50RXZlbnQudGFyZ2V0LnRvU3RyaW5nKCkgaXMgIltvYmplY3QgU1ZH
RWxlbWVudEluc3RhbmNlXSIKLVBBU1MgY3VycmVudEV2ZW50LmN1cnJlbnRUYXJnZXQudG9TdHJp
bmcoKSBpcyAiW29iamVjdCBTVkdFbGVtZW50SW5zdGFuY2VdIgotUEFTUyBjdXJyZW50RXZlbnQu
dGFyZ2V0LmNvcnJlc3BvbmRpbmdFbGVtZW50ID09IHJlY3RFbGVtZW50IGlzIHRydWUKLVBBU1Mg
Y3VycmVudEV2ZW50LnRhcmdldC5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCA9PSB1c2VFbGVtZW50
IGlzIHRydWUKLVBBU1MgY3VycmVudEV2ZW50LmN1cnJlbnRUYXJnZXQuY29ycmVzcG9uZGluZ0Vs
ZW1lbnQgPT0gcmVjdEVsZW1lbnQgaXMgdHJ1ZQotUEFTUyBjdXJyZW50RXZlbnQuY3VycmVudFRh
cmdldC5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCA9PSB1c2VFbGVtZW50IGlzIHRydWUKLVBBU1Mg
Y3VycmVudEV2ZW50LnRhcmdldCA9PSBjdXJyZW50RXZlbnQuY3VycmVudFRhcmdldCBpcyB0cnVl
Ci1QQVNTIGN1cnJlbnRFdmVudC50YXJnZXQuY29ycmVzcG9uZGluZ0VsZW1lbnQgPT0gY3VycmVu
dEV2ZW50LmN1cnJlbnRUYXJnZXQuY29ycmVzcG9uZGluZ0VsZW1lbnQgaXMgdHJ1ZQotUEFTUyBj
dXJyZW50RXZlbnQudGFyZ2V0LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50ID09IGN1cnJlbnRFdmVu
dC5jdXJyZW50VGFyZ2V0LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50IGlzIHRydWUKLQotVGVzdCAj
NjogVmVyaWZ5IHRoYXQgYSBjbGljayBldmVudCBnb3QgZGlzcGF0Y2hlZCB0byB0aGUgb3JpZ2lu
YWwgdHJlZSBhcyBkZWZpbmVkIGluIHRoZSBtYXJrdXAsIHdoZW4gc2VudCB0byB0aGUgJ3JlY3RF
bGVtZW50JworVGVzdCAjNDogVmVyaWZ5IHRoYXQgYSBjbGljayBldmVudCBnb3QgZGlzcGF0Y2hl
ZCB0byB0aGUgb3JpZ2luYWwgdHJlZSBhcyBkZWZpbmVkIGluIHRoZSBtYXJrdXAsIHdoZW4gc2Vu
dCB0byB0aGUgJ3JlY3RFbGVtZW50JwogCiBQQVNTIGN1cnJlbnRFdmVudC50b1N0cmluZygpIGlz
ICJbb2JqZWN0IE1vdXNlRXZlbnRdIgogUEFTUyBjdXJyZW50RXZlbnQudHlwZS50b1N0cmluZygp
IGlzICJjbGljayIKQEAgLTg0LDIxICs1Niw3IEBAIFBBU1MgY3VycmVudEV2ZW50LnRhcmdldCA9
PSByZWN0RWxlbWVudCAKIFBBU1MgY3VycmVudEV2ZW50LmN1cnJlbnRUYXJnZXQgPT0gcmVjdEVs
ZW1lbnQgaXMgdHJ1ZQogUEFTUyBjdXJyZW50RXZlbnQudGFyZ2V0ID09IGN1cnJlbnRFdmVudC5j
dXJyZW50VGFyZ2V0IGlzIHRydWUKIAotVGVzdCAjNzogVmVyaWZ5IHRoYXQgYSBjbGljayBldmVu
dCBnb3QgZGlzcGF0Y2hlZCB0byB0aGUgaW5zdGFuY2UgdHJlZSB3aGVuIHNlbnQgdG8gdGhlICd1
c2VFbGVtZW50Lmluc3RhbmNlUm9vdCcgd2l0aCBhbiBldmVudCBsaXN0ZW5lciBhdHRhY2hlZCB0
byAncmVjdEVsZW1lbnQnCi0KLVBBU1MgY3VycmVudEV2ZW50LnRvU3RyaW5nKCkgaXMgIltvYmpl
Y3QgTW91c2VFdmVudF0iCi1QQVNTIGN1cnJlbnRFdmVudC50eXBlLnRvU3RyaW5nKCkgaXMgImNs
aWNrIgotUEFTUyBjdXJyZW50RXZlbnQudGFyZ2V0LnRvU3RyaW5nKCkgaXMgIltvYmplY3QgU1ZH
RWxlbWVudEluc3RhbmNlXSIKLVBBU1MgY3VycmVudEV2ZW50LmN1cnJlbnRUYXJnZXQudG9TdHJp
bmcoKSBpcyAiW29iamVjdCBTVkdFbGVtZW50SW5zdGFuY2VdIgotUEFTUyBjdXJyZW50RXZlbnQu
dGFyZ2V0LmNvcnJlc3BvbmRpbmdFbGVtZW50ID09IHJlY3RFbGVtZW50IGlzIHRydWUKLVBBU1Mg
Y3VycmVudEV2ZW50LnRhcmdldC5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCA9PSB1c2VFbGVtZW50
IGlzIHRydWUKLVBBU1MgY3VycmVudEV2ZW50LmN1cnJlbnRUYXJnZXQuY29ycmVzcG9uZGluZ0Vs
ZW1lbnQgPT0gcmVjdEVsZW1lbnQgaXMgdHJ1ZQotUEFTUyBjdXJyZW50RXZlbnQuY3VycmVudFRh
cmdldC5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCA9PSB1c2VFbGVtZW50IGlzIHRydWUKLVBBU1Mg
Y3VycmVudEV2ZW50LnRhcmdldCA9PSBjdXJyZW50RXZlbnQuY3VycmVudFRhcmdldCBpcyB0cnVl
Ci1QQVNTIGN1cnJlbnRFdmVudC50YXJnZXQuY29ycmVzcG9uZGluZ0VsZW1lbnQgPT0gY3VycmVu
dEV2ZW50LmN1cnJlbnRUYXJnZXQuY29ycmVzcG9uZGluZ0VsZW1lbnQgaXMgdHJ1ZQotUEFTUyBj
dXJyZW50RXZlbnQudGFyZ2V0LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50ID09IGN1cnJlbnRFdmVu
dC5jdXJyZW50VGFyZ2V0LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50IGlzIHRydWUKLQotVGVzdCAj
ODogVmVyaWZ5IHRoYXQgdGhlIG9yaWdpbmFsIGNsaWNrIGV2ZW50IGxpc3RlbmVyIGRlZmluZWQg
aW4gbWFya3VwIGlzIHN0aWxsIHdvcmtpbmcgcHJvcGVybHkKK1Rlc3QgIzU6IFZlcmlmeSB0aGF0
IGEgY2xpY2sgZXZlbnQgZ290IGRpc3BhdGNoZWQgdG8gdGhlIGluc3RhbmNlIHRyZWUgd2hlbiBz
ZW50IHRvIHRoZSAndXNlRWxlbWVudC5pbnN0YW5jZVJvb3QnIHdpdGggYW4gZXZlbnQgbGlzdGVu
ZXIgYXR0YWNoZWQgdG8gJ3JlY3RFbGVtZW50JwogCiBQQVNTIGN1cnJlbnRFdmVudC50b1N0cmlu
ZygpIGlzICJbb2JqZWN0IE1vdXNlRXZlbnRdIgogUEFTUyBjdXJyZW50RXZlbnQudHlwZS50b1N0
cmluZygpIGlzICJjbGljayIKQEAgLTExMiw3ICs3MCw3IEBAIFBBU1MgY3VycmVudEV2ZW50LnRh
cmdldCA9PSBjdXJyZW50RXZlbnQKIFBBU1MgY3VycmVudEV2ZW50LnRhcmdldC5jb3JyZXNwb25k
aW5nRWxlbWVudCA9PSBjdXJyZW50RXZlbnQuY3VycmVudFRhcmdldC5jb3JyZXNwb25kaW5nRWxl
bWVudCBpcyB0cnVlCiBQQVNTIGN1cnJlbnRFdmVudC50YXJnZXQuY29ycmVzcG9uZGluZ1VzZUVs
ZW1lbnQgPT0gY3VycmVudEV2ZW50LmN1cnJlbnRUYXJnZXQuY29ycmVzcG9uZGluZ1VzZUVsZW1l
bnQgaXMgdHJ1ZQogCi1UZXN0ICM5OiBWZXJpZnkgdGhhdCB0aGUgb3JpZ2luYWwgY2xpY2sgZXZl
bnQgbGlzdGVuZXIgZ290IHJlbW92ZWQgYW5kIGEgbmV3IG9uZSBhdHRhY2hlZCB0byB0aGUgdXNl
IHJvb3QgU1ZHRWxlbWVudEluc3RhbmNlCitUZXN0ICM2OiBWZXJpZnkgdGhhdCB0aGUgb3JpZ2lu
YWwgY2xpY2sgZXZlbnQgbGlzdGVuZXIgZ290IHJlbW92ZWQgYW5kIGEgbmV3IG9uZSBhdHRhY2hl
ZCBpcyBhdHRhY2hlZCB0byB0aGUgdXNlIHJvb3QgU1ZHRWxlbWVudEluc3RhbmNlCiAKIFBBU1Mg
Y3VycmVudEV2ZW50LnRvU3RyaW5nKCkgaXMgIltvYmplY3QgTW91c2VFdmVudF0iCiBQQVNTIGN1
cnJlbnRFdmVudC50eXBlLnRvU3RyaW5nKCkgaXMgImNsaWNrIgpAQCAtMTI2LDcgKzg0LDcgQEAg
UEFTUyBjdXJyZW50RXZlbnQudGFyZ2V0ID09IGN1cnJlbnRFdmVudAogUEFTUyBjdXJyZW50RXZl
bnQudGFyZ2V0LmNvcnJlc3BvbmRpbmdFbGVtZW50ID09IGN1cnJlbnRFdmVudC5jdXJyZW50VGFy
Z2V0LmNvcnJlc3BvbmRpbmdFbGVtZW50IGlzIHRydWUKIFBBU1MgY3VycmVudEV2ZW50LnRhcmdl
dC5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCA9PSBjdXJyZW50RXZlbnQuY3VycmVudFRhcmdldC5j
b3JyZXNwb25kaW5nVXNlRWxlbWVudCBpcyB0cnVlCiAKLVRlc3QgIzEwOiBWZXJpZnkgdGhhdCB0
aGUgc2ltdWxhdGVkIGNsaWNrIGV2ZW50IGdvdCBkaXNwYXRjaGVkIHRvIHRoZSByaWdodCB0YXJn
ZXQKK1Rlc3QgIzg6IFZlcmlmeSB0aGF0IHRoZSBzaW11bGF0ZWQgY2xpY2sgZXZlbnQgZ290IGRp
c3BhdGNoZWQgdG8gdGhlIHJpZ2h0IHRhcmdldAogCiBQQVNTIGN1cnJlbnRFdmVudC50b1N0cmlu
ZygpIGlzICJbb2JqZWN0IE1vdXNlRXZlbnRdIgogUEFTUyBjdXJyZW50RXZlbnQudHlwZS50b1N0
cmluZygpIGlzICJjbGljayIKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9jdXN0b20vdXNlLWluc3Rh
bmNlUm9vdC1hcy1ldmVudC10YXJnZXQueGh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
c3ZnL2N1c3RvbS91c2UtaW5zdGFuY2VSb290LWFzLWV2ZW50LXRhcmdldC54aHRtbAkocmV2aXNp
b24gNTM1MTgpCisrKyBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3VzZS1pbnN0YW5jZVJvb3QtYXMt
ZXZlbnQtdGFyZ2V0LnhodG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDIzICs5LDM2IEBACiAgIDxk
ZWZzPgogICAgICAgPHJlY3QgaWQ9InRhcmdldCIgZmlsbD0icmVkIiB3aWR0aD0iMTAwIiBoZWln
aHQ9IjEwMCIgb25jbGljaz0iZXZlbnRIYW5kbGVyKGV2dCkiLz4KICAgPC9kZWZzPgotICA8dXNl
IGlkPSJ0ZXN0IiB4bGluazpocmVmPSJ1cmwoI3RhcmdldCkiLz4KKyAgPHVzZSBpZD0idGVzdCIg
eGxpbms6aHJlZj0iI3RhcmdldCIvPgogPC9zdmc+CiAKIDxwIGlkPSJkZXNjcmlwdGlvbiIvPgog
PGRpdiBpZD0iY29uc29sZSIvPgogCiA8c2NyaXB0PgotdmFyIGN1cnJlbnRFdmVudDsKLXZhciBu
ZXh0RXZlbnRUeXBlOwotdmFyIGV2ZW50Tm90aWZpY2F0aW9uOworLy8gU2V0dGluZyB1cCB0aGUg
dGVzdGNhc2UKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCit2YXIgdXNlRWxlbWVudCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7Cit2YXIgcmVjdEVsZW1lbnQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidGFyZ2V0Iik7CiAKKy8vIFN0YXJ0IHRlc3QgaW1tZWRpYXRlbHksIHRvIHNl
ZSB3aGV0ZXIgaW5zdGFuY2VSb290IGlzIGFscmVhZHkgYXZhaWxhYmxlLCBhcyBleHBlY3RlZC4K
K2Rlc2NyaXB0aW9uKCJUZXN0IFNWRyB1c2UgZWxlbWVudCBzcGVjaWZpYyBldmVudCBoYW5kbGlu
ZyB1c2luZyBTVkdFbGVtZW50SW5zdGFuY2U6ICIpOworZGVidWcoIid1c2VFbGVtZW50JyBpcyB0
aGUgb3JpZ2luYWwgdXNlIGVsZW1lbnQiKTsKK2RlYnVnKCIncmVjdEVsZW1lbnQnIGlzIHRoZSBv
cmlnaW5hbCBlbGVtZW50IHdoaWNoIGdldHMgY2xvbmVkIGJ5IHRoZSB1c2UgZWxlbWVudCIpOwor
ZXZlbnRUZXN0T25lKCk7CisKKy8vIEhlbHBlciBmdW5jdGlvbnMKIGZ1bmN0aW9uIGV2ZW50SGFu
ZGxlcihldnQpCiB7Ci0gICAgaWYgKGV2dC50eXBlICE9IG5leHRFdmVudFR5cGUpCisgICAgaWYg
KGV2dC50eXBlICE9IG5leHRFdmVudFR5cGUpIHsKKyAgICAgICAgZGVidWcoIlJFQ0VJVkVEIFVO
RVhQRUNURUQgRVZFTlQhIHNob3VsZEJlPSciICsgbmV4dEV2ZW50VHlwZSArICInIHdhcz0nIiAr
IGV2dC50eXBlICsgIiciKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGN1cnJlbnRF
dmVudCA9IGV2dDsKKyAgICBuZXh0RXZlbnRUeXBlID0gIm5vdCB5ZXQgc2V0IjsKICAgICBldmFs
KGV2ZW50Tm90aWZpY2F0aW9uKTsKIH0KIApAQCAtMzUsOCArNDgsMTIgQEAgZnVuY3Rpb24gZmly
ZU1vdXNlT3ZlckV2ZW50KG5ld0V2ZW50Tm90aQogICAgIG5leHRFdmVudFR5cGUgPSAibW91c2Vv
dmVyIjsKICAgICBldmVudE5vdGlmaWNhdGlvbiA9IG5ld0V2ZW50Tm90aWZpY2F0aW9uOwogCi0g
ICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikKLSAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oNTAsIDUwKTsKKyAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygy
MDAsIDIwMCk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyg1MCwgNTApOwor
ICAgICAgICB9LCAwKTsKKyAgICB9CiB9CiAKIGZ1bmN0aW9uIGZpcmVNb3VzZUNsaWNrRXZlbnQo
bmV3RXZlbnROb3RpZmljYXRpb24pCkBAIC00NiwxNiArNjMsMTggQEAgZnVuY3Rpb24gZmlyZU1v
dXNlQ2xpY2tFdmVudChuZXdFdmVudE5vdAogICAgIGV2ZW50Tm90aWZpY2F0aW9uID0gbmV3RXZl
bnROb3RpZmljYXRpb247CiAKICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Ci0gICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDUwLCA1MCk7Ci0gICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlRG93bigpOwotICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyg1
MCwgNTApOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgIH0sIDApOwogICAgIH0KIH0KIAotZnVu
Y3Rpb24gZmlyZVNpbXVsYXRlZE1vdXNlQ2xpY2tFdmVudChuZXdFdmVudE5vdGlmaWNhdGlvbiwg
ZXZlbnRUYXJnZXQpCitmdW5jdGlvbiBmaXJlU2ltdWxhdGVkTW91c2VPdmVyRXZlbnQobmV3RXZl
bnROb3RpZmljYXRpb24sIGV2ZW50VGFyZ2V0KQogewogICAgIGN1cnJlbnRFdmVudCA9IHVuZGVm
aW5lZDsKLSAgICBuZXh0RXZlbnRUeXBlID0gImNsaWNrIjsKKyAgICBuZXh0RXZlbnRUeXBlID0g
Im1vdXNlb3ZlciI7CiAgICAgZXZlbnROb3RpZmljYXRpb24gPSBuZXdFdmVudE5vdGlmaWNhdGlv
bjsKIAogICAgIHZhciBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50cyIp
OwpAQCAtNjQsMTEgKzgzLDE3IEBAIGZ1bmN0aW9uIGZpcmVTaW11bGF0ZWRNb3VzZUNsaWNrRXZl
bnQobmUKICAgICBldmVudFRhcmdldC5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKIH0KIAotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CitmdW5jdGlvbiBmaXJlU2ltdWxhdGVkTW91c2VDbGlja0V2ZW50KG5ld0V2
ZW50Tm90aWZpY2F0aW9uLCBldmVudFRhcmdldCkKK3sKKyAgICBjdXJyZW50RXZlbnQgPSB1bmRl
ZmluZWQ7CisgICAgbmV4dEV2ZW50VHlwZSA9ICJjbGljayI7CisgICAgZXZlbnROb3RpZmljYXRp
b24gPSBuZXdFdmVudE5vdGlmaWNhdGlvbjsKIAotdmFyIHVzZUVsZW1lbnQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGVzdCIpOwotdmFyIHJlY3RFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRhcmdldCIpOworICAgIHZhciBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50
KCJNb3VzZUV2ZW50cyIpOworICAgIGV2ZW50LmluaXRNb3VzZUV2ZW50KG5leHRFdmVudFR5cGUs
IHRydWUsIHRydWUsIGRvY3VtZW50LmRlZmF1bHRWaWV3LCAxLCAwLCAwLCAwLCAwLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCwgbnVsbCk7CisKKyAgICBldmVudFRhcmdldC5kaXNwYXRj
aEV2ZW50KGV2ZW50KTsKK30KIAogZnVuY3Rpb24gdmVyaWZ5RXZlbnQoZXZ0U3RyaW5nLCB0YXJn
ZXRTdHJpbmcsIGN1cnJlbnRUYXJnZXRTdHJpbmcpCiB7CkBAIC0xMTMsMzMgKzEzOCw0MSBAQCBm
dW5jdGlvbiB2ZXJpZnlDbGlja0V2ZW50T25SZWZlcmVuY2VkKCkKICAgICBzaG91bGRCZVRydWUo
ImN1cnJlbnRFdmVudC50YXJnZXQgPT0gY3VycmVudEV2ZW50LmN1cnJlbnRUYXJnZXQiKTsKIH0K
IAotZGVzY3JpcHRpb24oIlRlc3QgU1ZHIHVzZSBlbGVtZW50IHNwZWNpZmljIGV2ZW50IGhhbmRs
aW5nIHVzaW5nIFNWR0VsZW1lbnRJbnN0YW5jZTogIik7Ci1kZWJ1ZygiJ3VzZUVsZW1lbnQnIGlz
IHRoZSBvcmlnaW5hbCB1c2UgZWxlbWVudCIpOwotZGVidWcoIidyZWN0RWxlbWVudCcgaXMgdGhl
IG9yaWdpbmFsIGVsZW1lbnQgd2hpY2ggZ2V0cyBjbG9uZWQgYnkgdGhlIHVzZSBlbGVtZW50Iik7
CitmdW5jdGlvbiBjaGVja0V2ZW50TGlzdGVuZXJOb3RSZWFjaGFibGUoKQoreworICAgIGRlYnVn
KCIiKTsKKyAgICBkZWJ1ZygiWU9VIFNIT1VMRCBOT1QgU0VFIFRISVMgVEVYVC4gT1RIRVJXSElT
RSBSRU1PVklORyBFVkVOVCBMSVNURU5FUlMgRkFJTEVEISIpOworICAgIGRlYnVnKCIiKTsKK30K
IAotZGVidWcoIiIpOwotZGVidWcoIlRlc3QgIzE6IFZlcmlmeSB0aGF0IHRoZSB1c2UgZWxlbWVu
dCBhbmQgdGhlIGNvbnRhaW5lZCBTVkdFbGVtZW50SW5zdGFuY2Ugb2JqZWN0cyBhcmUgdmFsaWQi
KTsKLWRlYnVnKCIiKTsKKy8vIEV2ZW50IHRlc3Qgc2VjdGlvbnMKK2Z1bmN0aW9uIGV2ZW50VGVz
dE9uZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0ICMxOiBWZXJpZnkgdGhh
dCB0aGUgdXNlIGVsZW1lbnQgYW5kIHRoZSBjb250YWluZWQgU1ZHRWxlbWVudEluc3RhbmNlIG9i
amVjdHMgYXJlIHZhbGlkIik7CisgICAgZGVidWcoIiIpOwogCi1zaG91bGRCZUVxdWFsVG9TdHJp
bmcoInVzZUVsZW1lbnQudG9TdHJpbmcoKSIsICJbb2JqZWN0IFNWR1VzZUVsZW1lbnRdIik7Ci1z
aG91bGRCZUVxdWFsVG9TdHJpbmcoInVzZUVsZW1lbnQuaW5zdGFuY2VSb290LnRvU3RyaW5nKCki
LCAiW29iamVjdCBTVkdFbGVtZW50SW5zdGFuY2VdIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJ1c2VFbGVtZW50LnRvU3RyaW5nKCkiLCAiW29iamVjdCBTVkdVc2VFbGVtZW50XSIpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidXNlRWxlbWVudC5pbnN0YW5jZVJvb3QudG9TdHJp
bmcoKSIsICJbb2JqZWN0IFNWR0VsZW1lbnRJbnN0YW5jZV0iKTsKIAotc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJ1c2VFbGVtZW50Lmluc3RhbmNlUm9vdC5jb3JyZXNwb25kaW5nRWxlbWVudC50b1N0
cmluZygpIiwgIltvYmplY3QgU1ZHUmVjdEVsZW1lbnRdIik7Ci1zaG91bGRCZVRydWUoInVzZUVs
ZW1lbnQuaW5zdGFuY2VSb290LmNvcnJlc3BvbmRpbmdFbGVtZW50ID09IHJlY3RFbGVtZW50Iik7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ1c2VFbGVtZW50Lmluc3RhbmNlUm9vdC5jb3Jy
ZXNwb25kaW5nRWxlbWVudC50b1N0cmluZygpIiwgIltvYmplY3QgU1ZHUmVjdEVsZW1lbnRdIik7
CisgICAgc2hvdWxkQmVUcnVlKCJ1c2VFbGVtZW50Lmluc3RhbmNlUm9vdC5jb3JyZXNwb25kaW5n
RWxlbWVudCA9PSByZWN0RWxlbWVudCIpOwogCi1zaG91bGRCZUVxdWFsVG9TdHJpbmcoInVzZUVs
ZW1lbnQuaW5zdGFuY2VSb290LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50LnRvU3RyaW5nKCkiLCAi
W29iamVjdCBTVkdVc2VFbGVtZW50XSIpOwotc2hvdWxkQmVUcnVlKCJ1c2VFbGVtZW50Lmluc3Rh
bmNlUm9vdC5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCA9PSB1c2VFbGVtZW50Iik7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJ1c2VFbGVtZW50Lmluc3RhbmNlUm9vdC5jb3JyZXNwb25kaW5n
VXNlRWxlbWVudC50b1N0cmluZygpIiwgIltvYmplY3QgU1ZHVXNlRWxlbWVudF0iKTsKKyAgICBz
aG91bGRCZVRydWUoInVzZUVsZW1lbnQuaW5zdGFuY2VSb290LmNvcnJlc3BvbmRpbmdVc2VFbGVt
ZW50ID09IHVzZUVsZW1lbnQiKTsKIAotc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2YgdXNl
RWxlbWVudC5hZGRFdmVudExpc3RlbmVyIiwgImZ1bmN0aW9uIik7Ci1zaG91bGRCZUVxdWFsVG9T
dHJpbmcoInR5cGVvZiB1c2VFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIiLCAiZnVuY3Rpb24i
KTsKLXNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIHVzZUVsZW1lbnQuZGlzcGF0Y2hFdmVu
dCIsICJmdW5jdGlvbiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIHVzZUVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lciIsICJmdW5jdGlvbiIpOworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygidHlwZW9mIHVzZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciIsICJmdW5jdGlv
biIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidHlwZW9mIHVzZUVsZW1lbnQuZGlzcGF0
Y2hFdmVudCIsICJmdW5jdGlvbiIpOwogCi0vLyBTcGVjOiBBbiBlbGVtZW50IGFuZCBhbGwgaXRz
IGNvcnJlc3BvbmRpbmcgU1ZHRWxlbWVudEluc3RhbmNlIG9iamVjdHMgc2hhcmUgYW4gZXZlbnQK
LS8vIGxpc3RlbmVyIGxpc3QuIFRoZSBjdXJyZW50VGFyZ2V0IGF0dHJpYnV0ZSBvZiB0aGUgZXZl
bnQgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRocm91Z2gKLS8vIHdoaWNoIG9iamVjdCBhbiBl
dmVudCBsaXN0ZW5lciB3YXMgaW52b2tlZC4KLXVzZUVsZW1lbnQuaW5zdGFuY2VSb290LmFkZEV2
ZW50TGlzdGVuZXIoIm1vdXNlb3ZlciIsIGV2ZW50SGFuZGxlciwgZmFsc2UpOworICAgIC8vIFNw
ZWM6IEFuIGVsZW1lbnQgYW5kIGFsbCBpdHMgY29ycmVzcG9uZGluZyBTVkdFbGVtZW50SW5zdGFu
Y2Ugb2JqZWN0cyBzaGFyZSBhbiBldmVudAorICAgIC8vIGxpc3RlbmVyIGxpc3QuIFRoZSBjdXJy
ZW50VGFyZ2V0IGF0dHJpYnV0ZSBvZiB0aGUgZXZlbnQgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5l
IHRocm91Z2gKKyAgICAvLyB3aGljaCBvYmplY3QgYW4gZXZlbnQgbGlzdGVuZXIgd2FzIGludm9r
ZWQuCisgICAgdXNlRWxlbWVudC5pbnN0YW5jZVJvb3QuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vv
dmVyIiwgZXZlbnRIYW5kbGVyLCBmYWxzZSk7CisgICAgZmlyZU1vdXNlT3ZlckV2ZW50KCJldmVu
dFRlc3RUd28oKSIpOworfQogCi1mdW5jdGlvbiBzdGFydEV2ZW50VGVzdHMoKQorZnVuY3Rpb24g
ZXZlbnRUZXN0VHdvKCkKIHsKICAgICBkZWJ1ZygiIik7CiAgICAgZGVidWcoIlRlc3QgIzI6IFZl
cmlmeSB0aGF0IGV2ZW50cyBkaXNwYXRjaGVkIHRvIHRoZSBTVkdFbGVtZW50SW5zdGFuY2Ugb2Jq
ZWN0cyBoYXZlIGNvcnJlY3QgdGFyZ2V0IHByb3BlcnR5IHZhbHVlcyIpOwpAQCAtMTU1LDEwMiAr
MTg4LDcwIEBAIGZ1bmN0aW9uIHN0YXJ0RXZlbnRUZXN0cygpCiAgICAgLy8gcmVndWxhciB0cmVl
IHRvIHRoZSByb290IGVsZW1lbnQgaW4gYnViYmxpbmcgcGhhc2UuCiAgICAgdmVyaWZ5TW91c2VP
dmVyRXZlbnQoKTsKIAotICAgIC8vIFByZXBhcmUgZm9yIG5leHQgdGVzdAotICAgIHVzZUVsZW1l
bnQuaW5zdGFuY2VSb290LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlb3ZlciIsIGV2ZW50SGFu
ZGxlciwgZmFsc2UpOwotICAgIHVzZUVsZW1lbnQuaW5zdGFuY2VSb290LmFkZEV2ZW50TGlzdGVu
ZXIoIm1vdXNlb3ZlciIsIGV2ZW50SGFuZGxlciwgZmFsc2UpOwotCi0gICAgLy8gQ2F1c2VzIHN2
Z0F0dHJpYnV0ZUNoYW5nZWQoKSBsb2dpYyB0byByZWNsb25lIHRoZSBzaGFkb3cgdHJlZQotICAg
IC8vIElmICdUZXN0ICMzJyBpcyBub3QgZXhlY3V0ZWQsIHRoZW4gaXQgZGlkbid0IHByb3Blcmx5
IHJlY2xvbmUgdGhlIGV2ZW50IGxpc3RlbmVycy4KLSAgICB1c2VFbGVtZW50Lmluc3RhbmNlUm9v
dC5jb3JyZXNwb25kaW5nRWxlbWVudC5zZXRBdHRyaWJ1dGUoIngiLCB1c2VFbGVtZW50Lmluc3Rh
bmNlUm9vdC5jb3JyZXNwb25kaW5nRWxlbWVudC5nZXRBdHRyaWJ1dGUoIngiKSk7Ci0KLSAgICBm
aXJlTW91c2VPdmVyRXZlbnQoImV2ZW50VGVzdE9uZSgpIik7Ci19Ci0KLWZ1bmN0aW9uIGV2ZW50
VGVzdE9uZSgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJUZXN0ICMzOiBWZXJpZnkg
dGhhdCBldmVudCBsaXN0ZW5lcnMgYXR0YWNoZWQgdG8gdGhlIHNoYWRvdyB0cmVlIGVsZW1lbnRz
IGFyZSBjb3BpZWQgd2hlbiB1c2UgcmVjbG9uZXMgdGhlIGludGVybmFsIHNoYWRvdyB0cmVlIik7
Ci0gICAgZGVidWcoIiIpOwotCi0gICAgLy8gU3BlYzogSWYgZXZlbnQgYXR0cmlidXRlcyBhcmUg
YXNzaWduZWQgdG8gcmVmZXJlbmNlZCBlbGVtZW50cywgdGhlbiB0aGUgYWN0dWFsIHRhcmdldCBm
b3IgdGhlIGV2ZW50IHdpbGwgYmUgdGhlCi0gICAgLy8gU1ZHRWxlbWVudEluc3RhbmNlIG9iamVj
dCB3aXRoaW4gdGhlICJpbnN0YW5jZSB0cmVlIiBjb3JyZXNwb25kaW5nIHRvIHRoZSBnaXZlbiBy
ZWZlcmVuY2VkIGVsZW1lbnQuCi0gICAgdmVyaWZ5TW91c2VPdmVyRXZlbnQoKTsKLQotICAgIC8v
IFByZXBhcmUgZm9yIG5leHQgdGVzdAogICAgIHVzZUVsZW1lbnQuaW5zdGFuY2VSb290LnJlbW92
ZUV2ZW50TGlzdGVuZXIoIm1vdXNlb3ZlciIsIGV2ZW50SGFuZGxlciwgZmFsc2UpOworICAgIGZp
cmVTaW11bGF0ZWRNb3VzZU92ZXJFdmVudCgiY2hlY2tFdmVudExpc3RlbmVyTm90UmVhY2hhYmxl
KCkiLCB1c2VFbGVtZW50Lmluc3RhbmNlUm9vdCk7CisgICAgZmlyZVNpbXVsYXRlZE1vdXNlT3Zl
ckV2ZW50KCJjaGVja0V2ZW50TGlzdGVuZXJOb3RSZWFjaGFibGUoKSIsIHJlY3RFbGVtZW50KTsK
ICAgICByZWN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLCBldmVudEhhbmRs
ZXIsIGZhbHNlKTsKIAotICAgIGZpcmVNb3VzZU92ZXJFdmVudCgiZXZlbnRUZXN0VHdvKCkiKTsK
LX0KLQotZnVuY3Rpb24gZXZlbnRUZXN0VHdvKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVi
dWcoIlRlc3QgIzQ6IFZlcmlmeSB0aGF0IGV2ZW50cyBkaXNwYXRjaGVkIHRvIHRoZSByZWZlcmVu
Y2VkIGVsZW1lbnQgZW5kIHVwIG9uIHRoZSBTVkVsZW1lbnRJbnN0YW5jZSBvYmplY3RzIik7Ci0g
ICAgZGVidWcoIiIpOwotCi0gICAgdmVyaWZ5TW91c2VPdmVyRXZlbnQoKTsKLQotICAgIC8vIFBy
ZXBhcmUgZm9yIG5leHQgdGVzdAotICAgIHJlY3RFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIo
Im1vdXNlb3ZlciIsIGV2ZW50SGFuZGxlciwgZmFsc2UpOwotICAgIHJlY3RFbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoIm1vdXNlb3ZlciIsIGV2ZW50SGFuZGxlciwgZmFsc2UpOwotCi0gICAgLy8g
Q2F1c2VzIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoKSBsb2dpYyB0byByZWNsb25lIHRoZSBzaGFkb3cg
dHJlZQotICAgIC8vIElmICdUZXN0ICM1JyBpcyBub3QgZXhlY3V0ZWQsIHRoZW4gaXQgZGlkbid0
IHByb3Blcmx5IHJlY2xvbmUgdGhlIGV2ZW50IGxpc3RlbmVycy4KLSAgICByZWN0RWxlbWVudC5z
ZXRBdHRyaWJ1dGUoIngiLCByZWN0RWxlbWVudC5nZXRBdHRyaWJ1dGUoIngiKSk7Ci0KICAgICBm
aXJlTW91c2VPdmVyRXZlbnQoImV2ZW50VGVzdFRocmVlKCkiKTsKIH0KIAogZnVuY3Rpb24gZXZl
bnRUZXN0VGhyZWUoKQogewogICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVGVzdCAjNTogVmVy
aWZ5IHRoYXQgZXZlbnQgbGlzdGVuZXJzIGF0dGFjaGVkIHRvIHRoZSByZWZlcmVuY2VkIGVsZW1l
bnRzIGFyZSBjb3BpZWQgd2hlbiB1c2UgcmVjbG9uZXMgdGhlIGludGVybmFsIHNoYWRvdyB0cmVl
Iik7CisgICAgZGVidWcoIlRlc3QgIzM6IFZlcmlmeSB0aGF0IGV2ZW50cyBkaXNwYXRjaGVkIGJ5
IHRoZSB1c2VyIGVuZCB1cCBvbiB0aGUgU1ZHRWxlbWVudEluc3RhbmNlIG9iamVjdHMiKTsKICAg
ICBkZWJ1ZygiIik7CiAKICAgICB2ZXJpZnlNb3VzZU92ZXJFdmVudCgpOwogCi0gICAgLy8gUHJl
cGFyZSBmb3IgbmV4dCB0ZXN0Ci0gICAgcmVjdEVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigi
bW91c2VvdmVyIiwgZXZlbnRIYW5kbGVyLCBmYWxzZSk7Ci0KKyAgICB1c2VFbGVtZW50Lmluc3Rh
bmNlUm9vdC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLCBldmVudEhhbmRsZXIsIGZh
bHNlKTsKKyAgICBmaXJlU2ltdWxhdGVkTW91c2VPdmVyRXZlbnQoImNoZWNrRXZlbnRMaXN0ZW5l
ck5vdFJlYWNoYWJsZSgpIiwgdXNlRWxlbWVudC5pbnN0YW5jZVJvb3QpOworICAgIGZpcmVTaW11
bGF0ZWRNb3VzZU92ZXJFdmVudCgiY2hlY2tFdmVudExpc3RlbmVyTm90UmVhY2hhYmxlKCkiLCBy
ZWN0RWxlbWVudCk7CiAgICAgZmlyZVNpbXVsYXRlZE1vdXNlQ2xpY2tFdmVudCgiZXZlbnRUZXN0
Rm91cigpIiwgcmVjdEVsZW1lbnQpOwogfQogCiBmdW5jdGlvbiBldmVudFRlc3RGb3VyKCkKIHsK
ICAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIlRlc3QgIzY6IFZlcmlmeSB0aGF0IGEgY2xpY2sg
ZXZlbnQgZ290IGRpc3BhdGNoZWQgdG8gdGhlIG9yaWdpbmFsIHRyZWUgYXMgZGVmaW5lZCBpbiB0
aGUgbWFya3VwLCB3aGVuIHNlbnQgdG8gdGhlICdyZWN0RWxlbWVudCciKTsgCisgICAgZGVidWco
IlRlc3QgIzQ6IFZlcmlmeSB0aGF0IGEgY2xpY2sgZXZlbnQgZ290IGRpc3BhdGNoZWQgdG8gdGhl
IG9yaWdpbmFsIHRyZWUgYXMgZGVmaW5lZCBpbiB0aGUgbWFya3VwLCB3aGVuIHNlbnQgdG8gdGhl
ICdyZWN0RWxlbWVudCciKTsgCiAgICAgZGVidWcoIiIpOwogCiAgICAgdmVyaWZ5Q2xpY2tFdmVu
dE9uUmVmZXJlbmNlZCgpOwogCi0gICAgLy8gUHJlcGFyZSBmb3IgbmV4dCB0ZXN0CiAgICAgZmly
ZVNpbXVsYXRlZE1vdXNlQ2xpY2tFdmVudCgiZXZlbnRUZXN0Rml2ZSgpIiwgdXNlRWxlbWVudC5p
bnN0YW5jZVJvb3QpOwogfQogCiBmdW5jdGlvbiBldmVudFRlc3RGaXZlKCkKIHsKICAgICBkZWJ1
ZygiIik7Ci0gICAgZGVidWcoIlRlc3QgIzc6IFZlcmlmeSB0aGF0IGEgY2xpY2sgZXZlbnQgZ290
IGRpc3BhdGNoZWQgdG8gdGhlIGluc3RhbmNlIHRyZWUgd2hlbiBzZW50IHRvIHRoZSAndXNlRWxl
bWVudC5pbnN0YW5jZVJvb3QnIHdpdGggYW4gZXZlbnQgbGlzdGVuZXIgYXR0YWNoZWQgdG8gJ3Jl
Y3RFbGVtZW50JyIpOyAKKyAgICBkZWJ1ZygiVGVzdCAjNTogVmVyaWZ5IHRoYXQgYSBjbGljayBl
dmVudCBnb3QgZGlzcGF0Y2hlZCB0byB0aGUgaW5zdGFuY2UgdHJlZSB3aGVuIHNlbnQgdG8gdGhl
ICd1c2VFbGVtZW50Lmluc3RhbmNlUm9vdCcgd2l0aCBhbiBldmVudCBsaXN0ZW5lciBhdHRhY2hl
ZCB0byAncmVjdEVsZW1lbnQnIik7IAogICAgIGRlYnVnKCIiKTsKIAogICAgIHZlcmlmeUNsaWNr
RXZlbnQoKTsKIAotICAgIC8vIFByZXBhcmUgZm9yIG5leHQgdGVzdAorICAgIC8vIFRoaXMgdGVz
dHMgYSB3ZWJraXQgc3BlY2lmaWMgcXVpcms6IHJlbW92ZUF0dHJpYnV0ZSgpIG9uIHRoZSB0YXJn
ZXQgZWxlbWVudCwgY2F1c2VzIHVzIHRvIHJlY2xvbmUgdGhlIHNoYWRvdyB0cmVlLgorICAgIC8v
IEFsbCBldmVudCBsaXN0ZW5lciBtdXRhdGlvbnMgYXJlIHN5bmNocm9uaXplZCB3aXRoIHRoZSBz
aGFkb3cgdHJlZSBhbmQgZG8gbm90IGNhdXNlIHJlY2xvbmVzLiBTbyBpZiB3ZSBhZGQgdGhlCisg
ICAgLy8gY2xpY2sgZXZlbnQgbGlzdGVuZXIgdG8gdGhlIGN1cnJlbnQgaW5zdGFuY2VSb290LCBy
ZW1vdmUgdGhlIGV4aXN0aW5nIGNsaWNrIGxpc3RlbmVyIGZyb20gbWFya3VwIGFuZCB0aGVuIGZp
cmUKKyAgICAvLyBhIGNsaWNrIGV2ZW50LCB3ZSdyZSBzdXJlIHRoYXQgdGhlIHNoYWRvdyB0cmVl
IGlzIHJlY2xvbmVkIGJlZm9yZSB0aGUgZXZlbnRUZXN0U2l4KCkgZnVuY3Rpb24gaXMgZXhlY3V0
ZWQuCisgICAgLy8gSWYgZXZlbnRUZXN0U2l4KCkgaXMgcmVhY2hlZCwgd2UndmUgcHJvcGVybHkg
cHJlc2VydmVkIHRoZSBkeW5hbWljYWxseSBjcmVhdGVkIGNsaWNrIGV2ZW50IGxpc3RlbmVyIGFm
dGVyIHJlY2xvbmluZy4KKyAgICB1c2VFbGVtZW50Lmluc3RhbmNlUm9vdC5hZGRFdmVudExpc3Rl
bmVyKCJjbGljayIsIGV2ZW50SGFuZGxlciwgZmFsc2UpOworICAgIHJlY3RFbGVtZW50LnJlbW92
ZUF0dHJpYnV0ZSgib25jbGljayIpOworCiAgICAgZmlyZU1vdXNlQ2xpY2tFdmVudCgiZXZlbnRU
ZXN0U2l4KCkiKTsKIH0KIAogZnVuY3Rpb24gZXZlbnRUZXN0U2l4KCkKIHsKICAgICBkZWJ1Zygi
Iik7Ci0gICAgZGVidWcoIlRlc3QgIzg6IFZlcmlmeSB0aGF0IHRoZSBvcmlnaW5hbCBjbGljayBl
dmVudCBsaXN0ZW5lciBkZWZpbmVkIGluIG1hcmt1cCBpcyBzdGlsbCB3b3JraW5nIHByb3Blcmx5
Iik7CisgICAgZGVidWcoIlRlc3QgIzY6IFZlcmlmeSB0aGF0IHRoZSBvcmlnaW5hbCBjbGljayBl
dmVudCBsaXN0ZW5lciBnb3QgcmVtb3ZlZCBhbmQgYSBuZXcgb25lIGF0dGFjaGVkIGlzIGF0dGFj
aGVkIHRvIHRoZSB1c2Ugcm9vdCBTVkdFbGVtZW50SW5zdGFuY2UiKTsKICAgICBkZWJ1ZygiIik7
CiAKICAgICB2ZXJpZnlDbGlja0V2ZW50KCk7CiAKLSAgICAvLyBQcmVwYXJlIGZvciBuZXh0IHRl
c3QKLSAgICByZWN0RWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsIGV2ZW50SGFu
ZGxlciwgZmFsc2UpOwotICAgIHVzZUVsZW1lbnQuaW5zdGFuY2VSb290LmFkZEV2ZW50TGlzdGVu
ZXIoImNsaWNrIiwgZXZlbnRIYW5kbGVyLCBmYWxzZSk7CisgICAgdXNlRWxlbWVudC5pbnN0YW5j
ZVJvb3QucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBldmVudEhhbmRsZXIsIGZhbHNlKTsK
KyAgICBmaXJlU2ltdWxhdGVkTW91c2VDbGlja0V2ZW50KCJjaGVja0V2ZW50TGlzdGVuZXJOb3RS
ZWFjaGFibGUoKSIsIHVzZUVsZW1lbnQuaW5zdGFuY2VSb290KTsKKyAgICBmaXJlU2ltdWxhdGVk
TW91c2VDbGlja0V2ZW50KCJjaGVja0V2ZW50TGlzdGVuZXJOb3RSZWFjaGFibGUoKSIsIHJlY3RF
bGVtZW50KTsKKyAgICByZWN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGV2ZW50
SGFuZGxlciwgZmFsc2UpOwogCiAgICAgZmlyZU1vdXNlQ2xpY2tFdmVudCgiZXZlbnRUZXN0U2V2
ZW4oKSIpOwogfQpAQCAtMjU4LDMwICsyNTksMzIgQEAgZnVuY3Rpb24gZXZlbnRUZXN0U2l4KCkK
IGZ1bmN0aW9uIGV2ZW50VGVzdFNldmVuKCkKIHsKICAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWco
IlRlc3QgIzk6IFZlcmlmeSB0aGF0IHRoZSBvcmlnaW5hbCBjbGljayBldmVudCBsaXN0ZW5lciBn
b3QgcmVtb3ZlZCBhbmQgYSBuZXcgb25lIGF0dGFjaGVkIHRvIHRoZSB1c2Ugcm9vdCBTVkdFbGVt
ZW50SW5zdGFuY2UiKTsKKyAgICBkZWJ1ZygiVGVzdCAjNzogVmVyaWZ5IHRoYXQgdGhlIHJlY3Jl
YXRpbmcgdGhlIG9yaWdpbmFsIGNsaWNrIGV2ZW50IGxpc3RlbmVyIGR5bmFtaWNhbGx5IHdvcmtl
ZCBhbmQgdGhlIGV2ZW50IGlzIG5vdyBkaXNwYXRjaGVkIHRvIHRoZSByZWd1bGFyIERPTSIpOwog
ICAgIGRlYnVnKCIiKTsKIAotICAgIHZlcmlmeUNsaWNrRXZlbnQoKTsKKyAgICB2ZXJpZnlDbGlj
a0V2ZW50T25SZWZlcmVuY2VkKCk7CiAKICAgICAvLyBQcmVwYXJlIGZvciBuZXh0IHRlc3RzCiAg
ICAgZmlyZVNpbXVsYXRlZE1vdXNlQ2xpY2tFdmVudCgiZXZlbnRUZXN0RWlnaHQoKSIsIHVzZUVs
ZW1lbnQuaW5zdGFuY2VSb290KTsKIH0KIAotZnVuY3Rpb24gZXZlbnRUZXN0RWlnaHQoKQorZnVu
Y3Rpb24gZXZlbnRUZXN0U2V2ZW4oKQogewogICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVGVz
dCAjMTA6IFZlcmlmeSB0aGF0IHRoZSBzaW11bGF0ZWQgY2xpY2sgZXZlbnQgZ290IGRpc3BhdGNo
ZWQgdG8gdGhlIHJpZ2h0IHRhcmdldCIpOworICAgIGRlYnVnKCJUZXN0ICM4OiBWZXJpZnkgdGhh
dCB0aGUgc2ltdWxhdGVkIGNsaWNrIGV2ZW50IGdvdCBkaXNwYXRjaGVkIHRvIHRoZSByaWdodCB0
YXJnZXQiKTsKICAgICBkZWJ1ZygiIik7CiAKICAgICB2ZXJpZnlDbGlja0V2ZW50KCk7CiAKICAg
ICAvLyBDbGVhbnVwCiAgICAgdXNlRWxlbWVudC5pbnN0YW5jZVJvb3QucmVtb3ZlRXZlbnRMaXN0
ZW5lcigiY2xpY2siLCBldmVudEhhbmRsZXIsIGZhbHNlKTsKKyAgICBmaXJlU2ltdWxhdGVkTW91
c2VDbGlja0V2ZW50KCJjaGVja0V2ZW50TGlzdGVuZXJOb3RSZWFjaGFibGUoKSIsIHVzZUVsZW1l
bnQuaW5zdGFuY2VSb290KTsKKyAgICBmaXJlU2ltdWxhdGVkTW91c2VDbGlja0V2ZW50KCJjaGVj
a0V2ZW50TGlzdGVuZXJOb3RSZWFjaGFibGUoKSIsIHJlY3RFbGVtZW50KTsKIAotICAgIHN0b3BF
dmVudFRlc3RzKCk7CisgICAgZmluaXNoVGVzdHMoKTsKIH0KIAotZnVuY3Rpb24gc3RvcEV2ZW50
VGVzdHMoKQorZnVuY3Rpb24gZmluaXNoVGVzdHMoKQogewogICAgIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CiAKQEAgLTI5Miw4ICsyOTUsNiBAQCBmdW5jdGlvbiBzdG9wRXZlbnRUZXN0cygp
CiAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwogfQotCi1maXJlTW91c2VPdmVyRXZlbnQoInN0YXJ0
RXZlbnRUZXN0cygpIik7CiA8L3NjcmlwdD4KIAogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMv
c3ZnL2N1c3RvbS91c2UtaW5zdGFuY2VSb290LWV2ZW50LWxpc3RlbmVyLWxpdmVuZXNzLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3VzZS1pbnN0YW5j
ZVJvb3QtZXZlbnQtbGlzdGVuZXItbGl2ZW5lc3MtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS91c2UtaW5zdGFuY2VSb290LWV2ZW50LWxpc3RlbmVy
LWxpdmVuZXNzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorVGVzdCBw
YXNzZWQKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9jdXN0b20vdXNlLWluc3RhbmNlUm9vdC1ldmVu
dC1saXN0ZW5lci1saXZlbmVzcy54aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcv
Y3VzdG9tL3VzZS1pbnN0YW5jZVJvb3QtZXZlbnQtbGlzdGVuZXItbGl2ZW5lc3MueGh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3VzZS1pbnN0YW5jZVJvb3QtZXZl
bnQtbGlzdGVuZXItbGl2ZW5lc3MueGh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTMgQEAK
Kzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8aHRtbCB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0ic3RhcnRUZXN0KCkiPgorCis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIxMDBw
eCIgaGVpZ2h0PSIxMDBweCI+CisgIDxkZWZzPgorICAgICAgPHJlY3QgaWQ9InRhcmdldCIgZmls
bD0iZ3JlZW4iIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIi8+CisgIDwvZGVmcz4KKyAgPHVzZSBp
ZD0idGVzdCIgeGxpbms6aHJlZj0iI3RhcmdldCIvPgorPC9zdmc+CisKKzxkaXYgaWQ9ImNvbnNv
bGUiPlRlc3QgZmFpbGVkPC9kaXY+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gZXZl
bnRIYW5kbGVyKCkKK3sKKyAgICB2YXIgZGl2RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjb25zb2xlIik7CisgICAgZGl2RWxlbWVudC50ZXh0Q29udGVudCA9ICJUZXN0IHBhc3Nl
ZCI7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGZpcmVTaW11bGF0
ZWRNb3VzZUNsaWNrRXZlbnQoZXZlbnRUYXJnZXQpCit7CisgICAgdmFyIGV2ZW50ID0gZG9jdW1l
bnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnRzIik7CisgICAgZXZlbnQuaW5pdE1vdXNlRXZlbnQo
ImNsaWNrIiwgdHJ1ZSwgdHJ1ZSwgZG9jdW1lbnQuZGVmYXVsdFZpZXcsIDEsIDAsIDAsIDAsIDAs
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAwLCBudWxsKTsKKyAgICBldmVudFRhcmdldC5k
aXNwYXRjaEV2ZW50KGV2ZW50KTsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgIHZh
ciB1c2VFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKKworICAgIC8v
IE5vLW9wLCBhcyBubyBsaXN0ZW5lciBpcyBub3QgeWV0IHJlZ2lzdGVyZWQKKyAgICBmaXJlU2lt
dWxhdGVkTW91c2VDbGlja0V2ZW50KHVzZUVsZW1lbnQuaW5zdGFuY2VSb290KTsKKworICAgIC8v
IEFkZCBsaXN0ZW5lcgorICAgIHVzZUVsZW1lbnQuaW5zdGFuY2VSb290LmFkZEV2ZW50TGlzdGVu
ZXIoImNsaWNrIiwgZXZlbnRIYW5kbGVyLCBmYWxzZSk7CisKKyAgICAvLyBTaG91bGQgZmlyZSBp
bW1lZGlhdGVseSBhbmQgZmluaXNoIHRoZSB0ZXN0CisgICAgZmlyZVNpbXVsYXRlZE1vdXNlQ2xp
Y2tFdmVudCh1c2VFbGVtZW50Lmluc3RhbmNlUm9vdCk7Cit9Cis8L3NjcmlwdD4KKworPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9yZXNvdXJjZXMvdXNlLWlu
c3RhbmNlUm9vdC1ldmVudC1idWJibGluZy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9z
dmcvY3VzdG9tL3Jlc291cmNlcy91c2UtaW5zdGFuY2VSb290LWV2ZW50LWJ1YmJsaW5nLmpzCShy
ZXZpc2lvbiA1MzUxOCkKKysrIExheW91dFRlc3RzL3N2Zy9jdXN0b20vcmVzb3VyY2VzL3VzZS1p
bnN0YW5jZVJvb3QtZXZlbnQtYnViYmxpbmcuanMJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEyICsz
NSw4IEBAIGZ1bmN0aW9uIGV2ZW50SGFuZGxlcihldnQsIGxhYmVsKSB7CiAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJtc2ciLCBleHBlY3RlZFtldmVudENvdW50ZXJdKTsKICAgICArK2V2ZW50
Q291bnRlcjsKIAotICAgIGlmIChsYWJlbCA9PSBjb3VudGVyKSB7Ci0gICAgICAgIGlmIChsYWJl
bCA9PSB0ZXN0cykKLSAgICAgICAgICAgIHNldFRpbWVvdXQoImZpbmlzaFRlc3QoKSIsIDEwMCk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNldFRpbWVvdXQoIm5leHRUZXN0KCkiLCAxMDAp
OwotICAgIH0KKyAgICBpZiAobGFiZWwgPT0gY291bnRlcikKKyAgICAgICAgc2V0VGltZW91dChs
YWJlbCA9PSB0ZXN0cyA/IGZpbmlzaFRlc3QgOiBuZXh0VGVzdCwgMCk7CiB9CiAKIGZ1bmN0aW9u
IGZpbmlzaFRlc3QoKQpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9yZXNvdXJjZXMvdXNl
LWluc3RhbmNlUm9vdC1ldmVudC1saXN0ZW5lcnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvc3ZnL2N1c3RvbS9yZXNvdXJjZXMvdXNlLWluc3RhbmNlUm9vdC1ldmVudC1saXN0ZW5lcnMu
anMJKHJldmlzaW9uIDUzNTE4KQorKysgTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9yZXNvdXJjZXMv
dXNlLWluc3RhbmNlUm9vdC1ldmVudC1saXN0ZW5lcnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTE4
LDcgKzE4LDcgQEAgZnVuY3Rpb24gZXZlbnRIYW5kbGVyKGV2dCkKICAgICAgICAgICAgIGRlYnVn
KCJUZXN0ICIgKyBjb3VudGVyICsgIiAvICIgKyB0ZXN0cyArICIgRkFJTEVEIChleHBlY3RlZDog
JyIgKyBleHBlY3RlZCArICInIGFjdHVhbDogJyIgKyBldnQudHlwZSArICInKSIpOwogICAgIH0K
IAotICAgIHNldFRpbWVvdXQoY291bnRlciA8IHRlc3RzID8gZHJpdmVUZXN0cyA6IGZpbmlzaFRl
c3QsIDEwMCk7CisgICAgc2V0VGltZW91dChjb3VudGVyIDwgdGVzdHMgPyBkcml2ZVRlc3RzIDog
ZmluaXNoVGVzdCwgMCk7CiB9CiAKIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46973</attachid>
            <date>2010-01-19 20:40:19 -0800</date>
            <delta_ts>2010-01-20 12:53:54 -0800</delta_ts>
            <desc>Updated patch v2</desc>
            <filename>UseStabilityFixes.diff</filename>
            <type>text/plain</type>
            <size>45880</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzUxOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTAgQEAKKzIwMTAtMDEtMTkgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJt
YW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgc3ZnL2N1c3RvbS91c2UtaW5zdGFuY2VSb290LWV2ZW50LWJ1YmJsaW5nLnhodG1sIGlz
IGZsYWtleQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzM4MzUKKworICAgICAgICBtb3VzZUV2ZW50IGZpcmVzIG11dGlwbGUgdGltZXMgaW4gc3ZnL2N1
c3RvbS91c2UtaW5zdGFuY2VSb290LWFzLWV2ZW50LXRhcmdldC54aHRtbAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI1MTkKKworICAgICAgICBUZXN0
OiBzdmcvY3VzdG9tL3VzZS1pbnN0YW5jZVJvb3QtZXZlbnQtbGlzdGVuZXItbGl2ZW5lc3MueGh0
bWwKKworICAgICAgICBTdGFiaWxpemUgPHVzZT4gc2NyaXB0aW5nIHN1cHBvcnQgLSB1c2UgdGVz
dHMgYXJlIHJlbGlhYmxlIG5vdyAodGVzdGVkIHVzaW5nIC0tcmVwZWFjaC1lYWNoIDUwIC0tcmFu
ZG9tIC1wKQorCisgICAgICAgIERvIG5vdCByZWNsb25lIHRyZWVzIGFueW1vcmUgYmVjYXVzZSBv
ZiBldmVudCBsaXN0ZW5lciBjaGFuZ2VzLCBpbnN0ZWFkIGtlZXAgY29ycmVzcG9uZGluZ0VsZW1l
bnQgJiBzaGFkb3dUcmVlRWxlbWVudAorICAgICAgICBzeW5jaHJvbml6ZWQgZm9yIGVhY2ggU1ZH
RWxlbWVudEluc3RhbmNlIC0gYW55IG11dGF0aW9ucyBvbiBhbnkgZXZlbnQgbGlzdGVuZXJzIGFy
ZSBsaXZlLCBhbmQgdGFrZSBpbW1lZGlhdGUgZWZmZWN0LAorICAgICAgICB3L28gaGF2aW5nIHRv
IHJlbHkgb24gYSByZWNsb25lIC0gdGhpcyB3YXMgdGhlIHJvb3Qgb2Ygc2V2ZXJhbCByYWNlIGNv
bmRpdGlvbnMgbWFraW5nIHRoZSA8dXNlPiB0ZXN0cyBmbGFrZXkuCisKKyAgICAgICAgRml4IFNW
R1VzZUVsZW1lbnQ6Omluc3RhbmNlUm9vdCgpIHRvIGZvcmNlIHNoYWRvdyB0cmVlIGNyZWF0aW9u
LCBldmVuIGlmIGl0IHdhcyBub3QgYXR0YWNoZWQgc28gZmFyIC0gd2UgY2FuJ3Qgd2FpdAorICAg
ICAgICBmb3IgZmluaXNoZWRQYXJzaW5nKCkgdG8gYmUgY2FsbGVkIHdoaWNoIHdvdWxkIHJlY2Fs
Y3VsYXRlIHRoZSBkb2N1bWVudCBzdHlsZSBhbmQgYXR0YWNoIHRoZSBzaGFkb3cgdHJlZSBhcyBy
ZXN1bHQuCisgICAgICAgIFRoaXMgaXMgbm93IG1hdGNoaW5nIE9wZXJhcyBiZWhhdmlvdXIuCisK
KyAgICAgICAgT3B0aW1pemUgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcigpIHRvIG5vdCBj
cmVhdGUgZXZlbnQgbGlzdGVuZXJzIGlmIHRoZSBzdXBwbGllZCBBdHRyaWJ1dGUgaXNOdWxsKCkg
LSBvdGhlcndoaXNlCisgICAgICAgIERPTSBjYWxscyBsaWtlIHJlbW92ZUF0dHJpYnV0ZSgib25j
bGljayIpIGNhdXNlIGEgdGVtcG9yYXJ5IEpTRXZlbnRMaXN0ZW5lciB0byBiZSBjcmVhdGVkLCBh
ZGRlZCB0byB0aGUgZXZlbnQgbGlzdGVuZXIKKyAgICAgICAgY2FjaGUgYW5kIHJlbW92ZWQgYWZ0
ZXJ3YXJkcy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcik6IFJldHVy
biBlYXJseSBpZiB0aGUgc3VwcGxpZWQgYXR0cmlidXRlIGlzIG51bGwgYXMgZGlzY3Vzc2VkIHdp
dGggR2VvZmZyZXkuCisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0ZW5lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKTogRGl0
dG8uCisgICAgICAgICogZG9tL05vZGUuY3BwOiBTeW5jaHJvbml6ZSBldmVudCBsaXN0ZW5lcnMg
d2l0aCBhbGwgZWxlbWVudCBpbnN0YW5jZXMsIGluc3RlYWQgb2YgbWFya2luZyB0aGUgdXNlIGVs
ZW1lbnRzIHRvIHJlY2xvbmUuCisgICAgICAgIChXZWJDb3JlOjppbnN0YW5jZXNGb3JTVkdFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnRyeUFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6YWRkRXZlbnRMaXN0ZW5lcik6IFdoZW4gYWRkaW5nIGEgbGlzdGVuZXIs
IGdldCBhIGxpc3Qgb2YgZWxlbWVudCBpbnN0YW5jZXMgYW5kIGFkZCBpdCB0aGVpciBhcyB3ZWxs
LgorICAgICAgICAoV2ViQ29yZTo6dHJ5UmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKTogRGl0dG8gZm9yIHJlbW92YWxzLCBi
dXQgd2l0aCBzcGVjaWFsIGxvZ2ljIGZvciBsaXN0ZW5lcnMgY3JlYXRlZCBmcm9tIG1hcmt1cCAo
c2VlIGNvbW1lbnRzKQorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50SW5zdGFuY2UuY3BwOiBDbGVh
bmVkIHVwLCByZW1vdmluZyB1bm5jZXNzYXJ5IGNoZWNrcyBvZiBjb3JyZXNwb25kaW5nRWxlbWVu
dCgpIC0gdGhlcmUgaXMgYW4gQVNTRVJUIGluIHRoZSBjdG9yLgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRWxlbWVudEluc3RhbmNlOjppbnZhbGlkYXRlQWxsSW5zdGFuY2VzT2ZFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5jZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50SW5zdGFuY2U6OmFkZEV2ZW50TGlzdGVu
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudEluc3RhbmNlOjpyZW1vdmVFdmVudExp
c3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5jZTo6cmVtb3ZlQWxs
RXZlbnRMaXN0ZW5lcnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudEluc3RhbmNlOjpl
dmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudEluc3RhbmNlOjpl
bnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNwcDog
Q2FsbCBkb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKSB0
byBmb3JjZSBzaGFkb3cgdHJlZSBjcmVhdGlvbiwganVzdCBsaWtlIENTU1N0eWxlRGVjbCB3b3Jr
cy4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6Omluc3RhbmNlUm9vdCk6CisKIDIw
MTAtMDEtMTkgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkIGJ1aWxkIGZpeC4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RXZl
bnRMaXN0ZW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRF
dmVudExpc3RlbmVyLmNwcAkocmV2aXNpb24gNTM1MTkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw5IEBA
IHN0YXRpYyBjb25zdCBTdHJpbmcmIGV2ZW50UGFyYW1ldGVyTmFtZSgKIFBhc3NSZWZQdHI8SlNM
YXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihOb2RlKiBub2Rl
LCBBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgQVNTRVJUKG5vZGUpOworICAgIEFTU0VSVChhdHRy
KTsKKyAgICBpZiAoYXR0ci0+aXNOdWxsKCkpCisgICAgICAgIHJldHVybiAwOwogCiAgICAgaW50
IGxpbmVOdW1iZXIgPSAxOwogICAgIFN0cmluZyBzb3VyY2VVUkw7CkBAIC03OSw2ICs4MiwxMCBA
QCBQYXNzUmVmUHRyPEpTTGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZUF0CiAgICAgaWYgKCFmcmFt
ZSkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICBBU1NFUlQoYXR0cik7CisgICAgaWYgKGF0dHIt
PmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gMDsKKwogICAgIGludCBsaW5lTnVtYmVyID0gMTsK
ICAgICBTdHJpbmcgc291cmNlVVJMOwogICAgIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHRFdmVudExpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCShyZXZpc2lvbiA1MzUxOSkKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYg
KzQ2LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFBhc3NSZWZQdHI8VjhMYXp5RXZlbnRMaXN0
ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihOb2RlKiBub2RlLCBBdHRyaWJ1dGUq
IGF0dHIpCiB7CiAgICAgQVNTRVJUKG5vZGUpOworICAgIEFTU0VSVChhdHRyKTsKKyAgICBpZiAo
YXR0ci0+aXNOdWxsKCkpCisgICAgICAgIHJldHVybiAwOworCiAgICAgaW50IGxpbmVOdW1iZXIg
PSAxOwogICAgIGludCBjb2x1bW5OdW1iZXIgPSAwOwogICAgIFN0cmluZyBzb3VyY2VVUkw7CkBA
IC03Niw2ICs4MCwxMSBAQCBQYXNzUmVmUHRyPFY4TGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZUF0
CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICBBU1NFUlQobm9kZSk7
CisgICAgQVNTRVJUKGF0dHIpOworICAgIGlmIChhdHRyLT5pc051bGwoKSkKKyAgICAgICAgcmV0
dXJuIDA7CisKICAgICBpbnQgbGluZU51bWJlciA9IDE7CiAgICAgaW50IGNvbHVtbk51bWJlciA9
IDA7CiAgICAgU3RyaW5nIHNvdXJjZVVSTDsKSW5kZXg6IFdlYkNvcmUvZG9tL05vZGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL05vZGUuY3BwCShyZXZpc2lvbiA1MzUxOSkKKysrIFdl
YkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMyLDQ5ICsyMzMyLDE1MyBA
QCB2b2lkIE5vZGU6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQogICAgIHNldERpZE1vdmVU
b05ld093bmVyRG9jdW1lbnRXYXNDYWxsZWQodHJ1ZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9p
ZCB1cGRhdGVTVkdFbGVtZW50SW5zdGFuY2VzQWZ0ZXJFdmVudExpc3RlbmVyQ2hhbmdlKE5vZGUq
IHJlZmVyZW5jZU5vZGUpCisjaWYgRU5BQkxFKFNWRykKK3N0YXRpYyBpbmxpbmUgSGFzaFNldDxT
VkdFbGVtZW50SW5zdGFuY2UqPiBpbnN0YW5jZXNGb3JTVkdFbGVtZW50KE5vZGUqIG5vZGUpCit7
CisgICAgSGFzaFNldDxTVkdFbGVtZW50SW5zdGFuY2UqPiBpbnN0YW5jZXM7CisgCisgICAgQVNT
RVJUKG5vZGUpOworICAgIGlmICghbm9kZS0+aXNTVkdFbGVtZW50KCkgfHwgbm9kZS0+c2hhZG93
VHJlZVJvb3ROb2RlKCkpCisgICAgICAgIHJldHVybiBIYXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5j
ZSo+KCk7CisKKyAgICBTVkdFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRWxlbWVu
dCo+KG5vZGUpOworICAgIGlmICghZWxlbWVudC0+aXNTdHlsZWQoKSkKKyAgICAgICAgcmV0dXJu
IEhhc2hTZXQ8U1ZHRWxlbWVudEluc3RhbmNlKj4oKTsKKworICAgIFNWR1N0eWxlZEVsZW1lbnQq
IHN0eWxlZEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdTdHlsZWRFbGVtZW50Kj4oZWxlbWVudCk7
CisgICAgQVNTRVJUKCFzdHlsZWRFbGVtZW50LT5pbnN0YW5jZVVwZGF0ZXNCbG9ja2VkKCkpOwor
CisgICAgcmV0dXJuIHN0eWxlZEVsZW1lbnQtPmluc3RhbmNlc0ZvckVsZW1lbnQoKTsKK30KKyNl
bmRpZgorCitzdGF0aWMgaW5saW5lIGJvb2wgdHJ5QWRkRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJn
ZXROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExp
c3RlbmVyPiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQoreworICAgIGlmICghdGFyZ2V0Tm9k
ZS0+RXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNl
Q2FwdHVyZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChEb2N1bWVudCogZG9j
dW1lbnQgPSB0YXJnZXROb2RlLT5kb2N1bWVudCgpKQorICAgICAgICBkb2N1bWVudC0+YWRkTGlz
dGVuZXJUeXBlSWZOZWVkZWQoZXZlbnRUeXBlKTsKKworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIE5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsK
ICNpZiAhRU5BQkxFKFNWRykKLSAgICBVTlVTRURfUEFSQU0ocmVmZXJlbmNlTm9kZSk7CisgICAg
cmV0dXJuIHRyeUFkZEV2ZW50TGlzdGVuZXIodGhpcywgZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNl
Q2FwdHVyZSk7CiAjZWxzZQotICAgIEFTU0VSVChyZWZlcmVuY2VOb2RlKTsKLSAgICBpZiAoIXJl
ZmVyZW5jZU5vZGUtPmlzU1ZHRWxlbWVudCgpKQotICAgICAgICByZXR1cm47CisgICAgSGFzaFNl
dDxTVkdFbGVtZW50SW5zdGFuY2UqPiBpbnN0YW5jZXMgPSBpbnN0YW5jZXNGb3JTVkdFbGVtZW50
KHRoaXMpOworICAgIGlmIChpbnN0YW5jZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdHJ5
QWRkRXZlbnRMaXN0ZW5lcih0aGlzLCBldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsK
IAotICAgIC8vIEVsZW1lbnRzIGxpdmluZyBpbnNpZGUgYSA8dXNlPiBzaGFkb3cgdHJlZSwgbmV2
ZXIgY2F1c2UgYW55IHVwZGF0ZXMhCi0gICAgaWYgKHJlZmVyZW5jZU5vZGUtPnNoYWRvd1RyZWVS
b290Tm9kZSgpKQotICAgICAgICByZXR1cm47CisgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxp
c3RlbmVyRm9yUmVndWxhclRyZWUgPSBsaXN0ZW5lcjsKKyAgICBSZWZQdHI8RXZlbnRMaXN0ZW5l
cj4gbGlzdGVuZXJGb3JTaGFkb3dUcmVlID0gbGlzdGVuZXJGb3JSZWd1bGFyVHJlZTsKIAotICAg
IC8vIFdlJ3JlIHBvc3NpYmx5IChhIGNoaWxkIG9mKSBhbiBlbGVtZW50IHRoYXQgaXMgcmVmZXJl
bmNlZCBieSBhIDx1c2U+IGNsaWVudAotICAgIC8vIElmIGFuIGV2ZW50IGxpc3RlbmVycyBjaGFu
Z2VzIG9uIGEgcmVmZXJlbmNlZCBlbGVtZW50LCB1cGRhdGUgYWxsIGluc3RhbmNlcy4KLSAgICBm
b3IgKE5vZGUqIG5vZGUgPSByZWZlcmVuY2VOb2RlOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50
Tm9kZSgpKSB7Ci0gICAgICAgIGlmICghbm9kZS0+aGFzSUQoKSB8fCAhbm9kZS0+aXNTVkdFbGVt
ZW50KCkpCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICAvLyBBZGQgZXZlbnQgbGlzdGVuZXIg
dG8gcmVndWxhciBET00gZWxlbWVudAorICAgIGlmICghdHJ5QWRkRXZlbnRMaXN0ZW5lcih0aGlz
LCBldmVudFR5cGUsIGxpc3RlbmVyRm9yUmVndWxhclRyZWUucmVsZWFzZSgpLCB1c2VDYXB0dXJl
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIFNWR0VsZW1lbnRJbnN0YW5jZTo6
aW52YWxpZGF0ZUFsbEluc3RhbmNlc09mRWxlbWVudChzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4o
bm9kZSkpOwotICAgICAgICBicmVhazsKKyAgICAvLyBBZGQgZXZlbnQgbGlzdGVuZXIgdG8gYWxs
IHNoYWRvdyB0cmVlIERPTSBlbGVtZW50IGluc3RhbmNlcworICAgIGNvbnN0IEhhc2hTZXQ8U1ZH
RWxlbWVudEluc3RhbmNlKj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGluc3RhbmNlcy5lbmQoKTsK
KyAgICBmb3IgKEhhc2hTZXQ8U1ZHRWxlbWVudEluc3RhbmNlKj46OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gaW5zdGFuY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBBU1NFUlQo
KCppdCktPnNoYWRvd1RyZWVFbGVtZW50KCkpOworICAgICAgICBBU1NFUlQoKCppdCktPmNvcnJl
c3BvbmRpbmdFbGVtZW50KCkgPT0gdGhpcyk7CisKKyAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVu
ZXI+IGxpc3RlbmVyRm9yQ3VycmVudFNoYWRvd1RyZWVFbGVtZW50ID0gbGlzdGVuZXJGb3JTaGFk
b3dUcmVlOworICAgICAgICBib29sIHJlc3VsdCA9IHRyeUFkZEV2ZW50TGlzdGVuZXIoKCppdCkt
PnNoYWRvd1RyZWVFbGVtZW50KCksIGV2ZW50VHlwZSwgbGlzdGVuZXJGb3JDdXJyZW50U2hhZG93
VHJlZUVsZW1lbnQucmVsZWFzZSgpLCB1c2VDYXB0dXJlKTsKKyAgICAgICAgQVNTRVJUX1VOVVNF
RChyZXN1bHQsIHJlc3VsdCk7CiAgICAgfQorCisgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIH0K
IAotYm9vbCBOb2RlOjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUp
CitzdGF0aWMgaW5saW5lIGJvb2wgdHJ5UmVtb3ZlRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJnZXRO
b2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciogbGlzdGVu
ZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKLSAgICBpZiAoIUV2ZW50VGFyZ2V0OjphZGRFdmVudExp
c3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpKQorICAgIGlmICghdGFyZ2V0
Tm9kZS0+RXZlbnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5l
ciwgdXNlQ2FwdHVyZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChEb2N1bWVu
dCogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpKQotICAgICAgICBkb2N1bWVudC0+YWRkTGlz
dGVuZXJUeXBlSWZOZWVkZWQoZXZlbnRUeXBlKTsKLSAgICB1cGRhdGVTVkdFbGVtZW50SW5zdGFu
Y2VzQWZ0ZXJFdmVudExpc3RlbmVyQ2hhbmdlKHRoaXMpOworICAgIC8vIFRPRE86IE5vdGlmeSBE
b2N1bWVudCB0aGF0IHRoZSBsaXN0ZW5lciBoYXMgdmFuaXNoZWQuIFdlIG5lZWQgdG8ga2VlcCB0
cmFjayBvZiBhIG51bWJlciBvZgorICAgIC8vIGxpc3RlbmVycyBmb3IgZWFjaCB0eXBlLCBub3Qg
anVzdCBhIGJvb2wgLSBzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMzODYxCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBOb2RlOjpyZW1vdmVFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiBsaXN0
ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewotICAgIGlmICghRXZlbnRUYXJnZXQ6OnJlbW92ZUV2
ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSkpCisjaWYgIUVOQUJM
RShTVkcpCisgICAgcmV0dXJuIHRyeVJlbW92ZUV2ZW50TGlzdGVuZXIodGhpcywgZXZlbnRUeXBl
LCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CisjZWxzZQorICAgIEhhc2hTZXQ8U1ZHRWxlbWVudElu
c3RhbmNlKj4gaW5zdGFuY2VzID0gaW5zdGFuY2VzRm9yU1ZHRWxlbWVudCh0aGlzKTsKKyAgICBp
ZiAoaW5zdGFuY2VzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRyeVJlbW92ZUV2ZW50TGlz
dGVuZXIodGhpcywgZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CisKKyAgICAvLyBF
dmVudFRhcmdldDo6cmVtb3ZlRXZlbnRMaXN0ZW5lciBjcmVhdGVzIGEgUGFzc1JlZlB0ciBhcm91
bmQgdGhlIGdpdmVuIEV2ZW50TGlzdGVuZXIKKyAgICAvLyBvYmplY3Qgd2hlbiBjcmVhdGluZyBh
IHRlbXBvcmFyeSBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciBvYmplY3QgdXNlZCB0byBsb29rIHVw
IHRoZQorICAgIC8vIGV2ZW50IGxpc3RlbmVyIGluIGEgY2FjaGUuIElmIHdlIHdhbnQgdG8gYmUg
YWJsZSB0byBjYWxsIHJlbW92ZUV2ZW50TGlzdGVuZXIoKSBtdWx0aXBsZQorICAgIC8vIHRpbWVz
IG9uIGRpZmZlcmVudCBub2Rlcywgd2UgaGF2ZSB0byBkZWxheSBpdHMgaW1tZWRpYXRlIGRlc3Ry
dWN0aW9uLCB3aGljaCB3b3VsZCBoYXBwZW4KKyAgICAvLyBhZnRlciB0aGUgZmlyc3QgY2FsbCBi
ZWxvdy4KKyAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gcHJvdGVjdG9yKGxpc3RlbmVyKTsKKwor
ICAgIC8vIFJlbW92ZSBldmVudCBsaXN0ZW5lciBmcm9tIHJlZ3VsYXIgRE9NIGVsZW1lbnQKKyAg
ICBpZiAoIXRyeVJlbW92ZUV2ZW50TGlzdGVuZXIodGhpcywgZXZlbnRUeXBlLCBsaXN0ZW5lciwg
dXNlQ2FwdHVyZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHVwZGF0ZVNWR0VsZW1l
bnRJbnN0YW5jZXNBZnRlckV2ZW50TGlzdGVuZXJDaGFuZ2UodGhpcyk7CisgICAgLy8gUmVtb3Zl
IGV2ZW50IGxpc3RlbmVyIGZyb20gYWxsIHNoYWRvdyB0cmVlIERPTSBlbGVtZW50IGluc3RhbmNl
cworICAgIGNvbnN0IEhhc2hTZXQ8U1ZHRWxlbWVudEluc3RhbmNlKj46OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IGluc3RhbmNlcy5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8U1ZHRWxlbWVudEluc3Rh
bmNlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaW5zdGFuY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkgeworICAgICAgICBBU1NFUlQoKCppdCktPmNvcnJlc3BvbmRpbmdFbGVtZW50KCkgPT0g
dGhpcyk7CisKKyAgICAgICAgU1ZHRWxlbWVudCogc2hhZG93VHJlZUVsZW1lbnQgPSAoKml0KS0+
c2hhZG93VHJlZUVsZW1lbnQoKTsKKyAgICAgICAgQVNTRVJUKHNoYWRvd1RyZWVFbGVtZW50KTsK
KworICAgICAgICBpZiAodHJ5UmVtb3ZlRXZlbnRMaXN0ZW5lcihzaGFkb3dUcmVlRWxlbWVudCwg
ZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSkpCisgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICAvLyBUaGlzIGNhc2UgY2FuIG9ubHkgYmUgaGl0IGZvciBldmVudCBsaXN0ZW5l
cnMgY3JlYXRlZCBmcm9tIG1hcmt1cAorICAgICAgICBBU1NFUlQobGlzdGVuZXItPndhc0NyZWF0
ZWRGcm9tTWFya3VwKCkpOworCisgICAgICAgIC8vIElmIHRoZSBldmVudCBsaXN0ZW5lciAnbGlz
dGVuZXInIGhhcyBiZWVuIGNyZWF0ZWQgZnJvbSBtYXJrdXAgYW5kIGhhcyBiZWVuIGZpcmVkIGJl
Zm9yZQorICAgICAgICAvLyB0aGVuIEpTTGF6eUV2ZW50TGlzdGVuZXI6OnBhcnNlQ29kZSgpIGhh
cyBiZWVuIGNhbGxlZCBhbmQgbV9qc0Z1bmN0aW9uIG9mIHRoYXQgbGlzdGVuZXIKKyAgICAgICAg
Ly8gaGFzIGJlZW4gY3JlYXRlZCAocmVhZDogaXQncyBub3QgMCBhbnltb3JlKS4gRHVyaW5nIHNo
YWRvdyB0cmVlIGNyZWF0aW9uLCB0aGUgZXZlbnQKKyAgICAgICAgLy8gbGlzdGVuZXIgRE9NIGF0
dHJpYnV0ZSBoYXMgYmVlbiBjbG9uZWQsIGFuZCBhbm90aGVyIGV2ZW50IGxpc3RlbmVyIGhhcyBi
ZWVuIHNldHVwIGluCisgICAgICAgIC8vIHRoZSBzaGFkb3cgdHJlZS4gSWYgdGhhdCBldmVudCBs
aXN0ZW5lciBoYXMgbm90IGJlZW4gdXNlZCB5ZXQsIG1fanNGdW5jdGlvbiBpcyBzdGlsbCAwLAor
ICAgICAgICAvLyBhbmQgdHJ5UmVtb3ZlRXZlbnRMaXN0ZW5lcigpIGFib3ZlIHdpbGwgZmFpbC4g
V29yayBhcm91bmQgdGhhdCB2ZXJ5IHNlbGRvbSBwcm9ibGVtLgorICAgICAgICBFdmVudFRhcmdl
dERhdGEqIGRhdGEgPSBzaGFkb3dUcmVlRWxlbWVudC0+ZXZlbnRUYXJnZXREYXRhKCk7CisgICAg
ICAgIEFTU0VSVChkYXRhKTsKKworICAgICAgICBFdmVudExpc3RlbmVyTWFwOjppdGVyYXRvciBy
ZXN1bHQgPSBkYXRhLT5ldmVudExpc3RlbmVyTWFwLmZpbmQoZXZlbnRUeXBlKTsKKyAgICAgICAg
QVNTRVJUKHJlc3VsdCAhPSBkYXRhLT5ldmVudExpc3RlbmVyTWFwLmVuZCgpKTsKKworICAgICAg
ICBFdmVudExpc3RlbmVyVmVjdG9yKiBlbnRyeSA9IHJlc3VsdC0+c2Vjb25kOworICAgICAgICBB
U1NFUlQoZW50cnkpOworCisgICAgICAgIHVuc2lnbmVkIGludCBpbmRleCA9IDA7CisgICAgICAg
IGJvb2wgZm91bmRMaXN0ZW5lciA9IGZhbHNlOworCisgICAgICAgIEV2ZW50TGlzdGVuZXJWZWN0
b3I6Oml0ZXJhdG9yIGVuZCA9IGVudHJ5LT5lbmQoKTsKKyAgICAgICAgZm9yIChFdmVudExpc3Rl
bmVyVmVjdG9yOjppdGVyYXRvciBpdCA9IGVudHJ5LT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKKyAgICAgICAgICAgIGlmICghKCppdCkubGlzdGVuZXItPndhc0NyZWF0ZWRGcm9tTWFya3Vw
KCkpIHsKKyAgICAgICAgICAgICAgICArK2luZGV4OworICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3VuZExpc3RlbmVyID0gdHJ1ZTsKKyAg
ICAgICAgICAgIGVudHJ5LT5yZW1vdmUoaW5kZXgpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKworICAgICAgICBBU1NFUlQoZm91bmRMaXN0ZW5lcik7CisKKyAgICAgICAgaWYgKGVu
dHJ5LT5pc0VtcHR5KCkpIHsgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBkZWxldGUgZW50
cnk7CisgICAgICAgICAgICBkYXRhLT5ldmVudExpc3RlbmVyTWFwLnJlbW92ZShyZXN1bHQpOwor
ICAgICAgICB9CisgICAgfQorCiAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKIH0KIAogRXZlbnRU
YXJnZXREYXRhKiBOb2RlOjpldmVudFRhcmdldERhdGEoKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudEluc3RhbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdFbGVtZW50
SW5zdGFuY2UuY3BwCShyZXZpc2lvbiA1MzUxOSkKKysrIFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJ
bnN0YW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICAgIENvcHly
aWdodCAoQykgMjAwNywgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9y
Zz4KKyAgICBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM5LDEzICs0MCw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBXVEY6OlJlZkNvdW50ZWRMZWFrQ291bnRlciBp
bnN0YW5jZUNvdW50ZXIoIldlYkNvcmVTVkdFbGVtZW50SW5zdGFuY2UiKTsKICNlbmRpZgogCi1z
dGF0aWMgRXZlbnRUYXJnZXREYXRhJiBkdW1teUV2ZW50VGFyZ2V0RGF0YSgpCi17Ci0gICAgREVG
SU5FX1NUQVRJQ19MT0NBTChFdmVudFRhcmdldERhdGEsIGR1bW15RXZlbnRUYXJnZXREYXRhLCAo
KSk7Ci0gICAgZHVtbXlFdmVudFRhcmdldERhdGEuZXZlbnRMaXN0ZW5lck1hcC5jbGVhcigpOwot
ICAgIHJldHVybiBkdW1teUV2ZW50VGFyZ2V0RGF0YTsKLX0KLQogU1ZHRWxlbWVudEluc3RhbmNl
OjpTVkdFbGVtZW50SW5zdGFuY2UoU1ZHVXNlRWxlbWVudCogdXNlRWxlbWVudCwgUGFzc1JlZlB0
cjxTVkdFbGVtZW50PiBvcmlnaW5hbEVsZW1lbnQpCiAgICAgOiBtX3VzZUVsZW1lbnQodXNlRWxl
bWVudCkKICAgICAsIG1fZWxlbWVudChvcmlnaW5hbEVsZW1lbnQpCkBAIC05NSwxMCArODksMTAg
QEAgdm9pZCBTVkdFbGVtZW50SW5zdGFuY2U6OmFwcGVuZENoaWxkKFBhcwogCiB2b2lkIFNWR0Vs
ZW1lbnRJbnN0YW5jZTo6aW52YWxpZGF0ZUFsbEluc3RhbmNlc09mRWxlbWVudChTVkdFbGVtZW50
KiBlbGVtZW50KQogewotICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC0+aXNTdHlsZWQoKSkK
KyAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChzdGF0aWNfY2Fz
dDxTVkdTdHlsZWRFbGVtZW50Kj4oZWxlbWVudCktPmluc3RhbmNlVXBkYXRlc0Jsb2NrZWQoKSkK
KyAgICBpZiAoZWxlbWVudC0+aXNTdHlsZWQoKSAmJiBzdGF0aWNfY2FzdDxTVkdTdHlsZWRFbGVt
ZW50Kj4oZWxlbWVudCktPmluc3RhbmNlVXBkYXRlc0Jsb2NrZWQoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgSGFzaFNldDxTVkdFbGVtZW50SW5zdGFuY2UqPiBzZXQgPSBlbGVtZW50LT5pbnN0
YW5jZXNGb3JFbGVtZW50KCk7CkBAIC0xMTcsMzAgKzExMSwyMiBAQCB2b2lkIFNWR0VsZW1lbnRJ
bnN0YW5jZTo6aW52YWxpZGF0ZUFsbEluCiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFNWR0Vs
ZW1lbnRJbnN0YW5jZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7Ci0gICAgaWYg
KFNWR0VsZW1lbnQqIGVsZW1lbnQgPSBjb3JyZXNwb25kaW5nRWxlbWVudCgpKQotICAgICAgICBy
ZXR1cm4gZWxlbWVudC0+ZG9jdW1lbnQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9l
bGVtZW50LT5kb2N1bWVudCgpOwogfQogCiBib29sIFNWR0VsZW1lbnRJbnN0YW5jZTo6YWRkRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVu
dExpc3RlbmVyPiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewotICAgIGlmICghY29ycmVz
cG9uZGluZ0VsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBjb3Jy
ZXNwb25kaW5nRWxlbWVudCgpLT5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIs
IHVzZUNhcHR1cmUpOworICAgIHJldHVybiBtX2VsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZl
bnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CiB9CiAKIGJvb2wgU1ZHRWxlbWVudEluc3Rh
bmNlOjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBF
dmVudExpc3RlbmVyKiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewotICAgIGlmICghY29y
cmVzcG9uZGluZ0VsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBj
b3JyZXNwb25kaW5nRWxlbWVudCgpLT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlz
dGVuZXIsIHVzZUNhcHR1cmUpOworICAgIHJldHVybiBtX2VsZW1lbnQtPnJlbW92ZUV2ZW50TGlz
dGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CiB9CiAKIHZvaWQgU1ZHRWxl
bWVudEluc3RhbmNlOjpyZW1vdmVBbGxFdmVudExpc3RlbmVycygpCiB7Ci0gICAgaWYgKCFjb3Jy
ZXNwb25kaW5nRWxlbWVudCgpKQotICAgICAgICByZXR1cm47Ci0gICAgY29ycmVzcG9uZGluZ0Vs
ZW1lbnQoKS0+cmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKKyAgICBtX2VsZW1lbnQtPnJlbW92
ZUFsbEV2ZW50TGlzdGVuZXJzKCk7CiB9CiAKIGJvb2wgU1ZHRWxlbWVudEluc3RhbmNlOjpkaXNw
YXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IHBycEV2ZW50KQpAQCAtMTYwLDE0ICsxNDYsMTcg
QEAgYm9vbCBTVkdFbGVtZW50SW5zdGFuY2U6OmRpc3BhdGNoRXZlbnQoUAogCiBFdmVudFRhcmdl
dERhdGEqIFNWR0VsZW1lbnRJbnN0YW5jZTo6ZXZlbnRUYXJnZXREYXRhKCkKIHsKLSAgICByZXR1
cm4gY29ycmVzcG9uZGluZ0VsZW1lbnQoKSA/IGNvcnJlc3BvbmRpbmdFbGVtZW50KCktPmV2ZW50
VGFyZ2V0RGF0YSgpIDogMDsKKyAgICByZXR1cm4gbV9lbGVtZW50LT5ldmVudFRhcmdldERhdGEo
KTsKIH0KIAogRXZlbnRUYXJnZXREYXRhKiBTVkdFbGVtZW50SW5zdGFuY2U6OmVuc3VyZUV2ZW50
VGFyZ2V0RGF0YSgpCiB7Ci0gICAgcmV0dXJuICZkdW1teUV2ZW50VGFyZ2V0RGF0YSgpOyAvLyBy
ZXR1cm4gc29tZXRoaW5nLCBzbyB3ZSBkb24ndCBjcmFzaAorICAgIC8vIEF2b2lkIGNyYXNoaW5n
IC0gcmV0dXJuIGEgZGVmYXVsdCBkdW1teSB2YWx1ZQorICAgIERFRklORV9TVEFUSUNfTE9DQUwo
RXZlbnRUYXJnZXREYXRhLCBkdW1teUV2ZW50VGFyZ2V0RGF0YSwgKCkpOworICAgIGR1bW15RXZl
bnRUYXJnZXREYXRhLmV2ZW50TGlzdGVuZXJNYXAuY2xlYXIoKTsKKyAgICByZXR1cm4gJmR1bW15
RXZlbnRUYXJnZXREYXRhOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9CiAKLSNlbmRp
ZiAvLyBFTkFCTEUoU1ZHKQorI2VuZGlmCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkocmV2aXNp
b24gNTM1MTkpCisrKyBXZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODAsMTIgKzgwLDggQEAgU1ZHRWxlbWVudEluc3RhbmNlKiBTVkdVc2VFbGVtZW50Ojpp
bnN0YQogICAgIC8vIElmIHRoZXJlIGlzIG5vIGVsZW1lbnQgaW5zdGFuY2UgdHJlZSwgZm9yY2Ug
aW1tZWRpYXRlIFNWR0VsZW1lbnRJbnN0YW5jZSB0cmVlCiAgICAgLy8gY3JlYXRpb24sIGFzIHdl
IGNhbid0IHdhaXQgZm9yIHRoZSBsYXp5IGNyZWF0aW9uIHRvIGhhcHBlbiBpZiBpZS4gSlMgd2Fu
dHMgdG8KICAgICAvLyBhY2Nlc3MgdGhlIGluc3RhbmNlUm9vdCBvYmplY3QgcmlnaHQgYWZ0ZXIg
Y3JlYXRpbmcgdGhlIGVsZW1lbnQgb24tdGhlLWZseQotICAgIGlmICghbV90YXJnZXRFbGVtZW50
SW5zdGFuY2UpIHsKLSAgICAgICAgaWYgKFJlbmRlclNWR1NoYWRvd1RyZWVSb290Q29udGFpbmVy
KiBzaGFkb3dSb290ID0gc3RhdGljX2Nhc3Q8UmVuZGVyU1ZHU2hhZG93VHJlZVJvb3RDb250YWlu
ZXIqPihyZW5kZXJlcigpKSkgewotICAgICAgICAgICAgc2hhZG93Um9vdC0+bWFya1NoYWRvd1Ry
ZWVGb3JSZWNyZWF0aW9uKCk7Ci0gICAgICAgICAgICBzaGFkb3dSb290LT51cGRhdGVGcm9tRWxl
bWVudCgpOwotICAgICAgICB9Ci0gICAgfQorICAgIGlmICghbV90YXJnZXRFbGVtZW50SW5zdGFu
Y2UpCisgICAgICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNo
ZWV0cygpOwogCiAgICAgcmV0dXJuIG1fdGFyZ2V0RWxlbWVudEluc3RhbmNlLmdldCgpOwogfQpJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gNTM1MTkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0wMS0xOSAgTmlrb2xhcyBaaW1tZXJtYW5u
ICA8bnppbW1lcm1hbm5AcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBzdmcvY3VzdG9tL3VzZS1pbnN0YW5jZVJvb3QtZXZlbnQtYnViYmxp
bmcueGh0bWwgaXMgZmxha2V5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMzgzNQorCisgICAgICAgIG1vdXNlRXZlbnQgZmlyZXMgbXV0aXBsZSB0aW1l
cyBpbiBzdmcvY3VzdG9tL3VzZS1pbnN0YW5jZVJvb3QtYXMtZXZlbnQtdGFyZ2V0LnhodG1sCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjUxOQorCisg
ICAgICAgIFN0YWJpbGl6ZSA8dXNlPiBzY3JpcHRpbmcgc3VwcG9ydCAtIHVzZSB0ZXN0cyBhcmUg
cmVsaWFibGUgbm93ICh0ZXN0ZWQgdXNpbmcgLS1yZXBlYWNoLWVhY2ggNTAgLS1yYW5kb20gLXAp
CisgICAgICAgIFJlZW5hYmxlIHRoZSB0ZXN0cyBpbiBxdWVzdGlvbiBvbiBndGsgLyBxdCAvIHdp
bi4gbWFjIHdhcyBvbmx5IGFmZmVjdGVkIGZyb20gdGltZSB0byB0aW1lIChhbHdheXMgcmVwcm9k
dWNhYmxlIHVzaW5nIC0tcmVwZWF0LWVhY2ggNTAgdGhvdWdoLikKKworICAgICAgICAqIHBsYXRm
b3JtL2d0ay9Ta2lwcGVkOiBVbnNraXAgdXNlLWluc3RhbmNlUm9vdC1ldmVudC1saXN0ZW5lcnMu
eGh0bWwgLyB1c2UtaW5zdGFuY2VSb290LWV2ZW50LWJ1YmJsaW5nLnhodG1sIC8gdXNlLWluc3Rh
bmNlUm9vdC1hcy1ldmVudC10YXJnZXQueGh0bWwKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lw
cGVkOiBVbnNraXAgdXNlLWluc3RhbmNlUm9vdC1hcy1ldmVudC10YXJnZXQueGh0bWwKKyAgICAg
ICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDogRGl0dG8uCisgICAgICAgICogc3ZnL2N1c3RvbS9y
ZXNvdXJjZXMvdXNlLWluc3RhbmNlUm9vdC1ldmVudC1idWJibGluZy5qczoKKyAgICAgICAgKGV2
ZW50SGFuZGxlcik6IE5vIG5lZWQgYW55bW9yZSB0byByZWx5IG9uIGEgMTAwbXMgdGltZW91dC4K
KyAgICAgICAgKiBzdmcvY3VzdG9tL3Jlc291cmNlcy91c2UtaW5zdGFuY2VSb290LWV2ZW50LWxp
c3RlbmVycy5qczoKKyAgICAgICAgKGV2ZW50SGFuZGxlcik6IERpdHRvLgorICAgICAgICAqIHN2
Zy9jdXN0b20vdXNlLWluc3RhbmNlUm9vdC1hcy1ldmVudC10YXJnZXQtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHN2Zy9jdXN0b20vdXNlLWluc3RhbmNlUm9vdC1hcy1ldmVudC10YXJnZXQueGh0
bWw6IFJld3JvdGUgdGVzdCAtIHdlIGRvbid0IG5lZWQgdG8gd29yayBhcm91bmQgc2hhZG93IHRy
ZWUgcmVjbG9uZSBpc3N1ZXMgYW55bW9yZS4KKyAgICAgICAgKiBzdmcvY3VzdG9tL3VzZS1pbnN0
YW5jZVJvb3QtZXZlbnQtbGlzdGVuZXItbGl2ZW5lc3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBzdmcvY3VzdG9tL3VzZS1pbnN0YW5jZVJvb3QtZXZlbnQtbGlzdGVuZXItbGl2ZW5l
c3MueGh0bWw6IEFkZGVkLgorCiAyMDEwLTAxLTE3ICBKb24gSG9uZXljdXR0ICA8amhvbmV5Y3V0
dEBhcHBsZS5jb20+CiAKICAgICAgICAgTVNBQTogVGhlIGNoaWxkIDxvcHRpb24+IGVsZW1lbnRz
IG9mIGEgbm9uLW11bHRpcGxlIDxzZWxlY3Q+IGFyZSBub3QKSW5kZXg6IExheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9Ta2lwcGVkCShyZXZpc2lvbiA1MzUxOSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9T
a2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0zNjk5LDcgKzM2OTksNiBAQCBzdmcvY3VzdG9tL3N2
Zy1kaXNhbGxvd2VkLWluLWRhc2hib2FyZC1vCiBzdmcvY3VzdG9tL3N2Zy1mb250cy1pbi10ZXh0
LWNvbnRyb2xzLmh0bWwKIHN2Zy9jdXN0b20vdXNlLWVsZW1lbnRJbnN0YW5jZS1ldmVudC10YXJn
ZXQuc3ZnCiBzdmcvY3VzdG9tL3VzZS1lbGVtZW50SW5zdGFuY2UtbWV0aG9kcy5zdmcKLXN2Zy9j
dXN0b20vdXNlLWluc3RhbmNlUm9vdC1ldmVudC1saXN0ZW5lcnMueGh0bWwKIHN2Zy9jdXN0b20v
dXNlLW9uLXN5bWJvbC1pbnNpZGUtcGF0dGVybi5zdmcKIHN2Zy9jdXN0b20vdXNlLXNldEF0dHJp
YnV0ZS1jcmFzaC5zdmcKICMgICBUZXN0cyBnZW5lcmF0aW5nIG5ldyByZXN1bHRzCkBAIC01NzE4
LDExICs1NzE3LDYgQEAgZmFzdC9ldmVudHMvdG91Y2gKICMgU2VlIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjQ0MQogZmFzdC9wYXJzZXIveGh0bWwtY2xvc2Utd2hp
bGUtcGFyc2luZy54aHRtbAogCi0jIEJ1ZyAzMjUxOSAtICBtb3VzZUV2ZW50IGZpcmVzIG11dGlw
bGUgdGltZXMgaW4KLSMgICAgICAgICAgICAgIExheW91dFRlc3RzL3N2Zy9jdXN0b20vdXNlLWlu
c3RhbmNlUm9vdC1hcy1ldmVudC10YXJnZXQueGh0bWwKLSMgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTMyNTE5Ci1zdmcvY3VzdG9tL3VzZS1pbnN0YW5jZVJvb3QtYXMt
ZXZlbnQtdGFyZ2V0LnhodG1sCi0KICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMyNjA0CiAjIEZhaWxzIG9uIHRoZSByZWxlYXNlIGJvdCBiZWNhdXNlIG9mLCBhcHBh
cmVudGx5LCByb3VkaW5nIGVycm9ycwogc3ZnL2N1c3RvbS9wYXRoLWdldFRvdGFsTGVuZ3RoLnN2
ZwpAQCAtNTc3OSw4ICs1NzczLDMgQEAgc3ZnL2N1c3RvbS9yZWxhdGl2ZS1zaXplZC1kZWVwLXNo
YWRvdy10cgogc3ZnL2N1c3RvbS9yZWxhdGl2ZS1zaXplZC1zaGFkb3ctdHJlZS1jb250ZW50Lnho
dG1sCiBzdmcvY3VzdG9tL3RleHQteHktdXBkYXRlcy1TVkdMaXN0LnhodG1sCiBzdmcvdGV4dC9z
ZWxlY3Rpb24tYmFja2dyb3VuZC1jb2xvci54aHRtbAotCi0jIEZsYWtleSBTVkcgdGVzdCwgdXNl
cyAnc2V0VGltZW91dCgxMDApJwotIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzM4MzUKLXN2Zy9jdXN0b20vdXNlLWluc3RhbmNlUm9vdC1ldmVudC1idWJibGluZy54
aHRtbAotCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQJKHJldmlzaW9uIDUzNTE5KQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtNTA3Miwx
MSArNTA3Miw2IEBAIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9wYXJzZWQtaWZyYW1lLWR5bmEKICMg
VGhlIGJ1ZyB3aXRoIHRoaXMgdGVzdCBpcyB0cmFja2VkIHVuZGVyIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjUyMQogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9h
Y2Nlc3MtY29udHJvbC1iYXNpYy1kZW5pZWQtcHJlZmxpZ2h0LWNhY2hlLmh0bWwKIAotIyBCdWcg
MzI1MTkgLSAgbW91c2VFdmVudCBmaXJlcyBtdXRpcGxlIHRpbWVzIGluIAotIyAgICAgICAgICAg
ICAgTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS91c2UtaW5zdGFuY2VSb290LWFzLWV2ZW50LXRhcmdl
dC54aHRtbAotIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI1MTkK
LXN2Zy9jdXN0b20vdXNlLWluc3RhbmNlUm9vdC1hcy1ldmVudC10YXJnZXQueGh0bWwKLQogIyBN
aXNzaW5nIHZhcmlhYmxlczoKICMgU1ZHQWx0R2x5cGhFbGVtZW50LCBTVkdBbmltYXRlRWxlbWVu
dCwgU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudCwgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQKICMg
U1ZHRm9udEVsZW1lbnQsIFNWR0dseXBoRWxlbWVudCwgU1ZHTWlzc2luZ0dseXBoRWxlbWVudCwg
U1ZHRm9udEZhY2VFbGVtZW50LCBTVkdGb250RmFjZVNyY0VsZW1lbnQKSW5kZXg6IExheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRm
b3JtL3dpbi9Ta2lwcGVkCShyZXZpc2lvbiA1MzUxOSkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC03MjEsMTEgKzcyMSw2IEBAIGZhc3QvZXZl
bnRzL3RvdWNoCiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtZ2V0U1ZHRG9jdW1lbnQt
aWZyYW1lLmh0bWwKIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1nZXRTVkdEb2N1bWVu
dC1vYmplY3QuaHRtbAogCi0jIEJ1ZyAzMjUxOSAtICBtb3VzZUV2ZW50IGZpcmVzIG11dGlwbGUg
dGltZXMgaW4KLSMgICAgICAgICAgICAgIExheW91dFRlc3RzL3N2Zy9jdXN0b20vdXNlLWluc3Rh
bmNlUm9vdC1hcy1ldmVudC10YXJnZXQueGh0bWwKLSMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMyNTE5Ci1zdmcvY3VzdG9tL3VzZS1pbnN0YW5jZVJvb3QtYXMtZXZl
bnQtdGFyZ2V0LnhodG1sCi0KICMgaHR0cDovL3dlYmtpdC5vcmcvYi8zMjUzMiAtIFRpbWUgb3V0
CiBodHRwL3Rlc3RzL25hdmlnYXRpb24vZHluYW1pYy1pZnJhbWUtZHluYW1pYy1mb3JtLWJhY2st
ZW50cnkuaHRtbAogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhcnNlZC1pZnJhbWUtZHluYW1pYy1m
b3JtLWJhY2stZW50cnkuaHRtbApJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS91c2UtaW5z
dGFuY2VSb290LWFzLWV2ZW50LXRhcmdldC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvc3ZnL2N1c3RvbS91c2UtaW5zdGFuY2VSb290LWFzLWV2ZW50LXRhcmdldC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDUzNTE5KQorKysgTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS91c2Ut
aW5zdGFuY2VSb290LWFzLWV2ZW50LXRhcmdldC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDcgKzMyLDcgQEAgUEFTUyBjdXJyZW50RXZlbnQudGFyZ2V0ID09IGN1cnJlbnRFdmVu
dAogUEFTUyBjdXJyZW50RXZlbnQudGFyZ2V0LmNvcnJlc3BvbmRpbmdFbGVtZW50ID09IGN1cnJl
bnRFdmVudC5jdXJyZW50VGFyZ2V0LmNvcnJlc3BvbmRpbmdFbGVtZW50IGlzIHRydWUKIFBBU1Mg
Y3VycmVudEV2ZW50LnRhcmdldC5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCA9PSBjdXJyZW50RXZl
bnQuY3VycmVudFRhcmdldC5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCBpcyB0cnVlCiAKLVRlc3Qg
IzM6IFZlcmlmeSB0aGF0IGV2ZW50IGxpc3RlbmVycyBhdHRhY2hlZCB0byB0aGUgc2hhZG93IHRy
ZWUgZWxlbWVudHMgYXJlIGNvcGllZCB3aGVuIHVzZSByZWNsb25lcyB0aGUgaW50ZXJuYWwgc2hh
ZG93IHRyZWUKK1Rlc3QgIzM6IFZlcmlmeSB0aGF0IGV2ZW50cyBkaXNwYXRjaGVkIGJ5IHRoZSB1
c2VyIGVuZCB1cCBvbiB0aGUgU1ZHRWxlbWVudEluc3RhbmNlIG9iamVjdHMKIAogUEFTUyBjdXJy
ZW50RXZlbnQudG9TdHJpbmcoKSBpcyAiW29iamVjdCBNb3VzZUV2ZW50XSIKIFBBU1MgY3VycmVu
dEV2ZW50LnR5cGUudG9TdHJpbmcoKSBpcyAibW91c2VvdmVyIgpAQCAtNDYsMzUgKzQ2LDcgQEAg
UEFTUyBjdXJyZW50RXZlbnQudGFyZ2V0ID09IGN1cnJlbnRFdmVudAogUEFTUyBjdXJyZW50RXZl
bnQudGFyZ2V0LmNvcnJlc3BvbmRpbmdFbGVtZW50ID09IGN1cnJlbnRFdmVudC5jdXJyZW50VGFy
Z2V0LmNvcnJlc3BvbmRpbmdFbGVtZW50IGlzIHRydWUKIFBBU1MgY3VycmVudEV2ZW50LnRhcmdl
dC5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCA9PSBjdXJyZW50RXZlbnQuY3VycmVudFRhcmdldC5j
b3JyZXNwb25kaW5nVXNlRWxlbWVudCBpcyB0cnVlCiAKLVRlc3QgIzQ6IFZlcmlmeSB0aGF0IGV2
ZW50cyBkaXNwYXRjaGVkIHRvIHRoZSByZWZlcmVuY2VkIGVsZW1lbnQgZW5kIHVwIG9uIHRoZSBT
VkVsZW1lbnRJbnN0YW5jZSBvYmplY3RzCi0KLVBBU1MgY3VycmVudEV2ZW50LnRvU3RyaW5nKCkg
aXMgIltvYmplY3QgTW91c2VFdmVudF0iCi1QQVNTIGN1cnJlbnRFdmVudC50eXBlLnRvU3RyaW5n
KCkgaXMgIm1vdXNlb3ZlciIKLVBBU1MgY3VycmVudEV2ZW50LnRhcmdldC50b1N0cmluZygpIGlz
ICJbb2JqZWN0IFNWR0VsZW1lbnRJbnN0YW5jZV0iCi1QQVNTIGN1cnJlbnRFdmVudC5jdXJyZW50
VGFyZ2V0LnRvU3RyaW5nKCkgaXMgIltvYmplY3QgU1ZHRWxlbWVudEluc3RhbmNlXSIKLVBBU1Mg
Y3VycmVudEV2ZW50LnRhcmdldC5jb3JyZXNwb25kaW5nRWxlbWVudCA9PSByZWN0RWxlbWVudCBp
cyB0cnVlCi1QQVNTIGN1cnJlbnRFdmVudC50YXJnZXQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQg
PT0gdXNlRWxlbWVudCBpcyB0cnVlCi1QQVNTIGN1cnJlbnRFdmVudC5jdXJyZW50VGFyZ2V0LmNv
cnJlc3BvbmRpbmdFbGVtZW50ID09IHJlY3RFbGVtZW50IGlzIHRydWUKLVBBU1MgY3VycmVudEV2
ZW50LmN1cnJlbnRUYXJnZXQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQgPT0gdXNlRWxlbWVudCBp
cyB0cnVlCi1QQVNTIGN1cnJlbnRFdmVudC50YXJnZXQgPT0gY3VycmVudEV2ZW50LmN1cnJlbnRU
YXJnZXQgaXMgdHJ1ZQotUEFTUyBjdXJyZW50RXZlbnQudGFyZ2V0LmNvcnJlc3BvbmRpbmdFbGVt
ZW50ID09IGN1cnJlbnRFdmVudC5jdXJyZW50VGFyZ2V0LmNvcnJlc3BvbmRpbmdFbGVtZW50IGlz
IHRydWUKLVBBU1MgY3VycmVudEV2ZW50LnRhcmdldC5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCA9
PSBjdXJyZW50RXZlbnQuY3VycmVudFRhcmdldC5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCBpcyB0
cnVlCi0KLVRlc3QgIzU6IFZlcmlmeSB0aGF0IGV2ZW50IGxpc3RlbmVycyBhdHRhY2hlZCB0byB0
aGUgcmVmZXJlbmNlZCBlbGVtZW50cyBhcmUgY29waWVkIHdoZW4gdXNlIHJlY2xvbmVzIHRoZSBp
bnRlcm5hbCBzaGFkb3cgdHJlZQotCi1QQVNTIGN1cnJlbnRFdmVudC50b1N0cmluZygpIGlzICJb
b2JqZWN0IE1vdXNlRXZlbnRdIgotUEFTUyBjdXJyZW50RXZlbnQudHlwZS50b1N0cmluZygpIGlz
ICJtb3VzZW92ZXIiCi1QQVNTIGN1cnJlbnRFdmVudC50YXJnZXQudG9TdHJpbmcoKSBpcyAiW29i
amVjdCBTVkdFbGVtZW50SW5zdGFuY2VdIgotUEFTUyBjdXJyZW50RXZlbnQuY3VycmVudFRhcmdl
dC50b1N0cmluZygpIGlzICJbb2JqZWN0IFNWR0VsZW1lbnRJbnN0YW5jZV0iCi1QQVNTIGN1cnJl
bnRFdmVudC50YXJnZXQuY29ycmVzcG9uZGluZ0VsZW1lbnQgPT0gcmVjdEVsZW1lbnQgaXMgdHJ1
ZQotUEFTUyBjdXJyZW50RXZlbnQudGFyZ2V0LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50ID09IHVz
ZUVsZW1lbnQgaXMgdHJ1ZQotUEFTUyBjdXJyZW50RXZlbnQuY3VycmVudFRhcmdldC5jb3JyZXNw
b25kaW5nRWxlbWVudCA9PSByZWN0RWxlbWVudCBpcyB0cnVlCi1QQVNTIGN1cnJlbnRFdmVudC5j
dXJyZW50VGFyZ2V0LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50ID09IHVzZUVsZW1lbnQgaXMgdHJ1
ZQotUEFTUyBjdXJyZW50RXZlbnQudGFyZ2V0ID09IGN1cnJlbnRFdmVudC5jdXJyZW50VGFyZ2V0
IGlzIHRydWUKLVBBU1MgY3VycmVudEV2ZW50LnRhcmdldC5jb3JyZXNwb25kaW5nRWxlbWVudCA9
PSBjdXJyZW50RXZlbnQuY3VycmVudFRhcmdldC5jb3JyZXNwb25kaW5nRWxlbWVudCBpcyB0cnVl
Ci1QQVNTIGN1cnJlbnRFdmVudC50YXJnZXQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQgPT0gY3Vy
cmVudEV2ZW50LmN1cnJlbnRUYXJnZXQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQgaXMgdHJ1ZQot
Ci1UZXN0ICM2OiBWZXJpZnkgdGhhdCBhIGNsaWNrIGV2ZW50IGdvdCBkaXNwYXRjaGVkIHRvIHRo
ZSBvcmlnaW5hbCB0cmVlIGFzIGRlZmluZWQgaW4gdGhlIG1hcmt1cCwgd2hlbiBzZW50IHRvIHRo
ZSAncmVjdEVsZW1lbnQnCitUZXN0ICM0OiBWZXJpZnkgdGhhdCBhIGNsaWNrIGV2ZW50IGdvdCBk
aXNwYXRjaGVkIHRvIHRoZSBvcmlnaW5hbCB0cmVlIGFzIGRlZmluZWQgaW4gdGhlIG1hcmt1cCwg
d2hlbiBzZW50IHRvIHRoZSAncmVjdEVsZW1lbnQnCiAKIFBBU1MgY3VycmVudEV2ZW50LnRvU3Ry
aW5nKCkgaXMgIltvYmplY3QgTW91c2VFdmVudF0iCiBQQVNTIGN1cnJlbnRFdmVudC50eXBlLnRv
U3RyaW5nKCkgaXMgImNsaWNrIgpAQCAtODQsMjEgKzU2LDcgQEAgUEFTUyBjdXJyZW50RXZlbnQu
dGFyZ2V0ID09IHJlY3RFbGVtZW50IAogUEFTUyBjdXJyZW50RXZlbnQuY3VycmVudFRhcmdldCA9
PSByZWN0RWxlbWVudCBpcyB0cnVlCiBQQVNTIGN1cnJlbnRFdmVudC50YXJnZXQgPT0gY3VycmVu
dEV2ZW50LmN1cnJlbnRUYXJnZXQgaXMgdHJ1ZQogCi1UZXN0ICM3OiBWZXJpZnkgdGhhdCBhIGNs
aWNrIGV2ZW50IGdvdCBkaXNwYXRjaGVkIHRvIHRoZSBpbnN0YW5jZSB0cmVlIHdoZW4gc2VudCB0
byB0aGUgJ3VzZUVsZW1lbnQuaW5zdGFuY2VSb290JyB3aXRoIGFuIGV2ZW50IGxpc3RlbmVyIGF0
dGFjaGVkIHRvICdyZWN0RWxlbWVudCcKLQotUEFTUyBjdXJyZW50RXZlbnQudG9TdHJpbmcoKSBp
cyAiW29iamVjdCBNb3VzZUV2ZW50XSIKLVBBU1MgY3VycmVudEV2ZW50LnR5cGUudG9TdHJpbmco
KSBpcyAiY2xpY2siCi1QQVNTIGN1cnJlbnRFdmVudC50YXJnZXQudG9TdHJpbmcoKSBpcyAiW29i
amVjdCBTVkdFbGVtZW50SW5zdGFuY2VdIgotUEFTUyBjdXJyZW50RXZlbnQuY3VycmVudFRhcmdl
dC50b1N0cmluZygpIGlzICJbb2JqZWN0IFNWR0VsZW1lbnRJbnN0YW5jZV0iCi1QQVNTIGN1cnJl
bnRFdmVudC50YXJnZXQuY29ycmVzcG9uZGluZ0VsZW1lbnQgPT0gcmVjdEVsZW1lbnQgaXMgdHJ1
ZQotUEFTUyBjdXJyZW50RXZlbnQudGFyZ2V0LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50ID09IHVz
ZUVsZW1lbnQgaXMgdHJ1ZQotUEFTUyBjdXJyZW50RXZlbnQuY3VycmVudFRhcmdldC5jb3JyZXNw
b25kaW5nRWxlbWVudCA9PSByZWN0RWxlbWVudCBpcyB0cnVlCi1QQVNTIGN1cnJlbnRFdmVudC5j
dXJyZW50VGFyZ2V0LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50ID09IHVzZUVsZW1lbnQgaXMgdHJ1
ZQotUEFTUyBjdXJyZW50RXZlbnQudGFyZ2V0ID09IGN1cnJlbnRFdmVudC5jdXJyZW50VGFyZ2V0
IGlzIHRydWUKLVBBU1MgY3VycmVudEV2ZW50LnRhcmdldC5jb3JyZXNwb25kaW5nRWxlbWVudCA9
PSBjdXJyZW50RXZlbnQuY3VycmVudFRhcmdldC5jb3JyZXNwb25kaW5nRWxlbWVudCBpcyB0cnVl
Ci1QQVNTIGN1cnJlbnRFdmVudC50YXJnZXQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQgPT0gY3Vy
cmVudEV2ZW50LmN1cnJlbnRUYXJnZXQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQgaXMgdHJ1ZQot
Ci1UZXN0ICM4OiBWZXJpZnkgdGhhdCB0aGUgb3JpZ2luYWwgY2xpY2sgZXZlbnQgbGlzdGVuZXIg
ZGVmaW5lZCBpbiBtYXJrdXAgaXMgc3RpbGwgd29ya2luZyBwcm9wZXJseQorVGVzdCAjNTogVmVy
aWZ5IHRoYXQgYSBjbGljayBldmVudCBnb3QgZGlzcGF0Y2hlZCB0byB0aGUgaW5zdGFuY2UgdHJl
ZSB3aGVuIHNlbnQgdG8gdGhlICd1c2VFbGVtZW50Lmluc3RhbmNlUm9vdCcgd2l0aCBhbiBldmVu
dCBsaXN0ZW5lciBhdHRhY2hlZCB0byAncmVjdEVsZW1lbnQnCiAKIFBBU1MgY3VycmVudEV2ZW50
LnRvU3RyaW5nKCkgaXMgIltvYmplY3QgTW91c2VFdmVudF0iCiBQQVNTIGN1cnJlbnRFdmVudC50
eXBlLnRvU3RyaW5nKCkgaXMgImNsaWNrIgpAQCAtMTEyLDcgKzcwLDcgQEAgUEFTUyBjdXJyZW50
RXZlbnQudGFyZ2V0ID09IGN1cnJlbnRFdmVudAogUEFTUyBjdXJyZW50RXZlbnQudGFyZ2V0LmNv
cnJlc3BvbmRpbmdFbGVtZW50ID09IGN1cnJlbnRFdmVudC5jdXJyZW50VGFyZ2V0LmNvcnJlc3Bv
bmRpbmdFbGVtZW50IGlzIHRydWUKIFBBU1MgY3VycmVudEV2ZW50LnRhcmdldC5jb3JyZXNwb25k
aW5nVXNlRWxlbWVudCA9PSBjdXJyZW50RXZlbnQuY3VycmVudFRhcmdldC5jb3JyZXNwb25kaW5n
VXNlRWxlbWVudCBpcyB0cnVlCiAKLVRlc3QgIzk6IFZlcmlmeSB0aGF0IHRoZSBvcmlnaW5hbCBj
bGljayBldmVudCBsaXN0ZW5lciBnb3QgcmVtb3ZlZCBhbmQgYSBuZXcgb25lIGF0dGFjaGVkIHRv
IHRoZSB1c2Ugcm9vdCBTVkdFbGVtZW50SW5zdGFuY2UKK1Rlc3QgIzY6IFZlcmlmeSB0aGF0IHRo
ZSBvcmlnaW5hbCBjbGljayBldmVudCBsaXN0ZW5lciBnb3QgcmVtb3ZlZCBhbmQgYSBuZXcgb25l
IGF0dGFjaGVkIGlzIGF0dGFjaGVkIHRvIHRoZSB1c2Ugcm9vdCBTVkdFbGVtZW50SW5zdGFuY2UK
IAogUEFTUyBjdXJyZW50RXZlbnQudG9TdHJpbmcoKSBpcyAiW29iamVjdCBNb3VzZUV2ZW50XSIK
IFBBU1MgY3VycmVudEV2ZW50LnR5cGUudG9TdHJpbmcoKSBpcyAiY2xpY2siCkBAIC0xMjYsNyAr
ODQsNyBAQCBQQVNTIGN1cnJlbnRFdmVudC50YXJnZXQgPT0gY3VycmVudEV2ZW50CiBQQVNTIGN1
cnJlbnRFdmVudC50YXJnZXQuY29ycmVzcG9uZGluZ0VsZW1lbnQgPT0gY3VycmVudEV2ZW50LmN1
cnJlbnRUYXJnZXQuY29ycmVzcG9uZGluZ0VsZW1lbnQgaXMgdHJ1ZQogUEFTUyBjdXJyZW50RXZl
bnQudGFyZ2V0LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50ID09IGN1cnJlbnRFdmVudC5jdXJyZW50
VGFyZ2V0LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50IGlzIHRydWUKIAotVGVzdCAjMTA6IFZlcmlm
eSB0aGF0IHRoZSBzaW11bGF0ZWQgY2xpY2sgZXZlbnQgZ290IGRpc3BhdGNoZWQgdG8gdGhlIHJp
Z2h0IHRhcmdldAorVGVzdCAjODogVmVyaWZ5IHRoYXQgdGhlIHNpbXVsYXRlZCBjbGljayBldmVu
dCBnb3QgZGlzcGF0Y2hlZCB0byB0aGUgcmlnaHQgdGFyZ2V0CiAKIFBBU1MgY3VycmVudEV2ZW50
LnRvU3RyaW5nKCkgaXMgIltvYmplY3QgTW91c2VFdmVudF0iCiBQQVNTIGN1cnJlbnRFdmVudC50
eXBlLnRvU3RyaW5nKCkgaXMgImNsaWNrIgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS91
c2UtaW5zdGFuY2VSb290LWFzLWV2ZW50LXRhcmdldC54aHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9zdmcvY3VzdG9tL3VzZS1pbnN0YW5jZVJvb3QtYXMtZXZlbnQtdGFyZ2V0LnhodG1s
CShyZXZpc2lvbiA1MzUxOSkKKysrIExheW91dFRlc3RzL3N2Zy9jdXN0b20vdXNlLWluc3RhbmNl
Um9vdC1hcy1ldmVudC10YXJnZXQueGh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTksMjMgKzksMzYg
QEAKICAgPGRlZnM+CiAgICAgICA8cmVjdCBpZD0idGFyZ2V0IiBmaWxsPSJyZWQiIHdpZHRoPSIx
MDAiIGhlaWdodD0iMTAwIiBvbmNsaWNrPSJldmVudEhhbmRsZXIoZXZ0KSIvPgogICA8L2RlZnM+
Ci0gIDx1c2UgaWQ9InRlc3QiIHhsaW5rOmhyZWY9InVybCgjdGFyZ2V0KSIvPgorICA8dXNlIGlk
PSJ0ZXN0IiB4bGluazpocmVmPSIjdGFyZ2V0Ii8+CiA8L3N2Zz4KIAogPHAgaWQ9ImRlc2NyaXB0
aW9uIi8+CiA8ZGl2IGlkPSJjb25zb2xlIi8+CiAKIDxzY3JpcHQ+Ci12YXIgY3VycmVudEV2ZW50
OwotdmFyIG5leHRFdmVudFR5cGU7Ci12YXIgZXZlbnROb3RpZmljYXRpb247CisvLyBTZXR0aW5n
IHVwIHRoZSB0ZXN0Y2FzZQoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK3ZhciB1c2VFbGVtZW50ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKK3ZhciByZWN0RWxlbWVudCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKTsKIAorLy8gU3RhcnQgdGVzdCBpbW1lZGlhdGVs
eSwgdG8gc2VlIHdoZXRlciBpbnN0YW5jZVJvb3QgaXMgYWxyZWFkeSBhdmFpbGFibGUsIGFzIGV4
cGVjdGVkLgorZGVzY3JpcHRpb24oIlRlc3QgU1ZHIHVzZSBlbGVtZW50IHNwZWNpZmljIGV2ZW50
IGhhbmRsaW5nIHVzaW5nIFNWR0VsZW1lbnRJbnN0YW5jZTogIik7CitkZWJ1ZygiJ3VzZUVsZW1l
bnQnIGlzIHRoZSBvcmlnaW5hbCB1c2UgZWxlbWVudCIpOworZGVidWcoIidyZWN0RWxlbWVudCcg
aXMgdGhlIG9yaWdpbmFsIGVsZW1lbnQgd2hpY2ggZ2V0cyBjbG9uZWQgYnkgdGhlIHVzZSBlbGVt
ZW50Iik7CitldmVudFRlc3RPbmUoKTsKKworLy8gSGVscGVyIGZ1bmN0aW9ucwogZnVuY3Rpb24g
ZXZlbnRIYW5kbGVyKGV2dCkKIHsKLSAgICBpZiAoZXZ0LnR5cGUgIT0gbmV4dEV2ZW50VHlwZSkK
KyAgICBpZiAoZXZ0LnR5cGUgIT0gbmV4dEV2ZW50VHlwZSkgeworICAgICAgICBkZWJ1ZygiUkVD
RUlWRUQgVU5FWFBFQ1RFRCBFVkVOVCEgc2hvdWxkQmU9JyIgKyBuZXh0RXZlbnRUeXBlICsgIicg
d2FzPSciICsgZXZ0LnR5cGUgKyAiJyIpOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAg
Y3VycmVudEV2ZW50ID0gZXZ0OworICAgIG5leHRFdmVudFR5cGUgPSAibm90IHlldCBzZXQiOwog
ICAgIGV2YWwoZXZlbnROb3RpZmljYXRpb24pOwogfQogCkBAIC0zNSw4ICs0OCwxMiBAQCBmdW5j
dGlvbiBmaXJlTW91c2VPdmVyRXZlbnQobmV3RXZlbnROb3RpCiAgICAgbmV4dEV2ZW50VHlwZSA9
ICJtb3VzZW92ZXIiOwogICAgIGV2ZW50Tm90aWZpY2F0aW9uID0gbmV3RXZlbnROb3RpZmljYXRp
b247CiAKLSAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKQotICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyg1MCwgNTApOworICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKDIwMCwgMjAwKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDUw
LCA1MCk7CisgICAgICAgIH0sIDApOworICAgIH0KIH0KIAogZnVuY3Rpb24gZmlyZU1vdXNlQ2xp
Y2tFdmVudChuZXdFdmVudE5vdGlmaWNhdGlvbikKQEAgLTQ2LDE2ICs2MywxOCBAQCBmdW5jdGlv
biBmaXJlTW91c2VDbGlja0V2ZW50KG5ld0V2ZW50Tm90CiAgICAgZXZlbnROb3RpZmljYXRpb24g
PSBuZXdFdmVudE5vdGlmaWNhdGlvbjsKIAogICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsK
LSAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oNTAsIDUwKTsKLSAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VEb3duKCk7Ci0gICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKDUwLCA1MCk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgfSwgMCk7CiAgICAgfQog
fQogCi1mdW5jdGlvbiBmaXJlU2ltdWxhdGVkTW91c2VDbGlja0V2ZW50KG5ld0V2ZW50Tm90aWZp
Y2F0aW9uLCBldmVudFRhcmdldCkKK2Z1bmN0aW9uIGZpcmVTaW11bGF0ZWRNb3VzZU92ZXJFdmVu
dChuZXdFdmVudE5vdGlmaWNhdGlvbiwgZXZlbnRUYXJnZXQpCiB7CiAgICAgY3VycmVudEV2ZW50
ID0gdW5kZWZpbmVkOwotICAgIG5leHRFdmVudFR5cGUgPSAiY2xpY2siOworICAgIG5leHRFdmVu
dFR5cGUgPSAibW91c2VvdmVyIjsKICAgICBldmVudE5vdGlmaWNhdGlvbiA9IG5ld0V2ZW50Tm90
aWZpY2F0aW9uOwogCiAgICAgdmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNl
RXZlbnRzIik7CkBAIC02NCwxMSArODMsMTcgQEAgZnVuY3Rpb24gZmlyZVNpbXVsYXRlZE1vdXNl
Q2xpY2tFdmVudChuZQogICAgIGV2ZW50VGFyZ2V0LmRpc3BhdGNoRXZlbnQoZXZlbnQpOwogfQog
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKK2Z1bmN0aW9uIGZpcmVTaW11bGF0ZWRNb3VzZUNsaWNrRXZl
bnQobmV3RXZlbnROb3RpZmljYXRpb24sIGV2ZW50VGFyZ2V0KQoreworICAgIGN1cnJlbnRFdmVu
dCA9IHVuZGVmaW5lZDsKKyAgICBuZXh0RXZlbnRUeXBlID0gImNsaWNrIjsKKyAgICBldmVudE5v
dGlmaWNhdGlvbiA9IG5ld0V2ZW50Tm90aWZpY2F0aW9uOwogCi12YXIgdXNlRWxlbWVudCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7Ci12YXIgcmVjdEVsZW1lbnQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iik7CisgICAgdmFyIGV2ZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRXZlbnQoIk1vdXNlRXZlbnRzIik7CisgICAgZXZlbnQuaW5pdE1vdXNlRXZlbnQobmV4dEV2
ZW50VHlwZSwgdHJ1ZSwgdHJ1ZSwgZG9jdW1lbnQuZGVmYXVsdFZpZXcsIDEsIDAsIDAsIDAsIDAs
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAwLCBudWxsKTsKKworICAgIGV2ZW50VGFyZ2V0
LmRpc3BhdGNoRXZlbnQoZXZlbnQpOworfQogCiBmdW5jdGlvbiB2ZXJpZnlFdmVudChldnRTdHJp
bmcsIHRhcmdldFN0cmluZywgY3VycmVudFRhcmdldFN0cmluZykKIHsKQEAgLTExMywzMyArMTM4
LDQxIEBAIGZ1bmN0aW9uIHZlcmlmeUNsaWNrRXZlbnRPblJlZmVyZW5jZWQoKQogICAgIHNob3Vs
ZEJlVHJ1ZSgiY3VycmVudEV2ZW50LnRhcmdldCA9PSBjdXJyZW50RXZlbnQuY3VycmVudFRhcmdl
dCIpOwogfQogCi1kZXNjcmlwdGlvbigiVGVzdCBTVkcgdXNlIGVsZW1lbnQgc3BlY2lmaWMgZXZl
bnQgaGFuZGxpbmcgdXNpbmcgU1ZHRWxlbWVudEluc3RhbmNlOiAiKTsKLWRlYnVnKCIndXNlRWxl
bWVudCcgaXMgdGhlIG9yaWdpbmFsIHVzZSBlbGVtZW50Iik7Ci1kZWJ1ZygiJ3JlY3RFbGVtZW50
JyBpcyB0aGUgb3JpZ2luYWwgZWxlbWVudCB3aGljaCBnZXRzIGNsb25lZCBieSB0aGUgdXNlIGVs
ZW1lbnQiKTsKK2Z1bmN0aW9uIGNoZWNrRXZlbnRMaXN0ZW5lck5vdFJlYWNoYWJsZSgpCit7Cisg
ICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJZT1UgU0hPVUxEIE5PVCBTRUUgVEhJUyBURVhULiBP
VEhFUldISVNFIFJFTU9WSU5HIEVWRU5UIExJU1RFTkVSUyBGQUlMRUQhIik7CisgICAgZGVidWco
IiIpOworfQogCi1kZWJ1ZygiIik7Ci1kZWJ1ZygiVGVzdCAjMTogVmVyaWZ5IHRoYXQgdGhlIHVz
ZSBlbGVtZW50IGFuZCB0aGUgY29udGFpbmVkIFNWR0VsZW1lbnRJbnN0YW5jZSBvYmplY3RzIGFy
ZSB2YWxpZCIpOwotZGVidWcoIiIpOworLy8gRXZlbnQgdGVzdCBzZWN0aW9ucworZnVuY3Rpb24g
ZXZlbnRUZXN0T25lKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3QgIzE6IFZl
cmlmeSB0aGF0IHRoZSB1c2UgZWxlbWVudCBhbmQgdGhlIGNvbnRhaW5lZCBTVkdFbGVtZW50SW5z
dGFuY2Ugb2JqZWN0cyBhcmUgdmFsaWQiKTsKKyAgICBkZWJ1ZygiIik7CiAKLXNob3VsZEJlRXF1
YWxUb1N0cmluZygidXNlRWxlbWVudC50b1N0cmluZygpIiwgIltvYmplY3QgU1ZHVXNlRWxlbWVu
dF0iKTsKLXNob3VsZEJlRXF1YWxUb1N0cmluZygidXNlRWxlbWVudC5pbnN0YW5jZVJvb3QudG9T
dHJpbmcoKSIsICJbb2JqZWN0IFNWR0VsZW1lbnRJbnN0YW5jZV0iKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoInVzZUVsZW1lbnQudG9TdHJpbmcoKSIsICJbb2JqZWN0IFNWR1VzZUVsZW1l
bnRdIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ1c2VFbGVtZW50Lmluc3RhbmNlUm9v
dC50b1N0cmluZygpIiwgIltvYmplY3QgU1ZHRWxlbWVudEluc3RhbmNlXSIpOwogCi1zaG91bGRC
ZUVxdWFsVG9TdHJpbmcoInVzZUVsZW1lbnQuaW5zdGFuY2VSb290LmNvcnJlc3BvbmRpbmdFbGVt
ZW50LnRvU3RyaW5nKCkiLCAiW29iamVjdCBTVkdSZWN0RWxlbWVudF0iKTsKLXNob3VsZEJlVHJ1
ZSgidXNlRWxlbWVudC5pbnN0YW5jZVJvb3QuY29ycmVzcG9uZGluZ0VsZW1lbnQgPT0gcmVjdEVs
ZW1lbnQiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInVzZUVsZW1lbnQuaW5zdGFuY2VS
b290LmNvcnJlc3BvbmRpbmdFbGVtZW50LnRvU3RyaW5nKCkiLCAiW29iamVjdCBTVkdSZWN0RWxl
bWVudF0iKTsKKyAgICBzaG91bGRCZVRydWUoInVzZUVsZW1lbnQuaW5zdGFuY2VSb290LmNvcnJl
c3BvbmRpbmdFbGVtZW50ID09IHJlY3RFbGVtZW50Iik7CiAKLXNob3VsZEJlRXF1YWxUb1N0cmlu
ZygidXNlRWxlbWVudC5pbnN0YW5jZVJvb3QuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQudG9TdHJp
bmcoKSIsICJbb2JqZWN0IFNWR1VzZUVsZW1lbnRdIik7Ci1zaG91bGRCZVRydWUoInVzZUVsZW1l
bnQuaW5zdGFuY2VSb290LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50ID09IHVzZUVsZW1lbnQiKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInVzZUVsZW1lbnQuaW5zdGFuY2VSb290LmNvcnJl
c3BvbmRpbmdVc2VFbGVtZW50LnRvU3RyaW5nKCkiLCAiW29iamVjdCBTVkdVc2VFbGVtZW50XSIp
OworICAgIHNob3VsZEJlVHJ1ZSgidXNlRWxlbWVudC5pbnN0YW5jZVJvb3QuY29ycmVzcG9uZGlu
Z1VzZUVsZW1lbnQgPT0gdXNlRWxlbWVudCIpOwogCi1zaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5
cGVvZiB1c2VFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIiLCAiZnVuY3Rpb24iKTsKLXNob3VsZEJl
RXF1YWxUb1N0cmluZygidHlwZW9mIHVzZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciIsICJm
dW5jdGlvbiIpOwotc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2YgdXNlRWxlbWVudC5kaXNw
YXRjaEV2ZW50IiwgImZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBl
b2YgdXNlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyIiwgImZ1bmN0aW9uIik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2YgdXNlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyIiwg
ImZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2YgdXNlRWxlbWVu
dC5kaXNwYXRjaEV2ZW50IiwgImZ1bmN0aW9uIik7CiAKLS8vIFNwZWM6IEFuIGVsZW1lbnQgYW5k
IGFsbCBpdHMgY29ycmVzcG9uZGluZyBTVkdFbGVtZW50SW5zdGFuY2Ugb2JqZWN0cyBzaGFyZSBh
biBldmVudAotLy8gbGlzdGVuZXIgbGlzdC4gVGhlIGN1cnJlbnRUYXJnZXQgYXR0cmlidXRlIG9m
IHRoZSBldmVudCBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgdGhyb3VnaAotLy8gd2hpY2ggb2Jq
ZWN0IGFuIGV2ZW50IGxpc3RlbmVyIHdhcyBpbnZva2VkLgotdXNlRWxlbWVudC5pbnN0YW5jZVJv
b3QuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIiwgZXZlbnRIYW5kbGVyLCBmYWxzZSk7Cisg
ICAgLy8gU3BlYzogQW4gZWxlbWVudCBhbmQgYWxsIGl0cyBjb3JyZXNwb25kaW5nIFNWR0VsZW1l
bnRJbnN0YW5jZSBvYmplY3RzIHNoYXJlIGFuIGV2ZW50CisgICAgLy8gbGlzdGVuZXIgbGlzdC4g
VGhlIGN1cnJlbnRUYXJnZXQgYXR0cmlidXRlIG9mIHRoZSBldmVudCBjYW4gYmUgdXNlZCB0byBk
ZXRlcm1pbmUgdGhyb3VnaAorICAgIC8vIHdoaWNoIG9iamVjdCBhbiBldmVudCBsaXN0ZW5lciB3
YXMgaW52b2tlZC4KKyAgICB1c2VFbGVtZW50Lmluc3RhbmNlUm9vdC5hZGRFdmVudExpc3RlbmVy
KCJtb3VzZW92ZXIiLCBldmVudEhhbmRsZXIsIGZhbHNlKTsKKyAgICBmaXJlTW91c2VPdmVyRXZl
bnQoImV2ZW50VGVzdFR3bygpIik7Cit9CiAKLWZ1bmN0aW9uIHN0YXJ0RXZlbnRUZXN0cygpCitm
dW5jdGlvbiBldmVudFRlc3RUd28oKQogewogICAgIGRlYnVnKCIiKTsKICAgICBkZWJ1ZygiVGVz
dCAjMjogVmVyaWZ5IHRoYXQgZXZlbnRzIGRpc3BhdGNoZWQgdG8gdGhlIFNWR0VsZW1lbnRJbnN0
YW5jZSBvYmplY3RzIGhhdmUgY29ycmVjdCB0YXJnZXQgcHJvcGVydHkgdmFsdWVzIik7CkBAIC0x
NTUsMTAyICsxODgsNzAgQEAgZnVuY3Rpb24gc3RhcnRFdmVudFRlc3RzKCkKICAgICAvLyByZWd1
bGFyIHRyZWUgdG8gdGhlIHJvb3QgZWxlbWVudCBpbiBidWJibGluZyBwaGFzZS4KICAgICB2ZXJp
ZnlNb3VzZU92ZXJFdmVudCgpOwogCi0gICAgLy8gUHJlcGFyZSBmb3IgbmV4dCB0ZXN0Ci0gICAg
dXNlRWxlbWVudC5pbnN0YW5jZVJvb3QucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIiwg
ZXZlbnRIYW5kbGVyLCBmYWxzZSk7Ci0gICAgdXNlRWxlbWVudC5pbnN0YW5jZVJvb3QuYWRkRXZl
bnRMaXN0ZW5lcigibW91c2VvdmVyIiwgZXZlbnRIYW5kbGVyLCBmYWxzZSk7Ci0KLSAgICAvLyBD
YXVzZXMgc3ZnQXR0cmlidXRlQ2hhbmdlZCgpIGxvZ2ljIHRvIHJlY2xvbmUgdGhlIHNoYWRvdyB0
cmVlCi0gICAgLy8gSWYgJ1Rlc3QgIzMnIGlzIG5vdCBleGVjdXRlZCwgdGhlbiBpdCBkaWRuJ3Qg
cHJvcGVybHkgcmVjbG9uZSB0aGUgZXZlbnQgbGlzdGVuZXJzLgotICAgIHVzZUVsZW1lbnQuaW5z
dGFuY2VSb290LmNvcnJlc3BvbmRpbmdFbGVtZW50LnNldEF0dHJpYnV0ZSgieCIsIHVzZUVsZW1l
bnQuaW5zdGFuY2VSb290LmNvcnJlc3BvbmRpbmdFbGVtZW50LmdldEF0dHJpYnV0ZSgieCIpKTsK
LQotICAgIGZpcmVNb3VzZU92ZXJFdmVudCgiZXZlbnRUZXN0T25lKCkiKTsKLX0KLQotZnVuY3Rp
b24gZXZlbnRUZXN0T25lKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIlRlc3QgIzM6
IFZlcmlmeSB0aGF0IGV2ZW50IGxpc3RlbmVycyBhdHRhY2hlZCB0byB0aGUgc2hhZG93IHRyZWUg
ZWxlbWVudHMgYXJlIGNvcGllZCB3aGVuIHVzZSByZWNsb25lcyB0aGUgaW50ZXJuYWwgc2hhZG93
IHRyZWUiKTsKLSAgICBkZWJ1ZygiIik7Ci0KLSAgICAvLyBTcGVjOiBJZiBldmVudCBhdHRyaWJ1
dGVzIGFyZSBhc3NpZ25lZCB0byByZWZlcmVuY2VkIGVsZW1lbnRzLCB0aGVuIHRoZSBhY3R1YWwg
dGFyZ2V0IGZvciB0aGUgZXZlbnQgd2lsbCBiZSB0aGUKLSAgICAvLyBTVkdFbGVtZW50SW5zdGFu
Y2Ugb2JqZWN0IHdpdGhpbiB0aGUgImluc3RhbmNlIHRyZWUiIGNvcnJlc3BvbmRpbmcgdG8gdGhl
IGdpdmVuIHJlZmVyZW5jZWQgZWxlbWVudC4KLSAgICB2ZXJpZnlNb3VzZU92ZXJFdmVudCgpOwot
Ci0gICAgLy8gUHJlcGFyZSBmb3IgbmV4dCB0ZXN0CiAgICAgdXNlRWxlbWVudC5pbnN0YW5jZVJv
b3QucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIiwgZXZlbnRIYW5kbGVyLCBmYWxzZSk7
CisgICAgZmlyZVNpbXVsYXRlZE1vdXNlT3ZlckV2ZW50KCJjaGVja0V2ZW50TGlzdGVuZXJOb3RS
ZWFjaGFibGUoKSIsIHVzZUVsZW1lbnQuaW5zdGFuY2VSb290KTsKKyAgICBmaXJlU2ltdWxhdGVk
TW91c2VPdmVyRXZlbnQoImNoZWNrRXZlbnRMaXN0ZW5lck5vdFJlYWNoYWJsZSgpIiwgcmVjdEVs
ZW1lbnQpOwogICAgIHJlY3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3ZlciIsIGV2
ZW50SGFuZGxlciwgZmFsc2UpOwogCi0gICAgZmlyZU1vdXNlT3ZlckV2ZW50KCJldmVudFRlc3RU
d28oKSIpOwotfQotCi1mdW5jdGlvbiBldmVudFRlc3RUd28oKQotewotICAgIGRlYnVnKCIiKTsK
LSAgICBkZWJ1ZygiVGVzdCAjNDogVmVyaWZ5IHRoYXQgZXZlbnRzIGRpc3BhdGNoZWQgdG8gdGhl
IHJlZmVyZW5jZWQgZWxlbWVudCBlbmQgdXAgb24gdGhlIFNWRWxlbWVudEluc3RhbmNlIG9iamVj
dHMiKTsKLSAgICBkZWJ1ZygiIik7Ci0KLSAgICB2ZXJpZnlNb3VzZU92ZXJFdmVudCgpOwotCi0g
ICAgLy8gUHJlcGFyZSBmb3IgbmV4dCB0ZXN0Ci0gICAgcmVjdEVsZW1lbnQucmVtb3ZlRXZlbnRM
aXN0ZW5lcigibW91c2VvdmVyIiwgZXZlbnRIYW5kbGVyLCBmYWxzZSk7Ci0gICAgcmVjdEVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIiwgZXZlbnRIYW5kbGVyLCBmYWxzZSk7Ci0K
LSAgICAvLyBDYXVzZXMgc3ZnQXR0cmlidXRlQ2hhbmdlZCgpIGxvZ2ljIHRvIHJlY2xvbmUgdGhl
IHNoYWRvdyB0cmVlCi0gICAgLy8gSWYgJ1Rlc3QgIzUnIGlzIG5vdCBleGVjdXRlZCwgdGhlbiBp
dCBkaWRuJ3QgcHJvcGVybHkgcmVjbG9uZSB0aGUgZXZlbnQgbGlzdGVuZXJzLgotICAgIHJlY3RF
bGVtZW50LnNldEF0dHJpYnV0ZSgieCIsIHJlY3RFbGVtZW50LmdldEF0dHJpYnV0ZSgieCIpKTsK
LQogICAgIGZpcmVNb3VzZU92ZXJFdmVudCgiZXZlbnRUZXN0VGhyZWUoKSIpOwogfQogCiBmdW5j
dGlvbiBldmVudFRlc3RUaHJlZSgpCiB7CiAgICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJUZXN0
ICM1OiBWZXJpZnkgdGhhdCBldmVudCBsaXN0ZW5lcnMgYXR0YWNoZWQgdG8gdGhlIHJlZmVyZW5j
ZWQgZWxlbWVudHMgYXJlIGNvcGllZCB3aGVuIHVzZSByZWNsb25lcyB0aGUgaW50ZXJuYWwgc2hh
ZG93IHRyZWUiKTsKKyAgICBkZWJ1ZygiVGVzdCAjMzogVmVyaWZ5IHRoYXQgZXZlbnRzIGRpc3Bh
dGNoZWQgYnkgdGhlIHVzZXIgZW5kIHVwIG9uIHRoZSBTVkdFbGVtZW50SW5zdGFuY2Ugb2JqZWN0
cyIpOwogICAgIGRlYnVnKCIiKTsKIAogICAgIHZlcmlmeU1vdXNlT3ZlckV2ZW50KCk7CiAKLSAg
ICAvLyBQcmVwYXJlIGZvciBuZXh0IHRlc3QKLSAgICByZWN0RWxlbWVudC5yZW1vdmVFdmVudExp
c3RlbmVyKCJtb3VzZW92ZXIiLCBldmVudEhhbmRsZXIsIGZhbHNlKTsKLQorICAgIHVzZUVsZW1l
bnQuaW5zdGFuY2VSb290LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlb3ZlciIsIGV2ZW50SGFu
ZGxlciwgZmFsc2UpOworICAgIGZpcmVTaW11bGF0ZWRNb3VzZU92ZXJFdmVudCgiY2hlY2tFdmVu
dExpc3RlbmVyTm90UmVhY2hhYmxlKCkiLCB1c2VFbGVtZW50Lmluc3RhbmNlUm9vdCk7CisgICAg
ZmlyZVNpbXVsYXRlZE1vdXNlT3ZlckV2ZW50KCJjaGVja0V2ZW50TGlzdGVuZXJOb3RSZWFjaGFi
bGUoKSIsIHJlY3RFbGVtZW50KTsKICAgICBmaXJlU2ltdWxhdGVkTW91c2VDbGlja0V2ZW50KCJl
dmVudFRlc3RGb3VyKCkiLCByZWN0RWxlbWVudCk7CiB9CiAKIGZ1bmN0aW9uIGV2ZW50VGVzdEZv
dXIoKQogewogICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVGVzdCAjNjogVmVyaWZ5IHRoYXQg
YSBjbGljayBldmVudCBnb3QgZGlzcGF0Y2hlZCB0byB0aGUgb3JpZ2luYWwgdHJlZSBhcyBkZWZp
bmVkIGluIHRoZSBtYXJrdXAsIHdoZW4gc2VudCB0byB0aGUgJ3JlY3RFbGVtZW50JyIpOyAKKyAg
ICBkZWJ1ZygiVGVzdCAjNDogVmVyaWZ5IHRoYXQgYSBjbGljayBldmVudCBnb3QgZGlzcGF0Y2hl
ZCB0byB0aGUgb3JpZ2luYWwgdHJlZSBhcyBkZWZpbmVkIGluIHRoZSBtYXJrdXAsIHdoZW4gc2Vu
dCB0byB0aGUgJ3JlY3RFbGVtZW50JyIpOyAKICAgICBkZWJ1ZygiIik7CiAKICAgICB2ZXJpZnlD
bGlja0V2ZW50T25SZWZlcmVuY2VkKCk7CiAKLSAgICAvLyBQcmVwYXJlIGZvciBuZXh0IHRlc3QK
ICAgICBmaXJlU2ltdWxhdGVkTW91c2VDbGlja0V2ZW50KCJldmVudFRlc3RGaXZlKCkiLCB1c2VF
bGVtZW50Lmluc3RhbmNlUm9vdCk7CiB9CiAKIGZ1bmN0aW9uIGV2ZW50VGVzdEZpdmUoKQogewog
ICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVGVzdCAjNzogVmVyaWZ5IHRoYXQgYSBjbGljayBl
dmVudCBnb3QgZGlzcGF0Y2hlZCB0byB0aGUgaW5zdGFuY2UgdHJlZSB3aGVuIHNlbnQgdG8gdGhl
ICd1c2VFbGVtZW50Lmluc3RhbmNlUm9vdCcgd2l0aCBhbiBldmVudCBsaXN0ZW5lciBhdHRhY2hl
ZCB0byAncmVjdEVsZW1lbnQnIik7IAorICAgIGRlYnVnKCJUZXN0ICM1OiBWZXJpZnkgdGhhdCBh
IGNsaWNrIGV2ZW50IGdvdCBkaXNwYXRjaGVkIHRvIHRoZSBpbnN0YW5jZSB0cmVlIHdoZW4gc2Vu
dCB0byB0aGUgJ3VzZUVsZW1lbnQuaW5zdGFuY2VSb290JyB3aXRoIGFuIGV2ZW50IGxpc3RlbmVy
IGF0dGFjaGVkIHRvICdyZWN0RWxlbWVudCciKTsgCiAgICAgZGVidWcoIiIpOwogCiAgICAgdmVy
aWZ5Q2xpY2tFdmVudCgpOwogCi0gICAgLy8gUHJlcGFyZSBmb3IgbmV4dCB0ZXN0CisgICAgLy8g
VGhpcyB0ZXN0cyBhIHdlYmtpdCBzcGVjaWZpYyBxdWlyazogcmVtb3ZlQXR0cmlidXRlKCkgb24g
dGhlIHRhcmdldCBlbGVtZW50LCBjYXVzZXMgdXMgdG8gcmVjbG9uZSB0aGUgc2hhZG93IHRyZWUu
CisgICAgLy8gQWxsIGV2ZW50IGxpc3RlbmVyIG11dGF0aW9ucyBhcmUgc3luY2hyb25pemVkIHdp
dGggdGhlIHNoYWRvdyB0cmVlIGFuZCBkbyBub3QgY2F1c2UgcmVjbG9uZXMuIFNvIGlmIHdlIGFk
ZCB0aGUKKyAgICAvLyBjbGljayBldmVudCBsaXN0ZW5lciB0byB0aGUgY3VycmVudCBpbnN0YW5j
ZVJvb3QsIHJlbW92ZSB0aGUgZXhpc3RpbmcgY2xpY2sgbGlzdGVuZXIgZnJvbSBtYXJrdXAgYW5k
IHRoZW4gZmlyZQorICAgIC8vIGEgY2xpY2sgZXZlbnQsIHdlJ3JlIHN1cmUgdGhhdCB0aGUgc2hh
ZG93IHRyZWUgaXMgcmVjbG9uZWQgYmVmb3JlIHRoZSBldmVudFRlc3RTaXgoKSBmdW5jdGlvbiBp
cyBleGVjdXRlZC4KKyAgICAvLyBJZiBldmVudFRlc3RTaXgoKSBpcyByZWFjaGVkLCB3ZSd2ZSBw
cm9wZXJseSBwcmVzZXJ2ZWQgdGhlIGR5bmFtaWNhbGx5IGNyZWF0ZWQgY2xpY2sgZXZlbnQgbGlz
dGVuZXIgYWZ0ZXIgcmVjbG9uaW5nLgorICAgIHVzZUVsZW1lbnQuaW5zdGFuY2VSb290LmFkZEV2
ZW50TGlzdGVuZXIoImNsaWNrIiwgZXZlbnRIYW5kbGVyLCBmYWxzZSk7CisgICAgcmVjdEVsZW1l
bnQucmVtb3ZlQXR0cmlidXRlKCJvbmNsaWNrIik7CisKICAgICBmaXJlTW91c2VDbGlja0V2ZW50
KCJldmVudFRlc3RTaXgoKSIpOwogfQogCiBmdW5jdGlvbiBldmVudFRlc3RTaXgoKQogewogICAg
IGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVGVzdCAjODogVmVyaWZ5IHRoYXQgdGhlIG9yaWdpbmFs
IGNsaWNrIGV2ZW50IGxpc3RlbmVyIGRlZmluZWQgaW4gbWFya3VwIGlzIHN0aWxsIHdvcmtpbmcg
cHJvcGVybHkiKTsKKyAgICBkZWJ1ZygiVGVzdCAjNjogVmVyaWZ5IHRoYXQgdGhlIG9yaWdpbmFs
IGNsaWNrIGV2ZW50IGxpc3RlbmVyIGdvdCByZW1vdmVkIGFuZCBhIG5ldyBvbmUgYXR0YWNoZWQg
aXMgYXR0YWNoZWQgdG8gdGhlIHVzZSByb290IFNWR0VsZW1lbnRJbnN0YW5jZSIpOwogICAgIGRl
YnVnKCIiKTsKIAogICAgIHZlcmlmeUNsaWNrRXZlbnQoKTsKIAotICAgIC8vIFByZXBhcmUgZm9y
IG5leHQgdGVzdAotICAgIHJlY3RFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIiwg
ZXZlbnRIYW5kbGVyLCBmYWxzZSk7Ci0gICAgdXNlRWxlbWVudC5pbnN0YW5jZVJvb3QuYWRkRXZl
bnRMaXN0ZW5lcigiY2xpY2siLCBldmVudEhhbmRsZXIsIGZhbHNlKTsKKyAgICB1c2VFbGVtZW50
Lmluc3RhbmNlUm9vdC5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsIGV2ZW50SGFuZGxlciwg
ZmFsc2UpOworICAgIGZpcmVTaW11bGF0ZWRNb3VzZUNsaWNrRXZlbnQoImNoZWNrRXZlbnRMaXN0
ZW5lck5vdFJlYWNoYWJsZSgpIiwgdXNlRWxlbWVudC5pbnN0YW5jZVJvb3QpOworICAgIGZpcmVT
aW11bGF0ZWRNb3VzZUNsaWNrRXZlbnQoImNoZWNrRXZlbnRMaXN0ZW5lck5vdFJlYWNoYWJsZSgp
IiwgcmVjdEVsZW1lbnQpOworICAgIHJlY3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNr
IiwgZXZlbnRIYW5kbGVyLCBmYWxzZSk7CiAKICAgICBmaXJlTW91c2VDbGlja0V2ZW50KCJldmVu
dFRlc3RTZXZlbigpIik7CiB9CkBAIC0yNTgsMzAgKzI1OSwzMiBAQCBmdW5jdGlvbiBldmVudFRl
c3RTaXgoKQogZnVuY3Rpb24gZXZlbnRUZXN0U2V2ZW4oKQogewogICAgIGRlYnVnKCIiKTsKLSAg
ICBkZWJ1ZygiVGVzdCAjOTogVmVyaWZ5IHRoYXQgdGhlIG9yaWdpbmFsIGNsaWNrIGV2ZW50IGxp
c3RlbmVyIGdvdCByZW1vdmVkIGFuZCBhIG5ldyBvbmUgYXR0YWNoZWQgdG8gdGhlIHVzZSByb290
IFNWR0VsZW1lbnRJbnN0YW5jZSIpOworICAgIGRlYnVnKCJUZXN0ICM3OiBWZXJpZnkgdGhhdCB0
aGUgcmVjcmVhdGluZyB0aGUgb3JpZ2luYWwgY2xpY2sgZXZlbnQgbGlzdGVuZXIgZHluYW1pY2Fs
bHkgd29ya2VkIGFuZCB0aGUgZXZlbnQgaXMgbm93IGRpc3BhdGNoZWQgdG8gdGhlIHJlZ3VsYXIg
RE9NIik7CiAgICAgZGVidWcoIiIpOwogCi0gICAgdmVyaWZ5Q2xpY2tFdmVudCgpOworICAgIHZl
cmlmeUNsaWNrRXZlbnRPblJlZmVyZW5jZWQoKTsKIAogICAgIC8vIFByZXBhcmUgZm9yIG5leHQg
dGVzdHMKICAgICBmaXJlU2ltdWxhdGVkTW91c2VDbGlja0V2ZW50KCJldmVudFRlc3RFaWdodCgp
IiwgdXNlRWxlbWVudC5pbnN0YW5jZVJvb3QpOwogfQogCi1mdW5jdGlvbiBldmVudFRlc3RFaWdo
dCgpCitmdW5jdGlvbiBldmVudFRlc3RTZXZlbigpCiB7CiAgICAgZGVidWcoIiIpOwotICAgIGRl
YnVnKCJUZXN0ICMxMDogVmVyaWZ5IHRoYXQgdGhlIHNpbXVsYXRlZCBjbGljayBldmVudCBnb3Qg
ZGlzcGF0Y2hlZCB0byB0aGUgcmlnaHQgdGFyZ2V0Iik7CisgICAgZGVidWcoIlRlc3QgIzg6IFZl
cmlmeSB0aGF0IHRoZSBzaW11bGF0ZWQgY2xpY2sgZXZlbnQgZ290IGRpc3BhdGNoZWQgdG8gdGhl
IHJpZ2h0IHRhcmdldCIpOwogICAgIGRlYnVnKCIiKTsKIAogICAgIHZlcmlmeUNsaWNrRXZlbnQo
KTsKIAogICAgIC8vIENsZWFudXAKICAgICB1c2VFbGVtZW50Lmluc3RhbmNlUm9vdC5yZW1vdmVF
dmVudExpc3RlbmVyKCJjbGljayIsIGV2ZW50SGFuZGxlciwgZmFsc2UpOworICAgIGZpcmVTaW11
bGF0ZWRNb3VzZUNsaWNrRXZlbnQoImNoZWNrRXZlbnRMaXN0ZW5lck5vdFJlYWNoYWJsZSgpIiwg
dXNlRWxlbWVudC5pbnN0YW5jZVJvb3QpOworICAgIGZpcmVTaW11bGF0ZWRNb3VzZUNsaWNrRXZl
bnQoImNoZWNrRXZlbnRMaXN0ZW5lck5vdFJlYWNoYWJsZSgpIiwgcmVjdEVsZW1lbnQpOwogCi0g
ICAgc3RvcEV2ZW50VGVzdHMoKTsKKyAgICBmaW5pc2hUZXN0cygpOwogfQogCi1mdW5jdGlvbiBz
dG9wRXZlbnRUZXN0cygpCitmdW5jdGlvbiBmaW5pc2hUZXN0cygpCiB7CiAgICAgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKIApAQCAtMjkyLDggKzI5NSw2IEBAIGZ1bmN0aW9uIHN0b3BFdmVu
dFRlc3RzKCkKICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQogICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CiB9Ci0KLWZpcmVNb3VzZU92ZXJFdmVu
dCgic3RhcnRFdmVudFRlc3RzKCkiKTsKIDwvc2NyaXB0PgogCiA8L2JvZHk+CkluZGV4OiBMYXlv
dXRUZXN0cy9zdmcvY3VzdG9tL3VzZS1pbnN0YW5jZVJvb3QtZXZlbnQtbGlzdGVuZXItbGl2ZW5l
c3MtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9jdXN0b20vdXNl
LWluc3RhbmNlUm9vdC1ldmVudC1saXN0ZW5lci1saXZlbmVzcy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3VzZS1pbnN0YW5jZVJvb3QtZXZlbnQt
bGlzdGVuZXItbGl2ZW5lc3MtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBA
CitUZXN0IHBhc3NlZApJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS91c2UtaW5zdGFuY2VS
b290LWV2ZW50LWxpc3RlbmVyLWxpdmVuZXNzLnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3N2Zy9jdXN0b20vdXNlLWluc3RhbmNlUm9vdC1ldmVudC1saXN0ZW5lci1saXZlbmVzcy54
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9jdXN0b20vdXNlLWluc3RhbmNl
Um9vdC1ldmVudC1saXN0ZW5lci1saXZlbmVzcy54aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxodG1sIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPC9oZWFkPgorPGJv
ZHkgb25sb2FkPSJzdGFydFRlc3QoKSI+CisKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lk
dGg9IjEwMHB4IiBoZWlnaHQ9IjEwMHB4Ij4KKyAgPGRlZnM+CisgICAgICA8cmVjdCBpZD0idGFy
Z2V0IiBmaWxsPSJncmVlbiIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiLz4KKyAgPC9kZWZzPgor
ICA8dXNlIGlkPSJ0ZXN0IiB4bGluazpocmVmPSIjdGFyZ2V0Ii8+Cis8L3N2Zz4KKworPGRpdiBp
ZD0iY29uc29sZSI+VGVzdCBmYWlsZWQ8L2Rpdj4KKworPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5j
dGlvbiBldmVudEhhbmRsZXIoKQoreworICAgIHZhciBkaXZFbGVtZW50ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgICBkaXZFbGVtZW50LnRleHRDb250ZW50ID0gIlRl
c3QgcGFzc2VkIjsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gZmly
ZVNpbXVsYXRlZE1vdXNlQ2xpY2tFdmVudChldmVudFRhcmdldCkKK3sKKyAgICB2YXIgZXZlbnQg
PSBkb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVudHMiKTsKKyAgICBldmVudC5pbml0TW91
c2VFdmVudCgiY2xpY2siLCB0cnVlLCB0cnVlLCBkb2N1bWVudC5kZWZhdWx0VmlldywgMSwgMCwg
MCwgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDAsIG51bGwpOworICAgIGV2ZW50
VGFyZ2V0LmRpc3BhdGNoRXZlbnQoZXZlbnQpOworfQorCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7
CisgICAgdmFyIHVzZUVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOwor
CisgICAgLy8gTm8tb3AsIGFzIG5vIGxpc3RlbmVyIGlzIG5vdCB5ZXQgcmVnaXN0ZXJlZAorICAg
IGZpcmVTaW11bGF0ZWRNb3VzZUNsaWNrRXZlbnQodXNlRWxlbWVudC5pbnN0YW5jZVJvb3QpOwor
CisgICAgLy8gQWRkIGxpc3RlbmVyCisgICAgdXNlRWxlbWVudC5pbnN0YW5jZVJvb3QuYWRkRXZl
bnRMaXN0ZW5lcigiY2xpY2siLCBldmVudEhhbmRsZXIsIGZhbHNlKTsKKworICAgIC8vIFNob3Vs
ZCBmaXJlIGltbWVkaWF0ZWx5IGFuZCBmaW5pc2ggdGhlIHRlc3QKKyAgICBmaXJlU2ltdWxhdGVk
TW91c2VDbGlja0V2ZW50KHVzZUVsZW1lbnQuaW5zdGFuY2VSb290KTsKK30KKzwvc2NyaXB0Pgor
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3Jlc291cmNl
cy91c2UtaW5zdGFuY2VSb290LWV2ZW50LWJ1YmJsaW5nLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3N2Zy9jdXN0b20vcmVzb3VyY2VzL3VzZS1pbnN0YW5jZVJvb3QtZXZlbnQtYnViYmxp
bmcuanMJKHJldmlzaW9uIDUzNTE5KQorKysgTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9yZXNvdXJj
ZXMvdXNlLWluc3RhbmNlUm9vdC1ldmVudC1idWJibGluZy5qcwkod29ya2luZyBjb3B5KQpAQCAt
MzUsMTIgKzM1LDggQEAgZnVuY3Rpb24gZXZlbnRIYW5kbGVyKGV2dCwgbGFiZWwpIHsKICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoIm1zZyIsIGV4cGVjdGVkW2V2ZW50Q291bnRlcl0pOwogICAg
ICsrZXZlbnRDb3VudGVyOwogCi0gICAgaWYgKGxhYmVsID09IGNvdW50ZXIpIHsKLSAgICAgICAg
aWYgKGxhYmVsID09IHRlc3RzKQotICAgICAgICAgICAgc2V0VGltZW91dCgiZmluaXNoVGVzdCgp
IiwgMTAwKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc2V0VGltZW91dCgibmV4dFRlc3Qo
KSIsIDEwMCk7Ci0gICAgfQorICAgIGlmIChsYWJlbCA9PSBjb3VudGVyKQorICAgICAgICBzZXRU
aW1lb3V0KGxhYmVsID09IHRlc3RzID8gZmluaXNoVGVzdCA6IG5leHRUZXN0LCAwKTsKIH0KIAog
ZnVuY3Rpb24gZmluaXNoVGVzdCgpCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3Jlc291
cmNlcy91c2UtaW5zdGFuY2VSb290LWV2ZW50LWxpc3RlbmVycy5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9zdmcvY3VzdG9tL3Jlc291cmNlcy91c2UtaW5zdGFuY2VSb290LWV2ZW50LWxp
c3RlbmVycy5qcwkocmV2aXNpb24gNTM1MTkpCisrKyBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3Jl
c291cmNlcy91c2UtaW5zdGFuY2VSb290LWV2ZW50LWxpc3RlbmVycy5qcwkod29ya2luZyBjb3B5
KQpAQCAtMTgsNyArMTgsNyBAQCBmdW5jdGlvbiBldmVudEhhbmRsZXIoZXZ0KQogICAgICAgICAg
ICAgZGVidWcoIlRlc3QgIiArIGNvdW50ZXIgKyAiIC8gIiArIHRlc3RzICsgIiBGQUlMRUQgKGV4
cGVjdGVkOiAnIiArIGV4cGVjdGVkICsgIicgYWN0dWFsOiAnIiArIGV2dC50eXBlICsgIicpIik7
CiAgICAgfQogCi0gICAgc2V0VGltZW91dChjb3VudGVyIDwgdGVzdHMgPyBkcml2ZVRlc3RzIDog
ZmluaXNoVGVzdCwgMTAwKTsKKyAgICBzZXRUaW1lb3V0KGNvdW50ZXIgPCB0ZXN0cyA/IGRyaXZl
VGVzdHMgOiBmaW5pc2hUZXN0LCAwKTsKIH0KIAogZnVuY3Rpb24gZmluaXNoVGVzdCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47053</attachid>
            <date>2010-01-20 12:53:54 -0800</date>
            <delta_ts>2010-02-02 14:14:19 -0800</delta_ts>
            <desc>Updated patch v3</desc>
            <filename>UseStabilityFixes2.diff</filename>
            <type>text/plain</type>
            <size>46068</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzU1MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTAgQEAKKzIwMTAtMDEtMTkgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJt
YW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgc3ZnL2N1c3RvbS91c2UtaW5zdGFuY2VSb290LWV2ZW50LWJ1YmJsaW5nLnhodG1sIGlz
IGZsYWtleQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzM4MzUKKworICAgICAgICBtb3VzZUV2ZW50IGZpcmVzIG11dGlwbGUgdGltZXMgaW4gc3ZnL2N1
c3RvbS91c2UtaW5zdGFuY2VSb290LWFzLWV2ZW50LXRhcmdldC54aHRtbAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI1MTkKKworICAgICAgICBUZXN0
OiBzdmcvY3VzdG9tL3VzZS1pbnN0YW5jZVJvb3QtZXZlbnQtbGlzdGVuZXItbGl2ZW5lc3MueGh0
bWwKKworICAgICAgICBTdGFiaWxpemUgPHVzZT4gc2NyaXB0aW5nIHN1cHBvcnQgLSB1c2UgdGVz
dHMgYXJlIHJlbGlhYmxlIG5vdyAodGVzdGVkIHVzaW5nIC0tcmVwZWFjaC1lYWNoIDUwIC0tcmFu
ZG9tIC1wKQorCisgICAgICAgIERvIG5vdCByZWNsb25lIHRyZWVzIGFueW1vcmUgYmVjYXVzZSBv
ZiBldmVudCBsaXN0ZW5lciBjaGFuZ2VzLCBpbnN0ZWFkIGtlZXAgY29ycmVzcG9uZGluZ0VsZW1l
bnQgJiBzaGFkb3dUcmVlRWxlbWVudAorICAgICAgICBzeW5jaHJvbml6ZWQgZm9yIGVhY2ggU1ZH
RWxlbWVudEluc3RhbmNlIC0gYW55IG11dGF0aW9ucyBvbiBhbnkgZXZlbnQgbGlzdGVuZXJzIGFy
ZSBsaXZlLCBhbmQgdGFrZSBpbW1lZGlhdGUgZWZmZWN0LAorICAgICAgICB3L28gaGF2aW5nIHRv
IHJlbHkgb24gYSByZWNsb25lIC0gdGhpcyB3YXMgdGhlIHJvb3Qgb2Ygc2V2ZXJhbCByYWNlIGNv
bmRpdGlvbnMgbWFraW5nIHRoZSA8dXNlPiB0ZXN0cyBmbGFrZXkuCisKKyAgICAgICAgRml4IFNW
R1VzZUVsZW1lbnQ6Omluc3RhbmNlUm9vdCgpIHRvIGZvcmNlIHNoYWRvdyB0cmVlIGNyZWF0aW9u
LCBldmVuIGlmIGl0IHdhcyBub3QgYXR0YWNoZWQgc28gZmFyIC0gd2UgY2FuJ3Qgd2FpdAorICAg
ICAgICBmb3IgZmluaXNoZWRQYXJzaW5nKCkgdG8gYmUgY2FsbGVkIHdoaWNoIHdvdWxkIHJlY2Fs
Y3VsYXRlIHRoZSBkb2N1bWVudCBzdHlsZSBhbmQgYXR0YWNoIHRoZSBzaGFkb3cgdHJlZSBhcyBy
ZXN1bHQuCisgICAgICAgIFRoaXMgaXMgbm93IG1hdGNoaW5nIE9wZXJhcyBiZWhhdmlvdXIuCisK
KyAgICAgICAgT3B0aW1pemUgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcigpIHRvIG5vdCBj
cmVhdGUgZXZlbnQgbGlzdGVuZXJzIGlmIHRoZSBzdXBwbGllZCBBdHRyaWJ1dGUgaXNOdWxsKCkg
LSBvdGhlcndoaXNlCisgICAgICAgIERPTSBjYWxscyBsaWtlIHJlbW92ZUF0dHJpYnV0ZSgib25j
bGljayIpIGNhdXNlIGEgdGVtcG9yYXJ5IEpTRXZlbnRMaXN0ZW5lciB0byBiZSBjcmVhdGVkLCBh
ZGRlZCB0byB0aGUgZXZlbnQgbGlzdGVuZXIKKyAgICAgICAgY2FjaGUgYW5kIHJlbW92ZWQgYWZ0
ZXJ3YXJkcy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcik6IFJldHVy
biBlYXJseSBpZiB0aGUgc3VwcGxpZWQgYXR0cmlidXRlIGlzIG51bGwgYXMgZGlzY3Vzc2VkIHdp
dGggR2VvZmZyZXkuCisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0ZW5lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKTogRGl0
dG8uCisgICAgICAgICogZG9tL05vZGUuY3BwOiBTeW5jaHJvbml6ZSBldmVudCBsaXN0ZW5lcnMg
d2l0aCBhbGwgZWxlbWVudCBpbnN0YW5jZXMsIGluc3RlYWQgb2YgbWFya2luZyB0aGUgdXNlIGVs
ZW1lbnRzIHRvIHJlY2xvbmUuCisgICAgICAgIChXZWJDb3JlOjppbnN0YW5jZXNGb3JTVkdFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnRyeUFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6YWRkRXZlbnRMaXN0ZW5lcik6IFdoZW4gYWRkaW5nIGEgbGlzdGVuZXIs
IGdldCBhIGxpc3Qgb2YgZWxlbWVudCBpbnN0YW5jZXMgYW5kIGFkZCBpdCB0aGVpciBhcyB3ZWxs
LgorICAgICAgICAoV2ViQ29yZTo6dHJ5UmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKTogRGl0dG8gZm9yIHJlbW92YWxzLCBi
dXQgd2l0aCBzcGVjaWFsIGxvZ2ljIGZvciBsaXN0ZW5lcnMgY3JlYXRlZCBmcm9tIG1hcmt1cCAo
c2VlIGNvbW1lbnRzKQorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50SW5zdGFuY2UuY3BwOiBDbGVh
bmVkIHVwLCByZW1vdmluZyB1bm5jZXNzYXJ5IGNoZWNrcyBvZiBjb3JyZXNwb25kaW5nRWxlbWVu
dCgpIC0gdGhlcmUgaXMgYW4gQVNTRVJUIGluIHRoZSBjdG9yLgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRWxlbWVudEluc3RhbmNlOjppbnZhbGlkYXRlQWxsSW5zdGFuY2VzT2ZFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5jZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50SW5zdGFuY2U6OmFkZEV2ZW50TGlzdGVu
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudEluc3RhbmNlOjpyZW1vdmVFdmVudExp
c3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5jZTo6cmVtb3ZlQWxs
RXZlbnRMaXN0ZW5lcnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudEluc3RhbmNlOjpl
dmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudEluc3RhbmNlOjpl
bnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNwcDog
Q2FsbCBkb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKSB0
byBmb3JjZSBzaGFkb3cgdHJlZSBjcmVhdGlvbiwganVzdCBsaWtlIENTU1N0eWxlRGVjbCB3b3Jr
cy4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6Omluc3RhbmNlUm9vdCk6CisKIDIw
MTAtMDEtMjAgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBbUXRdIFVucmV2aWV3ZWQgYnVpbGRmaXggZm9yIHI1MzU0Ny4KSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNwcAkocmV2aXNpb24gNTM1NTApCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01Miw2ICs1Miw5IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcmIGV2ZW50UGFyYW1ldGVyTmFt
ZSgKIFBhc3NSZWZQdHI8SlNMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRM
aXN0ZW5lcihOb2RlKiBub2RlLCBBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgQVNTRVJUKG5vZGUp
OworICAgIEFTU0VSVChhdHRyKTsKKyAgICBpZiAoYXR0ci0+aXNOdWxsKCkpCisgICAgICAgIHJl
dHVybiAwOwogCiAgICAgaW50IGxpbmVOdW1iZXIgPSAxOwogICAgIFN0cmluZyBzb3VyY2VVUkw7
CkBAIC03OSw2ICs4MiwxMCBAQCBQYXNzUmVmUHRyPEpTTGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0
ZUF0CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICBBU1NFUlQoYXR0
cik7CisgICAgaWYgKGF0dHItPmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gMDsKKwogICAgIGlu
dCBsaW5lTnVtYmVyID0gMTsKICAgICBTdHJpbmcgc291cmNlVVJMOwogICAgIApJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRFdmVudExpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCShyZXZpc2lvbiA1MzU1
MCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ2LDYgKzQ2LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFBhc3NSZWZQ
dHI8VjhMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihOb2Rl
KiBub2RlLCBBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgQVNTRVJUKG5vZGUpOworICAgIEFTU0VS
VChhdHRyKTsKKyAgICBpZiAoYXR0ci0+aXNOdWxsKCkpCisgICAgICAgIHJldHVybiAwOworCiAg
ICAgaW50IGxpbmVOdW1iZXIgPSAxOwogICAgIGludCBjb2x1bW5OdW1iZXIgPSAwOwogICAgIFN0
cmluZyBzb3VyY2VVUkw7CkBAIC03Niw2ICs4MCwxMSBAQCBQYXNzUmVmUHRyPFY4TGF6eUV2ZW50
TGlzdGVuZXI+IGNyZWF0ZUF0CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAK
KyAgICBBU1NFUlQobm9kZSk7CisgICAgQVNTRVJUKGF0dHIpOworICAgIGlmIChhdHRyLT5pc051
bGwoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICBpbnQgbGluZU51bWJlciA9IDE7CiAgICAg
aW50IGNvbHVtbk51bWJlciA9IDA7CiAgICAgU3RyaW5nIHNvdXJjZVVSTDsKSW5kZXg6IFdlYkNv
cmUvZG9tL05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL05vZGUuY3BwCShyZXZp
c2lvbiA1MzU1MCkKKysrIFdlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MzMyLDQ5ICsyMzMyLDE1OSBAQCB2b2lkIE5vZGU6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQo
KQogICAgIHNldERpZE1vdmVUb05ld093bmVyRG9jdW1lbnRXYXNDYWxsZWQodHJ1ZSk7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVTVkdFbGVtZW50SW5zdGFuY2VzQWZ0ZXJFdmVudExp
c3RlbmVyQ2hhbmdlKE5vZGUqIHJlZmVyZW5jZU5vZGUpCisjaWYgRU5BQkxFKFNWRykKK3N0YXRp
YyBpbmxpbmUgSGFzaFNldDxTVkdFbGVtZW50SW5zdGFuY2UqPiBpbnN0YW5jZXNGb3JTVkdFbGVt
ZW50KE5vZGUqIG5vZGUpCit7CisgICAgSGFzaFNldDxTVkdFbGVtZW50SW5zdGFuY2UqPiBpbnN0
YW5jZXM7CisgCisgICAgQVNTRVJUKG5vZGUpOworICAgIGlmICghbm9kZS0+aXNTVkdFbGVtZW50
KCkgfHwgbm9kZS0+c2hhZG93VHJlZVJvb3ROb2RlKCkpCisgICAgICAgIHJldHVybiBIYXNoU2V0
PFNWR0VsZW1lbnRJbnN0YW5jZSo+KCk7CisKKyAgICBTVkdFbGVtZW50KiBlbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8U1ZHRWxlbWVudCo+KG5vZGUpOworICAgIGlmICghZWxlbWVudC0+aXNTdHlsZWQo
KSkKKyAgICAgICAgcmV0dXJuIEhhc2hTZXQ8U1ZHRWxlbWVudEluc3RhbmNlKj4oKTsKKworICAg
IFNWR1N0eWxlZEVsZW1lbnQqIHN0eWxlZEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdTdHlsZWRF
bGVtZW50Kj4oZWxlbWVudCk7CisgICAgQVNTRVJUKCFzdHlsZWRFbGVtZW50LT5pbnN0YW5jZVVw
ZGF0ZXNCbG9ja2VkKCkpOworCisgICAgcmV0dXJuIHN0eWxlZEVsZW1lbnQtPmluc3RhbmNlc0Zv
ckVsZW1lbnQoKTsKK30KKyNlbmRpZgorCitzdGF0aWMgaW5saW5lIGJvb2wgdHJ5QWRkRXZlbnRM
aXN0ZW5lcihOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
UGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorewor
ICAgIGlmICghdGFyZ2V0Tm9kZS0+RXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRU
eXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSB0YXJnZXROb2RlLT5kb2N1bWVudCgpKQorICAgICAg
ICBkb2N1bWVudC0+YWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQoZXZlbnRUeXBlKTsKKworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIE5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIsIGJv
b2wgdXNlQ2FwdHVyZSkKIHsKICNpZiAhRU5BQkxFKFNWRykKLSAgICBVTlVTRURfUEFSQU0ocmVm
ZXJlbmNlTm9kZSk7CisgICAgcmV0dXJuIHRyeUFkZEV2ZW50TGlzdGVuZXIodGhpcywgZXZlbnRU
eXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CiAjZWxzZQotICAgIEFTU0VSVChyZWZlcmVuY2VO
b2RlKTsKLSAgICBpZiAoIXJlZmVyZW5jZU5vZGUtPmlzU1ZHRWxlbWVudCgpKQotICAgICAgICBy
ZXR1cm47CisgICAgaWYgKCFpc1NWR0VsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHRyeUFkZEV2
ZW50TGlzdGVuZXIodGhpcywgZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CiAKLSAg
ICAvLyBFbGVtZW50cyBsaXZpbmcgaW5zaWRlIGEgPHVzZT4gc2hhZG93IHRyZWUsIG5ldmVyIGNh
dXNlIGFueSB1cGRhdGVzIQotICAgIGlmIChyZWZlcmVuY2VOb2RlLT5zaGFkb3dUcmVlUm9vdE5v
ZGUoKSkKLSAgICAgICAgcmV0dXJuOworICAgIEhhc2hTZXQ8U1ZHRWxlbWVudEluc3RhbmNlKj4g
aW5zdGFuY2VzID0gaW5zdGFuY2VzRm9yU1ZHRWxlbWVudCh0aGlzKTsKKyAgICBpZiAoaW5zdGFu
Y2VzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRyeUFkZEV2ZW50TGlzdGVuZXIodGhpcywg
ZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CiAKLSAgICAvLyBXZSdyZSBwb3NzaWJs
eSAoYSBjaGlsZCBvZikgYW4gZWxlbWVudCB0aGF0IGlzIHJlZmVyZW5jZWQgYnkgYSA8dXNlPiBj
bGllbnQKLSAgICAvLyBJZiBhbiBldmVudCBsaXN0ZW5lcnMgY2hhbmdlcyBvbiBhIHJlZmVyZW5j
ZWQgZWxlbWVudCwgdXBkYXRlIGFsbCBpbnN0YW5jZXMuCi0gICAgZm9yIChOb2RlKiBub2RlID0g
cmVmZXJlbmNlTm9kZTsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkgewotICAgICAg
ICBpZiAoIW5vZGUtPmhhc0lEKCkgfHwgIW5vZGUtPmlzU1ZHRWxlbWVudCgpKQotICAgICAgICAg
ICAgY29udGludWU7CisgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyRm9yUmVndWxh
clRyZWUgPSBsaXN0ZW5lcjsKKyAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXJGb3JT
aGFkb3dUcmVlID0gbGlzdGVuZXJGb3JSZWd1bGFyVHJlZTsKIAotICAgICAgICBTVkdFbGVtZW50
SW5zdGFuY2U6OmludmFsaWRhdGVBbGxJbnN0YW5jZXNPZkVsZW1lbnQoc3RhdGljX2Nhc3Q8U1ZH
RWxlbWVudCo+KG5vZGUpKTsKLSAgICAgICAgYnJlYWs7CisgICAgLy8gQWRkIGV2ZW50IGxpc3Rl
bmVyIHRvIHJlZ3VsYXIgRE9NIGVsZW1lbnQKKyAgICBpZiAoIXRyeUFkZEV2ZW50TGlzdGVuZXIo
dGhpcywgZXZlbnRUeXBlLCBsaXN0ZW5lckZvclJlZ3VsYXJUcmVlLnJlbGVhc2UoKSwgdXNlQ2Fw
dHVyZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEFkZCBldmVudCBsaXN0ZW5l
ciB0byBhbGwgc2hhZG93IHRyZWUgRE9NIGVsZW1lbnQgaW5zdGFuY2VzCisgICAgY29uc3QgSGFz
aFNldDxTVkdFbGVtZW50SW5zdGFuY2UqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaW5zdGFuY2Vz
LmVuZCgpOworICAgIGZvciAoSGFzaFNldDxTVkdFbGVtZW50SW5zdGFuY2UqPjo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBpbnN0YW5jZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAg
IEFTU0VSVCgoKml0KS0+c2hhZG93VHJlZUVsZW1lbnQoKSk7CisgICAgICAgIEFTU0VSVCgoKml0
KS0+Y29ycmVzcG9uZGluZ0VsZW1lbnQoKSA9PSB0aGlzKTsKKworICAgICAgICBSZWZQdHI8RXZl
bnRMaXN0ZW5lcj4gbGlzdGVuZXJGb3JDdXJyZW50U2hhZG93VHJlZUVsZW1lbnQgPSBsaXN0ZW5l
ckZvclNoYWRvd1RyZWU7CisgICAgICAgIGJvb2wgcmVzdWx0ID0gdHJ5QWRkRXZlbnRMaXN0ZW5l
cigoKml0KS0+c2hhZG93VHJlZUVsZW1lbnQoKSwgZXZlbnRUeXBlLCBsaXN0ZW5lckZvckN1cnJl
bnRTaGFkb3dUcmVlRWxlbWVudC5yZWxlYXNlKCksIHVzZUNhcHR1cmUpOworICAgICAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKICAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKICNl
bmRpZgogfQogCi1ib29sIE5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIsIGJvb2wgdXNl
Q2FwdHVyZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCB0cnlSZW1vdmVFdmVudExpc3RlbmVyKE5vZGUq
IHRhcmdldE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVy
KiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewotICAgIGlmICghRXZlbnRUYXJnZXQ6OmFk
ZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSkpCisgICAgaWYg
KCF0YXJnZXROb2RlLT5FdmVudFRhcmdldDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUs
IGxpc3RlbmVyLCB1c2VDYXB0dXJlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYg
KERvY3VtZW50KiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCkpCi0gICAgICAgIGRvY3VtZW50
LT5hZGRMaXN0ZW5lclR5cGVJZk5lZWRlZChldmVudFR5cGUpOwotICAgIHVwZGF0ZVNWR0VsZW1l
bnRJbnN0YW5jZXNBZnRlckV2ZW50TGlzdGVuZXJDaGFuZ2UodGhpcyk7CisgICAgLy8gRklYTUU6
IE5vdGlmeSBEb2N1bWVudCB0aGF0IHRoZSBsaXN0ZW5lciBoYXMgdmFuaXNoZWQuIFdlIG5lZWQg
dG8ga2VlcCB0cmFjayBvZiBhIG51bWJlciBvZgorICAgIC8vIGxpc3RlbmVycyBmb3IgZWFjaCB0
eXBlLCBub3QganVzdCBhIGJvb2wgLSBzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTMzODYxCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBOb2RlOjpyZW1v
dmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3Rl
bmVyKiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewotICAgIGlmICghRXZlbnRUYXJnZXQ6
OnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSkpCisj
aWYgIUVOQUJMRShTVkcpCisgICAgcmV0dXJuIHRyeVJlbW92ZUV2ZW50TGlzdGVuZXIodGhpcywg
ZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CisjZWxzZQorICAgIGlmICghaXNTVkdF
bGVtZW50KCkpCisgICAgICAgIHJldHVybiB0cnlSZW1vdmVFdmVudExpc3RlbmVyKHRoaXMsIGV2
ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOworCisgICAgSGFzaFNldDxTVkdFbGVtZW50
SW5zdGFuY2UqPiBpbnN0YW5jZXMgPSBpbnN0YW5jZXNGb3JTVkdFbGVtZW50KHRoaXMpOworICAg
IGlmIChpbnN0YW5jZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdHJ5UmVtb3ZlRXZlbnRM
aXN0ZW5lcih0aGlzLCBldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKKworICAgIC8v
IEV2ZW50VGFyZ2V0OjpyZW1vdmVFdmVudExpc3RlbmVyIGNyZWF0ZXMgYSBQYXNzUmVmUHRyIGFy
b3VuZCB0aGUgZ2l2ZW4gRXZlbnRMaXN0ZW5lcgorICAgIC8vIG9iamVjdCB3aGVuIGNyZWF0aW5n
IGEgdGVtcG9yYXJ5IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyIG9iamVjdCB1c2VkIHRvIGxvb2sg
dXAgdGhlCisgICAgLy8gZXZlbnQgbGlzdGVuZXIgaW4gYSBjYWNoZS4gSWYgd2Ugd2FudCB0byBi
ZSBhYmxlIHRvIGNhbGwgcmVtb3ZlRXZlbnRMaXN0ZW5lcigpIG11bHRpcGxlCisgICAgLy8gdGlt
ZXMgb24gZGlmZmVyZW50IG5vZGVzLCB3ZSBoYXZlIHRvIGRlbGF5IGl0cyBpbW1lZGlhdGUgZGVz
dHJ1Y3Rpb24sIHdoaWNoIHdvdWxkIGhhcHBlbgorICAgIC8vIGFmdGVyIHRoZSBmaXJzdCBjYWxs
IGJlbG93LgorICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBwcm90ZWN0b3IobGlzdGVuZXIpOwor
CisgICAgLy8gUmVtb3ZlIGV2ZW50IGxpc3RlbmVyIGZyb20gcmVndWxhciBET00gZWxlbWVudAor
ICAgIGlmICghdHJ5UmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLCBldmVudFR5cGUsIGxpc3RlbmVy
LCB1c2VDYXB0dXJlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdXBkYXRlU1ZHRWxl
bWVudEluc3RhbmNlc0FmdGVyRXZlbnRMaXN0ZW5lckNoYW5nZSh0aGlzKTsKKyAgICAvLyBSZW1v
dmUgZXZlbnQgbGlzdGVuZXIgZnJvbSBhbGwgc2hhZG93IHRyZWUgRE9NIGVsZW1lbnQgaW5zdGFu
Y2VzCisgICAgY29uc3QgSGFzaFNldDxTVkdFbGVtZW50SW5zdGFuY2UqPjo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gaW5zdGFuY2VzLmVuZCgpOworICAgIGZvciAoSGFzaFNldDxTVkdFbGVtZW50SW5z
dGFuY2UqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBpbnN0YW5jZXMuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7CisgICAgICAgIEFTU0VSVCgoKml0KS0+Y29ycmVzcG9uZGluZ0VsZW1lbnQoKSA9
PSB0aGlzKTsKKworICAgICAgICBTVkdFbGVtZW50KiBzaGFkb3dUcmVlRWxlbWVudCA9ICgqaXQp
LT5zaGFkb3dUcmVlRWxlbWVudCgpOworICAgICAgICBBU1NFUlQoc2hhZG93VHJlZUVsZW1lbnQp
OworCisgICAgICAgIGlmICh0cnlSZW1vdmVFdmVudExpc3RlbmVyKHNoYWRvd1RyZWVFbGVtZW50
LCBldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgIC8vIFRoaXMgY2FzZSBjYW4gb25seSBiZSBoaXQgZm9yIGV2ZW50IGxpc3Rl
bmVycyBjcmVhdGVkIGZyb20gbWFya3VwCisgICAgICAgIEFTU0VSVChsaXN0ZW5lci0+d2FzQ3Jl
YXRlZEZyb21NYXJrdXAoKSk7CisKKyAgICAgICAgLy8gSWYgdGhlIGV2ZW50IGxpc3RlbmVyICds
aXN0ZW5lcicgaGFzIGJlZW4gY3JlYXRlZCBmcm9tIG1hcmt1cCBhbmQgaGFzIGJlZW4gZmlyZWQg
YmVmb3JlCisgICAgICAgIC8vIHRoZW4gSlNMYXp5RXZlbnRMaXN0ZW5lcjo6cGFyc2VDb2RlKCkg
aGFzIGJlZW4gY2FsbGVkIGFuZCBtX2pzRnVuY3Rpb24gb2YgdGhhdCBsaXN0ZW5lcgorICAgICAg
ICAvLyBoYXMgYmVlbiBjcmVhdGVkIChyZWFkOiBpdCdzIG5vdCAwIGFueW1vcmUpLiBEdXJpbmcg
c2hhZG93IHRyZWUgY3JlYXRpb24sIHRoZSBldmVudAorICAgICAgICAvLyBsaXN0ZW5lciBET00g
YXR0cmlidXRlIGhhcyBiZWVuIGNsb25lZCwgYW5kIGFub3RoZXIgZXZlbnQgbGlzdGVuZXIgaGFz
IGJlZW4gc2V0dXAgaW4KKyAgICAgICAgLy8gdGhlIHNoYWRvdyB0cmVlLiBJZiB0aGF0IGV2ZW50
IGxpc3RlbmVyIGhhcyBub3QgYmVlbiB1c2VkIHlldCwgbV9qc0Z1bmN0aW9uIGlzIHN0aWxsIDAs
CisgICAgICAgIC8vIGFuZCB0cnlSZW1vdmVFdmVudExpc3RlbmVyKCkgYWJvdmUgd2lsbCBmYWls
LiBXb3JrIGFyb3VuZCB0aGF0IHZlcnkgc2VsZG9tIHByb2JsZW0uCisgICAgICAgIEV2ZW50VGFy
Z2V0RGF0YSogZGF0YSA9IHNoYWRvd1RyZWVFbGVtZW50LT5ldmVudFRhcmdldERhdGEoKTsKKyAg
ICAgICAgQVNTRVJUKGRhdGEpOworCisgICAgICAgIEV2ZW50TGlzdGVuZXJNYXA6Oml0ZXJhdG9y
IHJlc3VsdCA9IGRhdGEtPmV2ZW50TGlzdGVuZXJNYXAuZmluZChldmVudFR5cGUpOworICAgICAg
ICBBU1NFUlQocmVzdWx0ICE9IGRhdGEtPmV2ZW50TGlzdGVuZXJNYXAuZW5kKCkpOworCisgICAg
ICAgIEV2ZW50TGlzdGVuZXJWZWN0b3IqIGVudHJ5ID0gcmVzdWx0LT5zZWNvbmQ7CisgICAgICAg
IEFTU0VSVChlbnRyeSk7CisKKyAgICAgICAgdW5zaWduZWQgaW50IGluZGV4ID0gMDsKKyAgICAg
ICAgYm9vbCBmb3VuZExpc3RlbmVyID0gZmFsc2U7CisKKyAgICAgICAgRXZlbnRMaXN0ZW5lclZl
Y3Rvcjo6aXRlcmF0b3IgZW5kID0gZW50cnktPmVuZCgpOworICAgICAgICBmb3IgKEV2ZW50TGlz
dGVuZXJWZWN0b3I6Oml0ZXJhdG9yIGl0ID0gZW50cnktPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkgeworICAgICAgICAgICAgaWYgKCEoKml0KS5saXN0ZW5lci0+d2FzQ3JlYXRlZEZyb21NYXJr
dXAoKSkgeworICAgICAgICAgICAgICAgICsraW5kZXg7CisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvdW5kTGlzdGVuZXIgPSB0cnVlOwor
ICAgICAgICAgICAgZW50cnktPnJlbW92ZShpbmRleCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIEFTU0VSVChmb3VuZExpc3RlbmVyKTsKKworICAgICAgICBpZiAo
ZW50cnktPmlzRW1wdHkoKSkgeyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGRlbGV0ZSBl
bnRyeTsKKyAgICAgICAgICAgIGRhdGEtPmV2ZW50TGlzdGVuZXJNYXAucmVtb3ZlKHJlc3VsdCk7
CisgICAgICAgIH0KKyAgICB9CisKICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgogfQogCiBFdmVu
dFRhcmdldERhdGEqIE5vZGU6OmV2ZW50VGFyZ2V0RGF0YSgpCkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdFbGVtZW50SW5zdGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0VsZW1l
bnRJbnN0YW5jZS5jcHAJKHJldmlzaW9uIDUzNTUwKQorKysgV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dEluc3RhbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgICAgQ29w
eXJpZ2h0IChDKSAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUu
b3JnPgorICAgIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzksMTMgKzQwLDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIFdURjo6UmVmQ291bnRlZExlYWtDb3VudGVy
IGluc3RhbmNlQ291bnRlcigiV2ViQ29yZVNWR0VsZW1lbnRJbnN0YW5jZSIpOwogI2VuZGlmCiAK
LXN0YXRpYyBFdmVudFRhcmdldERhdGEmIGR1bW15RXZlbnRUYXJnZXREYXRhKCkKLXsKLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEV2ZW50VGFyZ2V0RGF0YSwgZHVtbXlFdmVudFRhcmdldERhdGEs
ICgpKTsKLSAgICBkdW1teUV2ZW50VGFyZ2V0RGF0YS5ldmVudExpc3RlbmVyTWFwLmNsZWFyKCk7
Ci0gICAgcmV0dXJuIGR1bW15RXZlbnRUYXJnZXREYXRhOwotfQotCiBTVkdFbGVtZW50SW5zdGFu
Y2U6OlNWR0VsZW1lbnRJbnN0YW5jZShTVkdVc2VFbGVtZW50KiB1c2VFbGVtZW50LCBQYXNzUmVm
UHRyPFNWR0VsZW1lbnQ+IG9yaWdpbmFsRWxlbWVudCkKICAgICA6IG1fdXNlRWxlbWVudCh1c2VF
bGVtZW50KQogICAgICwgbV9lbGVtZW50KG9yaWdpbmFsRWxlbWVudCkKQEAgLTk1LDEwICs4OSwx
MCBAQCB2b2lkIFNWR0VsZW1lbnRJbnN0YW5jZTo6YXBwZW5kQ2hpbGQoUGFzCiAKIHZvaWQgU1ZH
RWxlbWVudEluc3RhbmNlOjppbnZhbGlkYXRlQWxsSW5zdGFuY2VzT2ZFbGVtZW50KFNWR0VsZW1l
bnQqIGVsZW1lbnQpCiB7Ci0gICAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50LT5pc1N0eWxlZCgp
KQorICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHN0YXRpY19j
YXN0PFNWR1N0eWxlZEVsZW1lbnQqPihlbGVtZW50KS0+aW5zdGFuY2VVcGRhdGVzQmxvY2tlZCgp
KQorICAgIGlmIChlbGVtZW50LT5pc1N0eWxlZCgpICYmIHN0YXRpY19jYXN0PFNWR1N0eWxlZEVs
ZW1lbnQqPihlbGVtZW50KS0+aW5zdGFuY2VVcGRhdGVzQmxvY2tlZCgpKQogICAgICAgICByZXR1
cm47CiAKICAgICBIYXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5jZSo+IHNldCA9IGVsZW1lbnQtPmlu
c3RhbmNlc0ZvckVsZW1lbnQoKTsKQEAgLTExNywzMCArMTExLDIyIEBAIHZvaWQgU1ZHRWxlbWVu
dEluc3RhbmNlOjppbnZhbGlkYXRlQWxsSW4KIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogU1ZH
RWxlbWVudEluc3RhbmNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIHsKLSAgICBp
ZiAoU1ZHRWxlbWVudCogZWxlbWVudCA9IGNvcnJlc3BvbmRpbmdFbGVtZW50KCkpCi0gICAgICAg
IHJldHVybiBlbGVtZW50LT5kb2N1bWVudCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBt
X2VsZW1lbnQtPmRvY3VtZW50KCk7CiB9CiAKIGJvb2wgU1ZHRWxlbWVudEluc3RhbmNlOjphZGRF
dmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2
ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7Ci0gICAgaWYgKCFjb3Jy
ZXNwb25kaW5nRWxlbWVudCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGNv
cnJlc3BvbmRpbmdFbGVtZW50KCktPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5l
ciwgdXNlQ2FwdHVyZSk7CisgICAgcmV0dXJuIG1fZWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihl
dmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKIH0KIAogYm9vbCBTVkdFbGVtZW50SW5z
dGFuY2U6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7Ci0gICAgaWYgKCFj
b3JyZXNwb25kaW5nRWxlbWVudCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
IGNvcnJlc3BvbmRpbmdFbGVtZW50KCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBs
aXN0ZW5lciwgdXNlQ2FwdHVyZSk7CisgICAgcmV0dXJuIG1fZWxlbWVudC0+cmVtb3ZlRXZlbnRM
aXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKIH0KIAogdm9pZCBTVkdF
bGVtZW50SW5zdGFuY2U6OnJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCkKIHsKLSAgICBpZiAoIWNv
cnJlc3BvbmRpbmdFbGVtZW50KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBjb3JyZXNwb25kaW5n
RWxlbWVudCgpLT5yZW1vdmVBbGxFdmVudExpc3RlbmVycygpOworICAgIG1fZWxlbWVudC0+cmVt
b3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKIH0KIAogYm9vbCBTVkdFbGVtZW50SW5zdGFuY2U6OmRp
c3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQpCkBAIC0xNjAsMTQgKzE0Niwx
NyBAQCBib29sIFNWR0VsZW1lbnRJbnN0YW5jZTo6ZGlzcGF0Y2hFdmVudChQCiAKIEV2ZW50VGFy
Z2V0RGF0YSogU1ZHRWxlbWVudEluc3RhbmNlOjpldmVudFRhcmdldERhdGEoKQogewotICAgIHJl
dHVybiBjb3JyZXNwb25kaW5nRWxlbWVudCgpID8gY29ycmVzcG9uZGluZ0VsZW1lbnQoKS0+ZXZl
bnRUYXJnZXREYXRhKCkgOiAwOworICAgIHJldHVybiBtX2VsZW1lbnQtPmV2ZW50VGFyZ2V0RGF0
YSgpOwogfQogCiBFdmVudFRhcmdldERhdGEqIFNWR0VsZW1lbnRJbnN0YW5jZTo6ZW5zdXJlRXZl
bnRUYXJnZXREYXRhKCkKIHsKLSAgICByZXR1cm4gJmR1bW15RXZlbnRUYXJnZXREYXRhKCk7IC8v
IHJldHVybiBzb21ldGhpbmcsIHNvIHdlIGRvbid0IGNyYXNoCisgICAgLy8gQXZvaWQgY3Jhc2hp
bmcgLSByZXR1cm4gYSBkZWZhdWx0IGR1bW15IHZhbHVlCisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChFdmVudFRhcmdldERhdGEsIGR1bW15RXZlbnRUYXJnZXREYXRhLCAoKSk7CisgICAgZHVtbXlF
dmVudFRhcmdldERhdGEuZXZlbnRMaXN0ZW5lck1hcC5jbGVhcigpOworICAgIHJldHVybiAmZHVt
bXlFdmVudFRhcmdldERhdGE7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30KIAotI2Vu
ZGlmIC8vIEVOQUJMRShTVkcpCisjZW5kaWYKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1VzZUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCShyZXZp
c2lvbiA1MzU1MCkKKysrIFdlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MCwxMiArODAsOCBAQCBTVkdFbGVtZW50SW5zdGFuY2UqIFNWR1VzZUVsZW1lbnQ6
Omluc3RhCiAgICAgLy8gSWYgdGhlcmUgaXMgbm8gZWxlbWVudCBpbnN0YW5jZSB0cmVlLCBmb3Jj
ZSBpbW1lZGlhdGUgU1ZHRWxlbWVudEluc3RhbmNlIHRyZWUKICAgICAvLyBjcmVhdGlvbiwgYXMg
d2UgY2FuJ3Qgd2FpdCBmb3IgdGhlIGxhenkgY3JlYXRpb24gdG8gaGFwcGVuIGlmIGllLiBKUyB3
YW50cyB0bwogICAgIC8vIGFjY2VzcyB0aGUgaW5zdGFuY2VSb290IG9iamVjdCByaWdodCBhZnRl
ciBjcmVhdGluZyB0aGUgZWxlbWVudCBvbi10aGUtZmx5Ci0gICAgaWYgKCFtX3RhcmdldEVsZW1l
bnRJbnN0YW5jZSkgewotICAgICAgICBpZiAoUmVuZGVyU1ZHU2hhZG93VHJlZVJvb3RDb250YWlu
ZXIqIHNoYWRvd1Jvb3QgPSBzdGF0aWNfY2FzdDxSZW5kZXJTVkdTaGFkb3dUcmVlUm9vdENvbnRh
aW5lcio+KHJlbmRlcmVyKCkpKSB7Ci0gICAgICAgICAgICBzaGFkb3dSb290LT5tYXJrU2hhZG93
VHJlZUZvclJlY3JlYXRpb24oKTsKLSAgICAgICAgICAgIHNoYWRvd1Jvb3QtPnVwZGF0ZUZyb21F
bGVtZW50KCk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgaWYgKCFtX3RhcmdldEVsZW1lbnRJbnN0
YW5jZSkKKyAgICAgICAgZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxl
c2hlZXRzKCk7CiAKICAgICByZXR1cm4gbV90YXJnZXRFbGVtZW50SW5zdGFuY2UuZ2V0KCk7CiB9
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiA1MzU1MCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDEwLTAxLTE5ICBOaWtvbGFzIFppbW1lcm1h
bm4gIDxuemltbWVybWFubkByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIHN2Zy9jdXN0b20vdXNlLWluc3RhbmNlUm9vdC1ldmVudC1idWJi
bGluZy54aHRtbCBpcyBmbGFrZXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMzODM1CisKKyAgICAgICAgbW91c2VFdmVudCBmaXJlcyBtdXRpcGxlIHRp
bWVzIGluIHN2Zy9jdXN0b20vdXNlLWluc3RhbmNlUm9vdC1hcy1ldmVudC10YXJnZXQueGh0bWwK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyNTE5CisK
KyAgICAgICAgU3RhYmlsaXplIDx1c2U+IHNjcmlwdGluZyBzdXBwb3J0IC0gdXNlIHRlc3RzIGFy
ZSByZWxpYWJsZSBub3cgKHRlc3RlZCB1c2luZyAtLXJlcGVhY2gtZWFjaCA1MCAtLXJhbmRvbSAt
cCkKKyAgICAgICAgUmVlbmFibGUgdGhlIHRlc3RzIGluIHF1ZXN0aW9uIG9uIGd0ayAvIHF0IC8g
d2luLiBtYWMgd2FzIG9ubHkgYWZmZWN0ZWQgZnJvbSB0aW1lIHRvIHRpbWUgKGFsd2F5cyByZXBy
b2R1Y2FibGUgdXNpbmcgLS1yZXBlYXQtZWFjaCA1MCB0aG91Z2guKQorCisgICAgICAgICogcGxh
dGZvcm0vZ3RrL1NraXBwZWQ6IFVuc2tpcCB1c2UtaW5zdGFuY2VSb290LWV2ZW50LWxpc3RlbmVy
cy54aHRtbCAvIHVzZS1pbnN0YW5jZVJvb3QtZXZlbnQtYnViYmxpbmcueGh0bWwgLyB1c2UtaW5z
dGFuY2VSb290LWFzLWV2ZW50LXRhcmdldC54aHRtbAorICAgICAgICAqIHBsYXRmb3JtL3F0L1Nr
aXBwZWQ6IFVuc2tpcCB1c2UtaW5zdGFuY2VSb290LWFzLWV2ZW50LXRhcmdldC54aHRtbAorICAg
ICAgICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOiBEaXR0by4KKyAgICAgICAgKiBzdmcvY3VzdG9t
L3Jlc291cmNlcy91c2UtaW5zdGFuY2VSb290LWV2ZW50LWJ1YmJsaW5nLmpzOgorICAgICAgICAo
ZXZlbnRIYW5kbGVyKTogTm8gbmVlZCBhbnltb3JlIHRvIHJlbHkgb24gYSAxMDBtcyB0aW1lb3V0
LgorICAgICAgICAqIHN2Zy9jdXN0b20vcmVzb3VyY2VzL3VzZS1pbnN0YW5jZVJvb3QtZXZlbnQt
bGlzdGVuZXJzLmpzOgorICAgICAgICAoZXZlbnRIYW5kbGVyKTogRGl0dG8uCisgICAgICAgICog
c3ZnL2N1c3RvbS91c2UtaW5zdGFuY2VSb290LWFzLWV2ZW50LXRhcmdldC1leHBlY3RlZC50eHQ6
CisgICAgICAgICogc3ZnL2N1c3RvbS91c2UtaW5zdGFuY2VSb290LWFzLWV2ZW50LXRhcmdldC54
aHRtbDogUmV3cm90ZSB0ZXN0IC0gd2UgZG9uJ3QgbmVlZCB0byB3b3JrIGFyb3VuZCBzaGFkb3cg
dHJlZSByZWNsb25lIGlzc3VlcyBhbnltb3JlLgorICAgICAgICAqIHN2Zy9jdXN0b20vdXNlLWlu
c3RhbmNlUm9vdC1ldmVudC1saXN0ZW5lci1saXZlbmVzcy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHN2Zy9jdXN0b20vdXNlLWluc3RhbmNlUm9vdC1ldmVudC1saXN0ZW5lci1saXZl
bmVzcy54aHRtbDogQWRkZWQuCisKIDIwMTAtMDEtMjAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9y
bWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJKHJldmlzaW9uIDUzNTUwKQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTM2OTksNyArMzY5OSw2
IEBAIHN2Zy9jdXN0b20vc3ZnLWRpc2FsbG93ZWQtaW4tZGFzaGJvYXJkLW8KIHN2Zy9jdXN0b20v
c3ZnLWZvbnRzLWluLXRleHQtY29udHJvbHMuaHRtbAogc3ZnL2N1c3RvbS91c2UtZWxlbWVudElu
c3RhbmNlLWV2ZW50LXRhcmdldC5zdmcKIHN2Zy9jdXN0b20vdXNlLWVsZW1lbnRJbnN0YW5jZS1t
ZXRob2RzLnN2Zwotc3ZnL2N1c3RvbS91c2UtaW5zdGFuY2VSb290LWV2ZW50LWxpc3RlbmVycy54
aHRtbAogc3ZnL2N1c3RvbS91c2Utb24tc3ltYm9sLWluc2lkZS1wYXR0ZXJuLnN2Zwogc3ZnL2N1
c3RvbS91c2Utc2V0QXR0cmlidXRlLWNyYXNoLnN2ZwogIyAgIFRlc3RzIGdlbmVyYXRpbmcgbmV3
IHJlc3VsdHMKQEAgLTU3MTcsMTEgKzU3MTYsNiBAQCBmYXN0L2V2ZW50cy90b3VjaAogIyBTZWUg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyNDQxCiBmYXN0L3BhcnNl
ci94aHRtbC1jbG9zZS13aGlsZS1wYXJzaW5nLnhodG1sCiAKLSMgQnVnIDMyNTE5IC0gIG1vdXNl
RXZlbnQgZmlyZXMgbXV0aXBsZSB0aW1lcyBpbgotIyAgICAgICAgICAgICAgTGF5b3V0VGVzdHMv
c3ZnL2N1c3RvbS91c2UtaW5zdGFuY2VSb290LWFzLWV2ZW50LXRhcmdldC54aHRtbAotIyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI1MTkKLXN2Zy9jdXN0b20vdXNl
LWluc3RhbmNlUm9vdC1hcy1ldmVudC10YXJnZXQueGh0bWwKLQogIyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI2MDQKICMgRmFpbHMgb24gdGhlIHJlbGVhc2UgYm90
IGJlY2F1c2Ugb2YsIGFwcGFyZW50bHksIHJvdWRpbmcgZXJyb3JzCiBzdmcvY3VzdG9tL3BhdGgt
Z2V0VG90YWxMZW5ndGguc3ZnCkBAIC01Nzc4LDggKzU3NzIsMyBAQCBzdmcvY3VzdG9tL3JlbGF0
aXZlLXNpemVkLWRlZXAtc2hhZG93LXRyCiBzdmcvY3VzdG9tL3JlbGF0aXZlLXNpemVkLXNoYWRv
dy10cmVlLWNvbnRlbnQueGh0bWwKIHN2Zy9jdXN0b20vdGV4dC14eS11cGRhdGVzLVNWR0xpc3Qu
eGh0bWwKIHN2Zy90ZXh0L3NlbGVjdGlvbi1iYWNrZ3JvdW5kLWNvbG9yLnhodG1sCi0KLSMgRmxh
a2V5IFNWRyB0ZXN0LCB1c2VzICdzZXRUaW1lb3V0KDEwMCknCi0jIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzgzNQotc3ZnL2N1c3RvbS91c2UtaW5zdGFuY2VSb290
LWV2ZW50LWJ1YmJsaW5nLnhodG1sCi0KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Nr
aXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAkocmV2
aXNpb24gNTM1NTApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCSh3b3JraW5n
IGNvcHkpCkBAIC01MDcyLDExICs1MDcyLDYgQEAgaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhcnNl
ZC1pZnJhbWUtZHluYQogIyBUaGUgYnVnIHdpdGggdGhpcyB0ZXN0IGlzIHRyYWNrZWQgdW5kZXIg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyNTIxCiBodHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLWJhc2ljLWRlbmllZC1wcmVmbGlnaHQtY2Fj
aGUuaHRtbAogCi0jIEJ1ZyAzMjUxOSAtICBtb3VzZUV2ZW50IGZpcmVzIG11dGlwbGUgdGltZXMg
aW4gCi0jICAgICAgICAgICAgICBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3VzZS1pbnN0YW5jZVJv
b3QtYXMtZXZlbnQtdGFyZ2V0LnhodG1sCi0jIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMjUxOQotc3ZnL2N1c3RvbS91c2UtaW5zdGFuY2VSb290LWFzLWV2ZW50LXRh
cmdldC54aHRtbAotCiAjIE1pc3NpbmcgdmFyaWFibGVzOgogIyBTVkdBbHRHbHlwaEVsZW1lbnQs
IFNWR0FuaW1hdGVFbGVtZW50LCBTVkdBbmltYXRlQ29sb3JFbGVtZW50LCBTVkdBbmltYXRlVHJh
bnNmb3JtRWxlbWVudAogIyBTVkdGb250RWxlbWVudCwgU1ZHR2x5cGhFbGVtZW50LCBTVkdNaXNz
aW5nR2x5cGhFbGVtZW50LCBTVkdGb250RmFjZUVsZW1lbnQsIFNWR0ZvbnRGYWNlU3JjRWxlbWVu
dApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQJKHJldmlzaW9uIDUzNTUwKQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTcyMSwxMSAr
NzIxLDYgQEAgZmFzdC9ldmVudHMvdG91Y2gKIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklF
RC1nZXRTVkdEb2N1bWVudC1pZnJhbWUuaHRtbAogaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVO
SUVELWdldFNWR0RvY3VtZW50LW9iamVjdC5odG1sCiAKLSMgQnVnIDMyNTE5IC0gIG1vdXNlRXZl
bnQgZmlyZXMgbXV0aXBsZSB0aW1lcyBpbgotIyAgICAgICAgICAgICAgTGF5b3V0VGVzdHMvc3Zn
L2N1c3RvbS91c2UtaW5zdGFuY2VSb290LWFzLWV2ZW50LXRhcmdldC54aHRtbAotIyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI1MTkKLXN2Zy9jdXN0b20vdXNlLWlu
c3RhbmNlUm9vdC1hcy1ldmVudC10YXJnZXQueGh0bWwKLQogIyBodHRwOi8vd2Via2l0Lm9yZy9i
LzMyNTMyIC0gVGltZSBvdXQKIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9keW5hbWljLWlmcmFtZS1k
eW5hbWljLWZvcm0tYmFjay1lbnRyeS5odG1sCiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFyc2Vk
LWlmcmFtZS1keW5hbWljLWZvcm0tYmFjay1lbnRyeS5odG1sCkluZGV4OiBMYXlvdXRUZXN0cy9z
dmcvY3VzdG9tL3VzZS1pbnN0YW5jZVJvb3QtYXMtZXZlbnQtdGFyZ2V0LWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3VzZS1pbnN0YW5jZVJvb3QtYXMt
ZXZlbnQtdGFyZ2V0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTM1NTApCisrKyBMYXlvdXRUZXN0
cy9zdmcvY3VzdG9tL3VzZS1pbnN0YW5jZVJvb3QtYXMtZXZlbnQtdGFyZ2V0LWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBQQVNTIGN1cnJlbnRFdmVudC50YXJn
ZXQgPT0gY3VycmVudEV2ZW50CiBQQVNTIGN1cnJlbnRFdmVudC50YXJnZXQuY29ycmVzcG9uZGlu
Z0VsZW1lbnQgPT0gY3VycmVudEV2ZW50LmN1cnJlbnRUYXJnZXQuY29ycmVzcG9uZGluZ0VsZW1l
bnQgaXMgdHJ1ZQogUEFTUyBjdXJyZW50RXZlbnQudGFyZ2V0LmNvcnJlc3BvbmRpbmdVc2VFbGVt
ZW50ID09IGN1cnJlbnRFdmVudC5jdXJyZW50VGFyZ2V0LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50
IGlzIHRydWUKIAotVGVzdCAjMzogVmVyaWZ5IHRoYXQgZXZlbnQgbGlzdGVuZXJzIGF0dGFjaGVk
IHRvIHRoZSBzaGFkb3cgdHJlZSBlbGVtZW50cyBhcmUgY29waWVkIHdoZW4gdXNlIHJlY2xvbmVz
IHRoZSBpbnRlcm5hbCBzaGFkb3cgdHJlZQorVGVzdCAjMzogVmVyaWZ5IHRoYXQgZXZlbnRzIGRp
c3BhdGNoZWQgYnkgdGhlIHVzZXIgZW5kIHVwIG9uIHRoZSBTVkdFbGVtZW50SW5zdGFuY2Ugb2Jq
ZWN0cwogCiBQQVNTIGN1cnJlbnRFdmVudC50b1N0cmluZygpIGlzICJbb2JqZWN0IE1vdXNlRXZl
bnRdIgogUEFTUyBjdXJyZW50RXZlbnQudHlwZS50b1N0cmluZygpIGlzICJtb3VzZW92ZXIiCkBA
IC00NiwzNSArNDYsNyBAQCBQQVNTIGN1cnJlbnRFdmVudC50YXJnZXQgPT0gY3VycmVudEV2ZW50
CiBQQVNTIGN1cnJlbnRFdmVudC50YXJnZXQuY29ycmVzcG9uZGluZ0VsZW1lbnQgPT0gY3VycmVu
dEV2ZW50LmN1cnJlbnRUYXJnZXQuY29ycmVzcG9uZGluZ0VsZW1lbnQgaXMgdHJ1ZQogUEFTUyBj
dXJyZW50RXZlbnQudGFyZ2V0LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50ID09IGN1cnJlbnRFdmVu
dC5jdXJyZW50VGFyZ2V0LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50IGlzIHRydWUKIAotVGVzdCAj
NDogVmVyaWZ5IHRoYXQgZXZlbnRzIGRpc3BhdGNoZWQgdG8gdGhlIHJlZmVyZW5jZWQgZWxlbWVu
dCBlbmQgdXAgb24gdGhlIFNWRWxlbWVudEluc3RhbmNlIG9iamVjdHMKLQotUEFTUyBjdXJyZW50
RXZlbnQudG9TdHJpbmcoKSBpcyAiW29iamVjdCBNb3VzZUV2ZW50XSIKLVBBU1MgY3VycmVudEV2
ZW50LnR5cGUudG9TdHJpbmcoKSBpcyAibW91c2VvdmVyIgotUEFTUyBjdXJyZW50RXZlbnQudGFy
Z2V0LnRvU3RyaW5nKCkgaXMgIltvYmplY3QgU1ZHRWxlbWVudEluc3RhbmNlXSIKLVBBU1MgY3Vy
cmVudEV2ZW50LmN1cnJlbnRUYXJnZXQudG9TdHJpbmcoKSBpcyAiW29iamVjdCBTVkdFbGVtZW50
SW5zdGFuY2VdIgotUEFTUyBjdXJyZW50RXZlbnQudGFyZ2V0LmNvcnJlc3BvbmRpbmdFbGVtZW50
ID09IHJlY3RFbGVtZW50IGlzIHRydWUKLVBBU1MgY3VycmVudEV2ZW50LnRhcmdldC5jb3JyZXNw
b25kaW5nVXNlRWxlbWVudCA9PSB1c2VFbGVtZW50IGlzIHRydWUKLVBBU1MgY3VycmVudEV2ZW50
LmN1cnJlbnRUYXJnZXQuY29ycmVzcG9uZGluZ0VsZW1lbnQgPT0gcmVjdEVsZW1lbnQgaXMgdHJ1
ZQotUEFTUyBjdXJyZW50RXZlbnQuY3VycmVudFRhcmdldC5jb3JyZXNwb25kaW5nVXNlRWxlbWVu
dCA9PSB1c2VFbGVtZW50IGlzIHRydWUKLVBBU1MgY3VycmVudEV2ZW50LnRhcmdldCA9PSBjdXJy
ZW50RXZlbnQuY3VycmVudFRhcmdldCBpcyB0cnVlCi1QQVNTIGN1cnJlbnRFdmVudC50YXJnZXQu
Y29ycmVzcG9uZGluZ0VsZW1lbnQgPT0gY3VycmVudEV2ZW50LmN1cnJlbnRUYXJnZXQuY29ycmVz
cG9uZGluZ0VsZW1lbnQgaXMgdHJ1ZQotUEFTUyBjdXJyZW50RXZlbnQudGFyZ2V0LmNvcnJlc3Bv
bmRpbmdVc2VFbGVtZW50ID09IGN1cnJlbnRFdmVudC5jdXJyZW50VGFyZ2V0LmNvcnJlc3BvbmRp
bmdVc2VFbGVtZW50IGlzIHRydWUKLQotVGVzdCAjNTogVmVyaWZ5IHRoYXQgZXZlbnQgbGlzdGVu
ZXJzIGF0dGFjaGVkIHRvIHRoZSByZWZlcmVuY2VkIGVsZW1lbnRzIGFyZSBjb3BpZWQgd2hlbiB1
c2UgcmVjbG9uZXMgdGhlIGludGVybmFsIHNoYWRvdyB0cmVlCi0KLVBBU1MgY3VycmVudEV2ZW50
LnRvU3RyaW5nKCkgaXMgIltvYmplY3QgTW91c2VFdmVudF0iCi1QQVNTIGN1cnJlbnRFdmVudC50
eXBlLnRvU3RyaW5nKCkgaXMgIm1vdXNlb3ZlciIKLVBBU1MgY3VycmVudEV2ZW50LnRhcmdldC50
b1N0cmluZygpIGlzICJbb2JqZWN0IFNWR0VsZW1lbnRJbnN0YW5jZV0iCi1QQVNTIGN1cnJlbnRF
dmVudC5jdXJyZW50VGFyZ2V0LnRvU3RyaW5nKCkgaXMgIltvYmplY3QgU1ZHRWxlbWVudEluc3Rh
bmNlXSIKLVBBU1MgY3VycmVudEV2ZW50LnRhcmdldC5jb3JyZXNwb25kaW5nRWxlbWVudCA9PSBy
ZWN0RWxlbWVudCBpcyB0cnVlCi1QQVNTIGN1cnJlbnRFdmVudC50YXJnZXQuY29ycmVzcG9uZGlu
Z1VzZUVsZW1lbnQgPT0gdXNlRWxlbWVudCBpcyB0cnVlCi1QQVNTIGN1cnJlbnRFdmVudC5jdXJy
ZW50VGFyZ2V0LmNvcnJlc3BvbmRpbmdFbGVtZW50ID09IHJlY3RFbGVtZW50IGlzIHRydWUKLVBB
U1MgY3VycmVudEV2ZW50LmN1cnJlbnRUYXJnZXQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQgPT0g
dXNlRWxlbWVudCBpcyB0cnVlCi1QQVNTIGN1cnJlbnRFdmVudC50YXJnZXQgPT0gY3VycmVudEV2
ZW50LmN1cnJlbnRUYXJnZXQgaXMgdHJ1ZQotUEFTUyBjdXJyZW50RXZlbnQudGFyZ2V0LmNvcnJl
c3BvbmRpbmdFbGVtZW50ID09IGN1cnJlbnRFdmVudC5jdXJyZW50VGFyZ2V0LmNvcnJlc3BvbmRp
bmdFbGVtZW50IGlzIHRydWUKLVBBU1MgY3VycmVudEV2ZW50LnRhcmdldC5jb3JyZXNwb25kaW5n
VXNlRWxlbWVudCA9PSBjdXJyZW50RXZlbnQuY3VycmVudFRhcmdldC5jb3JyZXNwb25kaW5nVXNl
RWxlbWVudCBpcyB0cnVlCi0KLVRlc3QgIzY6IFZlcmlmeSB0aGF0IGEgY2xpY2sgZXZlbnQgZ290
IGRpc3BhdGNoZWQgdG8gdGhlIG9yaWdpbmFsIHRyZWUgYXMgZGVmaW5lZCBpbiB0aGUgbWFya3Vw
LCB3aGVuIHNlbnQgdG8gdGhlICdyZWN0RWxlbWVudCcKK1Rlc3QgIzQ6IFZlcmlmeSB0aGF0IGEg
Y2xpY2sgZXZlbnQgZ290IGRpc3BhdGNoZWQgdG8gdGhlIG9yaWdpbmFsIHRyZWUgYXMgZGVmaW5l
ZCBpbiB0aGUgbWFya3VwLCB3aGVuIHNlbnQgdG8gdGhlICdyZWN0RWxlbWVudCcKIAogUEFTUyBj
dXJyZW50RXZlbnQudG9TdHJpbmcoKSBpcyAiW29iamVjdCBNb3VzZUV2ZW50XSIKIFBBU1MgY3Vy
cmVudEV2ZW50LnR5cGUudG9TdHJpbmcoKSBpcyAiY2xpY2siCkBAIC04NCwyMSArNTYsNyBAQCBQ
QVNTIGN1cnJlbnRFdmVudC50YXJnZXQgPT0gcmVjdEVsZW1lbnQgCiBQQVNTIGN1cnJlbnRFdmVu
dC5jdXJyZW50VGFyZ2V0ID09IHJlY3RFbGVtZW50IGlzIHRydWUKIFBBU1MgY3VycmVudEV2ZW50
LnRhcmdldCA9PSBjdXJyZW50RXZlbnQuY3VycmVudFRhcmdldCBpcyB0cnVlCiAKLVRlc3QgIzc6
IFZlcmlmeSB0aGF0IGEgY2xpY2sgZXZlbnQgZ290IGRpc3BhdGNoZWQgdG8gdGhlIGluc3RhbmNl
IHRyZWUgd2hlbiBzZW50IHRvIHRoZSAndXNlRWxlbWVudC5pbnN0YW5jZVJvb3QnIHdpdGggYW4g
ZXZlbnQgbGlzdGVuZXIgYXR0YWNoZWQgdG8gJ3JlY3RFbGVtZW50JwotCi1QQVNTIGN1cnJlbnRF
dmVudC50b1N0cmluZygpIGlzICJbb2JqZWN0IE1vdXNlRXZlbnRdIgotUEFTUyBjdXJyZW50RXZl
bnQudHlwZS50b1N0cmluZygpIGlzICJjbGljayIKLVBBU1MgY3VycmVudEV2ZW50LnRhcmdldC50
b1N0cmluZygpIGlzICJbb2JqZWN0IFNWR0VsZW1lbnRJbnN0YW5jZV0iCi1QQVNTIGN1cnJlbnRF
dmVudC5jdXJyZW50VGFyZ2V0LnRvU3RyaW5nKCkgaXMgIltvYmplY3QgU1ZHRWxlbWVudEluc3Rh
bmNlXSIKLVBBU1MgY3VycmVudEV2ZW50LnRhcmdldC5jb3JyZXNwb25kaW5nRWxlbWVudCA9PSBy
ZWN0RWxlbWVudCBpcyB0cnVlCi1QQVNTIGN1cnJlbnRFdmVudC50YXJnZXQuY29ycmVzcG9uZGlu
Z1VzZUVsZW1lbnQgPT0gdXNlRWxlbWVudCBpcyB0cnVlCi1QQVNTIGN1cnJlbnRFdmVudC5jdXJy
ZW50VGFyZ2V0LmNvcnJlc3BvbmRpbmdFbGVtZW50ID09IHJlY3RFbGVtZW50IGlzIHRydWUKLVBB
U1MgY3VycmVudEV2ZW50LmN1cnJlbnRUYXJnZXQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQgPT0g
dXNlRWxlbWVudCBpcyB0cnVlCi1QQVNTIGN1cnJlbnRFdmVudC50YXJnZXQgPT0gY3VycmVudEV2
ZW50LmN1cnJlbnRUYXJnZXQgaXMgdHJ1ZQotUEFTUyBjdXJyZW50RXZlbnQudGFyZ2V0LmNvcnJl
c3BvbmRpbmdFbGVtZW50ID09IGN1cnJlbnRFdmVudC5jdXJyZW50VGFyZ2V0LmNvcnJlc3BvbmRp
bmdFbGVtZW50IGlzIHRydWUKLVBBU1MgY3VycmVudEV2ZW50LnRhcmdldC5jb3JyZXNwb25kaW5n
VXNlRWxlbWVudCA9PSBjdXJyZW50RXZlbnQuY3VycmVudFRhcmdldC5jb3JyZXNwb25kaW5nVXNl
RWxlbWVudCBpcyB0cnVlCi0KLVRlc3QgIzg6IFZlcmlmeSB0aGF0IHRoZSBvcmlnaW5hbCBjbGlj
ayBldmVudCBsaXN0ZW5lciBkZWZpbmVkIGluIG1hcmt1cCBpcyBzdGlsbCB3b3JraW5nIHByb3Bl
cmx5CitUZXN0ICM1OiBWZXJpZnkgdGhhdCBhIGNsaWNrIGV2ZW50IGdvdCBkaXNwYXRjaGVkIHRv
IHRoZSBpbnN0YW5jZSB0cmVlIHdoZW4gc2VudCB0byB0aGUgJ3VzZUVsZW1lbnQuaW5zdGFuY2VS
b290JyB3aXRoIGFuIGV2ZW50IGxpc3RlbmVyIGF0dGFjaGVkIHRvICdyZWN0RWxlbWVudCcKIAog
UEFTUyBjdXJyZW50RXZlbnQudG9TdHJpbmcoKSBpcyAiW29iamVjdCBNb3VzZUV2ZW50XSIKIFBB
U1MgY3VycmVudEV2ZW50LnR5cGUudG9TdHJpbmcoKSBpcyAiY2xpY2siCkBAIC0xMTIsNyArNzAs
NyBAQCBQQVNTIGN1cnJlbnRFdmVudC50YXJnZXQgPT0gY3VycmVudEV2ZW50CiBQQVNTIGN1cnJl
bnRFdmVudC50YXJnZXQuY29ycmVzcG9uZGluZ0VsZW1lbnQgPT0gY3VycmVudEV2ZW50LmN1cnJl
bnRUYXJnZXQuY29ycmVzcG9uZGluZ0VsZW1lbnQgaXMgdHJ1ZQogUEFTUyBjdXJyZW50RXZlbnQu
dGFyZ2V0LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50ID09IGN1cnJlbnRFdmVudC5jdXJyZW50VGFy
Z2V0LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50IGlzIHRydWUKIAotVGVzdCAjOTogVmVyaWZ5IHRo
YXQgdGhlIG9yaWdpbmFsIGNsaWNrIGV2ZW50IGxpc3RlbmVyIGdvdCByZW1vdmVkIGFuZCBhIG5l
dyBvbmUgYXR0YWNoZWQgdG8gdGhlIHVzZSByb290IFNWR0VsZW1lbnRJbnN0YW5jZQorVGVzdCAj
NjogVmVyaWZ5IHRoYXQgdGhlIG9yaWdpbmFsIGNsaWNrIGV2ZW50IGxpc3RlbmVyIGdvdCByZW1v
dmVkIGFuZCBhIG5ldyBvbmUgYXR0YWNoZWQgaXMgYXR0YWNoZWQgdG8gdGhlIHVzZSByb290IFNW
R0VsZW1lbnRJbnN0YW5jZQogCiBQQVNTIGN1cnJlbnRFdmVudC50b1N0cmluZygpIGlzICJbb2Jq
ZWN0IE1vdXNlRXZlbnRdIgogUEFTUyBjdXJyZW50RXZlbnQudHlwZS50b1N0cmluZygpIGlzICJj
bGljayIKQEAgLTEyNiw3ICs4NCw3IEBAIFBBU1MgY3VycmVudEV2ZW50LnRhcmdldCA9PSBjdXJy
ZW50RXZlbnQKIFBBU1MgY3VycmVudEV2ZW50LnRhcmdldC5jb3JyZXNwb25kaW5nRWxlbWVudCA9
PSBjdXJyZW50RXZlbnQuY3VycmVudFRhcmdldC5jb3JyZXNwb25kaW5nRWxlbWVudCBpcyB0cnVl
CiBQQVNTIGN1cnJlbnRFdmVudC50YXJnZXQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQgPT0gY3Vy
cmVudEV2ZW50LmN1cnJlbnRUYXJnZXQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQgaXMgdHJ1ZQog
Ci1UZXN0ICMxMDogVmVyaWZ5IHRoYXQgdGhlIHNpbXVsYXRlZCBjbGljayBldmVudCBnb3QgZGlz
cGF0Y2hlZCB0byB0aGUgcmlnaHQgdGFyZ2V0CitUZXN0ICM4OiBWZXJpZnkgdGhhdCB0aGUgc2lt
dWxhdGVkIGNsaWNrIGV2ZW50IGdvdCBkaXNwYXRjaGVkIHRvIHRoZSByaWdodCB0YXJnZXQKIAog
UEFTUyBjdXJyZW50RXZlbnQudG9TdHJpbmcoKSBpcyAiW29iamVjdCBNb3VzZUV2ZW50XSIKIFBB
U1MgY3VycmVudEV2ZW50LnR5cGUudG9TdHJpbmcoKSBpcyAiY2xpY2siCkluZGV4OiBMYXlvdXRU
ZXN0cy9zdmcvY3VzdG9tL3VzZS1pbnN0YW5jZVJvb3QtYXMtZXZlbnQtdGFyZ2V0LnhodG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9jdXN0b20vdXNlLWluc3RhbmNlUm9vdC1hcy1l
dmVudC10YXJnZXQueGh0bWwJKHJldmlzaW9uIDUzNTUwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2N1
c3RvbS91c2UtaW5zdGFuY2VSb290LWFzLWV2ZW50LXRhcmdldC54aHRtbAkod29ya2luZyBjb3B5
KQpAQCAtOSwyMyArOSwzNiBAQAogICA8ZGVmcz4KICAgICAgIDxyZWN0IGlkPSJ0YXJnZXQiIGZp
bGw9InJlZCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIG9uY2xpY2s9ImV2ZW50SGFuZGxlcihl
dnQpIi8+CiAgIDwvZGVmcz4KLSAgPHVzZSBpZD0idGVzdCIgeGxpbms6aHJlZj0idXJsKCN0YXJn
ZXQpIi8+CisgIDx1c2UgaWQ9InRlc3QiIHhsaW5rOmhyZWY9IiN0YXJnZXQiLz4KIDwvc3ZnPgog
CiA8cCBpZD0iZGVzY3JpcHRpb24iLz4KIDxkaXYgaWQ9ImNvbnNvbGUiLz4KIAogPHNjcmlwdD4K
LXZhciBjdXJyZW50RXZlbnQ7Ci12YXIgbmV4dEV2ZW50VHlwZTsKLXZhciBldmVudE5vdGlmaWNh
dGlvbjsKKy8vIFNldHRpbmcgdXAgdGhlIHRlc3RjYXNlCitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKwor
dmFyIHVzZUVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOwordmFyIHJl
Y3RFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpOwogCisvLyBTdGFy
dCB0ZXN0IGltbWVkaWF0ZWx5LCB0byBzZWUgd2hldGVyIGluc3RhbmNlUm9vdCBpcyBhbHJlYWR5
IGF2YWlsYWJsZSwgYXMgZXhwZWN0ZWQuCitkZXNjcmlwdGlvbigiVGVzdCBTVkcgdXNlIGVsZW1l
bnQgc3BlY2lmaWMgZXZlbnQgaGFuZGxpbmcgdXNpbmcgU1ZHRWxlbWVudEluc3RhbmNlOiAiKTsK
K2RlYnVnKCIndXNlRWxlbWVudCcgaXMgdGhlIG9yaWdpbmFsIHVzZSBlbGVtZW50Iik7CitkZWJ1
ZygiJ3JlY3RFbGVtZW50JyBpcyB0aGUgb3JpZ2luYWwgZWxlbWVudCB3aGljaCBnZXRzIGNsb25l
ZCBieSB0aGUgdXNlIGVsZW1lbnQiKTsKK2V2ZW50VGVzdE9uZSgpOworCisvLyBIZWxwZXIgZnVu
Y3Rpb25zCiBmdW5jdGlvbiBldmVudEhhbmRsZXIoZXZ0KQogewotICAgIGlmIChldnQudHlwZSAh
PSBuZXh0RXZlbnRUeXBlKQorICAgIGlmIChldnQudHlwZSAhPSBuZXh0RXZlbnRUeXBlKSB7Cisg
ICAgICAgIGRlYnVnKCJSRUNFSVZFRCBVTkVYUEVDVEVEIEVWRU5UISBzaG91bGRCZT0nIiArIG5l
eHRFdmVudFR5cGUgKyAiJyB3YXM9JyIgKyBldnQudHlwZSArICInIik7CiAgICAgICAgIHJldHVy
bjsKKyAgICB9CiAKICAgICBjdXJyZW50RXZlbnQgPSBldnQ7CisgICAgbmV4dEV2ZW50VHlwZSA9
ICJub3QgeWV0IHNldCI7CiAgICAgZXZhbChldmVudE5vdGlmaWNhdGlvbik7CiB9CiAKQEAgLTM1
LDggKzQ4LDEyIEBAIGZ1bmN0aW9uIGZpcmVNb3VzZU92ZXJFdmVudChuZXdFdmVudE5vdGkKICAg
ICBuZXh0RXZlbnRUeXBlID0gIm1vdXNlb3ZlciI7CiAgICAgZXZlbnROb3RpZmljYXRpb24gPSBu
ZXdFdmVudE5vdGlmaWNhdGlvbjsKIAotICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpCi0gICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDUwLCA1MCk7CisgICAgaWYgKHdpbmRvdy5ldmVu
dFNlbmRlcikgeworICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMjAwLCAyMDApOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oNTAsIDUwKTsKKyAgICAgICAgfSwgMCk7CisgICAgfQogfQogCiBmdW5j
dGlvbiBmaXJlTW91c2VDbGlja0V2ZW50KG5ld0V2ZW50Tm90aWZpY2F0aW9uKQpAQCAtNDYsMTYg
KzYzLDE4IEBAIGZ1bmN0aW9uIGZpcmVNb3VzZUNsaWNrRXZlbnQobmV3RXZlbnROb3QKICAgICBl
dmVudE5vdGlmaWNhdGlvbiA9IG5ld0V2ZW50Tm90aWZpY2F0aW9uOwogCiAgICAgaWYgKHdpbmRv
dy5ldmVudFNlbmRlcikgewotICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyg1MCwgNTAp
OwotICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKLSAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VVcCgpOworICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oNTAsIDUwKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlRG93bigpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAg
ICB9LCAwKTsKICAgICB9CiB9CiAKLWZ1bmN0aW9uIGZpcmVTaW11bGF0ZWRNb3VzZUNsaWNrRXZl
bnQobmV3RXZlbnROb3RpZmljYXRpb24sIGV2ZW50VGFyZ2V0KQorZnVuY3Rpb24gZmlyZVNpbXVs
YXRlZE1vdXNlT3ZlckV2ZW50KG5ld0V2ZW50Tm90aWZpY2F0aW9uLCBldmVudFRhcmdldCkKIHsK
ICAgICBjdXJyZW50RXZlbnQgPSB1bmRlZmluZWQ7Ci0gICAgbmV4dEV2ZW50VHlwZSA9ICJjbGlj
ayI7CisgICAgbmV4dEV2ZW50VHlwZSA9ICJtb3VzZW92ZXIiOwogICAgIGV2ZW50Tm90aWZpY2F0
aW9uID0gbmV3RXZlbnROb3RpZmljYXRpb247CiAKICAgICB2YXIgZXZlbnQgPSBkb2N1bWVudC5j
cmVhdGVFdmVudCgiTW91c2VFdmVudHMiKTsKQEAgLTY0LDExICs4MywxNyBAQCBmdW5jdGlvbiBm
aXJlU2ltdWxhdGVkTW91c2VDbGlja0V2ZW50KG5lCiAgICAgZXZlbnRUYXJnZXQuZGlzcGF0Y2hF
dmVudChldmVudCk7CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworZnVuY3Rpb24gZmlyZVNpbXVs
YXRlZE1vdXNlQ2xpY2tFdmVudChuZXdFdmVudE5vdGlmaWNhdGlvbiwgZXZlbnRUYXJnZXQpCit7
CisgICAgY3VycmVudEV2ZW50ID0gdW5kZWZpbmVkOworICAgIG5leHRFdmVudFR5cGUgPSAiY2xp
Y2siOworICAgIGV2ZW50Tm90aWZpY2F0aW9uID0gbmV3RXZlbnROb3RpZmljYXRpb247CiAKLXZh
ciB1c2VFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKLXZhciByZWN0
RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKTsKKyAgICB2YXIgZXZl
bnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVudHMiKTsKKyAgICBldmVudC5pbml0
TW91c2VFdmVudChuZXh0RXZlbnRUeXBlLCB0cnVlLCB0cnVlLCBkb2N1bWVudC5kZWZhdWx0Vmll
dywgMSwgMCwgMCwgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDAsIG51bGwpOwor
CisgICAgZXZlbnRUYXJnZXQuZGlzcGF0Y2hFdmVudChldmVudCk7Cit9CiAKIGZ1bmN0aW9uIHZl
cmlmeUV2ZW50KGV2dFN0cmluZywgdGFyZ2V0U3RyaW5nLCBjdXJyZW50VGFyZ2V0U3RyaW5nKQog
ewpAQCAtMTEzLDMzICsxMzgsNDEgQEAgZnVuY3Rpb24gdmVyaWZ5Q2xpY2tFdmVudE9uUmVmZXJl
bmNlZCgpCiAgICAgc2hvdWxkQmVUcnVlKCJjdXJyZW50RXZlbnQudGFyZ2V0ID09IGN1cnJlbnRF
dmVudC5jdXJyZW50VGFyZ2V0Iik7CiB9CiAKLWRlc2NyaXB0aW9uKCJUZXN0IFNWRyB1c2UgZWxl
bWVudCBzcGVjaWZpYyBldmVudCBoYW5kbGluZyB1c2luZyBTVkdFbGVtZW50SW5zdGFuY2U6ICIp
OwotZGVidWcoIid1c2VFbGVtZW50JyBpcyB0aGUgb3JpZ2luYWwgdXNlIGVsZW1lbnQiKTsKLWRl
YnVnKCIncmVjdEVsZW1lbnQnIGlzIHRoZSBvcmlnaW5hbCBlbGVtZW50IHdoaWNoIGdldHMgY2xv
bmVkIGJ5IHRoZSB1c2UgZWxlbWVudCIpOworZnVuY3Rpb24gY2hlY2tFdmVudExpc3RlbmVyTm90
UmVhY2hhYmxlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIllPVSBTSE9VTEQgTk9U
IFNFRSBUSElTIFRFWFQuIE9USEVSV0hJU0UgUkVNT1ZJTkcgRVZFTlQgTElTVEVORVJTIEZBSUxF
RCEiKTsKKyAgICBkZWJ1ZygiIik7Cit9CiAKLWRlYnVnKCIiKTsKLWRlYnVnKCJUZXN0ICMxOiBW
ZXJpZnkgdGhhdCB0aGUgdXNlIGVsZW1lbnQgYW5kIHRoZSBjb250YWluZWQgU1ZHRWxlbWVudElu
c3RhbmNlIG9iamVjdHMgYXJlIHZhbGlkIik7Ci1kZWJ1ZygiIik7CisvLyBFdmVudCB0ZXN0IHNl
Y3Rpb25zCitmdW5jdGlvbiBldmVudFRlc3RPbmUoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBk
ZWJ1ZygiVGVzdCAjMTogVmVyaWZ5IHRoYXQgdGhlIHVzZSBlbGVtZW50IGFuZCB0aGUgY29udGFp
bmVkIFNWR0VsZW1lbnRJbnN0YW5jZSBvYmplY3RzIGFyZSB2YWxpZCIpOworICAgIGRlYnVnKCIi
KTsKIAotc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ1c2VFbGVtZW50LnRvU3RyaW5nKCkiLCAiW29i
amVjdCBTVkdVc2VFbGVtZW50XSIpOwotc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ1c2VFbGVtZW50
Lmluc3RhbmNlUm9vdC50b1N0cmluZygpIiwgIltvYmplY3QgU1ZHRWxlbWVudEluc3RhbmNlXSIp
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidXNlRWxlbWVudC50b1N0cmluZygpIiwgIltv
YmplY3QgU1ZHVXNlRWxlbWVudF0iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInVzZUVs
ZW1lbnQuaW5zdGFuY2VSb290LnRvU3RyaW5nKCkiLCAiW29iamVjdCBTVkdFbGVtZW50SW5zdGFu
Y2VdIik7CiAKLXNob3VsZEJlRXF1YWxUb1N0cmluZygidXNlRWxlbWVudC5pbnN0YW5jZVJvb3Qu
Y29ycmVzcG9uZGluZ0VsZW1lbnQudG9TdHJpbmcoKSIsICJbb2JqZWN0IFNWR1JlY3RFbGVtZW50
XSIpOwotc2hvdWxkQmVUcnVlKCJ1c2VFbGVtZW50Lmluc3RhbmNlUm9vdC5jb3JyZXNwb25kaW5n
RWxlbWVudCA9PSByZWN0RWxlbWVudCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidXNl
RWxlbWVudC5pbnN0YW5jZVJvb3QuY29ycmVzcG9uZGluZ0VsZW1lbnQudG9TdHJpbmcoKSIsICJb
b2JqZWN0IFNWR1JlY3RFbGVtZW50XSIpOworICAgIHNob3VsZEJlVHJ1ZSgidXNlRWxlbWVudC5p
bnN0YW5jZVJvb3QuY29ycmVzcG9uZGluZ0VsZW1lbnQgPT0gcmVjdEVsZW1lbnQiKTsKIAotc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJ1c2VFbGVtZW50Lmluc3RhbmNlUm9vdC5jb3JyZXNwb25kaW5n
VXNlRWxlbWVudC50b1N0cmluZygpIiwgIltvYmplY3QgU1ZHVXNlRWxlbWVudF0iKTsKLXNob3Vs
ZEJlVHJ1ZSgidXNlRWxlbWVudC5pbnN0YW5jZVJvb3QuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQg
PT0gdXNlRWxlbWVudCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidXNlRWxlbWVudC5p
bnN0YW5jZVJvb3QuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQudG9TdHJpbmcoKSIsICJbb2JqZWN0
IFNWR1VzZUVsZW1lbnRdIik7CisgICAgc2hvdWxkQmVUcnVlKCJ1c2VFbGVtZW50Lmluc3RhbmNl
Um9vdC5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCA9PSB1c2VFbGVtZW50Iik7CiAKLXNob3VsZEJl
RXF1YWxUb1N0cmluZygidHlwZW9mIHVzZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lciIsICJmdW5j
dGlvbiIpOwotc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2YgdXNlRWxlbWVudC5yZW1vdmVF
dmVudExpc3RlbmVyIiwgImZ1bmN0aW9uIik7Ci1zaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVv
ZiB1c2VFbGVtZW50LmRpc3BhdGNoRXZlbnQiLCAiZnVuY3Rpb24iKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoInR5cGVvZiB1c2VFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIiLCAiZnVuY3Rp
b24iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiB1c2VFbGVtZW50LnJlbW92
ZUV2ZW50TGlzdGVuZXIiLCAiZnVuY3Rpb24iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
InR5cGVvZiB1c2VFbGVtZW50LmRpc3BhdGNoRXZlbnQiLCAiZnVuY3Rpb24iKTsKIAotLy8gU3Bl
YzogQW4gZWxlbWVudCBhbmQgYWxsIGl0cyBjb3JyZXNwb25kaW5nIFNWR0VsZW1lbnRJbnN0YW5j
ZSBvYmplY3RzIHNoYXJlIGFuIGV2ZW50Ci0vLyBsaXN0ZW5lciBsaXN0LiBUaGUgY3VycmVudFRh
cmdldCBhdHRyaWJ1dGUgb2YgdGhlIGV2ZW50IGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSB0aHJv
dWdoCi0vLyB3aGljaCBvYmplY3QgYW4gZXZlbnQgbGlzdGVuZXIgd2FzIGludm9rZWQuCi11c2VF
bGVtZW50Lmluc3RhbmNlUm9vdC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLCBldmVudEhh
bmRsZXIsIGZhbHNlKTsKKyAgICAvLyBTcGVjOiBBbiBlbGVtZW50IGFuZCBhbGwgaXRzIGNvcnJl
c3BvbmRpbmcgU1ZHRWxlbWVudEluc3RhbmNlIG9iamVjdHMgc2hhcmUgYW4gZXZlbnQKKyAgICAv
LyBsaXN0ZW5lciBsaXN0LiBUaGUgY3VycmVudFRhcmdldCBhdHRyaWJ1dGUgb2YgdGhlIGV2ZW50
IGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSB0aHJvdWdoCisgICAgLy8gd2hpY2ggb2JqZWN0IGFu
IGV2ZW50IGxpc3RlbmVyIHdhcyBpbnZva2VkLgorICAgIHVzZUVsZW1lbnQuaW5zdGFuY2VSb290
LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3ZlciIsIGV2ZW50SGFuZGxlciwgZmFsc2UpOworICAg
IGZpcmVNb3VzZU92ZXJFdmVudCgiZXZlbnRUZXN0VHdvKCkiKTsKK30KIAotZnVuY3Rpb24gc3Rh
cnRFdmVudFRlc3RzKCkKK2Z1bmN0aW9uIGV2ZW50VGVzdFR3bygpCiB7CiAgICAgZGVidWcoIiIp
OwogICAgIGRlYnVnKCJUZXN0ICMyOiBWZXJpZnkgdGhhdCBldmVudHMgZGlzcGF0Y2hlZCB0byB0
aGUgU1ZHRWxlbWVudEluc3RhbmNlIG9iamVjdHMgaGF2ZSBjb3JyZWN0IHRhcmdldCBwcm9wZXJ0
eSB2YWx1ZXMiKTsKQEAgLTE1NSwxMDIgKzE4OCw3MCBAQCBmdW5jdGlvbiBzdGFydEV2ZW50VGVz
dHMoKQogICAgIC8vIHJlZ3VsYXIgdHJlZSB0byB0aGUgcm9vdCBlbGVtZW50IGluIGJ1YmJsaW5n
IHBoYXNlLgogICAgIHZlcmlmeU1vdXNlT3ZlckV2ZW50KCk7CiAKLSAgICAvLyBQcmVwYXJlIGZv
ciBuZXh0IHRlc3QKLSAgICB1c2VFbGVtZW50Lmluc3RhbmNlUm9vdC5yZW1vdmVFdmVudExpc3Rl
bmVyKCJtb3VzZW92ZXIiLCBldmVudEhhbmRsZXIsIGZhbHNlKTsKLSAgICB1c2VFbGVtZW50Lmlu
c3RhbmNlUm9vdC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLCBldmVudEhhbmRsZXIsIGZh
bHNlKTsKLQotICAgIC8vIENhdXNlcyBzdmdBdHRyaWJ1dGVDaGFuZ2VkKCkgbG9naWMgdG8gcmVj
bG9uZSB0aGUgc2hhZG93IHRyZWUKLSAgICAvLyBJZiAnVGVzdCAjMycgaXMgbm90IGV4ZWN1dGVk
LCB0aGVuIGl0IGRpZG4ndCBwcm9wZXJseSByZWNsb25lIHRoZSBldmVudCBsaXN0ZW5lcnMuCi0g
ICAgdXNlRWxlbWVudC5pbnN0YW5jZVJvb3QuY29ycmVzcG9uZGluZ0VsZW1lbnQuc2V0QXR0cmli
dXRlKCJ4IiwgdXNlRWxlbWVudC5pbnN0YW5jZVJvb3QuY29ycmVzcG9uZGluZ0VsZW1lbnQuZ2V0
QXR0cmlidXRlKCJ4IikpOwotCi0gICAgZmlyZU1vdXNlT3ZlckV2ZW50KCJldmVudFRlc3RPbmUo
KSIpOwotfQotCi1mdW5jdGlvbiBldmVudFRlc3RPbmUoKQotewotICAgIGRlYnVnKCIiKTsKLSAg
ICBkZWJ1ZygiVGVzdCAjMzogVmVyaWZ5IHRoYXQgZXZlbnQgbGlzdGVuZXJzIGF0dGFjaGVkIHRv
IHRoZSBzaGFkb3cgdHJlZSBlbGVtZW50cyBhcmUgY29waWVkIHdoZW4gdXNlIHJlY2xvbmVzIHRo
ZSBpbnRlcm5hbCBzaGFkb3cgdHJlZSIpOwotICAgIGRlYnVnKCIiKTsKLQotICAgIC8vIFNwZWM6
IElmIGV2ZW50IGF0dHJpYnV0ZXMgYXJlIGFzc2lnbmVkIHRvIHJlZmVyZW5jZWQgZWxlbWVudHMs
IHRoZW4gdGhlIGFjdHVhbCB0YXJnZXQgZm9yIHRoZSBldmVudCB3aWxsIGJlIHRoZQotICAgIC8v
IFNWR0VsZW1lbnRJbnN0YW5jZSBvYmplY3Qgd2l0aGluIHRoZSAiaW5zdGFuY2UgdHJlZSIgY29y
cmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gcmVmZXJlbmNlZCBlbGVtZW50LgotICAgIHZlcmlmeU1v
dXNlT3ZlckV2ZW50KCk7Ci0KLSAgICAvLyBQcmVwYXJlIGZvciBuZXh0IHRlc3QKICAgICB1c2VF
bGVtZW50Lmluc3RhbmNlUm9vdC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLCBldmVu
dEhhbmRsZXIsIGZhbHNlKTsKKyAgICBmaXJlU2ltdWxhdGVkTW91c2VPdmVyRXZlbnQoImNoZWNr
RXZlbnRMaXN0ZW5lck5vdFJlYWNoYWJsZSgpIiwgdXNlRWxlbWVudC5pbnN0YW5jZVJvb3QpOwor
ICAgIGZpcmVTaW11bGF0ZWRNb3VzZU92ZXJFdmVudCgiY2hlY2tFdmVudExpc3RlbmVyTm90UmVh
Y2hhYmxlKCkiLCByZWN0RWxlbWVudCk7CiAgICAgcmVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigibW91c2VvdmVyIiwgZXZlbnRIYW5kbGVyLCBmYWxzZSk7CiAKLSAgICBmaXJlTW91c2VPdmVy
RXZlbnQoImV2ZW50VGVzdFR3bygpIik7Ci19Ci0KLWZ1bmN0aW9uIGV2ZW50VGVzdFR3bygpCi17
Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJUZXN0ICM0OiBWZXJpZnkgdGhhdCBldmVudHMg
ZGlzcGF0Y2hlZCB0byB0aGUgcmVmZXJlbmNlZCBlbGVtZW50IGVuZCB1cCBvbiB0aGUgU1ZFbGVt
ZW50SW5zdGFuY2Ugb2JqZWN0cyIpOwotICAgIGRlYnVnKCIiKTsKLQotICAgIHZlcmlmeU1vdXNl
T3ZlckV2ZW50KCk7Ci0KLSAgICAvLyBQcmVwYXJlIGZvciBuZXh0IHRlc3QKLSAgICByZWN0RWxl
bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLCBldmVudEhhbmRsZXIsIGZhbHNl
KTsKLSAgICByZWN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLCBldmVudEhh
bmRsZXIsIGZhbHNlKTsKLQotICAgIC8vIENhdXNlcyBzdmdBdHRyaWJ1dGVDaGFuZ2VkKCkgbG9n
aWMgdG8gcmVjbG9uZSB0aGUgc2hhZG93IHRyZWUKLSAgICAvLyBJZiAnVGVzdCAjNScgaXMgbm90
IGV4ZWN1dGVkLCB0aGVuIGl0IGRpZG4ndCBwcm9wZXJseSByZWNsb25lIHRoZSBldmVudCBsaXN0
ZW5lcnMuCi0gICAgcmVjdEVsZW1lbnQuc2V0QXR0cmlidXRlKCJ4IiwgcmVjdEVsZW1lbnQuZ2V0
QXR0cmlidXRlKCJ4IikpOwotCiAgICAgZmlyZU1vdXNlT3ZlckV2ZW50KCJldmVudFRlc3RUaHJl
ZSgpIik7CiB9CiAKIGZ1bmN0aW9uIGV2ZW50VGVzdFRocmVlKCkKIHsKICAgICBkZWJ1ZygiIik7
Ci0gICAgZGVidWcoIlRlc3QgIzU6IFZlcmlmeSB0aGF0IGV2ZW50IGxpc3RlbmVycyBhdHRhY2hl
ZCB0byB0aGUgcmVmZXJlbmNlZCBlbGVtZW50cyBhcmUgY29waWVkIHdoZW4gdXNlIHJlY2xvbmVz
IHRoZSBpbnRlcm5hbCBzaGFkb3cgdHJlZSIpOworICAgIGRlYnVnKCJUZXN0ICMzOiBWZXJpZnkg
dGhhdCBldmVudHMgZGlzcGF0Y2hlZCBieSB0aGUgdXNlciBlbmQgdXAgb24gdGhlIFNWR0VsZW1l
bnRJbnN0YW5jZSBvYmplY3RzIik7CiAgICAgZGVidWcoIiIpOwogCiAgICAgdmVyaWZ5TW91c2VP
dmVyRXZlbnQoKTsKIAotICAgIC8vIFByZXBhcmUgZm9yIG5leHQgdGVzdAotICAgIHJlY3RFbGVt
ZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlb3ZlciIsIGV2ZW50SGFuZGxlciwgZmFsc2Up
OwotCisgICAgdXNlRWxlbWVudC5pbnN0YW5jZVJvb3QucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91
c2VvdmVyIiwgZXZlbnRIYW5kbGVyLCBmYWxzZSk7CisgICAgZmlyZVNpbXVsYXRlZE1vdXNlT3Zl
ckV2ZW50KCJjaGVja0V2ZW50TGlzdGVuZXJOb3RSZWFjaGFibGUoKSIsIHVzZUVsZW1lbnQuaW5z
dGFuY2VSb290KTsKKyAgICBmaXJlU2ltdWxhdGVkTW91c2VPdmVyRXZlbnQoImNoZWNrRXZlbnRM
aXN0ZW5lck5vdFJlYWNoYWJsZSgpIiwgcmVjdEVsZW1lbnQpOwogICAgIGZpcmVTaW11bGF0ZWRN
b3VzZUNsaWNrRXZlbnQoImV2ZW50VGVzdEZvdXIoKSIsIHJlY3RFbGVtZW50KTsKIH0KIAogZnVu
Y3Rpb24gZXZlbnRUZXN0Rm91cigpCiB7CiAgICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJUZXN0
ICM2OiBWZXJpZnkgdGhhdCBhIGNsaWNrIGV2ZW50IGdvdCBkaXNwYXRjaGVkIHRvIHRoZSBvcmln
aW5hbCB0cmVlIGFzIGRlZmluZWQgaW4gdGhlIG1hcmt1cCwgd2hlbiBzZW50IHRvIHRoZSAncmVj
dEVsZW1lbnQnIik7IAorICAgIGRlYnVnKCJUZXN0ICM0OiBWZXJpZnkgdGhhdCBhIGNsaWNrIGV2
ZW50IGdvdCBkaXNwYXRjaGVkIHRvIHRoZSBvcmlnaW5hbCB0cmVlIGFzIGRlZmluZWQgaW4gdGhl
IG1hcmt1cCwgd2hlbiBzZW50IHRvIHRoZSAncmVjdEVsZW1lbnQnIik7IAogICAgIGRlYnVnKCIi
KTsKIAogICAgIHZlcmlmeUNsaWNrRXZlbnRPblJlZmVyZW5jZWQoKTsKIAotICAgIC8vIFByZXBh
cmUgZm9yIG5leHQgdGVzdAogICAgIGZpcmVTaW11bGF0ZWRNb3VzZUNsaWNrRXZlbnQoImV2ZW50
VGVzdEZpdmUoKSIsIHVzZUVsZW1lbnQuaW5zdGFuY2VSb290KTsKIH0KIAogZnVuY3Rpb24gZXZl
bnRUZXN0Rml2ZSgpCiB7CiAgICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJUZXN0ICM3OiBWZXJp
ZnkgdGhhdCBhIGNsaWNrIGV2ZW50IGdvdCBkaXNwYXRjaGVkIHRvIHRoZSBpbnN0YW5jZSB0cmVl
IHdoZW4gc2VudCB0byB0aGUgJ3VzZUVsZW1lbnQuaW5zdGFuY2VSb290JyB3aXRoIGFuIGV2ZW50
IGxpc3RlbmVyIGF0dGFjaGVkIHRvICdyZWN0RWxlbWVudCciKTsgCisgICAgZGVidWcoIlRlc3Qg
IzU6IFZlcmlmeSB0aGF0IGEgY2xpY2sgZXZlbnQgZ290IGRpc3BhdGNoZWQgdG8gdGhlIGluc3Rh
bmNlIHRyZWUgd2hlbiBzZW50IHRvIHRoZSAndXNlRWxlbWVudC5pbnN0YW5jZVJvb3QnIHdpdGgg
YW4gZXZlbnQgbGlzdGVuZXIgYXR0YWNoZWQgdG8gJ3JlY3RFbGVtZW50JyIpOyAKICAgICBkZWJ1
ZygiIik7CiAKICAgICB2ZXJpZnlDbGlja0V2ZW50KCk7CiAKLSAgICAvLyBQcmVwYXJlIGZvciBu
ZXh0IHRlc3QKKyAgICAvLyBUaGlzIHRlc3RzIGEgd2Via2l0IHNwZWNpZmljIHF1aXJrOiByZW1v
dmVBdHRyaWJ1dGUoKSBvbiB0aGUgdGFyZ2V0IGVsZW1lbnQsIGNhdXNlcyB1cyB0byByZWNsb25l
IHRoZSBzaGFkb3cgdHJlZS4KKyAgICAvLyBBbGwgZXZlbnQgbGlzdGVuZXIgbXV0YXRpb25zIGFy
ZSBzeW5jaHJvbml6ZWQgd2l0aCB0aGUgc2hhZG93IHRyZWUgYW5kIGRvIG5vdCBjYXVzZSByZWNs
b25lcy4gU28gaWYgd2UgYWRkIHRoZQorICAgIC8vIGNsaWNrIGV2ZW50IGxpc3RlbmVyIHRvIHRo
ZSBjdXJyZW50IGluc3RhbmNlUm9vdCwgcmVtb3ZlIHRoZSBleGlzdGluZyBjbGljayBsaXN0ZW5l
ciBmcm9tIG1hcmt1cCBhbmQgdGhlbiBmaXJlCisgICAgLy8gYSBjbGljayBldmVudCwgd2UncmUg
c3VyZSB0aGF0IHRoZSBzaGFkb3cgdHJlZSBpcyByZWNsb25lZCBiZWZvcmUgdGhlIGV2ZW50VGVz
dFNpeCgpIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkLgorICAgIC8vIElmIGV2ZW50VGVzdFNpeCgpIGlz
IHJlYWNoZWQsIHdlJ3ZlIHByb3Blcmx5IHByZXNlcnZlZCB0aGUgZHluYW1pY2FsbHkgY3JlYXRl
ZCBjbGljayBldmVudCBsaXN0ZW5lciBhZnRlciByZWNsb25pbmcuCisgICAgdXNlRWxlbWVudC5p
bnN0YW5jZVJvb3QuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBldmVudEhhbmRsZXIsIGZhbHNl
KTsKKyAgICByZWN0RWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoIm9uY2xpY2siKTsKKwogICAgIGZp
cmVNb3VzZUNsaWNrRXZlbnQoImV2ZW50VGVzdFNpeCgpIik7CiB9CiAKIGZ1bmN0aW9uIGV2ZW50
VGVzdFNpeCgpCiB7CiAgICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJUZXN0ICM4OiBWZXJpZnkg
dGhhdCB0aGUgb3JpZ2luYWwgY2xpY2sgZXZlbnQgbGlzdGVuZXIgZGVmaW5lZCBpbiBtYXJrdXAg
aXMgc3RpbGwgd29ya2luZyBwcm9wZXJseSIpOworICAgIGRlYnVnKCJUZXN0ICM2OiBWZXJpZnkg
dGhhdCB0aGUgb3JpZ2luYWwgY2xpY2sgZXZlbnQgbGlzdGVuZXIgZ290IHJlbW92ZWQgYW5kIGEg
bmV3IG9uZSBhdHRhY2hlZCBpcyBhdHRhY2hlZCB0byB0aGUgdXNlIHJvb3QgU1ZHRWxlbWVudElu
c3RhbmNlIik7CiAgICAgZGVidWcoIiIpOwogCiAgICAgdmVyaWZ5Q2xpY2tFdmVudCgpOwogCi0g
ICAgLy8gUHJlcGFyZSBmb3IgbmV4dCB0ZXN0Ci0gICAgcmVjdEVsZW1lbnQucmVtb3ZlRXZlbnRM
aXN0ZW5lcigiY2xpY2siLCBldmVudEhhbmRsZXIsIGZhbHNlKTsKLSAgICB1c2VFbGVtZW50Lmlu
c3RhbmNlUm9vdC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGV2ZW50SGFuZGxlciwgZmFsc2Up
OworICAgIHVzZUVsZW1lbnQuaW5zdGFuY2VSb290LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNr
IiwgZXZlbnRIYW5kbGVyLCBmYWxzZSk7CisgICAgZmlyZVNpbXVsYXRlZE1vdXNlQ2xpY2tFdmVu
dCgiY2hlY2tFdmVudExpc3RlbmVyTm90UmVhY2hhYmxlKCkiLCB1c2VFbGVtZW50Lmluc3RhbmNl
Um9vdCk7CisgICAgZmlyZVNpbXVsYXRlZE1vdXNlQ2xpY2tFdmVudCgiY2hlY2tFdmVudExpc3Rl
bmVyTm90UmVhY2hhYmxlKCkiLCByZWN0RWxlbWVudCk7CisgICAgcmVjdEVsZW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigiY2xpY2siLCBldmVudEhhbmRsZXIsIGZhbHNlKTsKIAogICAgIGZpcmVNb3Vz
ZUNsaWNrRXZlbnQoImV2ZW50VGVzdFNldmVuKCkiKTsKIH0KQEAgLTI1OCwzMCArMjU5LDMyIEBA
IGZ1bmN0aW9uIGV2ZW50VGVzdFNpeCgpCiBmdW5jdGlvbiBldmVudFRlc3RTZXZlbigpCiB7CiAg
ICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJUZXN0ICM5OiBWZXJpZnkgdGhhdCB0aGUgb3JpZ2lu
YWwgY2xpY2sgZXZlbnQgbGlzdGVuZXIgZ290IHJlbW92ZWQgYW5kIGEgbmV3IG9uZSBhdHRhY2hl
ZCB0byB0aGUgdXNlIHJvb3QgU1ZHRWxlbWVudEluc3RhbmNlIik7CisgICAgZGVidWcoIlRlc3Qg
Izc6IFZlcmlmeSB0aGF0IHRoZSByZWNyZWF0aW5nIHRoZSBvcmlnaW5hbCBjbGljayBldmVudCBs
aXN0ZW5lciBkeW5hbWljYWxseSB3b3JrZWQgYW5kIHRoZSBldmVudCBpcyBub3cgZGlzcGF0Y2hl
ZCB0byB0aGUgcmVndWxhciBET00iKTsKICAgICBkZWJ1ZygiIik7CiAKLSAgICB2ZXJpZnlDbGlj
a0V2ZW50KCk7CisgICAgdmVyaWZ5Q2xpY2tFdmVudE9uUmVmZXJlbmNlZCgpOwogCiAgICAgLy8g
UHJlcGFyZSBmb3IgbmV4dCB0ZXN0cwogICAgIGZpcmVTaW11bGF0ZWRNb3VzZUNsaWNrRXZlbnQo
ImV2ZW50VGVzdEVpZ2h0KCkiLCB1c2VFbGVtZW50Lmluc3RhbmNlUm9vdCk7CiB9CiAKLWZ1bmN0
aW9uIGV2ZW50VGVzdEVpZ2h0KCkKK2Z1bmN0aW9uIGV2ZW50VGVzdFNldmVuKCkKIHsKICAgICBk
ZWJ1ZygiIik7Ci0gICAgZGVidWcoIlRlc3QgIzEwOiBWZXJpZnkgdGhhdCB0aGUgc2ltdWxhdGVk
IGNsaWNrIGV2ZW50IGdvdCBkaXNwYXRjaGVkIHRvIHRoZSByaWdodCB0YXJnZXQiKTsKKyAgICBk
ZWJ1ZygiVGVzdCAjODogVmVyaWZ5IHRoYXQgdGhlIHNpbXVsYXRlZCBjbGljayBldmVudCBnb3Qg
ZGlzcGF0Y2hlZCB0byB0aGUgcmlnaHQgdGFyZ2V0Iik7CiAgICAgZGVidWcoIiIpOwogCiAgICAg
dmVyaWZ5Q2xpY2tFdmVudCgpOwogCiAgICAgLy8gQ2xlYW51cAogICAgIHVzZUVsZW1lbnQuaW5z
dGFuY2VSb290LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZXZlbnRIYW5kbGVyLCBmYWxz
ZSk7CisgICAgZmlyZVNpbXVsYXRlZE1vdXNlQ2xpY2tFdmVudCgiY2hlY2tFdmVudExpc3RlbmVy
Tm90UmVhY2hhYmxlKCkiLCB1c2VFbGVtZW50Lmluc3RhbmNlUm9vdCk7CisgICAgZmlyZVNpbXVs
YXRlZE1vdXNlQ2xpY2tFdmVudCgiY2hlY2tFdmVudExpc3RlbmVyTm90UmVhY2hhYmxlKCkiLCBy
ZWN0RWxlbWVudCk7CiAKLSAgICBzdG9wRXZlbnRUZXN0cygpOworICAgIGZpbmlzaFRlc3RzKCk7
CiB9CiAKLWZ1bmN0aW9uIHN0b3BFdmVudFRlc3RzKCkKK2Z1bmN0aW9uIGZpbmlzaFRlc3RzKCkK
IHsKICAgICBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwogCkBAIC0yOTIsOCArMjk1LDYgQEAg
ZnVuY3Rpb24gc3RvcEV2ZW50VGVzdHMoKQogICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCiAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKIH0KLQot
ZmlyZU1vdXNlT3ZlckV2ZW50KCJzdGFydEV2ZW50VGVzdHMoKSIpOwogPC9zY3JpcHQ+CiAKIDwv
Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9jdXN0b20vdXNlLWluc3RhbmNlUm9vdC1ldmVu
dC1saXN0ZW5lci1saXZlbmVzcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvc3ZnL2N1c3RvbS91c2UtaW5zdGFuY2VSb290LWV2ZW50LWxpc3RlbmVyLWxpdmVuZXNzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9jdXN0b20vdXNlLWlu
c3RhbmNlUm9vdC1ldmVudC1saXN0ZW5lci1saXZlbmVzcy1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEgQEAKK1Rlc3QgcGFzc2VkCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvY3Vz
dG9tL3VzZS1pbnN0YW5jZVJvb3QtZXZlbnQtbGlzdGVuZXItbGl2ZW5lc3MueGh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS91c2UtaW5zdGFuY2VSb290LWV2ZW50LWxp
c3RlbmVyLWxpdmVuZXNzLnhodG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2N1
c3RvbS91c2UtaW5zdGFuY2VSb290LWV2ZW50LWxpc3RlbmVyLWxpdmVuZXNzLnhodG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDUzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJV
VEYtOCI/PgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhl
YWQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InN0YXJ0VGVzdCgpIj4KKworPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIiB3aWR0aD0iMTAwcHgiIGhlaWdodD0iMTAwcHgiPgorICA8ZGVmcz4KKyAg
ICAgIDxyZWN0IGlkPSJ0YXJnZXQiIGZpbGw9ImdyZWVuIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEw
MCIvPgorICA8L2RlZnM+CisgIDx1c2UgaWQ9InRlc3QiIHhsaW5rOmhyZWY9IiN0YXJnZXQiLz4K
Kzwvc3ZnPgorCis8ZGl2IGlkPSJjb25zb2xlIj5UZXN0IGZhaWxlZDwvZGl2PgorCis8c2NyaXB0
PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7Cit9CisKK2Z1bmN0aW9uIGV2ZW50SGFuZGxlcigpCit7CisgICAgdmFyIGRpdkVsZW1l
bnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAgIGRpdkVsZW1lbnQu
dGV4dENvbnRlbnQgPSAiVGVzdCBwYXNzZWQiOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
fQorCitmdW5jdGlvbiBmaXJlU2ltdWxhdGVkTW91c2VDbGlja0V2ZW50KGV2ZW50VGFyZ2V0KQor
eworICAgIHZhciBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50cyIpOwor
ICAgIGV2ZW50LmluaXRNb3VzZUV2ZW50KCJjbGljayIsIHRydWUsIHRydWUsIGRvY3VtZW50LmRl
ZmF1bHRWaWV3LCAxLCAwLCAwLCAwLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCwg
bnVsbCk7CisgICAgZXZlbnRUYXJnZXQuZGlzcGF0Y2hFdmVudChldmVudCk7Cit9CisKK2Z1bmN0
aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICB2YXIgdXNlRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ0ZXN0Iik7CisKKyAgICAvLyBOby1vcCwgYXMgbm8gbGlzdGVuZXIgaXMgbm90IHll
dCByZWdpc3RlcmVkCisgICAgZmlyZVNpbXVsYXRlZE1vdXNlQ2xpY2tFdmVudCh1c2VFbGVtZW50
Lmluc3RhbmNlUm9vdCk7CisKKyAgICAvLyBBZGQgbGlzdGVuZXIKKyAgICB1c2VFbGVtZW50Lmlu
c3RhbmNlUm9vdC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGV2ZW50SGFuZGxlciwgZmFsc2Up
OworCisgICAgLy8gU2hvdWxkIGZpcmUgaW1tZWRpYXRlbHkgYW5kIGZpbmlzaCB0aGUgdGVzdAor
ICAgIGZpcmVTaW11bGF0ZWRNb3VzZUNsaWNrRXZlbnQodXNlRWxlbWVudC5pbnN0YW5jZVJvb3Qp
OworfQorPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3N2
Zy9jdXN0b20vcmVzb3VyY2VzL3VzZS1pbnN0YW5jZVJvb3QtZXZlbnQtYnViYmxpbmcuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9yZXNvdXJjZXMvdXNlLWluc3RhbmNl
Um9vdC1ldmVudC1idWJibGluZy5qcwkocmV2aXNpb24gNTM1NTApCisrKyBMYXlvdXRUZXN0cy9z
dmcvY3VzdG9tL3Jlc291cmNlcy91c2UtaW5zdGFuY2VSb290LWV2ZW50LWJ1YmJsaW5nLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSwxMiArMzUsOCBAQCBmdW5jdGlvbiBldmVudEhhbmRsZXIoZXZ0
LCBsYWJlbCkgewogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibXNnIiwgZXhwZWN0ZWRbZXZl
bnRDb3VudGVyXSk7CiAgICAgKytldmVudENvdW50ZXI7CiAKLSAgICBpZiAobGFiZWwgPT0gY291
bnRlcikgewotICAgICAgICBpZiAobGFiZWwgPT0gdGVzdHMpCi0gICAgICAgICAgICBzZXRUaW1l
b3V0KCJmaW5pc2hUZXN0KCkiLCAxMDApOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzZXRU
aW1lb3V0KCJuZXh0VGVzdCgpIiwgMTAwKTsKLSAgICB9CisgICAgaWYgKGxhYmVsID09IGNvdW50
ZXIpCisgICAgICAgIHNldFRpbWVvdXQobGFiZWwgPT0gdGVzdHMgPyBmaW5pc2hUZXN0IDogbmV4
dFRlc3QsIDApOwogfQogCiBmdW5jdGlvbiBmaW5pc2hUZXN0KCkKSW5kZXg6IExheW91dFRlc3Rz
L3N2Zy9jdXN0b20vcmVzb3VyY2VzL3VzZS1pbnN0YW5jZVJvb3QtZXZlbnQtbGlzdGVuZXJzLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9jdXN0b20vcmVzb3VyY2VzL3VzZS1pbnN0
YW5jZVJvb3QtZXZlbnQtbGlzdGVuZXJzLmpzCShyZXZpc2lvbiA1MzU1MCkKKysrIExheW91dFRl
c3RzL3N2Zy9jdXN0b20vcmVzb3VyY2VzL3VzZS1pbnN0YW5jZVJvb3QtZXZlbnQtbGlzdGVuZXJz
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw3ICsxOCw3IEBAIGZ1bmN0aW9uIGV2ZW50SGFuZGxl
cihldnQpCiAgICAgICAgICAgICBkZWJ1ZygiVGVzdCAiICsgY291bnRlciArICIgLyAiICsgdGVz
dHMgKyAiIEZBSUxFRCAoZXhwZWN0ZWQ6ICciICsgZXhwZWN0ZWQgKyAiJyBhY3R1YWw6ICciICsg
ZXZ0LnR5cGUgKyAiJykiKTsKICAgICB9CiAKLSAgICBzZXRUaW1lb3V0KGNvdW50ZXIgPCB0ZXN0
cyA/IGRyaXZlVGVzdHMgOiBmaW5pc2hUZXN0LCAxMDApOworICAgIHNldFRpbWVvdXQoY291bnRl
ciA8IHRlc3RzID8gZHJpdmVUZXN0cyA6IGZpbmlzaFRlc3QsIDApOwogfQogCiBmdW5jdGlvbiBm
aW5pc2hUZXN0KCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>