<?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>110521</bug_id>
          
          <creation_ts>2013-02-21 15:24:20 -0800</creation_ts>
          <short_desc>Move setAutofilled from TestRunner to WebCore</short_desc>
          <delta_ts>2017-12-14 12:33:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>110713</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Jason Anderssen">janderssen</reporter>
          <assigned_to name="Jason Anderssen">janderssen</assigned_to>
          <cc>benjamin</cc>
    
    <cc>dbates</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jesus</cc>
    
    <cc>jochen</cc>
    
    <cc>mifenton</cc>
    
    <cc>rakuco</cc>
    
    <cc>rego+ews</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>838910</commentid>
    <comment_count>0</comment_count>
    <who name="Jason Anderssen">janderssen</who>
    <bug_when>2013-02-21 15:24:20 -0800</bug_when>
    <thetext>Move setAutofilled from TestRunner to WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839200</commentid>
    <comment_count>1</comment_count>
      <attachid>189674</attachid>
    <who name="Jason Anderssen">janderssen</who>
    <bug_when>2013-02-21 21:11:04 -0800</bug_when>
    <thetext>Created attachment 189674
To move the setAutofilled from TestRunner to WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839273</commentid>
    <comment_count>2</comment_count>
      <attachid>189674</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-21 23:11:04 -0800</bug_when>
    <thetext>Comment on attachment 189674
To move the setAutofilled from TestRunner to WebCore

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

Congrats on making your first WebKit patch.

It looks like many files that should be left unmodified have been modified. I suspect there is something up with the line endings.
You should revert those files and find what is modifying them on your system.

&gt; Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherResource.h:-2
&gt; -//{{NO_DEPENDENCIES}}
&gt; -// Microsoft Visual C++ generated include file.

This file should not be modified.

&gt; Tools/WinLauncher/WinLauncherLauncherResource.h:-2
&gt; -//{{NO_DEPENDENCIES}}
&gt; -// Microsoft Visual C++ generated include file.

Ditto.

&gt; Source/WebCore/testing/Internals.cpp:819
&gt; +    if (!element-&gt;hasTagName(inputTag)) {
&gt; +        ec = INVALID_ACCESS_ERR;
&gt; +        return;
&gt; +    }

You don&apos;t need this part of the check. Node::toInputElement is polymorphic and will return null for anything that is not an input element.

&gt; Source/WebCore/testing/Internals.cpp:825
&gt; +    inputElement-&gt;setAutofilled( enabled );

To follow the WebKit style, you should not have spaces around the argument.

&gt; Source/WebCore/testing/Internals.h:212
&gt; +    void setAutofilled(Element* element, bool enabled, ExceptionCode&amp;);
&gt; +

I would put this with the other functions acting on &lt;input&gt;: setSuggestedValue, setEditingValue, etc.

The first parameter would probably better be named &quot;inputElement&quot;.

&gt; Source/WebCore/testing/Internals.idl:255
&gt; +    
&gt; +    void setAutofilled(in Element scope, in boolean enabled) raises(DOMException);

Ditto.
&quot;scope&quot; is probably worse.

Keeping the style consistent, you need a space between raises and the exception type.

&gt; Source/WebCore/ChangeLog:6
&gt; +        Move setAutofilled from TestRunner to WebCore
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=110521
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).

In this changelog, you should put a word of description about the reason of the change. See other patches to get a feeling of what kind of information is important.

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests (OOPS!).

This line should always be removed.

Usually, you replace it by the list of tests covering the change. In this case, there is no additional test, we are working on test, so you can just delete it.

&gt; Source/ThirdParty/gtest/codegear/gtest_all.cc:-2
&gt; -// Copyright 2009, Google Inc.
&gt; -// All rights reserved.

This file should not be modified.

&gt; Source/ThirdParty/gtest/codegear/gtest_link.cc:-2
&gt; -// Copyright 2009, Google Inc.
&gt; -// All rights reserved.

Ditto.

&gt; Source/ThirdParty/ChangeLog:2
&gt; +2013-02-21  Jason Anderssen  &lt;janderssen@exactal.com&gt;
&gt; +

You can clear this ChangeLog once you revert the file to the original.

&gt; LayoutTests/storage/indexeddb/set_version_blocked.html:-2
&gt; -&lt;html&gt;
&gt; -&lt;head&gt;

This should not be modified.

&gt; LayoutTests/storage/indexeddb/transaction-read-only.html:-2
&gt; -&lt;html&gt;
&gt; -&lt;head&gt;

This should not be modified.

&gt; LayoutTests/css2.1/20110323/support/eof-green.css:-2
&gt; -/* eof-green.css */
&gt; -div

This should not be modified.

&gt; LayoutTests/css2.1/20110323/support/at-import-001.css:-2
&gt; -div
&gt; -{

This should not be modified.

&gt; LayoutTests/css2.1/20110323/support/at-import-002.css:-2
&gt; -div
&gt; -{

This should not be modified.

&gt; LayoutTests/css2.1/20110323/support/at-import-004.css:-2
&gt; -div
&gt; -{

This should not be modified.

&gt; LayoutTests/css2.1/20110323/support/at-import-005.css:-2
&gt; -div
&gt; -{

This should not be modified.

&gt; LayoutTests/css2.1/20110323/support/at-import-006.css:-2
&gt; -div
&gt; -{

This should not be modified.

&gt; LayoutTests/css2.1/20110323/support/at-import-007.css:-2
&gt; -div
&gt; -{

This should not be modified.

&gt; LayoutTests/inspector/storage-panel-dom-storage-update.html:-2
&gt; -&lt;html&gt;
&gt; -&lt;head&gt;

This should not be modified.

&gt; LayoutTests/compositing/repaint/shrink-layer.html:-2
&gt; -&lt;html&gt;
&gt; -&lt;head&gt;

This should not be modified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840193</commentid>
    <comment_count>3</comment_count>
      <attachid>189878</attachid>
    <who name="Jason Anderssen">janderssen</who>
    <bug_when>2013-02-22 17:55:21 -0800</bug_when>
    <thetext>Created attachment 189878
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840231</commentid>
    <comment_count>4</comment_count>
      <attachid>189878</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-22 18:33:36 -0800</bug_when>
    <thetext>Comment on attachment 189878
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests (OOPS!).

You should remove this line from the ChangeLog.

&gt; Source/WebCore/testing/Internals.cpp:825
&gt; +    if (!element-&gt;hasTagName(inputTag)) {
&gt; +        ec = INVALID_ACCESS_ERR;
&gt; +        return;
&gt; +    }

You should remove this.

&gt; Source/WebCore/testing/Internals.idl:257
&gt; +    void setAutofilled(in Element scope, in boolean enabled) raises(DOMException);

scope -&gt; inputElement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840236</commentid>
    <comment_count>5</comment_count>
      <attachid>189878</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-22 18:38:24 -0800</bug_when>
    <thetext>Comment on attachment 189878
Patch

r- based on the comments + the symbol for HTMLInputElement::setAutofilled is missing on GTK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840240</commentid>
    <comment_count>6</comment_count>
      <attachid>189893</attachid>
    <who name="Jason Anderssen">janderssen</who>
    <bug_when>2013-02-22 18:45:24 -0800</bug_when>
    <thetext>Created attachment 189893
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840252</commentid>
    <comment_count>7</comment_count>
      <attachid>189895</attachid>
    <who name="Jason Anderssen">janderssen</who>
    <bug_when>2013-02-22 19:05:38 -0800</bug_when>
    <thetext>Created attachment 189895
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840308</commentid>
    <comment_count>8</comment_count>
      <attachid>189908</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-22 22:38:17 -0800</bug_when>
    <thetext>Created attachment 189908
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840314</commentid>
    <comment_count>9</comment_count>
      <attachid>189908</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-23 00:16:26 -0800</bug_when>
    <thetext>Comment on attachment 189908
Patch for landing

Clearing flags on attachment: 189908

Committed r143837: &lt;http://trac.webkit.org/changeset/143837&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840315</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-23 00:16:31 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840631</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-24 11:29:14 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 110713</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381750</commentid>
    <comment_count>12</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-12-14 12:30:29 -0800</bug_when>
    <thetext>*** Bug 88239 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381755</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-14 12:33:56 -0800</bug_when>
    <thetext>&lt;rdar://problem/36055133&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189674</attachid>
            <date>2013-02-21 21:11:04 -0800</date>
            <delta_ts>2013-02-22 17:55:15 -0800</delta_ts>
            <desc>To move the setAutofilled from TestRunner to WebCore</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>53862</size>
            <attacher name="Jason Anderssen">janderssen</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLnZjeHByb2ovV2luTGF1bmNoZXJS
ZXNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLnZj
eHByb2ovV2luTGF1bmNoZXJSZXNvdXJjZS5oCShyZXZpc2lvbiAxNDI4NzYpCisrKyBUb29scy9X
aW5MYXVuY2hlci9XaW5MYXVuY2hlci52Y3hwcm9qL1dpbkxhdW5jaGVyUmVzb3VyY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMSwyMCArMSwyMCBAQAotLy97e05PX0RFUEVOREVOQ0lFU319DQotLy8g
TWljcm9zb2Z0IFZpc3VhbCBDKysgZ2VuZXJhdGVkIGluY2x1ZGUgZmlsZS4NCi0vLyBVc2VkIGJ5
IFdpbkxhdW5jaGVyTGF1bmNoZXIucmMNCi0vLw0KLSNkZWZpbmUgSUREX1dJTkxBVU5DSEVSX0RJ
QUxPRyAgICAgICAgICAxMDINCi0jZGVmaW5lIElESV9XSU5MQVVOQ0hFUiAgICAgICAgICAgICAg
ICAgMTA3DQotI2RlZmluZSBJRFJfTUFJTkZSQU1FICAgICAgICAgICAgICAgICAgIDEyOA0KLSNk
ZWZpbmUgSURDX1NUQVRJQyAgICAgICAgICAgICAgICAgICAgICAtMQ0KLQ0KLS8vIE5leHQgZGVm
YXVsdCB2YWx1ZXMgZm9yIG5ldyBvYmplY3RzDQotLy8gDQotI2lmZGVmIEFQU1RVRElPX0lOVk9L
RUQNCi0jaWZuZGVmIEFQU1RVRElPX1JFQURPTkxZX1NZTUJPTFMNCi0jZGVmaW5lIF9BUFNfTk9f
TUZDICAgICAgICAgICAgICAgICAgICAgMQ0KLSNkZWZpbmUgX0FQU19ORVhUX1JFU09VUkNFX1ZB
TFVFICAgICAgICAxMjkNCi0jZGVmaW5lIF9BUFNfTkVYVF9DT01NQU5EX1ZBTFVFICAgICAgICAg
MzI3NzENCi0jZGVmaW5lIF9BUFNfTkVYVF9DT05UUk9MX1ZBTFVFICAgICAgICAgMTAwMA0KLSNk
ZWZpbmUgX0FQU19ORVhUX1NZTUVEX1ZBTFVFICAgICAgICAgICAxMTANCi0jZW5kaWYNCi0jZW5k
aWYNCisvL3t7Tk9fREVQRU5ERU5DSUVTfX0KKy8vIE1pY3Jvc29mdCBWaXN1YWwgQysrIGdlbmVy
YXRlZCBpbmNsdWRlIGZpbGUuCisvLyBVc2VkIGJ5IFdpbkxhdW5jaGVyTGF1bmNoZXIucmMKKy8v
CisjZGVmaW5lIElERF9XSU5MQVVOQ0hFUl9ESUFMT0cgICAgICAgICAgMTAyCisjZGVmaW5lIElE
SV9XSU5MQVVOQ0hFUiAgICAgICAgICAgICAgICAgMTA3CisjZGVmaW5lIElEUl9NQUlORlJBTUUg
ICAgICAgICAgICAgICAgICAgMTI4CisjZGVmaW5lIElEQ19TVEFUSUMgICAgICAgICAgICAgICAg
ICAgICAgLTEKKworLy8gTmV4dCBkZWZhdWx0IHZhbHVlcyBmb3IgbmV3IG9iamVjdHMKKy8vIAor
I2lmZGVmIEFQU1RVRElPX0lOVk9LRUQKKyNpZm5kZWYgQVBTVFVESU9fUkVBRE9OTFlfU1lNQk9M
UworI2RlZmluZSBfQVBTX05PX01GQyAgICAgICAgICAgICAgICAgICAgIDEKKyNkZWZpbmUgX0FQ
U19ORVhUX1JFU09VUkNFX1ZBTFVFICAgICAgICAxMjkKKyNkZWZpbmUgX0FQU19ORVhUX0NPTU1B
TkRfVkFMVUUgICAgICAgICAzMjc3MQorI2RlZmluZSBfQVBTX05FWFRfQ09OVFJPTF9WQUxVRSAg
ICAgICAgIDEwMDAKKyNkZWZpbmUgX0FQU19ORVhUX1NZTUVEX1ZBTFVFICAgICAgICAgICAxMTAK
KyNlbmRpZgorI2VuZGlmCkluZGV4OiBUb29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlckxhdW5j
aGVyUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hl
ckxhdW5jaGVyUmVzb3VyY2UuaAkocmV2aXNpb24gMTQyODc2KQorKysgVG9vbHMvV2luTGF1bmNo
ZXIvV2luTGF1bmNoZXJMYXVuY2hlclJlc291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMjAg
KzEsMjAgQEAKLS8ve3tOT19ERVBFTkRFTkNJRVN9fQ0KLS8vIE1pY3Jvc29mdCBWaXN1YWwgQysr
IGdlbmVyYXRlZCBpbmNsdWRlIGZpbGUuDQotLy8gVXNlZCBieSBXaW5MYXVuY2hlckxhdW5jaGVy
LnJjDQotLy8NCi0jZGVmaW5lIElERF9XSU5MQVVOQ0hFUl9ESUFMT0cgICAgICAgICAgMTAyDQot
I2RlZmluZSBJRElfV0lOTEFVTkNIRVIgICAgICAgICAgICAgICAgIDEwNw0KLSNkZWZpbmUgSURS
X01BSU5GUkFNRSAgICAgICAgICAgICAgICAgICAxMjgNCi0jZGVmaW5lIElEQ19TVEFUSUMgICAg
ICAgICAgICAgICAgICAgICAgLTENCi0NCi0vLyBOZXh0IGRlZmF1bHQgdmFsdWVzIGZvciBuZXcg
b2JqZWN0cw0KLS8vIA0KLSNpZmRlZiBBUFNUVURJT19JTlZPS0VEDQotI2lmbmRlZiBBUFNUVURJ
T19SRUFET05MWV9TWU1CT0xTDQotI2RlZmluZSBfQVBTX05PX01GQyAgICAgICAgICAgICAgICAg
ICAgIDENCi0jZGVmaW5lIF9BUFNfTkVYVF9SRVNPVVJDRV9WQUxVRSAgICAgICAgMTI5DQotI2Rl
ZmluZSBfQVBTX05FWFRfQ09NTUFORF9WQUxVRSAgICAgICAgIDMyNzcxDQotI2RlZmluZSBfQVBT
X05FWFRfQ09OVFJPTF9WQUxVRSAgICAgICAgIDEwMDANCi0jZGVmaW5lIF9BUFNfTkVYVF9TWU1F
RF9WQUxVRSAgICAgICAgICAgMTEwDQotI2VuZGlmDQotI2VuZGlmDQorLy97e05PX0RFUEVOREVO
Q0lFU319CisvLyBNaWNyb3NvZnQgVmlzdWFsIEMrKyBnZW5lcmF0ZWQgaW5jbHVkZSBmaWxlLgor
Ly8gVXNlZCBieSBXaW5MYXVuY2hlckxhdW5jaGVyLnJjCisvLworI2RlZmluZSBJRERfV0lOTEFV
TkNIRVJfRElBTE9HICAgICAgICAgIDEwMgorI2RlZmluZSBJRElfV0lOTEFVTkNIRVIgICAgICAg
ICAgICAgICAgIDEwNworI2RlZmluZSBJRFJfTUFJTkZSQU1FICAgICAgICAgICAgICAgICAgIDEy
OAorI2RlZmluZSBJRENfU1RBVElDICAgICAgICAgICAgICAgICAgICAgIC0xCisKKy8vIE5leHQg
ZGVmYXVsdCB2YWx1ZXMgZm9yIG5ldyBvYmplY3RzCisvLyAKKyNpZmRlZiBBUFNUVURJT19JTlZP
S0VECisjaWZuZGVmIEFQU1RVRElPX1JFQURPTkxZX1NZTUJPTFMKKyNkZWZpbmUgX0FQU19OT19N
RkMgICAgICAgICAgICAgICAgICAgICAxCisjZGVmaW5lIF9BUFNfTkVYVF9SRVNPVVJDRV9WQUxV
RSAgICAgICAgMTI5CisjZGVmaW5lIF9BUFNfTkVYVF9DT01NQU5EX1ZBTFVFICAgICAgICAgMzI3
NzEKKyNkZWZpbmUgX0FQU19ORVhUX0NPTlRST0xfVkFMVUUgICAgICAgICAxMDAwCisjZGVmaW5l
IF9BUFNfTkVYVF9TWU1FRF9WQUxVRSAgICAgICAgICAgMTEwCisjZW5kaWYKKyNlbmRpZgpJbmRl
eDogVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJyeS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0UnVu
bmVyQmxhY2tCZXJyeS5jcHAJKHJldmlzaW9uIDE0Mjg3NikKKysrIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02MTYsMTkgKzYxNiw2IEBACiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBUZXN0
UnVubmVyOjpzZXRBdXRvZmlsbGVkKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5v
ZGVPYmplY3QsIGJvb2wgYXV0b2ZpbGxlZCkKLXsKLSAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9
IHRvSlMoY29udGV4dCk7Ci0gICAgV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCA9IHRvRWxlbWVu
dCh0b0pTKGV4ZWMsIG5vZGVPYmplY3QpKTsKLSAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJl
dHVybjsKLSAgICBXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBlbGVt
ZW50LT50b0lucHV0RWxlbWVudCgpOwotICAgIGlmICghaW5wdXRFbGVtZW50KQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpbnB1dEVsZW1lbnQtPnNldEF1dG9maWxsZWQoYXV0b2ZpbGxlZCk7Ci19
Ci0KIGludCBUZXN0UnVubmVyOjpudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0cygpCiB7CiAgICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydDo6bnVtYmVyT2ZQ
ZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMoQmxhY2tCZXJyeTo6V2ViS2l0OjpE
dW1wUmVuZGVyVHJlZTo6Y3VycmVudEluc3RhbmNlKCktPnBhZ2UoKSk7CkluZGV4OiBUb29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9U
ZXN0UnVubmVyLmNwcAkocmV2aXNpb24gMTQyODc2KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE5MCw3ICsxOTAsNiBAQAogICAgIGJpbmRNZXRob2QoInN0YXJ0U3BlZWNoSW5wdXQiLCAmVGVz
dFJ1bm5lcjo6c3RhcnRTcGVlY2hJbnB1dCk7CiAgICAgYmluZE1ldGhvZCgibWFya2VyVGV4dEZv
ckxpc3RJdGVtIiwgJlRlc3RSdW5uZXI6Om1hcmtlclRleHRGb3JMaXN0SXRlbSk7CiAgICAgYmlu
ZE1ldGhvZCgiZmluZFN0cmluZyIsICZUZXN0UnVubmVyOjpmaW5kU3RyaW5nKTsKLSAgICBiaW5k
TWV0aG9kKCJzZXRBdXRvZmlsbGVkIiwgJlRlc3RSdW5uZXI6OnNldEF1dG9maWxsZWQpOwogICAg
IGJpbmRNZXRob2QoInNldFZhbHVlRm9yVXNlciIsICZUZXN0UnVubmVyOjpzZXRWYWx1ZUZvclVz
ZXIpOwogICAgIGJpbmRNZXRob2QoImVuYWJsZUZpeGVkTGF5b3V0TW9kZSIsICZUZXN0UnVubmVy
OjplbmFibGVGaXhlZExheW91dE1vZGUpOwogICAgIGJpbmRNZXRob2QoInNldEZpeGVkTGF5b3V0
U2l6ZSIsICZUZXN0UnVubmVyOjpzZXRGaXhlZExheW91dFNpemUpOwpAQCAtMTMwNiwyMyArMTMw
NSw2IEBACiAgICAgcmVzdWx0LT5zZXQoZmluZFJlc3VsdCk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5l
cjo6c2V0QXV0b2ZpbGxlZChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFy
aWFudCogcmVzdWx0KQotewotICAgIHJlc3VsdC0+c2V0TnVsbCgpOwotICAgIGlmIChhcmd1bWVu
dHMuc2l6ZSgpICE9IDIgfHwgIWFyZ3VtZW50c1sxXS5pc0Jvb2woKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgV2ViRWxlbWVudCBlbGVtZW50OwotICAgIGlmICghV2ViQmluZGluZ3M6OmdldEVs
ZW1lbnQoYXJndW1lbnRzWzBdLnZhbHVlLm9iamVjdFZhbHVlLCAmZWxlbWVudCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIFdlYklucHV0RWxlbWVudCogaW5wdXQgPSB0b1dlYklucHV0RWxlbWVu
dCgmZWxlbWVudCk7Ci0gICAgaWYgKCFpbnB1dCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaW5w
dXQtPnNldEF1dG9maWxsZWQoYXJndW1lbnRzWzFdLnZhbHVlLmJvb2xWYWx1ZSk7Ci19Ci0KIHZv
aWQgVGVzdFJ1bm5lcjo6c2V0VmFsdWVGb3JVc2VyKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJn
dW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7Cklu
ZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVu
bmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvVGVzdFJ1bm5lci5oCShyZXZpc2lvbiAxNDI4NzYpCisrKyBUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzNiwxMCArMjM2LDYgQEAKICAgICB2b2lkIG1hcmtlclRleHRGb3JMaXN0SXRlbShj
b25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBmaW5kU3RyaW5n
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAotICAgIC8vIEV4cGVjdHMg
dGhlIGZpcnN0IGFyZ3VtZW50IHRvIGJlIGFuIGlucHV0IGVsZW1lbnQgYW5kIHRoZSBzZWNvbmQg
YXJndW1lbnQgdG8gYmUgYSBib29sZWFuLgotICAgIC8vIEZvcndhcmRzIHRoZSBzZXRBdXRvZmls
bGVkKCkgY2FsbCB0byB0aGUgZWxlbWVudC4KLSAgICB2b2lkIHNldEF1dG9maWxsZWQoY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwotCiAgICAgLy8gRXhwZWN0cyB0aGUgZmly
c3QgYXJndW1lbnQgdG8gYmUgYW4gaW5wdXQgZWxlbWVudCBhbmQgdGhlIHNlY29uZCBhcmd1bWVu
dCB0byBiZSBhIHN0cmluZyB2YWx1ZS4KICAgICAvLyBGb3J3YXJkcyB0aGUgc2V0VmFsdWVGb3JV
c2VyKCkgY2FsbCB0byB0aGUgZWxlbWVudC4KICAgICB2b2lkIHNldFZhbHVlRm9yVXNlcihjb25z
dCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CkluZGV4OiBUb29scy9EdW1wUmVuZGVy
VHJlZS9xdC9UZXN0UnVubmVyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L1Rlc3RSdW5uZXJRdC5jcHAJKHJldmlzaW9uIDE0Mjg3NikKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3NSwxMSAr
NDc1LDYgQEAKICAgICBtX2RydC0+d2ViUGFnZSgpLT5zZXR0aW5ncygpLT5zZXRPZmZsaW5lV2Vi
QXBwbGljYXRpb25DYWNoZVF1b3RhKHF1b3RhKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRB
dXRvZmlsbGVkKGNvbnN0IFFXZWJFbGVtZW50JiBlbGVtZW50LCBib29sIGlzQXV0b2ZpbGxlZCkK
LXsKLSAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldEF1dG9maWxsZWQoZWxl
bWVudCwgaXNBdXRvZmlsbGVkKTsKLX0KLQogdm9pZCBUZXN0UnVubmVyOjpzZXRWYWx1ZUZvclVz
ZXIoY29uc3QgUVdlYkVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFFTdHJpbmcmIHZhbHVlKQogewog
ICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRWYWx1ZUZvclVzZXIoZWxlbWVudCwgdmFs
dWUpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmgJKHJldmlzaW9u
IDE0Mjg3NikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjIsNyArMTYyLDYgQEAKICAgICB2b2lkIHNldEFsbG93VW5pdmVyc2Fs
QWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wgZW5hYmxlKTsKICAgICB2b2lkIHNldEFsbG93RmlsZUFj
Y2Vzc0Zyb21GaWxlVVJMcyhib29sIGVuYWJsZSk7CiAgICAgdm9pZCBzZXRBcHBDYWNoZU1heGlt
dW1TaXplKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSk7Ci0gICAgdm9pZCBzZXRBdXRvZmlsbGVk
KGNvbnN0IFFXZWJFbGVtZW50JiwgYm9vbCBlbmFibGUpOwogICAgIHZvaWQgc2V0VmFsdWVGb3JV
c2VyKGNvbnN0IFFXZWJFbGVtZW50JiwgY29uc3QgUVN0cmluZyYgdmFsdWUpOwogICAgIHZvaWQg
c2V0Rml4ZWRDb250ZW50c1NpemUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKICAgICB2b2lkIHNl
dFByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCk7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJl
ZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwCShyZXZpc2lvbiAxNDI4NzYpCisrKyBUb29scy9EdW1w
UmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxNCwx
MSArNDE0LDYgQEAKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CiB9CiAKLXZvaWQgVGVzdFJ1bm5l
cjo6c2V0QXV0b2ZpbGxlZChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2Jq
ZWN0LCBib29sIGlzQXV0b2ZpbGxlZCkKLXsKLSAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6
OnNldEF1dG9maWxsZWQoY29udGV4dCwgbm9kZU9iamVjdCwgaXNBdXRvZmlsbGVkKTsKLX0KLQog
dm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRl
QWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJv
b2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpCiB7CiAgICAgLy8gRklYTUU6IEltcGxl
bWVudCBmb3IgRGV2aWNlT3JpZW50YXRpb24gbGF5b3V0IHRlc3RzLgpJbmRleDogVG9vbHMvRHVt
cFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRl
clRyZWUvVGVzdFJ1bm5lci5jcHAJKHJldmlzaW9uIDE0Mjg3NikKKysrIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MzksMTcgKzkzOSw2IEBA
CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCi1zdGF0aWMg
SlNWYWx1ZVJlZiBzZXRBdXRvZmlsbGVkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1l
bnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQotewotICAgIGlmIChhcmd1bWVudENvdW50ICE9IDIgfHwgIWFyZ3VtZW50c1swXSkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwotCi0gICAgVGVzdFJ1
bm5lciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFBy
aXZhdGUodGhpc09iamVjdCkpOwotICAgIGNvbnRyb2xsZXItPnNldEF1dG9maWxsZWQoY29udGV4
dCwgYXJndW1lbnRzWzBdLCBKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1sxXSkp
OwotCi0gICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwotfQotCiBzdGF0
aWMgSlNWYWx1ZVJlZiBzZXRDYWNoZU1vZGVsQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJn
dW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKQogewogICAgIC8vIEhhcyBNYWMgaW1wbGVtZW50YXRpb24uCkBAIC0yMTUzLDcgKzIx
NDIsNiBAQAogICAgICAgICB7ICJzZXRBdXRoZW50aWNhdGlvblBhc3N3b3JkIiwgc2V0QXV0aGVu
dGljYXRpb25QYXNzd29yZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEF1dGhlbnRp
Y2F0aW9uVXNlcm5hbWUiLCBzZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKICAgICAgICAgeyAic2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQiLCBzZXRBdXRob3JB
bmRVc2VyU3R5bGVzRW5hYmxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCi0gICAgICAgIHsgInNldEF1dG9m
aWxsZWQiLCBzZXRBdXRvZmlsbGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0Q2Fj
aGVNb2RlbCIsIHNldENhY2hlTW9kZWxDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRD
YWxsQ2xvc2VPbldlYlZpZXdzIiwgc2V0Q2FsbENsb3NlT25XZWJWaWV3c0NhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCiAgICAgICAgIHsgInNldENhbk9wZW5XaW5kb3dzIiwgc2V0Q2FuT3BlbldpbmRvd3NDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvVGVzdFJ1bm5lcld4
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93eC9UZXN0UnVubmVyV3gu
Y3BwCShyZXZpc2lvbiAxNDI4NzYpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93eC9UZXN0UnVu
bmVyV3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksMTEgKzE5OSw2IEBACiAgICAgLy8gRklY
TUU6IGltcGxlbWVudAogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldEF1dG9maWxsZWQoSlNDb250
ZXh0UmVmLCBKU1ZhbHVlUmVmIGVsZW1lbnQsIGJvb2wgaXNBdXRvZmlsbGVkKQotewotICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQKLX0KLQogdm9pZCBUZXN0UnVubmVyOjpzZXRQb3B1cEJsb2NraW5n
RW5hYmxlZChib29sIHBvcHVwQmxvY2tpbmdFbmFibGVkKQogewogICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCShy
ZXZpc2lvbiAxNDI4NzYpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDE5LDE1ICs0MTksNiBAQAogICAgIFtbW21haW5GcmFt
ZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gc2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQ6Zmxh
Z107CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0QXV0b2ZpbGxlZChKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBib29sIGF1dG9maWxsZWQpCi17Ci0gICAgRE9N
RWxlbWVudCAqZWxlbWVudCA9IFtET01FbGVtZW50IF9ET01FbGVtZW50RnJvbUpTQ29udGV4dDpj
b250ZXh0IHZhbHVlOm5vZGVPYmplY3RdOwotICAgIGlmICghZWxlbWVudCB8fCAhW2VsZW1lbnQg
aXNLaW5kT2ZDbGFzczpbRE9NSFRNTElucHV0RWxlbWVudCBjbGFzc11dKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBbKERPTUhUTUxJbnB1dEVsZW1lbnQgKillbGVtZW50IF9zZXRBdXRvZmlsbGVk
OmF1dG9maWxsZWRdOwotfQotCiB2b2lkIFRlc3RSdW5uZXI6OnNldEN1c3RvbVBvbGljeURlbGVn
YXRlKGJvb2wgc2V0RGVsZWdhdGUsIGJvb2wgcGVybWlzc2l2ZSkKIHsKICAgICBpZiAoc2V0RGVs
ZWdhdGUpIHsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5j
cHAJKHJldmlzaW9uIDE0Mjg3NikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVu
bmVyV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM1LDI3ICszMzUsNiBAQAogICAgIHByZWZz
UHJpdmF0ZS0+c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoZmxhZyk7CiB9CiAKLXZvaWQg
VGVzdFJ1bm5lcjo6c2V0QXV0b2ZpbGxlZChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJl
ZiBub2RlT2JqZWN0LCBib29sIGF1dG9maWxsZWQpCi17Ci0gICAgQ09NUHRyPElXZWJWaWV3PiB3
ZWJWaWV3OwotICAgIGlmIChGQUlMRUQoZnJhbWUtPndlYlZpZXcoJndlYlZpZXcpKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgQ09NUHRyPElXZWJWaWV3UHJpdmF0ZT4gd2ViVmlld1ByaXZhdGUo
UXVlcnksIHdlYlZpZXcpOwotICAgIGlmICghd2ViVmlld1ByaXZhdGUpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIENPTVB0cjxJRE9NRWxlbWVudD4gZWxlbWVudDsKLSAgICBpZiAoRkFJTEVEKHdl
YlZpZXdQcml2YXRlLT5lbGVtZW50RnJvbUpTKGNvbnRleHQsIG5vZGVPYmplY3QsICZlbGVtZW50
KSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIENPTVB0cjxJRm9ybXNBdXRvRmlsbFRyYW5zaXRp
b24+IGF1dG9maWxsRWxlbWVudChRdWVyeSwgZWxlbWVudCk7Ci0gICAgaWYgKCFhdXRvZmlsbEVs
ZW1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG9maWxsRWxlbWVudC0+c2V0QXV0b2Zp
bGxlZChhdXRvZmlsbGVkKTsKLX0KLQogdm9pZCBUZXN0UnVubmVyOjpzZXRDdXN0b21Qb2xpY3lE
ZWxlZ2F0ZShib29sIHNldERlbGVnYXRlLCBib29sIHBlcm1pc3NpdmUpCiB7CiAgICAgQ09NUHRy
PElXZWJWaWV3PiB3ZWJWaWV3OwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5l
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAkocmV2
aXNpb24gMTQyODc2KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Niw3ICs4Niw2IEBACiAgICAgdm9pZCBzZXRBcHBDYWNoZU1heGltdW1T
aXplKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSk7CiAgICAgdm9pZCBzZXRBcHBsaWNhdGlvbkNh
Y2hlT3JpZ2luUXVvdGEodW5zaWduZWQgbG9uZyBsb25nKTsKICAgICB2b2lkIHNldEF1dGhvckFu
ZFVzZXJTdHlsZXNFbmFibGVkKGJvb2wpOwotICAgIHZvaWQgc2V0QXV0b2ZpbGxlZChKU0NvbnRl
eHRSZWYsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCwgYm9vbCBhdXRvZmlsbGVkKTsKICAgICB2b2lk
IHNldENhY2hlTW9kZWwoaW50KTsKICAgICB2b2lkIHNldEN1c3RvbVBvbGljeURlbGVnYXRlKGJv
b2wgc2V0RGVsZWdhdGUsIGJvb2wgcGVybWlzc2l2ZSk7CiAgICAgdm9pZCBzZXREYXRhYmFzZVF1
b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSk7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJl
ZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwCShyZXZpc2lvbiAxNDI4NzYpCisrKyBUb29scy9EdW1w
UmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzOCwx
MSArMzM4LDYgQEAKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldEF1dGhvckFuZFVz
ZXJTdHlsZXNFbmFibGVkKGJyb3dzZXItPm1haW5WaWV3KCksIGZsYWcpOwogfQogCi12b2lkIFRl
c3RSdW5uZXI6OnNldEF1dG9maWxsZWQoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYg
bm9kZU9iamVjdCwgYm9vbCBhdXRvZmlsbGVkKQotewotICAgIER1bXBSZW5kZXJUcmVlU3VwcG9y
dEVmbDo6c2V0QXV0b2ZpbGxlZChjb250ZXh0LCBub2RlT2JqZWN0LCBhdXRvZmlsbGVkKTsKLX0K
LQogdm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCwgZG91Ymxl
LCBib29sLCBkb3VibGUsIGJvb2wsIGRvdWJsZSkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50
IGZvciBEZXZpY2VPcmllbnRhdGlvbiBsYXlvdXQgdGVzdHMuCkluZGV4OiBUb29scy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDM2ODQpCisrKyBU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMSBAQAorMjAxMy0wMi0y
MSAgSmFzb24gQW5kZXJzc2VuICA8amFuZGVyc3NlbkBleGFjdGFsLmNvbT4KKworICAgICAgICBN
b3ZlIHNldEF1dG9maWxsZWQgZnJvbSBUZXN0UnVubmVyIHRvIFdlYkNvcmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDUyMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVz
dFJ1bm5lci5jcHA6CisgICAgICAgIChUZXN0UnVubmVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKFRlc3RSdW5uZXIp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVy
cnkuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6VGVz
dFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmg6CisgICAgICAgIChUZXN0
UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHA6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
cXQvVGVzdFJ1bm5lclF0Lmg6CisgICAgICAgIChUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvd3gvVGVzdFJ1bm5lcld4LmNwcDoKKyAgICAgICAgKiBXaW5MYXVuY2hlci9XaW5MYXVuY2hl
ci52Y3hwcm9qL1dpbkxhdW5jaGVyUmVzb3VyY2UuaDoKKyAgICAgICAgKiBXaW5MYXVuY2hlci9X
aW5MYXVuY2hlckxhdW5jaGVyUmVzb3VyY2UuaDoKKwogMjAxMy0wMi0yMSAgRGlyayBQcmFua2Ug
IDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIHN1cHBvcnQgdGhl
IGx1Y2lkIHZlcnNpb24gb2YgZnJlZXR5cGUgb24gcHJlY2lzZSBpbiBEUlQKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQuY3BwCShyZXZpc2lvbiAxNDI4NzYpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjY0LDE4ICsyNjQsNiBAQAogICAgIHJldHVybiBhZGFwdGVyLT5mcmFtZS0+ZG9jdW1lbnQo
KS0+ZG9jdW1lbnRFbGVtZW50KCk7CiB9CiAKLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6
OnNldEF1dG9maWxsZWQoY29uc3QgUVdlYkVsZW1lbnQmIGVsZW1lbnQsIGJvb2wgaXNBdXRvZmls
bGVkKQotewotICAgIFdlYkNvcmU6OkVsZW1lbnQqIHdlYkVsZW1lbnQgPSBlbGVtZW50Lm1fZWxl
bWVudDsKLSAgICBpZiAoIXdlYkVsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLSAgICBIVE1MSW5w
dXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSB3ZWJFbGVtZW50LT50b0lucHV0RWxlbWVudCgpOwot
ICAgIGlmICghaW5wdXRFbGVtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpbnB1dEVsZW1l
bnQtPnNldEF1dG9maWxsZWQoaXNBdXRvZmlsbGVkKTsKLX0KLQogdm9pZCBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdDo6c2V0VmFsdWVGb3JVc2VyKGNvbnN0IFFXZWJFbGVtZW50JiBlbGVtZW50LCBj
b25zdCBRU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBXZWJDb3JlOjpFbGVtZW50KiB3ZWJFbGVtZW50
ID0gZWxlbWVudC5tX2VsZW1lbnQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oCShyZXZpc2lvbiAx
NDI4NzYpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw3ICsxMDcsNiBAQAogCiAgICAgc3Rh
dGljIHZvaWQgZ2FyYmFnZUNvbGxlY3RvckNvbGxlY3QoKTsKICAgICBzdGF0aWMgdm9pZCBnYXJi
YWdlQ29sbGVjdG9yQ29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkKGJvb2wgd2FpdFVudGlsRG9uZSk7
Ci0gICAgc3RhdGljIHZvaWQgc2V0QXV0b2ZpbGxlZChjb25zdCBRV2ViRWxlbWVudCYsIGJvb2wg
ZW5hYmxlZCk7CiAgICAgc3RhdGljIHZvaWQgc2V0VmFsdWVGb3JVc2VyKGNvbnN0IFFXZWJFbGVt
ZW50JiwgY29uc3QgUVN0cmluZyYgdmFsdWUpOwogICAgIHN0YXRpYyBpbnQgamF2YVNjcmlwdE9i
amVjdHNDb3VudCgpOwogICAgIHN0YXRpYyB2b2lkIGNsZWFyU2NyaXB0V29ybGRzKCk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gMTQzNjg0KQorKysgU291cmNlL1dlYktpdC9xdC9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0wMi0yMSAgSmFzb24g
QW5kZXJzc2VuICA8amFuZGVyc3NlbkBleGFjdGFsLmNvbT4KKworICAgICAgICBNb3ZlIHNldEF1
dG9maWxsZWQgZnJvbSBUZXN0UnVubmVyIHRvIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDUyMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0Lmg6CisKIDIwMTMtMDItMjEgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFu
LmplbnNlbkBkaWdpYS5jb20+CiAKICAgICAgICAgW1F0XSBSZXBsYWNlIFFXZWJQYWdlQWRhcHRv
cjo6VG91Y2hBZGp1c3RlcgpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgJKHJldmlzaW9uIDE0
Mjg3NikKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw2IEBACiAgICAgc3RhdGlj
IEF0a09iamVjdCogZ2V0Rm9jdXNlZEFjY2Vzc2libGVFbGVtZW50KFdlYktpdFdlYkZyYW1lKik7
CiAgICAgc3RhdGljIEF0a09iamVjdCogZ2V0Um9vdEFjY2Vzc2libGVFbGVtZW50KFdlYktpdFdl
YkZyYW1lKik7CiAgICAgc3RhdGljIHZvaWQgbGF5b3V0RnJhbWUoV2ViS2l0V2ViRnJhbWUqKTsK
LSAgICBzdGF0aWMgdm9pZCBzZXRBdXRvZmlsbGVkKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiwg
Ym9vbCk7CiAgICAgc3RhdGljIHZvaWQgc2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJlZiwgSlNW
YWx1ZVJlZiwgSlNTdHJpbmdSZWYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZENsb3NlKFdlYktp
dFdlYkZyYW1lKik7CiAgICAgc3RhdGljIGJvb2wgZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JF
bGVtZW50V2l0aElkKFdlYktpdFdlYkZyYW1lKiwgSlNTdHJpbmdSZWYpOwpJbmRleDogU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRHdGsuY3BwCShyZXZpc2lvbiAxNDI4NzYpCisrKyBTb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01NDgsMTkgKzU0OCw2IEBACiAgICAgcmV0dXJuIGNvcmVPYmplY3QtPmhlbHBUZXh0
KCkudXRmOCgpOwogfQogCi12b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0QXV0b2Zp
bGxlZChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBib29sIGF1
dG9maWxsZWQpCi17Ci0gICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGNvbnRleHQpOwot
ICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQodG9KUyhleGVjLCBub2RlT2JqZWN0KSk7
Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm47Ci0gICAgSFRNTElucHV0RWxlbWVu
dCogaW5wdXRFbGVtZW50ID0gZWxlbWVudC0+dG9JbnB1dEVsZW1lbnQoKTsKLSAgICBpZiAoIWlu
cHV0RWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaW5wdXRFbGVtZW50LT5zZXRBdXRv
ZmlsbGVkKGF1dG9maWxsZWQpOwotfQotCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6
c2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vZGVPYmpl
Y3QsIEpTU3RyaW5nUmVmIHZhbHVlKQogewogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdG9K
Uyhjb250ZXh0KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MzY4NCkKKysrIFNv
dXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBA
CisyMDEzLTAyLTIxICBKYXNvbiBBbmRlcnNzZW4gIDxqYW5kZXJzc2VuQGV4YWN0YWwuY29tPgor
CisgICAgICAgIE1vdmUgc2V0QXV0b2ZpbGxlZCBmcm9tIFRlc3RSdW5uZXIgdG8gV2ViQ29yZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNTIxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oOgorICAgICAgICAoRHVtcFJlbmRlclRy
ZWVTdXBwb3J0R3RrKToKKwogMjAxMy0wMi0yMSAgR2VvcmdlIE1jQ29sbGlzdGVyICA8Z2Vvcmdl
Lm1jY29sbGlzdGVyQGdtYWlsLmNvbT4KIAogICAgICAgICBbR1RLXSBSZW1vdmUgc3VicmVzb3Vy
Y2UgbGVha3MgZnJvbSBXZWJLaXQxIGFuZCBXZWJLaXQyCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRF
ZmwuaAkocmV2aXNpb24gMTQyODc2KQorKysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4
LDYgQEAKICAgICBzdGF0aWMgU3RyaW5nIHN1aXRhYmxlRFJURnJhbWVOYW1lKGNvbnN0IEV2YXNf
T2JqZWN0KiBld2tGcmFtZSk7CiAgICAgc3RhdGljIFN0cmluZyBsYXllclRyZWVBc1RleHQoY29u
c3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKICAgICBzdGF0aWMgdm9pZCBzZXRWYWx1ZUZvclVz
ZXIoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QsIGNvbnN0IFN0cmluZyYgdmFs
dWUpOwotICAgIHN0YXRpYyB2b2lkIHNldEF1dG9maWxsZWQoSlNDb250ZXh0UmVmLCBKU1ZhbHVl
UmVmIG5vZGVPYmplY3QsIGJvb2wgYXV0b2ZpbGxlZCk7CiAgICAgc3RhdGljIHZvaWQgc2V0RGVm
ZXJzTG9hZGluZyhFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCBkZWZlcnMpOwogICAgIHN0YXRp
YyB2b2lkIHNldExvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdTZXR0aW5nKEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBib29sIGxvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdQ
cmVmZXJlbmNlcyk7CiAgICAgc3RhdGljIHZvaWQgc2V0TWluaW11bUxvZ2ljYWxGb250U2l6ZShF
dmFzX09iamVjdCogZXdrVmlldywgaW50IHNpemUpOwpJbmRleDogU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRF
ZmwuY3BwCShyZXZpc2lvbiAxNDI4NzYpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDcs
MTkgKzI0Nyw2IEBACiAgICAgaW5wdXRFbGVtZW50LT5zZXRWYWx1ZUZvclVzZXIodmFsdWUpOwog
fQogCi12b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0QXV0b2ZpbGxlZChKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBib29sIGF1dG9maWxsZWQpCi17
Ci0gICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGNvbnRleHQpOwotICAgIFdlYkNvcmU6
OkVsZW1lbnQqIGVsZW1lbnQgPSBXZWJDb3JlOjp0b0VsZW1lbnQodG9KUyhleGVjLCBub2RlT2Jq
ZWN0KSk7Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm47Ci0gICAgV2ViQ29yZTo6
SFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gZWxlbWVudC0+dG9JbnB1dEVsZW1lbnQo
KTsKLSAgICBpZiAoIWlucHV0RWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaW5wdXRF
bGVtZW50LT5zZXRBdXRvZmlsbGVkKGF1dG9maWxsZWQpOwotfQotCiB2b2lkIER1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbDo6c2V0RGVmZXJzTG9hZGluZyhFdmFzX09iamVjdCogZXdrVmlldywgYm9v
bCBkZWZlcnMpCiB7CiAgICAgRFJUX1NVUFBSVF9QQUdFX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
cGFnZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDM2ODQpCisrKyBTb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAx
My0wMi0yMSAgSmFzb24gQW5kZXJzc2VuICA8amFuZGVyc3NlbkBleGFjdGFsLmNvbT4KKworICAg
ICAgICBNb3ZlIHNldEF1dG9maWxsZWQgZnJvbSBUZXN0UnVubmVyIHRvIFdlYkNvcmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDUyMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoKKwogMjAxMy0wMi0xOSAgVG9ueSBDaGFuZyAg
PHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENvbnZlcnQgMyBzZXR0aW5ncyB0byB1c2Ug
U2V0dGluZ3MuaW4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJldmlz
aW9uIDE0Mjg3NikKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODEwLDYgKzgxMCwyMCBAQAogICAgIH0KICAgICByZXR1cm4gbWFpbkl0
ZW0tPnRhcmdldCgpID09IHVuaXF1ZU5hbWUgPyBtYWluSXRlbS0+ZG9jdW1lbnRTdGF0ZSgpIDog
bWFpbkl0ZW0tPmNoaWxkSXRlbVdpdGhUYXJnZXQodW5pcXVlTmFtZSktPmRvY3VtZW50U3RhdGUo
KTsKIH0KKyAgICAKK3ZvaWQgSW50ZXJuYWxzOjpzZXRBdXRvZmlsbGVkKEVsZW1lbnQqIGVsZW1l
bnQsIGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFlbGVtZW50
LT5oYXNUYWdOYW1lKGlucHV0VGFnKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VS
UjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVs
ZW1lbnQgPSBlbGVtZW50LT50b0lucHV0RWxlbWVudCgpOworICAgIGlmICghaW5wdXRFbGVtZW50
KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGlucHV0RWxlbWVudC0+c2V0QXV0b2ZpbGxlZCggZW5hYmxlZCApOworfQogCiB2
b2lkIEludGVybmFsczo6c2V0Rm9ybUNvbnRyb2xTdGF0ZU9mUHJldmlvdXNIaXN0b3J5SXRlbShj
b25zdCBWZWN0b3I8U3RyaW5nPiYgc3RhdGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewpJbmRleDog
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCShyZXZpc2lvbiAxNDI4NzYpCisrKyBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDgsNiArMjA4
LDggQEAKICAgICBJbnRlcm5hbFNldHRpbmdzKiBzZXR0aW5ncygpIGNvbnN0OwogICAgIHVuc2ln
bmVkIHdvcmtlclRocmVhZENvdW50KCkgY29uc3Q7CiAKKyAgICB2b2lkIHNldEF1dG9maWxsZWQo
RWxlbWVudCogZWxlbWVudCwgYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJik7CisKICAgICB2
b2lkIHNldEJhdHRlcnlTdGF0dXMoRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmIGV2ZW50VHlwZSwg
Ym9vbCBjaGFyZ2luZywgZG91YmxlIGNoYXJnaW5nVGltZSwgZG91YmxlIGRpc2NoYXJnaW5nVGlt
ZSwgZG91YmxlIGxldmVsLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICB2b2lkIHNldE5ldHdvcmtJ
bmZvcm1hdGlvbihEb2N1bWVudCosIGNvbnN0IFN0cmluZyYgZXZlbnRUeXBlLCBkb3VibGUgYmFu
ZHdpZHRoLCBib29sIG1ldGVyZWQsIEV4Y2VwdGlvbkNvZGUmKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwJKHJldmlzaW9uIDE0Mjg3NikKKysrIFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUxLDQgKzI1MSw2IEBA
CiAgICAgdm9pZCBzZXRVc2VzT3ZlcmxheVNjcm9sbGJhcnMoaW4gYm9vbGVhbiBlbmFibGVkKTsK
IAogICAgIFtDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUFfVjJdIHZvaWQgaW5pdGlhbGl6ZU1v
Y2tDRE0oKTsKKyAgICAKKyAgICB2b2lkIHNldEF1dG9maWxsZWQoaW4gRWxlbWVudCBzY29wZSwg
aW4gYm9vbGVhbiBlbmFibGVkKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxNDM2ODQpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMy0wMi0yMSAgSmFzb24gQW5kZXJzc2VuICA8
amFuZGVyc3NlbkBleGFjdGFsLmNvbT4KKworICAgICAgICBNb3ZlIHNldEF1dG9maWxsZWQgZnJv
bSBUZXN0UnVubmVyIHRvIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExMDUyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OnNldEF1dG9maWxsZWQpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6
CisgICAgICAgIChJbnRlcm5hbHMpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoK
KwogMjAxMy0wMi0yMSAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAg
Rm9sbG93dXAgY29tbWl0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTEwNTQxCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jb2RlZ2Vhci9ndGVzdF9h
bGwuY2MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvY29kZWdlYXIvZ3Rl
c3RfYWxsLmNjCShyZXZpc2lvbiAxNDI4NzYpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9j
b2RlZ2Vhci9ndGVzdF9hbGwuY2MJKHdvcmtpbmcgY29weSkKQEAgLTEsMzggKzEsMzggQEAKLS8v
IENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLg0KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQot
Ly8NCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQNCi0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlDQotLy8gbWV0Og0KLS8vDQotLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQNCi0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuDQotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQ0KLS8vIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXINCi0vLyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlDQotLy8gZGlzdHJpYnV0aW9uLg0KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMNCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQ0KLS8vIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQotLy8N
Ci0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTDQotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QNCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1INCi0vLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVA0KLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLA0KLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QNCi0vLyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwN
Ci0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkNCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUDQotLy8gKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFDQotLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4NCi0vLw0KLS8vIEF1dGhvcjogSm9zaCBLZWxsZXkgKGpvc2hrZWxAZ21haWwu
Y29tKQ0KLS8vDQotLy8gR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3Qp
DQotLy8NCi0vLyBDKytCdWlsZGVyJ3MgSURFIGNhbm5vdCBidWlsZCBhIHN0YXRpYyBsaWJyYXJ5
IGZyb20gZmlsZXMgd2l0aCBoeXBoZW5zDQotLy8gaW4gdGhlaXIgbmFtZS4gIFNlZSBodHRwOi8v
cWMuY29kZWdlYXIuY29tL3djL3FjbWFpbi5hc3B4P2Q9NzA5NzcgLg0KLS8vIFRoaXMgZmlsZSBz
ZXJ2ZXMgYXMgYSB3b3JrYXJvdW5kLg0KLQ0KLSNpbmNsdWRlICJzcmMvZ3Rlc3QtYWxsLmNjIg0K
Ky8vIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8g
ZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8v
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBBdXRo
b3I6IEpvc2ggS2VsbGV5IChqb3Noa2VsQGdtYWlsLmNvbSkKKy8vCisvLyBHb29nbGUgQysrIFRl
c3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKKy8vCisvLyBDKytCdWlsZGVyJ3MgSURFIGNh
bm5vdCBidWlsZCBhIHN0YXRpYyBsaWJyYXJ5IGZyb20gZmlsZXMgd2l0aCBoeXBoZW5zCisvLyBp
biB0aGVpciBuYW1lLiAgU2VlIGh0dHA6Ly9xYy5jb2RlZ2Vhci5jb20vd2MvcWNtYWluLmFzcHg/
ZD03MDk3NyAuCisvLyBUaGlzIGZpbGUgc2VydmVzIGFzIGEgd29ya2Fyb3VuZC4KKworI2luY2x1
ZGUgInNyYy9ndGVzdC1hbGwuY2MiCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9jb2Rl
Z2Vhci9ndGVzdF9saW5rLmNjCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L2NvZGVnZWFyL2d0ZXN0X2xpbmsuY2MJKHJldmlzaW9uIDE0Mjg3NikKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L2NvZGVnZWFyL2d0ZXN0X2xpbmsuY2MJKHdvcmtpbmcgY29weSkKQEAgLTEs
NDAgKzEsNDAgQEAKLS8vIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLg0KLS8vIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuDQotLy8NCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCi0vLyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlDQotLy8g
bWV0Og0KLS8vDQotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCi0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQotLy8gICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQ0KLS8vIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXINCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlDQotLy8gZGlzdHJpYnV0aW9uLg0KLS8vICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMNCi0vLyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQ0KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uDQotLy8NCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTDQotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QNCi0vLyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1INCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVA0KLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLA0KLS8vIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QNCi0v
LyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwNCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkNCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUDQotLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFDQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCi0vLw0KLS8vIEF1dGhvcjogSm9zaCBLZWxsZXkg
KGpvc2hrZWxAZ21haWwuY29tKQ0KLS8vDQotLy8gR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29y
ayAoR29vZ2xlIFRlc3QpDQotLy8NCi0vLyBMaW5rcyBndGVzdC5saWIgYW5kIGd0ZXN0X21haW4u
bGliIGludG8gdGhlIGN1cnJlbnQgcHJvamVjdCBpbiBDKytCdWlsZGVyLg0KLS8vIFRoaXMgbWVh
bnMgdGhhdCB0aGVzZSBsaWJyYXJpZXMgY2FuJ3QgYmUgcmVuYW1lZCwgYnV0IGl0J3MgdGhlIG9u
bHkgd2F5IHRvDQotLy8gZW5zdXJlIHRoYXQgRGVidWcgdmVyc3VzIFJlbGVhc2UgdGVzdCBidWls
ZHMgYXJlIGxpbmtlZCBhZ2FpbnN0IHRoZQ0KLS8vIGFwcHJvcHJpYXRlIERlYnVnIG9yIFJlbGVh
c2UgYnVpbGQgb2YgdGhlIGxpYnJhcmllcy4NCi0NCi0jcHJhZ21hIGxpbmsgImd0ZXN0LmxpYiIN
Ci0jcHJhZ21hIGxpbmsgImd0ZXN0X21haW4ubGliIg0KKy8vIENvcHlyaWdodCAyMDA5LCBHb29n
bGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLyBBdXRob3I6IEpvc2ggS2VsbGV5IChqb3Noa2Vs
QGdtYWlsLmNvbSkKKy8vCisvLyBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUg
VGVzdCkKKy8vCisvLyBMaW5rcyBndGVzdC5saWIgYW5kIGd0ZXN0X21haW4ubGliIGludG8gdGhl
IGN1cnJlbnQgcHJvamVjdCBpbiBDKytCdWlsZGVyLgorLy8gVGhpcyBtZWFucyB0aGF0IHRoZXNl
IGxpYnJhcmllcyBjYW4ndCBiZSByZW5hbWVkLCBidXQgaXQncyB0aGUgb25seSB3YXkgdG8KKy8v
IGVuc3VyZSB0aGF0IERlYnVnIHZlcnN1cyBSZWxlYXNlIHRlc3QgYnVpbGRzIGFyZSBsaW5rZWQg
YWdhaW5zdCB0aGUKKy8vIGFwcHJvcHJpYXRlIERlYnVnIG9yIFJlbGVhc2UgYnVpbGQgb2YgdGhl
IGxpYnJhcmllcy4KKworI3ByYWdtYSBsaW5rICJndGVzdC5saWIiCisjcHJhZ21hIGxpbmsgImd0
ZXN0X21haW4ubGliIgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0NoYW5nZUxvZwkocmV2aXNpb24gMTQzNjg0KQorKysg
U291cmNlL1RoaXJkUGFydHkvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTMtMDItMjEgIEphc29uIEFuZGVyc3NlbiAgPGphbmRlcnNzZW5AZXhhY3RhbC5jb20+
CisKKyAgICAgICAgTW92ZSBzZXRBdXRvZmlsbGVkIGZyb20gVGVzdFJ1bm5lciB0byBXZWJDb3Jl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA1MjEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGd0ZXN0
L2NvZGVnZWFyL2d0ZXN0X2FsbC5jYzoKKyAgICAgICAgKiBndGVzdC9jb2RlZ2Vhci9ndGVzdF9s
aW5rLmNjOgorCiAyMDEzLTAyLTIwICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+
CiAKICAgICAgICBHZXQgVlMyMDEwIFNvbHV0aW9uIEImSSByZWFkeS4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZm9ybXMvcmVzZXQtYXV0b2ZpbGxlZC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvcmVzZXQtYXV0b2ZpbGxlZC5odG1sCShyZXZpc2lvbiAxNDI4NzYp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc2V0LWF1dG9maWxsZWQuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMTIsOCArMTIsOCBAQAogICAgICAgICB9CiAKICAgICAgICAgdmFyIGZpZWxk
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpZWxkJyk7Ci0gICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgewotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRBdXRvZmlsbGVkKGZpZWxk
LCB0cnVlKTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgIHdp
bmRvdy5pbnRlcm5hbHMuc2V0QXV0b2ZpbGxlZChmaWVsZCwgdHJ1ZSk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICB0ZXN0RmFpbGVkKCdUaGlzIHRlc3QgcmVxdWlyZXMgYSBMYXlvdXRU
ZXN0Q29udHJvbGxlci4nKTsKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvaW5wdXQtYXV0b2ZpbGxlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZm9ybXMvaW5wdXQtYXV0b2ZpbGxlZC5odG1sCShyZXZpc2lvbiAxNDI4NzYpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWF1dG9maWxsZWQuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMTIsOCArMTIsOCBAQAogICAgICAgICB2YXIgb3JpZ2luYWxGb3JlZ3JvdW5kID0g
Y29tcHV0ZWRTdHlsZS5jb2xvcjsKICAgICAgICAgdmFyIG9yaWdpbmFsQmFja2dyb3VuZCA9IGNv
bXB1dGVkU3R5bGUuYmFja2dyb3VuZENvbG9yOwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikgewotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRBdXRvZmlsbGVkKHRmLCB0cnVlKTsK
KyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgIHdpbmRvdy5pbnRl
cm5hbHMuc2V0QXV0b2ZpbGxlZCh0ZiwgdHJ1ZSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBC
b3RoIHRoZSBmb3JlZ3JvdW5kIGFuZCBiYWNrZ3JvdW5kIGNvbG9ycyBzaG91bGQgY2hhbmdlLgpA
QCAtMjksOCArMjksOCBAQAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldEF1
dG9maWxsZWQodGYsIGZhbHNlKTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAg
ICAgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0QXV0b2ZpbGxlZCh0ZiwgZmFsc2UpOwogICAg
ICAgICB9CiAKICAgICAgICAgLy8gQ29sb3JzIHNob3VsZCBiZSByZXN0b3JlZC4KSW5kZXg6IExh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9uX2Jsb2NrZWQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9ibG9j
a2VkLmh0bWwJKHJldmlzaW9uIDE0Mjg3NikKKysrIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3NldF92ZXJzaW9uX2Jsb2NrZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMSwx
MCBAQAotPGh0bWw+DQotPGhlYWQ+DQotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4NCi08c2NyaXB0IHNyYz0icmVzb3VyY2VzL3No
YXJlZC5qcyI+PC9zY3JpcHQ+DQotPC9oZWFkPg0KLTxib2R5Pg0KLTxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvc2V0X3ZlcnNpb25fYmxvY2tlZC5qcyI+PC9zY3JpcHQ+DQotPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+DQotPC9ib2R5
Pg0KLTwvaHRtbD4NCis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9zZXRfdmVyc2lvbl9ibG9ja2VkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rp
b24tcmVhZC1vbmx5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvdHJhbnNhY3Rpb24tcmVhZC1vbmx5Lmh0bWwJKHJldmlzaW9uIDE0Mjg3NikKKysrIExh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXJlYWQtb25seS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDEwICsxLDEwIEBACi08aHRtbD4NCi08aGVhZD4NCi08c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pg0K
LTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4NCi08L2hlYWQ+DQot
PGJvZHk+DQotPHNjcmlwdCBzcmM9InJlc291cmNlcy90cmFuc2FjdGlvbi1yZWFkLW9ubHkuanMi
Pjwvc2NyaXB0Pg0KLTxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0Pg0KLTwvYm9keT4NCi08L2h0bWw+DQorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdHJhbnNhY3Rpb24tcmVhZC1vbmx5
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvY3NzMi4xLzIwMTEwMzIzL3N1cHBvcnQvZW9mLWdyZWVuLmNzcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9jc3MyLjEvMjAxMTAzMjMvc3VwcG9ydC9lb2YtZ3JlZW4uY3NzCShyZXZpc2lv
biAxNDI4NzYpCisrKyBMYXlvdXRUZXN0cy9jc3MyLjEvMjAxMTAzMjMvc3VwcG9ydC9lb2YtZ3Jl
ZW4uY3NzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAotLyogZW9mLWdyZWVuLmNzcyAq
Lw0KLWRpdg0KLXsNCi0gICAgY29sb3I6IGdyZWVuOw0KKy8qIGVvZi1ncmVlbi5jc3MgKi8KK2Rp
dgoreworICAgIGNvbG9yOiBncmVlbjsKIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCklu
ZGV4OiBMYXlvdXRUZXN0cy9jc3MyLjEvMjAxMTAzMjMvc3VwcG9ydC9hdC1pbXBvcnQtMDAxLmNz
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jc3MyLjEvMjAxMTAzMjMvc3VwcG9ydC9hdC1p
bXBvcnQtMDAxLmNzcwkocmV2aXNpb24gMTQyODc2KQorKysgTGF5b3V0VGVzdHMvY3NzMi4xLzIw
MTEwMzIzL3N1cHBvcnQvYXQtaW1wb3J0LTAwMS5jc3MJKHdvcmtpbmcgY29weSkKQEAgLTEsNCAr
MSw0IEBACi1kaXYNCi17DQotICAgIGNvbG9yOiByZWQ7DQorZGl2Cit7CisgICAgY29sb3I6IHJl
ZDsKIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9jc3My
LjEvMjAxMTAzMjMvc3VwcG9ydC9hdC1pbXBvcnQtMDAyLmNzcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9jc3MyLjEvMjAxMTAzMjMvc3VwcG9ydC9hdC1pbXBvcnQtMDAyLmNzcwkocmV2aXNp
b24gMTQyODc2KQorKysgTGF5b3V0VGVzdHMvY3NzMi4xLzIwMTEwMzIzL3N1cHBvcnQvYXQtaW1w
b3J0LTAwMi5jc3MJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi1kaXYNCi17DQotICAg
IGNvbG9yOiBncmVlbjsNCitkaXYKK3sKKyAgICBjb2xvcjogZ3JlZW47CiB9ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvY3NzMi4xLzIwMTEwMzIzL3N1cHBv
cnQvYXQtaW1wb3J0LTAwNC5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY3NzMi4xLzIw
MTEwMzIzL3N1cHBvcnQvYXQtaW1wb3J0LTAwNC5jc3MJKHJldmlzaW9uIDE0Mjg3NikKKysrIExh
eW91dFRlc3RzL2NzczIuMS8yMDExMDMyMy9zdXBwb3J0L2F0LWltcG9ydC0wMDQuY3NzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotZGl2DQotew0KLSAgICBjb2xvcjogcmVkOw0KK2Rp
dgoreworICAgIGNvbG9yOiByZWQ7CiB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRl
eDogTGF5b3V0VGVzdHMvY3NzMi4xLzIwMTEwMzIzL3N1cHBvcnQvYXQtaW1wb3J0LTAwNS5jc3MK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY3NzMi4xLzIwMTEwMzIzL3N1cHBvcnQvYXQtaW1w
b3J0LTAwNS5jc3MJKHJldmlzaW9uIDE0Mjg3NikKKysrIExheW91dFRlc3RzL2NzczIuMS8yMDEx
MDMyMy9zdXBwb3J0L2F0LWltcG9ydC0wMDUuY3NzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEs
NCBAQAotZGl2DQotew0KLSAgICBjb2xvcjogZ3JlZW47DQorZGl2Cit7CisgICAgY29sb3I6IGdy
ZWVuOwogfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Nz
czIuMS8yMDExMDMyMy9zdXBwb3J0L2F0LWltcG9ydC0wMDYuY3NzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2NzczIuMS8yMDExMDMyMy9zdXBwb3J0L2F0LWltcG9ydC0wMDYuY3NzCShyZXZp
c2lvbiAxNDI4NzYpCisrKyBMYXlvdXRUZXN0cy9jc3MyLjEvMjAxMTAzMjMvc3VwcG9ydC9hdC1p
bXBvcnQtMDA2LmNzcwkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLWRpdg0KLXsNCi0g
ICAgY29sb3I6IGdyZWVuOw0KK2RpdgoreworICAgIGNvbG9yOiBncmVlbjsKIH0KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9jc3MyLjEvMjAxMTAzMjMvc3Vw
cG9ydC9hdC1pbXBvcnQtMDA3LmNzcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jc3MyLjEv
MjAxMTAzMjMvc3VwcG9ydC9hdC1pbXBvcnQtMDA3LmNzcwkocmV2aXNpb24gMTQyODc2KQorKysg
TGF5b3V0VGVzdHMvY3NzMi4xLzIwMTEwMzIzL3N1cHBvcnQvYXQtaW1wb3J0LTAwNy5jc3MJKHdv
cmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi1kaXYNCi17DQotICAgIGNvbG9yOiBncmVlbjsN
CitkaXYKK3sKKyAgICBjb2xvcjogZ3JlZW47CiB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkocmV2aXNpb24gMTQzNjg0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTMtMDItMjEgIEphc29uIEFuZGVyc3Nl
biAgPGphbmRlcnNzZW5AZXhhY3RhbC5jb20+CisKKyAgICAgICAgTW92ZSBzZXRBdXRvZmlsbGVk
IGZyb20gVGVzdFJ1bm5lciB0byBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA1MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGNvbXBvc2l0aW5nL3JlcGFpbnQvc2hyaW5rLWxheWVyLmh0
bWw6CisgICAgICAgICogY3NzMi4xLzIwMTEwMzIzL3N1cHBvcnQvYXQtaW1wb3J0LTAwMS5jc3M6
CisgICAgICAgIChkaXYpOgorICAgICAgICAqIGNzczIuMS8yMDExMDMyMy9zdXBwb3J0L2F0LWlt
cG9ydC0wMDIuY3NzOgorICAgICAgICAoZGl2KToKKyAgICAgICAgKiBjc3MyLjEvMjAxMTAzMjMv
c3VwcG9ydC9hdC1pbXBvcnQtMDA0LmNzczoKKyAgICAgICAgKGRpdik6CisgICAgICAgICogY3Nz
Mi4xLzIwMTEwMzIzL3N1cHBvcnQvYXQtaW1wb3J0LTAwNS5jc3M6CisgICAgICAgIChkaXYpOgor
ICAgICAgICAqIGNzczIuMS8yMDExMDMyMy9zdXBwb3J0L2F0LWltcG9ydC0wMDYuY3NzOgorICAg
ICAgICAoZGl2KToKKyAgICAgICAgKiBjc3MyLjEvMjAxMTAzMjMvc3VwcG9ydC9hdC1pbXBvcnQt
MDA3LmNzczoKKyAgICAgICAgKGRpdik6CisgICAgICAgICogY3NzMi4xLzIwMTEwMzIzL3N1cHBv
cnQvZW9mLWdyZWVuLmNzczoKKyAgICAgICAgKGRpdik6CisgICAgICAgICogZmFzdC9mb3Jtcy9p
bnB1dC1hdXRvZmlsbGVkLmh0bWw6CisgICAgICAgICogZmFzdC9mb3Jtcy9yZXNldC1hdXRvZmls
bGVkLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3N0b3JhZ2UtcGFuZWwtZG9tLXN0b3JhZ2Ut
dXBkYXRlLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnM6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fYmxvY2tlZC5odG1sOgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXJlYWQtb25seS5odG1sOgorCiAy
MDEzLTAyLTIxICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgdGVzdGluZyBzdGF0ZXMgY2hhbmdpbmcgYXN5bmNocm9ub3Vz
bHkuIEFwcGx5IGl0IHRvIHN0YXRlLXVybC1zZXRzLWxpbmtzLXZpc2l0ZWQuaHRtbC4KSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAxNDI4
NzYpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwkod29ya2lu
ZyBjb3B5KQpAQCAtNTA0LDEwICs1MDQsNiBAQAogc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3Rv
cmFnZS9zdG9yYWdldHJhY2tlci9zdG9yYWdlLXRyYWNrZXItNi1jcmVhdGUuaHRtbAogc3RvcmFn
ZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zdG9yYWdldHJhY2tlci9zdG9yYWdlLXRyYWNrZXIt
Ny11c2FnZS5odG1sCiAKLSMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBsYXlvdXRUZXN0Q29udHJv
bGxlci5zZXRBdXRvZmlsbGVkCi1mYXN0L2Zvcm1zL2lucHV0LWF1dG9maWxsZWQuaHRtbAotZmFz
dC9mb3Jtcy9yZXNldC1hdXRvZmlsbGVkLmh0bWwKLQogIyBXZWJLaXRUZXN0UnVubmVyIG5lZWRz
IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygpCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04Njg4MQogZWRpdGluZy9zZWxlY3Rpb24vY29udGV4dC1tZW51LXRleHQt
c2VsZWN0aW9uLmh0bWwKSW5kZXg6IExheW91dFRlc3RzL2luc3BlY3Rvci9zdG9yYWdlLXBhbmVs
LWRvbS1zdG9yYWdlLXVwZGF0ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2luc3Bl
Y3Rvci9zdG9yYWdlLXBhbmVsLWRvbS1zdG9yYWdlLXVwZGF0ZS5odG1sCShyZXZpc2lvbiAxNDI4
NzYpCisrKyBMYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3RvcmFnZS1wYW5lbC1kb20tc3RvcmFnZS11
cGRhdGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNTAgKzEsMTUwIEBACi08aHRtbD4NCi08
aGVhZD4NCi08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRl
c3QuanMiPjwvc2NyaXB0Pg0KLTxzY3JpcHQ+DQotDQotZnVuY3Rpb24gYWRkSXRlbShrZXksdmFs
dWUpDQotew0KLSAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksdmFsdWUpOw0KLX0NCi0NCi1m
dW5jdGlvbiByZW1vdmVJdGVtKGtleSkNCi17DQotICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVt
KGtleSk7DQotfQ0KLQ0KLWZ1bmN0aW9uIGNsZWFyKCkNCi17DQotICAgIGxvY2FsU3RvcmFnZS5j
bGVhcigpOw0KLX0NCi0NCi1mdW5jdGlvbiB0ZXN0KCkNCi17DQotICAgIHZhciBzdG9yYWdlID0g
bnVsbDsNCi0gICAgdmFyIHJvb3ROb2RlID0gbnVsbDsNCi0gICAgdmFyIGNvdW50ID0gMTsNCi0N
Ci0gICAgLy8gUmVzb3VyY2VzIHBhbmVsIG11c3QgYmUgdmlzaWJsZQ0KLSAgICBXZWJJbnNwZWN0
b3Iuc2hvd1BhbmVsKCJyZXNvdXJjZXMiKTsNCi0NCi0gICAgZnVuY3Rpb24gZHVtcERhdGFHcmlk
KCkNCi0gICAgew0KLSAgICAgICAgdmFyIG5vZGVzID0gcm9vdE5vZGUuY2hpbGRyZW47DQotICAg
ICAgICB2YXIgcm93cyA9IFtdOw0KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5s
ZW5ndGg7ICsraSkgew0KLSAgICAgICAgICAgIHZhciBub2RlID0gbm9kZXNbaV07DQotICAgICAg
ICAgICAgaWYgKG5vZGUuX2RhdGEua2V5Lmxlbmd0aCkNCi0gICAgICAgICAgICAgICAgcm93cy5w
dXNoKG5vZGUuX2RhdGEua2V5ICsgbm9kZS5fZGF0YS52YWx1ZSk7DQotICAgICAgICB9DQotICAg
ICAgICByb3dzLnNvcnQoKTsNCi0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJLZXlW
YWx1ZSBwYWlyczogWyIgKyByb3dzLmpvaW4oKSArICJdIik7DQotICAgIH0NCi0NCi0gICAgSW5z
cGVjdG9yVGVzdC5ydW5UZXN0U3VpdGUoWw0KLSAgICAgICAgZnVuY3Rpb24gaW5pdGlhbGl6ZShu
ZXh0KQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIGZ1bmN0aW9uIGluaXRpYWxpemVkKHJlc3Vs
dCkNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCJJbml0aWFsaXplZCBsb2NhbFN0b3JhZ2UgYnkgY2xlYXJpbmcgZW50cmllcyIpOw0KLSAg
ICAgICAgICAgICAgICBuZXh0KCk7DQotICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImNsZWFyKCkiLCBpbml0aWFsaXplZCApOw0KLSAgICAg
ICAgfSwNCi0NCi0gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUxvY2FsU3RvcmFnZVZpZXcobmV4dCkN
Ci0gICAgICAgIHsNCi0gICAgICAgICAgICBmdW5jdGlvbiBsb2NhbFN0b3JhZ2VWaWV3VXBkYXRl
ZCgpDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICByb290Tm9kZSA9IFdlYkluc3Bl
Y3Rvci5wYW5lbHMucmVzb3VyY2VzLl9kb21TdG9yYWdlVmlld3MuZ2V0KHN0b3JhZ2UpLl9kYXRh
R3JpZC5yb290Tm9kZSgpOw0KLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgiUmVzb3VyY2UgUGFuZWwgd2l0aCBsb2NhbFN0b3JhZ2UgdmlldyB1cGRhdGVkIik7DQotICAg
ICAgICAgICAgICAgIG5leHQoKTsNCi0gICAgICAgICAgICB9DQotICAgICAgICAgICAgdmFyIHN0
b3JhZ2VzID0gV2ViSW5zcGVjdG9yLmRvbVN0b3JhZ2VNb2RlbC5zdG9yYWdlcygpOw0KLSAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RvcmFnZXMubGVuZ3RoOyArK2kpIHsNCi0gICAg
ICAgICAgICAgICAgc3RvcmFnZSA9IHN0b3JhZ2VzW2ldOw0KLSAgICAgICAgICAgICAgICBpZiAo
c3RvcmFnZS5pc0xvY2FsU3RvcmFnZSkgew0KLSAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLnBhbmVscy5yZXNvdXJjZXMuX3Nob3dET01TdG9yYWdlKHN0b3JhZ2UpOw0KLSAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKGxvY2Fs
U3RvcmFnZVZpZXdVcGRhdGVkKTsNCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KLSAgICAg
ICAgICAgICAgICB9DQotICAgICAgICAgICAgfQ0KLSAgICAgICAgfSwNCi0NCi0gICAgICAgIGZ1
bmN0aW9uIGFkZEl0ZW1UZXN0KG5leHQpDQotICAgICAgICB7DQotICAgICAgICAgICAgZnVuY3Rp
b24gdmlld1VwZGF0ZWRBZnRlckFkZGl0aW9uKCkNCi0gICAgICAgICAgICB7DQotICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhmdW5jdGlvbigp
DQotICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAgIHJvb3ROb2RlID0gV2Vi
SW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMuX2RvbVN0b3JhZ2VWaWV3cy5nZXQoc3RvcmFnZSku
X2RhdGFHcmlkLnJvb3ROb2RlKCk7DQotICAgICAgICAgICAgICAgICAgICBkdW1wRGF0YUdyaWQo
KTsNCi0gICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCA8IDYpDQotICAgICAgICAgICAgICAg
ICAgICAgICAgYWRkSXRlbVRlc3QobmV4dCk7DQotICAgICAgICAgICAgICAgICAgICBlbHNlDQot
ICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCgpOw0KLSAgICAgICAgICAgICAgICB9KTsNCi0g
ICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgZnVuY3Rpb24gaXRlbUFkZGVkKHJlc3VsdCkN
Ci0gICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgIHZpZXdVcGRhdGVkQWZ0ZXJBZGRpdGlv
bigpOw0KLSAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiYWRkSXRlbSgnYSIrY291bnQrIicsJz12YWx1ZSIrY291bnQrIicpIik7DQotICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiYWRkSXRlbSgnYSIrY291bnQrIics
Jz12YWx1ZSIrY291bnQrIicpIiwgaXRlbUFkZGVkICk7DQotICAgICAgICAgICAgY291bnQrKzsN
Ci0gICAgICAgIH0sDQotDQotICAgICAgICBmdW5jdGlvbiByZW1vdmVJdGVtVGVzdChuZXh0KQ0K
LSAgICAgICAgew0KLSAgICAgICAgICAgIGZ1bmN0aW9uIHZpZXdVcGRhdGVkQWZ0ZXJSZW1vdmFs
KCkNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucnVuQWZ0
ZXJQZW5kaW5nRGlzcGF0Y2hlcyhmdW5jdGlvbigpIHsNCi0gICAgICAgICAgICAgICAgICAgIHJv
b3ROb2RlID0gV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMuX2RvbVN0b3JhZ2VWaWV3cy5n
ZXQoc3RvcmFnZSkuX2RhdGFHcmlkLnJvb3ROb2RlKCk7DQotICAgICAgICAgICAgICAgICAgICBk
dW1wRGF0YUdyaWQoKTsNCi0gICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCA+IDQpDQotICAg
ICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlSXRlbVRlc3QobmV4dCk7DQotICAgICAgICAgICAg
ICAgICAgICBlbHNlDQotICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCgpOw0KLSAgICAgICAg
ICAgICAgICB9KTsNCi0gICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgZnVuY3Rpb24gaXRl
bVJlbW92ZWQocmVzdWx0KQ0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgc2V0VGlt
ZW91dCh2aWV3VXBkYXRlZEFmdGVyUmVtb3ZhbCwgMCApOw0KLSAgICAgICAgICAgIH0NCi0NCi0g
ICAgICAgICAgICAtLWNvdW50Ow0KLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJyZW1vdmVJdGVtKCdhIitjb3VudCsiJykiKTsNCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV2YWx1YXRlSW5QYWdlKCJyZW1vdmVJdGVtKCdhIitjb3VudCsiJykiLCBpdGVtUmVtb3ZlZCAp
Ow0KLSAgICAgICAgfSwNCi0NCi0gICAgICAgIGZ1bmN0aW9uIGNsZWFyVGVzdChuZXh0KQ0KLSAg
ICAgICAgew0KLSAgICAgICAgICAgIGZ1bmN0aW9uIHZpZXdVcGRhdGVkQWZ0ZXJDbGVhcigpDQot
ICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1bkFmdGVyUGVu
ZGluZ0Rpc3BhdGNoZXMoZnVuY3Rpb24oKSB7DQotICAgICAgICAgICAgICAgICAgICByb290Tm9k
ZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLl9kb21TdG9yYWdlVmlld3MuZ2V0KHN0
b3JhZ2UpLl9kYXRhR3JpZC5yb290Tm9kZSgpOw0KLSAgICAgICAgICAgICAgICAgICAgZHVtcERh
dGFHcmlkKCk7DQotICAgICAgICAgICAgICAgICAgICBuZXh0KCk7DQotICAgICAgICAgICAgICAg
IH0pOw0KLSAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICBmdW5jdGlvbiBjbGVhcmVkKHJl
c3VsdCkNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgIHNldFRpbWVvdXQodmlld1Vw
ZGF0ZWRBZnRlckNsZWFyLCAwICk7DQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCJjbGVhcigpIik7DQotICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5ldmFsdWF0ZUluUGFnZSgiY2xlYXIoKSIsIGNsZWFyZWQgKTsNCi0gICAgICAgIH0NCi0g
ICAgXSk7DQotfQ0KLTwvc2NyaXB0Pg0KLTwvaGVhZD4NCi0NCi08Ym9keSBvbmxvYWQ9InJ1blRl
c3QoKSI+DQotPHA+VGVzdCB0aGF0IHN0b3JhZ2UgcGFuZWwgaXMgcHJlc2VudCBhbmQgdGhhdCBp
dCBjb250YWlucyBjb3JyZWN0IGRhdGEgd2hlbmV2ZXIgbG9jYWxTdG9yYWdlIGlzIHVwZGF0ZWQu
PC9wPg0KLTwvYm9keT4NCi08L2h0bWw+DQotDQorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0PgorCitmdW5jdGlvbiBhZGRJdGVtKGtleSx2YWx1ZSkKK3sKKyAgICBsb2NhbFN0b3Jh
Z2Uuc2V0SXRlbShrZXksdmFsdWUpOworfQorCitmdW5jdGlvbiByZW1vdmVJdGVtKGtleSkKK3sK
KyAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpOworfQorCitmdW5jdGlvbiBjbGVhcigp
Cit7CisgICAgbG9jYWxTdG9yYWdlLmNsZWFyKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIHZhciBzdG9yYWdlID0gbnVsbDsKKyAgICB2YXIgcm9vdE5vZGUgPSBudWxsOworICAgIHZh
ciBjb3VudCA9IDE7CisKKyAgICAvLyBSZXNvdXJjZXMgcGFuZWwgbXVzdCBiZSB2aXNpYmxlCisg
ICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgicmVzb3VyY2VzIik7CisKKyAgICBmdW5jdGlvbiBk
dW1wRGF0YUdyaWQoKQorICAgIHsKKyAgICAgICAgdmFyIG5vZGVzID0gcm9vdE5vZGUuY2hpbGRy
ZW47CisgICAgICAgIHZhciByb3dzID0gW107CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
bm9kZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBub2RlID0gbm9kZXNbaV07Cisg
ICAgICAgICAgICBpZiAobm9kZS5fZGF0YS5rZXkubGVuZ3RoKQorICAgICAgICAgICAgICAgIHJv
d3MucHVzaChub2RlLl9kYXRhLmtleSArIG5vZGUuX2RhdGEudmFsdWUpOworICAgICAgICB9Cisg
ICAgICAgIHJvd3Muc29ydCgpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiS2V5
VmFsdWUgcGFpcnM6IFsiICsgcm93cy5qb2luKCkgKyAiXSIpOworICAgIH0KKworICAgIEluc3Bl
Y3RvclRlc3QucnVuVGVzdFN1aXRlKFsKKyAgICAgICAgZnVuY3Rpb24gaW5pdGlhbGl6ZShuZXh0
KQorICAgICAgICB7CisgICAgICAgICAgICBmdW5jdGlvbiBpbml0aWFsaXplZChyZXN1bHQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIklu
aXRpYWxpemVkIGxvY2FsU3RvcmFnZSBieSBjbGVhcmluZyBlbnRyaWVzIik7CisgICAgICAgICAg
ICAgICAgbmV4dCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
dmFsdWF0ZUluUGFnZSgiY2xlYXIoKSIsIGluaXRpYWxpemVkICk7CisgICAgICAgIH0sCisKKyAg
ICAgICAgZnVuY3Rpb24gdXBkYXRlTG9jYWxTdG9yYWdlVmlldyhuZXh0KQorICAgICAgICB7Cisg
ICAgICAgICAgICBmdW5jdGlvbiBsb2NhbFN0b3JhZ2VWaWV3VXBkYXRlZCgpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgcm9vdE5vZGUgPSBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291
cmNlcy5fZG9tU3RvcmFnZVZpZXdzLmdldChzdG9yYWdlKS5fZGF0YUdyaWQucm9vdE5vZGUoKTsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUmVzb3VyY2UgUGFuZWwg
d2l0aCBsb2NhbFN0b3JhZ2UgdmlldyB1cGRhdGVkIik7CisgICAgICAgICAgICAgICAgbmV4dCgp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFyIHN0b3JhZ2VzID0gV2ViSW5zcGVjdG9y
LmRvbVN0b3JhZ2VNb2RlbC5zdG9yYWdlcygpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBzdG9yYWdlcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIHN0b3JhZ2UgPSBz
dG9yYWdlc1tpXTsKKyAgICAgICAgICAgICAgICBpZiAoc3RvcmFnZS5pc0xvY2FsU3RvcmFnZSkg
eworICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy5fc2hv
d0RPTVN0b3JhZ2Uoc3RvcmFnZSk7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
cnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhsb2NhbFN0b3JhZ2VWaWV3VXBkYXRlZCk7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiBhZGRJdGVtVGVzdChuZXh0KQorICAgICAg
ICB7CisgICAgICAgICAgICBmdW5jdGlvbiB2aWV3VXBkYXRlZEFmdGVyQWRkaXRpb24oKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5n
RGlzcGF0Y2hlcyhmdW5jdGlvbigpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICByb290Tm9kZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLl9kb21TdG9yYWdl
Vmlld3MuZ2V0KHN0b3JhZ2UpLl9kYXRhR3JpZC5yb290Tm9kZSgpOworICAgICAgICAgICAgICAg
ICAgICBkdW1wRGF0YUdyaWQoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50IDwgNikK
KyAgICAgICAgICAgICAgICAgICAgICAgIGFkZEl0ZW1UZXN0KG5leHQpOworICAgICAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGl0ZW1BZGRl
ZChyZXN1bHQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmlld1VwZGF0ZWRBZnRl
ckFkZGl0aW9uKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCJhZGRJdGVtKCdhIitjb3VudCsiJywnPXZhbHVlIitjb3VudCsiJykiKTsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImFkZEl0ZW0oJ2EiK2NvdW50
KyInLCc9dmFsdWUiK2NvdW50KyInKSIsIGl0ZW1BZGRlZCApOworICAgICAgICAgICAgY291bnQr
KzsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiByZW1vdmVJdGVtVGVzdChuZXh0KQor
ICAgICAgICB7CisgICAgICAgICAgICBmdW5jdGlvbiB2aWV3VXBkYXRlZEFmdGVyUmVtb3ZhbCgp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ydW5BZnRlclBl
bmRpbmdEaXNwYXRjaGVzKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICByb290Tm9k
ZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLl9kb21TdG9yYWdlVmlld3MuZ2V0KHN0
b3JhZ2UpLl9kYXRhR3JpZC5yb290Tm9kZSgpOworICAgICAgICAgICAgICAgICAgICBkdW1wRGF0
YUdyaWQoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50ID4gNCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJlbW92ZUl0ZW1UZXN0KG5leHQpOworICAgICAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGl0ZW1SZW1vdmVkKHJlc3Vs
dCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHZpZXdVcGRhdGVk
QWZ0ZXJSZW1vdmFsLCAwICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC0tY291bnQ7
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVtb3ZlSXRlbSgnYSIrY291
bnQrIicpIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJyZW1v
dmVJdGVtKCdhIitjb3VudCsiJykiLCBpdGVtUmVtb3ZlZCApOworICAgICAgICB9LAorCisgICAg
ICAgIGZ1bmN0aW9uIGNsZWFyVGVzdChuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBmdW5j
dGlvbiB2aWV3VXBkYXRlZEFmdGVyQ2xlYXIoKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICAgICAgcm9vdE5vZGUgPSBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291
cmNlcy5fZG9tU3RvcmFnZVZpZXdzLmdldChzdG9yYWdlKS5fZGF0YUdyaWQucm9vdE5vZGUoKTsK
KyAgICAgICAgICAgICAgICAgICAgZHVtcERhdGFHcmlkKCk7CisgICAgICAgICAgICAgICAgICAg
IG5leHQoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgZnVuY3Rpb24gY2xlYXJlZChyZXN1bHQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgc2V0VGltZW91dCh2aWV3VXBkYXRlZEFmdGVyQ2xlYXIsIDAgKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImNsZWFyKCkiKTsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImNsZWFyKCkiLCBjbGVhcmVkICk7
CisgICAgICAgIH0KKyAgICBdKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxv
YWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHRoYXQgc3RvcmFnZSBwYW5lbCBpcyBwcmVzZW50IGFu
ZCB0aGF0IGl0IGNvbnRhaW5zIGNvcnJlY3QgZGF0YSB3aGVuZXZlciBsb2NhbFN0b3JhZ2UgaXMg
dXBkYXRlZC48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2NvbXBv
c2l0aW5nL3JlcGFpbnQvc2hyaW5rLWxheWVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvcmVwYWludC9zaHJpbmstbGF5ZXIuaHRtbAkocmV2aXNpb24gMTQyODc2
KQorKysgTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWludC9zaHJpbmstbGF5ZXIuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMSwyNSArMSwyNSBAQAotPGh0bWw+DQotPGhlYWQ+DQotICAgIDx0
aXRsZT5UZXN0IGZvciBidWcgNjIyNDM8L3RpdGxlPg0KLSAgICA8c3R5bGUgdHlwZT0idGV4dC9j
c3MiPg0KLSAgICAgICAgI3J1bGVyIHsNCi0gICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTog
dHJhbnNsYXRlWigwKTsNCi0gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxMHB4IHNvbGlkIGJs
YWNrOw0KLSAgICAgICAgICAgIHdpZHRoOiA1NTBweDsNCi0gICAgICAgICAgICBoZWlnaHQ6IDUw
MHB4Ow0KLSAgICAgICAgfQ0KLSAgICA8L3N0eWxlPg0KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9yZXBhaW50L3Jlc291cmNlcy9yZXBhaW50LmpzIj48L3NjcmlwdD4NCi0gICAgPHNjcmlw
dD4NCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikNCi0gICAgICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQodHJ1ZSk7DQotICAgICAgICBmdW5jdGlvbiByZXBhaW50VGVzdCgpDQot
ICAgICAgICB7DQotICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJ1bGVyIiku
c3R5bGUuaGVpZ2h0ID0gIjQ1MHB4IjsNCi0gICAgICAgIH0NCi0gICAgPC9zY3JpcHQ+DQotPC9o
ZWFkPg0KLTxib2R5IG9ubG9hZD0icnVuUmVwYWludFRlc3QoKSI+DQotICAgIDxkaXYgaWQ9InJ1
bGVyIj4NCi08L2JvZHk+DQotPC9odG1sPg0KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPlRl
c3QgZm9yIGJ1ZyA2MjI0MzwvdGl0bGU+CisgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAg
ICAgICAgI3J1bGVyIHsKKyAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVa
KDApOworICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMTBweCBzb2xpZCBibGFjazsKKyAgICAg
ICAgICAgIHdpZHRoOiA1NTBweDsKKyAgICAgICAgICAgIGhlaWdodDogNTAwcHg7CisgICAgICAg
IH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L3JlcGFpbnQvcmVz
b3VyY2VzL3JlcGFpbnQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVl
KTsKKyAgICAgICAgZnVuY3Rpb24gcmVwYWludFRlc3QoKQorICAgICAgICB7CisgICAgICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicnVsZXIiKS5zdHlsZS5oZWlnaHQgPSAiNDUwcHgi
OworICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blJl
cGFpbnRUZXN0KCkiPgorICAgIDxkaXYgaWQ9InJ1bGVyIj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189878</attachid>
            <date>2013-02-22 17:55:21 -0800</date>
            <delta_ts>2013-02-22 18:45:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110521-20130223115142.patch</filename>
            <type>text/plain</type>
            <size>27747</size>
            <attacher name="Jason Anderssen">janderssen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNjg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVhZTVjYzVlODk4Njhj
N2Q4ZTJlNDI3MmZhMWJjMzg0MTdmYWMxMS4uY2QxZTljYTJjYWM2MjU5NWY3MzlhNWMwNDVlYmM0
YzJkMDg4YWIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTAyLTIyICBKYXNv
biBBbmRlcnNzZW4gIDxqYW5kZXJzc2VuQGdtYWlsLmNvbT4KKworICAgICAgICBNb3ZlIHNldEF1
dG9maWxsZWQgZnJvbSBUZXN0UnVubmVyIHRvIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDUyMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldEF1dG9maWxsZWQpOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmg6CisgICAgICAgIChJbnRlcm5hbHMpOgorICAgICAgICAqIHRlc3RpbmcvSW50
ZXJuYWxzLmlkbDoKKwogMjAxMy0wMi0yMSAgVG9ueSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIEludmFsaWRhdGUgb3V0c3RhbmRpbmcgY2hlY2twb2ludHMgZm9y
IHRoZSBiYWNrZ3JvdW5kIGlucHV0IHN0cmVhbSBhbmQgcHJlbG9hZCBzY2FubmVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cKaW5kZXggMTlkN2RmOWY3NDI1NjQzNjg1YWU3NzVlNWEwNzZkZTM0MmRjZDkyNS4uNjEx
MGI2ZDk2ZWQ2ZDExZGExYzA3YTBkNWM4NjIzNmUwNzk1NmY4OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDEzLTAyLTIyICBKYXNvbiBBbmRlcnNzZW4gIDxqYW5kZXJzc2Vu
QGdtYWlsLmNvbT4KKworICAgICAgICBNb3ZlIHNldEF1dG9maWxsZWQgZnJvbSBUZXN0UnVubmVy
IHRvIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExMDUyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoKKwogMjAxMy0w
Mi0xOSAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENvbnZlcnQg
MyBzZXR0aW5ncyB0byB1c2UgU2V0dGluZ3MuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBmN2VhNGUy
MDU4OTlkOTVlY2M5OGJhNmM1ZDJhMzRhZDg4OGFlYjlhLi42YWRmNjViMTIyMTY0MzA4ZGNkOTY3
MzdhNDFhMjVhMTVkYzMwMTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MTMtMDItMjIgIEphc29uIEFuZGVyc3NlbiAgPGphbmRlcnNzZW5AZ21haWwuY29tPgorCisgICAg
ICAgIE1vdmUgc2V0QXV0b2ZpbGxlZCBmcm9tIFRlc3RSdW5uZXIgdG8gV2ViQ29yZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNTIxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrKToKKwogMjAxMy0wMi0yMSAgR2VvcmdlIE1jQ29sbGlzdGVyICA8Z2VvcmdlLm1jY29s
bGlzdGVyQGdtYWlsLmNvbT4KIAogICAgICAgICBbR1RLXSBSZW1vdmUgc3VicmVzb3VyY2UgbGVh
a3MgZnJvbSBXZWJLaXQxIGFuZCBXZWJLaXQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGE4NDJhMjBmYjI4
YWQ5NWIxNGU3ODZiMWI1ODJmYzU2N2E5MmM5ZmEuLmQzMGJlM2ZlZmU3YzY3NWQwYjE5MDQzYzRm
YjY2MTE5YzMzNzAzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDIt
MjIgIEphc29uIEFuZGVyc3NlbiAgPGphbmRlcnNzZW5AZ21haWwuY29tPgorCisgICAgICAgIE1v
dmUgc2V0QXV0b2ZpbGxlZCBmcm9tIFRlc3RSdW5uZXIgdG8gV2ViQ29yZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNTIxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQuaDoKKwogMjAxMy0wMi0yMSAgQWxsYW4gU2FuZGZlbGQgSmVuc2Vu
ICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KIAogICAgICAgICBbUXRdIFJlcGxhY2UgUVdlYlBh
Z2VBZGFwdG9yOjpUb3VjaEFkanVzdGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
aW5kZXggMzgzNDQxMDkxNjMwMTI5MzdjOWY1NTVjMGU1NzI4NDkzOGYzZmZhNy4uOGQzYTY0ZWE0
NzAxNmE0OWI1ZmY2Y2E3OWE1ZjY4MWM4MmVlMGE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcApAQCAtODE2LDYgKzgxNiwyMCBAQCBWZWN0b3I8U3RyaW5nPiBJbnRlcm5hbHM6
OmZvcm1Db250cm9sU3RhdGVPZlByZXZpb3VzSGlzdG9yeUl0ZW0oRXhjZXB0aW9uQ29kZSYgZQog
ICAgIH0KICAgICByZXR1cm4gbWFpbkl0ZW0tPnRhcmdldCgpID09IHVuaXF1ZU5hbWUgPyBtYWlu
SXRlbS0+ZG9jdW1lbnRTdGF0ZSgpIDogbWFpbkl0ZW0tPmNoaWxkSXRlbVdpdGhUYXJnZXQodW5p
cXVlTmFtZSktPmRvY3VtZW50U3RhdGUoKTsKIH0KKyAgICAKK3ZvaWQgSW50ZXJuYWxzOjpzZXRB
dXRvZmlsbGVkKEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCit7CisgICAgaWYgKCFlbGVtZW50LT5oYXNUYWdOYW1lKGlucHV0VGFnKSkgeworICAgICAg
ICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBI
VE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBlbGVtZW50LT50b0lucHV0RWxlbWVudCgp
OworICAgIGlmICghaW5wdXRFbGVtZW50KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1Nf
RVJSOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlucHV0RWxlbWVudC0+c2V0QXV0b2Zp
bGxlZChlbmFibGVkKTsKK30KIAogdm9pZCBJbnRlcm5hbHM6OnNldEZvcm1Db250cm9sU3RhdGVP
ZlByZXZpb3VzSGlzdG9yeUl0ZW0oY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0YXRlLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDNjYWRhMTlj
MzNiYzY4YTMxODk4MTk0ZDI4ZmM4YTkzNTg5OTg3NzkuLjVlNTczYTdjZWFiODc3NmE4NThjN2U5
YTdiZWZkZGY4YzAwYWJhZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMjA4
LDYgKzIwOCw4IEBAIHB1YmxpYzoKICAgICBJbnRlcm5hbFNldHRpbmdzKiBzZXR0aW5ncygpIGNv
bnN0OwogICAgIHVuc2lnbmVkIHdvcmtlclRocmVhZENvdW50KCkgY29uc3Q7CiAKKyAgICB2b2lk
IHNldEF1dG9maWxsZWQoRWxlbWVudCosIGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOwor
CiAgICAgdm9pZCBzZXRCYXR0ZXJ5U3RhdHVzKERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiBldmVu
dFR5cGUsIGJvb2wgY2hhcmdpbmcsIGRvdWJsZSBjaGFyZ2luZ1RpbWUsIGRvdWJsZSBkaXNjaGFy
Z2luZ1RpbWUsIGRvdWJsZSBsZXZlbCwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdm9pZCBzZXRO
ZXR3b3JrSW5mb3JtYXRpb24oRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmIGV2ZW50VHlwZSwgZG91
YmxlIGJhbmR3aWR0aCwgYm9vbCBtZXRlcmVkLCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggODVlZmQ5NDViZDk1Nzc3OWFlY2Y0MmQxMzk5MGMw
NDg0MjE4Mzk3NC4uMDVmNmFiMDZjMGY0NGZlNTZiYzM4ZDYwOWVlN2NhZmEzMDY0YmY5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtMjUzLDQgKzI1Myw2IEBACiAgICAg
W0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMl0gdm9pZCBpbml0aWFsaXplTW9ja0NETSgp
OwogICAgIAogICAgIFtDb25kaXRpb25hbD1TUEVFQ0hfU1lOVEhFU0lTXSB2b2lkIGVuYWJsZU1v
Y2tTcGVlY2hTeW50aGVzaXplcigpOworCisgICAgdm9pZCBzZXRBdXRvZmlsbGVkKGluIEVsZW1l
bnQgc2NvcGUsIGluIGJvb2xlYW4gZW5hYmxlZCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKaW5kZXggOGJiNDg2ZGFkOWMzNzhmZDYzY2ViYTU1ZTQw
MmZhNjAzMDIzNjJkMS4uYjlkMTdlOGMxODQyZjMwMzFjZTk3YzBkYWM3ZmQ4MjVjMTcyMTc4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCkBAIC0yNDcsMTkgKzI0Nyw2IEBAIHZvaWQgRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRWYWx1ZUZvclVzZXIoSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTVmFsdWVSZWYKICAgICBpbnB1dEVsZW1lbnQtPnNldFZhbHVlRm9yVXNlcih2YWx1ZSk7
CiB9CiAKLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRBdXRvZmlsbGVkKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QsIGJvb2wgYXV0b2ZpbGxlZCkK
LXsKLSAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7Ci0gICAgV2ViQ29y
ZTo6RWxlbWVudCogZWxlbWVudCA9IFdlYkNvcmU6OnRvRWxlbWVudCh0b0pTKGV4ZWMsIG5vZGVP
YmplY3QpKTsKLSAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLSAgICBXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBlbGVtZW50LT50b0lucHV0RWxlbWVu
dCgpOwotICAgIGlmICghaW5wdXRFbGVtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpbnB1
dEVsZW1lbnQtPnNldEF1dG9maWxsZWQoYXV0b2ZpbGxlZCk7Ci19Ci0KIHZvaWQgRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsOjpzZXREZWZlcnNMb2FkaW5nKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBi
b29sIGRlZmVycykKIHsKICAgICBEUlRfU1VQUFJUX1BBR0VfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBwYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKaW5kZXggZTkyNTA1NzkyYmZhNWNlZTQ3MDQ3
OWI4ZjNjMGQyM2Y3MjRhYzQ4Ni4uYWVkM2M3NWQwMmY5ZmYzOTMxZTM3N2Q1OTRhMzgyOTExMmVi
YWJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKQEAgLTY4LDcgKzY4LDYgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBTdHJpbmcgc3VpdGFibGVEUlRGcmFtZU5hbWUoY29uc3QgRXZhc19PYmplY3Qq
IGV3a0ZyYW1lKTsKICAgICBzdGF0aWMgU3RyaW5nIGxheWVyVHJlZUFzVGV4dChjb25zdCBFdmFz
X09iamVjdCogZXdrRnJhbWUpOwogICAgIHN0YXRpYyB2b2lkIHNldFZhbHVlRm9yVXNlcihKU0Nv
bnRleHRSZWYsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0g
ICAgc3RhdGljIHZvaWQgc2V0QXV0b2ZpbGxlZChKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYgbm9k
ZU9iamVjdCwgYm9vbCBhdXRvZmlsbGVkKTsKICAgICBzdGF0aWMgdm9pZCBzZXREZWZlcnNMb2Fk
aW5nKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIGRlZmVycyk7CiAgICAgc3RhdGljIHZvaWQg
c2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1NldHRpbmcoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIGJvb2wgbG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1ByZWZlcmVu
Y2VzKTsKICAgICBzdGF0aWMgdm9pZCBzZXRNaW5pbXVtTG9naWNhbEZvbnRTaXplKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBpbnQgc2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwIGIvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAppbmRleCA3
MzVhMGU3NGZhMWJkMjk3Y2ZiM2I4Njg4MjJkYzU1MGI5MTg0ZGIzLi5lZWNjZDY3MjZhMGY2NmZh
YzI0ZTM5YzVlZTBlZGU4YTA2MGQ4Njk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKQEAg
LTU0OCwxOSArNTQ4LDYgQEAgQ1N0cmluZyBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmFjY2Vz
c2liaWxpdHlIZWxwVGV4dChBdGtPYmplY3QqIGF4T2JqZWN0KQogICAgIHJldHVybiBjb3JlT2Jq
ZWN0LT5oZWxwVGV4dCgpLnV0ZjgoKTsKIH0KIAotdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRH
dGs6OnNldEF1dG9maWxsZWQoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9i
amVjdCwgYm9vbCBhdXRvZmlsbGVkKQotewotICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdG9K
Uyhjb250ZXh0KTsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KHRvSlMoZXhlYywg
bm9kZU9iamVjdCkpOwotICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIEhU
TUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IGVsZW1lbnQtPnRvSW5wdXRFbGVtZW50KCk7
Ci0gICAgaWYgKCFpbnB1dEVsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlucHV0RWxl
bWVudC0+c2V0QXV0b2ZpbGxlZChhdXRvZmlsbGVkKTsKLX0KLQogdm9pZCBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRHdGs6OnNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1
ZVJlZiBub2RlT2JqZWN0LCBKU1N0cmluZ1JlZiB2YWx1ZSkKIHsKICAgICBKU0M6OkV4ZWNTdGF0
ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCmluZGV4IGEzNDlm
YThjY2VlZGE3NTJkODYyMGU3ZTZmYjBhZWYxZTNkYzE3YWUuLjQyYjg1Y2Q1ZmQ5ZmNiYzU4MjI0
ZjIxOTlkNjhhNjE0MTQ5YjMyMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCkBAIC02OCw3ICs2
OCw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQXRrT2JqZWN0KiBnZXRGb2N1c2VkQWNjZXNzaWJs
ZUVsZW1lbnQoV2ViS2l0V2ViRnJhbWUqKTsKICAgICBzdGF0aWMgQXRrT2JqZWN0KiBnZXRSb290
QWNjZXNzaWJsZUVsZW1lbnQoV2ViS2l0V2ViRnJhbWUqKTsKICAgICBzdGF0aWMgdm9pZCBsYXlv
dXRGcmFtZShXZWJLaXRXZWJGcmFtZSopOwotICAgIHN0YXRpYyB2b2lkIHNldEF1dG9maWxsZWQo
SlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmLCBib29sKTsKICAgICBzdGF0aWMgdm9pZCBzZXRWYWx1
ZUZvclVzZXIoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmLCBKU1N0cmluZ1JlZik7CiAgICAgc3Rh
dGljIGJvb2wgc2hvdWxkQ2xvc2UoV2ViS2l0V2ViRnJhbWUqKTsKICAgICBzdGF0aWMgYm9vbCBl
bGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQoV2ViS2l0V2ViRnJhbWUqLCBK
U1N0cmluZ1JlZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCmluZGV4IDA3NTI4YjAxZjk2Mzc4YzA0
NTBjOGU5YjFmOTQ1NzZhMGZmNjgzNTIuLjRlYzVkMmU5ZWI0YWY3N2Q3MTQyN2UyZmEwYjQ1NzFk
YzU3OWM5ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCkBAIC0yNjQsMTggKzI2NCw2IEBAIGJv
b2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6Omhhc0RvY3VtZW50RWxlbWVudChRV2ViRnJhbWVB
ZGFwdGVyICphZGFwdGVyKQogICAgIHJldHVybiBhZGFwdGVyLT5mcmFtZS0+ZG9jdW1lbnQoKS0+
ZG9jdW1lbnRFbGVtZW50KCk7CiB9CiAKLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNl
dEF1dG9maWxsZWQoY29uc3QgUVdlYkVsZW1lbnQmIGVsZW1lbnQsIGJvb2wgaXNBdXRvZmlsbGVk
KQotewotICAgIFdlYkNvcmU6OkVsZW1lbnQqIHdlYkVsZW1lbnQgPSBlbGVtZW50Lm1fZWxlbWVu
dDsKLSAgICBpZiAoIXdlYkVsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLSAgICBIVE1MSW5wdXRF
bGVtZW50KiBpbnB1dEVsZW1lbnQgPSB3ZWJFbGVtZW50LT50b0lucHV0RWxlbWVudCgpOwotICAg
IGlmICghaW5wdXRFbGVtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpbnB1dEVsZW1lbnQt
PnNldEF1dG9maWxsZWQoaXNBdXRvZmlsbGVkKTsKLX0KLQogdm9pZCBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDo6c2V0VmFsdWVGb3JVc2VyKGNvbnN0IFFXZWJFbGVtZW50JiBlbGVtZW50LCBjb25z
dCBRU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBXZWJDb3JlOjpFbGVtZW50KiB3ZWJFbGVtZW50ID0g
ZWxlbWVudC5tX2VsZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKaW5kZXggNDAxZDliNjI5ZjEwM2Fl
MDUyNjJiNGQ3ZmU1MGM1OTk2YWQzOTYxNy4uMDNiNDg4YjljY2FmMjUzYzk5MWQ4ZDAyZTBmNjQy
NDhlYjQzNGIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaApAQCAtMTA4LDcgKzEwOCw2IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyB2b2lkIGdhcmJhZ2VDb2xsZWN0b3JDb2xsZWN0KCk7CiAgICAgc3Rh
dGljIHZvaWQgZ2FyYmFnZUNvbGxlY3RvckNvbGxlY3RPbkFsdGVybmF0ZVRocmVhZChib29sIHdh
aXRVbnRpbERvbmUpOwotICAgIHN0YXRpYyB2b2lkIHNldEF1dG9maWxsZWQoY29uc3QgUVdlYkVs
ZW1lbnQmLCBib29sIGVuYWJsZWQpOwogICAgIHN0YXRpYyB2b2lkIHNldFZhbHVlRm9yVXNlcihj
b25zdCBRV2ViRWxlbWVudCYsIGNvbnN0IFFTdHJpbmcmIHZhbHVlKTsKICAgICBzdGF0aWMgaW50
IGphdmFTY3JpcHRPYmplY3RzQ291bnQoKTsKICAgICBzdGF0aWMgdm9pZCBjbGVhclNjcmlwdFdv
cmxkcygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDk2YTFhYzQzYzM0ZDQzOTMxMGZjYWNiNjIyOGJjYTJhYTFhOWFmZmQuLjU2OTEzZjYxOTM2
ZDc4NzIzMTVkNGE2MDUzNjJhOWU4MzBkNGU2MDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMy0wMi0yMiAgSmFz
b24gQW5kZXJzc2VuICA8amFuZGVyc3NlbkBnbWFpbC5jb20+CisKKyAgICAgICAgTW92ZSBzZXRB
dXRvZmlsbGVkIGZyb20gVGVzdFJ1bm5lciB0byBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA1MjEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIu
Y3BwOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmg6CisgICAgICAgIChUZXN0UnVubmVyKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1Rlc3RSdW5uZXJCbGFja0JlcnJ5LmNwcDoK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVu
bmVyLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OlRlc3RSdW5uZXIp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RS
dW5uZXIuaDoKKyAgICAgICAgKFRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2VmbC9UZXN0UnVubmVyRWZsLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvVGVz
dFJ1bm5lckd0ay5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJN
YWMubW06CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmNwcDoKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuaDoKKyAgICAgICAgKFRlc3RS
dW5uZXJRdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3Bw
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5jcHA6CisKIDIwMTMt
MDItMjEgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2No
cm9taXVtXSBzdXBwb3J0IHRoZSBsdWNpZCB2ZXJzaW9uIG9mIGZyZWV0eXBlIG9uIHByZWNpc2Ug
aW4gRFJUCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDZjOGY4ZmI5ZDE2ODg0
NzEzN2E0ZDBkNWZmYmY3N2I0YzdmNzM2MDkuLjcyZTZmZjE1ZDMwM2U0YWRhYTlhYjA4MTA2NTJm
YTg5YzMzMGYwYTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIu
Y3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCkBAIC05MzksMTcg
KzkzOSw2IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVk
Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpOwogfQogCi1zdGF0aWMgSlNWYWx1ZVJlZiBzZXRBdXRvZmlsbGVk
Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09i
amVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJl
ZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQotewotICAgIGlmIChhcmd1bWVu
dENvdW50ICE9IDIgfHwgIWFyZ3VtZW50c1swXSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpOwotCi0gICAgVGVzdFJ1bm5lciogY29udHJvbGxlciA9IHN0YXRp
Y19jYXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwotICAg
IGNvbnRyb2xsZXItPnNldEF1dG9maWxsZWQoY29udGV4dCwgYXJndW1lbnRzWzBdLCBKU1ZhbHVl
VG9Cb29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1sxXSkpOwotCi0gICAgcmV0dXJuIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGNvbnRleHQpOwotfQotCiBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRDYWNoZU1v
ZGVsQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBK
U09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1
ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBN
YWMgaW1wbGVtZW50YXRpb24uCkBAIC0yMTUzLDcgKzIxNDIsNiBAQCBKU1N0YXRpY0Z1bmN0aW9u
KiBUZXN0UnVubmVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJzZXRBdXRoZW50aWNh
dGlvblBhc3N3b3JkIiwgc2V0QXV0aGVudGljYXRpb25QYXNzd29yZENhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgICAgIHsgInNldEF1dGhlbnRpY2F0aW9uVXNlcm5hbWUiLCBzZXRBdXRoZW50aWNhdGlv
blVzZXJuYW1lQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0QXV0aG9yQW5kVXNlclN0
eWxlc0VuYWJsZWQiLCBzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZENhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCi0gICAgICAgIHsgInNldEF1dG9maWxsZWQiLCBzZXRBdXRvZmlsbGVkQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICAgICAgeyAic2V0Q2FjaGVNb2RlbCIsIHNldENhY2hlTW9kZWxDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAogICAgICAgICB7ICJzZXRDYWxsQ2xvc2VPbldlYlZpZXdzIiwgc2V0Q2FsbENsb3Nl
T25XZWJWaWV3c0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldENhbk9wZW5XaW5kb3dz
Iiwgc2V0Q2FuT3BlbldpbmRvd3NDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1
bm5lci5oCmluZGV4IDc5MjBlYzY0NDM2NzkzYWNkNjIyYTJhZjU5NDNlNWQ0ZTNkOWVhZTguLmRm
ODQwZTFjMjgzZDYzN2M2MjYyNTBjZDg1MDEyZTE4YTY4NjBjODggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9U
ZXN0UnVubmVyLmgKQEAgLTg2LDcgKzg2LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXBwQ2Fj
aGVNYXhpbXVtU2l6ZSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpOwogICAgIHZvaWQgc2V0QXBw
bGljYXRpb25DYWNoZU9yaWdpblF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyk7CiAgICAgdm9pZCBz
ZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChib29sKTsKLSAgICB2b2lkIHNldEF1dG9maWxs
ZWQoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QsIGJvb2wgYXV0b2ZpbGxlZCk7
CiAgICAgdm9pZCBzZXRDYWNoZU1vZGVsKGludCk7CiAgICAgdm9pZCBzZXRDdXN0b21Qb2xpY3lE
ZWxlZ2F0ZShib29sIHNldERlbGVnYXRlLCBib29sIHBlcm1pc3NpdmUpOwogICAgIHZvaWQgc2V0
RGF0YWJhc2VRdW90YSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1Rlc3RSdW5uZXJCbGFja0JlcnJ5LmNwcApp
bmRleCA0YWQzNmU2NjI3ZDczMWMxYjhlZTEyNzUyYzQyYTIzZjQ5MDI4ZjEyLi43YzA4YWFlNzQx
MzRkN2Y5MmUwNzA2ZTJlYmM3YzE2ZDg2YzRlNmRiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9ibGFja2JlcnJ5L1Rlc3RSdW5uZXJCbGFja0JlcnJ5LmNwcAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1Rlc3RSdW5uZXJCbGFja0JlcnJ5LmNwcApAQCAtNjE2
LDE5ICs2MTYsNiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tp
bmdFbmFibGVkKGJvb2wpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBUZXN0UnVu
bmVyOjpzZXRBdXRvZmlsbGVkKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vZGVP
YmplY3QsIGJvb2wgYXV0b2ZpbGxlZCkKLXsKLSAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHRv
SlMoY29udGV4dCk7Ci0gICAgV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCA9IHRvRWxlbWVudCh0
b0pTKGV4ZWMsIG5vZGVPYmplY3QpKTsKLSAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVy
bjsKLSAgICBXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBlbGVtZW50
LT50b0lucHV0RWxlbWVudCgpOwotICAgIGlmICghaW5wdXRFbGVtZW50KQotICAgICAgICByZXR1
cm47Ci0KLSAgICBpbnB1dEVsZW1lbnQtPnNldEF1dG9maWxsZWQoYXV0b2ZpbGxlZCk7Ci19Ci0K
IGludCBUZXN0UnVubmVyOjpudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0cygpCiB7CiAgICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydDo6bnVtYmVyT2ZQZW5k
aW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMoQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1w
UmVuZGVyVHJlZTo6Y3VycmVudEluc3RhbmNlKCktPnBhZ2UoKSk7CmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIu
Y3BwCmluZGV4IDJhYjlhMzA4OWMzYjEwYWI5MTAyODFkMTljNjNkNDIxY2MwNjljYTguLjE3MmE3
YWViNmI3ODAzZWE0ZjQxZTMwYWJhN2Y5N2U4NjU2YWQ3ODIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIu
Y3BwCkBAIC0xOTgsNyArMTk4LDYgQEAgVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcihUZXN0SW50ZXJm
YWNlcyogaW50ZXJmYWNlcykKICAgICBiaW5kTWV0aG9kKCJzdGFydFNwZWVjaElucHV0IiwgJlRl
c3RSdW5uZXI6OnN0YXJ0U3BlZWNoSW5wdXQpOwogICAgIGJpbmRNZXRob2QoIm1hcmtlclRleHRG
b3JMaXN0SXRlbSIsICZUZXN0UnVubmVyOjptYXJrZXJUZXh0Rm9yTGlzdEl0ZW0pOwogICAgIGJp
bmRNZXRob2QoImZpbmRTdHJpbmciLCAmVGVzdFJ1bm5lcjo6ZmluZFN0cmluZyk7Ci0gICAgYmlu
ZE1ldGhvZCgic2V0QXV0b2ZpbGxlZCIsICZUZXN0UnVubmVyOjpzZXRBdXRvZmlsbGVkKTsKICAg
ICBiaW5kTWV0aG9kKCJzZXRWYWx1ZUZvclVzZXIiLCAmVGVzdFJ1bm5lcjo6c2V0VmFsdWVGb3JV
c2VyKTsKICAgICBiaW5kTWV0aG9kKCJlbmFibGVGaXhlZExheW91dE1vZGUiLCAmVGVzdFJ1bm5l
cjo6ZW5hYmxlRml4ZWRMYXlvdXRNb2RlKTsKICAgICBiaW5kTWV0aG9kKCJzZXRGaXhlZExheW91
dFNpemUiLCAmVGVzdFJ1bm5lcjo6c2V0Rml4ZWRMYXlvdXRTaXplKTsKQEAgLTEzNzcsMjMgKzEz
NzYsNiBAQCB2b2lkIFRlc3RSdW5uZXI6OmZpbmRTdHJpbmcoY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdAogICAgIHJlc3VsdC0+c2V0KGZpbmRSZXN1
bHQpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldEF1dG9maWxsZWQoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKLXsKLSAgICByZXN1bHQtPnNl
dE51bGwoKTsKLSAgICBpZiAoYXJndW1lbnRzLnNpemUoKSAhPSAyIHx8ICFhcmd1bWVudHNbMV0u
aXNCb29sKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFdlYkVsZW1lbnQgZWxlbWVudDsKLSAg
ICBpZiAoIVdlYkJpbmRpbmdzOjpnZXRFbGVtZW50KGFyZ3VtZW50c1swXS52YWx1ZS5vYmplY3RW
YWx1ZSwgJmVsZW1lbnQpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBXZWJJbnB1dEVsZW1lbnQq
IGlucHV0ID0gdG9XZWJJbnB1dEVsZW1lbnQoJmVsZW1lbnQpOwotICAgIGlmICghaW5wdXQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlucHV0LT5zZXRBdXRvZmlsbGVkKGFyZ3VtZW50c1sxXS52
YWx1ZS5ib29sVmFsdWUpOwotfQotCiB2b2lkIFRlc3RSdW5uZXI6OnNldFZhbHVlRm9yVXNlcihj
b25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewog
ICAgIHJlc3VsdC0+c2V0TnVsbCgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oCmluZGV4IGMyZGM4NjY5MjI0
ZGJkZjFiYTkyNDVkNGIyYTc4OTllYmRmN2MyZGYuLjc0Y2M4MWVhZGU5OTNmNmY1NDgxMjJiMGQ2
YzQ3Y2M4MTc3M2IzMzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgKQEAgLTI0MSwxMCArMjQxLDYgQEAg
cHJpdmF0ZToKICAgICB2b2lkIG1hcmtlclRleHRGb3JMaXN0SXRlbShjb25zdCBDcHBBcmd1bWVu
dExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBmaW5kU3RyaW5nKGNvbnN0IENwcEFyZ3Vt
ZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAotICAgIC8vIEV4cGVjdHMgdGhlIGZpcnN0IGFyZ3Vt
ZW50IHRvIGJlIGFuIGlucHV0IGVsZW1lbnQgYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gYmUg
YSBib29sZWFuLgotICAgIC8vIEZvcndhcmRzIHRoZSBzZXRBdXRvZmlsbGVkKCkgY2FsbCB0byB0
aGUgZWxlbWVudC4KLSAgICB2b2lkIHNldEF1dG9maWxsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiwgQ3BwVmFyaWFudCopOwotCiAgICAgLy8gRXhwZWN0cyB0aGUgZmlyc3QgYXJndW1lbnQgdG8g
YmUgYW4gaW5wdXQgZWxlbWVudCBhbmQgdGhlIHNlY29uZCBhcmd1bWVudCB0byBiZSBhIHN0cmlu
ZyB2YWx1ZS4KICAgICAvLyBGb3J3YXJkcyB0aGUgc2V0VmFsdWVGb3JVc2VyKCkgY2FsbCB0byB0
aGUgZWxlbWVudC4KICAgICB2b2lkIHNldFZhbHVlRm9yVXNlcihjb25zdCBDcHBBcmd1bWVudExp
c3QmLCBDcHBWYXJpYW50Kik7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwv
VGVzdFJ1bm5lckVmbC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVm
bC5jcHAKaW5kZXggNDU2NDYxMDljY2ZlNmQ4YjhhNzcwYmVhYzE2NDYxNzA1ZjNiNjgwYi4uZjM5
NDNkYzVkZTg4ODVkOTJjZmQ0YWFhMjYxMGFiODFhMTdkMWE1ZCAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcApAQCAtMzM4LDExICszMzgsNiBAQCB2b2lkIFRl
c3RSdW5uZXI6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKGJvb2wgZmxhZykKICAgICBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKGJy
b3dzZXItPm1haW5WaWV3KCksIGZsYWcpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldEF1dG9m
aWxsZWQoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCwgYm9vbCBh
dXRvZmlsbGVkKQotewotICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0QXV0b2ZpbGxl
ZChjb250ZXh0LCBub2RlT2JqZWN0LCBhdXRvZmlsbGVkKTsKLX0KLQogdm9pZCBUZXN0UnVubmVy
OjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCwgZG91YmxlLCBib29sLCBkb3VibGUsIGJv
b2wsIGRvdWJsZSkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBEZXZpY2VPcmllbnRh
dGlvbiBsYXlvdXQgdGVzdHMuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsv
VGVzdFJ1bm5lckd0ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0
ay5jcHAKaW5kZXggNGM4ZTdiNDA5ZDA4NmU0MWRhNmQ4N2Y5MzAxNjE0NzEyOTM5YWJlOS4uOTk2
ZmI1ODJjYzA3OWNmNmRhMDkyZmYyNzFkMGUzYWY3MTkwYmYwYyAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2d0ay9UZXN0UnVubmVyR3RrLmNwcApAQCAtNDE0LDExICs0MTQsNiBAQCB2b2lkIFRl
c3RSdW5uZXI6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKGJvb2wgZmxhZykKICAgICAv
LyBGSVhNRTogaW1wbGVtZW50CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0QXV0b2ZpbGxlZChK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBib29sIGlzQXV0b2Zp
bGxlZCkKLXsKLSAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldEF1dG9maWxsZWQoY29u
dGV4dCwgbm9kZU9iamVjdCwgaXNBdXRvZmlsbGVkKTsKLX0KLQogdm9pZCBUZXN0UnVubmVyOjpz
ZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBo
YSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1h
LCBkb3VibGUgZ2FtbWEpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgRGV2aWNlT3Jp
ZW50YXRpb24gbGF5b3V0IHRlc3RzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL1Rlc3RSdW5uZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5l
ck1hYy5tbQppbmRleCBmYzNhZmE2NzY1MjBhYmQ0YWY0YmI1YzVmYzJjNWQ5NTQzNTRkZmUwLi4z
NmIzYzkyOWYxNDE1MGU3MmFjYzU2ZDQxZDQyZGRlZmZmNTc5NjRhIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQpAQCAtNDE5LDE1ICs0MTksNiBAQCB2b2lkIFRl
c3RSdW5uZXI6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKGJvb2wgZmxhZykKICAgICBb
W1ttYWluRnJhbWUgd2ViVmlld10gcHJlZmVyZW5jZXNdIHNldEF1dGhvckFuZFVzZXJTdHlsZXNF
bmFibGVkOmZsYWddOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldEF1dG9maWxsZWQoSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCwgYm9vbCBhdXRvZmlsbGVkKQot
ewotICAgIERPTUVsZW1lbnQgKmVsZW1lbnQgPSBbRE9NRWxlbWVudCBfRE9NRWxlbWVudEZyb21K
U0NvbnRleHQ6Y29udGV4dCB2YWx1ZTpub2RlT2JqZWN0XTsKLSAgICBpZiAoIWVsZW1lbnQgfHwg
IVtlbGVtZW50IGlzS2luZE9mQ2xhc3M6W0RPTUhUTUxJbnB1dEVsZW1lbnQgY2xhc3NdXSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgWyhET01IVE1MSW5wdXRFbGVtZW50ICopZWxlbWVudCBfc2V0
QXV0b2ZpbGxlZDphdXRvZmlsbGVkXTsKLX0KLQogdm9pZCBUZXN0UnVubmVyOjpzZXRDdXN0b21Q
b2xpY3lEZWxlZ2F0ZShib29sIHNldERlbGVnYXRlLCBib29sIHBlcm1pc3NpdmUpCiB7CiAgICAg
aWYgKHNldERlbGVnYXRlKSB7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9U
ZXN0UnVubmVyUXQuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmNw
cAppbmRleCAyZDdmM2JmMzQxZDYyOWIyYTgwYjdkOTgwMDYwY2NmMGJkYjc0NzcxLi4xNWFkMTI3
NjExZGJjZDllZjEyNDY0ZTVjMjBmMmRhOGI3ZTIxNDE1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L1Rlc3RSdW5uZXJRdC5jcHAKQEAgLTQ3NSwxMSArNDc1LDYgQEAgdm9pZCBUZXN0UnVubmVy
UXQ6OnNldEFwcENhY2hlTWF4aW11bVNpemUodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKQogICAg
IG1fZHJ0LT53ZWJQYWdlKCktPnNldHRpbmdzKCktPnNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNh
Y2hlUXVvdGEocXVvdGEpOwogfQogCi12b2lkIFRlc3RSdW5uZXJRdDo6c2V0QXV0b2ZpbGxlZChj
b25zdCBRV2ViRWxlbWVudCYgZWxlbWVudCwgYm9vbCBpc0F1dG9maWxsZWQpCi17Ci0gICAgcmV0
dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRBdXRvZmlsbGVkKGVsZW1lbnQsIGlzQXV0
b2ZpbGxlZCk7Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lclF0OjpzZXRWYWx1ZUZvclVzZXIoY29uc3Qg
UVdlYkVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFFTdHJpbmcmIHZhbHVlKQogewogICAgIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRWYWx1ZUZvclVzZXIoZWxlbWVudCwgdmFsdWUpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmggYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuaAppbmRleCBiYzJhZjlhMTQzMzEyZmZiNzI2
MDU4NWM0NTAzMjdmY2I1ZTEyOWZkLi42NTJhZDFjMTdiMDY0NTdkMTA1NDE3ZmUyZTQwNTRlNGI4
ZmE0MTdjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQu
aAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuaApAQCAtMTYyLDcg
KzE2Miw2IEBAIHB1YmxpYyBRX1NMT1RTOgogICAgIHZvaWQgc2V0QWxsb3dVbml2ZXJzYWxBY2Nl
c3NGcm9tRmlsZVVSTHMoYm9vbCBlbmFibGUpOwogICAgIHZvaWQgc2V0QWxsb3dGaWxlQWNjZXNz
RnJvbUZpbGVVUkxzKGJvb2wgZW5hYmxlKTsKICAgICB2b2lkIHNldEFwcENhY2hlTWF4aW11bVNp
emUodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKTsKLSAgICB2b2lkIHNldEF1dG9maWxsZWQoY29u
c3QgUVdlYkVsZW1lbnQmLCBib29sIGVuYWJsZSk7CiAgICAgdm9pZCBzZXRWYWx1ZUZvclVzZXIo
Y29uc3QgUVdlYkVsZW1lbnQmLCBjb25zdCBRU3RyaW5nJiB2YWx1ZSk7CiAgICAgdm9pZCBzZXRG
aXhlZENvbnRlbnRzU2l6ZShpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogICAgIHZvaWQgc2V0UHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZChib29sKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0
UnVubmVyV2luLmNwcAppbmRleCA4YzI3YTUyYzdlYjQxODc1NTIyYjhiZjMzMWEyNzExMDMxYWUy
OTQxLi40YTBiNzg3YWI4NzU5MGI1YjgwNjI1YWVmOWQyM2M5NmUwZTk4ZjczIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCkBAIC0zMzUsMjcgKzMzNSw2IEBA
IHZvaWQgVGVzdFJ1bm5lcjo6c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoYm9vbCBmbGFn
KQogICAgIHByZWZzUHJpdmF0ZS0+c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoZmxhZyk7
CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0QXV0b2ZpbGxlZChKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBib29sIGF1dG9maWxsZWQpCi17Ci0gICAgQ09NUHRy
PElXZWJWaWV3PiB3ZWJWaWV3OwotICAgIGlmIChGQUlMRUQoZnJhbWUtPndlYlZpZXcoJndlYlZp
ZXcpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ09NUHRyPElXZWJWaWV3UHJpdmF0ZT4gd2Vi
Vmlld1ByaXZhdGUoUXVlcnksIHdlYlZpZXcpOwotICAgIGlmICghd2ViVmlld1ByaXZhdGUpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIENPTVB0cjxJRE9NRWxlbWVudD4gZWxlbWVudDsKLSAgICBp
ZiAoRkFJTEVEKHdlYlZpZXdQcml2YXRlLT5lbGVtZW50RnJvbUpTKGNvbnRleHQsIG5vZGVPYmpl
Y3QsICZlbGVtZW50KSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIENPTVB0cjxJRm9ybXNBdXRv
RmlsbFRyYW5zaXRpb24+IGF1dG9maWxsRWxlbWVudChRdWVyeSwgZWxlbWVudCk7Ci0gICAgaWYg
KCFhdXRvZmlsbEVsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG9maWxsRWxlbWVu
dC0+c2V0QXV0b2ZpbGxlZChhdXRvZmlsbGVkKTsKLX0KLQogdm9pZCBUZXN0UnVubmVyOjpzZXRD
dXN0b21Qb2xpY3lEZWxlZ2F0ZShib29sIHNldERlbGVnYXRlLCBib29sIHBlcm1pc3NpdmUpCiB7
CiAgICAgQ09NUHRyPElXZWJWaWV3PiB3ZWJWaWV3OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvd3gvVGVzdFJ1bm5lcld4LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L1Rl
c3RSdW5uZXJXeC5jcHAKaW5kZXggZjhmOTg1NTQ2ZTdmZjM5M2QzYjQyNGY2OTViODQ1NDAxYzgx
OGUxNy4uYjFjNDVjNDMwYjY3MzdhZDcwMDAwNDQxMTk4MjM5NWQxNmUxYTMwOSAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvVGVzdFJ1bm5lcld4LmNwcAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS93eC9UZXN0UnVubmVyV3guY3BwCkBAIC0xOTksMTEgKzE5OSw2IEBAIHZv
aWQgVGVzdFJ1bm5lcjo6c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoYm9vbCBmbGFnKQog
ICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRBdXRvZmls
bGVkKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiBlbGVtZW50LCBib29sIGlzQXV0b2ZpbGxlZCkK
LXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6c2V0UG9w
dXBCbG9ja2luZ0VuYWJsZWQoYm9vbCBwb3B1cEJsb2NraW5nRW5hYmxlZCkKIHsKICAgICAvLyBG
SVhNRTogaW1wbGVtZW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggY2Q4ZTVkMzU0MWM0ODdjZGQ1NmE1MmEwNTBhOGU5NmRi
NzM3ZWE2OC4uMTQ4YmE5ZGJhZGNjODVhYmI2NTAyMTRlZjhjMmIzYjc5NjFhYjRmNSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDEzLTAyLTIyICBKYXNvbiBBbmRlcnNzZW4gIDxqYW5kZXJzc2Vu
QGdtYWlsLmNvbT4KKworICAgICAgICBNb3ZlZCBzZXRBdXRvZmlsbGVkIGZyb20gVGVzdFJ1bm5l
ciB0byBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTA1MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGZhc3QvZm9ybXMvaW5wdXQtYXV0b2ZpbGxlZC5odG1sOgorICAgICAgICAqIGZhc3Qv
Zm9ybXMvcmVzZXQtYXV0b2ZpbGxlZC5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL3drMi9UZXN0
RXhwZWN0YXRpb25zOgorCiAyMDEzLTAyLTIxICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5A
d2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdGVzdGluZyBzdGF0ZXMgY2hh
bmdpbmcgYXN5bmNocm9ub3VzbHkuIEFwcGx5IGl0IHRvIHN0YXRlLXVybC1zZXRzLWxpbmtzLXZp
c2l0ZWQuaHRtbC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtYXV0
b2ZpbGxlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1hdXRvZmlsbGVkLmh0
bWwKaW5kZXggMzgxNTBhY2Q1YTNiMDY4YzdmMTMxM2YwNTY0MTkzODJjMzU4ODdmYS4uZmZmZDA4
ODEzNDMyNDZlMTJhNzc5MjQwMjBhOTEwMTgxZjc5MDFmMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9pbnB1dC1hdXRvZmlsbGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9pbnB1dC1hdXRvZmlsbGVkLmh0bWwKQEAgLTEyLDggKzEyLDggQEAKICAgICAgICAg
dmFyIG9yaWdpbmFsRm9yZWdyb3VuZCA9IGNvbXB1dGVkU3R5bGUuY29sb3I7CiAgICAgICAgIHZh
ciBvcmlnaW5hbEJhY2tncm91bmQgPSBjb21wdXRlZFN0eWxlLmJhY2tncm91bmRDb2xvcjsKIAot
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIu
c2V0QXV0b2ZpbGxlZCh0ZiwgdHJ1ZSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7
CisgICAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldEF1dG9maWxsZWQodGYsIHRydWUpOwog
ICAgICAgICB9CiAKICAgICAgICAgLy8gQm90aCB0aGUgZm9yZWdyb3VuZCBhbmQgYmFja2dyb3Vu
ZCBjb2xvcnMgc2hvdWxkIGNoYW5nZS4KQEAgLTI5LDggKzI5LDggQEAKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAg
ICAgICAgICAgdGVzdFJ1bm5lci5zZXRBdXRvZmlsbGVkKHRmLCBmYWxzZSk7CisgICAgICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldEF1
dG9maWxsZWQodGYsIGZhbHNlKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIENvbG9ycyBzaG91
bGQgYmUgcmVzdG9yZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc2V0
LWF1dG9maWxsZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVzZXQtYXV0b2ZpbGxl
ZC5odG1sCmluZGV4IDY2MmYxMmUxMjhkNjI4MDA2MzBjMmE2MDgzZDFjMWUwZTAzYzZjYWMuLmM0
YTE2MWE0ZjQ3ZDdhZjAyMzJkNTU1ZmNhMGMxZjcwMmNiNGFjOWIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvcmVzZXQtYXV0b2ZpbGxlZC5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvcmVzZXQtYXV0b2ZpbGxlZC5odG1sCkBAIC0xMiw4ICsxMiw4IEBACiAgICAg
ICAgIH0KIAogICAgICAgICB2YXIgZmllbGQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmll
bGQnKTsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgICAgICB0ZXN0
UnVubmVyLnNldEF1dG9maWxsZWQoZmllbGQsIHRydWUpOworICAgICAgICBpZiAod2luZG93Lmlu
dGVybmFscykgeworICAgICAgICAgICAgd2luZG93LmludGVybmFscy5zZXRBdXRvZmlsbGVkKGZp
ZWxkLCB0cnVlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1Ro
aXMgdGVzdCByZXF1aXJlcyBhIExheW91dFRlc3RDb250cm9sbGVyLicpOwogICAgICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBk
MzhmYWNmNmI5MDdjNTRkZjQ2MzE0MGFiNWZiODY2MjU1MzI4YmJmLi5mZTQ0MTIxZjMyODY1MTk1
MjZjN2MwMjUyNzVmYzcwODUyY2U1NGU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVz
dEV4cGVjdGF0aW9ucwpAQCAtNTAzLDEwICs1MDMsNiBAQCBzdG9yYWdlL2RvbXN0b3JhZ2UvbG9j
YWxzdG9yYWdlL3N0b3JhZ2V0cmFja2VyL3N0b3JhZ2UtdHJhY2tlci01LWRlbGV0ZS1vbmUuaHRt
bAogc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zdG9yYWdldHJhY2tlci9zdG9yYWdl
LXRyYWNrZXItNi1jcmVhdGUuaHRtbAogc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9z
dG9yYWdldHJhY2tlci9zdG9yYWdlLXRyYWNrZXItNy11c2FnZS5odG1sCiAKLSMgV2ViS2l0VGVz
dFJ1bm5lciBuZWVkcyBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBdXRvZmlsbGVkCi1mYXN0L2Zv
cm1zL2lucHV0LWF1dG9maWxsZWQuaHRtbAotZmFzdC9mb3Jtcy9yZXNldC1hdXRvZmlsbGVkLmh0
bWwKLQogIyBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygp
CiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Njg4MQogZWRpdGlu
Zy9zZWxlY3Rpb24vY29udGV4dC1tZW51LXRleHQtc2VsZWN0aW9uLmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189893</attachid>
            <date>2013-02-22 18:45:24 -0800</date>
            <delta_ts>2013-02-22 19:05:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110521-20130223124144.patch</filename>
            <type>text/plain</type>
            <size>28528</size>
            <attacher name="Jason Anderssen">janderssen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNjg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVhZTVjYzVlODk4Njhj
N2Q4ZTJlNDI3MmZhMWJjMzg0MTdmYWMxMS4uY2QxZTljYTJjYWM2MjU5NWY3MzlhNWMwNDVlYmM0
YzJkMDg4YWIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTAyLTIyICBKYXNv
biBBbmRlcnNzZW4gIDxqYW5kZXJzc2VuQGdtYWlsLmNvbT4KKworICAgICAgICBNb3ZlIHNldEF1
dG9maWxsZWQgZnJvbSBUZXN0UnVubmVyIHRvIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDUyMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldEF1dG9maWxsZWQpOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmg6CisgICAgICAgIChJbnRlcm5hbHMpOgorICAgICAgICAqIHRlc3RpbmcvSW50
ZXJuYWxzLmlkbDoKKwogMjAxMy0wMi0yMSAgVG9ueSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIEludmFsaWRhdGUgb3V0c3RhbmRpbmcgY2hlY2twb2ludHMgZm9y
IHRoZSBiYWNrZ3JvdW5kIGlucHV0IHN0cmVhbSBhbmQgcHJlbG9hZCBzY2FubmVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cKaW5kZXggMTlkN2RmOWY3NDI1NjQzNjg1YWU3NzVlNWEwNzZkZTM0MmRjZDkyNS4uNjEx
MGI2ZDk2ZWQ2ZDExZGExYzA3YTBkNWM4NjIzNmUwNzk1NmY4OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDEzLTAyLTIyICBKYXNvbiBBbmRlcnNzZW4gIDxqYW5kZXJzc2Vu
QGdtYWlsLmNvbT4KKworICAgICAgICBNb3ZlIHNldEF1dG9maWxsZWQgZnJvbSBUZXN0UnVubmVy
IHRvIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExMDUyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoKKwogMjAxMy0w
Mi0xOSAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENvbnZlcnQg
MyBzZXR0aW5ncyB0byB1c2UgU2V0dGluZ3MuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBmN2VhNGUy
MDU4OTlkOTVlY2M5OGJhNmM1ZDJhMzRhZDg4OGFlYjlhLi42YWRmNjViMTIyMTY0MzA4ZGNkOTY3
MzdhNDFhMjVhMTVkYzMwMTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MTMtMDItMjIgIEphc29uIEFuZGVyc3NlbiAgPGphbmRlcnNzZW5AZ21haWwuY29tPgorCisgICAg
ICAgIE1vdmUgc2V0QXV0b2ZpbGxlZCBmcm9tIFRlc3RSdW5uZXIgdG8gV2ViQ29yZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNTIxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrKToKKwogMjAxMy0wMi0yMSAgR2VvcmdlIE1jQ29sbGlzdGVyICA8Z2VvcmdlLm1jY29s
bGlzdGVyQGdtYWlsLmNvbT4KIAogICAgICAgICBbR1RLXSBSZW1vdmUgc3VicmVzb3VyY2UgbGVh
a3MgZnJvbSBXZWJLaXQxIGFuZCBXZWJLaXQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGE4NDJhMjBmYjI4
YWQ5NWIxNGU3ODZiMWI1ODJmYzU2N2E5MmM5ZmEuLmQzMGJlM2ZlZmU3YzY3NWQwYjE5MDQzYzRm
YjY2MTE5YzMzNzAzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDIt
MjIgIEphc29uIEFuZGVyc3NlbiAgPGphbmRlcnNzZW5AZ21haWwuY29tPgorCisgICAgICAgIE1v
dmUgc2V0QXV0b2ZpbGxlZCBmcm9tIFRlc3RSdW5uZXIgdG8gV2ViQ29yZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNTIxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQuaDoKKwogMjAxMy0wMi0yMSAgQWxsYW4gU2FuZGZlbGQgSmVuc2Vu
ICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KIAogICAgICAgICBbUXRdIFJlcGxhY2UgUVdlYlBh
Z2VBZGFwdG9yOjpUb3VjaEFkanVzdGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
aW5kZXggMzgzNDQxMDkxNjMwMTI5MzdjOWY1NTVjMGU1NzI4NDkzOGYzZmZhNy4uOGQzYTY0ZWE0
NzAxNmE0OWI1ZmY2Y2E3OWE1ZjY4MWM4MmVlMGE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcApAQCAtODE2LDYgKzgxNiwyMCBAQCBWZWN0b3I8U3RyaW5nPiBJbnRlcm5hbHM6
OmZvcm1Db250cm9sU3RhdGVPZlByZXZpb3VzSGlzdG9yeUl0ZW0oRXhjZXB0aW9uQ29kZSYgZQog
ICAgIH0KICAgICByZXR1cm4gbWFpbkl0ZW0tPnRhcmdldCgpID09IHVuaXF1ZU5hbWUgPyBtYWlu
SXRlbS0+ZG9jdW1lbnRTdGF0ZSgpIDogbWFpbkl0ZW0tPmNoaWxkSXRlbVdpdGhUYXJnZXQodW5p
cXVlTmFtZSktPmRvY3VtZW50U3RhdGUoKTsKIH0KKyAgICAKK3ZvaWQgSW50ZXJuYWxzOjpzZXRB
dXRvZmlsbGVkKEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCit7CisgICAgaWYgKCFlbGVtZW50LT5oYXNUYWdOYW1lKGlucHV0VGFnKSkgeworICAgICAg
ICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBI
VE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBlbGVtZW50LT50b0lucHV0RWxlbWVudCgp
OworICAgIGlmICghaW5wdXRFbGVtZW50KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1Nf
RVJSOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlucHV0RWxlbWVudC0+c2V0QXV0b2Zp
bGxlZChlbmFibGVkKTsKK30KIAogdm9pZCBJbnRlcm5hbHM6OnNldEZvcm1Db250cm9sU3RhdGVP
ZlByZXZpb3VzSGlzdG9yeUl0ZW0oY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0YXRlLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDNjYWRhMTlj
MzNiYzY4YTMxODk4MTk0ZDI4ZmM4YTkzNTg5OTg3NzkuLjVlNTczYTdjZWFiODc3NmE4NThjN2U5
YTdiZWZkZGY4YzAwYWJhZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMjA4
LDYgKzIwOCw4IEBAIHB1YmxpYzoKICAgICBJbnRlcm5hbFNldHRpbmdzKiBzZXR0aW5ncygpIGNv
bnN0OwogICAgIHVuc2lnbmVkIHdvcmtlclRocmVhZENvdW50KCkgY29uc3Q7CiAKKyAgICB2b2lk
IHNldEF1dG9maWxsZWQoRWxlbWVudCosIGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOwor
CiAgICAgdm9pZCBzZXRCYXR0ZXJ5U3RhdHVzKERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiBldmVu
dFR5cGUsIGJvb2wgY2hhcmdpbmcsIGRvdWJsZSBjaGFyZ2luZ1RpbWUsIGRvdWJsZSBkaXNjaGFy
Z2luZ1RpbWUsIGRvdWJsZSBsZXZlbCwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdm9pZCBzZXRO
ZXR3b3JrSW5mb3JtYXRpb24oRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmIGV2ZW50VHlwZSwgZG91
YmxlIGJhbmR3aWR0aCwgYm9vbCBtZXRlcmVkLCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggODVlZmQ5NDViZDk1Nzc3OWFlY2Y0MmQxMzk5MGMw
NDg0MjE4Mzk3NC4uMDVmNmFiMDZjMGY0NGZlNTZiYzM4ZDYwOWVlN2NhZmEzMDY0YmY5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtMjUzLDQgKzI1Myw2IEBACiAgICAg
W0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMl0gdm9pZCBpbml0aWFsaXplTW9ja0NETSgp
OwogICAgIAogICAgIFtDb25kaXRpb25hbD1TUEVFQ0hfU1lOVEhFU0lTXSB2b2lkIGVuYWJsZU1v
Y2tTcGVlY2hTeW50aGVzaXplcigpOworCisgICAgdm9pZCBzZXRBdXRvZmlsbGVkKGluIEVsZW1l
bnQgc2NvcGUsIGluIGJvb2xlYW4gZW5hYmxlZCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKaW5kZXggOGJiNDg2ZGFkOWMzNzhmZDYzY2ViYTU1ZTQw
MmZhNjAzMDIzNjJkMS4uYjlkMTdlOGMxODQyZjMwMzFjZTk3YzBkYWM3ZmQ4MjVjMTcyMTc4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCkBAIC0yNDcsMTkgKzI0Nyw2IEBAIHZvaWQgRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRWYWx1ZUZvclVzZXIoSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTVmFsdWVSZWYKICAgICBpbnB1dEVsZW1lbnQtPnNldFZhbHVlRm9yVXNlcih2YWx1ZSk7
CiB9CiAKLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRBdXRvZmlsbGVkKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QsIGJvb2wgYXV0b2ZpbGxlZCkK
LXsKLSAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7Ci0gICAgV2ViQ29y
ZTo6RWxlbWVudCogZWxlbWVudCA9IFdlYkNvcmU6OnRvRWxlbWVudCh0b0pTKGV4ZWMsIG5vZGVP
YmplY3QpKTsKLSAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLSAgICBXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBlbGVtZW50LT50b0lucHV0RWxlbWVu
dCgpOwotICAgIGlmICghaW5wdXRFbGVtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpbnB1
dEVsZW1lbnQtPnNldEF1dG9maWxsZWQoYXV0b2ZpbGxlZCk7Ci19Ci0KIHZvaWQgRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsOjpzZXREZWZlcnNMb2FkaW5nKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBi
b29sIGRlZmVycykKIHsKICAgICBEUlRfU1VQUFJUX1BBR0VfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBwYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKaW5kZXggZTkyNTA1NzkyYmZhNWNlZTQ3MDQ3
OWI4ZjNjMGQyM2Y3MjRhYzQ4Ni4uYWVkM2M3NWQwMmY5ZmYzOTMxZTM3N2Q1OTRhMzgyOTExMmVi
YWJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKQEAgLTY4LDcgKzY4LDYgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBTdHJpbmcgc3VpdGFibGVEUlRGcmFtZU5hbWUoY29uc3QgRXZhc19PYmplY3Qq
IGV3a0ZyYW1lKTsKICAgICBzdGF0aWMgU3RyaW5nIGxheWVyVHJlZUFzVGV4dChjb25zdCBFdmFz
X09iamVjdCogZXdrRnJhbWUpOwogICAgIHN0YXRpYyB2b2lkIHNldFZhbHVlRm9yVXNlcihKU0Nv
bnRleHRSZWYsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0g
ICAgc3RhdGljIHZvaWQgc2V0QXV0b2ZpbGxlZChKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYgbm9k
ZU9iamVjdCwgYm9vbCBhdXRvZmlsbGVkKTsKICAgICBzdGF0aWMgdm9pZCBzZXREZWZlcnNMb2Fk
aW5nKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIGRlZmVycyk7CiAgICAgc3RhdGljIHZvaWQg
c2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1NldHRpbmcoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIGJvb2wgbG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1ByZWZlcmVu
Y2VzKTsKICAgICBzdGF0aWMgdm9pZCBzZXRNaW5pbXVtTG9naWNhbEZvbnRTaXplKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBpbnQgc2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwIGIvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAppbmRleCA3
MzVhMGU3NGZhMWJkMjk3Y2ZiM2I4Njg4MjJkYzU1MGI5MTg0ZGIzLi5lZWNjZDY3MjZhMGY2NmZh
YzI0ZTM5YzVlZTBlZGU4YTA2MGQ4Njk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKQEAg
LTU0OCwxOSArNTQ4LDYgQEAgQ1N0cmluZyBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmFjY2Vz
c2liaWxpdHlIZWxwVGV4dChBdGtPYmplY3QqIGF4T2JqZWN0KQogICAgIHJldHVybiBjb3JlT2Jq
ZWN0LT5oZWxwVGV4dCgpLnV0ZjgoKTsKIH0KIAotdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRH
dGs6OnNldEF1dG9maWxsZWQoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9i
amVjdCwgYm9vbCBhdXRvZmlsbGVkKQotewotICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdG9K
Uyhjb250ZXh0KTsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KHRvSlMoZXhlYywg
bm9kZU9iamVjdCkpOwotICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIEhU
TUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IGVsZW1lbnQtPnRvSW5wdXRFbGVtZW50KCk7
Ci0gICAgaWYgKCFpbnB1dEVsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlucHV0RWxl
bWVudC0+c2V0QXV0b2ZpbGxlZChhdXRvZmlsbGVkKTsKLX0KLQogdm9pZCBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRHdGs6OnNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1
ZVJlZiBub2RlT2JqZWN0LCBKU1N0cmluZ1JlZiB2YWx1ZSkKIHsKICAgICBKU0M6OkV4ZWNTdGF0
ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCmluZGV4IGEzNDlm
YThjY2VlZGE3NTJkODYyMGU3ZTZmYjBhZWYxZTNkYzE3YWUuLjQyYjg1Y2Q1ZmQ5ZmNiYzU4MjI0
ZjIxOTlkNjhhNjE0MTQ5YjMyMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCkBAIC02OCw3ICs2
OCw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQXRrT2JqZWN0KiBnZXRGb2N1c2VkQWNjZXNzaWJs
ZUVsZW1lbnQoV2ViS2l0V2ViRnJhbWUqKTsKICAgICBzdGF0aWMgQXRrT2JqZWN0KiBnZXRSb290
QWNjZXNzaWJsZUVsZW1lbnQoV2ViS2l0V2ViRnJhbWUqKTsKICAgICBzdGF0aWMgdm9pZCBsYXlv
dXRGcmFtZShXZWJLaXRXZWJGcmFtZSopOwotICAgIHN0YXRpYyB2b2lkIHNldEF1dG9maWxsZWQo
SlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmLCBib29sKTsKICAgICBzdGF0aWMgdm9pZCBzZXRWYWx1
ZUZvclVzZXIoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmLCBKU1N0cmluZ1JlZik7CiAgICAgc3Rh
dGljIGJvb2wgc2hvdWxkQ2xvc2UoV2ViS2l0V2ViRnJhbWUqKTsKICAgICBzdGF0aWMgYm9vbCBl
bGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQoV2ViS2l0V2ViRnJhbWUqLCBK
U1N0cmluZ1JlZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCmluZGV4IDA3NTI4YjAxZjk2Mzc4YzA0
NTBjOGU5YjFmOTQ1NzZhMGZmNjgzNTIuLjRlYzVkMmU5ZWI0YWY3N2Q3MTQyN2UyZmEwYjQ1NzFk
YzU3OWM5ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCkBAIC0yNjQsMTggKzI2NCw2IEBAIGJv
b2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6Omhhc0RvY3VtZW50RWxlbWVudChRV2ViRnJhbWVB
ZGFwdGVyICphZGFwdGVyKQogICAgIHJldHVybiBhZGFwdGVyLT5mcmFtZS0+ZG9jdW1lbnQoKS0+
ZG9jdW1lbnRFbGVtZW50KCk7CiB9CiAKLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNl
dEF1dG9maWxsZWQoY29uc3QgUVdlYkVsZW1lbnQmIGVsZW1lbnQsIGJvb2wgaXNBdXRvZmlsbGVk
KQotewotICAgIFdlYkNvcmU6OkVsZW1lbnQqIHdlYkVsZW1lbnQgPSBlbGVtZW50Lm1fZWxlbWVu
dDsKLSAgICBpZiAoIXdlYkVsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLSAgICBIVE1MSW5wdXRF
bGVtZW50KiBpbnB1dEVsZW1lbnQgPSB3ZWJFbGVtZW50LT50b0lucHV0RWxlbWVudCgpOwotICAg
IGlmICghaW5wdXRFbGVtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpbnB1dEVsZW1lbnQt
PnNldEF1dG9maWxsZWQoaXNBdXRvZmlsbGVkKTsKLX0KLQogdm9pZCBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDo6c2V0VmFsdWVGb3JVc2VyKGNvbnN0IFFXZWJFbGVtZW50JiBlbGVtZW50LCBjb25z
dCBRU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBXZWJDb3JlOjpFbGVtZW50KiB3ZWJFbGVtZW50ID0g
ZWxlbWVudC5tX2VsZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKaW5kZXggNDAxZDliNjI5ZjEwM2Fl
MDUyNjJiNGQ3ZmU1MGM1OTk2YWQzOTYxNy4uMDNiNDg4YjljY2FmMjUzYzk5MWQ4ZDAyZTBmNjQy
NDhlYjQzNGIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaApAQCAtMTA4LDcgKzEwOCw2IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyB2b2lkIGdhcmJhZ2VDb2xsZWN0b3JDb2xsZWN0KCk7CiAgICAgc3Rh
dGljIHZvaWQgZ2FyYmFnZUNvbGxlY3RvckNvbGxlY3RPbkFsdGVybmF0ZVRocmVhZChib29sIHdh
aXRVbnRpbERvbmUpOwotICAgIHN0YXRpYyB2b2lkIHNldEF1dG9maWxsZWQoY29uc3QgUVdlYkVs
ZW1lbnQmLCBib29sIGVuYWJsZWQpOwogICAgIHN0YXRpYyB2b2lkIHNldFZhbHVlRm9yVXNlcihj
b25zdCBRV2ViRWxlbWVudCYsIGNvbnN0IFFTdHJpbmcmIHZhbHVlKTsKICAgICBzdGF0aWMgaW50
IGphdmFTY3JpcHRPYmplY3RzQ291bnQoKTsKICAgICBzdGF0aWMgdm9pZCBjbGVhclNjcmlwdFdv
cmxkcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1Nv
dXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKaW5kZXggNDlmNGI2ZTcyMWFmMmJkMTVjZWZl
ZmI5Y2Q5ZGFlMDk4OGExMjY5NC4uOWUxY2Y2NTdhYjNiMGU2MDJjZDljZDVhZjkzODRmZTQwMWRh
YTllMSAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9T
b3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBAIC03Niw2ICs3Niw3IEBAIF9aTjdXZWJD
b3JlMTRTY2hlbWVSZWdpc3RyeTU3cmVtb3ZlVVJMU2NoZW1lUmVnaXN0ZXJlZEFzQnlwYXNzaW5n
Q29udGVudFNlY3VyaXR5CiBfWk43V2ViQ29yZTE1SW5zcGVjdG9yQ2xpZW50MzFkb0Rpc3BhdGNo
TWVzc2FnZU9uRnJvbnRlbmRQYWdlRVBOU180UGFnZUVSS04zV1RGNlN0cmluZ0U7CiBfWk43V2Vi
Q29yZTE1c2V0RE9NRXhjZXB0aW9uRVBOM0pTQzlFeGVjU3RhdGVFaTsKIF9aTjdXZWJDb3JlMTV0
b0RPTVN0cmluZ0xpc3RFUE4zSlNDOUV4ZWNTdGF0ZUVOUzBfN0pTVmFsdWVFOworX1pON1dlYkNv
cmUxNkhUTUxJbnB1dEVsZW1lbnQxM3NldEF1dG9maWxsZWRFYjsKIF9aTjdXZWJDb3JlMTZIVE1M
SW5wdXRFbGVtZW50MTdzZXRTdWdnZXN0ZWRWYWx1ZUVSS04zV1RGNlN0cmluZ0U7CiBfWk43V2Vi
Q29yZTE2SFRNTElucHV0RWxlbWVudDE1c2V0RWRpdGluZ1ZhbHVlRVJLTjNXVEY2U3RyaW5nRTsK
IF9aTjdXZWJDb3JlMTZzY3JpcHROYW1lVG9Db2RlRVJLTjNXVEY2U3RyaW5nRTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5NmExYWM0M2MzNGQ0
MzkzMTBmY2FjYjYyMjhiY2EyYWExYTlhZmZkLi41NjkxM2Y2MTkzNmQ3ODcyMzE1ZDRhNjA1MzYy
YTllODMwZDRlNjA4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTMtMDItMjIgIEphc29uIEFuZGVyc3NlbiAgPGph
bmRlcnNzZW5AZ21haWwuY29tPgorCisgICAgICAgIE1vdmUgc2V0QXV0b2ZpbGxlZCBmcm9tIFRl
c3RSdW5uZXIgdG8gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTEwNTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFRl
c3RSdW5uZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVz
dFJ1bm5lci5oOgorICAgICAgICAoVGVzdFJ1bm5lcik6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvYmxhY2tiZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHA6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHA6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmg6CisgICAgICAg
IChUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVm
bC5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5jcHA6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvcXQvVGVzdFJ1bm5lclF0Lmg6CisgICAgICAgIChUZXN0UnVubmVyUXQpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcDoKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS93eC9UZXN0UnVubmVyV3guY3BwOgorCiAyMDEzLTAyLTIxICBEaXJrIFByYW5r
ZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gc3VwcG9ydCB0
aGUgbHVjaWQgdmVyc2lvbiBvZiBmcmVldHlwZSBvbiBwcmVjaXNlIGluIERSVApkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9UZXN0UnVubmVyLmNwcAppbmRleCA2YzhmOGZiOWQxNjg4NDcxMzdhNGQwZDVmZmJmNzdi
NGM3ZjczNjA5Li43MmU2ZmYxNWQzMDNlNGFkYWE5YWIwODEwNjUyZmE4OWMzMzBmMGExIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcApAQCAtOTM5LDE3ICs5MzksNiBAQCBzdGF0aWMg
SlNWYWx1ZVJlZiBzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZENhbGxiYWNrKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKUwogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KTsKIH0KIAotc3RhdGljIEpTVmFsdWVSZWYgc2V0QXV0b2ZpbGxlZENhbGxiYWNrKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVj
dCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbikKLXsKLSAgICBpZiAoYXJndW1lbnRDb3VudCAhPSAyIHx8ICFh
cmd1bWVudHNbMF0pCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KTsKLQotICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVy
Kj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICBjb250cm9sbGVyLT5zZXRB
dXRvZmlsbGVkKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0
LCBhcmd1bWVudHNbMV0pKTsKLQotICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250
ZXh0KTsKLX0KLQogc3RhdGljIEpTVmFsdWVSZWYgc2V0Q2FjaGVNb2RlbENhbGxiYWNrKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICAvLyBIYXMgTWFjIGltcGxlbWVudGF0aW9u
LgpAQCAtMjE1Myw3ICsyMTQyLDYgQEAgSlNTdGF0aWNGdW5jdGlvbiogVGVzdFJ1bm5lcjo6c3Rh
dGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAic2V0QXV0aGVudGljYXRpb25QYXNzd29yZCIsIHNl
dEF1dGhlbnRpY2F0aW9uUGFzc3dvcmRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRB
dXRoZW50aWNhdGlvblVzZXJuYW1lIiwgc2V0QXV0aGVudGljYXRpb25Vc2VybmFtZUNhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkIiwgc2V0
QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAotICAgICAgICB7ICJz
ZXRBdXRvZmlsbGVkIiwgc2V0QXV0b2ZpbGxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
InNldENhY2hlTW9kZWwiLCBzZXRDYWNoZU1vZGVsQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAic2V0Q2FsbENsb3NlT25XZWJWaWV3cyIsIHNldENhbGxDbG9zZU9uV2ViVmlld3NDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRDYW5PcGVuV2luZG93cyIsIHNldENhbk9wZW5XaW5k
b3dzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rl
c3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAppbmRleCA3OTIw
ZWM2NDQzNjc5M2FjZDYyMmEyYWY1OTQzZTVkNGUzZDllYWU4Li5kZjg0MGUxYzI4M2Q2MzdjNjI2
MjUwY2Q4NTAxMmUxOGE2ODYwYzg4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9U
ZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCkBAIC04
Niw3ICs4Niw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFwcENhY2hlTWF4aW11bVNpemUodW5z
aWduZWQgbG9uZyBsb25nIHF1b3RhKTsKICAgICB2b2lkIHNldEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5RdW90YSh1bnNpZ25lZCBsb25nIGxvbmcpOwogICAgIHZvaWQgc2V0QXV0aG9yQW5kVXNlclN0
eWxlc0VuYWJsZWQoYm9vbCk7Ci0gICAgdm9pZCBzZXRBdXRvZmlsbGVkKEpTQ29udGV4dFJlZiwg
SlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBib29sIGF1dG9maWxsZWQpOwogICAgIHZvaWQgc2V0Q2Fj
aGVNb2RlbChpbnQpOwogICAgIHZvaWQgc2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUoYm9vbCBzZXRE
ZWxlZ2F0ZSwgYm9vbCBwZXJtaXNzaXZlKTsKICAgICB2b2lkIHNldERhdGFiYXNlUXVvdGEodW5z
aWduZWQgbG9uZyBsb25nIHF1b3RhKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvYmxhY2tiZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHAKaW5kZXggNGFkMzZlNjYyN2Q3
MzFjMWI4ZWUxMjc1MmM0MmEyM2Y0OTAyOGYxMi4uN2MwOGFhZTc0MTM0ZDdmOTJlMDcwNmUyZWJj
N2MxNmQ4NmM0ZTZkYiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJy
eS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxh
Y2tiZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHAKQEAgLTYxNiwxOSArNjE2LDYgQEAgdm9p
ZCBUZXN0UnVubmVyOjpzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKQog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0QXV0b2ZpbGxl
ZChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBib29sIGF1dG9m
aWxsZWQpCi17Ci0gICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGNvbnRleHQpOwotICAg
IFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQodG9KUyhleGVjLCBub2RlT2Jq
ZWN0KSk7Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm47Ci0gICAgV2ViQ29yZTo6
SFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gZWxlbWVudC0+dG9JbnB1dEVsZW1lbnQo
KTsKLSAgICBpZiAoIWlucHV0RWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaW5wdXRF
bGVtZW50LT5zZXRBdXRvZmlsbGVkKGF1dG9maWxsZWQpOwotfQotCiBpbnQgVGVzdFJ1bm5lcjo6
bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMoKQogewogICAgIHJl
dHVybiBEdW1wUmVuZGVyVHJlZVN1cHBvcnQ6Om51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RzKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRyZWU6OmN1cnJl
bnRJbnN0YW5jZSgpLT5wYWdlKCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcAppbmRleCAyYWI5YTMw
ODljM2IxMGFiOTEwMjgxZDE5YzYzZDQyMWNjMDY5Y2E4Li4xNzJhN2FlYjZiNzgwM2VhNGY0MWUz
MGFiYTdmOTdlODY1NmFkNzgyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcApAQCAtMTk4LDcgKzE5
OCw2IEBAIFRlc3RSdW5uZXI6OlRlc3RSdW5uZXIoVGVzdEludGVyZmFjZXMqIGludGVyZmFjZXMp
CiAgICAgYmluZE1ldGhvZCgic3RhcnRTcGVlY2hJbnB1dCIsICZUZXN0UnVubmVyOjpzdGFydFNw
ZWVjaElucHV0KTsKICAgICBiaW5kTWV0aG9kKCJtYXJrZXJUZXh0Rm9yTGlzdEl0ZW0iLCAmVGVz
dFJ1bm5lcjo6bWFya2VyVGV4dEZvckxpc3RJdGVtKTsKICAgICBiaW5kTWV0aG9kKCJmaW5kU3Ry
aW5nIiwgJlRlc3RSdW5uZXI6OmZpbmRTdHJpbmcpOwotICAgIGJpbmRNZXRob2QoInNldEF1dG9m
aWxsZWQiLCAmVGVzdFJ1bm5lcjo6c2V0QXV0b2ZpbGxlZCk7CiAgICAgYmluZE1ldGhvZCgic2V0
VmFsdWVGb3JVc2VyIiwgJlRlc3RSdW5uZXI6OnNldFZhbHVlRm9yVXNlcik7CiAgICAgYmluZE1l
dGhvZCgiZW5hYmxlRml4ZWRMYXlvdXRNb2RlIiwgJlRlc3RSdW5uZXI6OmVuYWJsZUZpeGVkTGF5
b3V0TW9kZSk7CiAgICAgYmluZE1ldGhvZCgic2V0Rml4ZWRMYXlvdXRTaXplIiwgJlRlc3RSdW5u
ZXI6OnNldEZpeGVkTGF5b3V0U2l6ZSk7CkBAIC0xMzc3LDIzICsxMzc2LDYgQEAgdm9pZCBUZXN0
UnVubmVyOjpmaW5kU3RyaW5nKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBW
YXJpYW50KiByZXN1bHQKICAgICByZXN1bHQtPnNldChmaW5kUmVzdWx0KTsKIH0KIAotdm9pZCBU
ZXN0UnVubmVyOjpzZXRBdXRvZmlsbGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRz
LCBDcHBWYXJpYW50KiByZXN1bHQpCi17Ci0gICAgcmVzdWx0LT5zZXROdWxsKCk7Ci0gICAgaWYg
KGFyZ3VtZW50cy5zaXplKCkgIT0gMiB8fCAhYXJndW1lbnRzWzFdLmlzQm9vbCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBXZWJFbGVtZW50IGVsZW1lbnQ7Ci0gICAgaWYgKCFXZWJCaW5kaW5n
czo6Z2V0RWxlbWVudChhcmd1bWVudHNbMF0udmFsdWUub2JqZWN0VmFsdWUsICZlbGVtZW50KSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgV2ViSW5wdXRFbGVtZW50KiBpbnB1dCA9IHRvV2ViSW5w
dXRFbGVtZW50KCZlbGVtZW50KTsKLSAgICBpZiAoIWlucHV0KQotICAgICAgICByZXR1cm47Ci0K
LSAgICBpbnB1dC0+c2V0QXV0b2ZpbGxlZChhcmd1bWVudHNbMV0udmFsdWUuYm9vbFZhbHVlKTsK
LX0KLQogdm9pZCBUZXN0UnVubmVyOjpzZXRWYWx1ZUZvclVzZXIoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICByZXN1bHQtPnNldE51
bGwoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAppbmRleCBjMmRjODY2OTIyNGRiZGYxYmE5MjQ1ZDRiMmE3
ODk5ZWJkZjdjMmRmLi43NGNjODFlYWRlOTkzZjZmNTQ4MTIyYjBkNmM0N2NjODE3NzNiMzMxIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9U
ZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvVGVzdFJ1bm5lci5oCkBAIC0yNDEsMTAgKzI0MSw2IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBtYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOwogICAgIHZvaWQgZmluZFN0cmluZyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJp
YW50Kik7CiAKLSAgICAvLyBFeHBlY3RzIHRoZSBmaXJzdCBhcmd1bWVudCB0byBiZSBhbiBpbnB1
dCBlbGVtZW50IGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIGJlIGEgYm9vbGVhbi4KLSAgICAv
LyBGb3J3YXJkcyB0aGUgc2V0QXV0b2ZpbGxlZCgpIGNhbGwgdG8gdGhlIGVsZW1lbnQuCi0gICAg
dm9pZCBzZXRBdXRvZmlsbGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsK
LQogICAgIC8vIEV4cGVjdHMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIGJlIGFuIGlucHV0IGVsZW1l
bnQgYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gYmUgYSBzdHJpbmcgdmFsdWUuCiAgICAgLy8g
Rm9yd2FyZHMgdGhlIHNldFZhbHVlRm9yVXNlcigpIGNhbGwgdG8gdGhlIGVsZW1lbnQuCiAgICAg
dm9pZCBzZXRWYWx1ZUZvclVzZXIoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCop
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwCmluZGV4IDQ1NjQ2
MTA5Y2NmZTZkOGI4YTc3MGJlYWMxNjQ2MTcwNWYzYjY4MGIuLmYzOTQzZGM1ZGU4ODg1ZDkyY2Zk
NGFhYTI2MTBhYjgxYTE3ZDFhNWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Vm
bC9UZXN0UnVubmVyRWZsLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1
bm5lckVmbC5jcHAKQEAgLTMzOCwxMSArMzM4LDYgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRBdXRo
b3JBbmRVc2VyU3R5bGVzRW5hYmxlZChib29sIGZsYWcpCiAgICAgRHVtcFJlbmRlclRyZWVTdXBw
b3J0RWZsOjpzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChicm93c2VyLT5tYWluVmlldygp
LCBmbGFnKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRBdXRvZmlsbGVkKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QsIGJvb2wgYXV0b2ZpbGxlZCkKLXsKLSAg
ICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldEF1dG9maWxsZWQoY29udGV4dCwgbm9kZU9i
amVjdCwgYXV0b2ZpbGxlZCk7Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0RldmljZU9y
aWVudGF0aW9uKGJvb2wsIGRvdWJsZSwgYm9vbCwgZG91YmxlLCBib29sLCBkb3VibGUpCiB7CiAg
ICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgRGV2aWNlT3JpZW50YXRpb24gbGF5b3V0IHRlc3Rz
LgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwCmluZGV4IDRjOGU3
YjQwOWQwODZlNDFkYTZkODdmOTMwMTYxNDcxMjkzOWFiZTkuLjk5NmZiNTgyY2MwNzljZjZkYTA5
MmZmMjcxZDBlM2FmNzE5MGJmMGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0
ay9UZXN0UnVubmVyR3RrLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1
bm5lckd0ay5jcHAKQEAgLTQxNCwxMSArNDE0LDYgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRBdXRo
b3JBbmRVc2VyU3R5bGVzRW5hYmxlZChib29sIGZsYWcpCiAgICAgLy8gRklYTUU6IGltcGxlbWVu
dAogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldEF1dG9maWxsZWQoSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCwgYm9vbCBpc0F1dG9maWxsZWQpCi17Ci0gICAgRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRBdXRvZmlsbGVkKGNvbnRleHQsIG5vZGVPYmplY3Qs
IGlzQXV0b2ZpbGxlZCk7Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0RldmljZU9yaWVu
dGF0aW9uKGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJvdmlk
ZUJldGEsIGRvdWJsZSBiZXRhLCBib29sIGNhblByb3ZpZGVHYW1tYSwgZG91YmxlIGdhbW1hKQog
ewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIERldmljZU9yaWVudGF0aW9uIGxheW91dCB0
ZXN0cy4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFj
Lm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KaW5kZXggZmMz
YWZhNjc2NTIwYWJkNGFmNGJiNWM1ZmMyYzVkOTU0MzU0ZGZlMC4uMzZiM2M5MjlmMTQxNTBlNzJh
Y2M1NmQ0MWQ0MmRkZWZmZjU3OTY0YSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL1Rlc3RSdW5uZXJNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RS
dW5uZXJNYWMubW0KQEAgLTQxOSwxNSArNDE5LDYgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRBdXRo
b3JBbmRVc2VyU3R5bGVzRW5hYmxlZChib29sIGZsYWcpCiAgICAgW1tbbWFpbkZyYW1lIHdlYlZp
ZXddIHByZWZlcmVuY2VzXSBzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZDpmbGFnXTsKIH0K
IAotdm9pZCBUZXN0UnVubmVyOjpzZXRBdXRvZmlsbGVkKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U1ZhbHVlUmVmIG5vZGVPYmplY3QsIGJvb2wgYXV0b2ZpbGxlZCkKLXsKLSAgICBET01FbGVtZW50
ICplbGVtZW50ID0gW0RPTUVsZW1lbnQgX0RPTUVsZW1lbnRGcm9tSlNDb250ZXh0OmNvbnRleHQg
dmFsdWU6bm9kZU9iamVjdF07Ci0gICAgaWYgKCFlbGVtZW50IHx8ICFbZWxlbWVudCBpc0tpbmRP
ZkNsYXNzOltET01IVE1MSW5wdXRFbGVtZW50IGNsYXNzXV0pCi0gICAgICAgIHJldHVybjsKLQot
ICAgIFsoRE9NSFRNTElucHV0RWxlbWVudCAqKWVsZW1lbnQgX3NldEF1dG9maWxsZWQ6YXV0b2Zp
bGxlZF07Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUoYm9v
bCBzZXREZWxlZ2F0ZSwgYm9vbCBwZXJtaXNzaXZlKQogewogICAgIGlmIChzZXREZWxlZ2F0ZSkg
ewpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5jcHAKaW5kZXggMmQ3ZjNiZjM0
MWQ2MjliMmE4MGI3ZDk4MDA2MGNjZjBiZGI3NDc3MS4uMTVhZDEyNzYxMWRiY2Q5ZWYxMjQ2NGU1
YzIwZjJkYThiN2UyMTQxNSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVz
dFJ1bm5lclF0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQu
Y3BwCkBAIC00NzUsMTEgKzQ3NSw2IEBAIHZvaWQgVGVzdFJ1bm5lclF0OjpzZXRBcHBDYWNoZU1h
eGltdW1TaXplKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkKICAgICBtX2RydC0+d2ViUGFnZSgp
LT5zZXR0aW5ncygpLT5zZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZVF1b3RhKHF1b3RhKTsK
IH0KIAotdm9pZCBUZXN0UnVubmVyUXQ6OnNldEF1dG9maWxsZWQoY29uc3QgUVdlYkVsZW1lbnQm
IGVsZW1lbnQsIGJvb2wgaXNBdXRvZmlsbGVkKQotewotICAgIHJldHVybiBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdDo6c2V0QXV0b2ZpbGxlZChlbGVtZW50LCBpc0F1dG9maWxsZWQpOwotfQotCiB2
b2lkIFRlc3RSdW5uZXJRdDo6c2V0VmFsdWVGb3JVc2VyKGNvbnN0IFFXZWJFbGVtZW50JiBlbGVt
ZW50LCBjb25zdCBRU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dDo6c2V0VmFsdWVGb3JVc2VyKGVsZW1lbnQsIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQv
VGVzdFJ1bm5lclF0LmgKaW5kZXggYmMyYWY5YTE0MzMxMmZmYjcyNjA1ODVjNDUwMzI3ZmNiNWUx
MjlmZC4uNjUyYWQxYzE3YjA2NDU3ZDEwNTQxN2ZlMmU0MDU0ZTRiOGZhNDE3YyAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmgKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmgKQEAgLTE2Miw3ICsxNjIsNiBAQCBwdWJsaWMg
UV9TTE9UUzoKICAgICB2b2lkIHNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKGJv
b2wgZW5hYmxlKTsKICAgICB2b2lkIHNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhib29s
IGVuYWJsZSk7CiAgICAgdm9pZCBzZXRBcHBDYWNoZU1heGltdW1TaXplKHVuc2lnbmVkIGxvbmcg
bG9uZyBxdW90YSk7Ci0gICAgdm9pZCBzZXRBdXRvZmlsbGVkKGNvbnN0IFFXZWJFbGVtZW50Jiwg
Ym9vbCBlbmFibGUpOwogICAgIHZvaWQgc2V0VmFsdWVGb3JVc2VyKGNvbnN0IFFXZWJFbGVtZW50
JiwgY29uc3QgUVN0cmluZyYgdmFsdWUpOwogICAgIHZvaWQgc2V0Rml4ZWRDb250ZW50c1NpemUo
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKICAgICB2b2lkIHNldFByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5l
cldpbi5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAKaW5k
ZXggOGMyN2E1MmM3ZWI0MTg3NTUyMmI4YmYzMzFhMjcxMTAzMWFlMjk0MS4uNGEwYjc4N2FiODc1
OTBiNWI4MDYyNWFlZjlkMjNjOTZlMGU5OGY3MyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9UZXN0UnVubmVyV2luLmNwcApAQCAtMzM1LDI3ICszMzUsNiBAQCB2b2lkIFRlc3RSdW5uZXI6
OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKGJvb2wgZmxhZykKICAgICBwcmVmc1ByaXZh
dGUtPnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKGZsYWcpOwogfQogCi12b2lkIFRlc3RS
dW5uZXI6OnNldEF1dG9maWxsZWQoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9k
ZU9iamVjdCwgYm9vbCBhdXRvZmlsbGVkKQotewotICAgIENPTVB0cjxJV2ViVmlldz4gd2ViVmll
dzsKLSAgICBpZiAoRkFJTEVEKGZyYW1lLT53ZWJWaWV3KCZ3ZWJWaWV3KSkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIENPTVB0cjxJV2ViVmlld1ByaXZhdGU+IHdlYlZpZXdQcml2YXRlKFF1ZXJ5
LCB3ZWJWaWV3KTsKLSAgICBpZiAoIXdlYlZpZXdQcml2YXRlKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBDT01QdHI8SURPTUVsZW1lbnQ+IGVsZW1lbnQ7Ci0gICAgaWYgKEZBSUxFRCh3ZWJWaWV3
UHJpdmF0ZS0+ZWxlbWVudEZyb21KUyhjb250ZXh0LCBub2RlT2JqZWN0LCAmZWxlbWVudCkpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBDT01QdHI8SUZvcm1zQXV0b0ZpbGxUcmFuc2l0aW9uPiBh
dXRvZmlsbEVsZW1lbnQoUXVlcnksIGVsZW1lbnQpOwotICAgIGlmICghYXV0b2ZpbGxFbGVtZW50
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvZmlsbEVsZW1lbnQtPnNldEF1dG9maWxsZWQo
YXV0b2ZpbGxlZCk7Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6c2V0Q3VzdG9tUG9saWN5RGVsZWdh
dGUoYm9vbCBzZXREZWxlZ2F0ZSwgYm9vbCBwZXJtaXNzaXZlKQogewogICAgIENPTVB0cjxJV2Vi
Vmlldz4gd2ViVmlldzsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L1Rlc3RS
dW5uZXJXeC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9UZXN0UnVubmVyV3guY3BwCmlu
ZGV4IGY4Zjk4NTU0NmU3ZmYzOTNkM2I0MjRmNjk1Yjg0NTQwMWM4MThlMTcuLmIxYzQ1YzQzMGI2
NzM3YWQ3MDAwMDQ0MTE5ODIzOTVkMTZlMWEzMDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gv
VGVzdFJ1bm5lcld4LmNwcApAQCAtMTk5LDExICsxOTksNiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNl
dEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKGJvb2wgZmxhZykKICAgICAvLyBGSVhNRTogaW1w
bGVtZW50CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0QXV0b2ZpbGxlZChKU0NvbnRleHRSZWYs
IEpTVmFsdWVSZWYgZWxlbWVudCwgYm9vbCBpc0F1dG9maWxsZWQpCi17Ci0gICAgLy8gRklYTUU6
IGltcGxlbWVudAotfQotCiB2b2lkIFRlc3RSdW5uZXI6OnNldFBvcHVwQmxvY2tpbmdFbmFibGVk
KGJvb2wgcG9wdXBCbG9ja2luZ0VuYWJsZWQpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGNkOGU1ZDM1NDFjNDg3Y2RkNTZhNTJhMDUwYThlOTZkYjczN2VhNjguLjE0OGJhOWRi
YWRjYzg1YWJiNjUwMjE0ZWY4YzJiM2I3OTYxYWI0ZjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxMy0wMi0yMiAgSmFzb24gQW5kZXJzc2VuICA8amFuZGVyc3NlbkBnbWFpbC5jb20+CisKKyAg
ICAgICAgTW92ZWQgc2V0QXV0b2ZpbGxlZCBmcm9tIFRlc3RSdW5uZXIgdG8gV2ViQ29yZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNTIxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1z
L2lucHV0LWF1dG9maWxsZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2Zvcm1zL3Jlc2V0LWF1dG9m
aWxsZWQuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9uczoKKwog
MjAxMy0wMi0yMSAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgQWRkIHN1cHBvcnQgZm9yIHRlc3Rpbmcgc3RhdGVzIGNoYW5naW5nIGFzeW5jaHJvbm91
c2x5LiBBcHBseSBpdCB0byBzdGF0ZS11cmwtc2V0cy1saW5rcy12aXNpdGVkLmh0bWwuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWF1dG9maWxsZWQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtYXV0b2ZpbGxlZC5odG1sCmluZGV4IDM4MTUwYWNk
NWEzYjA2OGM3ZjEzMTNmMDU2NDE5MzgyYzM1ODg3ZmEuLmZmZmQwODgxMzQzMjQ2ZTEyYTc3OTI0
MDIwYTkxMDE4MWY3OTAxZjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5w
dXQtYXV0b2ZpbGxlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtYXV0
b2ZpbGxlZC5odG1sCkBAIC0xMiw4ICsxMiw4IEBACiAgICAgICAgIHZhciBvcmlnaW5hbEZvcmVn
cm91bmQgPSBjb21wdXRlZFN0eWxlLmNvbG9yOwogICAgICAgICB2YXIgb3JpZ2luYWxCYWNrZ3Jv
dW5kID0gY29tcHV0ZWRTdHlsZS5iYWNrZ3JvdW5kQ29sb3I7CiAKLSAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldEF1dG9maWxsZWQodGYs
IHRydWUpOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAgICAgd2lu
ZG93LmludGVybmFscy5zZXRBdXRvZmlsbGVkKHRmLCB0cnVlKTsKICAgICAgICAgfQogCiAgICAg
ICAgIC8vIEJvdGggdGhlIGZvcmVncm91bmQgYW5kIGJhY2tncm91bmQgY29sb3JzIHNob3VsZCBj
aGFuZ2UuCkBAIC0yOSw4ICsyOSw4IEBACiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIuc2V0QXV0b2ZpbGxlZCh0ZiwgZmFsc2UpOworICAgICAgICBpZiAod2luZG93LmludGVybmFs
cykgeworICAgICAgICAgICAgd2luZG93LmludGVybmFscy5zZXRBdXRvZmlsbGVkKHRmLCBmYWxz
ZSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBDb2xvcnMgc2hvdWxkIGJlIHJlc3RvcmVkLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNldC1hdXRvZmlsbGVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc2V0LWF1dG9maWxsZWQuaHRtbAppbmRleCA2NjJm
MTJlMTI4ZDYyODAwNjMwYzJhNjA4M2QxYzFlMGUwM2M2Y2FjLi5jNGExNjFhNGY0N2Q3YWYwMjMy
ZDU1NWZjYTBjMWY3MDJjYjRhYzliIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3Jlc2V0LWF1dG9maWxsZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc2V0
LWF1dG9maWxsZWQuaHRtbApAQCAtMTIsOCArMTIsOCBAQAogICAgICAgICB9CiAKICAgICAgICAg
dmFyIGZpZWxkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpZWxkJyk7Ci0gICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRBdXRvZmls
bGVkKGZpZWxkLCB0cnVlKTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAg
ICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0QXV0b2ZpbGxlZChmaWVsZCwgdHJ1ZSk7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICB0ZXN0RmFpbGVkKCdUaGlzIHRlc3QgcmVxdWlyZXMg
YSBMYXlvdXRUZXN0Q29udHJvbGxlci4nKTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZDM4ZmFjZjZiOTA3YzU0ZGY0
NjMxNDBhYjVmYjg2NjI1NTMyOGJiZi4uZmU0NDEyMWYzMjg2NTE5NTI2YzdjMDI1Mjc1ZmM3MDg1
MmNlNTRlNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3Rh
dGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTUwMywxMCArNTAzLDYgQEAgc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zdG9yYWdl
dHJhY2tlci9zdG9yYWdlLXRyYWNrZXItNS1kZWxldGUtb25lLmh0bWwKIHN0b3JhZ2UvZG9tc3Rv
cmFnZS9sb2NhbHN0b3JhZ2Uvc3RvcmFnZXRyYWNrZXIvc3RvcmFnZS10cmFja2VyLTYtY3JlYXRl
Lmh0bWwKIHN0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc3RvcmFnZXRyYWNrZXIvc3Rv
cmFnZS10cmFja2VyLTctdXNhZ2UuaHRtbAogCi0jIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgbGF5
b3V0VGVzdENvbnRyb2xsZXIuc2V0QXV0b2ZpbGxlZAotZmFzdC9mb3Jtcy9pbnB1dC1hdXRvZmls
bGVkLmh0bWwKLWZhc3QvZm9ybXMvcmVzZXQtYXV0b2ZpbGxlZC5odG1sCi0KICMgV2ViS2l0VGVz
dFJ1bm5lciBuZWVkcyBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKQogIyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY4ODEKIGVkaXRpbmcvc2VsZWN0aW9uL2NvbnRl
eHQtbWVudS10ZXh0LXNlbGVjdGlvbi5odG1sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189895</attachid>
            <date>2013-02-22 19:05:38 -0800</date>
            <delta_ts>2013-02-22 22:38:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110521-20130223130158.patch</filename>
            <type>text/plain</type>
            <size>28401</size>
            <attacher name="Jason Anderssen">janderssen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNjg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVhZTVjYzVlODk4Njhj
N2Q4ZTJlNDI3MmZhMWJjMzg0MTdmYWMxMS4uYWJiZDI3Mjc3YjAyODNkOWE1ZThiOTBjZmRkNzZk
MzkzNGMyN2MxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEzLTAyLTIyICBKYXNv
biBBbmRlcnNzZW4gIDxqYW5kZXJzc2VuQGdtYWlsLmNvbT4KKworICAgICAgICBNb3ZlIHNldEF1
dG9maWxsZWQgZnJvbSBUZXN0UnVubmVyIHRvIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDUyMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldEF1dG9maWxs
ZWQpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgIChJbnRlcm5hbHMp
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMy0wMi0yMSAgVG9ueSBH
ZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEludmFsaWRhdGUgb3V0
c3RhbmRpbmcgY2hlY2twb2ludHMgZm9yIHRoZSBiYWNrZ3JvdW5kIGlucHV0IHN0cmVhbSBhbmQg
cHJlbG9hZCBzY2FubmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggMTlkN2RmOWY3NDI1NjQzNjg1YWU3
NzVlNWEwNzZkZTM0MmRjZDkyNS4uNjExMGI2ZDk2ZWQ2ZDExZGExYzA3YTBkNWM4NjIzNmUwNzk1
NmY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTAyLTIyICBKYXNv
biBBbmRlcnNzZW4gIDxqYW5kZXJzc2VuQGdtYWlsLmNvbT4KKworICAgICAgICBNb3ZlIHNldEF1
dG9maWxsZWQgZnJvbSBUZXN0UnVubmVyIHRvIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDUyMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmwuaDoKKwogMjAxMy0wMi0xOSAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIENvbnZlcnQgMyBzZXR0aW5ncyB0byB1c2UgU2V0dGluZ3MuaW4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZwppbmRleCBmN2VhNGUyMDU4OTlkOTVlY2M5OGJhNmM1ZDJhMzRhZDg4OGFlYjlh
Li42YWRmNjViMTIyMTY0MzA4ZGNkOTY3MzdhNDFhMjVhMTVkYzMwMTU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDItMjIgIEphc29uIEFuZGVyc3NlbiAgPGphbmRl
cnNzZW5AZ21haWwuY29tPgorCisgICAgICAgIE1vdmUgc2V0QXV0b2ZpbGxlZCBmcm9tIFRlc3RS
dW5uZXIgdG8gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTEwNTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrKToKKwogMjAxMy0wMi0yMSAgR2VvcmdlIE1j
Q29sbGlzdGVyICA8Z2VvcmdlLm1jY29sbGlzdGVyQGdtYWlsLmNvbT4KIAogICAgICAgICBbR1RL
XSBSZW1vdmUgc3VicmVzb3VyY2UgbGVha3MgZnJvbSBXZWJLaXQxIGFuZCBXZWJLaXQyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hh
bmdlTG9nCmluZGV4IGE4NDJhMjBmYjI4YWQ5NWIxNGU3ODZiMWI1ODJmYzU2N2E5MmM5ZmEuLmQz
MGJlM2ZlZmU3YzY3NWQwYjE5MDQzYzRmYjY2MTE5YzMzNzAzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTMtMDItMjIgIEphc29uIEFuZGVyc3NlbiAgPGphbmRlcnNzZW5A
Z21haWwuY29tPgorCisgICAgICAgIE1vdmUgc2V0QXV0b2ZpbGxlZCBmcm9tIFRlc3RSdW5uZXIg
dG8gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTEwNTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaDoKKwogMjAxMy0wMi0y
MSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KIAogICAg
ICAgICBbUXRdIFJlcGxhY2UgUVdlYlBhZ2VBZGFwdG9yOjpUb3VjaEFkanVzdGVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMzgzNDQxMDkxNjMwMTI5MzdjOWY1NTVjMGU1
NzI4NDkzOGYzZmZhNy4uZjQ2MTBlNmQwMDg3OGUzZjkzMjE0MWFlYjU0ZTlmMDJjNzBiZDIyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtODE2LDYgKzgxNiwxNiBAQCBW
ZWN0b3I8U3RyaW5nPiBJbnRlcm5hbHM6OmZvcm1Db250cm9sU3RhdGVPZlByZXZpb3VzSGlzdG9y
eUl0ZW0oRXhjZXB0aW9uQ29kZSYgZQogICAgIH0KICAgICByZXR1cm4gbWFpbkl0ZW0tPnRhcmdl
dCgpID09IHVuaXF1ZU5hbWUgPyBtYWluSXRlbS0+ZG9jdW1lbnRTdGF0ZSgpIDogbWFpbkl0ZW0t
PmNoaWxkSXRlbVdpdGhUYXJnZXQodW5pcXVlTmFtZSktPmRvY3VtZW50U3RhdGUoKTsKIH0KKyAg
ICAKK3ZvaWQgSW50ZXJuYWxzOjpzZXRBdXRvZmlsbGVkKEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wg
ZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgSFRNTElucHV0RWxlbWVudCogaW5w
dXRFbGVtZW50ID0gZWxlbWVudC0+dG9JbnB1dEVsZW1lbnQoKTsKKyAgICBpZiAoIWlucHV0RWxl
bWVudCkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBpbnB1dEVsZW1lbnQtPnNldEF1dG9maWxsZWQoZW5hYmxlZCk7Cit9CiAK
IHZvaWQgSW50ZXJuYWxzOjpzZXRGb3JtQ29udHJvbFN0YXRlT2ZQcmV2aW91c0hpc3RvcnlJdGVt
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdGF0ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCAzY2FkYTE5YzMzYmM2OGEzMTg5ODE5NGQyOGZj
OGE5MzU4OTk4Nzc5Li41ZTU3M2E3Y2VhYjg3NzZhODU4YzdlOWE3YmVmZGRmOGMwMGFiYWVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTIwOCw2ICsyMDgsOCBAQCBwdWJsaWM6
CiAgICAgSW50ZXJuYWxTZXR0aW5ncyogc2V0dGluZ3MoKSBjb25zdDsKICAgICB1bnNpZ25lZCB3
b3JrZXJUaHJlYWRDb3VudCgpIGNvbnN0OwogCisgICAgdm9pZCBzZXRBdXRvZmlsbGVkKEVsZW1l
bnQqLCBib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmKTsKKwogICAgIHZvaWQgc2V0QmF0dGVy
eVN0YXR1cyhEb2N1bWVudCosIGNvbnN0IFN0cmluZyYgZXZlbnRUeXBlLCBib29sIGNoYXJnaW5n
LCBkb3VibGUgY2hhcmdpbmdUaW1lLCBkb3VibGUgZGlzY2hhcmdpbmdUaW1lLCBkb3VibGUgbGV2
ZWwsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZvaWQgc2V0TmV0d29ya0luZm9ybWF0aW9uKERv
Y3VtZW50KiwgY29uc3QgU3RyaW5nJiBldmVudFR5cGUsIGRvdWJsZSBiYW5kd2lkdGgsIGJvb2wg
bWV0ZXJlZCwgRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRs
CmluZGV4IDg1ZWZkOTQ1YmQ5NTc3NzlhZWNmNDJkMTM5OTBjMDQ4NDIxODM5NzQuLmNkZWI0MDk3
OWQyZGZjNDBkZjQwOGU0MmNmYjljNDJmNTZmNTllZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwKQEAgLTI1Myw0ICsyNTMsNiBAQAogICAgIFtDb25kaXRpb25hbD1FTkNSWVBU
RURfTUVESUFfVjJdIHZvaWQgaW5pdGlhbGl6ZU1vY2tDRE0oKTsKICAgICAKICAgICBbQ29uZGl0
aW9uYWw9U1BFRUNIX1NZTlRIRVNJU10gdm9pZCBlbmFibGVNb2NrU3BlZWNoU3ludGhlc2l6ZXIo
KTsKKworICAgIHZvaWQgc2V0QXV0b2ZpbGxlZChpbiBFbGVtZW50IGlucHV0RWxlbWVudCwgaW4g
Ym9vbGVhbiBlbmFibGVkKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwu
Y3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0RWZsLmNwcAppbmRleCA4YmI0ODZkYWQ5YzM3OGZkNjNjZWJhNTVlNDAyZmE2MDMwMjM2MmQx
Li5iOWQxN2U4YzE4NDJmMzAzMWNlOTdjMGRhYzdmZDgyNWMxNzIxNzg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydEVmbC5jcHAKQEAgLTI0NywxOSArMjQ3LDYgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmw6OnNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJl
ZgogICAgIGlucHV0RWxlbWVudC0+c2V0VmFsdWVGb3JVc2VyKHZhbHVlKTsKIH0KIAotdm9pZCBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldEF1dG9maWxsZWQoSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCwgYm9vbCBhdXRvZmlsbGVkKQotewotICAgIEpTQzo6
RXhlY1N0YXRlKiBleGVjID0gdG9KUyhjb250ZXh0KTsKLSAgICBXZWJDb3JlOjpFbGVtZW50KiBl
bGVtZW50ID0gV2ViQ29yZTo6dG9FbGVtZW50KHRvSlMoZXhlYywgbm9kZU9iamVjdCkpOwotICAg
IGlmICghZWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQqIGlucHV0RWxlbWVudCA9IGVsZW1lbnQtPnRvSW5wdXRFbGVtZW50KCk7Ci0gICAgaWYg
KCFpbnB1dEVsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlucHV0RWxlbWVudC0+c2V0
QXV0b2ZpbGxlZChhdXRvZmlsbGVkKTsKLX0KLQogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRF
Zmw6OnNldERlZmVyc0xvYWRpbmcoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgZGVmZXJzKQog
ewogICAgIERSVF9TVVBQUlRfUEFHRV9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHBhZ2UpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRFZmwuaAppbmRleCBlOTI1MDU3OTJiZmE1Y2VlNDcwNDc5YjhmM2MwZDIzZjcy
NGFjNDg2Li5hZWQzYzc1ZDAyZjlmZjM5MzFlMzc3ZDU5NGEzODI5MTEyZWJhYmE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRFZmwuaApAQCAtNjgsNyArNjgsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0
cmluZyBzdWl0YWJsZURSVEZyYW1lTmFtZShjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUpOwog
ICAgIHN0YXRpYyBTdHJpbmcgbGF5ZXJUcmVlQXNUZXh0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tG
cmFtZSk7CiAgICAgc3RhdGljIHZvaWQgc2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJlZiwgSlNW
YWx1ZVJlZiBub2RlT2JqZWN0LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAgICBzdGF0aWMgdm9p
ZCBzZXRBdXRvZmlsbGVkKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBib29s
IGF1dG9maWxsZWQpOwogICAgIHN0YXRpYyB2b2lkIHNldERlZmVyc0xvYWRpbmcoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIGJvb2wgZGVmZXJzKTsKICAgICBzdGF0aWMgdm9pZCBzZXRMb2Fkc1NpdGVJ
Y29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nU2V0dGluZyhFdmFzX09iamVjdCogZXdrVmlldywgYm9v
bCBsb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nUHJlZmVyZW5jZXMpOwogICAgIHN0
YXRpYyB2b2lkIHNldE1pbmltdW1Mb2dpY2FsRm9udFNpemUoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IGludCBzaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCmluZGV4IDczNWEwZTc0ZmExYmQy
OTdjZmIzYjg2ODgyMmRjNTUwYjkxODRkYjMuLmVlY2NkNjcyNmEwZjY2ZmFjMjRlMzljNWVlMGVk
ZThhMDYwZDg2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcApAQCAtNTQ4LDE5ICs1NDgs
NiBAQCBDU3RyaW5nIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6YWNjZXNzaWJpbGl0eUhlbHBU
ZXh0KEF0a09iamVjdCogYXhPYmplY3QpCiAgICAgcmV0dXJuIGNvcmVPYmplY3QtPmhlbHBUZXh0
KCkudXRmOCgpOwogfQogCi12b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0QXV0b2Zp
bGxlZChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBib29sIGF1
dG9maWxsZWQpCi17Ci0gICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGNvbnRleHQpOwot
ICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQodG9KUyhleGVjLCBub2RlT2JqZWN0KSk7
Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm47Ci0gICAgSFRNTElucHV0RWxlbWVu
dCogaW5wdXRFbGVtZW50ID0gZWxlbWVudC0+dG9JbnB1dEVsZW1lbnQoKTsKLSAgICBpZiAoIWlu
cHV0RWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaW5wdXRFbGVtZW50LT5zZXRBdXRv
ZmlsbGVkKGF1dG9maWxsZWQpOwotfQotCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6
c2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vZGVPYmpl
Y3QsIEpTU3RyaW5nUmVmIHZhbHVlKQogewogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdG9K
Uyhjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKaW5kZXggYTM0OWZhOGNjZWVkYTc1MmQ4
NjIwZTdlNmZiMGFlZjFlM2RjMTdhZS4uNDJiODVjZDVmZDlmY2JjNTgyMjRmMjE5OWQ2OGE2MTQx
NDliMzIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKQEAgLTY4LDcgKzY4LDYgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBBdGtPYmplY3QqIGdldEZvY3VzZWRBY2Nlc3NpYmxlRWxlbWVudChXZWJL
aXRXZWJGcmFtZSopOwogICAgIHN0YXRpYyBBdGtPYmplY3QqIGdldFJvb3RBY2Nlc3NpYmxlRWxl
bWVudChXZWJLaXRXZWJGcmFtZSopOwogICAgIHN0YXRpYyB2b2lkIGxheW91dEZyYW1lKFdlYktp
dFdlYkZyYW1lKik7Ci0gICAgc3RhdGljIHZvaWQgc2V0QXV0b2ZpbGxlZChKU0NvbnRleHRSZWYs
IEpTVmFsdWVSZWYsIGJvb2wpOwogICAgIHN0YXRpYyB2b2lkIHNldFZhbHVlRm9yVXNlcihKU0Nv
bnRleHRSZWYsIEpTVmFsdWVSZWYsIEpTU3RyaW5nUmVmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91
bGRDbG9zZShXZWJLaXRXZWJGcmFtZSopOwogICAgIHN0YXRpYyBib29sIGVsZW1lbnREb2VzQXV0
b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZChXZWJLaXRXZWJGcmFtZSosIEpTU3RyaW5nUmVmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdC5jcHAKaW5kZXggMDc1MjhiMDFmOTYzNzhjMDQ1MGM4ZTliMWY5NDU3
NmEwZmY2ODM1Mi4uNGVjNWQyZTllYjRhZjc3ZDcxNDI3ZTJmYTBiNDU3MWRjNTc5YzllYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdC5jcHAKQEAgLTI2NCwxOCArMjY0LDYgQEAgYm9vbCBEdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdDo6aGFzRG9jdW1lbnRFbGVtZW50KFFXZWJGcmFtZUFkYXB0ZXIgKmFkYXB0
ZXIpCiAgICAgcmV0dXJuIGFkYXB0ZXItPmZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1l
bnQoKTsKIH0KIAotdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0QXV0b2ZpbGxlZChj
b25zdCBRV2ViRWxlbWVudCYgZWxlbWVudCwgYm9vbCBpc0F1dG9maWxsZWQpCi17Ci0gICAgV2Vi
Q29yZTo6RWxlbWVudCogd2ViRWxlbWVudCA9IGVsZW1lbnQubV9lbGVtZW50OwotICAgIGlmICgh
d2ViRWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0
RWxlbWVudCA9IHdlYkVsZW1lbnQtPnRvSW5wdXRFbGVtZW50KCk7Ci0gICAgaWYgKCFpbnB1dEVs
ZW1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlucHV0RWxlbWVudC0+c2V0QXV0b2ZpbGxl
ZChpc0F1dG9maWxsZWQpOwotfQotCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRW
YWx1ZUZvclVzZXIoY29uc3QgUVdlYkVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFFTdHJpbmcmIHZh
bHVlKQogewogICAgIFdlYkNvcmU6OkVsZW1lbnQqIHdlYkVsZW1lbnQgPSBlbGVtZW50Lm1fZWxl
bWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQuaAppbmRleCA0MDFkOWI2MjlmMTAzYWUwNTI2MmI0ZDdmZTUw
YzU5OTZhZDM5NjE3Li4wM2I0ODhiOWNjYWYyNTNjOTkxZDhkMDJlMGY2NDI0OGViNDM0YjIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0LmgKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdC5oCkBAIC0xMDgsNyArMTA4LDYgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIHZvaWQgZ2FyYmFnZUNvbGxlY3RvckNvbGxlY3QoKTsKICAgICBzdGF0aWMgdm9pZCBnYXJi
YWdlQ29sbGVjdG9yQ29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkKGJvb2wgd2FpdFVudGlsRG9uZSk7
Ci0gICAgc3RhdGljIHZvaWQgc2V0QXV0b2ZpbGxlZChjb25zdCBRV2ViRWxlbWVudCYsIGJvb2wg
ZW5hYmxlZCk7CiAgICAgc3RhdGljIHZvaWQgc2V0VmFsdWVGb3JVc2VyKGNvbnN0IFFXZWJFbGVt
ZW50JiwgY29uc3QgUVN0cmluZyYgdmFsdWUpOwogICAgIHN0YXRpYyBpbnQgamF2YVNjcmlwdE9i
amVjdHNDb3VudCgpOwogICAgIHN0YXRpYyB2b2lkIGNsZWFyU2NyaXB0V29ybGRzKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29s
cy9zeW1ib2xzLmZpbHRlcgppbmRleCA0OWY0YjZlNzIxYWYyYmQxNWNlZmVmYjljZDlkYWUwOTg4
YTEyNjk0Li45ZTFjZjY1N2FiM2IwZTYwMmNkOWNkNWFmOTM4NGZlNDAxZGFhOWUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9v
bHMvc3ltYm9scy5maWx0ZXIKQEAgLTc2LDYgKzc2LDcgQEAgX1pON1dlYkNvcmUxNFNjaGVtZVJl
Z2lzdHJ5NTdyZW1vdmVVUkxTY2hlbWVSZWdpc3RlcmVkQXNCeXBhc3NpbmdDb250ZW50U2VjdXJp
dHkKIF9aTjdXZWJDb3JlMTVJbnNwZWN0b3JDbGllbnQzMWRvRGlzcGF0Y2hNZXNzYWdlT25Gcm9u
dGVuZFBhZ2VFUE5TXzRQYWdlRVJLTjNXVEY2U3RyaW5nRTsKIF9aTjdXZWJDb3JlMTVzZXRET01F
eGNlcHRpb25FUE4zSlNDOUV4ZWNTdGF0ZUVpOwogX1pON1dlYkNvcmUxNXRvRE9NU3RyaW5nTGlz
dEVQTjNKU0M5RXhlY1N0YXRlRU5TMF83SlNWYWx1ZUU7CitfWk43V2ViQ29yZTE2SFRNTElucHV0
RWxlbWVudDEzc2V0QXV0b2ZpbGxlZEViOwogX1pON1dlYkNvcmUxNkhUTUxJbnB1dEVsZW1lbnQx
N3NldFN1Z2dlc3RlZFZhbHVlRVJLTjNXVEY2U3RyaW5nRTsKIF9aTjdXZWJDb3JlMTZIVE1MSW5w
dXRFbGVtZW50MTVzZXRFZGl0aW5nVmFsdWVFUktOM1dURjZTdHJpbmdFOwogX1pON1dlYkNvcmUx
NnNjcmlwdE5hbWVUb0NvZGVFUktOM1dURjZTdHJpbmdFOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDk2YTFhYzQzYzM0ZDQzOTMxMGZjYWNiNjIy
OGJjYTJhYTFhOWFmZmQuLjU2OTEzZjYxOTM2ZDc4NzIzMTVkNGE2MDUzNjJhOWU4MzBkNGU2MDgg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxMy0wMi0yMiAgSmFzb24gQW5kZXJzc2VuICA8amFuZGVyc3NlbkBnbWFp
bC5jb20+CisKKyAgICAgICAgTW92ZSBzZXRBdXRvZmlsbGVkIGZyb20gVGVzdFJ1bm5lciB0byBX
ZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTA1MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c3Rh
dGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmg6Cisg
ICAgICAgIChUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5
L1Rlc3RSdW5uZXJCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OlRlc3RSdW5uZXI6OlRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKFRlc3RSdW5uZXIp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcDoKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHA6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW06CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvcXQvVGVzdFJ1bm5lclF0LmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9UZXN0
UnVubmVyUXQuaDoKKyAgICAgICAgKFRlc3RSdW5uZXJRdCk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4
L1Rlc3RSdW5uZXJXeC5jcHA6CisKIDIwMTMtMDItMjEgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBzdXBwb3J0IHRoZSBsdWNpZCB2ZXJz
aW9uIG9mIGZyZWV0eXBlIG9uIHByZWNpc2UgaW4gRFJUCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5u
ZXIuY3BwCmluZGV4IDZjOGY4ZmI5ZDE2ODg0NzEzN2E0ZDBkNWZmYmY3N2I0YzdmNzM2MDkuLjcy
ZTZmZjE1ZDMwM2U0YWRhYTlhYjA4MTA2NTJmYTg5YzMzMGYwYTEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L1Rlc3RSdW5uZXIuY3BwCkBAIC05MzksMTcgKzkzOSw2IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNl
dEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCi1zdGF0
aWMgSlNWYWx1ZVJlZiBzZXRBdXRvZmlsbGVkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJn
dW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKQotewotICAgIGlmIChhcmd1bWVudENvdW50ICE9IDIgfHwgIWFyZ3VtZW50c1swXSkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwotCi0gICAgVGVz
dFJ1bm5lciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdl
dFByaXZhdGUodGhpc09iamVjdCkpOwotICAgIGNvbnRyb2xsZXItPnNldEF1dG9maWxsZWQoY29u
dGV4dCwgYXJndW1lbnRzWzBdLCBKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1sx
XSkpOwotCi0gICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwotfQotCiBz
dGF0aWMgSlNWYWx1ZVJlZiBzZXRDYWNoZU1vZGVsQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3Qg
YXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBNYWMgaW1wbGVtZW50YXRpb24uCkBAIC0yMTUzLDcg
KzIxNDIsNiBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBUZXN0UnVubmVyOjpzdGF0aWNGdW5jdGlvbnMo
KQogICAgICAgICB7ICJzZXRBdXRoZW50aWNhdGlvblBhc3N3b3JkIiwgc2V0QXV0aGVudGljYXRp
b25QYXNzd29yZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEF1dGhlbnRpY2F0aW9u
VXNlcm5hbWUiLCBzZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAg
ICAgICAgeyAic2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQiLCBzZXRBdXRob3JBbmRVc2Vy
U3R5bGVzRW5hYmxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCi0gICAgICAgIHsgInNldEF1dG9maWxsZWQi
LCBzZXRBdXRvZmlsbGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0Q2FjaGVNb2Rl
bCIsIHNldENhY2hlTW9kZWxDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRDYWxsQ2xv
c2VPbldlYlZpZXdzIiwgc2V0Q2FsbENsb3NlT25XZWJWaWV3c0NhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAg
ICAgICAgIHsgInNldENhbk9wZW5XaW5kb3dzIiwgc2V0Q2FuT3BlbldpbmRvd3NDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCmluZGV4IDc5MjBlYzY0NDM2NzkzYWNk
NjIyYTJhZjU5NDNlNWQ0ZTNkOWVhZTguLmRmODQwZTFjMjgzZDYzN2M2MjYyNTBjZDg1MDEyZTE4
YTY4NjBjODggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKQEAgLTg2LDcgKzg2LDYgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0QXBwQ2FjaGVNYXhpbXVtU2l6ZSh1bnNpZ25lZCBsb25nIGxv
bmcgcXVvdGEpOwogICAgIHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKHVuc2ln
bmVkIGxvbmcgbG9uZyk7CiAgICAgdm9pZCBzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChi
b29sKTsKLSAgICB2b2lkIHNldEF1dG9maWxsZWQoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmIG5v
ZGVPYmplY3QsIGJvb2wgYXV0b2ZpbGxlZCk7CiAgICAgdm9pZCBzZXRDYWNoZU1vZGVsKGludCk7
CiAgICAgdm9pZCBzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZShib29sIHNldERlbGVnYXRlLCBib29s
IHBlcm1pc3NpdmUpOwogICAgIHZvaWQgc2V0RGF0YWJhc2VRdW90YSh1bnNpZ25lZCBsb25nIGxv
bmcgcXVvdGEpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9U
ZXN0UnVubmVyQmxhY2tCZXJyeS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5
L1Rlc3RSdW5uZXJCbGFja0JlcnJ5LmNwcAppbmRleCA0YWQzNmU2NjI3ZDczMWMxYjhlZTEyNzUy
YzQyYTIzZjQ5MDI4ZjEyLi43YzA4YWFlNzQxMzRkN2Y5MmUwNzA2ZTJlYmM3YzE2ZDg2YzRlNmRi
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1Rlc3RSdW5uZXJC
bGFja0JlcnJ5LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1Rlc3RS
dW5uZXJCbGFja0JlcnJ5LmNwcApAQCAtNjE2LDE5ICs2MTYsNiBAQCB2b2lkIFRlc3RSdW5uZXI6
OnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRBdXRvZmlsbGVkKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QsIGJvb2wgYXV0b2ZpbGxlZCkKLXsKLSAg
ICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7Ci0gICAgV2ViQ29yZTo6RWxl
bWVudCogZWxlbWVudCA9IHRvRWxlbWVudCh0b0pTKGV4ZWMsIG5vZGVPYmplY3QpKTsKLSAgICBp
ZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLSAgICBXZWJDb3JlOjpIVE1MSW5wdXRFbGVt
ZW50KiBpbnB1dEVsZW1lbnQgPSBlbGVtZW50LT50b0lucHV0RWxlbWVudCgpOwotICAgIGlmICgh
aW5wdXRFbGVtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpbnB1dEVsZW1lbnQtPnNldEF1
dG9maWxsZWQoYXV0b2ZpbGxlZCk7Ci19Ci0KIGludCBUZXN0UnVubmVyOjpudW1iZXJPZlBlbmRp
bmdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0cygpCiB7CiAgICAgcmV0dXJuIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydDo6bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dHMoQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6Y3VycmVudEluc3RhbmNlKCkt
PnBhZ2UoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDJhYjlhMzA4OWMzYjEwYWI5MTAy
ODFkMTljNjNkNDIxY2MwNjljYTguLjE3MmE3YWViNmI3ODAzZWE0ZjQxZTMwYWJhN2Y5N2U4NjU2
YWQ3ODIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCkBAIC0xOTgsNyArMTk4LDYgQEAgVGVzdFJ1
bm5lcjo6VGVzdFJ1bm5lcihUZXN0SW50ZXJmYWNlcyogaW50ZXJmYWNlcykKICAgICBiaW5kTWV0
aG9kKCJzdGFydFNwZWVjaElucHV0IiwgJlRlc3RSdW5uZXI6OnN0YXJ0U3BlZWNoSW5wdXQpOwog
ICAgIGJpbmRNZXRob2QoIm1hcmtlclRleHRGb3JMaXN0SXRlbSIsICZUZXN0UnVubmVyOjptYXJr
ZXJUZXh0Rm9yTGlzdEl0ZW0pOwogICAgIGJpbmRNZXRob2QoImZpbmRTdHJpbmciLCAmVGVzdFJ1
bm5lcjo6ZmluZFN0cmluZyk7Ci0gICAgYmluZE1ldGhvZCgic2V0QXV0b2ZpbGxlZCIsICZUZXN0
UnVubmVyOjpzZXRBdXRvZmlsbGVkKTsKICAgICBiaW5kTWV0aG9kKCJzZXRWYWx1ZUZvclVzZXIi
LCAmVGVzdFJ1bm5lcjo6c2V0VmFsdWVGb3JVc2VyKTsKICAgICBiaW5kTWV0aG9kKCJlbmFibGVG
aXhlZExheW91dE1vZGUiLCAmVGVzdFJ1bm5lcjo6ZW5hYmxlRml4ZWRMYXlvdXRNb2RlKTsKICAg
ICBiaW5kTWV0aG9kKCJzZXRGaXhlZExheW91dFNpemUiLCAmVGVzdFJ1bm5lcjo6c2V0Rml4ZWRM
YXlvdXRTaXplKTsKQEAgLTEzNzcsMjMgKzEzNzYsNiBAQCB2b2lkIFRlc3RSdW5uZXI6OmZpbmRT
dHJpbmcoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3Vs
dAogICAgIHJlc3VsdC0+c2V0KGZpbmRSZXN1bHQpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNl
dEF1dG9maWxsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQq
IHJlc3VsdCkKLXsKLSAgICByZXN1bHQtPnNldE51bGwoKTsKLSAgICBpZiAoYXJndW1lbnRzLnNp
emUoKSAhPSAyIHx8ICFhcmd1bWVudHNbMV0uaXNCb29sKCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIFdlYkVsZW1lbnQgZWxlbWVudDsKLSAgICBpZiAoIVdlYkJpbmRpbmdzOjpnZXRFbGVtZW50
KGFyZ3VtZW50c1swXS52YWx1ZS5vYmplY3RWYWx1ZSwgJmVsZW1lbnQpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBXZWJJbnB1dEVsZW1lbnQqIGlucHV0ID0gdG9XZWJJbnB1dEVsZW1lbnQoJmVs
ZW1lbnQpOwotICAgIGlmICghaW5wdXQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlucHV0LT5z
ZXRBdXRvZmlsbGVkKGFyZ3VtZW50c1sxXS52YWx1ZS5ib29sVmFsdWUpOwotfQotCiB2b2lkIFRl
c3RSdW5uZXI6OnNldFZhbHVlRm9yVXNlcihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50
cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1
bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVz
dFJ1bm5lci5oCmluZGV4IGMyZGM4NjY5MjI0ZGJkZjFiYTkyNDVkNGIyYTc4OTllYmRmN2MyZGYu
Ljc0Y2M4MWVhZGU5OTNmNmY1NDgxMjJiMGQ2YzQ3Y2M4MTc3M2IzMzEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVu
bmVyLmgKQEAgLTI0MSwxMCArMjQxLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1hcmtlclRleHRG
b3JMaXN0SXRlbShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9p
ZCBmaW5kU3RyaW5nKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAotICAg
IC8vIEV4cGVjdHMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIGJlIGFuIGlucHV0IGVsZW1lbnQgYW5k
IHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gYmUgYSBib29sZWFuLgotICAgIC8vIEZvcndhcmRzIHRo
ZSBzZXRBdXRvZmlsbGVkKCkgY2FsbCB0byB0aGUgZWxlbWVudC4KLSAgICB2b2lkIHNldEF1dG9m
aWxsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwotCiAgICAgLy8gRXhw
ZWN0cyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gYmUgYW4gaW5wdXQgZWxlbWVudCBhbmQgdGhlIHNl
Y29uZCBhcmd1bWVudCB0byBiZSBhIHN0cmluZyB2YWx1ZS4KICAgICAvLyBGb3J3YXJkcyB0aGUg
c2V0VmFsdWVGb3JVc2VyKCkgY2FsbCB0byB0aGUgZWxlbWVudC4KICAgICB2b2lkIHNldFZhbHVl
Rm9yVXNlcihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHAKaW5kZXggNDU2NDYxMDljY2ZlNmQ4Yjhh
NzcwYmVhYzE2NDYxNzA1ZjNiNjgwYi4uZjM5NDNkYzVkZTg4ODVkOTJjZmQ0YWFhMjYxMGFiODFh
MTdkMWE1ZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJF
ZmwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcApA
QCAtMzM4LDExICszMzgsNiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldEF1dGhvckFuZFVzZXJTdHls
ZXNFbmFibGVkKGJvb2wgZmxhZykKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldEF1
dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKGJyb3dzZXItPm1haW5WaWV3KCksIGZsYWcpOwogfQog
Ci12b2lkIFRlc3RSdW5uZXI6OnNldEF1dG9maWxsZWQoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
VmFsdWVSZWYgbm9kZU9iamVjdCwgYm9vbCBhdXRvZmlsbGVkKQotewotICAgIER1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbDo6c2V0QXV0b2ZpbGxlZChjb250ZXh0LCBub2RlT2JqZWN0LCBhdXRvZmls
bGVkKTsKLX0KLQogdm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9v
bCwgZG91YmxlLCBib29sLCBkb3VibGUsIGJvb2wsIGRvdWJsZSkKIHsKICAgICAvLyBGSVhNRTog
SW1wbGVtZW50IGZvciBEZXZpY2VPcmllbnRhdGlvbiBsYXlvdXQgdGVzdHMuCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAKaW5kZXggNGM4ZTdiNDA5ZDA4NmU0MWRh
NmQ4N2Y5MzAxNjE0NzEyOTM5YWJlOS4uOTk2ZmI1ODJjYzA3OWNmNmRhMDkyZmYyNzFkMGUzYWY3
MTkwYmYwYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJH
dGsuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9UZXN0UnVubmVyR3RrLmNwcApA
QCAtNDE0LDExICs0MTQsNiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldEF1dGhvckFuZFVzZXJTdHls
ZXNFbmFibGVkKGJvb2wgZmxhZykKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CiB9CiAKLXZvaWQg
VGVzdFJ1bm5lcjo6c2V0QXV0b2ZpbGxlZChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJl
ZiBub2RlT2JqZWN0LCBib29sIGlzQXV0b2ZpbGxlZCkKLXsKLSAgICBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGs6OnNldEF1dG9maWxsZWQoY29udGV4dCwgbm9kZU9iamVjdCwgaXNBdXRvZmlsbGVk
KTsKLX0KLQogdm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBj
YW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91Ymxl
IGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpCiB7CiAgICAgLy8gRklY
TUU6IEltcGxlbWVudCBmb3IgRGV2aWNlT3JpZW50YXRpb24gbGF5b3V0IHRlc3RzLgpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0gYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQppbmRleCBmYzNhZmE2NzY1MjBhYmQ0
YWY0YmI1YzVmYzJjNWQ5NTQzNTRkZmUwLi4zNmIzYzkyOWYxNDE1MGU3MmFjYzU2ZDQxZDQyZGRl
ZmZmNTc5NjRhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5l
ck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQpA
QCAtNDE5LDE1ICs0MTksNiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldEF1dGhvckFuZFVzZXJTdHls
ZXNFbmFibGVkKGJvb2wgZmxhZykKICAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gcHJlZmVyZW5j
ZXNdIHNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkOmZsYWddOwogfQogCi12b2lkIFRlc3RS
dW5uZXI6OnNldEF1dG9maWxsZWQoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9k
ZU9iamVjdCwgYm9vbCBhdXRvZmlsbGVkKQotewotICAgIERPTUVsZW1lbnQgKmVsZW1lbnQgPSBb
RE9NRWxlbWVudCBfRE9NRWxlbWVudEZyb21KU0NvbnRleHQ6Y29udGV4dCB2YWx1ZTpub2RlT2Jq
ZWN0XTsKLSAgICBpZiAoIWVsZW1lbnQgfHwgIVtlbGVtZW50IGlzS2luZE9mQ2xhc3M6W0RPTUhU
TUxJbnB1dEVsZW1lbnQgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgWyhET01IVE1M
SW5wdXRFbGVtZW50ICopZWxlbWVudCBfc2V0QXV0b2ZpbGxlZDphdXRvZmlsbGVkXTsKLX0KLQog
dm9pZCBUZXN0UnVubmVyOjpzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZShib29sIHNldERlbGVnYXRl
LCBib29sIHBlcm1pc3NpdmUpCiB7CiAgICAgaWYgKHNldERlbGVnYXRlKSB7CmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmNwcAppbmRleCAyZDdmM2JmMzQxZDYyOWIyYTgwYjdk
OTgwMDYwY2NmMGJkYjc0NzcxLi4xNWFkMTI3NjExZGJjZDllZjEyNDY0ZTVjMjBmMmRhOGI3ZTIx
NDE1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5jcHAKQEAgLTQ3NSwx
MSArNDc1LDYgQEAgdm9pZCBUZXN0UnVubmVyUXQ6OnNldEFwcENhY2hlTWF4aW11bVNpemUodW5z
aWduZWQgbG9uZyBsb25nIHF1b3RhKQogICAgIG1fZHJ0LT53ZWJQYWdlKCktPnNldHRpbmdzKCkt
PnNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlUXVvdGEocXVvdGEpOwogfQogCi12b2lkIFRl
c3RSdW5uZXJRdDo6c2V0QXV0b2ZpbGxlZChjb25zdCBRV2ViRWxlbWVudCYgZWxlbWVudCwgYm9v
bCBpc0F1dG9maWxsZWQpCi17Ci0gICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpz
ZXRBdXRvZmlsbGVkKGVsZW1lbnQsIGlzQXV0b2ZpbGxlZCk7Ci19Ci0KIHZvaWQgVGVzdFJ1bm5l
clF0OjpzZXRWYWx1ZUZvclVzZXIoY29uc3QgUVdlYkVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFFT
dHJpbmcmIHZhbHVlKQogewogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRWYWx1ZUZv
clVzZXIoZWxlbWVudCwgdmFsdWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
cXQvVGVzdFJ1bm5lclF0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQu
aAppbmRleCBiYzJhZjlhMTQzMzEyZmZiNzI2MDU4NWM0NTAzMjdmY2I1ZTEyOWZkLi42NTJhZDFj
MTdiMDY0NTdkMTA1NDE3ZmUyZTQwNTRlNGI4ZmE0MTdjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9x
dC9UZXN0UnVubmVyUXQuaApAQCAtMTYyLDcgKzE2Miw2IEBAIHB1YmxpYyBRX1NMT1RTOgogICAg
IHZvaWQgc2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBlbmFibGUpOwog
ICAgIHZvaWQgc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wgZW5hYmxlKTsKICAg
ICB2b2lkIHNldEFwcENhY2hlTWF4aW11bVNpemUodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKTsK
LSAgICB2b2lkIHNldEF1dG9maWxsZWQoY29uc3QgUVdlYkVsZW1lbnQmLCBib29sIGVuYWJsZSk7
CiAgICAgdm9pZCBzZXRWYWx1ZUZvclVzZXIoY29uc3QgUVdlYkVsZW1lbnQmLCBjb25zdCBRU3Ry
aW5nJiB2YWx1ZSk7CiAgICAgdm9pZCBzZXRGaXhlZENvbnRlbnRzU2l6ZShpbnQgd2lkdGgsIGlu
dCBoZWlnaHQpOwogICAgIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcAppbmRleCA4YzI3YTUyYzdl
YjQxODc1NTIyYjhiZjMzMWEyNzExMDMxYWUyOTQxLi40YTBiNzg3YWI4NzU5MGI1YjgwNjI1YWVm
OWQyM2M5NmUwZTk4ZjczIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVz
dFJ1bm5lcldpbi5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJX
aW4uY3BwCkBAIC0zMzUsMjcgKzMzNSw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0QXV0aG9yQW5k
VXNlclN0eWxlc0VuYWJsZWQoYm9vbCBmbGFnKQogICAgIHByZWZzUHJpdmF0ZS0+c2V0QXV0aG9y
QW5kVXNlclN0eWxlc0VuYWJsZWQoZmxhZyk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0QXV0
b2ZpbGxlZChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBib29s
IGF1dG9maWxsZWQpCi17Ci0gICAgQ09NUHRyPElXZWJWaWV3PiB3ZWJWaWV3OwotICAgIGlmIChG
QUlMRUQoZnJhbWUtPndlYlZpZXcoJndlYlZpZXcpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Q09NUHRyPElXZWJWaWV3UHJpdmF0ZT4gd2ViVmlld1ByaXZhdGUoUXVlcnksIHdlYlZpZXcpOwot
ICAgIGlmICghd2ViVmlld1ByaXZhdGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIENPTVB0cjxJ
RE9NRWxlbWVudD4gZWxlbWVudDsKLSAgICBpZiAoRkFJTEVEKHdlYlZpZXdQcml2YXRlLT5lbGVt
ZW50RnJvbUpTKGNvbnRleHQsIG5vZGVPYmplY3QsICZlbGVtZW50KSkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIENPTVB0cjxJRm9ybXNBdXRvRmlsbFRyYW5zaXRpb24+IGF1dG9maWxsRWxlbWVu
dChRdWVyeSwgZWxlbWVudCk7Ci0gICAgaWYgKCFhdXRvZmlsbEVsZW1lbnQpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGF1dG9maWxsRWxlbWVudC0+c2V0QXV0b2ZpbGxlZChhdXRvZmlsbGVkKTsK
LX0KLQogdm9pZCBUZXN0UnVubmVyOjpzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZShib29sIHNldERl
bGVnYXRlLCBib29sIHBlcm1pc3NpdmUpCiB7CiAgICAgQ09NUHRyPElXZWJWaWV3PiB3ZWJWaWV3
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvVGVzdFJ1bm5lcld4LmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5jcHAKaW5kZXggZjhmOTg1NTQ2
ZTdmZjM5M2QzYjQyNGY2OTViODQ1NDAxYzgxOGUxNy4uYjFjNDVjNDMwYjY3MzdhZDcwMDAwNDQx
MTk4MjM5NWQxNmUxYTMwOSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvVGVz
dFJ1bm5lcld4LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9UZXN0UnVubmVyV3gu
Y3BwCkBAIC0xOTksMTEgKzE5OSw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0QXV0aG9yQW5kVXNl
clN0eWxlc0VuYWJsZWQoYm9vbCBmbGFnKQogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKIH0KIAot
dm9pZCBUZXN0UnVubmVyOjpzZXRBdXRvZmlsbGVkKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiBl
bGVtZW50LCBib29sIGlzQXV0b2ZpbGxlZCkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50Ci19
Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6c2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQoYm9vbCBwb3B1cEJs
b2NraW5nRW5hYmxlZCkKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggY2Q4ZTVk
MzU0MWM0ODdjZGQ1NmE1MmEwNTBhOGU5NmRiNzM3ZWE2OC4uMTQ4YmE5ZGJhZGNjODVhYmI2NTAy
MTRlZjhjMmIzYjc5NjFhYjRmNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEzLTAyLTIyICBK
YXNvbiBBbmRlcnNzZW4gIDxqYW5kZXJzc2VuQGdtYWlsLmNvbT4KKworICAgICAgICBNb3ZlZCBz
ZXRBdXRvZmlsbGVkIGZyb20gVGVzdFJ1bm5lciB0byBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA1MjEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZm9ybXMvaW5wdXQtYXV0b2Zp
bGxlZC5odG1sOgorICAgICAgICAqIGZhc3QvZm9ybXMvcmVzZXQtYXV0b2ZpbGxlZC5odG1sOgor
ICAgICAgICAqIHBsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDEzLTAyLTIxICBC
ZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgc3Vw
cG9ydCBmb3IgdGVzdGluZyBzdGF0ZXMgY2hhbmdpbmcgYXN5bmNocm9ub3VzbHkuIEFwcGx5IGl0
IHRvIHN0YXRlLXVybC1zZXRzLWxpbmtzLXZpc2l0ZWQuaHRtbC4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtYXV0b2ZpbGxlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9pbnB1dC1hdXRvZmlsbGVkLmh0bWwKaW5kZXggMzgxNTBhY2Q1YTNiMDY4YzdmMTMx
M2YwNTY0MTkzODJjMzU4ODdmYS4uZmZmZDA4ODEzNDMyNDZlMTJhNzc5MjQwMjBhOTEwMTgxZjc5
MDFmMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1hdXRvZmlsbGVk
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1hdXRvZmlsbGVkLmh0bWwK
QEAgLTEyLDggKzEyLDggQEAKICAgICAgICAgdmFyIG9yaWdpbmFsRm9yZWdyb3VuZCA9IGNvbXB1
dGVkU3R5bGUuY29sb3I7CiAgICAgICAgIHZhciBvcmlnaW5hbEJhY2tncm91bmQgPSBjb21wdXRl
ZFN0eWxlLmJhY2tncm91bmRDb2xvcjsKIAotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0QXV0b2ZpbGxlZCh0ZiwgdHJ1ZSk7CisgICAg
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxz
LnNldEF1dG9maWxsZWQodGYsIHRydWUpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gQm90aCB0
aGUgZm9yZWdyb3VuZCBhbmQgYmFja2dyb3VuZCBjb2xvcnMgc2hvdWxkIGNoYW5nZS4KQEAgLTI5
LDggKzI5LDggQEAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRBdXRvZmls
bGVkKHRmLCBmYWxzZSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAg
ICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldEF1dG9maWxsZWQodGYsIGZhbHNlKTsKICAgICAgICAg
fQogCiAgICAgICAgIC8vIENvbG9ycyBzaG91bGQgYmUgcmVzdG9yZWQuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc2V0LWF1dG9maWxsZWQuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvcmVzZXQtYXV0b2ZpbGxlZC5odG1sCmluZGV4IDY2MmYxMmUxMjhkNjI4MDA2
MzBjMmE2MDgzZDFjMWUwZTAzYzZjYWMuLmM0YTE2MWE0ZjQ3ZDdhZjAyMzJkNTU1ZmNhMGMxZjcw
MmNiNGFjOWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVzZXQtYXV0b2Zp
bGxlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVzZXQtYXV0b2ZpbGxlZC5o
dG1sCkBAIC0xMiw4ICsxMiw4IEBACiAgICAgICAgIH0KIAogICAgICAgICB2YXIgZmllbGQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmllbGQnKTsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldEF1dG9maWxsZWQoZmllbGQsIHRy
dWUpOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAgICAgd2luZG93
LmludGVybmFscy5zZXRBdXRvZmlsbGVkKGZpZWxkLCB0cnVlKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1RoaXMgdGVzdCByZXF1aXJlcyBhIExheW91dFRlc3RD
b250cm9sbGVyLicpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBkMzhmYWNmNmI5MDdjNTRkZjQ2MzE0MGFiNWZiODY2
MjU1MzI4YmJmLi5mZTQ0MTIxZjMyODY1MTk1MjZjN2MwMjUyNzVmYzcwODUyY2U1NGU0IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNTAzLDEwICs1MDMs
NiBAQCBzdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3N0b3JhZ2V0cmFja2VyL3N0b3Jh
Z2UtdHJhY2tlci01LWRlbGV0ZS1vbmUuaHRtbAogc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3Rv
cmFnZS9zdG9yYWdldHJhY2tlci9zdG9yYWdlLXRyYWNrZXItNi1jcmVhdGUuaHRtbAogc3RvcmFn
ZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zdG9yYWdldHJhY2tlci9zdG9yYWdlLXRyYWNrZXIt
Ny11c2FnZS5odG1sCiAKLSMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBsYXlvdXRUZXN0Q29udHJv
bGxlci5zZXRBdXRvZmlsbGVkCi1mYXN0L2Zvcm1zL2lucHV0LWF1dG9maWxsZWQuaHRtbAotZmFz
dC9mb3Jtcy9yZXNldC1hdXRvZmlsbGVkLmh0bWwKLQogIyBXZWJLaXRUZXN0UnVubmVyIG5lZWRz
IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygpCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04Njg4MQogZWRpdGluZy9zZWxlY3Rpb24vY29udGV4dC1tZW51LXRleHQt
c2VsZWN0aW9uLmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189908</attachid>
            <date>2013-02-22 22:38:17 -0800</date>
            <delta_ts>2013-02-23 00:16:26 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-110521-20130222223435.patch</filename>
            <type>text/plain</type>
            <size>26483</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MzgzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEzLTAyLTIyICBKYXNvbiBB
bmRlcnNzZW4gIDxqYW5kZXJzc2VuQGdtYWlsLmNvbT4KKworICAgICAgICBNb3ZlIHNldEF1dG9m
aWxsZWQgZnJvbSBUZXN0UnVubmVyIHRvIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDUyMQorCisgICAgICAgIFJldmlld2VkIGJ5IEJl
bmphbWluIFBvdWxhaW4uCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0QXV0b2ZpbGxl
ZCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKEludGVybmFscyk6
CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDEzLTAyLTIyICBBbmRyZWFz
IEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBBdHRyOiBTaW1wbGlmeSBtb2Rp
ZmljYXRpb24gY2FsbGJhY2tzLgpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAkocmV2aXNpb24gMTQzODM2KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQxLDYgKzExNDEsMTYgQEAgdm9pZCBJbnRlcm5hbHM6
OnNldEVkaXRpbmdWYWx1ZShFbGVtZW50KgogICAgIGlucHV0RWxlbWVudC0+c2V0RWRpdGluZ1Zh
bHVlKHZhbHVlKTsKIH0KIAordm9pZCBJbnRlcm5hbHM6OnNldEF1dG9maWxsZWQoRWxlbWVudCog
ZWxlbWVudCwgYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBIVE1MSW5w
dXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBlbGVtZW50LT50b0lucHV0RWxlbWVudCgpOworICAg
IGlmICghaW5wdXRFbGVtZW50KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlucHV0RWxlbWVudC0+c2V0QXV0b2ZpbGxlZChl
bmFibGVkKTsKK30KKwogdm9pZCBJbnRlcm5hbHM6OnNjcm9sbEVsZW1lbnRUb1JlY3QoRWxlbWVu
dCogZWxlbWVudCwgbG9uZyB4LCBsb25nIHksIGxvbmcgdywgbG9uZyBoLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKICAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQtPmRvY3VtZW50KCkgfHwgIWVs
ZW1lbnQtPmRvY3VtZW50KCktPnZpZXcoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCShyZXZpc2lvbiAxNDM4MzYpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNiArMTU5LDcgQEAgcHVibGljOgogICAgIFN0
cmluZyBzdWdnZXN0ZWRWYWx1ZShFbGVtZW50KiBpbnB1dEVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICB2b2lkIHNldFN1Z2dlc3RlZFZhbHVlKEVsZW1lbnQqIGlucHV0RWxlbWVudCwgY29u
c3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0RWRpdGluZ1ZhbHVlKEVs
ZW1lbnQqIGlucHV0RWxlbWVudCwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOworICAg
IHZvaWQgc2V0QXV0b2ZpbGxlZChFbGVtZW50KiwgYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgdm9pZCBzY3JvbGxFbGVtZW50VG9SZWN0KEVsZW1lbnQqLCBsb25nIHgsIGxvbmcg
eSwgbG9uZyB3LCBsb25nIGgsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZvaWQgcGFpbnRDb250
cm9sVGludHMoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJik7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCShyZXZpc2lvbiAxNDM4MzYpCisrKyBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEyNSw2ICsxMjUsNyBAQAog
ICAgIERPTVN0cmluZyBzdWdnZXN0ZWRWYWx1ZShpbiBFbGVtZW50IGlucHV0RWxlbWVudCkgcmFp
c2VzIChET01FeGNlcHRpb24pOwogICAgIHZvaWQgc2V0U3VnZ2VzdGVkVmFsdWUoaW4gRWxlbWVu
dCBpbnB1dEVsZW1lbnQsIGluIERPTVN0cmluZyB2YWx1ZSkgcmFpc2VzIChET01FeGNlcHRpb24p
OwogICAgIHZvaWQgc2V0RWRpdGluZ1ZhbHVlKGluIEVsZW1lbnQgaW5wdXRFbGVtZW50LCBpbiBE
T01TdHJpbmcgdmFsdWUpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICB2b2lkIHNldEF1dG9m
aWxsZWQoaW4gRWxlbWVudCBpbnB1dEVsZW1lbnQsIGluIGJvb2xlYW4gZW5hYmxlZCkgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CiAKICAgICB2b2lkIHBhaW50Q29udHJvbFRpbnRzKGluIERvY3VtZW50
IGRvY3VtZW50KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDE0MzgzNikKKysrIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEzLTAyLTIyICBKYXNvbiBBbmRlcnNzZW4gIDxq
YW5kZXJzc2VuQGdtYWlsLmNvbT4KKworICAgICAgICBNb3ZlIHNldEF1dG9maWxsZWQgZnJvbSBU
ZXN0UnVubmVyIHRvIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExMDUyMQorCisgICAgICAgIFJldmlld2VkIGJ5IEJlbmphbWluIFBvdWxh
aW4uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwu
Y3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5o
OgorCiAyMDEzLTAyLTIyICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+
CiAKICAgICAgICAgW0VGTF0gVXNlIEVJTkFfTE9HIGluc3RlYWQgb2YgZnByaW50ZiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAkocmV2aXNpb24gMTQzODM2KQorKysgU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjQ3LDE5ICsyNDcsNiBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9y
dEVmbDo6c2V0VmFsdWVGCiAgICAgaW5wdXRFbGVtZW50LT5zZXRWYWx1ZUZvclVzZXIodmFsdWUp
OwogfQogCi12b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0QXV0b2ZpbGxlZChKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBib29sIGF1dG9maWxsZWQp
Ci17Ci0gICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGNvbnRleHQpOwotICAgIFdlYkNv
cmU6OkVsZW1lbnQqIGVsZW1lbnQgPSBXZWJDb3JlOjp0b0VsZW1lbnQodG9KUyhleGVjLCBub2Rl
T2JqZWN0KSk7Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm47Ci0gICAgV2ViQ29y
ZTo6SFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gZWxlbWVudC0+dG9JbnB1dEVsZW1l
bnQoKTsKLSAgICBpZiAoIWlucHV0RWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaW5w
dXRFbGVtZW50LT5zZXRBdXRvZmlsbGVkKGF1dG9maWxsZWQpOwotfQotCiB2b2lkIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbDo6c2V0RGVmZXJzTG9hZGluZyhFdmFzX09iamVjdCogZXdrVmlldywg
Ym9vbCBkZWZlcnMpCiB7CiAgICAgRFJUX1NVUFBSVF9QQUdFX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgcGFnZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRFZmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaAkocmV2aXNpb24gMTQzODM2KQor
KysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDYgQEAgcHVibGljOgogICAgIHN0YXRp
YyBTdHJpbmcgc3VpdGFibGVEUlRGcmFtZU5hbWUoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1l
KTsKICAgICBzdGF0aWMgU3RyaW5nIGxheWVyVHJlZUFzVGV4dChjb25zdCBFdmFzX09iamVjdCog
ZXdrRnJhbWUpOwogICAgIHN0YXRpYyB2b2lkIHNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYs
IEpTVmFsdWVSZWYgbm9kZU9iamVjdCwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0gICAgc3RhdGlj
IHZvaWQgc2V0QXV0b2ZpbGxlZChKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCwg
Ym9vbCBhdXRvZmlsbGVkKTsKICAgICBzdGF0aWMgdm9pZCBzZXREZWZlcnNMb2FkaW5nKEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBib29sIGRlZmVycyk7CiAgICAgc3RhdGljIHZvaWQgc2V0TG9hZHNT
aXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1NldHRpbmcoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IGJvb2wgbG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1ByZWZlcmVuY2VzKTsKICAg
ICBzdGF0aWMgdm9pZCBzZXRNaW5pbXVtTG9naWNhbEZvbnRTaXplKEV2YXNfT2JqZWN0KiBld2tW
aWV3LCBpbnQgc2l6ZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDM4MzYpCisr
KyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NCBAQAorMjAxMy0wMi0yMiAgSmFzb24gQW5kZXJzc2VuICA8amFuZGVyc3NlbkBnbWFpbC5jb20+
CisKKyAgICAgICAgTW92ZSBzZXRBdXRvZmlsbGVkIGZyb20gVGVzdFJ1bm5lciB0byBXZWJDb3Jl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA1MjEK
KworICAgICAgICBSZXZpZXdlZCBieSBCZW5qYW1pbiBQb3VsYWluLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaDoKKyAgICAgICAgKER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEd0ayk6CisKIDIwMTMtMDItMjIgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2Jp
bnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEV4cG9zZSBhbGwgZGVwZW5kZW5jaWVz
IHRvIHRoZSBneXAgYnVpbGQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAkocmV2aXNp
b24gMTQzODM2KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ4LDE5ICs1NDgsNiBAQCBD
U3RyaW5nIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6YWNjZXNzCiAgICAgcmV0dXJuIGNvcmVP
YmplY3QtPmhlbHBUZXh0KCkudXRmOCgpOwogfQogCi12b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9y
dEd0azo6c2V0QXV0b2ZpbGxlZChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2Rl
T2JqZWN0LCBib29sIGF1dG9maWxsZWQpCi17Ci0gICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0
b0pTKGNvbnRleHQpOwotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQodG9KUyhleGVj
LCBub2RlT2JqZWN0KSk7Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm47Ci0gICAg
SFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gZWxlbWVudC0+dG9JbnB1dEVsZW1lbnQo
KTsKLSAgICBpZiAoIWlucHV0RWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaW5wdXRF
bGVtZW50LT5zZXRBdXRvZmlsbGVkKGF1dG9maWxsZWQpOwotfQotCiB2b2lkIER1bXBSZW5kZXJU
cmVlU3VwcG9ydEd0azo6c2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1Zh
bHVlUmVmIG5vZGVPYmplY3QsIEpTU3RyaW5nUmVmIHZhbHVlKQogewogICAgIEpTQzo6RXhlY1N0
YXRlKiBleGVjID0gdG9KUyhjb250ZXh0KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCShy
ZXZpc2lvbiAxNDM4MzYpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNiBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIEF0a09iamVjdCogZ2V0Rm9jdXNlZEFjY2Vzc2libGVFbGVtZW50
KFdlYktpdFdlYkZyYW1lKik7CiAgICAgc3RhdGljIEF0a09iamVjdCogZ2V0Um9vdEFjY2Vzc2li
bGVFbGVtZW50KFdlYktpdFdlYkZyYW1lKik7CiAgICAgc3RhdGljIHZvaWQgbGF5b3V0RnJhbWUo
V2ViS2l0V2ViRnJhbWUqKTsKLSAgICBzdGF0aWMgdm9pZCBzZXRBdXRvZmlsbGVkKEpTQ29udGV4
dFJlZiwgSlNWYWx1ZVJlZiwgYm9vbCk7CiAgICAgc3RhdGljIHZvaWQgc2V0VmFsdWVGb3JVc2Vy
KEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiwgSlNTdHJpbmdSZWYpOwogICAgIHN0YXRpYyBib29s
IHNob3VsZENsb3NlKFdlYktpdFdlYkZyYW1lKik7CiAgICAgc3RhdGljIGJvb2wgZWxlbWVudERv
ZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKFdlYktpdFdlYkZyYW1lKiwgSlNTdHJpbmdS
ZWYpOwpJbmRleDogU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MzgzNikKKysrIFNvdXJjZS9XZWJL
aXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDIt
MjIgIEphc29uIEFuZGVyc3NlbiAgPGphbmRlcnNzZW5AZ21haWwuY29tPgorCisgICAgICAgIE1v
dmUgc2V0QXV0b2ZpbGxlZCBmcm9tIFRlc3RSdW5uZXIgdG8gV2ViQ29yZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNTIxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQmVuamFtaW4gUG91bGFpbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorCiAyMDEzLTAyLTIxICBBbGxhbiBTYW5kZmVsZCBKZW5z
ZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF0gUmVwbGFjZSBRV2Vi
UGFnZUFkYXB0b3I6OlRvdWNoQWRqdXN0ZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCShy
ZXZpc2lvbiAxNDM4MzYpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY0LDE4ICsyNjQsNiBA
QCBib29sIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpoYXNEb2N1bWVuCiAgICAgcmV0dXJuIGFk
YXB0ZXItPmZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKTsKIH0KIAotdm9pZCBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0QXV0b2ZpbGxlZChjb25zdCBRV2ViRWxlbWVudCYg
ZWxlbWVudCwgYm9vbCBpc0F1dG9maWxsZWQpCi17Ci0gICAgV2ViQ29yZTo6RWxlbWVudCogd2Vi
RWxlbWVudCA9IGVsZW1lbnQubV9lbGVtZW50OwotICAgIGlmICghd2ViRWxlbWVudCkKLSAgICAg
ICAgcmV0dXJuOwotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IHdlYkVsZW1l
bnQtPnRvSW5wdXRFbGVtZW50KCk7Ci0gICAgaWYgKCFpbnB1dEVsZW1lbnQpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGlucHV0RWxlbWVudC0+c2V0QXV0b2ZpbGxlZChpc0F1dG9maWxsZWQpOwot
fQotCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRWYWx1ZUZvclVzZXIoY29uc3Qg
UVdlYkVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFFTdHJpbmcmIHZhbHVlKQogewogICAgIFdlYkNv
cmU6OkVsZW1lbnQqIHdlYkVsZW1lbnQgPSBlbGVtZW50Lm1fZWxlbWVudDsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0LmgJKHJldmlzaW9uIDE0MzgzNikKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4
LDcgKzEwOCw2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGdhcmJhZ2VDb2xsZWN0b3JD
b2xsZWN0KCk7CiAgICAgc3RhdGljIHZvaWQgZ2FyYmFnZUNvbGxlY3RvckNvbGxlY3RPbkFsdGVy
bmF0ZVRocmVhZChib29sIHdhaXRVbnRpbERvbmUpOwotICAgIHN0YXRpYyB2b2lkIHNldEF1dG9m
aWxsZWQoY29uc3QgUVdlYkVsZW1lbnQmLCBib29sIGVuYWJsZWQpOwogICAgIHN0YXRpYyB2b2lk
IHNldFZhbHVlRm9yVXNlcihjb25zdCBRV2ViRWxlbWVudCYsIGNvbnN0IFFTdHJpbmcmIHZhbHVl
KTsKICAgICBzdGF0aWMgaW50IGphdmFTY3JpcHRPYmplY3RzQ291bnQoKTsKICAgICBzdGF0aWMg
dm9pZCBjbGVhclNjcmlwdFdvcmxkcygpOwpJbmRleDogU291cmNlL2F1dG90b29scy9zeW1ib2xz
LmZpbHRlcgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCShy
ZXZpc2lvbiAxNDM4MzYpCisrKyBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Niw2ICs3Niw3IEBAIF9aTjdXZWJDb3JlMTRTY2hlbWVSZWdpc3RyeTU3
cmVtb3ZlVVJMU2MKIF9aTjdXZWJDb3JlMTVJbnNwZWN0b3JDbGllbnQzMWRvRGlzcGF0Y2hNZXNz
YWdlT25Gcm9udGVuZFBhZ2VFUE5TXzRQYWdlRVJLTjNXVEY2U3RyaW5nRTsKIF9aTjdXZWJDb3Jl
MTVzZXRET01FeGNlcHRpb25FUE4zSlNDOUV4ZWNTdGF0ZUVpOwogX1pON1dlYkNvcmUxNXRvRE9N
U3RyaW5nTGlzdEVQTjNKU0M5RXhlY1N0YXRlRU5TMF83SlNWYWx1ZUU7CitfWk43V2ViQ29yZTE2
SFRNTElucHV0RWxlbWVudDEzc2V0QXV0b2ZpbGxlZEViOwogX1pON1dlYkNvcmUxNkhUTUxJbnB1
dEVsZW1lbnQxN3NldFN1Z2dlc3RlZFZhbHVlRVJLTjNXVEY2U3RyaW5nRTsKIF9aTjdXZWJDb3Jl
MTZIVE1MSW5wdXRFbGVtZW50MTVzZXRFZGl0aW5nVmFsdWVFUktOM1dURjZTdHJpbmdFOwogX1pO
N1dlYkNvcmUxNnNjcmlwdE5hbWVUb0NvZGVFUktOM1dURjZTdHJpbmdFOwpJbmRleDogVG9vbHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTQzODM2
KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIw
MTMtMDItMjIgIEphc29uIEFuZGVyc3NlbiAgPGphbmRlcnNzZW5AZ21haWwuY29tPgorCisgICAg
ICAgIE1vdmUgc2V0QXV0b2ZpbGxlZCBmcm9tIFRlc3RSdW5uZXIgdG8gV2ViQ29yZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNTIxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQmVuamFtaW4gUG91bGFpbi4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c3RhdGljRnVuY3Rpb25z
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmg6CisgICAgICAgIChUZXN0
UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1Rlc3RSdW5uZXJC
bGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5u
ZXI6OlRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKFRlc3RSdW5uZXIpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcDoKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
bWFjL1Rlc3RSdW5uZXJNYWMubW06CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1
bm5lclF0LmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuaDoK
KyAgICAgICAgKFRlc3RSdW5uZXJRdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL1Rl
c3RSdW5uZXJXaW4uY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJX
eC5jcHA6CisKIDIwMTMtMDItMjIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgVXBsb2FkIHJlc3VsdHMgdG8gcGVyZi53ZWJraXQub3JnIGluIGFkZGl0aW9uIHRv
IHRoZSBvbmUgc3BlY2lmaWVkIGJ5IC0tdGVzdC1yZXN1bHRzLXNlcnZlcgpJbmRleDogVG9vbHMv
RHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJl
bmRlclRyZWUvVGVzdFJ1bm5lci5jcHAJKHJldmlzaW9uIDE0MzgzNikKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MzksMTcgKzkzOSw2
IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldEF1dGhvckFuZFVzZXJTdHlsZXMKICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlUmVmIHNl
dEF1dG9maWxsZWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVu
Y3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25z
dCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCi17Ci0gICAg
aWYgKGFyZ3VtZW50Q291bnQgIT0gMiB8fCAhYXJndW1lbnRzWzBdKQotICAgICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Ci0KLSAgICBUZXN0UnVubmVyKiBjb250cm9s
bGVyID0gc3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2Jq
ZWN0KSk7Ci0gICAgY29udHJvbGxlci0+c2V0QXV0b2ZpbGxlZChjb250ZXh0LCBhcmd1bWVudHNb
MF0sIEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgYXJndW1lbnRzWzFdKSk7Ci0KLSAgICByZXR1
cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Ci19Ci0KIHN0YXRpYyBKU1ZhbHVlUmVm
IHNldENhY2hlTW9kZWxDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYg
ZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBj
b25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAg
ICAgLy8gSGFzIE1hYyBpbXBsZW1lbnRhdGlvbi4KQEAgLTIxNTMsNyArMjE0Miw2IEBAIEpTU3Rh
dGljRnVuY3Rpb24qIFRlc3RSdW5uZXI6OnN0YXRpY0Z1bmMKICAgICAgICAgeyAic2V0QXV0aGVu
dGljYXRpb25QYXNzd29yZCIsIHNldEF1dGhlbnRpY2F0aW9uUGFzc3dvcmRDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgICAgICB7ICJzZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lIiwgc2V0QXV0aGVudGlj
YXRpb25Vc2VybmFtZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEF1dGhvckFuZFVz
ZXJTdHlsZXNFbmFibGVkIiwgc2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWRDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAotICAgICAgICB7ICJzZXRBdXRvZmlsbGVkIiwgc2V0QXV0b2ZpbGxlZENhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCiAgICAgICAgIHsgInNldENhY2hlTW9kZWwiLCBzZXRDYWNoZU1vZGVsQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAic2V0Q2FsbENsb3NlT25XZWJWaWV3cyIsIHNldENhbGxD
bG9zZU9uV2ViVmlld3NDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRDYW5PcGVuV2lu
ZG93cyIsIHNldENhbk9wZW5XaW5kb3dzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS9UZXN0UnVubmVyLmgJKHJldmlzaW9uIDE0MzgzNikKKysrIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL1Rlc3RSdW5uZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNiBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRBcHBDYWNoZU1heGltdW1TaXplKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90
YSk7CiAgICAgdm9pZCBzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEodW5zaWduZWQgbG9u
ZyBsb25nKTsKICAgICB2b2lkIHNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKGJvb2wpOwot
ICAgIHZvaWQgc2V0QXV0b2ZpbGxlZChKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYgbm9kZU9iamVj
dCwgYm9vbCBhdXRvZmlsbGVkKTsKICAgICB2b2lkIHNldENhY2hlTW9kZWwoaW50KTsKICAgICB2
b2lkIHNldEN1c3RvbVBvbGljeURlbGVnYXRlKGJvb2wgc2V0RGVsZWdhdGUsIGJvb2wgcGVybWlz
c2l2ZSk7CiAgICAgdm9pZCBzZXREYXRhYmFzZVF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90
YSk7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1Rlc3RSdW5uZXJCbGFj
a0JlcnJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5
L1Rlc3RSdW5uZXJCbGFja0JlcnJ5LmNwcAkocmV2aXNpb24gMTQzODM2KQorKysgVG9vbHMvRHVt
cFJlbmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYxNiwxOSArNjE2LDYgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRBc3luY2hyb25v
dXNTcGVsbENoZQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6
c2V0QXV0b2ZpbGxlZChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0
LCBib29sIGF1dG9maWxsZWQpCi17Ci0gICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGNv
bnRleHQpOwotICAgIFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQodG9KUyhl
eGVjLCBub2RlT2JqZWN0KSk7Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm47Ci0g
ICAgV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gZWxlbWVudC0+dG9J
bnB1dEVsZW1lbnQoKTsKLSAgICBpZiAoIWlucHV0RWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgaW5wdXRFbGVtZW50LT5zZXRBdXRvZmlsbGVkKGF1dG9maWxsZWQpOwotfQotCiBpbnQg
VGVzdFJ1bm5lcjo6bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMo
KQogewogICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1cHBvcnQ6Om51bWJlck9mUGVuZGluZ0dl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRl
clRyZWU6OmN1cnJlbnRJbnN0YW5jZSgpLT5wYWdlKCkpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5l
ci5jcHAJKHJldmlzaW9uIDE0MzgzNikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsNyAr
MTk4LDYgQEAgVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcihUZXN0SW50ZXJmYWNlcyogaQogICAgIGJp
bmRNZXRob2QoInN0YXJ0U3BlZWNoSW5wdXQiLCAmVGVzdFJ1bm5lcjo6c3RhcnRTcGVlY2hJbnB1
dCk7CiAgICAgYmluZE1ldGhvZCgibWFya2VyVGV4dEZvckxpc3RJdGVtIiwgJlRlc3RSdW5uZXI6
Om1hcmtlclRleHRGb3JMaXN0SXRlbSk7CiAgICAgYmluZE1ldGhvZCgiZmluZFN0cmluZyIsICZU
ZXN0UnVubmVyOjpmaW5kU3RyaW5nKTsKLSAgICBiaW5kTWV0aG9kKCJzZXRBdXRvZmlsbGVkIiwg
JlRlc3RSdW5uZXI6OnNldEF1dG9maWxsZWQpOwogICAgIGJpbmRNZXRob2QoInNldFZhbHVlRm9y
VXNlciIsICZUZXN0UnVubmVyOjpzZXRWYWx1ZUZvclVzZXIpOwogICAgIGJpbmRNZXRob2QoImVu
YWJsZUZpeGVkTGF5b3V0TW9kZSIsICZUZXN0UnVubmVyOjplbmFibGVGaXhlZExheW91dE1vZGUp
OwogICAgIGJpbmRNZXRob2QoInNldEZpeGVkTGF5b3V0U2l6ZSIsICZUZXN0UnVubmVyOjpzZXRG
aXhlZExheW91dFNpemUpOwpAQCAtMTM3NywyMyArMTM3Niw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6
ZmluZFN0cmluZyhjb25zdCBDcHBBcmcKICAgICByZXN1bHQtPnNldChmaW5kUmVzdWx0KTsKIH0K
IAotdm9pZCBUZXN0UnVubmVyOjpzZXRBdXRvZmlsbGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYg
YXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCi17Ci0gICAgcmVzdWx0LT5zZXROdWxsKCk7
Ci0gICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgIT0gMiB8fCAhYXJndW1lbnRzWzFdLmlzQm9vbCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBXZWJFbGVtZW50IGVsZW1lbnQ7Ci0gICAgaWYgKCFX
ZWJCaW5kaW5nczo6Z2V0RWxlbWVudChhcmd1bWVudHNbMF0udmFsdWUub2JqZWN0VmFsdWUsICZl
bGVtZW50KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgV2ViSW5wdXRFbGVtZW50KiBpbnB1dCA9
IHRvV2ViSW5wdXRFbGVtZW50KCZlbGVtZW50KTsKLSAgICBpZiAoIWlucHV0KQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpbnB1dC0+c2V0QXV0b2ZpbGxlZChhcmd1bWVudHNbMV0udmFsdWUuYm9v
bFZhbHVlKTsKLX0KLQogdm9pZCBUZXN0UnVubmVyOjpzZXRWYWx1ZUZvclVzZXIoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICByZXN1
bHQtPnNldE51bGwoKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgJKHJldmlzaW9uIDE0MzgzNikK
KysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5u
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjQxLDEwICsyNDEsNiBAQCBwcml2YXRlOgogICAgIHZv
aWQgbWFya2VyVGV4dEZvckxpc3RJdGVtKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlh
bnQqKTsKICAgICB2b2lkIGZpbmRTdHJpbmcoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFy
aWFudCopOwogCi0gICAgLy8gRXhwZWN0cyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gYmUgYW4gaW5w
dXQgZWxlbWVudCBhbmQgdGhlIHNlY29uZCBhcmd1bWVudCB0byBiZSBhIGJvb2xlYW4uCi0gICAg
Ly8gRm9yd2FyZHMgdGhlIHNldEF1dG9maWxsZWQoKSBjYWxsIHRvIHRoZSBlbGVtZW50LgotICAg
IHZvaWQgc2V0QXV0b2ZpbGxlZChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7
Ci0KICAgICAvLyBFeHBlY3RzIHRoZSBmaXJzdCBhcmd1bWVudCB0byBiZSBhbiBpbnB1dCBlbGVt
ZW50IGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIGJlIGEgc3RyaW5nIHZhbHVlLgogICAgIC8v
IEZvcndhcmRzIHRoZSBzZXRWYWx1ZUZvclVzZXIoKSBjYWxsIHRvIHRoZSBlbGVtZW50LgogICAg
IHZvaWQgc2V0VmFsdWVGb3JVc2VyKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQq
KTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHAJKHJl
dmlzaW9uIDE0MzgzNikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM4LDExICszMzgsNiBAQCB2b2lkIFRlc3RSdW5uZXI6
OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFCiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpz
ZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChicm93c2VyLT5tYWluVmlldygpLCBmbGFnKTsK
IH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRBdXRvZmlsbGVkKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QsIGJvb2wgYXV0b2ZpbGxlZCkKLXsKLSAgICBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRFZmw6OnNldEF1dG9maWxsZWQoY29udGV4dCwgbm9kZU9iamVjdCwgYXV0
b2ZpbGxlZCk7Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9u
KGJvb2wsIGRvdWJsZSwgYm9vbCwgZG91YmxlLCBib29sLCBkb3VibGUpCiB7CiAgICAgLy8gRklY
TUU6IEltcGxlbWVudCBmb3IgRGV2aWNlT3JpZW50YXRpb24gbGF5b3V0IHRlc3RzLgpJbmRleDog
VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9UZXN0UnVubmVyR3RrLmNwcAkocmV2aXNpb24gMTQz
ODM2KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MTQsMTEgKzQxNCw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0QXV0aG9y
QW5kVXNlclN0eWxlc0UKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CiB9CiAKLXZvaWQgVGVzdFJ1
bm5lcjo6c2V0QXV0b2ZpbGxlZChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2Rl
T2JqZWN0LCBib29sIGlzQXV0b2ZpbGxlZCkKLXsKLSAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRH
dGs6OnNldEF1dG9maWxsZWQoY29udGV4dCwgbm9kZU9iamVjdCwgaXNBdXRvZmlsbGVkKTsKLX0K
LQogdm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92
aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEs
IGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpCiB7CiAgICAgLy8gRklYTUU6IElt
cGxlbWVudCBmb3IgRGV2aWNlT3JpZW50YXRpb24gbGF5b3V0IHRlc3RzLgpJbmRleDogVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0JKHJldmlzaW9uIDE0MzgzNikKKysr
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC00MTksMTUgKzQxOSw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0QXV0aG9yQW5kVXNlclN0
eWxlc0UKICAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gcHJlZmVyZW5jZXNdIHNldEF1dGhvckFu
ZFVzZXJTdHlsZXNFbmFibGVkOmZsYWddOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldEF1dG9m
aWxsZWQoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCwgYm9vbCBh
dXRvZmlsbGVkKQotewotICAgIERPTUVsZW1lbnQgKmVsZW1lbnQgPSBbRE9NRWxlbWVudCBfRE9N
RWxlbWVudEZyb21KU0NvbnRleHQ6Y29udGV4dCB2YWx1ZTpub2RlT2JqZWN0XTsKLSAgICBpZiAo
IWVsZW1lbnQgfHwgIVtlbGVtZW50IGlzS2luZE9mQ2xhc3M6W0RPTUhUTUxJbnB1dEVsZW1lbnQg
Y2xhc3NdXSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgWyhET01IVE1MSW5wdXRFbGVtZW50ICop
ZWxlbWVudCBfc2V0QXV0b2ZpbGxlZDphdXRvZmlsbGVkXTsKLX0KLQogdm9pZCBUZXN0UnVubmVy
OjpzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZShib29sIHNldERlbGVnYXRlLCBib29sIHBlcm1pc3Np
dmUpCiB7CiAgICAgaWYgKHNldERlbGVnYXRlKSB7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJl
ZS9xdC9UZXN0UnVubmVyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L1Rlc3RSdW5uZXJRdC5jcHAJKHJldmlzaW9uIDE0MzgzNikKKysrIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3NSwxMSArNDc1
LDYgQEAgdm9pZCBUZXN0UnVubmVyUXQ6OnNldEFwcENhY2hlTWF4aW11bVNpegogICAgIG1fZHJ0
LT53ZWJQYWdlKCktPnNldHRpbmdzKCktPnNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlUXVv
dGEocXVvdGEpOwogfQogCi12b2lkIFRlc3RSdW5uZXJRdDo6c2V0QXV0b2ZpbGxlZChjb25zdCBR
V2ViRWxlbWVudCYgZWxlbWVudCwgYm9vbCBpc0F1dG9maWxsZWQpCi17Ci0gICAgcmV0dXJuIER1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRBdXRvZmlsbGVkKGVsZW1lbnQsIGlzQXV0b2ZpbGxl
ZCk7Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lclF0OjpzZXRWYWx1ZUZvclVzZXIoY29uc3QgUVdlYkVs
ZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFFTdHJpbmcmIHZhbHVlKQogewogICAgIER1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0OjpzZXRWYWx1ZUZvclVzZXIoZWxlbWVudCwgdmFsdWUpOwpJbmRleDogVG9v
bHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmgJKHJldmlzaW9uIDE0MzgzNikKKysrIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjIsNyArMTYyLDYgQEAgcHVibGljIFFfU0xPVFM6CiAgICAgdm9pZCBzZXRBbGxvd1VuaXZlcnNh
bEFjY2Vzc0Zyb21GaWxlVVJMcyhib29sIGVuYWJsZSk7CiAgICAgdm9pZCBzZXRBbGxvd0ZpbGVB
Y2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBlbmFibGUpOwogICAgIHZvaWQgc2V0QXBwQ2FjaGVNYXhp
bXVtU2l6ZSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpOwotICAgIHZvaWQgc2V0QXV0b2ZpbGxl
ZChjb25zdCBRV2ViRWxlbWVudCYsIGJvb2wgZW5hYmxlKTsKICAgICB2b2lkIHNldFZhbHVlRm9y
VXNlcihjb25zdCBRV2ViRWxlbWVudCYsIGNvbnN0IFFTdHJpbmcmIHZhbHVlKTsKICAgICB2b2lk
IHNldEZpeGVkQ29udGVudHNTaXplKGludCB3aWR0aCwgaW50IGhlaWdodCk7CiAgICAgdm9pZCBz
ZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcAkocmV2aXNpb24gMTQzODM2KQorKysgVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzUs
MjcgKzMzNSw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0QXV0aG9yQW5kVXNlclN0eWxlc0UKICAg
ICBwcmVmc1ByaXZhdGUtPnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKGZsYWcpOwogfQog
Ci12b2lkIFRlc3RSdW5uZXI6OnNldEF1dG9maWxsZWQoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
VmFsdWVSZWYgbm9kZU9iamVjdCwgYm9vbCBhdXRvZmlsbGVkKQotewotICAgIENPTVB0cjxJV2Vi
Vmlldz4gd2ViVmlldzsKLSAgICBpZiAoRkFJTEVEKGZyYW1lLT53ZWJWaWV3KCZ3ZWJWaWV3KSkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIENPTVB0cjxJV2ViVmlld1ByaXZhdGU+IHdlYlZpZXdQ
cml2YXRlKFF1ZXJ5LCB3ZWJWaWV3KTsKLSAgICBpZiAoIXdlYlZpZXdQcml2YXRlKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBDT01QdHI8SURPTUVsZW1lbnQ+IGVsZW1lbnQ7Ci0gICAgaWYgKEZB
SUxFRCh3ZWJWaWV3UHJpdmF0ZS0+ZWxlbWVudEZyb21KUyhjb250ZXh0LCBub2RlT2JqZWN0LCAm
ZWxlbWVudCkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDT01QdHI8SUZvcm1zQXV0b0ZpbGxU
cmFuc2l0aW9uPiBhdXRvZmlsbEVsZW1lbnQoUXVlcnksIGVsZW1lbnQpOwotICAgIGlmICghYXV0
b2ZpbGxFbGVtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvZmlsbEVsZW1lbnQtPnNl
dEF1dG9maWxsZWQoYXV0b2ZpbGxlZCk7Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6c2V0Q3VzdG9t
UG9saWN5RGVsZWdhdGUoYm9vbCBzZXREZWxlZ2F0ZSwgYm9vbCBwZXJtaXNzaXZlKQogewogICAg
IENPTVB0cjxJV2ViVmlldz4gd2ViVmlldzsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4
L1Rlc3RSdW5uZXJXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gv
VGVzdFJ1bm5lcld4LmNwcAkocmV2aXNpb24gMTQzODM2KQorKysgVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd3gvVGVzdFJ1bm5lcld4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk5LDExICsxOTksNiBA
QCB2b2lkIFRlc3RSdW5uZXI6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFCiAgICAgLy8gRklYTUU6
IGltcGxlbWVudAogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldEF1dG9maWxsZWQoSlNDb250ZXh0
UmVmLCBKU1ZhbHVlUmVmIGVsZW1lbnQsIGJvb2wgaXNBdXRvZmlsbGVkKQotewotICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQKLX0KLQogdm9pZCBUZXN0UnVubmVyOjpzZXRQb3B1cEJsb2NraW5nRW5h
YmxlZChib29sIHBvcHVwQmxvY2tpbmdFbmFibGVkKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1l
bnQKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MzgzNikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEzLTAyLTIyICBKYXNvbiBBbmRlcnNz
ZW4gIDxqYW5kZXJzc2VuQGdtYWlsLmNvbT4KKworICAgICAgICBNb3ZlZCBzZXRBdXRvZmlsbGVk
IGZyb20gVGVzdFJ1bm5lciB0byBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA1MjEKKworICAgICAgICBSZXZpZXdlZCBieSBCZW5qYW1p
biBQb3VsYWluLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9pbnB1dC1hdXRvZmlsbGVkLmh0bWw6
CisgICAgICAgICogZmFzdC9mb3Jtcy9yZXNldC1hdXRvZmlsbGVkLmh0bWw6CisgICAgICAgICog
cGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTMtMDItMjIgIENocmlzdGlhbiBC
aWVzaW5nZXIgIDxjYmllc2luZ2VyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZWJhc2VsaW5l
IHBvcnRzIGFmdGVyIGJ1ZyAxMDk5OTQKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5w
dXQtYXV0b2ZpbGxlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
aW5wdXQtYXV0b2ZpbGxlZC5odG1sCShyZXZpc2lvbiAxNDM4MzYpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2lucHV0LWF1dG9maWxsZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTIsOCAr
MTIsOCBAQAogICAgICAgICB2YXIgb3JpZ2luYWxGb3JlZ3JvdW5kID0gY29tcHV0ZWRTdHlsZS5j
b2xvcjsKICAgICAgICAgdmFyIG9yaWdpbmFsQmFja2dyb3VuZCA9IGNvbXB1dGVkU3R5bGUuYmFj
a2dyb3VuZENvbG9yOwogCi0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAg
ICAgICAgdGVzdFJ1bm5lci5zZXRBdXRvZmlsbGVkKHRmLCB0cnVlKTsKKyAgICAgICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0QXV0b2Zp
bGxlZCh0ZiwgdHJ1ZSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBCb3RoIHRoZSBmb3JlZ3Jv
dW5kIGFuZCBiYWNrZ3JvdW5kIGNvbG9ycyBzaG91bGQgY2hhbmdlLgpAQCAtMjksOCArMjksOCBA
QAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldEF1dG9maWxsZWQodGYsIGZh
bHNlKTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgIHdpbmRv
dy5pbnRlcm5hbHMuc2V0QXV0b2ZpbGxlZCh0ZiwgZmFsc2UpOwogICAgICAgICB9CiAKICAgICAg
ICAgLy8gQ29sb3JzIHNob3VsZCBiZSByZXN0b3JlZC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvcmVzZXQtYXV0b2ZpbGxlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvcmVzZXQtYXV0b2ZpbGxlZC5odG1sCShyZXZpc2lvbiAxNDM4MzYpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc2V0LWF1dG9maWxsZWQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMTIsOCArMTIsOCBAQAogICAgICAgICB9CiAKICAgICAgICAgdmFyIGZpZWxkID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpZWxkJyk7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikgewotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRBdXRvZmlsbGVkKGZpZWxkLCB0cnVlKTsK
KyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgIHdpbmRvdy5pbnRl
cm5hbHMuc2V0QXV0b2ZpbGxlZChmaWVsZCwgdHJ1ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCdUaGlzIHRlc3QgcmVxdWlyZXMgYSBMYXlvdXRUZXN0Q29udHJv
bGxlci4nKTsKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L3drMi9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3Jt
L3drMi9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAxNDM4MzYpCisrKyBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtNTA0LDEwICs1
MDQsNiBAQCBzdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3N0b3JhZ2V0CiBzdG9yYWdl
L2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3N0b3JhZ2V0cmFja2VyL3N0b3JhZ2UtdHJhY2tlci02
LWNyZWF0ZS5odG1sCiBzdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3N0b3JhZ2V0cmFj
a2VyL3N0b3JhZ2UtdHJhY2tlci03LXVzYWdlLmh0bWwKIAotIyBXZWJLaXRUZXN0UnVubmVyIG5l
ZWRzIGxheW91dFRlc3RDb250cm9sbGVyLnNldEF1dG9maWxsZWQKLWZhc3QvZm9ybXMvaW5wdXQt
YXV0b2ZpbGxlZC5odG1sCi1mYXN0L2Zvcm1zL3Jlc2V0LWF1dG9maWxsZWQuaHRtbAotCiAjIFdl
YktpdFRlc3RSdW5uZXIgbmVlZHMgZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCkKICMgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2ODgxCiBlZGl0aW5nL3NlbGVjdGlv
bi9jb250ZXh0LW1lbnUtdGV4dC1zZWxlY3Rpb24uaHRtbAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>