<?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>27721</bug_id>
          
          <creation_ts>2009-07-27 11:26:47 -0700</creation_ts>
          <short_desc>[WML] Deck access control is completly broken</short_desc>
          <delta_ts>2010-08-17 07:49:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>20393</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>ap</cc>
    
    <cc>pecoraro</cc>
    
    <cc>pfeldman</cc>
    
    <cc>staikos</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>134960</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-07-27 11:26:47 -0700</bug_when>
    <thetext>Deck access control (a very important security feature in the WML world) is broken. Affects manual-tests/wml/deck-access-control.wml.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136495</commentid>
    <comment_count>1</comment_count>
      <attachid>33943</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-08-01 18:07:54 -0700</bug_when>
    <thetext>Created attachment 33943
Initial patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137769</commentid>
    <comment_count>2</comment_count>
      <attachid>33943</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-06 20:47:15 -0700</bug_when>
    <thetext>Comment on attachment 33943
Initial patch

Does WML execute script?  Is it possible to change these values?  If so, setting to an invalid value will not clear domain or path since you if (value.isEmpty()) return before setting.  Is that intentional behavior?

What does this do, and why?
    if (!initialized) {
 58         if (WMLPageState* wmlPageState = wmlPageStateForDocument(this)) {
 59             if (Page* page = wmlPageState-&gt;page())
 60                 page-&gt;goBack();
 61         }
 62     }
Why not use early return there?

typo:
 71     // Remember that we&apos;e successfully entered the deck

Seems:
bool initialized
is the wrong name.  It&apos;s accessAllowed or something like that.

Change seems large.  Too large for my little brain at this moment.  maybe we could/should add the layout tests first...

r- hoping that we could split this to make it easier to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138532</commentid>
    <comment_count>3</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-08-09 09:43:30 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 33943 [details])
&gt; Does WML execute script?  Is it possible to change these values?  If so,
&gt; setting to an invalid value will not clear domain or path since you if
&gt; (value.isEmpty()) return before setting.  Is that intentional behavior?
No, WML doesn&apos;t have any JS support at all. WMLScript support is not desired to be implemented. So it&apos;s all static.
 
&gt; What does this do, and why?
This is deck-access control. A deck is a document, a card is contained within a specific deck.
Suppose Card 1 of Deck A tries to enter Card 1 of Deck B. Deck B contains &quot;&lt;access domain=&apos;not-existant.com&apos;...&gt;&quot;, then Deck A is not allowed to enter Deck B. Deck B immediately goes back to the invoking card, and an error is displayed on the original page, that it failed to enter the target deck (task-execution-failure). This is specified WML behaviour.

&gt;     if (!initialized) {
&gt;  58         if (WMLPageState* wmlPageState = wmlPageStateForDocument(this)) {
&gt;  59             if (Page* page = wmlPageState-&gt;page())
&gt;  60                 page-&gt;goBack();
&gt;  61         }
&gt;  62     }
&gt; Why not use early return there?
Fixed.

&gt; 
&gt; typo:
&gt;  71     // Remember that we&apos;e successfully entered the deck
&gt; 
&gt; Seems:
&gt; bool initialized
&gt; is the wrong name.  It&apos;s accessAllowed or something like that.
Fixed.

Uploading a slighly revised version soon, which also fixes a bug regarding intrinsic event execution upon task-execution-failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138565</commentid>
    <comment_count>4</comment_count>
      <attachid>34433</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-08-09 15:36:26 -0700</bug_when>
    <thetext>Created attachment 34433
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138568</commentid>
    <comment_count>5</comment_count>
      <attachid>34434</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-08-09 15:57:27 -0700</bug_when>
    <thetext>Created attachment 34434
Updated patch - incorporating Georges comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138571</commentid>
    <comment_count>6</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-08-09 16:34:23 -0700</bug_when>
    <thetext>Sending        LayoutTests/ChangeLog
Adding         LayoutTests/http/tests/wml/access-target-domain-deny-expected.txt
Adding         LayoutTests/http/tests/wml/access-target-domain-deny.html
Adding         LayoutTests/http/tests/wml/access-target-expected.txt
Adding         LayoutTests/http/tests/wml/access-target-path-deny-expected.txt
Adding         LayoutTests/http/tests/wml/access-target-path-deny.html
Adding         LayoutTests/http/tests/wml/access-target.html
Adding         LayoutTests/http/tests/wml/resources/access-target-domain-deny.js
Adding         LayoutTests/http/tests/wml/resources/access-target-domain-deny.wml
Adding         LayoutTests/http/tests/wml/resources/access-target-path-deny.js
Adding         LayoutTests/http/tests/wml/resources/access-target-path-deny.wml
Adding         LayoutTests/http/tests/wml/resources/access-target.js
Adding         LayoutTests/http/tests/wml/resources/access-target.wml
Adding         LayoutTests/http/tests/wml/resources/locked-deck.wml
Adding         LayoutTests/http/tests/wml/resources/unreachable-domain.wml
Adding         LayoutTests/http/tests/wml/resources/unreachable-path.wml
Adding         LayoutTests/wml/access-target-deny-expected.txt
Adding         LayoutTests/wml/access-target-deny.html
Adding         LayoutTests/wml/access-target-expected.txt
Adding         LayoutTests/wml/access-target.html
Adding         LayoutTests/wml/resources/access-target-deny.js
Adding         LayoutTests/wml/resources/access-target-deny.wml
Adding         LayoutTests/wml/resources/access-target.js
Adding         LayoutTests/wml/resources/access-target.wml
Adding         LayoutTests/wml/resources/locked-deck.wml
Sending        LayoutTests/wml/variable-reference-invalid-character-expected.txt
Sending        WebCore/ChangeLog
Sending        WebCore/inspector/ConsoleMessage.h
Sending        WebCore/inspector/InspectorController.h
Sending        WebCore/loader/FrameLoader.cpp
Sending        WebCore/loader/FrameLoaderTypes.h
Sending        WebCore/page/Console.cpp
Sending        WebCore/page/Console.h
Sending        WebCore/page/Console.idl
Sending        WebCore/wml/WMLAccessElement.cpp
Sending        WebCore/wml/WMLAccessElement.h
Sending        WebCore/wml/WMLCardElement.cpp
Sending        WebCore/wml/WMLDocument.cpp
Sending        WebCore/wml/WMLErrorHandling.cpp
Sending        WebCore/wml/WMLPageState.cpp
Sending        WebCore/wml/WMLPageState.h
Sending        WebKit/mac/ChangeLog
Sending        WebKit/mac/WebView/WebFramePrivate.h
Sending        WebKit/win/ChangeLog
Sending        WebKit/win/Interfaces/IWebFramePrivate.idl
Transmitting file data .............................................
Committed revision 46966.
http://trac.webkit.org/changeset/46966</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265533</commentid>
    <comment_count>7</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-08-17 07:49:06 -0700</bug_when>
    <thetext>Guys, is this console.lastWMLErrorMessage web-facing? Or is it only used in the layout tests? If latter, let us pass it via the layoutTestController instead. The reason I ask is that I saw some nasty ifdef(INSPECTOR) checks within WebCore/inspector/ConsoleMessage.cpp, while my assumption was that ConsoleMessage.cpp was inspector&apos;s property (and hence resides in the inspector folder).

I&apos;d also like to remove InspectorController::consoleMessages() as a whole so that other clients would not use the interface. Your code seems to be the only client.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33943</attachid>
            <date>2009-08-01 18:07:54 -0700</date>
            <delta_ts>2009-08-09 15:31:46 -0700</delta_ts>
            <desc>Initial patch</desc>
            <filename>bug-27721-20090802030750.patch</filename>
            <type>text/plain</type>
            <size>39637</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjY4MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMDktMDgtMDEgIE5pa29sYXMgWmltbWVybWFubiAgPG5pa29sYXMu
emltbWVybWFubkB0b3JjaG1vYmlsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgW1dNTF0gRGVjayBhY2Nlc3MgY29udHJvbCBpcyBjb21wbGV0
bHkgYnJva2VuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNzcyMQorCisgICAgICAgIFJld3JpdGUgV01MIGRlY2sgYWNjZXNzIGNvbnRyb2wsIGFjdHVh
bGx5IHdvcmtzIG5vdyBzdGFuZGFsb25lIGFuZCB3aXRoaW4gTGF5b3V0VGVzdHMuCisgICAgICAg
IEFkZGVkIHNldmVyYWwgbmV3IGxheW91dCB0ZXN0cyBjb3ZlcmluZyBsb2NhbCAmIHJlbW90ZSBh
Y2Nlc3Mgc3VwcG9ydC4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy93bWwvYWNjZXNzLXRh
cmdldC1kb21haW4tZGVueS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dtbC9hY2Nl
c3MtdGFyZ2V0LXBhdGgtZGVueS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dtbC9h
Y2Nlc3MtdGFyZ2V0Lmh0bWwKKyAgICAgICAgICAgICAgIHdtbC9hY2Nlc3MtdGFyZ2V0LWRlbnku
aHRtbAorICAgICAgICAgICAgICAgd21sL2FjY2Vzcy10YXJnZXQuaHRtbAorCisgICAgICAgICog
d21sL1dNTEFjY2Vzc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V01MQWNjZXNzRWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6V01MQWNjZXNz
RWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOgorICAgICAgICAqIHdtbC9XTUxBY2Nlc3NF
bGVtZW50Lmg6CisgICAgICAgICogd21sL1dNTERvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldNTERvY3VtZW50OjpmaW5pc2hlZFBhcnNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V01M
RG9jdW1lbnQ6OmluaXRpYWxpemUpOgorICAgICAgICAqIHdtbC9XTUxEb2N1bWVudC5oOgorICAg
ICAgICAqIHdtbC9XTUxQYWdlU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V01MUGFnZVN0
YXRlOjpXTUxQYWdlU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6bm9ybWFsaXplZEhvc3ROYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6Omhvc3RGcm9tVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OnVy
bEZvckhpc3RvcnlJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OnRyeUFjY2Vzc0hpc3RvcnlVUkxz
KToKKyAgICAgICAgKFdlYkNvcmU6OldNTFBhZ2VTdGF0ZTo6cHJvY2Vzc0FjY2Vzc0NvbnRyb2xE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldNTFBhZ2VTdGF0ZTo6cmVzZXRBY2Nlc3NDb250cm9s
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXTUxQYWdlU3RhdGU6OmNhbkFjY2Vzc0RlY2spOgor
ICAgICAgICAoV2ViQ29yZTo6V01MUGFnZVN0YXRlOjpob3N0SXNBbGxvd2VkVG9BY2Nlc3MpOgor
ICAgICAgICAoV2ViQ29yZTo6V01MUGFnZVN0YXRlOjpwYXRoSXNBbGxvd2VkVG9BY2Nlc3MpOgor
ICAgICAgICAqIHdtbC9XTUxQYWdlU3RhdGUuaDoKKwogMjAwOS0wOC0wMSAgSm9obiBBYmQtRWwt
TWFsZWsgIDxqYW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFy
dGguCkluZGV4OiBXZWJDb3JlL3dtbC9XTUxBY2Nlc3NFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3dtbC9XTUxBY2Nlc3NFbGVtZW50LmNwcAkocmV2aXNpb24gNDY2ODApCisrKyBX
ZWJDb3JlL3dtbC9XTUxBY2Nlc3NFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTYg
KzQzLDE0IEBAIHZvaWQgV01MQWNjZXNzRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKICAgICAg
ICAgU3RyaW5nIHZhbHVlID0gcGFyc2VWYWx1ZUZvcmJpZGRpbmdWYXJpYWJsZVJlZmVyZW5jZXMo
YXR0ci0+dmFsdWUoKSk7CiAgICAgICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICAKLSAgICAgICAgaWYgKFdNTFBhZ2VTdGF0ZSogcGFnZVN0
YXRlID0gd21sUGFnZVN0YXRlRm9yRG9jdW1lbnQoZG9jdW1lbnQoKSkpCi0gICAgICAgICAgICBw
YWdlU3RhdGUtPnJlc3RyaWN0RGVja0FjY2Vzc1RvRG9tYWluKHZhbHVlKTsKKworICAgICAgICBt
X2RvbWFpbiA9IHZhbHVlOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHBhdGhBdHRy
KSB7CiAgICAgICAgIFN0cmluZyB2YWx1ZSA9IHBhcnNlVmFsdWVGb3JiaWRkaW5nVmFyaWFibGVS
ZWZlcmVuY2VzKGF0dHItPnZhbHVlKCkpOwogICAgICAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChXTUxQYWdlU3RhdGUqIHBhZ2VTdGF0
ZSA9IHdtbFBhZ2VTdGF0ZUZvckRvY3VtZW50KGRvY3VtZW50KCkpKQotICAgICAgICAgICAgcGFn
ZVN0YXRlLT5yZXN0cmljdERlY2tBY2Nlc3NUb1BhdGgodmFsdWUpOworICAgICAgICBtX3BhdGgg
PSB2YWx1ZTsKICAgICB9IGVsc2UKICAgICAgICAgV01MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUoYXR0cik7CiB9CkBAIC02Miw4ICs2MCwxNCBAQCB2b2lkIFdNTEFjY2Vzc0VsZW1lbnQ6
Omluc2VydGVkSW50b0RvY3VtCiAgICAgV01MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQo
KTsKIAogICAgIFdNTFBhZ2VTdGF0ZSogcGFnZVN0YXRlID0gd21sUGFnZVN0YXRlRm9yRG9jdW1l
bnQoZG9jdW1lbnQoKSk7Ci0gICAgaWYgKHBhZ2VTdGF0ZSAmJiAhcGFnZVN0YXRlLT5zZXROZWVk
Q2hlY2tEZWNrQWNjZXNzKHRydWUpKQotICAgICAgICByZXBvcnRXTUxFcnJvcihkb2N1bWVudCgp
LCBXTUxFcnJvck11bHRpcGxlQWNjZXNzRWxlbWVudHMpOworICAgIGlmICghcGFnZVN0YXRlKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAocGFnZVN0YXRlLT5wcm9jZXNzQWNjZXNzQ29udHJv
bERhdGEobV9kb21haW4sIG1fcGF0aCkpCisgICAgICAgIHJldHVybjsKKworICAgIHBhZ2VTdGF0
ZS0+cmVzZXRBY2Nlc3NDb250cm9sRGF0YSgpOworICAgIHJlcG9ydFdNTEVycm9yKGRvY3VtZW50
KCksIFdNTEVycm9yTXVsdGlwbGVBY2Nlc3NFbGVtZW50cyk7CiB9CiAKIH0KSW5kZXg6IFdlYkNv
cmUvd21sL1dNTEFjY2Vzc0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dtbC9XTUxB
Y2Nlc3NFbGVtZW50LmgJKHJldmlzaW9uIDQ2NjgwKQorKysgV2ViQ29yZS93bWwvV01MQWNjZXNz
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiwxMCBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CiAg
ICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7CisKK3ByaXZhdGU6CisgICAg
U3RyaW5nIG1fZG9tYWluOworICAgIFN0cmluZyBtX3BhdGg7CiB9OwogCiB9CkluZGV4OiBXZWJD
b3JlL3dtbC9XTUxEb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93bWwvV01MRG9j
dW1lbnQuY3BwCShyZXZpc2lvbiA0NjY4MCkKKysrIFdlYkNvcmUvd21sL1dNTERvY3VtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTEsMjIgKzUxLDI2IEBAIHZvaWQgV01MRG9jdW1lbnQ6OmZp
bmlzaGVkUGFyc2luZygpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBXTUxQYWdlU3RhdGUqIHdt
bFBhZ2VTdGF0ZSA9IHdtbFBhZ2VTdGF0ZUZvckRvY3VtZW50KHRoaXMpOwotICAgIGlmICghd21s
UGFnZVN0YXRlLT5pc0RlY2tBY2Nlc3NpYmxlKCkpIHsKLSAgICAgICAgcmVwb3J0V01MRXJyb3Io
dGhpcywgV01MRXJyb3JEZWNrTm90QWNjZXNzaWJsZSk7Ci0gICAgICAgIERvY3VtZW50OjpmaW5p
c2hlZFBhcnNpbmcoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFJlbWVtYmVy
IHRoYXQgd2UnZSBzdWNjZXNzZnVsbHkgZW50ZXJlZCB0aGUgZGVjawotICAgIHdtbFBhZ2VTdGF0
ZS0+c2V0TmVlZENoZWNrRGVja0FjY2VzcyhmYWxzZSk7Ci0KLSAgICBpbml0aWFsaXplKCk7Cisg
ICAgYm9vbCBpbml0aWFsaXplZCA9IGluaXRpYWxpemUoKTsKICAgICBEb2N1bWVudDo6ZmluaXNo
ZWRQYXJzaW5nKCk7CisKKyAgICBpZiAoIWluaXRpYWxpemVkKSB7CisgICAgICAgIGlmIChXTUxQ
YWdlU3RhdGUqIHdtbFBhZ2VTdGF0ZSA9IHdtbFBhZ2VTdGF0ZUZvckRvY3VtZW50KHRoaXMpKSB7
CisgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IHdtbFBhZ2VTdGF0ZS0+cGFnZSgpKQorICAg
ICAgICAgICAgICAgIHBhZ2UtPmdvQmFjaygpOworICAgICAgICB9CisgICAgfQogfQogCi12b2lk
IFdNTERvY3VtZW50Ojppbml0aWFsaXplKCkKK2Jvb2wgV01MRG9jdW1lbnQ6OmluaXRpYWxpemUo
KQogeworICAgIFdNTFBhZ2VTdGF0ZSogd21sUGFnZVN0YXRlID0gd21sUGFnZVN0YXRlRm9yRG9j
dW1lbnQodGhpcyk7CisgICAgaWYgKCF3bWxQYWdlU3RhdGUgfHwgIXdtbFBhZ2VTdGF0ZS0+Y2Fu
QWNjZXNzRGVjaygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgCisgICAgLy8gUmVtZW1iZXIg
dGhhdCB3ZSdlIHN1Y2Nlc3NmdWxseSBlbnRlcmVkIHRoZSBkZWNrCisgICAgd21sUGFnZVN0YXRl
LT5yZXNldEFjY2Vzc0NvbnRyb2xEYXRhKCk7CisKICAgICAvLyBOb3RpZnkgdGhlIGV4aXN0YW5j
ZSBvZiB0ZW1wbGF0ZXMgdG8gYWxsIGNhcmRzIG9mIHRoZSBjdXJyZW50IGRlY2sKICAgICBXTUxU
ZW1wbGF0ZUVsZW1lbnQ6OnJlZ2lzdGVyVGVtcGxhdGVzSW5Eb2N1bWVudCh0aGlzKTsKIApAQCAt
NzQsOCArNzgsNyBAQCB2b2lkIFdNTERvY3VtZW50Ojppbml0aWFsaXplKCkKICAgICBXTUxDYXJk
RWxlbWVudCogY2FyZCA9IFdNTENhcmRFbGVtZW50OjpkZXRlcm1pbmVBY3RpdmVDYXJkKHRoaXMp
OwogICAgIGlmICghY2FyZCkgewogICAgICAgICByZXBvcnRXTUxFcnJvcih0aGlzLCBXTUxFcnJv
ck5vQ2FyZEluRG9jdW1lbnQpOwotICAgICAgICBEb2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKCk7
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgLy8g
SGFuZGxlIGRlY2stbGV2ZWwgdGFzayBvdmVycmlkZXMKQEAgLTgzLDYgKzg2LDcgQEAgdm9pZCBX
TUxEb2N1bWVudDo6aW5pdGlhbGl6ZSgpCiAKICAgICAvLyBIYW5kbGUgY2FyZC1sZXZlbCBpbnRy
aW5zaWMgZXZlbnQKICAgICBjYXJkLT5oYW5kbGVJbnRyaW5zaWNFdmVudElmTmVlZGVkKCk7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIFdNTFBhZ2VTdGF0ZSogd21sUGFnZVN0YXRlRm9yRG9jdW1l
bnQoRG9jdW1lbnQqIGRvYykKSW5kZXg6IFdlYkNvcmUvd21sL1dNTERvY3VtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS93bWwvV01MRG9jdW1lbnQuaAkocmV2aXNpb24gNDY2ODApCisrKyBX
ZWJDb3JlL3dtbC9XTUxEb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNXTUxEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRQYXJzaW5nKCk7CiAKLSAgICB2b2lk
IGluaXRpYWxpemUoKTsKKyAgICBib29sIGluaXRpYWxpemUoKTsKIAogcHJpdmF0ZToKICAgICBX
TUxEb2N1bWVudChGcmFtZSopOwpJbmRleDogV2ViQ29yZS93bWwvV01MUGFnZVN0YXRlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3dtbC9XTUxQYWdlU3RhdGUuY3BwCShyZXZpc2lvbiA0NjY4
MCkKKysrIFdlYkNvcmUvd21sL1dNTFBhZ2VTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1
LDYgKzI1LDggQEAKICNpbmNsdWRlICJXTUxQYWdlU3RhdGUuaCIKIAogI2luY2x1ZGUgIkNTdHJp
bmcuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVk
ZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpA
QCAtMzQsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBXTUxQYWdlU3RhdGU6OldNTFBh
Z2VTdGF0ZShQYWdlKiBwYWdlKQogICAgIDogbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2FjdGl2ZUNh
cmQoMCkKLSAgICAsIG1faGFzRGVja0FjY2VzcyhmYWxzZSkKKyAgICAsIG1faGFzQWNjZXNzQ29u
dHJvbERhdGEoZmFsc2UpCiB7CiB9CiAKQEAgLTY2LDc0ICs2OCwyMDAgQEAgdm9pZCBXTUxQYWdl
U3RhdGU6OnJlc2V0KCkKICAgICAgICAgbGlzdC0+Y2xlYXJXTUxQYWdlSGlzdG9yeSgpOwogfQog
Ci1ib29sIFdNTFBhZ2VTdGF0ZTo6c2V0TmVlZENoZWNrRGVja0FjY2Vzcyhib29sIG5lZWQpCitz
dGF0aWMgaW5saW5lIFN0cmluZyBub3JtYWxpemVkSG9zdE5hbWUoY29uc3QgU3RyaW5nJiBwYXNz
ZWRIb3N0KQogewotICAgIGlmIChtX2hhc0RlY2tBY2Nlc3MgJiYgbmVlZCkKKyAgICBpZiAocGFz
c2VkSG9zdC5jb250YWlucygiMTI3LjAuMC4xIikpIHsKKyAgICAgICAgU3RyaW5nIGhvc3QgPSBw
YXNzZWRIb3N0OworICAgICAgICByZXR1cm4gaG9zdC5yZXBsYWNlKCIxMjcuMC4wLjEiLCAibG9j
YWxob3N0Iik7CisgICAgfQorCisgICAgcmV0dXJuIHBhc3NlZEhvc3Q7Cit9CisKK3N0YXRpYyBp
bmxpbmUgU3RyaW5nIGhvc3RGcm9tVVJMKGNvbnN0IEtVUkwmIHVybCkKK3sKKyAgICAvLyBEZWZh
dWx0IHRvICJsb2NhbGhvc3QiCisgICAgU3RyaW5nIGhvc3QgPSBub3JtYWxpemVkSG9zdE5hbWUo
dXJsLmhvc3QoKSk7CisgICAgcmV0dXJuIGhvc3QuaXNFbXB0eSgpID8gImxvY2FsaG9zdCIgOiBo
b3N0OworfQorCitzdGF0aWMgS1VSTCB1cmxGb3JIaXN0b3J5SXRlbShGcmFtZSogZnJhbWUsIEhp
c3RvcnlJdGVtKiBpdGVtKQoreworICAgIC8vIEZvciBMYXlvdXRUZXN0cyB3ZSBuZWVkIHRvIGZp
bmQgdGhlIGNvcnJlc3BvbmRpbmcgV01MIGZyYW1lIGluIHRoZSB0ZXN0IGRvY3VtZW50CisgICAg
Ly8gdG8gYmUgYWJsZSB0byB0ZXN0IGFjY2Vzcy1jb250cm9sIGNvcnJlY3RseS4gUmVtZW1iZXIg
dGhhdCBXTUwgaXMgbmV2ZXIgc3VwcG9zZWQKKyAgICAvLyB0byBiZSBlbWJlZGRlZCBhbnl3aGVy
ZSwgc28gdGhlIHB1cnBvc2UgaXMgdG8gc2ltdWxhdGUgYSBzdGFuZGFsb25lIFdNTCBkb2N1bWVu
dC4KKyAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCktPmlzV01MRG9jdW1lbnQoKSkKKyAgICAgICAg
cmV0dXJuIGl0ZW0tPnVybCgpOworCisgICAgY29uc3QgSGlzdG9yeUl0ZW1WZWN0b3ImIGNoaWxk
SXRlbXMgPSBpdGVtLT5jaGlsZHJlbigpOworICAgIEhpc3RvcnlJdGVtVmVjdG9yOjpjb25zdF9p
dGVyYXRvciBpdCA9IGNoaWxkSXRlbXMuYmVnaW4oKTsKKyAgICBjb25zdCBIaXN0b3J5SXRlbVZl
Y3Rvcjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gY2hpbGRJdGVtcy5lbmQoKTsKKworICAgIGZvciAo
OyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgY29uc3QgUmVmUHRyPEhpc3RvcnlJdGVtPiBj
aGlsZEl0ZW0gPSAqaXQ7CisgICAgICAgIEZyYW1lKiBjaGlsZEZyYW1lID0gZnJhbWUtPnRyZWUo
KS0+Y2hpbGQoY2hpbGRJdGVtLT50YXJnZXQoKSk7CisgICAgICAgIGlmICghY2hpbGRGcmFtZSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChEb2N1bWVudCogY2hpbGREb2N1
bWVudCA9IGNoaWxkRnJhbWUtPmRvY3VtZW50KCkpIHsKKyAgICAgICAgICAgIGlmIChjaGlsZERv
Y3VtZW50LT5pc1dNTERvY3VtZW50KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkSXRl
bS0+dXJsKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gaXRlbS0+dXJsKCk7Cit9
CisKK3N0YXRpYyBib29sIHRyeUFjY2Vzc0hpc3RvcnlVUkxzKFBhZ2UqIHBhZ2UsIEtVUkwmIHBy
ZXZpb3VzVVJMLCBLVVJMJiBjdXJyZW50VVJMKQoreworICAgIGlmICghcGFnZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgbV9oYXNEZWNrQWNjZXNzID0gbmVlZDsKLSAgICBtX2FjY2Vz
c1BhdGggPSBTdHJpbmcoKTsKLSAgICBtX2FjY2Vzc0RvbWFpbiA9IFN0cmluZygpOworICAgIEZy
YW1lKiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOworICAgIGlmICghZnJhbWUgfHwgIWZyYW1l
LT5kb2N1bWVudCgpKSAgICAKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQmFja0Zvcndh
cmRMaXN0KiBsaXN0ID0gcGFnZS0+YmFja0ZvcndhcmRMaXN0KCk7CisgICAgaWYgKCFsaXN0KQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBIaXN0b3J5SXRlbSogcHJldmlvdXNJdGVtID0g
bGlzdC0+YmFja0l0ZW0oKTsKKyAgICBpZiAoIXByZXZpb3VzSXRlbSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgSGlzdG9yeUl0ZW0qIGN1cnJlbnRJdGVtID0gbGlzdC0+Y3VycmVudEl0
ZW0oKTsKKyAgICBpZiAoIWN1cnJlbnRJdGVtKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBwcmV2aW91c1VSTCA9IHVybEZvckhpc3RvcnlJdGVtKGZyYW1lLCBwcmV2aW91c0l0ZW0pOwor
ICAgIGN1cnJlbnRVUkwgPSB1cmxGb3JIaXN0b3J5SXRlbShmcmFtZSwgY3VycmVudEl0ZW0pOwor
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLS8vIEZJWE1FOiBXZSBtYXkgd2FudCBhbm90aGVyIG5h
bWUsIGl0IGRvZXMgZmFyIG1vcmUgdGhhbiBqdXN0IGNoZWNraW5nIHdoZXRlciB0aGUgZGVjayBp
cyBhY2Nlc3NhYmxlCi1ib29sIFdNTFBhZ2VTdGF0ZTo6aXNEZWNrQWNjZXNzaWJsZSgpCitib29s
IFdNTFBhZ2VTdGF0ZTo6cHJvY2Vzc0FjY2Vzc0NvbnRyb2xEYXRhKGNvbnN0IFN0cmluZyYgZG9t
YWluLCBjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgaWYgKCFtX2hhc0RlY2tBY2Nlc3MgfHwg
IW1fcGFnZSB8fCAhbV9wYWdlLT5iYWNrRm9yd2FyZExpc3QoKSB8fCAhbV9wYWdlLT5iYWNrRm9y
d2FyZExpc3QoKS0+YmFja0l0ZW0oKSkKKyAgICBpZiAobV9oYXNBY2Nlc3NDb250cm9sRGF0YSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9oYXNBY2Nlc3NDb250cm9sRGF0YSA9IHRy
dWU7CisKKyAgICBLVVJMIHByZXZpb3VzVVJMLCBjdXJyZW50VVJMOworICAgIGlmICghdHJ5QWNj
ZXNzSGlzdG9yeVVSTHMobV9wYWdlLCBwcmV2aW91c1VSTCwgY3VycmVudFVSTCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgSGlzdG9yeUl0ZW0qIGhpc3RJdGVtID0gbV9wYWdlLT5iYWNr
Rm9yd2FyZExpc3QoKS0+YmFja0l0ZW0oKTsKLSAgICBLVVJMIHVybChoaXN0SXRlbS0+dXJsU3Ry
aW5nKCkpOworICAgIC8vIFNwZWM6IFRoZSBwYXRoIGF0dHJpYnV0ZSBkZWZhdWx0cyB0byB0aGUg
dmFsdWUgIi8iCisgICAgbV9hY2Nlc3NQYXRoID0gcGF0aC5pc0VtcHR5KCkgPyAiLyIgOiBwYXRo
OworCisgICAgLy8gU3BlYzogVGhlIGRvbWFpbiBhdHRyaWJ1dGUgZGVmYXVsdHMgdG8gdGhlIGN1
cnJlbnQgZGVja3MgZG9tYWluLgorICAgIFN0cmluZyBwcmV2aW91c0hvc3QgPSBob3N0RnJvbVVS
TChwcmV2aW91c1VSTCk7CisgICAgbV9hY2Nlc3NEb21haW4gPSBkb21haW4uaXNFbXB0eSgpID8g
cHJldmlvdXNIb3N0IDogbm9ybWFsaXplZEhvc3ROYW1lKGRvbWFpbik7CisKKyAgICAvLyBTcGVj
OiBUbyBzaW1wbGlmeSB0aGUgZGV2ZWxvcG1lbnQgb2YgYXBwbGljYXRpb25zIHRoYXQgbWF5IG5v
dCBrbm93IHRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSAKKyAgICAvLyBjdXJyZW50IGRlY2ssIHRo
ZSBwYXRoIGF0dHJpYnV0ZSBhY2NlcHRzIHJlbGF0aXZlIFVSSXMuIFRoZSB1c2VyIGFnZW50IGNv
bnZlcnRzIHRoZSByZWxhdGl2ZSAKKyAgICAvLyBwYXRoIHRvIGFuIGFic29sdXRlIHBhdGggYW5k
IHRoZW4gcGVyZm9ybXMgcHJlZml4IG1hdGNoaW5nIGFnYWluc3QgdGhlIFBBVEggYXR0cmlidXRl
LgorICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkgPyBtX3BhZ2Ut
Pm1haW5GcmFtZSgpLT5kb2N1bWVudCgpIDogMDsKKyAgICBpZiAoZG9jdW1lbnQgJiYgcHJldmlv
dXNIb3N0ID09IG1fYWNjZXNzRG9tYWluICYmICFtX2FjY2Vzc1BhdGguc3RhcnRzV2l0aCgiLyIp
KSB7CisgICAgICAgIFN0cmluZyBjdXJyZW50UGF0aCA9IGN1cnJlbnRVUkwucGF0aCgpOworCisg
ICAgICAgIHNpemVfdCBpbmRleCA9IGN1cnJlbnRQYXRoLnJldmVyc2VGaW5kKCcvJyk7CisgICAg
ICAgIGlmIChpbmRleCAhPSBXVEY6Om5vdEZvdW5kKQorICAgICAgICAgICAgbV9hY2Nlc3NQYXRo
ID0gZG9jdW1lbnQtPmNvbXBsZXRlVVJMKGN1cnJlbnRQYXRoLmxlZnQoaW5kZXggKyAxKSArIG1f
YWNjZXNzUGF0aCkucGF0aCgpOworICAgIH0KIAotICAgIFN0cmluZyBwcmV2SG9zdCA9IHVybC5o
b3N0KCk7Ci0gICAgU3RyaW5nIHByZXZQYXRoID0gdXJsLnBhdGgoKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwordm9pZCBXTUxQYWdlU3RhdGU6OnJlc2V0QWNjZXNzQ29udHJvbERhdGEoKQorewor
ICAgIG1faGFzQWNjZXNzQ29udHJvbERhdGEgPSBmYWxzZTsKKyAgICBtX2FjY2Vzc0RvbWFpbiA9
IFN0cmluZygpOworICAgIG1fYWNjZXNzUGF0aCA9IFN0cmluZygpOworfQogCi0gICAgLy8gZm9y
ICdmaWxlJyBVUkksIHRoZSBob3N0IHBhcnQgbWF5IGJlIGVtcHR5LCBzbyB3ZSBzaG91bGQgY29t
cGxldGUgaXQuCi0gICAgaWYgKHByZXZIb3N0LmlzRW1wdHkoKSkKLSAgICAgICAgcHJldkhvc3Qg
PSAibG9jYWxob3N0IjsKK2Jvb2wgV01MUGFnZVN0YXRlOjpjYW5BY2Nlc3NEZWNrKCkgY29uc3QK
K3sKKyAgICBpZiAoIW1faGFzQWNjZXNzQ29udHJvbERhdGEpCisgICAgICAgIHJldHVybiB0cnVl
OwogCi0gICAgaGlzdEl0ZW0gPSBtX3BhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpLT5jdXJyZW50SXRl
bSgpOwotICAgIEtVUkwgY3VyVXJsKGhpc3RJdGVtLT51cmxTdHJpbmcoKSk7Ci0gICAgU3RyaW5n
IGN1clBhdGggPSBjdXJVcmwucGF0aCgpOworICAgIEtVUkwgcHJldmlvdXNVUkwsIGN1cnJlbnRV
Ukw7CisgICAgaWYgKCF0cnlBY2Nlc3NIaXN0b3J5VVJMcyhtX3BhZ2UsIHByZXZpb3VzVVJMLCBj
dXJyZW50VVJMKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoZXF1YWxJZ25vcmlu
Z1JlZih1cmwsIGN1clVybCkpCisgICAgaWYgKGVxdWFsSWdub3JpbmdSZWYocHJldmlvdXNVUkws
IGN1cnJlbnRVUkwpKQogICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgLy8gIi8iIGlzIHRoZSBk
ZWZhdWx0IHZhbHVlIGlmIG5vdCBzcGVjaWZpZWQKLSAgICBpZiAobV9hY2Nlc3NQYXRoLmlzRW1w
dHkoKSkgIAotICAgICAgICBtX2FjY2Vzc1BhdGggPSAiLyI7Ci0gICAgZWxzZSBpZiAobV9hY2Nl
c3NQYXRoLmVuZHNXaXRoKCIvIikgJiYgKG1fYWNjZXNzUGF0aCAhPSAiLyIpKQotICAgICAgICBt
X2FjY2Vzc1BhdGggPSBtX2FjY2Vzc1BhdGgubGVmdCgobV9hY2Nlc3NQYXRoLmxlbmd0aCgpLTEp
KTsKLQotCi0gICAgLy8gY3VycmVudCBkZWNrIGRvbWFpbiBpcyB0aGUgZGVmYXVsdCB2YWx1ZSBp
ZiBub3Qgc3BlY2lmaWVkCi0gICAgaWYgKG1fYWNjZXNzRG9tYWluLmlzRW1wdHkoKSkKLSAgICAg
ICAgbV9hY2Nlc3NEb21haW4gPSBwcmV2SG9zdDsKLQotICAgIC8vIGNvbnZlcnQgcmVsYXRpdmUg
VVJMIHRvIGFic29sdXRlIFVSTCBiZWZvcmUgcGVyZm9ybWluZyBwYXRoIG1hdGNoaW5nCi0gICAg
aWYgKHByZXZIb3N0ID09IG1fYWNjZXNzRG9tYWluKSB7Ci0gICAgICAgIGlmICghbV9hY2Nlc3NQ
YXRoLnN0YXJ0c1dpdGgoIi8iKSkgewotICAgICAgICAgICBpbnQgaW5kZXggPSBjdXJQYXRoLnJl
dmVyc2VGaW5kKCcvJyk7Ci0gICAgICAgICAgIGlmIChpbmRleCAhPSAtMSkgewotICAgICAgICAg
ICAgICAgY3VyUGF0aCA9IGN1clBhdGgubGVmdChpbmRleCArIDEpOwotICAgICAgICAgICAgICAg
Y3VyUGF0aCArPSBtX2FjY2Vzc1BhdGg7Ci0gICAgICAgICAgICAgICBjdXJVcmwuc2V0UGF0aChj
dXJQYXRoKTsKLSAgICAgICAgICAgICAgIG1fYWNjZXNzUGF0aCA9IGN1clVybC5wYXRoKCk7Ci0g
ICAgICAgICAgIH0KKyAgICByZXR1cm4gaG9zdElzQWxsb3dlZFRvQWNjZXNzKGhvc3RGcm9tVVJM
KHByZXZpb3VzVVJMKSkgJiYgcGF0aElzQWxsb3dlZFRvQWNjZXNzKHByZXZpb3VzVVJMLnBhdGgo
KSk7Cit9CisKK2Jvb2wgV01MUGFnZVN0YXRlOjpob3N0SXNBbGxvd2VkVG9BY2Nlc3MoY29uc3Qg
U3RyaW5nJiBob3N0KSBjb25zdAoreworICAgIC8vIFNwZWM6IFRoZSBhY2Nlc3MgZG9tYWluIGlz
IHN1ZmZpeC1tYXRjaGVkIGFnYWluc3QgdGhlIGRvbWFpbiBuYW1lIHBvcnRpb24gb2YgdGhlIHJl
ZmVycmluZyBVUkkKKyAgICBWZWN0b3I8U3RyaW5nPiBzdWJkb21haW5zQWxsb3dlZDsKKyAgICBp
ZiAobV9hY2Nlc3NEb21haW4uY29udGFpbnMoJy4nKSkKKyAgICAgICAgbV9hY2Nlc3NEb21haW4u
c3BsaXQoJy4nLCBzdWJkb21haW5zQWxsb3dlZCk7CisgICAgZWxzZQorICAgICAgICBzdWJkb21h
aW5zQWxsb3dlZC5hcHBlbmQobV9hY2Nlc3NEb21haW4pOworCisgICAgVmVjdG9yPFN0cmluZz4g
c3ViZG9tYWluc0NoZWNrOworICAgIGlmIChob3N0LmNvbnRhaW5zKCcuJykpCisgICAgICAgIGhv
c3Quc3BsaXQoJy4nLCBzdWJkb21haW5zQ2hlY2spOworICAgIGVsc2UKKyAgICAgICAgc3ViZG9t
YWluc0NoZWNrLmFwcGVuZChob3N0KTsKKworICAgIFZlY3RvcjxTdHJpbmc+OjppdGVyYXRvciBp
dEFsbG93ZWQgPSBzdWJkb21haW5zQWxsb3dlZC5lbmQoKSAtIDE7CisgICAgVmVjdG9yPFN0cmlu
Zz46Oml0ZXJhdG9yIGJlZ2luQWxsb3dlZCA9IHN1YmRvbWFpbnNBbGxvd2VkLmJlZ2luKCk7CisK
KyAgICBWZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3IgaXRDaGVjayA9IHN1YmRvbWFpbnNDaGVjay5l
bmQoKSAtIDE7CisgICAgVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIGJlZ2luQ2hlY2sgPSBzdWJk
b21haW5zQ2hlY2suYmVnaW4oKTsKKworICAgIGJvb2wgaG9zdE9rID0gdHJ1ZTsKKyAgICBmb3Ig
KDsgaXRBbGxvd2VkID49IGJlZ2luQWxsb3dlZCAmJiBpdENoZWNrID49IGJlZ2luQ2hlY2s7ICkg
eworICAgICAgICBpZiAoKml0QWxsb3dlZCAhPSAqaXRDaGVjaykgeworICAgICAgICAgICAgaG9z
dE9rID0gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorCisgICAgICAgIC0t
aXRBbGxvd2VkOworICAgICAgICAtLWl0Q2hlY2s7CiAgICAgfQogCi0gICAgLy8gcGF0aCBwcmVm
aXggbWF0Y2hpbmcKLSAgICBpZiAocHJldlBhdGguc3RhcnRzV2l0aChtX2FjY2Vzc1BhdGgpICYm
IAotICAgICAgIChwcmV2UGF0aFttX2FjY2Vzc1BhdGgubGVuZ3RoKCldID09ICcvJyB8fCBwcmV2
UGF0aC5sZW5ndGgoKSA9PSBtX2FjY2Vzc1BhdGgubGVuZ3RoKCkpKSB7Ci0gICAgICAgIC8vIGRv
bWFpbiBzdWZmaXggbWF0Y2hpbmcKLSAgICAgICAgdW5zaWduZWQgZG9tYWluTGVuZ3RoID0gbV9h
Y2Nlc3NEb21haW4ubGVuZ3RoKCk7Ci0gICAgICAgIHVuc2lnbmVkIGhvc3RMZW5ndGggPSBwcmV2
SG9zdC5sZW5ndGgoKTsKLSAgICAgICAgcmV0dXJuIChwcmV2SG9zdC5lbmRzV2l0aChtX2FjY2Vz
c0RvbWFpbikgJiYgcHJldkhvc3RbaG9zdExlbmd0aCAtIGRvbWFpbkxlbmd0aCAtIDFdID09ICcu
JykgfHwgaG9zdExlbmd0aCA9PSBkb21haW5MZW5ndGg7CisgICAgcmV0dXJuIGhvc3RPazsKK30K
KworYm9vbCBXTUxQYWdlU3RhdGU6OnBhdGhJc0FsbG93ZWRUb0FjY2Vzcyhjb25zdCBTdHJpbmcm
IHBhdGgpIGNvbnN0Cit7CisgICAgLy8gU3BlYzogVGhlIGFjY2VzcyBwYXRoIGlzIHByZWZpeCBt
YXRjaGVkIGFnYWluc3QgdGhlIHBhdGggcG9ydGlvbiBvZiB0aGUgcmVmZXJyaW5nIFVSSQorICAg
IFZlY3RvcjxTdHJpbmc+IHN1YnBhdGhzQWxsb3dlZDsKKyAgICBpZiAobV9hY2Nlc3NQYXRoLmNv
bnRhaW5zKCcvJykpCisgICAgICAgIG1fYWNjZXNzUGF0aC5zcGxpdCgnLycsIHN1YnBhdGhzQWxs
b3dlZCk7CisgICAgZWxzZQorICAgICAgICBzdWJwYXRoc0FsbG93ZWQuYXBwZW5kKG1fYWNjZXNz
UGF0aCk7CisKKyAgICBWZWN0b3I8U3RyaW5nPiBzdWJwYXRoc0NoZWNrOworICAgIGlmIChwYXRo
LmNvbnRhaW5zKCcvJykpCisgICAgICAgIHBhdGguc3BsaXQoJy8nLCBzdWJwYXRoc0NoZWNrKTsK
KyAgICBlbHNlCisgICAgICAgIHN1YnBhdGhzQ2hlY2suYXBwZW5kKHBhdGgpOworCisgICAgVmVj
dG9yPFN0cmluZz46Oml0ZXJhdG9yIGl0QWxsb3dlZCA9IHN1YnBhdGhzQWxsb3dlZC5iZWdpbigp
OworICAgIFZlY3RvcjxTdHJpbmc+OjppdGVyYXRvciBlbmRBbGxvd2VkID0gc3VicGF0aHNBbGxv
d2VkLmVuZCgpOworCisgICAgVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIGl0Q2hlY2sgPSBzdWJw
YXRoc0NoZWNrLmJlZ2luKCk7CisgICAgVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIGVuZENoZWNr
ID0gc3VicGF0aHNDaGVjay5lbmQoKTsKKworICAgIGJvb2wgcGF0aE9rID0gdHJ1ZTsKKyAgICBm
b3IgKDsgaXRBbGxvd2VkICE9IGVuZEFsbG93ZWQgJiYgaXRDaGVjayAhPSBlbmRDaGVjazsgKSB7
CisgICAgICAgIGlmICgqaXRBbGxvd2VkICE9ICppdENoZWNrKSB7CisgICAgICAgICAgICBwYXRo
T2sgPSBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgKytp
dEFsbG93ZWQ7CisgICAgICAgICsraXRDaGVjazsKICAgICB9CiAKLSAgICByZXR1cm4gZmFsc2U7
CisgICAgcmV0dXJuIHBhdGhPazsKIH0KIAogfQpJbmRleDogV2ViQ29yZS93bWwvV01MUGFnZVN0
YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93bWwvV01MUGFnZVN0YXRlLmgJKHJldmlzaW9u
IDQ2NjgwKQorKysgV2ViQ29yZS93bWwvV01MUGFnZVN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQzLDQwICs0MywzNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkdW1wKCk7CiAjZW5kaWYKIAotICAg
IC8vIHJlc2V0IHRoZSBicm93c2VyIGNvbnRleHQgd2hlbiAnbmV3Y29udGV4dCcgYXR0cmlidXRl
Ci0gICAgLy8gb2YgY2FyZCBlbGVtZW50IGlzIHBlcmZvcm1lZCBhcyBwYXJ0IG9mIGdvIHRhc2sK
KyAgICAvLyBSZXNldCB0aGUgYnJvd3NlciBjb250ZXh0CiAgICAgdm9pZCByZXNldCgpOwogCi0g
ICAgLy8gdmFyaWFibGVzIG9wZXJhdGlvbnMgCisgICAgLy8gVmFyaWFibGUgaGFuZGxpbmcKICAg
ICB2b2lkIHN0b3JlVmFyaWFibGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZh
bHVlKSB7IG1fdmFyaWFibGVzLnNldChuYW1lLCB2YWx1ZSk7IH0KICAgICB2b2lkIHN0b3JlVmFy
aWFibGVzKFdNTFZhcmlhYmxlTWFwJiB2YXJpYWJsZXMpIHsgbV92YXJpYWJsZXMgPSB2YXJpYWJs
ZXM7IH0KICAgICBTdHJpbmcgZ2V0VmFyaWFibGUoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdCB7
IHJldHVybiBtX3ZhcmlhYmxlcy5nZXQobmFtZSk7IH0KICAgICBib29sIGhhc1ZhcmlhYmxlcygp
IGNvbnN0IHsgcmV0dXJuICFtX3ZhcmlhYmxlcy5pc0VtcHR5KCk7IH0KIAotICAgIGludCBoaXN0
b3J5TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9oaXN0b3J5TGVuZ3RoOyB9Ci0gICAgdm9pZCBz
ZXRIaXN0b3J5TGVuZ3RoKGludCBsZW5ndGgpIHsgbV9oaXN0b3J5TGVuZ3RoID0gbGVuZ3RoOyB9
Ci0KICAgICBQYWdlKiBwYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlOyB9CiAKICAgICBXTUxD
YXJkRWxlbWVudCogYWN0aXZlQ2FyZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlQ2FyZDsgfQog
ICAgIHZvaWQgc2V0QWN0aXZlQ2FyZChXTUxDYXJkRWxlbWVudCogY2FyZCkgeyBtX2FjdGl2ZUNh
cmQgPSBjYXJkOyB9CiAKLSAgICAvLyBkZWNrIGFjY2VzcyBjb250cm9sCi0gICAgdm9pZCByZXN0
cmljdERlY2tBY2Nlc3NUb0RvbWFpbihjb25zdCBTdHJpbmcmIGRvbWFpbikgeyBtX2FjY2Vzc0Rv
bWFpbiA9IGRvbWFpbjsgfQotICAgIHZvaWQgcmVzdHJpY3REZWNrQWNjZXNzVG9QYXRoKGNvbnN0
IFN0cmluZyYgcGF0aCkgeyBtX2FjY2Vzc1BhdGggPSBwYXRoOyB9Ci0gICAgYm9vbCBoYXNEZWNr
QWNjZXNzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNEZWNrQWNjZXNzOyB9Ci0gCi0gICAgYm9vbCBz
ZXROZWVkQ2hlY2tEZWNrQWNjZXNzKGJvb2wpOwotICAgIGJvb2wgaXNEZWNrQWNjZXNzaWJsZSgp
OworICAgIC8vIERlY2sgYWNjZXNzIGNvbnRyb2wKKyAgICBib29sIHByb2Nlc3NBY2Nlc3NDb250
cm9sRGF0YShjb25zdCBTdHJpbmcmIGRtYWluLCBjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIHZv
aWQgcmVzZXRBY2Nlc3NDb250cm9sRGF0YSgpOworCisgICAgYm9vbCBjYW5BY2Nlc3NEZWNrKCkg
Y29uc3Q7CisKK3ByaXZhdGU6CisgICAgYm9vbCBob3N0SXNBbGxvd2VkVG9BY2Nlc3MoY29uc3Qg
U3RyaW5nJikgY29uc3Q7CisgICAgYm9vbCBwYXRoSXNBbGxvd2VkVG9BY2Nlc3MoY29uc3QgU3Ry
aW5nJikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgUGFnZSogbV9wYWdlOwogICAgIFdNTFZhcmlh
YmxlTWFwIG1fdmFyaWFibGVzOwotICAgIGludCBtX2hpc3RvcnlMZW5ndGg7CiAgICAgV01MQ2Fy
ZEVsZW1lbnQqIG1fYWN0aXZlQ2FyZDsKICAgICBTdHJpbmcgbV9hY2Nlc3NEb21haW47CiAgICAg
U3RyaW5nIG1fYWNjZXNzUGF0aDsKLSAgICBib29sIG1faGFzRGVja0FjY2VzczsKKyAgICBib29s
IG1faGFzQWNjZXNzQ29udHJvbERhdGE7CiB9OwogCiB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0NjY4
MCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2
IEBACisyMDA5LTA4LTAxICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuaWtvbGFzLnppbW1lcm1hbm5A
dG9yY2htb2JpbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFtXTUxdIERlY2sgYWNjZXNzIGNvbnRyb2wgaXMgY29tcGxldGx5IGJyb2tlbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc3MjEKKwor
ICAgICAgICBSZXdyaXRlIFdNTCBkZWNrIGFjY2VzcyBjb250cm9sLCBhY3R1YWxseSB3b3JrcyBu
b3cgc3RhbmRhbG9uZSBhbmQgd2l0aGluIExheW91dFRlc3RzLgorICAgICAgICBBZGRlZCBzZXZl
cmFsIG5ldyBsYXlvdXQgdGVzdHMgY292ZXJpbmcgbG9jYWwgJiByZW1vdGUgYWNjZXNzIHN1cHBv
cnQuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dtbC9hY2Nlc3MtdGFyZ2V0LWRvbWFpbi1kZW55
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93bWwvYWNjZXNzLXRh
cmdldC1kb21haW4tZGVueS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dtbC9h
Y2Nlc3MtdGFyZ2V0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93
bWwvYWNjZXNzLXRhcmdldC1wYXRoLWRlbnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3dtbC9hY2Nlc3MtdGFyZ2V0LXBhdGgtZGVueS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3dtbC9hY2Nlc3MtdGFyZ2V0Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvd21sL3Jlc291cmNlcy9hY2Nlc3MtdGFyZ2V0LWRvbWFpbi1kZW55Lmpz
OiBBZGRlZC4KKyAgICAgICAgKHNldHVwVGVzdERvY3VtZW50KToKKyAgICAgICAgKHByZXBhcmVU
ZXN0KToKKyAgICAgICAgKGV4ZWN1dGVUZXN0KToKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dtbC9y
ZXNvdXJjZXMvYWNjZXNzLXRhcmdldC1kb21haW4tZGVueS53bWw6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvd21sL3Jlc291cmNlcy9hY2Nlc3MtdGFyZ2V0LXBhdGgtZGVueS5qczogQWRk
ZWQuCisgICAgICAgIChzZXR1cFRlc3REb2N1bWVudCk6CisgICAgICAgIChwcmVwYXJlVGVzdCk6
CisgICAgICAgIChleGVjdXRlVGVzdCk6CisgICAgICAgICogaHR0cC90ZXN0cy93bWwvcmVzb3Vy
Y2VzL2FjY2Vzcy10YXJnZXQtcGF0aC1kZW55LndtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy93bWwvcmVzb3VyY2VzL2FjY2Vzcy10YXJnZXQuanM6IEFkZGVkLgorICAgICAgICAoc2V0
dXBUZXN0RG9jdW1lbnQpOgorICAgICAgICAocHJlcGFyZVRlc3QpOgorICAgICAgICAoZXhlY3V0
ZVRlc3QpOgorICAgICAgICAqIGh0dHAvdGVzdHMvd21sL3Jlc291cmNlcy9hY2Nlc3MtdGFyZ2V0
LndtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93bWwvcmVzb3VyY2VzL2xvY2tlZC1k
ZWNrLndtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93bWwvcmVzb3VyY2VzL3VucmVh
Y2hhYmxlLWRvbWFpbi53bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd21sL3Jlc291
cmNlcy91bnJlYWNoYWJsZS1wYXRoLndtbDogQWRkZWQuCisgICAgICAgICogd21sL2FjY2Vzcy10
YXJnZXQtZGVueS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdtbC9hY2Nlc3MtdGFy
Z2V0LWRlbnkuaHRtbDogQWRkZWQuCisgICAgICAgICogd21sL2FjY2Vzcy10YXJnZXQtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3bWwvYWNjZXNzLXRhcmdldC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiB3bWwvcmVzb3VyY2VzL1dNTFRlc3RDYXNlLmpzOgorICAgICAgICAoY3JlYXRl
V01MVGVzdENhc2UuaWZyYW1lRWxlbWVudC5vbmxvYWQpOgorICAgICAgICAoY3JlYXRlV01MVGVz
dENhc2UpOgorICAgICAgICAqIHdtbC9yZXNvdXJjZXMvYWNjZXNzLXRhcmdldC1kZW55LmpzOiBB
ZGRlZC4KKyAgICAgICAgKHNldHVwVGVzdERvY3VtZW50KToKKyAgICAgICAgKHByZXBhcmVUZXN0
KToKKyAgICAgICAgKGV4ZWN1dGVUZXN0KToKKyAgICAgICAgKiB3bWwvcmVzb3VyY2VzL2FjY2Vz
cy10YXJnZXQtZGVueS53bWw6IEFkZGVkLgorICAgICAgICAqIHdtbC9yZXNvdXJjZXMvYWNjZXNz
LXRhcmdldC5qczogQWRkZWQuCisgICAgICAgIChzZXR1cFRlc3REb2N1bWVudCk6CisgICAgICAg
IChwcmVwYXJlVGVzdCk6CisgICAgICAgIChleGVjdXRlVGVzdCk6CisgICAgICAgICogd21sL3Jl
c291cmNlcy9hY2Nlc3MtdGFyZ2V0LndtbDogQWRkZWQuCisgICAgICAgICogd21sL3Jlc291cmNl
cy9sb2NrZWQtZGVjay53bWw6IENvcGllZCBmcm9tIFdlYkNvcmUvbWFudWFsLXRlc3RzL3dtbC90
YXJnZXRkZWNrLndtbC4KKwogMjAwOS0wOC0wMSAgQnJpYW4gV2VpbnN0ZWluICA8YndlaW5zdGVp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgTWFyayBSb3dlLgpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93bWwvYWNjZXNzLXRhcmdldC1kb21haW4tZGVueS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93bWwvYWNj
ZXNzLXRhcmdldC1kb21haW4tZGVueS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dtbC9hY2Nlc3MtdGFyZ2V0LWRvbWFpbi1kZW55LWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNyBAQAorV01MIGh0dHAgbmF2aWdhdGlvbiBs
YXlvdXQgdGVzdHMgLSB1c2luZyBYSFRNTCBzY3JpcHRpbmcKKworCitUZXN0cyBhY2Nlc3MgY29u
dHJvbCBzdXBwb3J0CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCistLS0tLS0tLQorRnJh
bWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitUZXN0IFBB
U1NFRApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93bWwvYWNjZXNzLXRhcmdldC1kb21h
aW4tZGVueS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd21sL2Fj
Y2Vzcy10YXJnZXQtZG9tYWluLWRlbnkuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd21sL2FjY2Vzcy10YXJnZXQtZG9tYWluLWRlbnkuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdD52
YXIgcmVsYXRpdmVQYXRoVG9MYXlvdXRUZXN0cyA9ICIuLi8uLi8uLiI7PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vd21sL3Jlc291cmNlcy9XTUxUZXN0Q2FzZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aDE+V01MIGh0dHAgbmF2aWdhdGlvbiBsYXlv
dXQgdGVzdHMgLSB1c2luZyBYSFRNTCBzY3JpcHRpbmc8L2gxPgorPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
YWNjZXNzLXRhcmdldC1kb21haW4tZGVueS5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dtbC9hY2Nlc3MtdGFyZ2V0LWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dtbC9hY2Nlc3MtdGFy
Z2V0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
d21sL2FjY2Vzcy10YXJnZXQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4
IEBACitXTUwgaHR0cCBuYXZpZ2F0aW9uIGxheW91dCB0ZXN0cyAtIHVzaW5nIFhIVE1MIHNjcmlw
dGluZworCisKK1Rlc3RzIGFjY2VzcyBjb250cm9sIHN1cHBvcnQKKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUw
LS0+LS0+JworLS0tLS0tLS0KK1Rlc3QgZm9yIERlY2sgQWNjZXNzIGNvbnRyb2wgaW4gV01MLgor
VGhpcyBpcyB0aGUgbG9ja2VkIHRhcmdldCBkZWNrLCBvbmx5ICdhY2Nlc3MtdGFyZ2V0LndtbCIg
Y2FuIGFjY2VzcyBtZQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93bWwvYWNjZXNzLXRh
cmdldC1wYXRoLWRlbnktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvd21sL2FjY2Vzcy10YXJnZXQtcGF0aC1kZW55LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd21sL2FjY2Vzcy10YXJnZXQtcGF0aC1k
ZW55LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNyBAQAorV01MIGh0dHAg
bmF2aWdhdGlvbiBsYXlvdXQgdGVzdHMgLSB1c2luZyBYSFRNTCBzY3JpcHRpbmcKKworCitUZXN0
cyBhY2Nlc3MgY29udHJvbCBzdXBwb3J0CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCist
LS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0t
LS0tCitUZXN0IFBBU1NFRApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93bWwvYWNjZXNz
LXRhcmdldC1wYXRoLWRlbnkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dtbC9hY2Nlc3MtdGFyZ2V0LXBhdGgtZGVueS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93bWwvYWNjZXNzLXRhcmdldC1wYXRoLWRlbnkuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNj
cmlwdD52YXIgcmVsYXRpdmVQYXRoVG9MYXlvdXRUZXN0cyA9ICIuLi8uLi8uLiI7PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vd21sL3Jlc291cmNlcy9XTUxUZXN0Q2FzZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aDE+V01MIGh0dHAgbmF2aWdhdGlv
biBsYXlvdXQgdGVzdHMgLSB1c2luZyBYSFRNTCBzY3JpcHRpbmc8L2gxPgorPHAgaWQ9ImRlc2Ny
aXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvYWNjZXNzLXRhcmdldC1wYXRoLWRlbnkuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93bWwvYWNjZXNzLXRhcmdldC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd21sL2FjY2Vzcy10YXJnZXQu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd21sL2FjY2Vzcy10
YXJnZXQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIEhUTUwg
UFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiPgorPHNjcmlwdD52YXIgcmVsYXRpdmVQYXRoVG9MYXlvdXRUZXN0cyA9ICIuLi8u
Li8uLiI7PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vd21sL3Jlc291cmNlcy9XTUxU
ZXN0Q2FzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aDE+V01M
IGh0dHAgbmF2aWdhdGlvbiBsYXlvdXQgdGVzdHMgLSB1c2luZyBYSFRNTCBzY3JpcHRpbmc8L2gx
PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvYWNjZXNzLXRhcmdldC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dtbC9yZXNvdXJjZXMvYWNj
ZXNzLXRhcmdldC1kb21haW4tZGVueS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dtbC9yZXNvdXJjZXMvYWNjZXNzLXRhcmdldC1kb21haW4tZGVueS5qcwkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd21sL3Jlc291cmNlcy9hY2Nlc3MtdGFy
Z2V0LWRvbWFpbi1kZW55LmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBACisvLyBbTmFt
ZV0gYWNjZXNzLXRhcmdldC1kb21haW4tZGVueS5qcworCitjcmVhdGVXTUxUZXN0Q2FzZSgiVGVz
dHMgYWNjZXNzIGNvbnRyb2wgc3VwcG9ydCIsIHRydWUsICJyZXNvdXJjZXMvYWNjZXNzLXRhcmdl
dC1kb21haW4tZGVueS53bWwiKTsKKworZnVuY3Rpb24gc2V0dXBUZXN0RG9jdW1lbnQoKSB7Cisg
ICAgdmFyIHJlc3VsdEluZGljYXRvckVsZW1lbnQgPSB0ZXN0RG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJlc3VsdEluZGljYXRvciIpOworICAgIGlmIChyZXN1bHRJbmRpY2F0b3JFbGVtZW50ICYm
IHJlc3VsdEluZGljYXRvckVsZW1lbnQudGV4dENvbnRlbnQgPT0gIkRPTkUiKQorICAgICAgICBj
b21wbGV0ZVRlc3QoKTsKK30KKworZnVuY3Rpb24gcHJlcGFyZVRlc3QoKSB7CisgICAgc3RhcnRU
ZXN0KDI1LCAxNSk7Cit9CisKK2Z1bmN0aW9uIGV4ZWN1dGVUZXN0KCkgeworICAgIC8vIG5vLW9w
Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93bWwvcmVzb3VyY2VzL2FjY2Vzcy10YXJnZXQtZG9tYWluLWRlbnkud21sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd21sL3Jlc291cmNlcy9hY2Nlc3Mt
dGFyZ2V0LWRvbWFpbi1kZW55LndtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvd21sL3Jlc291cmNlcy9hY2Nlc3MtdGFyZ2V0LWRvbWFpbi1kZW55LndtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwyMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8IURPQ1RZUEUg
d21sIFBVQkxJQyAiLS8vV0FQRk9SVU0vL0RURCBXTUwgMS4xLy9FTiIgImh0dHA6Ly93d3cud2Fw
Zm9ydW0ub3JnL0RURC93bWxfMS4xLnhtbCI+Cis8d21sPgorICAgIDxjYXJkIGlkPSJjYXJkMSI+
CisgICAgICAgIDxhbmNob3I+U3RhcnQgdGVzdDxnbyBocmVmPSJ1bnJlYWNoYWJsZS1kb21haW4u
d21sIi8+PC9hbmNob3I+CisgICAgICAgIDxwPlRlc3QgZm9yIERlY2sgQWNjZXNzIGNvbnRyb2wg
aW4gV01MLjwvcD4KKyAgICAgICAgPHA+SWYgdGhlIHRlc3QgcGFzc2VzLCB0aGlzIGRlY2sgd2ls
bCByZW1haW4gdmlzaWJsZTwvcD4KKworICAgICAgICA8IS0tIFByb2Nlc3NlZCBhcyBzb29uIGFz
IGxvY2tlZC1kZWNrLndtbCBnb2VzIGJhY2t3YXJkcyBhbmQgcmVudGVycyBvdXIgdGVzdCBjYXNl
IC0tPgorICAgICAgICA8b25ldmVudCB0eXBlPSJvbmVudGVyYmFja3dhcmQiPgorICAgICAgICAg
ICAgPGdvIGhyZWY9IiNjYXJkMiI+CisgICAgICAgICAgICAgICAgPHNldHZhciBuYW1lPSJyZXN1
bHQiIHZhbHVlPSJET05FIi8+CisgICAgICAgICAgICA8L2dvPgorICAgICAgICA8L29uZXZlbnQ+
CisgICAgPC9jYXJkPgorCisgICAgPGNhcmQgaWQ9ImNhcmQyIj4KKyAgICAgICAgPHA+VGVzdCBQ
QVNTRUQ8L3A+CisgICAgICAgIDxwIHN0eWxlPSJkaXNwbGF5OiBub25lIiBpZD0icmVzdWx0SW5k
aWNhdG9yIj4kcmVzdWx0PC9wPgorICAgIDwvY2FyZD4KKzwvd21sPgpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93bWwvcmVzb3VyY2VzL2FjY2Vzcy10YXJnZXQtcGF0aC1kZW55LmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd21sL3Jlc291cmNlcy9hY2Nlc3Mt
dGFyZ2V0LXBhdGgtZGVueS5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvd21sL3Jlc291cmNlcy9hY2Nlc3MtdGFyZ2V0LXBhdGgtZGVueS5qcwkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxOSBAQAorLy8gW05hbWVdIGFjY2Vzcy10YXJnZXQtcGF0aC1kZW55LmpzCisK
K2NyZWF0ZVdNTFRlc3RDYXNlKCJUZXN0cyBhY2Nlc3MgY29udHJvbCBzdXBwb3J0IiwgdHJ1ZSwg
InJlc291cmNlcy9hY2Nlc3MtdGFyZ2V0LXBhdGgtZGVueS53bWwiKTsKKworZnVuY3Rpb24gc2V0
dXBUZXN0RG9jdW1lbnQoKSB7CisgICAgdmFyIHJlc3VsdEluZGljYXRvckVsZW1lbnQgPSB0ZXN0
RG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdEluZGljYXRvciIpOworICAgIGlmIChyZXN1
bHRJbmRpY2F0b3JFbGVtZW50ICYmIHJlc3VsdEluZGljYXRvckVsZW1lbnQudGV4dENvbnRlbnQg
PT0gIkRPTkUiKQorICAgICAgICBjb21wbGV0ZVRlc3QoKTsKK30KKworZnVuY3Rpb24gcHJlcGFy
ZVRlc3QoKSB7CisgICAgc3RhcnRUZXN0KDI1LCAxNSk7Cit9CisKK2Z1bmN0aW9uIGV4ZWN1dGVU
ZXN0KCkgeworICAgIC8vIG5vLW9wCit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93bWwvcmVzb3VyY2VzL2FjY2Vzcy10YXJn
ZXQtcGF0aC1kZW55LndtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dt
bC9yZXNvdXJjZXMvYWNjZXNzLXRhcmdldC1wYXRoLWRlbnkud21sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93bWwvcmVzb3VyY2VzL2FjY2Vzcy10YXJnZXQtcGF0aC1k
ZW55LndtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMSBAQAorPD94bWwgdmVyc2lvbj0iMS4w
Ij8+Cis8IURPQ1RZUEUgd21sIFBVQkxJQyAiLS8vV0FQRk9SVU0vL0RURCBXTUwgMS4xLy9FTiIg
Imh0dHA6Ly93d3cud2FwZm9ydW0ub3JnL0RURC93bWxfMS4xLnhtbCI+Cis8d21sPgorICAgIDxj
YXJkIGlkPSJjYXJkMSI+CisgICAgICAgIDxhbmNob3I+U3RhcnQgdGVzdDxnbyBocmVmPSJ1bnJl
YWNoYWJsZS1wYXRoLndtbCIvPjwvYW5jaG9yPgorICAgICAgICA8cD5UZXN0IGZvciBEZWNrIEFj
Y2VzcyBjb250cm9sIGluIFdNTC48L3A+CisgICAgICAgIDxwPklmIHRoZSB0ZXN0IHBhc3Nlcywg
dGhpcyBkZWNrIHdpbGwgcmVtYWluIHZpc2libGU8L3A+CisKKyAgICAgICAgPCEtLSBQcm9jZXNz
ZWQgYXMgc29vbiBhcyBsb2NrZWQtZGVjay53bWwgZ29lcyBiYWNrd2FyZHMgYW5kIHJlbnRlcnMg
b3VyIHRlc3QgY2FzZSAtLT4KKyAgICAgICAgPG9uZXZlbnQgdHlwZT0ib25lbnRlcmJhY2t3YXJk
Ij4KKyAgICAgICAgICAgIDxnbyBocmVmPSIjY2FyZDIiPgorICAgICAgICAgICAgICAgIDxzZXR2
YXIgbmFtZT0icmVzdWx0IiB2YWx1ZT0iRE9ORSIvPgorICAgICAgICAgICAgPC9nbz4KKyAgICAg
ICAgPC9vbmV2ZW50PgorICAgIDwvY2FyZD4KKworICAgIDxjYXJkIGlkPSJjYXJkMiI+CisgICAg
ICAgIDxwPlRlc3QgUEFTU0VEPC9wPgorICAgICAgICA8cCBzdHlsZT0iZGlzcGxheTogbm9uZSIg
aWQ9InJlc3VsdEluZGljYXRvciI+JHJlc3VsdDwvcD4KKyAgICA8L2NhcmQ+Cis8L3dtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd21sL3Jlc291cmNlcy9hY2Nlc3MtdGFyZ2V0Lmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd21sL3Jlc291cmNlcy9hY2Nl
c3MtdGFyZ2V0LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93bWwv
cmVzb3VyY2VzL2FjY2Vzcy10YXJnZXQuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjQgQEAK
Ky8vIFtOYW1lXSBhY2Nlc3MtdGFyZ2V0LmpzCisKK2NyZWF0ZVdNTFRlc3RDYXNlKCJUZXN0cyBh
Y2Nlc3MgY29udHJvbCBzdXBwb3J0IiwgZmFsc2UsICJyZXNvdXJjZXMvYWNjZXNzLXRhcmdldC53
bWwiKTsKKwordmFyIHJhbk9uY2UgPSBmYWxzZTsKKworZnVuY3Rpb24gc2V0dXBUZXN0RG9jdW1l
bnQoKSB7CisgICAgLy8gbm8tb3AKK30KKworZnVuY3Rpb24gcHJlcGFyZVRlc3QoKSB7CisgICAg
c3RhcnRUZXN0KDI1LCAxNSk7Cit9CisKK2Z1bmN0aW9uIGV4ZWN1dGVUZXN0KCkgeworICAgIGlm
ICghcmFuT25jZSkgeworICAgICAgICByYW5PbmNlID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGNvbXBsZXRlVGVzdCgpOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd21sL3Jlc291cmNlcy9hY2Nl
c3MtdGFyZ2V0LndtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dtbC9y
ZXNvdXJjZXMvYWNjZXNzLXRhcmdldC53bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dtbC9yZXNvdXJjZXMvYWNjZXNzLXRhcmdldC53bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPCFET0NUWVBFIHdtbCBQVUJM
SUMgIi0vL1dBUEZPUlVNLy9EVEQgV01MIDEuMS8vRU4iICJodHRwOi8vd3d3LndhcGZvcnVtLm9y
Zy9EVEQvd21sXzEuMS54bWwiPgorPHdtbD4KKyAgICA8Y2FyZCBvbnRpbWVyPSJsb2NrZWQtZGVj
ay53bWwiIG9uZW50ZXJiYWNrd2FyZD0iI2NhcmQyIj4KKyAgICAgICAgPHRpbWVyIG5hbWU9InRp
bWVyIiB2YWx1ZT0iMSIvPgorICAgICAgICA8cD5UZXN0IGZvciBEZWNrIEFjY2VzcyBjb250cm9s
IGluIFdNTC48L3A+CisgICAgICAgIDxwPklmIHRoZSB0ZXN0IHBhc3NlcywgdGhpcyBkZWNrIHdp
bGwgaW1tZWRpYXRlbHkganVtcCB0byAibG9ja2VkLWRlY2sud21sIjwvcD4KKyAgICA8L2NhcmQ+
CisKKyAgICA8Y2FyZCBpZD0iY2FyZDIiPjxwPlRlc3QgRkFJTEVEPC9wPjwvY2FyZD4KKzwvd21s
PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93bWwvcmVzb3VyY2VzL2xvY2tlZC1kZWNr
LndtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dtbC9yZXNvdXJjZXMv
bG9ja2VkLWRlY2sud21sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
bWwvcmVzb3VyY2VzL2xvY2tlZC1kZWNrLndtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMiBA
QAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8IURPQ1RZUEUgd21sIFBVQkxJQyAiLS8vV0FQRk9S
VU0vL0RURCBXTUwgMS4xLy9FTiIgImh0dHA6Ly93d3cud2FwZm9ydW0ub3JnL0RURC93bWxfMS4x
LnhtbCI+Cis8d21sPgorICAgIDxoZWFkPgorICAgICAgICA8YWNjZXNzIGRvbWFpbj0iMTI3LjAu
MC4xIiBwYXRoPSJhY2Nlc3MtdGFyZ2V0LndtbCIvPgorICAgIDwvaGVhZD4KKworICAgIDxjYXJk
PgorICAgICAgICA8cD5UZXN0IGZvciBEZWNrIEFjY2VzcyBjb250cm9sIGluIFdNTC48L3A+Cisg
ICAgICAgIDxwPlRoaXMgaXMgdGhlIGxvY2tlZCB0YXJnZXQgZGVjaywgb25seSAnYWNjZXNzLXRh
cmdldC53bWwiIGNhbiBhY2Nlc3MgbWU8L3A+CisgICAgPC9jYXJkPgorPC93bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dtbC9yZXNvdXJjZXMvdW5yZWFjaGFibGUtZG9tYWluLndt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dtbC9yZXNvdXJjZXMvdW5y
ZWFjaGFibGUtZG9tYWluLndtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvd21sL3Jlc291cmNlcy91bnJlYWNoYWJsZS1kb21haW4ud21sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDEyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKzwhRE9DVFlQRSB3bWwgUFVCTElD
ICItLy9XQVBGT1JVTS8vRFREIFdNTCAxLjEvL0VOIiAiaHR0cDovL3d3dy53YXBmb3J1bS5vcmcv
RFREL3dtbF8xLjEueG1sIj4KKzx3bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxhY2Nlc3MgZG9t
YWluPSJub3RleGlzdGFudC5jb20iIHBhdGg9Ii93bWwvcmVzb3VyY2VzL2FjY2Vzcy10YXJnZXQt
ZGVueS53bWwiLz4KKyAgICA8L2hlYWQ+CisKKyAgICA8Y2FyZD4KKyAgICAgICAgPHA+VGVzdCBm
b3IgRGVjayBBY2Nlc3MgY29udHJvbCBpbiBXTUwuPC9wPgorICAgICAgICA8cD5Pbmx5IHd3dy5u
b3RleGlzdGFudC5jb20gd291bGQgYmUgYWxsb3dlZCB0byBhY2Nlc3MgdGhpcyBkZWNrLiBJdCdz
IHVucmVhY2hhYmxlIGZyb20gdGhlIExheW91dFRlc3RzPC9wPgorICAgIDwvY2FyZD4KKzwvd21s
PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93bWwvcmVzb3VyY2VzL3VucmVhY2hhYmxl
LXBhdGgud21sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd21sL3Jlc291
cmNlcy91bnJlYWNoYWJsZS1wYXRoLndtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvd21sL3Jlc291cmNlcy91bnJlYWNoYWJsZS1wYXRoLndtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8IURPQ1RZUEUgd21sIFBV
QkxJQyAiLS8vV0FQRk9SVU0vL0RURCBXTUwgMS4xLy9FTiIgImh0dHA6Ly93d3cud2FwZm9ydW0u
b3JnL0RURC93bWxfMS4xLnhtbCI+Cis8d21sPgorICAgIDxoZWFkPgorICAgICAgICA8YWNjZXNz
IGRvbWFpbj0ibG9jYWxob3N0IiBwYXRoPSIvZmFpbHMvcmVzb3VyY2VzL2FjY2Vzcy10YXJnZXQt
ZGVueS53bWwiLz4KKyAgICA8L2hlYWQ+CisKKyAgICA8Y2FyZD4KKyAgICAgICAgPHA+VGVzdCBm
b3IgRGVjayBBY2Nlc3MgY29udHJvbCBpbiBXTUwuPC9wPgorICAgICAgICA8cD5Pbmx5IC9mYWls
cy9yZXNvdXJjZXMvYWNjZXNzLXRhcmdldC1kZW55LndtbCB3b3VsZCBiZSBhbGxvd2VkIHRvIGFj
Y2VzcyB0aGlzIGRlY2suPC9wPgorICAgIDwvY2FyZD4KKzwvd21sPgpJbmRleDogTGF5b3V0VGVz
dHMvd21sL2FjY2Vzcy10YXJnZXQtZGVueS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvd21sL2FjY2Vzcy10YXJnZXQtZGVueS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy93bWwvYWNjZXNzLXRhcmdldC1kZW55LWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNyBAQAorV01MIGxheW91dCB0ZXN0cyAtIHVzaW5nIFhIVE1M
IHNjcmlwdGluZworCisKK1Rlc3RzIGFjY2VzcyBjb250cm9sIHN1cHBvcnQKKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0t
ZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK1Rlc3QgUEFTU0VECkluZGV4OiBMYXlvdXRUZXN0cy93
bWwvYWNjZXNzLXRhcmdldC1kZW55Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvd21s
L2FjY2Vzcy10YXJnZXQtZGVueS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvd21s
L2FjY2Vzcy10YXJnZXQtZGVueS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0PnZhciByZWxhdGl2ZVBhdGhUb0xheW91dFRlc3Rz
ID0gIi4uIjs8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvV01MVGVzdENhc2UuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGgxPldNTCBsYXlvdXQgdGVzdHMgLSB1
c2luZyBYSFRNTCBzY3JpcHRpbmc8L2gxPgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYWNjZXNzLXRhcmdl
dC1kZW55LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L3dtbC9hY2Nlc3MtdGFyZ2V0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy93bWwvYWNjZXNzLXRhcmdldC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy93bWwvYWNjZXNzLXRhcmdldC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTggQEAKK1dNTCBsYXlvdXQgdGVzdHMgLSB1c2luZyBYSFRNTCBzY3JpcHRpbmcKKworCitU
ZXN0cyBhY2Nlc3MgY29udHJvbCBzdXBwb3J0CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwor
CistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0t
LS0tLS0tCitUZXN0IGZvciBEZWNrIEFjY2VzcyBjb250cm9sIGluIFdNTC4KK1RoaXMgaXMgdGhl
IGxvY2tlZCB0YXJnZXQgZGVjaywgb25seSAnYWNjZXNzLXRhcmdldC53bWwiIGNhbiBhY2Nlc3Mg
bWUKSW5kZXg6IExheW91dFRlc3RzL3dtbC9hY2Nlc3MtdGFyZ2V0Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvd21sL2FjY2Vzcy10YXJnZXQuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL3dtbC9hY2Nlc3MtdGFyZ2V0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxo
dG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQ+dmFyIHJlbGF0aXZlUGF0aFRvTGF5
b3V0VGVzdHMgPSAiLi4iOzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9XTUxUZXN0
Q2FzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aDE+V01MIGxheW91dCB0
ZXN0cyAtIHVzaW5nIFhIVE1MIHNjcmlwdGluZzwvaDE+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9hY2Nl
c3MtdGFyZ2V0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL3dtbC9yZXNvdXJjZXMvV01MVGVzdENhc2UuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvd21sL3Jlc291cmNlcy9XTUxUZXN0Q2FzZS5qcwkocmV2aXNpb24gNDY2ODApCisrKyBMYXlv
dXRUZXN0cy93bWwvcmVzb3VyY2VzL1dNTFRlc3RDYXNlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC01
OSw3ICs1OSw4IEBAIGZ1bmN0aW9uIGNyZWF0ZVdNTFRlc3RDYXNlKHRlc3REZXNjcmlwdGkKIAog
ICAgICAgICAvLyBJbiBhIHJlZ3VsYXIgV01MIGRvY3VtZW50LCB0aGlzIHdvdWxkIGhhcHBlbiBh
ZnRlciB0aGUgcGFyc2luZyBmaW5pc2hlZC4KICAgICAgICAgLy8gVGhvdWdoIGFzIHdlIGR5bmFt
aWNhbGx5IGNyZWF0ZSB0ZXN0Y2FzZXMsIHdlIGhhdmUgdG8gdGFrZSBjYXJlIG9mIGluaXRpYWxp
emluZyBXTUwgdmFyaWFibGUgc3RhdGUgbWFudWFsbHkuCi0gICAgICAgIHRlc3REb2N1bWVudC5p
bml0aWFsaXplV01MUGFnZVN0YXRlKCk7CisgICAgICAgIGlmIChzdWJzdGl0dXRlc1ZhcmlhYmxl
cykKKyAgICAgICAgICAgIHRlc3REb2N1bWVudC5pbml0aWFsaXplV01MUGFnZVN0YXRlKCk7CiAK
ICAgICAgICAgLy8gSGFuZGxlIHRoZSBjYXNlIG9mIGEgc3BlY2lhbCBXTUwgdGVzdCBkb2N1bWVu
dC4gVGhhdCdzIGFsd2F5cyB0aGUgY2FzZSBmb3Igc3RhdGljIFdNTCB0ZXN0Y2FzZXMKICAgICAg
ICAgLy8gKHdoaWNoIGFyZSBOT1QgY3JlYXRlZCBtYW51YWxseSB1c2luZyBKUyBpbiBwcmVwYXJl
VGVzdCkuIEZpcmUgb2ZmIHRlc3QgaW1tZWRpYXRlbHkgZm9yIHRob3NlLgpJbmRleDogTGF5b3V0
VGVzdHMvd21sL3Jlc291cmNlcy9hY2Nlc3MtdGFyZ2V0LWRlbnkuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvd21sL3Jlc291cmNlcy9hY2Nlc3MtdGFyZ2V0LWRlbnkuanMJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy93bWwvcmVzb3VyY2VzL2FjY2Vzcy10YXJnZXQtZGVueS5qcwko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOSBAQAorLy8gW05hbWVdIGFjY2Vzcy10YXJnZXQtZGVu
eS5qcworCitjcmVhdGVXTUxUZXN0Q2FzZSgiVGVzdHMgYWNjZXNzIGNvbnRyb2wgc3VwcG9ydCIs
IGZhbHNlLCAicmVzb3VyY2VzL2FjY2Vzcy10YXJnZXQtZGVueS53bWwiKTsKKworZnVuY3Rpb24g
c2V0dXBUZXN0RG9jdW1lbnQoKSB7CisgICAgdmFyIHJlc3VsdEluZGljYXRvckVsZW1lbnQgPSB0
ZXN0RG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdEluZGljYXRvciIpOworICAgIGlmIChy
ZXN1bHRJbmRpY2F0b3JFbGVtZW50LnRleHRDb250ZW50ID09ICJET05FIikKKyAgICAgICAgY29t
cGxldGVUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHByZXBhcmVUZXN0KCkgeworICAgIHN0YXJ0VGVz
dCgyNSwgMTUpOworfQorCitmdW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKKyAgICAvLyBuby1vcAor
fQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL3dt
bC9yZXNvdXJjZXMvYWNjZXNzLXRhcmdldC1kZW55LndtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy93bWwvcmVzb3VyY2VzL2FjY2Vzcy10YXJnZXQtZGVueS53bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy93bWwvcmVzb3VyY2VzL2FjY2Vzcy10YXJnZXQtZGVueS53bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMjEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPCFET0NUWVBF
IHdtbCBQVUJMSUMgIi0vL1dBUEZPUlVNLy9EVEQgV01MIDEuMS8vRU4iICJodHRwOi8vd3d3Lndh
cGZvcnVtLm9yZy9EVEQvd21sXzEuMS54bWwiPgorPHdtbD4KKyAgICA8Y2FyZCBpZD0iY2FyZDEi
PgorICAgICAgICA8YW5jaG9yPlN0YXJ0IHRlc3Q8Z28gaHJlZj0ibG9ja2VkLWRlY2sud21sIi8+
PC9hbmNob3I+CisgICAgICAgIDxwPlRlc3QgZm9yIERlY2sgQWNjZXNzIGNvbnRyb2wgaW4gV01M
LjwvcD4KKyAgICAgICAgPHA+SWYgdGhlIHRlc3QgcGFzc2VzLCB0aGlzIGRlY2sgd2lsbCByZW1h
aW4gdmlzaWJsZTwvcD4KKworICAgICAgICA8IS0tIFByb2Nlc3NlZCBhcyBzb29uIGFzIGxvY2tl
ZC1kZWNrLndtbCBnb2VzIGJhY2t3YXJkcyBhbmQgcmVudGVycyBvdXIgdGVzdCBjYXNlIC0tPgor
ICAgICAgICA8b25ldmVudCB0eXBlPSJvbmVudGVyYmFja3dhcmQiPgorICAgICAgICAgICAgPGdv
IGhyZWY9IiNjYXJkMiI+CisgICAgICAgICAgICAgICAgPHNldHZhciBuYW1lPSJyZXN1bHQiIHZh
bHVlPSJET05FIi8+CisgICAgICAgICAgICA8L2dvPgorICAgICAgICA8L29uZXZlbnQ+CisgICAg
PC9jYXJkPgorCisgICAgPGNhcmQgaWQ9ImNhcmQyIj4KKyAgICAgICAgPHA+VGVzdCBQQVNTRUQ8
L3A+CisgICAgICAgIDxwIHN0eWxlPSJkaXNwbGF5OiBub25lIiBpZD0icmVzdWx0SW5kaWNhdG9y
Ij4kcmVzdWx0PC9wPgorICAgIDwvY2FyZD4KKzwvd21sPgpJbmRleDogTGF5b3V0VGVzdHMvd21s
L3Jlc291cmNlcy9hY2Nlc3MtdGFyZ2V0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3dt
bC9yZXNvdXJjZXMvYWNjZXNzLXRhcmdldC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L3dtbC9yZXNvdXJjZXMvYWNjZXNzLXRhcmdldC5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
NCBAQAorLy8gW05hbWVdIGFjY2Vzcy10YXJnZXQuanMKKworY3JlYXRlV01MVGVzdENhc2UoIlRl
c3RzIGFjY2VzcyBjb250cm9sIHN1cHBvcnQiLCBmYWxzZSwgInJlc291cmNlcy9hY2Nlc3MtdGFy
Z2V0LndtbCIpOworCit2YXIgcmFuT25jZSA9IGZhbHNlOworCitmdW5jdGlvbiBzZXR1cFRlc3RE
b2N1bWVudCgpIHsKKyAgICAvLyBuby1vcAorfQorCitmdW5jdGlvbiBwcmVwYXJlVGVzdCgpIHsK
KyAgICBzdGFydFRlc3QoMjUsIDE1KTsKK30KKworZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7Cisg
ICAgaWYgKCFyYW5PbmNlKSB7CisgICAgICAgIHJhbk9uY2UgPSB0cnVlOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgY29tcGxldGVUZXN0KCk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvd21sL3Jlc291cmNlcy9hY2Nlc3MtdGFy
Z2V0LndtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93bWwvcmVzb3VyY2VzL2FjY2Vzcy10
YXJnZXQud21sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvd21sL3Jlc291cmNlcy9hY2Nl
c3MtdGFyZ2V0LndtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorPD94bWwgdmVyc2lv
bj0iMS4wIj8+Cis8IURPQ1RZUEUgd21sIFBVQkxJQyAiLS8vV0FQRk9SVU0vL0RURCBXTUwgMS4x
Ly9FTiIgImh0dHA6Ly93d3cud2FwZm9ydW0ub3JnL0RURC93bWxfMS4xLnhtbCI+Cis8d21sPgor
ICAgIDxjYXJkIG9udGltZXI9ImxvY2tlZC1kZWNrLndtbCIgb25lbnRlcmJhY2t3YXJkPSIjY2Fy
ZDIiPgorICAgICAgICA8dGltZXIgbmFtZT0idGltZXIiIHZhbHVlPSIxIi8+CisgICAgICAgIDxw
PlRlc3QgZm9yIERlY2sgQWNjZXNzIGNvbnRyb2wgaW4gV01MLjwvcD4KKyAgICAgICAgPHA+SWYg
dGhlIHRlc3QgcGFzc2VzLCB0aGlzIGRlY2sgd2lsbCBpbW1lZGlhdGVseSBqdW1wIHRvICJsb2Nr
ZWQtZGVjay53bWwiPC9wPgorICAgIDwvY2FyZD4KKworICAgIDxjYXJkIGlkPSJjYXJkMiI+PHA+
VGVzdCBGQUlMRUQ8L3A+PC9jYXJkPgorPC93bWw+CkluZGV4OiBMYXlvdXRUZXN0cy93bWwvcmVz
b3VyY2VzL2xvY2tlZC1kZWNrLndtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93bWwvcmVz
b3VyY2VzL2xvY2tlZC1kZWNrLndtbAkocmV2aXNpb24gNDY1MzkpCShmcm9tIFdlYkNvcmUvbWFu
dWFsLXRlc3RzL3dtbC90YXJnZXRkZWNrLndtbDo0NjUzOSkKKysrIExheW91dFRlc3RzL3dtbC9y
ZXNvdXJjZXMvbG9ja2VkLWRlY2sud21sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAK
Kzw/eG1sIHZlcnNpb249IjEuMCI/PgorPCFET0NUWVBFIHdtbCBQVUJMSUMgIi0vL1dBUEZPUlVN
Ly9EVEQgV01MIDEuMS8vRU4iICJodHRwOi8vd3d3LndhcGZvcnVtLm9yZy9EVEQvd21sXzEuMS54
bWwiPgorPHdtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPGFjY2VzcyBkb21haW49ImxvY2FsaG9z
dCIgcGF0aD0iYWNjZXNzLXRhcmdldC53bWwiLz4KKyAgICA8L2hlYWQ+CisKKyAgICA8Y2FyZD4K
KyAgICAgICAgPHA+VGVzdCBmb3IgRGVjayBBY2Nlc3MgY29udHJvbCBpbiBXTUwuPC9wPgorICAg
ICAgICA8cD5UaGlzIGlzIHRoZSB0YXJnZXRkZWNrLCBvbmx5ICcuL2FjY2Vzcy10YXJnZXQud21s
IiBjYW4gYWNjZXNzIG1lPC9wPgorICAgICAgICA8YSBocmVmPSJTdGFydFRlc3RzLndtbCI+TmV4
dCBwYWdlPC9hPgorICAgIDwvY2FyZD4KKzwvd21sPgpJbmRleDogTGF5b3V0VGVzdHMvd21sL3Jl
c291cmNlcy9sb2NrZWQtZGVjay53bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvd21sL3Jl
c291cmNlcy9sb2NrZWQtZGVjay53bWwJKHJldmlzaW9uIDQ2NTM5KQorKysgTGF5b3V0VGVzdHMv
d21sL3Jlc291cmNlcy9sb2NrZWQtZGVjay53bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsNyArNyw2
IEBACiAKICAgICA8Y2FyZD4KICAgICAgICAgPHA+VGVzdCBmb3IgRGVjayBBY2Nlc3MgY29udHJv
bCBpbiBXTUwuPC9wPgotICAgICAgICA8cD5UaGlzIGlzIHRoZSB0YXJnZXRkZWNrLCBvbmx5ICcu
L2FjY2Vzcy10YXJnZXQud21sIiBjYW4gYWNjZXNzIG1lPC9wPgotICAgICAgICA8YSBocmVmPSJT
dGFydFRlc3RzLndtbCI+TmV4dCBwYWdlPC9hPgorICAgICAgICA8cD5UaGlzIGlzIHRoZSBsb2Nr
ZWQgdGFyZ2V0IGRlY2ssIG9ubHkgJ2FjY2Vzcy10YXJnZXQud21sIiBjYW4gYWNjZXNzIG1lPC9w
PgogICAgIDwvY2FyZD4KIDwvd21sPg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34433</attachid>
            <date>2009-08-09 15:36:26 -0700</date>
            <delta_ts>2009-08-09 15:53:59 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>bug-27721-20090810003621.patch</filename>
            <type>text/plain</type>
            <size>50164</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0Njk2NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjUgQEAKKzIwMDktMDgtMDkgIE5pa29sYXMgWmltbWVybWFubiAgPG5pa29sYXMu
emltbWVybWFubkB0b3JjaG1vYmlsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgW1dNTF0gRGVjayBhY2Nlc3MgY29udHJvbCBpcyBjb21wbGV0
bHkgYnJva2VuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNzcyMQorCisgICAgICAgIFJld3JpdGUgV01MIGRlY2sgYWNjZXNzIGNvbnRyb2wsIGFjdHVh
bGx5IHdvcmtzIG5vdyBzdGFuZGFsb25lIGFuZCB3aXRoaW4gTGF5b3V0VGVzdHMuCisgICAgICAg
IEFkZGVkIHNldmVyYWwgbmV3IGxheW91dCB0ZXN0cyBjb3ZlcmluZyBsb2NhbCAmIHJlbW90ZSBh
Y2Nlc3Mgc3VwcG9ydC4KKworICAgICAgICBJbiBvcmRlciB0byBkZXRlY3QgV01MIHRhc2sgZXhl
Y3V0aW9uIGZhaWx1cmVzIGZyb20gd2l0aGluIHRoZSBXTUwgbGF5b3V0IHRlc3RzIGEgbmV3Cisg
ICAgICAgIG1ldGhvZCBDb25zb2xlOjpsYXN0V01MRXJyb3JNZXNzYWdlKCkgaGFzIGJlZW4gYWRk
ZWQsIHJldHVybmluZyB0aGUgbGFzdCByZWNvcmRlZCBXTUwKKyAgICAgICAgZXJyb3IgbWVzc2Fn
ZS4gQ2hhbmdlIFdNTCBsb2cgbWVzc2FnZXMgdG8gZHVtcCB0byBJbnNwZWN0b3JDbGllbnQsIGp1
c3QgbGlrZSBpdCdzIGRvbmUKKyAgICAgICAgZm9yIEhUTUwgLSB3ZSB1c2VkIHRvIGJlaGF2ZSBs
aWtlIEpTTWVzc2FnZVNvdXJjZSwgd2hpY2ggaXMgd3JvbmcuCisKKyAgICAgICAgVGVzdHM6IGh0
dHAvdGVzdHMvd21sL2FjY2Vzcy10YXJnZXQtZG9tYWluLWRlbnkuaHRtbAorICAgICAgICAgICAg
ICAgaHR0cC90ZXN0cy93bWwvYWNjZXNzLXRhcmdldC1wYXRoLWRlbnkuaHRtbAorICAgICAgICAg
ICAgICAgaHR0cC90ZXN0cy93bWwvYWNjZXNzLXRhcmdldC5odG1sCisgICAgICAgICAgICAgICB3
bWwvYWNjZXNzLXRhcmdldC1kZW55Lmh0bWwKKyAgICAgICAgICAgICAgIHdtbC9hY2Nlc3MtdGFy
Z2V0Lmh0bWwKKworICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q29uc29sZU1lc3NhZ2U6OnNvdXJjZSk6IEFkZGVkIHB1YmxpYyBtZXRob2Qg
dG8gZmV0Y2ggdGhlIG1lc3NhZ2Ugc291cmNlIHR5cGUuCisgICAgICAgIChXZWJDb3JlOjpDb25z
b2xlTWVzc2FnZTo6bWVzc2FnZSk6IEFkZGVkIHB1YmxpYyBtZXRob2QgdG8gYWNjZXNzIHRoZSBl
cnJvciBtZXNzYWdlLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpjb25zb2xlTWVzc2FnZXMp
OiBBZGRlZCBmb3IgQ29uc29sZTo6bGFzdFdNTEVycm9yTWVzc2FnZSgpLCB0byBiZSBhYmxlIHRv
IGNyYXdsIHRocm91Z2ggdGhlIGxpc3Qgb2YgZHVtcGVkIG1lc3NhZ2VzLgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlci5jcHA6IFJlY29nbml6ZSAnRnJhbWVMb2FkVHlwZUJhY2tXTUxEZWNr
Tm90QWNjZXNzaWJsZScsIGFsbCBndWFyZGVkIGJ5IEVOQUJMRShXTUwpLgorICAgICAgICAoV2Vi
Q29yZTo6aXNCYWNrRm9yd2FyZExvYWRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpyZXN0b3JlRG9jdW1lbnRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6dHJhbnNpdGlvblRvQ29tbWl0dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Ojpsb2FkSXRlbSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Oik6IEFkZCBuZXcgbG9hZCB0eXBlICdGcmFtZUxvYWRUeXBlQmFja1dNTERl
Y2tOb3RBY2Nlc3NpYmxlJywgYmVoYXZpbmcgbGlrZSBGcmFtZUxvYWRUeXBlQmFjayBwbHVzIFdN
TCBzcGVjaWZpYyBpbmZvcm1hdGlvbi4KKyAgICAgICAgKiBwYWdlL0NvbnNvbGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29uc29sZTo6YWRkTWVzc2FnZSk6IERvbid0IGR1bXAgV01MIG1lc3Nh
Z2VzIHVzaW5nIENocm9tZUNsaWVudCAoYXMgaXQncyBkb25lIGZvciBKU01lc3NhZ2VTb3VyY2Up
LCBidXQgZ28gdGhyb3VnaCBJbnNwZWN0b3JDb250cm9sbGVyLgorICAgICAgICAoV2ViQ29yZTo6
Q29uc29sZTo6bGFzdFdNTEVycm9yTWVzc2FnZSk6IENyYXdsIEluc3BlY3RvckNvbnRyb2xsZXI6
OmNvbnNvbGVNc3NhZ2VzKCkgdG8gbG9vayB1cCB0aGUgbGFzdCBXTUwgZXJyb3IgbWVzc2FnZSwg
aWYgcHJlc2VudC4KKyAgICAgICAgKiBwYWdlL0NvbnNvbGUuaDoKKyAgICAgICAgKiBwYWdlL0Nv
bnNvbGUuaWRsOiBBZGQgIltEb250RW51bV0gRE9NU3RyaW5nIGxhc3RXTUxFcnJvck1lc3NhZ2Uo
KSIuCisgICAgICAgICogd21sL1dNTEFjY2Vzc0VsZW1lbnQuY3BwOiBTdG9yZSBwYXRoL2RvbWFp
biBhcyBtZW1iZXIgdmFyaWFibGVzIGFuZCBwYXNzIHRoZW0gdG8gV01MUGFnZVN0YXRlIG9uY2Ug
aW4gaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKS4KKyAgICAgICAgKFdlYkNvcmU6OldNTEFjY2Vzc0Vs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldNTEFjY2Vz
c0VsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KToKKyAgICAgICAgKiB3bWwvV01MQWNjZXNz
RWxlbWVudC5oOgorICAgICAgICAqIHdtbC9XTUxDYXJkRWxlbWVudC5jcHA6IEhhbmRsZSAnRnJh
bWVMb2FkVHlwZUJhY2tXTUxEZWNrTm90QWNjZXNzaWJsZScgYXMgZGVjay1lbnRyeSBtZXRob2Qu
IFJlcG9ydCBXTUwgZXJyb3IgaW4gY3VycmVudCBkZWNrLgorICAgICAgICAoV2ViQ29yZTo6V01M
Q2FyZEVsZW1lbnQ6OmhhbmRsZUludHJpbnNpY0V2ZW50SWZOZWVkZWQpOgorICAgICAgICAqIHdt
bC9XTUxEb2N1bWVudC5jcHA6IEVuYWJsZSBkZWNrLWFjY2VzcyBjb250cm9sIGluIGZpbmlzaGVk
UGFyc2luZy4gVGFrZSBjYXJlIG9mIG1ldGhvZCBuYW1lIGNoYW5nZXMgaW4gV01MUGFnZVN0YXRl
LgorICAgICAgICAoV2ViQ29yZTo6V01MRG9jdW1lbnQ6OmZpbmlzaGVkUGFyc2luZyk6CisgICAg
ICAgIChXZWJDb3JlOjpXTUxEb2N1bWVudDo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogd21sL1dN
TEVycm9ySGFuZGxpbmcuY3BwOiBOZXZlciByZXBvcnQgJ1dNTEVycm9yRGVja05vdEFjY2Vzc2li
bGUnIG1lc3NhZ2VzIHRocm91Z2ggdGhlIHRva2VuaXplciwgdGhhdCB3b3VsZCBhbHRlciB0aGUg
cGFnZSBpbnRvIGVycm9yIHN0YXRlLgorICAgICAgICAoV2ViQ29yZTo6cmVwb3J0V01MRXJyb3Ip
OgorICAgICAgICAqIHdtbC9XTUxQYWdlU3RhdGUuY3BwOiBDb21wbGV0bHkgcmV3cm90ZSBhY2Nl
c3MgcGF0aC9kb21haW4gcGFyc2luZyAmIGRlY2stYWNjZXNzIGNvbnRyb2wsIHN0cmljdGx5IGZv
bGxvd2luZyB0aGUgV01MIHNwZWMuIEFsbCBjb3ZlcmVkIGJ5IHRlc3RzLgorICAgICAgICAoV2Vi
Q29yZTo6V01MUGFnZVN0YXRlOjpXTUxQYWdlU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6bm9y
bWFsaXplZEhvc3ROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Omhvc3RGcm9tVVJMKToKKyAgICAg
ICAgKFdlYkNvcmU6OnVybEZvckhpc3RvcnlJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OnRyeUFj
Y2Vzc0hpc3RvcnlVUkxzKToKKyAgICAgICAgKFdlYkNvcmU6OldNTFBhZ2VTdGF0ZTo6cHJvY2Vz
c0FjY2Vzc0NvbnRyb2xEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldNTFBhZ2VTdGF0ZTo6cmVz
ZXRBY2Nlc3NDb250cm9sRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXTUxQYWdlU3RhdGU6OmNh
bkFjY2Vzc0RlY2spOgorICAgICAgICAoV2ViQ29yZTo6V01MUGFnZVN0YXRlOjpob3N0SXNBbGxv
d2VkVG9BY2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6V01MUGFnZVN0YXRlOjpwYXRoSXNBbGxv
d2VkVG9BY2Nlc3MpOgorICAgICAgICAqIHdtbC9XTUxQYWdlU3RhdGUuaDoKKwogMjAwOS0wOC0w
OSAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bmlrb2xhcy56aW1tZXJtYW5uQHRvcmNobW9iaWxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWogU3RhY2hvd2lhay4KSW5kZXg6IFdlYkNv
cmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNw
ZWN0b3IvQ29uc29sZU1lc3NhZ2UuaAkocmV2aXNpb24gNDY5NjQpCisrKyBXZWJDb3JlL2luc3Bl
Y3Rvci9Db25zb2xlTWVzc2FnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBpbmNyZW1lbnRDb3VudCgpIHsgKyttX3Jl
cGVhdENvdW50OyB9OwogICAgICAgICBib29sIGlzRXF1YWwoU2NyaXB0U3RhdGUqLCBDb25zb2xl
TWVzc2FnZSogbXNnKSBjb25zdDsKIAorICAgICAgICBNZXNzYWdlU291cmNlIHNvdXJjZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc291cmNlOyB9CisgICAgICAgIFN0cmluZyBtZXNzYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9tZXNzYWdlOyB9CisKICAgICBwcml2YXRlOgogICAgICAgICBNZXNzYWdlU291
cmNlIG1fc291cmNlOwogICAgICAgICBNZXNzYWdlVHlwZSBtX3R5cGU7CkluZGV4OiBXZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCShyZXZpc2lvbiA0Njk2NCkKKysrIFdlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTgz
LDYgKzE4Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2Fn
ZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgU2NyaXB0Q2FsbFN0YWNrKik7CiAg
ICAgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBN
ZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VJRCk7CiAgICAgdm9pZCBjbGVhckNvbnNvbGVNZXNzYWdlcygp
OworICAgIGNvbnN0IFZlY3RvcjxDb25zb2xlTWVzc2FnZSo+JiBjb25zb2xlTWVzc2FnZXMoKSBj
b25zdCB7IHJldHVybiBtX2NvbnNvbGVNZXNzYWdlczsgfQogCiAgICAgdm9pZCBhdHRhY2hXaW5k
b3coKTsKICAgICB2b2lkIGRldGFjaFdpbmRvdygpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAkocmV2aXNpb24gNDY5NjQpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxMCw2ICsyMTAsOSBAQCBib29sIGlzQmFja0ZvcndhcmRMb2FkVHlw
ZShGcmFtZUxvYWRUeXBlCiAgICAgICAgIGNhc2UgRnJhbWVMb2FkVHlwZVJlcGxhY2U6CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGNhc2UgRnJhbWVMb2FkVHlwZUJhY2s6Cisj
aWYgRU5BQkxFKFdNTCkKKyAgICAgICAgY2FzZSBGcmFtZUxvYWRUeXBlQmFja1dNTERlY2tOb3RB
Y2Nlc3NpYmxlOgorI2VuZGlmCiAgICAgICAgIGNhc2UgRnJhbWVMb2FkVHlwZUZvcndhcmQ6CiAg
ICAgICAgIGNhc2UgRnJhbWVMb2FkVHlwZUluZGV4ZWRCYWNrRm9yd2FyZDoKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwpAQCAtMTE2MSw2ICsxMTY0LDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVz
dG9yZURvY3VtZW50U3RhdGUoKQogICAgICAgICBjYXNlIEZyYW1lTG9hZFR5cGVSZXBsYWNlOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRnJhbWVMb2FkVHlwZUJhY2s6CisjaWYg
RU5BQkxFKFdNTCkKKyAgICAgICAgY2FzZSBGcmFtZUxvYWRUeXBlQmFja1dNTERlY2tOb3RBY2Nl
c3NpYmxlOgorI2VuZGlmCiAgICAgICAgIGNhc2UgRnJhbWVMb2FkVHlwZUZvcndhcmQ6CiAgICAg
ICAgIGNhc2UgRnJhbWVMb2FkVHlwZUluZGV4ZWRCYWNrRm9yd2FyZDoKICAgICAgICAgY2FzZSBG
cmFtZUxvYWRUeXBlUmVkaXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0OgpAQCAtMjkwNiw2
ICsyOTEyLDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6dHJhbnNpdGlvblRvQ29tbWl0dGVkKAogICAg
IHN3aXRjaCAobV9sb2FkVHlwZSkgewogICAgICAgICBjYXNlIEZyYW1lTG9hZFR5cGVGb3J3YXJk
OgogICAgICAgICBjYXNlIEZyYW1lTG9hZFR5cGVCYWNrOgorI2lmIEVOQUJMRShXTUwpCisgICAg
ICAgIGNhc2UgRnJhbWVMb2FkVHlwZUJhY2tXTUxEZWNrTm90QWNjZXNzaWJsZToKKyNlbmRpZgog
ICAgICAgICBjYXNlIEZyYW1lTG9hZFR5cGVJbmRleGVkQmFja0ZvcndhcmQ6CiAgICAgICAgICAg
ICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgICAgICAgICBpZiAo
cGFnZS0+YmFja0ZvcndhcmRMaXN0KCkpIHsKQEAgLTQ1NDMsNiArNDU1Miw5IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmxvYWRJdGVtKEhpc3RvcnlJdGVtKiAKICAgICAgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3Quc2V0Q2FjaGVQb2xpY3koUmVsb2FkSWdub3JpbmdDYWNoZURhdGEpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRnJhbWVM
b2FkVHlwZUJhY2s6CisjaWYgRU5BQkxFKFdNTCkKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBG
cmFtZUxvYWRUeXBlQmFja1dNTERlY2tOb3RBY2Nlc3NpYmxlOgorI2VuZGlmCiAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgRnJhbWVMb2FkVHlwZUZvcndhcmQ6CiAgICAgICAgICAgICAgICAgICAg
IGNhc2UgRnJhbWVMb2FkVHlwZUluZGV4ZWRCYWNrRm9yd2FyZDoKICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChpdGVtVVJMLnByb3RvY29sKCkgIT0gImh0dHBzIikKSW5kZXg6IFdlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlclR5cGVzLmgJKHJldmlzaW9uIDQ2OTY1KQorKysgV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXJUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgRnJhbWVMb2FkVHlwZVNhbWUgPSBGcmFtZUxvYWRUeXBlUmVs
b2FkICsgMiwgLy8gdXNlciBsb2FkcyBzYW1lIFVSTCBhZ2FpbiAoYnV0IG5vdCByZWxvYWQgYnV0
dG9uKQogICAgICAgICBGcmFtZUxvYWRUeXBlUmVkaXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRM
aXN0LCAvLyBGSVhNRTogTWVyZ2UgImxvY2tCYWNrRm9yd2FyZExpc3QiLCAibG9ja0hpc3Rvcnki
LCAicXVpY2tSZWRpcmVjdCIgYW5kICJjbGllbnRSZWRpcmVjdCIgaW50byBhIHNpbmdsZSBjb25j
ZXB0IG9mIHJlZGlyZWN0LgogICAgICAgICBGcmFtZUxvYWRUeXBlUmVwbGFjZSwKLSAgICAgICAg
RnJhbWVMb2FkVHlwZVJlbG9hZEZyb21PcmlnaW4KKyAgICAgICAgRnJhbWVMb2FkVHlwZVJlbG9h
ZEZyb21PcmlnaW4sCisgICAgICAgIEZyYW1lTG9hZFR5cGVCYWNrV01MRGVja05vdEFjY2Vzc2li
bGUKICAgICB9OwogCiAgICAgZW51bSBOYXZpZ2F0aW9uVHlwZSB7CkluZGV4OiBXZWJDb3JlL3Bh
Z2UvQ29uc29sZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCShy
ZXZpc2lvbiA0Njk2NCkKKysrIFdlYkNvcmUvcGFnZS9Db25zb2xlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkNo
cm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkNvbnNvbGVNZXNzYWdlLmgiCiAjaW5jbHVkZSAiRnJh
bWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgpA
QCAtMTQzLDcgKzE0NCw3IEBAIHZvaWQgQ29uc29sZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNl
IHMKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChzb3VyY2UgPT0g
SlNNZXNzYWdlU291cmNlIHx8IHNvdXJjZSA9PSBXTUxNZXNzYWdlU291cmNlKQorICAgIGlmIChz
b3VyY2UgPT0gSlNNZXNzYWdlU291cmNlKQogICAgICAgICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50
KCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgbGlu
ZU51bWJlciwgc291cmNlVVJMKTsKIAogICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+
YWRkTWVzc2FnZVRvQ29uc29sZShzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVt
YmVyLCBzb3VyY2VVUkwpOwpAQCAtMjU4LDYgKzI1OSwzMiBAQCB2b2lkIENvbnNvbGU6OmNvdW50
KFNjcmlwdENhbGxTdGFjayogY2FsCiAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5j
b3VudCh0aXRsZSwgbGFzdENhbGxlci5saW5lTnVtYmVyKCksIGxhc3RDYWxsZXIuc291cmNlVVJM
KCkuc3RyaW5nKCkpOwogfQogCisjaWYgRU5BQkxFKFdNTCkKK1N0cmluZyBDb25zb2xlOjpsYXN0
V01MRXJyb3JNZXNzYWdlKCkgY29uc3QKK3sKKyAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgp
OworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgY29uc3Qg
VmVjdG9yPENvbnNvbGVNZXNzYWdlKj4mIGNvbnNvbGVNZXNzYWdlcyA9IHBhZ2UtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS0+Y29uc29sZU1lc3NhZ2VzKCk7CisgICAgaWYgKGNvbnNvbGVNZXNzYWdl
cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIFZlY3RvcjxDb25z
b2xlTWVzc2FnZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGNvbnNvbGVNZXNzYWdlcy5iZWdpbigp
OworICAgIGNvbnN0IFZlY3RvcjxDb25zb2xlTWVzc2FnZSo+Ojpjb25zdF9pdGVyYXRvciBlbmQg
PSBjb25zb2xlTWVzc2FnZXMuZW5kKCk7CisKKyAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KSB7
CisgICAgICAgIENvbnNvbGVNZXNzYWdlKiBtZXNzYWdlID0gKml0OworICAgICAgICBpZiAobWVz
c2FnZS0+c291cmNlKCkgIT0gV01MTWVzc2FnZVNvdXJjZSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgIHJldHVybiBtZXNzYWdlLT5tZXNzYWdlKCk7CisgICAgfQorCisgICAgcmV0
dXJuIFN0cmluZygpOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikKIAogdm9pZCBDb25zb2xlOjpwcm9maWxlKGNvbnN0IEpTQzo6VVN0cmluZyYgdGl0bGUsIFNj
cmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQpJbmRleDogV2ViQ29yZS9wYWdlL0NvbnNvbGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ29uc29sZS5oCShyZXZpc2lvbiA0Njk2NCkKKysr
IFdlYkNvcmUvcGFnZS9Db25zb2xlLmgJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHRyYWNlKFNjcmlwdENhbGxTdGFjayop
OwogICAgICAgICB2b2lkIGFzc2VydENvbmRpdGlvbihib29sIGNvbmRpdGlvbiwgU2NyaXB0Q2Fs
bFN0YWNrKik7CiAgICAgICAgIHZvaWQgY291bnQoU2NyaXB0Q2FsbFN0YWNrKik7CisjaWYgRU5B
QkxFKFdNTCkKKyAgICAgICAgU3RyaW5nIGxhc3RXTUxFcnJvck1lc3NhZ2UoKSBjb25zdDsKKyNl
bmRpZgogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgICAgICB2b2lkIHByb2Zp
bGUoY29uc3QgSlNDOjpVU3RyaW5nJiwgU2NyaXB0Q2FsbFN0YWNrKik7CiAgICAgICAgIHZvaWQg
cHJvZmlsZUVuZChjb25zdCBKU0M6OlVTdHJpbmcmLCBTY3JpcHRDYWxsU3RhY2sqKTsKSW5kZXg6
IFdlYkNvcmUvcGFnZS9Db25zb2xlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ29u
c29sZS5pZGwJKHJldmlzaW9uIDQ2OTY0KQorKysgV2ViQ29yZS9wYWdlL0NvbnNvbGUuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSwxMCBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAg
W0N1c3RvbUFyZ3VtZW50SGFuZGxpbmcsIEltcGxlbWVudGF0aW9uRnVuY3Rpb249YXNzZXJ0Q29u
ZGl0aW9uXSB2b2lkIGFzc2VydChpbiBib29sZWFuIGNvbmRpdGlvbik7CiAgICAgICAgIFtDdXN0
b21Bcmd1bWVudEhhbmRsaW5nXSB2b2lkIGNvdW50KCk7CiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9X
TUwpICYmIEVOQUJMRV9XTUwKKyAgICAgICAgW0RvbnRFbnVtXSBET01TdHJpbmcgbGFzdFdNTEVy
cm9yTWVzc2FnZSgpOworI2VuZGlmCisKICNpZiBkZWZpbmVkKEVOQUJMRV9KQVZBU0NSSVBUX0RF
QlVHR0VSKSAmJiBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUgogICAgICAgICBbQ3VzdG9tQXJn
dW1lbnRIYW5kbGluZ10gdm9pZCBwcm9maWxlKGluIFtDb252ZXJ0VW5kZWZpbmVkT3JOdWxsVG9O
dWxsU3RyaW5nXSBET01TdHJpbmcgdGl0bGUpOwogICAgICAgICBbQ3VzdG9tQXJndW1lbnRIYW5k
bGluZ10gdm9pZCBwcm9maWxlRW5kKGluIFtDb252ZXJ0VW5kZWZpbmVkT3JOdWxsVG9OdWxsU3Ry
aW5nXSBET01TdHJpbmcgdGl0bGUpOwpJbmRleDogV2ViQ29yZS93bWwvV01MQWNjZXNzRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93bWwvV01MQWNjZXNzRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDQ2OTY0KQorKysgV2ViQ29yZS93bWwvV01MQWNjZXNzRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDE2ICs0MywxNCBAQCB2b2lkIFdNTEFjY2Vzc0VsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmliCiAgICAgICAgIFN0cmluZyB2YWx1ZSA9IHBhcnNlVmFsdWVGb3JiaWRkaW5n
VmFyaWFibGVSZWZlcmVuY2VzKGF0dHItPnZhbHVlKCkpOwogICAgICAgICBpZiAodmFsdWUuaXNF
bXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgCi0gICAgICAgIGlmIChX
TUxQYWdlU3RhdGUqIHBhZ2VTdGF0ZSA9IHdtbFBhZ2VTdGF0ZUZvckRvY3VtZW50KGRvY3VtZW50
KCkpKQotICAgICAgICAgICAgcGFnZVN0YXRlLT5yZXN0cmljdERlY2tBY2Nlc3NUb0RvbWFpbih2
YWx1ZSk7CisKKyAgICAgICAgbV9kb21haW4gPSB2YWx1ZTsKICAgICB9IGVsc2UgaWYgKGF0dHIt
Pm5hbWUoKSA9PSBwYXRoQXR0cikgewogICAgICAgICBTdHJpbmcgdmFsdWUgPSBwYXJzZVZhbHVl
Rm9yYmlkZGluZ1ZhcmlhYmxlUmVmZXJlbmNlcyhhdHRyLT52YWx1ZSgpKTsKICAgICAgICAgaWYg
KHZhbHVlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoV01M
UGFnZVN0YXRlKiBwYWdlU3RhdGUgPSB3bWxQYWdlU3RhdGVGb3JEb2N1bWVudChkb2N1bWVudCgp
KSkKLSAgICAgICAgICAgIHBhZ2VTdGF0ZS0+cmVzdHJpY3REZWNrQWNjZXNzVG9QYXRoKHZhbHVl
KTsKKyAgICAgICAgbV9wYXRoID0gdmFsdWU7CiAgICAgfSBlbHNlCiAgICAgICAgIFdNTEVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQpAQCAtNjIsOCArNjAsMTQgQEAgdm9p
ZCBXTUxBY2Nlc3NFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bQogICAgIFdNTEVsZW1lbnQ6Omlu
c2VydGVkSW50b0RvY3VtZW50KCk7CiAKICAgICBXTUxQYWdlU3RhdGUqIHBhZ2VTdGF0ZSA9IHdt
bFBhZ2VTdGF0ZUZvckRvY3VtZW50KGRvY3VtZW50KCkpOwotICAgIGlmIChwYWdlU3RhdGUgJiYg
IXBhZ2VTdGF0ZS0+c2V0TmVlZENoZWNrRGVja0FjY2Vzcyh0cnVlKSkKLSAgICAgICAgcmVwb3J0
V01MRXJyb3IoZG9jdW1lbnQoKSwgV01MRXJyb3JNdWx0aXBsZUFjY2Vzc0VsZW1lbnRzKTsKKyAg
ICBpZiAoIXBhZ2VTdGF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHBhZ2VTdGF0ZS0+
cHJvY2Vzc0FjY2Vzc0NvbnRyb2xEYXRhKG1fZG9tYWluLCBtX3BhdGgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBwYWdlU3RhdGUtPnJlc2V0QWNjZXNzQ29udHJvbERhdGEoKTsKKyAgICByZXBv
cnRXTUxFcnJvcihkb2N1bWVudCgpLCBXTUxFcnJvck11bHRpcGxlQWNjZXNzRWxlbWVudHMpOwog
fQogCiB9CkluZGV4OiBXZWJDb3JlL3dtbC9XTUxBY2Nlc3NFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS93bWwvV01MQWNjZXNzRWxlbWVudC5oCShyZXZpc2lvbiA0Njk2NCkKKysrIFdl
YkNvcmUvd21sL1dNTEFjY2Vzc0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIs
MTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1h
cHBlZEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgp
OworCitwcml2YXRlOgorICAgIFN0cmluZyBtX2RvbWFpbjsKKyAgICBTdHJpbmcgbV9wYXRoOwog
fTsKIAogfQpJbmRleDogV2ViQ29yZS93bWwvV01MQ2FyZEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvd21sL1dNTENhcmRFbGVtZW50LmNwcAkocmV2aXNpb24gNDY5NjQpCisrKyBX
ZWJDb3JlL3dtbC9XTUxDYXJkRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw2ICsx
NDIsOSBAQCB2b2lkIFdNTENhcmRFbGVtZW50OjpoYW5kbGVJbnRyaW5zaWNFdmVuCiAgICAgY2Fz
ZSBGcmFtZUxvYWRUeXBlQmFjazoKICAgICAgICAgZXZlbnRUeXBlID0gV01MSW50cmluc2ljRXZl
bnRPbkVudGVyQmFja3dhcmQ7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgRnJhbWVMb2FkVHlw
ZUJhY2tXTUxEZWNrTm90QWNjZXNzaWJsZToKKyAgICAgICAgcmVwb3J0V01MRXJyb3IoZG9jdW1l
bnQoKSwgV01MRXJyb3JEZWNrTm90QWNjZXNzaWJsZSk7CisgICAgICAgIHJldHVybjsKICAgICBk
ZWZhdWx0OgogICAgICAgICBldmVudFR5cGUgPSBXTUxJbnRyaW5zaWNFdmVudE9uRW50ZXJGb3J3
YXJkOwogICAgICAgICBicmVhazsKSW5kZXg6IFdlYkNvcmUvd21sL1dNTERvY3VtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3dtbC9XTUxEb2N1bWVudC5jcHAJKHJldmlzaW9uIDQ2OTY0
KQorKysgV2ViQ29yZS93bWwvV01MRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw4
ICs1OSw2IEBAIHZvaWQgV01MRG9jdW1lbnQ6OmZpbmlzaGVkUGFyc2luZygpCiAgICAgaWYgKCFo
YXNBY2Nlc3MpIHsKICAgICAgICAgbV9hY3RpdmVDYXJkID0gMDsKIAotICAgICAgICAvLyBGSVhN
RTogQ29tbWVudCBpbiB0aGlzIGNvZGUgb25jZSB0aGUgZGVjay1hY2Nlc3MgY29udHJvbCBwYXRj
aCBsYW5kZWQuCi0jaWYgMAogICAgICAgICBXTUxQYWdlU3RhdGUqIHdtbFBhZ2VTdGF0ZSA9IHdt
bFBhZ2VTdGF0ZUZvckRvY3VtZW50KHRoaXMpOwogICAgICAgICBpZiAoIXdtbFBhZ2VTdGF0ZSkK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTc5LDcgKzc3LDYgQEAgdm9pZCBXTUxEb2N1bWVudDo6
ZmluaXNoZWRQYXJzaW5nKCkKIAogICAgICAgICBwYWdlLT5nb1RvSXRlbShpdGVtLCBGcmFtZUxv
YWRUeXBlQmFja1dNTERlY2tOb3RBY2Nlc3NpYmxlKTsKICAgICAgICAgcmV0dXJuOwotI2VuZGlm
CiAgICAgfQogCiAgICAgaWYgKG1fYWN0aXZlQ2FyZCkgewpAQCAtOTEsMTEgKzg4LDExIEBAIHZv
aWQgV01MRG9jdW1lbnQ6OmZpbmlzaGVkUGFyc2luZygpCiBib29sIFdNTERvY3VtZW50Ojppbml0
aWFsaXplKGJvb2wgYWJvdXRUb0ZpbmlzaFBhcnNpbmcpCiB7CiAgICAgV01MUGFnZVN0YXRlKiB3
bWxQYWdlU3RhdGUgPSB3bWxQYWdlU3RhdGVGb3JEb2N1bWVudCh0aGlzKTsKLSAgICBpZiAoIXdt
bFBhZ2VTdGF0ZSB8fCAhd21sUGFnZVN0YXRlLT5pc0RlY2tBY2Nlc3NpYmxlKCkpCisgICAgaWYg
KCF3bWxQYWdlU3RhdGUgfHwgIXdtbFBhZ2VTdGF0ZS0+Y2FuQWNjZXNzRGVjaygpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gCisKICAgICAvLyBSZW1lbWJlciB0aGF0IHdlJ2Ugc3VjY2Vzc2Z1
bGx5IGVudGVyZWQgdGhlIGRlY2sKLSAgICB3bWxQYWdlU3RhdGUtPnNldE5lZWRDaGVja0RlY2tB
Y2Nlc3MoZmFsc2UpOworICAgIHdtbFBhZ2VTdGF0ZS0+cmVzZXRBY2Nlc3NDb250cm9sRGF0YSgp
OwogCiAgICAgLy8gTm90aWZ5IHRoZSBleGlzdGFuY2Ugb2YgdGVtcGxhdGVzIHRvIGFsbCBjYXJk
cyBvZiB0aGUgY3VycmVudCBkZWNrCiAgICAgV01MVGVtcGxhdGVFbGVtZW50OjpyZWdpc3RlclRl
bXBsYXRlc0luRG9jdW1lbnQodGhpcyk7CkluZGV4OiBXZWJDb3JlL3dtbC9XTUxFcnJvckhhbmRs
aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dtbC9XTUxFcnJvckhhbmRsaW5nLmNwcAko
cmV2aXNpb24gNDY5NjQpCisrKyBXZWJDb3JlL3dtbC9XTUxFcnJvckhhbmRsaW5nLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzgsNyArMzgsOCBAQCB2b2lkIHJlcG9ydFdNTEVycm9yKERvY3VtZW50
KiBkb2MsIFdNTEVyCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyBlcnJvck1lc3NhZ2Ug
PSBlcnJvck1lc3NhZ2VGb3JFcnJvckNvZGUoZXJyb3IpOwotICAgIGlmIChYTUxUb2tlbml6ZXIq
IHRva2VuaXplciA9IHN0YXRpY19jYXN0PFhNTFRva2VuaXplcio+KGRvYy0+dG9rZW5pemVyKCkp
KSB7CisgICAgWE1MVG9rZW5pemVyKiB0b2tlbml6ZXIgPSBzdGF0aWNfY2FzdDxYTUxUb2tlbml6
ZXIqPihkb2MtPnRva2VuaXplcigpKTsKKyAgICBpZiAodG9rZW5pemVyICYmIGVycm9yICE9IFdN
TEVycm9yRGVja05vdEFjY2Vzc2libGUpIHsKICAgICAgICAgLy8gU29tZSBlcnJvcnMgYXJlIHJl
cG9ydGVkIGFzIHJlc3VsdCBvZiBhbiBpbnNlcnRlZEludG9Eb2N1bWVudCgpIGNhbGwuCiAgICAg
ICAgIC8vIElmIHRoaXMgaGFwcGVuZWQsIHBhcnNpbmcgaGFzIGJlZW4gc3RvcHBlZCwgYW5kIHRo
ZSBkb2N1bWVudCBmcmFnbWVudAogICAgICAgICAvLyBpcyB3cmFwcGVkIGluIGEgWEhUTUwgZXJy
b3IgZG9jdW1lbnQuIFRoYXQgbWVhbnMgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQpJbmRleDogV2Vi
Q29yZS93bWwvV01MUGFnZVN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dtbC9XTUxQ
YWdlU3RhdGUuY3BwCShyZXZpc2lvbiA0Njk2NCkKKysrIFdlYkNvcmUvd21sL1dNTFBhZ2VTdGF0
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDggQEAKICNpbmNsdWRlICJXTUxQYWdl
U3RhdGUuaCIKIAogI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgor
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJL
VVJMLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMzQsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBXTUxQYWdlU3RhdGU6OldNTFBhZ2VTdGF0ZShQYWdlKiBwYWdlKQogICAgIDogbV9w
YWdlKHBhZ2UpCiAgICAgLCBtX2FjdGl2ZUNhcmQoMCkKLSAgICAsIG1faGFzRGVja0FjY2Vzcyhm
YWxzZSkKKyAgICAsIG1faGFzQWNjZXNzQ29udHJvbERhdGEoZmFsc2UpCiB7CiB9CiAKQEAgLTY2
LDc0ICs2OCwyMDAgQEAgdm9pZCBXTUxQYWdlU3RhdGU6OnJlc2V0KCkKICAgICAgICAgbGlzdC0+
Y2xlYXJXTUxQYWdlSGlzdG9yeSgpOwogfQogCi1ib29sIFdNTFBhZ2VTdGF0ZTo6c2V0TmVlZENo
ZWNrRGVja0FjY2Vzcyhib29sIG5lZWQpCitzdGF0aWMgaW5saW5lIFN0cmluZyBub3JtYWxpemVk
SG9zdE5hbWUoY29uc3QgU3RyaW5nJiBwYXNzZWRIb3N0KQogewotICAgIGlmIChtX2hhc0RlY2tB
Y2Nlc3MgJiYgbmVlZCkKKyAgICBpZiAocGFzc2VkSG9zdC5jb250YWlucygiMTI3LjAuMC4xIikp
IHsKKyAgICAgICAgU3RyaW5nIGhvc3QgPSBwYXNzZWRIb3N0OworICAgICAgICByZXR1cm4gaG9z
dC5yZXBsYWNlKCIxMjcuMC4wLjEiLCAibG9jYWxob3N0Iik7CisgICAgfQorCisgICAgcmV0dXJu
IHBhc3NlZEhvc3Q7Cit9CisKK3N0YXRpYyBpbmxpbmUgU3RyaW5nIGhvc3RGcm9tVVJMKGNvbnN0
IEtVUkwmIHVybCkKK3sKKyAgICAvLyBEZWZhdWx0IHRvICJsb2NhbGhvc3QiCisgICAgU3RyaW5n
IGhvc3QgPSBub3JtYWxpemVkSG9zdE5hbWUodXJsLmhvc3QoKSk7CisgICAgcmV0dXJuIGhvc3Qu
aXNFbXB0eSgpID8gImxvY2FsaG9zdCIgOiBob3N0OworfQorCitzdGF0aWMgS1VSTCB1cmxGb3JI
aXN0b3J5SXRlbShGcmFtZSogZnJhbWUsIEhpc3RvcnlJdGVtKiBpdGVtKQoreworICAgIC8vIEZv
ciBMYXlvdXRUZXN0cyB3ZSBuZWVkIHRvIGZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgV01MIGZyYW1l
IGluIHRoZSB0ZXN0IGRvY3VtZW50CisgICAgLy8gdG8gYmUgYWJsZSB0byB0ZXN0IGFjY2Vzcy1j
b250cm9sIGNvcnJlY3RseS4gUmVtZW1iZXIgdGhhdCBXTUwgaXMgbmV2ZXIgc3VwcG9zZWQKKyAg
ICAvLyB0byBiZSBlbWJlZGRlZCBhbnl3aGVyZSwgc28gdGhlIHB1cnBvc2UgaXMgdG8gc2ltdWxh
dGUgYSBzdGFuZGFsb25lIFdNTCBkb2N1bWVudC4KKyAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkt
PmlzV01MRG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIGl0ZW0tPnVybCgpOworCisgICAgY29u
c3QgSGlzdG9yeUl0ZW1WZWN0b3ImIGNoaWxkSXRlbXMgPSBpdGVtLT5jaGlsZHJlbigpOworICAg
IEhpc3RvcnlJdGVtVmVjdG9yOjpjb25zdF9pdGVyYXRvciBpdCA9IGNoaWxkSXRlbXMuYmVnaW4o
KTsKKyAgICBjb25zdCBIaXN0b3J5SXRlbVZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gY2hp
bGRJdGVtcy5lbmQoKTsKKworICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAg
Y29uc3QgUmVmUHRyPEhpc3RvcnlJdGVtPiBjaGlsZEl0ZW0gPSAqaXQ7CisgICAgICAgIEZyYW1l
KiBjaGlsZEZyYW1lID0gZnJhbWUtPnRyZWUoKS0+Y2hpbGQoY2hpbGRJdGVtLT50YXJnZXQoKSk7
CisgICAgICAgIGlmICghY2hpbGRGcmFtZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIGlmIChEb2N1bWVudCogY2hpbGREb2N1bWVudCA9IGNoaWxkRnJhbWUtPmRvY3VtZW50KCkp
IHsKKyAgICAgICAgICAgIGlmIChjaGlsZERvY3VtZW50LT5pc1dNTERvY3VtZW50KCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGNoaWxkSXRlbS0+dXJsKCk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICByZXR1cm4gaXRlbS0+dXJsKCk7Cit9CisKK3N0YXRpYyBib29sIHRyeUFjY2Vzc0hpc3Rv
cnlVUkxzKFBhZ2UqIHBhZ2UsIEtVUkwmIHByZXZpb3VzVVJMLCBLVVJMJiBjdXJyZW50VVJMKQor
eworICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9oYXNEZWNr
QWNjZXNzID0gbmVlZDsKLSAgICBtX2FjY2Vzc1BhdGggPSBTdHJpbmcoKTsKLSAgICBtX2FjY2Vz
c0RvbWFpbiA9IFN0cmluZygpOworICAgIEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgp
OworICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5kb2N1bWVudCgpKSAgICAKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgQmFja0ZvcndhcmRMaXN0KiBsaXN0ID0gcGFnZS0+YmFja0Zvcndh
cmRMaXN0KCk7CisgICAgaWYgKCFsaXN0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBI
aXN0b3J5SXRlbSogcHJldmlvdXNJdGVtID0gbGlzdC0+YmFja0l0ZW0oKTsKKyAgICBpZiAoIXBy
ZXZpb3VzSXRlbSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgSGlzdG9yeUl0ZW0qIGN1
cnJlbnRJdGVtID0gbGlzdC0+Y3VycmVudEl0ZW0oKTsKKyAgICBpZiAoIWN1cnJlbnRJdGVtKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBwcmV2aW91c1VSTCA9IHVybEZvckhpc3RvcnlJ
dGVtKGZyYW1lLCBwcmV2aW91c0l0ZW0pOworICAgIGN1cnJlbnRVUkwgPSB1cmxGb3JIaXN0b3J5
SXRlbShmcmFtZSwgY3VycmVudEl0ZW0pOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLS8vIEZJ
WE1FOiBXZSBtYXkgd2FudCBhbm90aGVyIG5hbWUsIGl0IGRvZXMgZmFyIG1vcmUgdGhhbiBqdXN0
IGNoZWNraW5nIHdoZXRlciB0aGUgZGVjayBpcyBhY2Nlc3NhYmxlCi1ib29sIFdNTFBhZ2VTdGF0
ZTo6aXNEZWNrQWNjZXNzaWJsZSgpCitib29sIFdNTFBhZ2VTdGF0ZTo6cHJvY2Vzc0FjY2Vzc0Nv
bnRyb2xEYXRhKGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0g
ICAgaWYgKCFtX2hhc0RlY2tBY2Nlc3MgfHwgIW1fcGFnZSB8fCAhbV9wYWdlLT5iYWNrRm9yd2Fy
ZExpc3QoKSB8fCAhbV9wYWdlLT5iYWNrRm9yd2FyZExpc3QoKS0+YmFja0l0ZW0oKSkKKyAgICBp
ZiAobV9oYXNBY2Nlc3NDb250cm9sRGF0YSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
bV9oYXNBY2Nlc3NDb250cm9sRGF0YSA9IHRydWU7CisKKyAgICBLVVJMIHByZXZpb3VzVVJMLCBj
dXJyZW50VVJMOworICAgIGlmICghdHJ5QWNjZXNzSGlzdG9yeVVSTHMobV9wYWdlLCBwcmV2aW91
c1VSTCwgY3VycmVudFVSTCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgSGlzdG9yeUl0
ZW0qIGhpc3RJdGVtID0gbV9wYWdlLT5iYWNrRm9yd2FyZExpc3QoKS0+YmFja0l0ZW0oKTsKLSAg
ICBLVVJMIHVybChoaXN0SXRlbS0+dXJsU3RyaW5nKCkpOworICAgIC8vIFNwZWM6IFRoZSBwYXRo
IGF0dHJpYnV0ZSBkZWZhdWx0cyB0byB0aGUgdmFsdWUgIi8iCisgICAgbV9hY2Nlc3NQYXRoID0g
cGF0aC5pc0VtcHR5KCkgPyAiLyIgOiBwYXRoOworCisgICAgLy8gU3BlYzogVGhlIGRvbWFpbiBh
dHRyaWJ1dGUgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgZGVja3MgZG9tYWluLgorICAgIFN0cmlu
ZyBwcmV2aW91c0hvc3QgPSBob3N0RnJvbVVSTChwcmV2aW91c1VSTCk7CisgICAgbV9hY2Nlc3NE
b21haW4gPSBkb21haW4uaXNFbXB0eSgpID8gcHJldmlvdXNIb3N0IDogbm9ybWFsaXplZEhvc3RO
YW1lKGRvbWFpbik7CisKKyAgICAvLyBTcGVjOiBUbyBzaW1wbGlmeSB0aGUgZGV2ZWxvcG1lbnQg
b2YgYXBwbGljYXRpb25zIHRoYXQgbWF5IG5vdCBrbm93IHRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRo
ZSAKKyAgICAvLyBjdXJyZW50IGRlY2ssIHRoZSBwYXRoIGF0dHJpYnV0ZSBhY2NlcHRzIHJlbGF0
aXZlIFVSSXMuIFRoZSB1c2VyIGFnZW50IGNvbnZlcnRzIHRoZSByZWxhdGl2ZSAKKyAgICAvLyBw
YXRoIHRvIGFuIGFic29sdXRlIHBhdGggYW5kIHRoZW4gcGVyZm9ybXMgcHJlZml4IG1hdGNoaW5n
IGFnYWluc3QgdGhlIFBBVEggYXR0cmlidXRlLgorICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1f
cGFnZS0+bWFpbkZyYW1lKCkgPyBtX3BhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpIDogMDsK
KyAgICBpZiAoZG9jdW1lbnQgJiYgcHJldmlvdXNIb3N0ID09IG1fYWNjZXNzRG9tYWluICYmICFt
X2FjY2Vzc1BhdGguc3RhcnRzV2l0aCgiLyIpKSB7CisgICAgICAgIFN0cmluZyBjdXJyZW50UGF0
aCA9IGN1cnJlbnRVUkwucGF0aCgpOworCisgICAgICAgIHNpemVfdCBpbmRleCA9IGN1cnJlbnRQ
YXRoLnJldmVyc2VGaW5kKCcvJyk7CisgICAgICAgIGlmIChpbmRleCAhPSBXVEY6Om5vdEZvdW5k
KQorICAgICAgICAgICAgbV9hY2Nlc3NQYXRoID0gZG9jdW1lbnQtPmNvbXBsZXRlVVJMKGN1cnJl
bnRQYXRoLmxlZnQoaW5kZXggKyAxKSArIG1fYWNjZXNzUGF0aCkucGF0aCgpOworICAgIH0KIAot
ICAgIFN0cmluZyBwcmV2SG9zdCA9IHVybC5ob3N0KCk7Ci0gICAgU3RyaW5nIHByZXZQYXRoID0g
dXJsLnBhdGgoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXTUxQYWdlU3RhdGU6OnJl
c2V0QWNjZXNzQ29udHJvbERhdGEoKQoreworICAgIG1faGFzQWNjZXNzQ29udHJvbERhdGEgPSBm
YWxzZTsKKyAgICBtX2FjY2Vzc0RvbWFpbiA9IFN0cmluZygpOworICAgIG1fYWNjZXNzUGF0aCA9
IFN0cmluZygpOworfQogCi0gICAgLy8gZm9yICdmaWxlJyBVUkksIHRoZSBob3N0IHBhcnQgbWF5
IGJlIGVtcHR5LCBzbyB3ZSBzaG91bGQgY29tcGxldGUgaXQuCi0gICAgaWYgKHByZXZIb3N0Lmlz
RW1wdHkoKSkKLSAgICAgICAgcHJldkhvc3QgPSAibG9jYWxob3N0IjsKK2Jvb2wgV01MUGFnZVN0
YXRlOjpjYW5BY2Nlc3NEZWNrKCkgY29uc3QKK3sKKyAgICBpZiAoIW1faGFzQWNjZXNzQ29udHJv
bERhdGEpCisgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaGlzdEl0ZW0gPSBtX3BhZ2UtPmJh
Y2tGb3J3YXJkTGlzdCgpLT5jdXJyZW50SXRlbSgpOwotICAgIEtVUkwgY3VyVXJsKGhpc3RJdGVt
LT51cmxTdHJpbmcoKSk7Ci0gICAgU3RyaW5nIGN1clBhdGggPSBjdXJVcmwucGF0aCgpOworICAg
IEtVUkwgcHJldmlvdXNVUkwsIGN1cnJlbnRVUkw7CisgICAgaWYgKCF0cnlBY2Nlc3NIaXN0b3J5
VVJMcyhtX3BhZ2UsIHByZXZpb3VzVVJMLCBjdXJyZW50VVJMKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICBpZiAoZXF1YWxJZ25vcmluZ1JlZih1cmwsIGN1clVybCkpCisgICAgaWYgKGVx
dWFsSWdub3JpbmdSZWYocHJldmlvdXNVUkwsIGN1cnJlbnRVUkwpKQogICAgICAgIHJldHVybiB0
cnVlOwogCi0gICAgLy8gIi8iIGlzIHRoZSBkZWZhdWx0IHZhbHVlIGlmIG5vdCBzcGVjaWZpZWQK
LSAgICBpZiAobV9hY2Nlc3NQYXRoLmlzRW1wdHkoKSkgIAotICAgICAgICBtX2FjY2Vzc1BhdGgg
PSAiLyI7Ci0gICAgZWxzZSBpZiAobV9hY2Nlc3NQYXRoLmVuZHNXaXRoKCIvIikgJiYgKG1fYWNj
ZXNzUGF0aCAhPSAiLyIpKQotICAgICAgICBtX2FjY2Vzc1BhdGggPSBtX2FjY2Vzc1BhdGgubGVm
dCgobV9hY2Nlc3NQYXRoLmxlbmd0aCgpLTEpKTsKLQotCi0gICAgLy8gY3VycmVudCBkZWNrIGRv
bWFpbiBpcyB0aGUgZGVmYXVsdCB2YWx1ZSBpZiBub3Qgc3BlY2lmaWVkCi0gICAgaWYgKG1fYWNj
ZXNzRG9tYWluLmlzRW1wdHkoKSkKLSAgICAgICAgbV9hY2Nlc3NEb21haW4gPSBwcmV2SG9zdDsK
LQotICAgIC8vIGNvbnZlcnQgcmVsYXRpdmUgVVJMIHRvIGFic29sdXRlIFVSTCBiZWZvcmUgcGVy
Zm9ybWluZyBwYXRoIG1hdGNoaW5nCi0gICAgaWYgKHByZXZIb3N0ID09IG1fYWNjZXNzRG9tYWlu
KSB7Ci0gICAgICAgIGlmICghbV9hY2Nlc3NQYXRoLnN0YXJ0c1dpdGgoIi8iKSkgewotICAgICAg
ICAgICBpbnQgaW5kZXggPSBjdXJQYXRoLnJldmVyc2VGaW5kKCcvJyk7Ci0gICAgICAgICAgIGlm
IChpbmRleCAhPSAtMSkgewotICAgICAgICAgICAgICAgY3VyUGF0aCA9IGN1clBhdGgubGVmdChp
bmRleCArIDEpOwotICAgICAgICAgICAgICAgY3VyUGF0aCArPSBtX2FjY2Vzc1BhdGg7Ci0gICAg
ICAgICAgICAgICBjdXJVcmwuc2V0UGF0aChjdXJQYXRoKTsKLSAgICAgICAgICAgICAgIG1fYWNj
ZXNzUGF0aCA9IGN1clVybC5wYXRoKCk7Ci0gICAgICAgICAgIH0KKyAgICByZXR1cm4gaG9zdElz
QWxsb3dlZFRvQWNjZXNzKGhvc3RGcm9tVVJMKHByZXZpb3VzVVJMKSkgJiYgcGF0aElzQWxsb3dl
ZFRvQWNjZXNzKHByZXZpb3VzVVJMLnBhdGgoKSk7Cit9CisKK2Jvb2wgV01MUGFnZVN0YXRlOjpo
b3N0SXNBbGxvd2VkVG9BY2Nlc3MoY29uc3QgU3RyaW5nJiBob3N0KSBjb25zdAoreworICAgIC8v
IFNwZWM6IFRoZSBhY2Nlc3MgZG9tYWluIGlzIHN1ZmZpeC1tYXRjaGVkIGFnYWluc3QgdGhlIGRv
bWFpbiBuYW1lIHBvcnRpb24gb2YgdGhlIHJlZmVycmluZyBVUkkKKyAgICBWZWN0b3I8U3RyaW5n
PiBzdWJkb21haW5zQWxsb3dlZDsKKyAgICBpZiAobV9hY2Nlc3NEb21haW4uY29udGFpbnMoJy4n
KSkKKyAgICAgICAgbV9hY2Nlc3NEb21haW4uc3BsaXQoJy4nLCBzdWJkb21haW5zQWxsb3dlZCk7
CisgICAgZWxzZQorICAgICAgICBzdWJkb21haW5zQWxsb3dlZC5hcHBlbmQobV9hY2Nlc3NEb21h
aW4pOworCisgICAgVmVjdG9yPFN0cmluZz4gc3ViZG9tYWluc0NoZWNrOworICAgIGlmIChob3N0
LmNvbnRhaW5zKCcuJykpCisgICAgICAgIGhvc3Quc3BsaXQoJy4nLCBzdWJkb21haW5zQ2hlY2sp
OworICAgIGVsc2UKKyAgICAgICAgc3ViZG9tYWluc0NoZWNrLmFwcGVuZChob3N0KTsKKworICAg
IFZlY3RvcjxTdHJpbmc+OjppdGVyYXRvciBpdEFsbG93ZWQgPSBzdWJkb21haW5zQWxsb3dlZC5l
bmQoKSAtIDE7CisgICAgVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIGJlZ2luQWxsb3dlZCA9IHN1
YmRvbWFpbnNBbGxvd2VkLmJlZ2luKCk7CisKKyAgICBWZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3Ig
aXRDaGVjayA9IHN1YmRvbWFpbnNDaGVjay5lbmQoKSAtIDE7CisgICAgVmVjdG9yPFN0cmluZz46
Oml0ZXJhdG9yIGJlZ2luQ2hlY2sgPSBzdWJkb21haW5zQ2hlY2suYmVnaW4oKTsKKworICAgIGJv
b2wgaG9zdE9rID0gdHJ1ZTsKKyAgICBmb3IgKDsgaXRBbGxvd2VkID49IGJlZ2luQWxsb3dlZCAm
JiBpdENoZWNrID49IGJlZ2luQ2hlY2s7ICkgeworICAgICAgICBpZiAoKml0QWxsb3dlZCAhPSAq
aXRDaGVjaykgeworICAgICAgICAgICAgaG9zdE9rID0gZmFsc2U7CisgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQorCisgICAgICAgIC0taXRBbGxvd2VkOworICAgICAgICAtLWl0Q2hlY2s7
CiAgICAgfQogCi0gICAgLy8gcGF0aCBwcmVmaXggbWF0Y2hpbmcKLSAgICBpZiAocHJldlBhdGgu
c3RhcnRzV2l0aChtX2FjY2Vzc1BhdGgpICYmIAotICAgICAgIChwcmV2UGF0aFttX2FjY2Vzc1Bh
dGgubGVuZ3RoKCldID09ICcvJyB8fCBwcmV2UGF0aC5sZW5ndGgoKSA9PSBtX2FjY2Vzc1BhdGgu
bGVuZ3RoKCkpKSB7Ci0gICAgICAgIC8vIGRvbWFpbiBzdWZmaXggbWF0Y2hpbmcKLSAgICAgICAg
dW5zaWduZWQgZG9tYWluTGVuZ3RoID0gbV9hY2Nlc3NEb21haW4ubGVuZ3RoKCk7Ci0gICAgICAg
IHVuc2lnbmVkIGhvc3RMZW5ndGggPSBwcmV2SG9zdC5sZW5ndGgoKTsKLSAgICAgICAgcmV0dXJu
IChwcmV2SG9zdC5lbmRzV2l0aChtX2FjY2Vzc0RvbWFpbikgJiYgcHJldkhvc3RbaG9zdExlbmd0
aCAtIGRvbWFpbkxlbmd0aCAtIDFdID09ICcuJykgfHwgaG9zdExlbmd0aCA9PSBkb21haW5MZW5n
dGg7CisgICAgcmV0dXJuIGhvc3RPazsKK30KKworYm9vbCBXTUxQYWdlU3RhdGU6OnBhdGhJc0Fs
bG93ZWRUb0FjY2Vzcyhjb25zdCBTdHJpbmcmIHBhdGgpIGNvbnN0Cit7CisgICAgLy8gU3BlYzog
VGhlIGFjY2VzcyBwYXRoIGlzIHByZWZpeCBtYXRjaGVkIGFnYWluc3QgdGhlIHBhdGggcG9ydGlv
biBvZiB0aGUgcmVmZXJyaW5nIFVSSQorICAgIFZlY3RvcjxTdHJpbmc+IHN1YnBhdGhzQWxsb3dl
ZDsKKyAgICBpZiAobV9hY2Nlc3NQYXRoLmNvbnRhaW5zKCcvJykpCisgICAgICAgIG1fYWNjZXNz
UGF0aC5zcGxpdCgnLycsIHN1YnBhdGhzQWxsb3dlZCk7CisgICAgZWxzZQorICAgICAgICBzdWJw
YXRoc0FsbG93ZWQuYXBwZW5kKG1fYWNjZXNzUGF0aCk7CisKKyAgICBWZWN0b3I8U3RyaW5nPiBz
dWJwYXRoc0NoZWNrOworICAgIGlmIChwYXRoLmNvbnRhaW5zKCcvJykpCisgICAgICAgIHBhdGgu
c3BsaXQoJy8nLCBzdWJwYXRoc0NoZWNrKTsKKyAgICBlbHNlCisgICAgICAgIHN1YnBhdGhzQ2hl
Y2suYXBwZW5kKHBhdGgpOworCisgICAgVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIGl0QWxsb3dl
ZCA9IHN1YnBhdGhzQWxsb3dlZC5iZWdpbigpOworICAgIFZlY3RvcjxTdHJpbmc+OjppdGVyYXRv
ciBlbmRBbGxvd2VkID0gc3VicGF0aHNBbGxvd2VkLmVuZCgpOworCisgICAgVmVjdG9yPFN0cmlu
Zz46Oml0ZXJhdG9yIGl0Q2hlY2sgPSBzdWJwYXRoc0NoZWNrLmJlZ2luKCk7CisgICAgVmVjdG9y
PFN0cmluZz46Oml0ZXJhdG9yIGVuZENoZWNrID0gc3VicGF0aHNDaGVjay5lbmQoKTsKKworICAg
IGJvb2wgcGF0aE9rID0gdHJ1ZTsKKyAgICBmb3IgKDsgaXRBbGxvd2VkICE9IGVuZEFsbG93ZWQg
JiYgaXRDaGVjayAhPSBlbmRDaGVjazsgKSB7CisgICAgICAgIGlmICgqaXRBbGxvd2VkICE9ICpp
dENoZWNrKSB7CisgICAgICAgICAgICBwYXRoT2sgPSBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgKytpdEFsbG93ZWQ7CisgICAgICAgICsraXRDaGVjazsK
ICAgICB9CiAKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHBhdGhPazsKIH0KIAogfQpJ
bmRleDogV2ViQ29yZS93bWwvV01MUGFnZVN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93
bWwvV01MUGFnZVN0YXRlLmgJKHJldmlzaW9uIDQ2OTY0KQorKysgV2ViQ29yZS93bWwvV01MUGFn
ZVN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDQwICs0MywzNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkdW1wKCk7CiAjZW5kaWYKIAotICAgIC8vIHJlc2V0IHRoZSBicm93c2VyIGNvbnRleHQg
d2hlbiAnbmV3Y29udGV4dCcgYXR0cmlidXRlCi0gICAgLy8gb2YgY2FyZCBlbGVtZW50IGlzIHBl
cmZvcm1lZCBhcyBwYXJ0IG9mIGdvIHRhc2sKKyAgICAvLyBSZXNldCB0aGUgYnJvd3NlciBjb250
ZXh0CiAgICAgdm9pZCByZXNldCgpOwogCi0gICAgLy8gdmFyaWFibGVzIG9wZXJhdGlvbnMgCisg
ICAgLy8gVmFyaWFibGUgaGFuZGxpbmcKICAgICB2b2lkIHN0b3JlVmFyaWFibGUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKSB7IG1fdmFyaWFibGVzLnNldChuYW1lLCB2
YWx1ZSk7IH0KICAgICB2b2lkIHN0b3JlVmFyaWFibGVzKFdNTFZhcmlhYmxlTWFwJiB2YXJpYWJs
ZXMpIHsgbV92YXJpYWJsZXMgPSB2YXJpYWJsZXM7IH0KICAgICBTdHJpbmcgZ2V0VmFyaWFibGUo
Y29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdCB7IHJldHVybiBtX3ZhcmlhYmxlcy5nZXQobmFtZSk7
IH0KICAgICBib29sIGhhc1ZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuICFtX3ZhcmlhYmxlcy5p
c0VtcHR5KCk7IH0KIAotICAgIGludCBoaXN0b3J5TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9o
aXN0b3J5TGVuZ3RoOyB9Ci0gICAgdm9pZCBzZXRIaXN0b3J5TGVuZ3RoKGludCBsZW5ndGgpIHsg
bV9oaXN0b3J5TGVuZ3RoID0gbGVuZ3RoOyB9Ci0KICAgICBQYWdlKiBwYWdlKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYWdlOyB9CiAKICAgICBXTUxDYXJkRWxlbWVudCogYWN0aXZlQ2FyZCgpIGNvbnN0
IHsgcmV0dXJuIG1fYWN0aXZlQ2FyZDsgfQogICAgIHZvaWQgc2V0QWN0aXZlQ2FyZChXTUxDYXJk
RWxlbWVudCogY2FyZCkgeyBtX2FjdGl2ZUNhcmQgPSBjYXJkOyB9CiAKLSAgICAvLyBkZWNrIGFj
Y2VzcyBjb250cm9sCi0gICAgdm9pZCByZXN0cmljdERlY2tBY2Nlc3NUb0RvbWFpbihjb25zdCBT
dHJpbmcmIGRvbWFpbikgeyBtX2FjY2Vzc0RvbWFpbiA9IGRvbWFpbjsgfQotICAgIHZvaWQgcmVz
dHJpY3REZWNrQWNjZXNzVG9QYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkgeyBtX2FjY2Vzc1BhdGgg
PSBwYXRoOyB9Ci0gICAgYm9vbCBoYXNEZWNrQWNjZXNzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNE
ZWNrQWNjZXNzOyB9Ci0gCi0gICAgYm9vbCBzZXROZWVkQ2hlY2tEZWNrQWNjZXNzKGJvb2wpOwot
ICAgIGJvb2wgaXNEZWNrQWNjZXNzaWJsZSgpOworICAgIC8vIERlY2sgYWNjZXNzIGNvbnRyb2wK
KyAgICBib29sIHByb2Nlc3NBY2Nlc3NDb250cm9sRGF0YShjb25zdCBTdHJpbmcmIGRtYWluLCBj
b25zdCBTdHJpbmcmIHBhdGgpOworICAgIHZvaWQgcmVzZXRBY2Nlc3NDb250cm9sRGF0YSgpOwor
CisgICAgYm9vbCBjYW5BY2Nlc3NEZWNrKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgYm9vbCBo
b3N0SXNBbGxvd2VkVG9BY2Nlc3MoY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgYm9vbCBwYXRo
SXNBbGxvd2VkVG9BY2Nlc3MoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAg
UGFnZSogbV9wYWdlOwogICAgIFdNTFZhcmlhYmxlTWFwIG1fdmFyaWFibGVzOwotICAgIGludCBt
X2hpc3RvcnlMZW5ndGg7CiAgICAgV01MQ2FyZEVsZW1lbnQqIG1fYWN0aXZlQ2FyZDsKICAgICBT
dHJpbmcgbV9hY2Nlc3NEb21haW47CiAgICAgU3RyaW5nIG1fYWNjZXNzUGF0aDsKLSAgICBib29s
IG1faGFzRGVja0FjY2VzczsKKyAgICBib29sIG1faGFzQWNjZXNzQ29udHJvbERhdGE7CiB9Owog
CiB9CkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFj
L0NoYW5nZUxvZwkocmV2aXNpb24gNDY5NjUpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDA5LTA4LTA5ICBOaWtvbGFzIFppbW1lcm1h
bm4gIDxuaWtvbGFzLnppbW1lcm1hbm5AdG9yY2htb2JpbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtXTUxdIERlY2sgYWNjZXNzIGNvbnRy
b2wgaXMgY29tcGxldGx5IGJyb2tlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mjc3MjEKKworICAgICAgICBTeW5jaHJvbml6ZSBXZWJGcmFtZUxvYWRU
eXBlIHdpdGggRnJhbWVMb2FkVHlwZSBlbnVtLiBBcHBlbmQgJ1dlYkZyYW1lTG9hZFR5cGVCYWNr
V01MRGVja05vdEFjY2Vzc2libGUnLgorCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZVByaXZh
dGUuaDoKKwogMjAwOS0wOC0wNyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBGaXggdGhlIGJ1aWxkIG9uIDEwLjYuCkluZGV4OiBXZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRnJhbWVQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkZyYW1lUHJpdmF0ZS5oCShyZXZpc2lvbiA0Njk2NCkKKysrIFdlYktpdC9tYWMvV2ViVmll
dy9XZWJGcmFtZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsOCBAQCB0eXBl
ZGVmIGVudW0gewogICAgIFdlYkZyYW1lTG9hZFR5cGVTYW1lLCAgICAgICAgICAgICAgIC8vIHVz
ZXIgbG9hZHMgc2FtZSBVUkwgYWdhaW4gKGJ1dCBub3QgcmVsb2FkIGJ1dHRvbikKICAgICBXZWJG
cmFtZUxvYWRUeXBlSW50ZXJuYWwsICAgICAgICAgICAvLyBtYXBzIHRvIFdlYkNvcmU6OkZyYW1l
TG9hZFR5cGVSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3QKICAgICBXZWJGcmFtZUxv
YWRUeXBlUmVwbGFjZSwKLSAgICBXZWJGcmFtZUxvYWRUeXBlUmVsb2FkRnJvbU9yaWdpbgorICAg
IFdlYkZyYW1lTG9hZFR5cGVSZWxvYWRGcm9tT3JpZ2luLAorICAgIFdlYkZyYW1lTG9hZFR5cGVC
YWNrV01MRGVja05vdEFjY2Vzc2libGUKIH0gV2ViRnJhbWVMb2FkVHlwZTsKIAogQGludGVyZmFj
ZSBXZWJGcmFtZSAoV2ViUHJpdmF0ZSkKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA0Njk2NSkKKysrIFdlYktp
dC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDktMDgt
MDkgIE5pa29sYXMgWmltbWVybWFubiAgPG5pa29sYXMuemltbWVybWFubkB0b3JjaG1vYmlsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1dN
TF0gRGVjayBhY2Nlc3MgY29udHJvbCBpcyBjb21wbGV0bHkgYnJva2VuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzcyMQorCisgICAgICAgIFN5bmNo
cm9uaXplIFdlYkZyYW1lTG9hZFR5cGUgd2l0aCBGcmFtZUxvYWRUeXBlIGVudW0uIEFwcGVuZCAn
V2ViRnJhbWVMb2FkVHlwZUJhY2tXTUxEZWNrTm90QWNjZXNzaWJsZScuCisKKyAgICAgICAgKiBJ
bnRlcmZhY2VzL0lXZWJGcmFtZVByaXZhdGUuaWRsOgorCiAyMDA5LTA4LTA5ICBOaWtvbGFzIFpp
bW1lcm1hbm4gIDxuaWtvbGFzLnppbW1lcm1hbm5AdG9yY2htb2JpbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgpJbmRleDogV2ViS2l0L3dpbi9JbnRlcmZh
Y2VzL0lXZWJGcmFtZVByaXZhdGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vSW50ZXJm
YWNlcy9JV2ViRnJhbWVQcml2YXRlLmlkbAkocmV2aXNpb24gNDY5NjUpCisrKyBXZWJLaXQvd2lu
L0ludGVyZmFjZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcg
KzQzLDggQEAgdHlwZWRlZiBlbnVtIHsKICAgICBXZWJGcmFtZUxvYWRUeXBlU2FtZSwgICAgICAg
ICAgICAgICAvLyB1c2VyIGxvYWRzIHNhbWUgVVJMIGFnYWluIChidXQgbm90IHJlbG9hZCBidXR0
b24pCiAgICAgV2ViRnJhbWVMb2FkVHlwZVJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlz
dCwKICAgICBXZWJGcmFtZUxvYWRUeXBlUmVwbGFjZSwKLSAgICBXZWJGcmFtZUxvYWRUeXBlUmVs
b2FkRnJvbU9yaWdpbgorICAgIFdlYkZyYW1lTG9hZFR5cGVSZWxvYWRGcm9tT3JpZ2luLAorICAg
IFdlYkZyYW1lTG9hZFR5cGVCYWNrV01MRGVja05vdEFjY2Vzc2libGUKIH0gV2ViRnJhbWVMb2Fk
VHlwZTsKIAogWwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDY5NjQpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1NCBAQAorMjAwOS0wOC0wOSAgTmlrb2xh
cyBaaW1tZXJtYW5uICA8bmlrb2xhcy56aW1tZXJtYW5uQHRvcmNobW9iaWxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbV01MXSBEZWNrIGFj
Y2VzcyBjb250cm9sIGlzIGNvbXBsZXRseSBicm9rZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NzIxCisKKyAgICAgICAgQWRkIHNldmVyYWwgbmV3
IHRlc3RzIGNvdmVyaW5nIFdNTCBkZWNrLWFjY2VzcyBjb250cm9sLgorICAgICAgICBVcGRhdGUg
dmFyaWFibGUtcmVmZXJlbmNlLWludmFsaWQtY2hhcmFjdGVyLmh0bWwgcmVzdWx0LCBhcyBjb25z
b2xlIG1lc3NhZ2VzIGFyZW4ndCBkdW1wIHRvIHRoZSByZXN1bHRzIGFueW1vcmUuCisKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3dtbC9hY2Nlc3MtdGFyZ2V0LWRvbWFpbi1kZW55LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93bWwvYWNjZXNzLXRhcmdldC1kb21haW4t
ZGVueS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dtbC9hY2Nlc3MtdGFyZ2V0
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93bWwvYWNjZXNzLXRh
cmdldC1wYXRoLWRlbnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3dtbC9hY2Nlc3MtdGFyZ2V0LXBhdGgtZGVueS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3dtbC9hY2Nlc3MtdGFyZ2V0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvd21sL3Jlc291cmNlcy9hY2Nlc3MtdGFyZ2V0LWRvbWFpbi1kZW55LmpzOiBBZGRlZC4KKyAg
ICAgICAgKHNldHVwVGVzdERvY3VtZW50KToKKyAgICAgICAgKHByZXBhcmVUZXN0KToKKyAgICAg
ICAgKGV4ZWN1dGVUZXN0KToKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dtbC9yZXNvdXJjZXMvYWNj
ZXNzLXRhcmdldC1kb21haW4tZGVueS53bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
d21sL3Jlc291cmNlcy9hY2Nlc3MtdGFyZ2V0LXBhdGgtZGVueS5qczogQWRkZWQuCisgICAgICAg
IChzZXR1cFRlc3REb2N1bWVudCk6CisgICAgICAgIChwcmVwYXJlVGVzdCk6CisgICAgICAgIChl
eGVjdXRlVGVzdCk6CisgICAgICAgICogaHR0cC90ZXN0cy93bWwvcmVzb3VyY2VzL2FjY2Vzcy10
YXJnZXQtcGF0aC1kZW55LndtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93bWwvcmVz
b3VyY2VzL2FjY2Vzcy10YXJnZXQuanM6IEFkZGVkLgorICAgICAgICAoc2V0dXBUZXN0RG9jdW1l
bnQpOgorICAgICAgICAocHJlcGFyZVRlc3QpOgorICAgICAgICAoZXhlY3V0ZVRlc3QpOgorICAg
ICAgICAqIGh0dHAvdGVzdHMvd21sL3Jlc291cmNlcy9hY2Nlc3MtdGFyZ2V0LndtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy93bWwvcmVzb3VyY2VzL2xvY2tlZC1kZWNrLndtbDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93bWwvcmVzb3VyY2VzL3VucmVhY2hhYmxlLWRvbWFp
bi53bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd21sL3Jlc291cmNlcy91bnJlYWNo
YWJsZS1wYXRoLndtbDogQWRkZWQuCisgICAgICAgICogd21sL2FjY2Vzcy10YXJnZXQtZGVueS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdtbC9hY2Nlc3MtdGFyZ2V0LWRlbnkuaHRt
bDogQWRkZWQuCisgICAgICAgICogd21sL2FjY2Vzcy10YXJnZXQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiB3bWwvYWNjZXNzLXRhcmdldC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3
bWwvcmVzb3VyY2VzL2FjY2Vzcy10YXJnZXQtZGVueS5qczogQWRkZWQuCisgICAgICAgIChzZXR1
cFRlc3REb2N1bWVudCk6CisgICAgICAgIChwcmVwYXJlVGVzdCk6CisgICAgICAgIChleGVjdXRl
VGVzdCk6CisgICAgICAgICogd21sL3Jlc291cmNlcy9hY2Nlc3MtdGFyZ2V0LWRlbnkud21sOiBB
ZGRlZC4KKyAgICAgICAgKiB3bWwvcmVzb3VyY2VzL2FjY2Vzcy10YXJnZXQuanM6IEFkZGVkLgor
ICAgICAgICAoc2V0dXBUZXN0RG9jdW1lbnQpOgorICAgICAgICAocHJlcGFyZVRlc3QpOgorICAg
ICAgICAoZXhlY3V0ZVRlc3QpOgorICAgICAgICAqIHdtbC9yZXNvdXJjZXMvYWNjZXNzLXRhcmdl
dC53bWw6IEFkZGVkLgorICAgICAgICAqIHdtbC9yZXNvdXJjZXMvbG9ja2VkLWRlY2sud21sOiBB
ZGRlZC4KKyAgICAgICAgKiB3bWwvdmFyaWFibGUtcmVmZXJlbmNlLWludmFsaWQtY2hhcmFjdGVy
LWV4cGVjdGVkLnR4dDoKKwogMjAwOS0wOC0wOSAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bmlrb2xh
cy56aW1tZXJtYW5uQHRvcmNobW9iaWxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHZW9y
Z2UgU3RhaWtvcy4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd21sL2FjY2Vzcy10YXJn
ZXQtZG9tYWluLWRlbnktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvd21sL2FjY2Vzcy10YXJnZXQtZG9tYWluLWRlbnktZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93bWwvYWNjZXNzLXRhcmdldC1kb21h
aW4tZGVueS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkgQEAKK1dNTCBo
dHRwIG5hdmlnYXRpb24gbGF5b3V0IHRlc3RzIC0gdXNpbmcgWEhUTUwgc2NyaXB0aW5nCisKKwor
VGVzdHMgYWNjZXNzIGNvbnRyb2wgc3VwcG9ydAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
KworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCist
LS0tLS0tLQorU3RhcnQgdGVzdAorVGVzdCBmb3IgRGVjayBBY2Nlc3MgY29udHJvbCBpbiBXTUwu
CitJZiB0aGUgdGVzdCBwYXNzZXMsIHRoaXMgZGVjayB3aWxsIHJlbWFpbiB2aXNpYmxlCkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dtbC9hY2Nlc3MtdGFyZ2V0LWRvbWFpbi1kZW55Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93bWwvYWNjZXNzLXRhcmdl
dC1kb21haW4tZGVueS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93bWwvYWNjZXNzLXRhcmdldC1kb21haW4tZGVueS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDE1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0PnZhciByZWxhdGl2
ZVBhdGhUb0xheW91dFRlc3RzID0gIi4uLy4uLy4uIjs8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi93bWwvcmVzb3VyY2VzL1dNTFRlc3RDYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxoMT5XTUwgaHR0cCBuYXZpZ2F0aW9uIGxheW91dCB0ZXN0cyAt
IHVzaW5nIFhIVE1MIHNjcmlwdGluZzwvaDE+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9hY2Nlc3MtdGFy
Z2V0LWRvbWFpbi1kZW55LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd21sL2FjY2Vzcy10YXJnZXQtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd21sL2FjY2Vzcy10YXJnZXQtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93bWwvYWNjZXNz
LXRhcmdldC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTggQEAKK1dNTCBo
dHRwIG5hdmlnYXRpb24gbGF5b3V0IHRlc3RzIC0gdXNpbmcgWEhUTUwgc2NyaXB0aW5nCisKKwor
VGVzdHMgYWNjZXNzIGNvbnRyb2wgc3VwcG9ydAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
KworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCist
LS0tLS0tLQorVGVzdCBmb3IgRGVjayBBY2Nlc3MgY29udHJvbCBpbiBXTUwuCitUaGlzIGlzIHRo
ZSBsb2NrZWQgdGFyZ2V0IGRlY2ssIG9ubHkgJ2FjY2Vzcy10YXJnZXQud21sIiBjYW4gYWNjZXNz
IG1lCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dtbC9hY2Nlc3MtdGFyZ2V0LXBhdGgt
ZGVueS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
bWwvYWNjZXNzLXRhcmdldC1wYXRoLWRlbnktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93bWwvYWNjZXNzLXRhcmdldC1wYXRoLWRlbnktZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBACitXTUwgaHR0cCBuYXZpZ2F0aW9u
IGxheW91dCB0ZXN0cyAtIHVzaW5nIFhIVE1MIHNjcmlwdGluZworCisKK1Rlc3RzIGFjY2VzcyBj
b250cm9sIHN1cHBvcnQKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCisKKy0tLS0tLS0tCitG
cmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK1N0YXJ0
IHRlc3QKK1Rlc3QgZm9yIERlY2sgQWNjZXNzIGNvbnRyb2wgaW4gV01MLgorSWYgdGhlIHRlc3Qg
cGFzc2VzLCB0aGlzIGRlY2sgd2lsbCByZW1haW4gdmlzaWJsZQpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93bWwvYWNjZXNzLXRhcmdldC1wYXRoLWRlbnkuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dtbC9hY2Nlc3MtdGFyZ2V0LXBhdGgtZGVueS5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93bWwvYWNjZXNzLXRhcmdl
dC1wYXRoLWRlbnkuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdD52YXIgcmVsYXRpdmVQYXRoVG9MYXlvdXRUZXN0cyA9
ICIuLi8uLi8uLiI7PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vd21sL3Jlc291cmNl
cy9XTUxUZXN0Q2FzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
aDE+V01MIGh0dHAgbmF2aWdhdGlvbiBsYXlvdXQgdGVzdHMgLSB1c2luZyBYSFRNTCBzY3JpcHRp
bmc8L2gxPgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYWNjZXNzLXRhcmdldC1wYXRoLWRlbnkuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
bWwvYWNjZXNzLXRhcmdldC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvd21sL2FjY2Vzcy10YXJnZXQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvd21sL2FjY2Vzcy10YXJnZXQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
NSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0
bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdD52YXIgcmVsYXRpdmVQYXRo
VG9MYXlvdXRUZXN0cyA9ICIuLi8uLi8uLiI7PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vd21sL3Jlc291cmNlcy9XTUxUZXN0Q2FzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8aDE+V01MIGh0dHAgbmF2aWdhdGlvbiBsYXlvdXQgdGVzdHMgLSB1c2lu
ZyBYSFRNTCBzY3JpcHRpbmc8L2gxPgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYWNjZXNzLXRhcmdldC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dtbC9yZXNvdXJjZXMvYWNjZXNzLXRhcmdldC1kb21haW4tZGVueS5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dtbC9yZXNvdXJjZXMvYWNjZXNzLXRhcmdldC1k
b21haW4tZGVueS5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd21s
L3Jlc291cmNlcy9hY2Nlc3MtdGFyZ2V0LWRvbWFpbi1kZW55LmpzCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDIzIEBACisvLyBbTmFtZV0gYWNjZXNzLXRhcmdldC1kb21haW4tZGVueS5qcworCitj
cmVhdGVTdGF0aWNXTUxUZXN0Q2FzZSgiVGVzdHMgYWNjZXNzIGNvbnRyb2wgc3VwcG9ydCIsICJy
ZXNvdXJjZXMvYWNjZXNzLXRhcmdldC1kb21haW4tZGVueS53bWwiKTsKKworZnVuY3Rpb24gc2V0
dXBUZXN0RG9jdW1lbnQoKSB7CisgICAgLy8gbm8tb3AKK30KKworZnVuY3Rpb24gcHJlcGFyZVRl
c3QoKSB7CisgICAgdmFyIGxhc3RFcnJvciA9IGNvbnNvbGUubGFzdFdNTEVycm9yTWVzc2FnZSgp
OworICAgIGlmIChsYXN0RXJyb3IgPT0gIkRlY2sgbm90IGFjY2Vzc2libGUuIikgeworICAgICAg
ICBjb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN0YXJ0VGVz
dCgyNSwgMTUpOworfQorCitmdW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKKyAgICAvLyBuby1vcAor
fQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvd21sL3Jlc291cmNlcy9hY2Nlc3MtdGFyZ2V0LWRvbWFpbi1kZW55LndtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dtbC9yZXNvdXJjZXMvYWNjZXNzLXRh
cmdldC1kb21haW4tZGVueS53bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dtbC9yZXNvdXJjZXMvYWNjZXNzLXRhcmdldC1kb21haW4tZGVueS53bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8IURPQ1RZUEUgd21s
IFBVQkxJQyAiLS8vV0FQRk9SVU0vL0RURCBXTUwgMS4xLy9FTiIgImh0dHA6Ly93d3cud2FwZm9y
dW0ub3JnL0RURC93bWxfMS4xLnhtbCI+Cis8d21sPgorICAgIDxjYXJkPgorICAgICAgICA8YW5j
aG9yPlN0YXJ0IHRlc3Q8Z28gaHJlZj0idW5yZWFjaGFibGUtZG9tYWluLndtbCIvPjwvYW5jaG9y
PgorICAgICAgICA8cD5UZXN0IGZvciBEZWNrIEFjY2VzcyBjb250cm9sIGluIFdNTC48L3A+Cisg
ICAgICAgIDxwPklmIHRoZSB0ZXN0IHBhc3NlcywgdGhpcyBkZWNrIHdpbGwgcmVtYWluIHZpc2li
bGU8L3A+CisgICAgPC9jYXJkPgorPC93bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dtbC9yZXNvdXJjZXMvYWNjZXNzLXRhcmdldC1wYXRoLWRlbnkuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93bWwvcmVzb3VyY2VzL2FjY2Vzcy10YXJnZXQtcGF0aC1k
ZW55LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93bWwvcmVzb3Vy
Y2VzL2FjY2Vzcy10YXJnZXQtcGF0aC1kZW55LmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIz
IEBACisvLyBbTmFtZV0gYWNjZXNzLXRhcmdldC1wYXRoLWRlbnkuanMKKworY3JlYXRlU3RhdGlj
V01MVGVzdENhc2UoIlRlc3RzIGFjY2VzcyBjb250cm9sIHN1cHBvcnQiLCAicmVzb3VyY2VzL2Fj
Y2Vzcy10YXJnZXQtcGF0aC1kZW55LndtbCIpOworCitmdW5jdGlvbiBzZXR1cFRlc3REb2N1bWVu
dCgpIHsKKyAgICAvLyBuby1vcAorfQorCitmdW5jdGlvbiBwcmVwYXJlVGVzdCgpIHsKKyAgICB2
YXIgbGFzdEVycm9yID0gY29uc29sZS5sYXN0V01MRXJyb3JNZXNzYWdlKCk7CisgICAgaWYgKGxh
c3RFcnJvciA9PSAiRGVjayBub3QgYWNjZXNzaWJsZS4iKSB7CisgICAgICAgIGNvbXBsZXRlVGVz
dCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3RhcnRUZXN0KDI1LCAxNSk7Cit9
CisKK2Z1bmN0aW9uIGV4ZWN1dGVUZXN0KCkgeworICAgIC8vIG5vLW9wCit9CisKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93bWwv
cmVzb3VyY2VzL2FjY2Vzcy10YXJnZXQtcGF0aC1kZW55LndtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dtbC9yZXNvdXJjZXMvYWNjZXNzLXRhcmdldC1wYXRoLWRlbnku
d21sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93bWwvcmVzb3VyY2Vz
L2FjY2Vzcy10YXJnZXQtcGF0aC1kZW55LndtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5IEBA
Cis8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKzwhRE9DVFlQRSB3bWwgUFVCTElDICItLy9XQVBGT1JV
TS8vRFREIFdNTCAxLjEvL0VOIiAiaHR0cDovL3d3dy53YXBmb3J1bS5vcmcvRFREL3dtbF8xLjEu
eG1sIj4KKzx3bWw+CisgICAgPGNhcmQ+CisgICAgICAgIDxhbmNob3I+U3RhcnQgdGVzdDxnbyBo
cmVmPSJ1bnJlYWNoYWJsZS1wYXRoLndtbCIvPjwvYW5jaG9yPgorICAgICAgICA8cD5UZXN0IGZv
ciBEZWNrIEFjY2VzcyBjb250cm9sIGluIFdNTC48L3A+CisgICAgICAgIDxwPklmIHRoZSB0ZXN0
IHBhc3NlcywgdGhpcyBkZWNrIHdpbGwgcmVtYWluIHZpc2libGU8L3A+CisgICAgPC9jYXJkPgor
PC93bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dtbC9yZXNvdXJjZXMvYWNjZXNz
LXRhcmdldC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dtbC9yZXNv
dXJjZXMvYWNjZXNzLXRhcmdldC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvd21sL3Jlc291cmNlcy9hY2Nlc3MtdGFyZ2V0LmpzCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDE5IEBACisvLyBbTmFtZV0gYWNjZXNzLXRhcmdldC5qcworCitjcmVhdGVTdGF0aWNXTUxU
ZXN0Q2FzZSgiVGVzdHMgYWNjZXNzIGNvbnRyb2wgc3VwcG9ydCIsICJyZXNvdXJjZXMvYWNjZXNz
LXRhcmdldC53bWwiKTsKKworZnVuY3Rpb24gc2V0dXBUZXN0RG9jdW1lbnQoKSB7CisgICAgLy8g
bm8tb3AKK30KKworZnVuY3Rpb24gcHJlcGFyZVRlc3QoKSB7CisgICAgc3RhcnRUZXN0KDI1LCAx
NSk7Cit9CisKK2Z1bmN0aW9uIGV4ZWN1dGVUZXN0KCkgeworICAgIHZhciByZXN1bHRJbmRpY2F0
b3JFbGVtZW50ID0gdGVzdERvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHRJbmRpY2F0b3Ii
KTsKKyAgICBpZiAocmVzdWx0SW5kaWNhdG9yRWxlbWVudCkKKyAgICAgICAgY29tcGxldGVUZXN0
KCk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93bWwvcmVzb3VyY2VzL2FjY2Vzcy10YXJnZXQud21sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd21sL3Jlc291cmNlcy9hY2Nlc3MtdGFyZ2V0Lndt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd21sL3Jlc291cmNlcy9h
Y2Nlc3MtdGFyZ2V0LndtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJz
aW9uPSIxLjAiPz4KKzwhRE9DVFlQRSB3bWwgUFVCTElDICItLy9XQVBGT1JVTS8vRFREIFdNTCAx
LjEvL0VOIiAiaHR0cDovL3d3dy53YXBmb3J1bS5vcmcvRFREL3dtbF8xLjEueG1sIj4KKzx3bWw+
CisgICAgPGNhcmQ+CisgICAgICAgIDxhbmNob3I+U3RhcnQgdGVzdDxnbyBocmVmPSJsb2NrZWQt
ZGVjay53bWwiLz48L2FuY2hvcj4KKyAgICAgICAgPHA+VGVzdCBmb3IgRGVjayBBY2Nlc3MgY29u
dHJvbCBpbiBXTUwuPC9wPgorICAgICAgICA8cD5JZiB0aGUgdGVzdCBwYXNzZXMsIHRoaXMgZGVj
ayB3aWxsIGltbWVkaWF0ZWx5IGp1bXAgdG8gImxvY2tlZC1kZWNrLndtbCI8L3A+CisgICAgPC9j
YXJkPgorPC93bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dtbC9yZXNvdXJjZXMv
bG9ja2VkLWRlY2sud21sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd21s
L3Jlc291cmNlcy9sb2NrZWQtZGVjay53bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dtbC9yZXNvdXJjZXMvbG9ja2VkLWRlY2sud21sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDEzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKzwhRE9DVFlQRSB3bWwgUFVCTElD
ICItLy9XQVBGT1JVTS8vRFREIFdNTCAxLjEvL0VOIiAiaHR0cDovL3d3dy53YXBmb3J1bS5vcmcv
RFREL3dtbF8xLjEueG1sIj4KKzx3bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxhY2Nlc3MgZG9t
YWluPSIxMjcuMC4wLjEiIHBhdGg9ImFjY2Vzcy10YXJnZXQud21sIi8+CisgICAgPC9oZWFkPgor
CisgICAgPGNhcmQ+CisgICAgICAgIDxwPlRlc3QgZm9yIERlY2sgQWNjZXNzIGNvbnRyb2wgaW4g
V01MLjwvcD4KKyAgICAgICAgPHA+VGhpcyBpcyB0aGUgbG9ja2VkIHRhcmdldCBkZWNrLCBvbmx5
ICdhY2Nlc3MtdGFyZ2V0LndtbCIgY2FuIGFjY2VzcyBtZTwvcD4KKyAgICAgICAgPHAgaWQ9InJl
c3VsdEluZGljYXRvciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUiLz4KKyAgICA8L2NhcmQ+Cis8L3dt
bD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd21sL3Jlc291cmNlcy91bnJlYWNoYWJs
ZS1kb21haW4ud21sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd21sL3Jl
c291cmNlcy91bnJlYWNoYWJsZS1kb21haW4ud21sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93bWwvcmVzb3VyY2VzL3VucmVhY2hhYmxlLWRvbWFpbi53bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPCFET0NUWVBF
IHdtbCBQVUJMSUMgIi0vL1dBUEZPUlVNLy9EVEQgV01MIDEuMS8vRU4iICJodHRwOi8vd3d3Lndh
cGZvcnVtLm9yZy9EVEQvd21sXzEuMS54bWwiPgorPHdtbD4KKyAgICA8aGVhZD4KKyAgICAgICAg
PGFjY2VzcyBkb21haW49Im5vdGV4aXN0YW50LmNvbSIgcGF0aD0iL3dtbC9yZXNvdXJjZXMvYWNj
ZXNzLXRhcmdldC1kZW55LndtbCIvPgorICAgIDwvaGVhZD4KKworICAgIDxjYXJkPgorICAgICAg
ICA8cD5UZXN0IGZvciBEZWNrIEFjY2VzcyBjb250cm9sIGluIFdNTC48L3A+CisgICAgICAgIDxw
Pk9ubHkgd3d3Lm5vdGV4aXN0YW50LmNvbSB3b3VsZCBiZSBhbGxvd2VkIHRvIGFjY2VzcyB0aGlz
IGRlY2suIEl0J3MgdW5yZWFjaGFibGUgZnJvbSB0aGUgTGF5b3V0VGVzdHM8L3A+CisgICAgPC9j
YXJkPgorPC93bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dtbC9yZXNvdXJjZXMv
dW5yZWFjaGFibGUtcGF0aC53bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93bWwvcmVzb3VyY2VzL3VucmVhY2hhYmxlLXBhdGgud21sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93bWwvcmVzb3VyY2VzL3VucmVhY2hhYmxlLXBhdGgud21sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKzwhRE9D
VFlQRSB3bWwgUFVCTElDICItLy9XQVBGT1JVTS8vRFREIFdNTCAxLjEvL0VOIiAiaHR0cDovL3d3
dy53YXBmb3J1bS5vcmcvRFREL3dtbF8xLjEueG1sIj4KKzx3bWw+CisgICAgPGhlYWQ+CisgICAg
ICAgIDxhY2Nlc3MgZG9tYWluPSJsb2NhbGhvc3QiIHBhdGg9Ii9mYWlscy9yZXNvdXJjZXMvYWNj
ZXNzLXRhcmdldC1kZW55LndtbCIvPgorICAgIDwvaGVhZD4KKworICAgIDxjYXJkPgorICAgICAg
ICA8cD5UZXN0IGZvciBEZWNrIEFjY2VzcyBjb250cm9sIGluIFdNTC48L3A+CisgICAgICAgIDxw
Pk9ubHkgL2ZhaWxzL3Jlc291cmNlcy9hY2Nlc3MtdGFyZ2V0LWRlbnkud21sIHdvdWxkIGJlIGFs
bG93ZWQgdG8gYWNjZXNzIHRoaXMgZGVjay48L3A+CisgICAgPC9jYXJkPgorPC93bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy93bWwvYWNjZXNzLXRhcmdldC1kZW55LWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy93bWwvYWNjZXNzLXRhcmdldC1kZW55LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3dtbC9hY2Nlc3MtdGFyZ2V0LWRlbnktZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBACitXTUwgbGF5b3V0IHRlc3RzIC0g
dXNpbmcgWEhUTUwgc2NyaXB0aW5nCisKKworVGVzdHMgYWNjZXNzIGNvbnRyb2wgc3VwcG9ydAor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1l
UGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQorU3RhcnQgdGVzdAorVGVzdCBmb3Ig
RGVjayBBY2Nlc3MgY29udHJvbCBpbiBXTUwuCitJZiB0aGUgdGVzdCBwYXNzZXMsIHRoaXMgZGVj
ayB3aWxsIHJlbWFpbiB2aXNpYmxlCkluZGV4OiBMYXlvdXRUZXN0cy93bWwvYWNjZXNzLXRhcmdl
dC1kZW55Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvd21sL2FjY2Vzcy10YXJnZXQt
ZGVueS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvd21sL2FjY2Vzcy10YXJnZXQt
ZGVueS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyI+Cis8c2NyaXB0PnZhciByZWxhdGl2ZVBhdGhUb0xheW91dFRlc3RzID0gIi4uIjs8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvV01MVGVzdENhc2UuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGgxPldNTCBsYXlvdXQgdGVzdHMgLSB1c2luZyBYSFRNTCBzY3Jp
cHRpbmc8L2gxPgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYWNjZXNzLXRhcmdldC1kZW55LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3dtbC9hY2Nlc3MtdGFy
Z2V0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93bWwvYWNjZXNzLXRh
cmdldC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy93bWwvYWNjZXNz
LXRhcmdldC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTggQEAKK1dNTCBs
YXlvdXQgdGVzdHMgLSB1c2luZyBYSFRNTCBzY3JpcHRpbmcKKworCitUZXN0cyBhY2Nlc3MgY29u
dHJvbCBzdXBwb3J0CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCistLS0tLS0tLQorRnJh
bWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitUZXN0IGZv
ciBEZWNrIEFjY2VzcyBjb250cm9sIGluIFdNTC4KK1RoaXMgaXMgdGhlIGxvY2tlZCB0YXJnZXQg
ZGVjaywgb25seSAnYWNjZXNzLXRhcmdldC53bWwiIGNhbiBhY2Nlc3MgbWUKSW5kZXg6IExheW91
dFRlc3RzL3dtbC9hY2Nlc3MtdGFyZ2V0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
d21sL2FjY2Vzcy10YXJnZXQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3dtbC9h
Y2Nlc3MtdGFyZ2V0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIj4KKzxzY3JpcHQ+dmFyIHJlbGF0aXZlUGF0aFRvTGF5b3V0VGVzdHMgPSAiLi4i
Ozwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9XTUxUZXN0Q2FzZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aDE+V01MIGxheW91dCB0ZXN0cyAtIHVzaW5nIFhI
VE1MIHNjcmlwdGluZzwvaDE+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9hY2Nlc3MtdGFyZ2V0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3dtbC92YXJpYWJs
ZS1yZWZlcmVuY2UtaW52YWxpZC1jaGFyYWN0ZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3dtbC92YXJpYWJsZS1yZWZlcmVuY2UtaW52YWxpZC1jaGFyYWN0ZXItZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiA0Njk2NCkKKysrIExheW91dFRlc3RzL3dtbC92YXJpYWJsZS1y
ZWZlcmVuY2UtaW52YWxpZC1jaGFyYWN0ZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xLDkgKzEsMyBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IEEgdmFyaWFibGUgcmVmZXJl
bmNlIHVzZXMgaW52YWxpZCBzeW50YXguCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogQSB2YXJp
YWJsZSByZWZlcmVuY2UgdXNlcyBpbnZhbGlkIHN5bnRheC4KLUNPTlNPTEUgTUVTU0FHRTogbGlu
ZSAwOiBBIHZhcmlhYmxlIHJlZmVyZW5jZSB1c2VzIGludmFsaWQgc3ludGF4LgotQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDA6IEEgdmFyaWFibGUgcmVmZXJlbmNlIHVzZXMgaW52YWxpZCBzeW50YXgu
Ci1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogQSB2YXJpYWJsZSByZWZlcmVuY2UgdXNlcyBpbnZh
bGlkIHN5bnRheC4KLUNPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBBIHZhcmlhYmxlIHJlZmVyZW5j
ZSB1c2VzIGludmFsaWQgc3ludGF4LgogV01MIGxheW91dCB0ZXN0cyAtIHVzaW5nIFhIVE1MIHNj
cmlwdGluZwogCiAKSW5kZXg6IExheW91dFRlc3RzL3dtbC9yZXNvdXJjZXMvYWNjZXNzLXRhcmdl
dC1kZW55LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3dtbC9yZXNvdXJjZXMvYWNjZXNz
LXRhcmdldC1kZW55LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvd21sL3Jlc291cmNl
cy9hY2Nlc3MtdGFyZ2V0LWRlbnkuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjMgQEAKKy8v
IFtOYW1lXSBhY2Nlc3MtdGFyZ2V0LWRlbnkuanMKKworY3JlYXRlU3RhdGljV01MVGVzdENhc2Uo
IlRlc3RzIGFjY2VzcyBjb250cm9sIHN1cHBvcnQiLCAicmVzb3VyY2VzL2FjY2Vzcy10YXJnZXQt
ZGVueS53bWwiKTsKKworZnVuY3Rpb24gc2V0dXBUZXN0RG9jdW1lbnQoKSB7CisgICAgLy8gbm8t
b3AKK30KKworZnVuY3Rpb24gcHJlcGFyZVRlc3QoKSB7CisgICAgdmFyIGxhc3RFcnJvciA9IGNv
bnNvbGUubGFzdFdNTEVycm9yTWVzc2FnZSgpOworICAgIGlmIChsYXN0RXJyb3IgPT0gIkRlY2sg
bm90IGFjY2Vzc2libGUuIikgeworICAgICAgICBjb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIHN0YXJ0VGVzdCgyNSwgMTUpOworfQorCitmdW5jdGlvbiBleGVj
dXRlVGVzdCgpIHsKKyAgICAvLyBuby1vcAorfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL3dtbC9yZXNvdXJjZXMvYWNjZXNzLXRhcmdldC1kZW55
LndtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93bWwvcmVzb3VyY2VzL2FjY2Vzcy10YXJn
ZXQtZGVueS53bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy93bWwvcmVzb3VyY2VzL2Fj
Y2Vzcy10YXJnZXQtZGVueS53bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOSBAQAorPD94bWwg
dmVyc2lvbj0iMS4wIj8+Cis8IURPQ1RZUEUgd21sIFBVQkxJQyAiLS8vV0FQRk9SVU0vL0RURCBX
TUwgMS4xLy9FTiIgImh0dHA6Ly93d3cud2FwZm9ydW0ub3JnL0RURC93bWxfMS4xLnhtbCI+Cis8
d21sPgorICAgIDxjYXJkPgorICAgICAgICA8YW5jaG9yPlN0YXJ0IHRlc3Q8Z28gaHJlZj0ibG9j
a2VkLWRlY2sud21sIi8+PC9hbmNob3I+CisgICAgICAgIDxwPlRlc3QgZm9yIERlY2sgQWNjZXNz
IGNvbnRyb2wgaW4gV01MLjwvcD4KKyAgICAgICAgPHA+SWYgdGhlIHRlc3QgcGFzc2VzLCB0aGlz
IGRlY2sgd2lsbCByZW1haW4gdmlzaWJsZTwvcD4KKyAgICA8L2NhcmQ+Cis8L3dtbD4KSW5kZXg6
IExheW91dFRlc3RzL3dtbC9yZXNvdXJjZXMvYWNjZXNzLXRhcmdldC5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy93bWwvcmVzb3VyY2VzL2FjY2Vzcy10YXJnZXQuanMJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy93bWwvcmVzb3VyY2VzL2FjY2Vzcy10YXJnZXQuanMJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTkgQEAKKy8vIFtOYW1lXSBhY2Nlc3MtdGFyZ2V0LmpzCisKK2NyZWF0
ZVN0YXRpY1dNTFRlc3RDYXNlKCJUZXN0cyBhY2Nlc3MgY29udHJvbCBzdXBwb3J0IiwgInJlc291
cmNlcy9hY2Nlc3MtdGFyZ2V0LndtbCIpOworCitmdW5jdGlvbiBzZXR1cFRlc3REb2N1bWVudCgp
IHsKKyAgICAvLyBuby1vcAorfQorCitmdW5jdGlvbiBwcmVwYXJlVGVzdCgpIHsKKyAgICBzdGFy
dFRlc3QoMjUsIDE1KTsKK30KKworZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7CisgICAgdmFyIHJl
c3VsdEluZGljYXRvckVsZW1lbnQgPSB0ZXN0RG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3Vs
dEluZGljYXRvciIpOworICAgIGlmIChyZXN1bHRJbmRpY2F0b3JFbGVtZW50KQorICAgICAgICBj
b21wbGV0ZVRlc3QoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4
OiBMYXlvdXRUZXN0cy93bWwvcmVzb3VyY2VzL2FjY2Vzcy10YXJnZXQud21sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3dtbC9yZXNvdXJjZXMvYWNjZXNzLXRhcmdldC53bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy93bWwvcmVzb3VyY2VzL2FjY2Vzcy10YXJnZXQud21sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPCFET0NUWVBF
IHdtbCBQVUJMSUMgIi0vL1dBUEZPUlVNLy9EVEQgV01MIDEuMS8vRU4iICJodHRwOi8vd3d3Lndh
cGZvcnVtLm9yZy9EVEQvd21sXzEuMS54bWwiPgorPHdtbD4KKyAgICA8Y2FyZD4KKyAgICAgICAg
PGFuY2hvcj5TdGFydCB0ZXN0PGdvIGhyZWY9ImxvY2tlZC1kZWNrLndtbCIvPjwvYW5jaG9yPgor
ICAgICAgICA8cD5UZXN0IGZvciBEZWNrIEFjY2VzcyBjb250cm9sIGluIFdNTC48L3A+CisgICAg
ICAgIDxwPklmIHRoZSB0ZXN0IHBhc3NlcywgdGhpcyBkZWNrIHdpbGwgaW1tZWRpYXRlbHkganVt
cCB0byAibG9ja2VkLWRlY2sud21sIjwvcD4KKyAgICA8L2NhcmQ+Cis8L3dtbD4KSW5kZXg6IExh
eW91dFRlc3RzL3dtbC9yZXNvdXJjZXMvbG9ja2VkLWRlY2sud21sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3dtbC9yZXNvdXJjZXMvbG9ja2VkLWRlY2sud21sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvd21sL3Jlc291cmNlcy9sb2NrZWQtZGVjay53bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPCFET0NUWVBFIHdtbCBQVUJM
SUMgIi0vL1dBUEZPUlVNLy9EVEQgV01MIDEuMS8vRU4iICJodHRwOi8vd3d3LndhcGZvcnVtLm9y
Zy9EVEQvd21sXzEuMS54bWwiPgorPHdtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPGFjY2VzcyBk
b21haW49ImxvY2FsaG9zdCIgcGF0aD0iYWNjZXNzLXRhcmdldC53bWwiLz4KKyAgICA8L2hlYWQ+
CisKKyAgICA8Y2FyZD4KKyAgICAgICAgPHA+VGVzdCBmb3IgRGVjayBBY2Nlc3MgY29udHJvbCBp
biBXTUwuPC9wPgorICAgICAgICA8cD5UaGlzIGlzIHRoZSBsb2NrZWQgdGFyZ2V0IGRlY2ssIG9u
bHkgJ2FjY2Vzcy10YXJnZXQud21sIiBjYW4gYWNjZXNzIG1lPC9wPgorICAgICAgICA8cCBpZD0i
cmVzdWx0SW5kaWNhdG9yIiBzdHlsZT0iZGlzcGxheTogbm9uZSIvPgorICAgIDwvY2FyZD4KKzwv
d21sPg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34434</attachid>
            <date>2009-08-09 15:57:27 -0700</date>
            <delta_ts>2009-08-09 16:23:59 -0700</delta_ts>
            <desc>Updated patch - incorporating Georges comments</desc>
            <filename>bug-27721-20090810005721.patch</filename>
            <type>text/plain</type>
            <size>50145</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0Njk2NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjUgQEAKKzIwMDktMDgtMDkgIE5pa29sYXMgWmltbWVybWFubiAgPG5pa29sYXMu
emltbWVybWFubkB0b3JjaG1vYmlsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgW1dNTF0gRGVjayBhY2Nlc3MgY29udHJvbCBpcyBjb21wbGV0
bHkgYnJva2VuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNzcyMQorCisgICAgICAgIFJld3JpdGUgV01MIGRlY2sgYWNjZXNzIGNvbnRyb2wsIGFjdHVh
bGx5IHdvcmtzIG5vdyBzdGFuZGFsb25lIGFuZCB3aXRoaW4gTGF5b3V0VGVzdHMuCisgICAgICAg
IEFkZGVkIHNldmVyYWwgbmV3IGxheW91dCB0ZXN0cyBjb3ZlcmluZyBsb2NhbCAmIHJlbW90ZSBh
Y2Nlc3Mgc3VwcG9ydC4KKworICAgICAgICBJbiBvcmRlciB0byBkZXRlY3QgV01MIHRhc2sgZXhl
Y3V0aW9uIGZhaWx1cmVzIGZyb20gd2l0aGluIHRoZSBXTUwgbGF5b3V0IHRlc3RzIGEgbmV3Cisg
ICAgICAgIG1ldGhvZCBDb25zb2xlOjpsYXN0V01MRXJyb3JNZXNzYWdlKCkgaGFzIGJlZW4gYWRk
ZWQsIHJldHVybmluZyB0aGUgbGFzdCByZWNvcmRlZCBXTUwKKyAgICAgICAgZXJyb3IgbWVzc2Fn
ZS4gQ2hhbmdlIFdNTCBsb2cgbWVzc2FnZXMgdG8gZHVtcCB0byBJbnNwZWN0b3JDbGllbnQsIGp1
c3QgbGlrZSBpdCdzIGRvbmUKKyAgICAgICAgZm9yIEhUTUwgLSB3ZSB1c2VkIHRvIGJlaGF2ZSBs
aWtlIEpTTWVzc2FnZVNvdXJjZSwgd2hpY2ggaXMgd3JvbmcuCisKKyAgICAgICAgVGVzdHM6IGh0
dHAvdGVzdHMvd21sL2FjY2Vzcy10YXJnZXQtZG9tYWluLWRlbnkuaHRtbAorICAgICAgICAgICAg
ICAgaHR0cC90ZXN0cy93bWwvYWNjZXNzLXRhcmdldC1wYXRoLWRlbnkuaHRtbAorICAgICAgICAg
ICAgICAgaHR0cC90ZXN0cy93bWwvYWNjZXNzLXRhcmdldC5odG1sCisgICAgICAgICAgICAgICB3
bWwvYWNjZXNzLXRhcmdldC1kZW55Lmh0bWwKKyAgICAgICAgICAgICAgIHdtbC9hY2Nlc3MtdGFy
Z2V0Lmh0bWwKKworICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q29uc29sZU1lc3NhZ2U6OnNvdXJjZSk6IEFkZGVkIHB1YmxpYyBtZXRob2Qg
dG8gZmV0Y2ggdGhlIG1lc3NhZ2Ugc291cmNlIHR5cGUuCisgICAgICAgIChXZWJDb3JlOjpDb25z
b2xlTWVzc2FnZTo6bWVzc2FnZSk6IEFkZGVkIHB1YmxpYyBtZXRob2QgdG8gYWNjZXNzIHRoZSBl
cnJvciBtZXNzYWdlLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpjb25zb2xlTWVzc2FnZXMp
OiBBZGRlZCBmb3IgQ29uc29sZTo6bGFzdFdNTEVycm9yTWVzc2FnZSgpLCB0byBiZSBhYmxlIHRv
IGNyYXdsIHRocm91Z2ggdGhlIGxpc3Qgb2YgZHVtcGVkIG1lc3NhZ2VzLgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlci5jcHA6IFJlY29nbml6ZSAnRnJhbWVMb2FkVHlwZUJhY2tXTUxEZWNr
Tm90QWNjZXNzaWJsZScsIGFsbCBndWFyZGVkIGJ5IEVOQUJMRShXTUwpLgorICAgICAgICAoV2Vi
Q29yZTo6aXNCYWNrRm9yd2FyZExvYWRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpyZXN0b3JlRG9jdW1lbnRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6dHJhbnNpdGlvblRvQ29tbWl0dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Ojpsb2FkSXRlbSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Oik6IEFkZCBuZXcgbG9hZCB0eXBlICdGcmFtZUxvYWRUeXBlQmFja1dNTERl
Y2tOb3RBY2Nlc3NpYmxlJywgYmVoYXZpbmcgbGlrZSBGcmFtZUxvYWRUeXBlQmFjayBwbHVzIFdN
TCBzcGVjaWZpYyBpbmZvcm1hdGlvbi4KKyAgICAgICAgKiBwYWdlL0NvbnNvbGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29uc29sZTo6YWRkTWVzc2FnZSk6IERvbid0IGR1bXAgV01MIG1lc3Nh
Z2VzIHVzaW5nIENocm9tZUNsaWVudCAoYXMgaXQncyBkb25lIGZvciBKU01lc3NhZ2VTb3VyY2Up
LCBidXQgZ28gdGhyb3VnaCBJbnNwZWN0b3JDb250cm9sbGVyLgorICAgICAgICAoV2ViQ29yZTo6
Q29uc29sZTo6bGFzdFdNTEVycm9yTWVzc2FnZSk6IENyYXdsIEluc3BlY3RvckNvbnRyb2xsZXI6
OmNvbnNvbGVNc3NhZ2VzKCkgdG8gbG9vayB1cCB0aGUgbGFzdCBXTUwgZXJyb3IgbWVzc2FnZSwg
aWYgcHJlc2VudC4KKyAgICAgICAgKiBwYWdlL0NvbnNvbGUuaDoKKyAgICAgICAgKiBwYWdlL0Nv
bnNvbGUuaWRsOiBBZGQgIltEb250RW51bV0gRE9NU3RyaW5nIGxhc3RXTUxFcnJvck1lc3NhZ2Uo
KSIuCisgICAgICAgICogd21sL1dNTEFjY2Vzc0VsZW1lbnQuY3BwOiBTdG9yZSBwYXRoL2RvbWFp
biBhcyBtZW1iZXIgdmFyaWFibGVzIGFuZCBwYXNzIHRoZW0gdG8gV01MUGFnZVN0YXRlIG9uY2Ug
aW4gaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKS4KKyAgICAgICAgKFdlYkNvcmU6OldNTEFjY2Vzc0Vs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldNTEFjY2Vz
c0VsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KToKKyAgICAgICAgKiB3bWwvV01MQWNjZXNz
RWxlbWVudC5oOgorICAgICAgICAqIHdtbC9XTUxDYXJkRWxlbWVudC5jcHA6IEhhbmRsZSAnRnJh
bWVMb2FkVHlwZUJhY2tXTUxEZWNrTm90QWNjZXNzaWJsZScgYXMgZGVjay1lbnRyeSBtZXRob2Qu
IFJlcG9ydCBXTUwgZXJyb3IgaW4gY3VycmVudCBkZWNrLgorICAgICAgICAoV2ViQ29yZTo6V01M
Q2FyZEVsZW1lbnQ6OmhhbmRsZUludHJpbnNpY0V2ZW50SWZOZWVkZWQpOgorICAgICAgICAqIHdt
bC9XTUxEb2N1bWVudC5jcHA6IEVuYWJsZSBkZWNrLWFjY2VzcyBjb250cm9sIGluIGZpbmlzaGVk
UGFyc2luZy4gVGFrZSBjYXJlIG9mIG1ldGhvZCBuYW1lIGNoYW5nZXMgaW4gV01MUGFnZVN0YXRl
LgorICAgICAgICAoV2ViQ29yZTo6V01MRG9jdW1lbnQ6OmZpbmlzaGVkUGFyc2luZyk6CisgICAg
ICAgIChXZWJDb3JlOjpXTUxEb2N1bWVudDo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogd21sL1dN
TEVycm9ySGFuZGxpbmcuY3BwOiBOZXZlciByZXBvcnQgJ1dNTEVycm9yRGVja05vdEFjY2Vzc2li
bGUnIG1lc3NhZ2VzIHRocm91Z2ggdGhlIHRva2VuaXplciwgdGhhdCB3b3VsZCBhbHRlciB0aGUg
cGFnZSBpbnRvIGVycm9yIHN0YXRlLgorICAgICAgICAoV2ViQ29yZTo6cmVwb3J0V01MRXJyb3Ip
OgorICAgICAgICAqIHdtbC9XTUxQYWdlU3RhdGUuY3BwOiBDb21wbGV0bHkgcmV3cm90ZSBhY2Nl
c3MgcGF0aC9kb21haW4gcGFyc2luZyAmIGRlY2stYWNjZXNzIGNvbnRyb2wsIHN0cmljdGx5IGZv
bGxvd2luZyB0aGUgV01MIHNwZWMuIEFsbCBjb3ZlcmVkIGJ5IHRlc3RzLgorICAgICAgICAoV2Vi
Q29yZTo6V01MUGFnZVN0YXRlOjpXTUxQYWdlU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6bm9y
bWFsaXplZEhvc3ROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Omhvc3RGcm9tVVJMKToKKyAgICAg
ICAgKFdlYkNvcmU6OnVybEZvckhpc3RvcnlJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OnRyeUFj
Y2Vzc0hpc3RvcnlVUkxzKToKKyAgICAgICAgKFdlYkNvcmU6OldNTFBhZ2VTdGF0ZTo6cHJvY2Vz
c0FjY2Vzc0NvbnRyb2xEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldNTFBhZ2VTdGF0ZTo6cmVz
ZXRBY2Nlc3NDb250cm9sRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXTUxQYWdlU3RhdGU6OmNh
bkFjY2Vzc0RlY2spOgorICAgICAgICAoV2ViQ29yZTo6V01MUGFnZVN0YXRlOjpob3N0SXNBbGxv
d2VkVG9BY2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6V01MUGFnZVN0YXRlOjpwYXRoSXNBbGxv
d2VkVG9BY2Nlc3MpOgorICAgICAgICAqIHdtbC9XTUxQYWdlU3RhdGUuaDoKKwogMjAwOS0wOC0w
OSAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bmlrb2xhcy56aW1tZXJtYW5uQHRvcmNobW9iaWxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWogU3RhY2hvd2lhay4KSW5kZXg6IFdlYkNv
cmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNw
ZWN0b3IvQ29uc29sZU1lc3NhZ2UuaAkocmV2aXNpb24gNDY5NjQpCisrKyBXZWJDb3JlL2luc3Bl
Y3Rvci9Db25zb2xlTWVzc2FnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBpbmNyZW1lbnRDb3VudCgpIHsgKyttX3Jl
cGVhdENvdW50OyB9OwogICAgICAgICBib29sIGlzRXF1YWwoU2NyaXB0U3RhdGUqLCBDb25zb2xl
TWVzc2FnZSogbXNnKSBjb25zdDsKIAorICAgICAgICBNZXNzYWdlU291cmNlIHNvdXJjZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc291cmNlOyB9CisgICAgICAgIGNvbnN0IFN0cmluZyYgbWVzc2FnZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZTsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgTWVz
c2FnZVNvdXJjZSBtX3NvdXJjZTsKICAgICAgICAgTWVzc2FnZVR5cGUgbV90eXBlOwpJbmRleDog
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAkocmV2aXNpb24gNDY5NjQpCisr
KyBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE4Myw2ICsxODMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xl
KE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIFNjcmlwdENhbGxTdGFj
ayopOwogICAgIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdl
VHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlSUQpOwogICAgIHZvaWQgY2xlYXJDb25zb2xlTWVz
c2FnZXMoKTsKKyAgICBjb25zdCBWZWN0b3I8Q29uc29sZU1lc3NhZ2UqPiYgY29uc29sZU1lc3Nh
Z2VzKCkgY29uc3QgeyByZXR1cm4gbV9jb25zb2xlTWVzc2FnZXM7IH0KIAogICAgIHZvaWQgYXR0
YWNoV2luZG93KCk7CiAgICAgdm9pZCBkZXRhY2hXaW5kb3coKTsKSW5kZXg6IFdlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAJKHJldmlzaW9uIDQ2OTY0KQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTAsNiArMjEwLDkgQEAgYm9vbCBpc0JhY2tGb3J3YXJk
TG9hZFR5cGUoRnJhbWVMb2FkVHlwZQogICAgICAgICBjYXNlIEZyYW1lTG9hZFR5cGVSZXBsYWNl
OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBjYXNlIEZyYW1lTG9hZFR5cGVC
YWNrOgorI2lmIEVOQUJMRShXTUwpCisgICAgICAgIGNhc2UgRnJhbWVMb2FkVHlwZUJhY2tXTUxE
ZWNrTm90QWNjZXNzaWJsZToKKyNlbmRpZgogICAgICAgICBjYXNlIEZyYW1lTG9hZFR5cGVGb3J3
YXJkOgogICAgICAgICBjYXNlIEZyYW1lTG9hZFR5cGVJbmRleGVkQmFja0ZvcndhcmQ6CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExNjEsNiArMTE2NCw5IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OnJlc3RvcmVEb2N1bWVudFN0YXRlKCkKICAgICAgICAgY2FzZSBGcmFtZUxvYWRUeXBlUmVw
bGFjZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEZyYW1lTG9hZFR5cGVCYWNr
OgorI2lmIEVOQUJMRShXTUwpCisgICAgICAgIGNhc2UgRnJhbWVMb2FkVHlwZUJhY2tXTUxEZWNr
Tm90QWNjZXNzaWJsZToKKyNlbmRpZgogICAgICAgICBjYXNlIEZyYW1lTG9hZFR5cGVGb3J3YXJk
OgogICAgICAgICBjYXNlIEZyYW1lTG9hZFR5cGVJbmRleGVkQmFja0ZvcndhcmQ6CiAgICAgICAg
IGNhc2UgRnJhbWVMb2FkVHlwZVJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdDoKQEAg
LTI5MDYsNiArMjkxMiw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnRyYW5zaXRpb25Ub0NvbW1pdHRl
ZCgKICAgICBzd2l0Y2ggKG1fbG9hZFR5cGUpIHsKICAgICAgICAgY2FzZSBGcmFtZUxvYWRUeXBl
Rm9yd2FyZDoKICAgICAgICAgY2FzZSBGcmFtZUxvYWRUeXBlQmFjazoKKyNpZiBFTkFCTEUoV01M
KQorICAgICAgICBjYXNlIEZyYW1lTG9hZFR5cGVCYWNrV01MRGVja05vdEFjY2Vzc2libGU6Cisj
ZW5kaWYKICAgICAgICAgY2FzZSBGcmFtZUxvYWRUeXBlSW5kZXhlZEJhY2tGb3J3YXJkOgogICAg
ICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCiAgICAgICAgICAgICAg
ICAgaWYgKHBhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpKSB7CkBAIC00NTQzLDYgKzQ1NTIsOSBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpsb2FkSXRlbShIaXN0b3J5SXRlbSogCiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0LnNldENhY2hlUG9saWN5KFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNl
IEZyYW1lTG9hZFR5cGVCYWNrOgorI2lmIEVOQUJMRShXTUwpCisgICAgICAgICAgICAgICAgICAg
IGNhc2UgRnJhbWVMb2FkVHlwZUJhY2tXTUxEZWNrTm90QWNjZXNzaWJsZToKKyNlbmRpZgogICAg
ICAgICAgICAgICAgICAgICBjYXNlIEZyYW1lTG9hZFR5cGVGb3J3YXJkOgogICAgICAgICAgICAg
ICAgICAgICBjYXNlIEZyYW1lTG9hZFR5cGVJbmRleGVkQmFja0ZvcndhcmQ6CiAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoaXRlbVVSTC5wcm90b2NvbCgpICE9ICJodHRwcyIpCkluZGV4OiBX
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCShyZXZpc2lvbiA0Njk2NSkKKysrIFdlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEZyYW1lTG9hZFR5cGVTYW1lID0gRnJhbWVMb2Fk
VHlwZVJlbG9hZCArIDIsIC8vIHVzZXIgbG9hZHMgc2FtZSBVUkwgYWdhaW4gKGJ1dCBub3QgcmVs
b2FkIGJ1dHRvbikKICAgICAgICAgRnJhbWVMb2FkVHlwZVJlZGlyZWN0V2l0aExvY2tlZEJhY2tG
b3J3YXJkTGlzdCwgLy8gRklYTUU6IE1lcmdlICJsb2NrQmFja0ZvcndhcmRMaXN0IiwgImxvY2tI
aXN0b3J5IiwgInF1aWNrUmVkaXJlY3QiIGFuZCAiY2xpZW50UmVkaXJlY3QiIGludG8gYSBzaW5n
bGUgY29uY2VwdCBvZiByZWRpcmVjdC4KICAgICAgICAgRnJhbWVMb2FkVHlwZVJlcGxhY2UsCi0g
ICAgICAgIEZyYW1lTG9hZFR5cGVSZWxvYWRGcm9tT3JpZ2luCisgICAgICAgIEZyYW1lTG9hZFR5
cGVSZWxvYWRGcm9tT3JpZ2luLAorICAgICAgICBGcmFtZUxvYWRUeXBlQmFja1dNTERlY2tOb3RB
Y2Nlc3NpYmxlCiAgICAgfTsKIAogICAgIGVudW0gTmF2aWdhdGlvblR5cGUgewpJbmRleDogV2Vi
Q29yZS9wYWdlL0NvbnNvbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Db25zb2xl
LmNwcAkocmV2aXNpb24gNDY5NjQpCisrKyBXZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkNTdHJpbmcuaCIKICNpbmNs
dWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJDb25zb2xlTWVzc2FnZS5oIgogI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZVRy
ZWUuaCIKQEAgLTE0Myw3ICsxNDQsNyBAQCB2b2lkIENvbnNvbGU6OmFkZE1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZSBzCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoc291
cmNlID09IEpTTWVzc2FnZVNvdXJjZSB8fCBzb3VyY2UgPT0gV01MTWVzc2FnZVNvdXJjZSkKKyAg
ICBpZiAoc291cmNlID09IEpTTWVzc2FnZVNvdXJjZSkKICAgICAgICAgcGFnZS0+Y2hyb21lKCkt
PmNsaWVudCgpLT5hZGRNZXNzYWdlVG9Db25zb2xlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3Nh
Z2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiAKICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9s
bGVyKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwg
bGluZU51bWJlciwgc291cmNlVVJMKTsKQEAgLTI1OCw2ICsyNTksMzIgQEAgdm9pZCBDb25zb2xl
Ojpjb3VudChTY3JpcHRDYWxsU3RhY2sqIGNhbAogICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS0+Y291bnQodGl0bGUsIGxhc3RDYWxsZXIubGluZU51bWJlcigpLCBsYXN0Q2FsbGVyLnNv
dXJjZVVSTCgpLnN0cmluZygpKTsKIH0KIAorI2lmIEVOQUJMRShXTUwpCitTdHJpbmcgQ29uc29s
ZTo6bGFzdFdNTEVycm9yTWVzc2FnZSgpIGNvbnN0Cit7CisgICAgUGFnZSogcGFnZSA9IHRoaXMt
PnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAg
IGNvbnN0IFZlY3RvcjxDb25zb2xlTWVzc2FnZSo+JiBjb25zb2xlTWVzc2FnZXMgPSBwYWdlLT5p
bnNwZWN0b3JDb250cm9sbGVyKCktPmNvbnNvbGVNZXNzYWdlcygpOworICAgIGlmIChjb25zb2xl
TWVzc2FnZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBWZWN0
b3I8Q29uc29sZU1lc3NhZ2UqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjb25zb2xlTWVzc2FnZXMu
YmVnaW4oKTsKKyAgICBjb25zdCBWZWN0b3I8Q29uc29sZU1lc3NhZ2UqPjo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gY29uc29sZU1lc3NhZ2VzLmVuZCgpOworCisgICAgZm9yICg7IGl0ICE9IGVuZDsg
KytpdCkgeworICAgICAgICBDb25zb2xlTWVzc2FnZSogbWVzc2FnZSA9ICppdDsKKyAgICAgICAg
aWYgKG1lc3NhZ2UtPnNvdXJjZSgpICE9IFdNTE1lc3NhZ2VTb3VyY2UpCisgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICByZXR1cm4gbWVzc2FnZS0+bWVzc2FnZSgpOworICAgIH0KKwor
ICAgIHJldHVybiBTdHJpbmcoKTsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRf
REVCVUdHRVIpCiAKIHZvaWQgQ29uc29sZTo6cHJvZmlsZShjb25zdCBKU0M6OlVTdHJpbmcmIHRp
dGxlLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKSW5kZXg6IFdlYkNvcmUvcGFnZS9Db25z
b2xlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0NvbnNvbGUuaAkocmV2aXNpb24gNDY5
NjQpCisrKyBXZWJDb3JlL3BhZ2UvQ29uc29sZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5
Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCB0cmFjZShTY3JpcHRDYWxs
U3RhY2sqKTsKICAgICAgICAgdm9pZCBhc3NlcnRDb25kaXRpb24oYm9vbCBjb25kaXRpb24sIFNj
cmlwdENhbGxTdGFjayopOwogICAgICAgICB2b2lkIGNvdW50KFNjcmlwdENhbGxTdGFjayopOwor
I2lmIEVOQUJMRShXTUwpCisgICAgICAgIFN0cmluZyBsYXN0V01MRXJyb3JNZXNzYWdlKCkgY29u
c3Q7CisjZW5kaWYKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICAgICAgdm9p
ZCBwcm9maWxlKGNvbnN0IEpTQzo6VVN0cmluZyYsIFNjcmlwdENhbGxTdGFjayopOwogICAgICAg
ICB2b2lkIHByb2ZpbGVFbmQoY29uc3QgSlNDOjpVU3RyaW5nJiwgU2NyaXB0Q2FsbFN0YWNrKik7
CkluZGV4OiBXZWJDb3JlL3BhZ2UvQ29uc29sZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
YWdlL0NvbnNvbGUuaWRsCShyZXZpc2lvbiA0Njk2NCkKKysrIFdlYkNvcmUvcGFnZS9Db25zb2xl
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsMTAgQEAgbW9kdWxlIHdpbmRvdyB7CiAg
ICAgICAgIFtDdXN0b21Bcmd1bWVudEhhbmRsaW5nLCBJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uPWFz
c2VydENvbmRpdGlvbl0gdm9pZCBhc3NlcnQoaW4gYm9vbGVhbiBjb25kaXRpb24pOwogICAgICAg
ICBbQ3VzdG9tQXJndW1lbnRIYW5kbGluZ10gdm9pZCBjb3VudCgpOwogCisjaWYgZGVmaW5lZChF
TkFCTEVfV01MKSAmJiBFTkFCTEVfV01MCisgICAgICAgIFtEb250RW51bV0gRE9NU3RyaW5nIGxh
c3RXTUxFcnJvck1lc3NhZ2UoKTsKKyNlbmRpZgorCiAjaWYgZGVmaW5lZChFTkFCTEVfSkFWQVND
UklQVF9ERUJVR0dFUikgJiYgRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIKICAgICAgICAgW0N1
c3RvbUFyZ3VtZW50SGFuZGxpbmddIHZvaWQgcHJvZmlsZShpbiBbQ29udmVydFVuZGVmaW5lZE9y
TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIHRpdGxlKTsKICAgICAgICAgW0N1c3RvbUFyZ3Vt
ZW50SGFuZGxpbmddIHZvaWQgcHJvZmlsZUVuZChpbiBbQ29udmVydFVuZGVmaW5lZE9yTnVsbFRv
TnVsbFN0cmluZ10gRE9NU3RyaW5nIHRpdGxlKTsKSW5kZXg6IFdlYkNvcmUvd21sL1dNTEFjY2Vz
c0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd21sL1dNTEFjY2Vzc0VsZW1lbnQu
Y3BwCShyZXZpc2lvbiA0Njk2NCkKKysrIFdlYkNvcmUvd21sL1dNTEFjY2Vzc0VsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MywxNiArNDMsMTQgQEAgdm9pZCBXTUxBY2Nlc3NFbGVtZW50
OjpwYXJzZU1hcHBlZEF0dHJpYgogICAgICAgICBTdHJpbmcgdmFsdWUgPSBwYXJzZVZhbHVlRm9y
YmlkZGluZ1ZhcmlhYmxlUmVmZXJlbmNlcyhhdHRyLT52YWx1ZSgpKTsKICAgICAgICAgaWYgKHZh
bHVlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIAotICAgICAg
ICBpZiAoV01MUGFnZVN0YXRlKiBwYWdlU3RhdGUgPSB3bWxQYWdlU3RhdGVGb3JEb2N1bWVudChk
b2N1bWVudCgpKSkKLSAgICAgICAgICAgIHBhZ2VTdGF0ZS0+cmVzdHJpY3REZWNrQWNjZXNzVG9E
b21haW4odmFsdWUpOworCisgICAgICAgIG1fZG9tYWluID0gdmFsdWU7CiAgICAgfSBlbHNlIGlm
IChhdHRyLT5uYW1lKCkgPT0gcGF0aEF0dHIpIHsKICAgICAgICAgU3RyaW5nIHZhbHVlID0gcGFy
c2VWYWx1ZUZvcmJpZGRpbmdWYXJpYWJsZVJlZmVyZW5jZXMoYXR0ci0+dmFsdWUoKSk7CiAgICAg
ICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
aWYgKFdNTFBhZ2VTdGF0ZSogcGFnZVN0YXRlID0gd21sUGFnZVN0YXRlRm9yRG9jdW1lbnQoZG9j
dW1lbnQoKSkpCi0gICAgICAgICAgICBwYWdlU3RhdGUtPnJlc3RyaWN0RGVja0FjY2Vzc1RvUGF0
aCh2YWx1ZSk7CisgICAgICAgIG1fcGF0aCA9IHZhbHVlOwogICAgIH0gZWxzZQogICAgICAgICBX
TUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KQEAgLTYyLDggKzYwLDEx
IEBAIHZvaWQgV01MQWNjZXNzRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW0KICAgICBXTUxFbGVt
ZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOwogCiAgICAgV01MUGFnZVN0YXRlKiBwYWdlU3Rh
dGUgPSB3bWxQYWdlU3RhdGVGb3JEb2N1bWVudChkb2N1bWVudCgpKTsKLSAgICBpZiAocGFnZVN0
YXRlICYmICFwYWdlU3RhdGUtPnNldE5lZWRDaGVja0RlY2tBY2Nlc3ModHJ1ZSkpCi0gICAgICAg
IHJlcG9ydFdNTEVycm9yKGRvY3VtZW50KCksIFdNTEVycm9yTXVsdGlwbGVBY2Nlc3NFbGVtZW50
cyk7CisgICAgaWYgKCFwYWdlU3RhdGUgfHwgcGFnZVN0YXRlLT5wcm9jZXNzQWNjZXNzQ29udHJv
bERhdGEobV9kb21haW4sIG1fcGF0aCkpCisgICAgICAgIHJldHVybjsKKworICAgIHBhZ2VTdGF0
ZS0+cmVzZXRBY2Nlc3NDb250cm9sRGF0YSgpOworICAgIHJlcG9ydFdNTEVycm9yKGRvY3VtZW50
KCksIFdNTEVycm9yTXVsdGlwbGVBY2Nlc3NFbGVtZW50cyk7CiB9CiAKIH0KSW5kZXg6IFdlYkNv
cmUvd21sL1dNTEFjY2Vzc0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dtbC9XTUxB
Y2Nlc3NFbGVtZW50LmgJKHJldmlzaW9uIDQ2OTY0KQorKysgV2ViQ29yZS93bWwvV01MQWNjZXNz
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiwxMCBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CiAg
ICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7CisKK3ByaXZhdGU6CisgICAg
U3RyaW5nIG1fZG9tYWluOworICAgIFN0cmluZyBtX3BhdGg7CiB9OwogCiB9CkluZGV4OiBXZWJD
b3JlL3dtbC9XTUxDYXJkRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93bWwvV01M
Q2FyZEVsZW1lbnQuY3BwCShyZXZpc2lvbiA0Njk2NCkKKysrIFdlYkNvcmUvd21sL1dNTENhcmRF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDYgKzE0Miw5IEBAIHZvaWQgV01MQ2Fy
ZEVsZW1lbnQ6OmhhbmRsZUludHJpbnNpY0V2ZW4KICAgICBjYXNlIEZyYW1lTG9hZFR5cGVCYWNr
OgogICAgICAgICBldmVudFR5cGUgPSBXTUxJbnRyaW5zaWNFdmVudE9uRW50ZXJCYWNrd2FyZDsK
ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGcmFtZUxvYWRUeXBlQmFja1dNTERlY2tOb3RBY2Nl
c3NpYmxlOgorICAgICAgICByZXBvcnRXTUxFcnJvcihkb2N1bWVudCgpLCBXTUxFcnJvckRlY2tO
b3RBY2Nlc3NpYmxlKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGV2
ZW50VHlwZSA9IFdNTEludHJpbnNpY0V2ZW50T25FbnRlckZvcndhcmQ7CiAgICAgICAgIGJyZWFr
OwpJbmRleDogV2ViQ29yZS93bWwvV01MRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvd21sL1dNTERvY3VtZW50LmNwcAkocmV2aXNpb24gNDY5NjQpCisrKyBXZWJDb3JlL3dtbC9X
TUxEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDggKzU5LDYgQEAgdm9pZCBXTUxE
b2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKCkKICAgICBpZiAoIWhhc0FjY2VzcykgewogICAgICAg
ICBtX2FjdGl2ZUNhcmQgPSAwOwogCi0gICAgICAgIC8vIEZJWE1FOiBDb21tZW50IGluIHRoaXMg
Y29kZSBvbmNlIHRoZSBkZWNrLWFjY2VzcyBjb250cm9sIHBhdGNoIGxhbmRlZC4KLSNpZiAwCiAg
ICAgICAgIFdNTFBhZ2VTdGF0ZSogd21sUGFnZVN0YXRlID0gd21sUGFnZVN0YXRlRm9yRG9jdW1l
bnQodGhpcyk7CiAgICAgICAgIGlmICghd21sUGFnZVN0YXRlKQogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtNzksNyArNzcsNiBAQCB2b2lkIFdNTERvY3VtZW50OjpmaW5pc2hlZFBhcnNpbmcoKQog
CiAgICAgICAgIHBhZ2UtPmdvVG9JdGVtKGl0ZW0sIEZyYW1lTG9hZFR5cGVCYWNrV01MRGVja05v
dEFjY2Vzc2libGUpOwogICAgICAgICByZXR1cm47Ci0jZW5kaWYKICAgICB9CiAKICAgICBpZiAo
bV9hY3RpdmVDYXJkKSB7CkBAIC05MSwxMSArODgsMTEgQEAgdm9pZCBXTUxEb2N1bWVudDo6Zmlu
aXNoZWRQYXJzaW5nKCkKIGJvb2wgV01MRG9jdW1lbnQ6OmluaXRpYWxpemUoYm9vbCBhYm91dFRv
RmluaXNoUGFyc2luZykKIHsKICAgICBXTUxQYWdlU3RhdGUqIHdtbFBhZ2VTdGF0ZSA9IHdtbFBh
Z2VTdGF0ZUZvckRvY3VtZW50KHRoaXMpOwotICAgIGlmICghd21sUGFnZVN0YXRlIHx8ICF3bWxQ
YWdlU3RhdGUtPmlzRGVja0FjY2Vzc2libGUoKSkKKyAgICBpZiAoIXdtbFBhZ2VTdGF0ZSB8fCAh
d21sUGFnZVN0YXRlLT5jYW5BY2Nlc3NEZWNrKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAK
KwogICAgIC8vIFJlbWVtYmVyIHRoYXQgd2UnZSBzdWNjZXNzZnVsbHkgZW50ZXJlZCB0aGUgZGVj
awotICAgIHdtbFBhZ2VTdGF0ZS0+c2V0TmVlZENoZWNrRGVja0FjY2VzcyhmYWxzZSk7CisgICAg
d21sUGFnZVN0YXRlLT5yZXNldEFjY2Vzc0NvbnRyb2xEYXRhKCk7CiAKICAgICAvLyBOb3RpZnkg
dGhlIGV4aXN0YW5jZSBvZiB0ZW1wbGF0ZXMgdG8gYWxsIGNhcmRzIG9mIHRoZSBjdXJyZW50IGRl
Y2sKICAgICBXTUxUZW1wbGF0ZUVsZW1lbnQ6OnJlZ2lzdGVyVGVtcGxhdGVzSW5Eb2N1bWVudCh0
aGlzKTsKSW5kZXg6IFdlYkNvcmUvd21sL1dNTEVycm9ySGFuZGxpbmcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvd21sL1dNTEVycm9ySGFuZGxpbmcuY3BwCShyZXZpc2lvbiA0Njk2NCkKKysr
IFdlYkNvcmUvd21sL1dNTEVycm9ySGFuZGxpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3
ICszOCw4IEBAIHZvaWQgcmVwb3J0V01MRXJyb3IoRG9jdW1lbnQqIGRvYywgV01MRXIKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZUZvckVy
cm9yQ29kZShlcnJvcik7Ci0gICAgaWYgKFhNTFRva2VuaXplciogdG9rZW5pemVyID0gc3RhdGlj
X2Nhc3Q8WE1MVG9rZW5pemVyKj4oZG9jLT50b2tlbml6ZXIoKSkpIHsKKyAgICBYTUxUb2tlbml6
ZXIqIHRva2VuaXplciA9IHN0YXRpY19jYXN0PFhNTFRva2VuaXplcio+KGRvYy0+dG9rZW5pemVy
KCkpOworICAgIGlmICh0b2tlbml6ZXIgJiYgZXJyb3IgIT0gV01MRXJyb3JEZWNrTm90QWNjZXNz
aWJsZSkgewogICAgICAgICAvLyBTb21lIGVycm9ycyBhcmUgcmVwb3J0ZWQgYXMgcmVzdWx0IG9m
IGFuIGluc2VydGVkSW50b0RvY3VtZW50KCkgY2FsbC4KICAgICAgICAgLy8gSWYgdGhpcyBoYXBw
ZW5lZCwgcGFyc2luZyBoYXMgYmVlbiBzdG9wcGVkLCBhbmQgdGhlIGRvY3VtZW50IGZyYWdtZW50
CiAgICAgICAgIC8vIGlzIHdyYXBwZWQgaW4gYSBYSFRNTCBlcnJvciBkb2N1bWVudC4gVGhhdCBt
ZWFucyBpbnNlcnRlZEludG9Eb2N1bWVudCgpCkluZGV4OiBXZWJDb3JlL3dtbC9XTUxQYWdlU3Rh
dGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd21sL1dNTFBhZ2VTdGF0ZS5jcHAJKHJldmlz
aW9uIDQ2OTY0KQorKysgV2ViQ29yZS93bWwvV01MUGFnZVN0YXRlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjUsNiArMjUsOCBAQAogI2luY2x1ZGUgIldNTFBhZ2VTdGF0ZS5oIgogCiAjaW5jbHVk
ZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCkBAIC0zNCw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdNTFBhZ2VTdGF0
ZTo6V01MUGFnZVN0YXRlKFBhZ2UqIHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFnZSkKICAgICAsIG1f
YWN0aXZlQ2FyZCgwKQotICAgICwgbV9oYXNEZWNrQWNjZXNzKGZhbHNlKQorICAgICwgbV9oYXNB
Y2Nlc3NDb250cm9sRGF0YShmYWxzZSkKIHsKIH0KIApAQCAtNjYsNzQgKzY4LDIwMCBAQCB2b2lk
IFdNTFBhZ2VTdGF0ZTo6cmVzZXQoKQogICAgICAgICBsaXN0LT5jbGVhcldNTFBhZ2VIaXN0b3J5
KCk7CiB9CiAKLWJvb2wgV01MUGFnZVN0YXRlOjpzZXROZWVkQ2hlY2tEZWNrQWNjZXNzKGJvb2wg
bmVlZCkKK3N0YXRpYyBpbmxpbmUgU3RyaW5nIG5vcm1hbGl6ZWRIb3N0TmFtZShjb25zdCBTdHJp
bmcmIHBhc3NlZEhvc3QpCiB7Ci0gICAgaWYgKG1faGFzRGVja0FjY2VzcyAmJiBuZWVkKQorICAg
IGlmIChwYXNzZWRIb3N0LmNvbnRhaW5zKCIxMjcuMC4wLjEiKSkgeworICAgICAgICBTdHJpbmcg
aG9zdCA9IHBhc3NlZEhvc3Q7CisgICAgICAgIHJldHVybiBob3N0LnJlcGxhY2UoIjEyNy4wLjAu
MSIsICJsb2NhbGhvc3QiKTsKKyAgICB9CisKKyAgICByZXR1cm4gcGFzc2VkSG9zdDsKK30KKwor
c3RhdGljIGlubGluZSBTdHJpbmcgaG9zdEZyb21VUkwoY29uc3QgS1VSTCYgdXJsKQoreworICAg
IC8vIERlZmF1bHQgdG8gImxvY2FsaG9zdCIKKyAgICBTdHJpbmcgaG9zdCA9IG5vcm1hbGl6ZWRI
b3N0TmFtZSh1cmwuaG9zdCgpKTsKKyAgICByZXR1cm4gaG9zdC5pc0VtcHR5KCkgPyAibG9jYWxo
b3N0IiA6IGhvc3Q7Cit9CisKK3N0YXRpYyBLVVJMIHVybEZvckhpc3RvcnlJdGVtKEZyYW1lKiBm
cmFtZSwgSGlzdG9yeUl0ZW0qIGl0ZW0pCit7CisgICAgLy8gRm9yIExheW91dFRlc3RzIHdlIG5l
ZWQgdG8gZmluZCB0aGUgY29ycmVzcG9uZGluZyBXTUwgZnJhbWUgaW4gdGhlIHRlc3QgZG9jdW1l
bnQKKyAgICAvLyB0byBiZSBhYmxlIHRvIHRlc3QgYWNjZXNzLWNvbnRyb2wgY29ycmVjdGx5LiBS
ZW1lbWJlciB0aGF0IFdNTCBpcyBuZXZlciBzdXBwb3NlZAorICAgIC8vIHRvIGJlIGVtYmVkZGVk
IGFueXdoZXJlLCBzbyB0aGUgcHVycG9zZSBpcyB0byBzaW11bGF0ZSBhIHN0YW5kYWxvbmUgV01M
IGRvY3VtZW50LgorICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKS0+aXNXTUxEb2N1bWVudCgpKQor
ICAgICAgICByZXR1cm4gaXRlbS0+dXJsKCk7CisKKyAgICBjb25zdCBIaXN0b3J5SXRlbVZlY3Rv
ciYgY2hpbGRJdGVtcyA9IGl0ZW0tPmNoaWxkcmVuKCk7CisgICAgSGlzdG9yeUl0ZW1WZWN0b3I6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY2hpbGRJdGVtcy5iZWdpbigpOworICAgIGNvbnN0IEhpc3Rv
cnlJdGVtVmVjdG9yOjpjb25zdF9pdGVyYXRvciBlbmQgPSBjaGlsZEl0ZW1zLmVuZCgpOworCisg
ICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBjb25zdCBSZWZQdHI8SGlzdG9y
eUl0ZW0+IGNoaWxkSXRlbSA9ICppdDsKKyAgICAgICAgRnJhbWUqIGNoaWxkRnJhbWUgPSBmcmFt
ZS0+dHJlZSgpLT5jaGlsZChjaGlsZEl0ZW0tPnRhcmdldCgpKTsKKyAgICAgICAgaWYgKCFjaGls
ZEZyYW1lKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKERvY3VtZW50KiBj
aGlsZERvY3VtZW50ID0gY2hpbGRGcmFtZS0+ZG9jdW1lbnQoKSkgeworICAgICAgICAgICAgaWYg
KGNoaWxkRG9jdW1lbnQtPmlzV01MRG9jdW1lbnQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
Y2hpbGRJdGVtLT51cmwoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBpdGVtLT51
cmwoKTsKK30KKworc3RhdGljIGJvb2wgdHJ5QWNjZXNzSGlzdG9yeVVSTHMoUGFnZSogcGFnZSwg
S1VSTCYgcHJldmlvdXNVUkwsIEtVUkwmIGN1cnJlbnRVUkwpCit7CisgICAgaWYgKCFwYWdlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2hhc0RlY2tBY2Nlc3MgPSBuZWVkOwotICAg
IG1fYWNjZXNzUGF0aCA9IFN0cmluZygpOwotICAgIG1fYWNjZXNzRG9tYWluID0gU3RyaW5nKCk7
CisgICAgRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSB8
fCAhZnJhbWUtPmRvY3VtZW50KCkpICAgIAorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBC
YWNrRm9yd2FyZExpc3QqIGxpc3QgPSBwYWdlLT5iYWNrRm9yd2FyZExpc3QoKTsKKyAgICBpZiAo
IWxpc3QpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEhpc3RvcnlJdGVtKiBwcmV2aW91
c0l0ZW0gPSBsaXN0LT5iYWNrSXRlbSgpOworICAgIGlmICghcHJldmlvdXNJdGVtKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBIaXN0b3J5SXRlbSogY3VycmVudEl0ZW0gPSBsaXN0LT5j
dXJyZW50SXRlbSgpOworICAgIGlmICghY3VycmVudEl0ZW0pCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHByZXZpb3VzVVJMID0gdXJsRm9ySGlzdG9yeUl0ZW0oZnJhbWUsIHByZXZpb3Vz
SXRlbSk7CisgICAgY3VycmVudFVSTCA9IHVybEZvckhpc3RvcnlJdGVtKGZyYW1lLCBjdXJyZW50
SXRlbSk7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotLy8gRklYTUU6IFdlIG1heSB3YW50IGFu
b3RoZXIgbmFtZSwgaXQgZG9lcyBmYXIgbW9yZSB0aGFuIGp1c3QgY2hlY2tpbmcgd2hldGVyIHRo
ZSBkZWNrIGlzIGFjY2Vzc2FibGUKLWJvb2wgV01MUGFnZVN0YXRlOjppc0RlY2tBY2Nlc3NpYmxl
KCkKK2Jvb2wgV01MUGFnZVN0YXRlOjpwcm9jZXNzQWNjZXNzQ29udHJvbERhdGEoY29uc3QgU3Ry
aW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICBpZiAoIW1faGFzRGVja0Fj
Y2VzcyB8fCAhbV9wYWdlIHx8ICFtX3BhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpIHx8ICFtX3BhZ2Ut
PmJhY2tGb3J3YXJkTGlzdCgpLT5iYWNrSXRlbSgpKQorICAgIGlmIChtX2hhc0FjY2Vzc0NvbnRy
b2xEYXRhKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX2hhc0FjY2Vzc0NvbnRyb2xE
YXRhID0gdHJ1ZTsKKworICAgIEtVUkwgcHJldmlvdXNVUkwsIGN1cnJlbnRVUkw7CisgICAgaWYg
KCF0cnlBY2Nlc3NIaXN0b3J5VVJMcyhtX3BhZ2UsIHByZXZpb3VzVVJMLCBjdXJyZW50VVJMKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBIaXN0b3J5SXRlbSogaGlzdEl0ZW0gPSBtX3Bh
Z2UtPmJhY2tGb3J3YXJkTGlzdCgpLT5iYWNrSXRlbSgpOwotICAgIEtVUkwgdXJsKGhpc3RJdGVt
LT51cmxTdHJpbmcoKSk7CisgICAgLy8gU3BlYzogVGhlIHBhdGggYXR0cmlidXRlIGRlZmF1bHRz
IHRvIHRoZSB2YWx1ZSAiLyIKKyAgICBtX2FjY2Vzc1BhdGggPSBwYXRoLmlzRW1wdHkoKSA/ICIv
IiA6IHBhdGg7CisKKyAgICAvLyBTcGVjOiBUaGUgZG9tYWluIGF0dHJpYnV0ZSBkZWZhdWx0cyB0
byB0aGUgY3VycmVudCBkZWNrcyBkb21haW4uCisgICAgU3RyaW5nIHByZXZpb3VzSG9zdCA9IGhv
c3RGcm9tVVJMKHByZXZpb3VzVVJMKTsKKyAgICBtX2FjY2Vzc0RvbWFpbiA9IGRvbWFpbi5pc0Vt
cHR5KCkgPyBwcmV2aW91c0hvc3QgOiBub3JtYWxpemVkSG9zdE5hbWUoZG9tYWluKTsKKworICAg
IC8vIFNwZWM6IFRvIHNpbXBsaWZ5IHRoZSBkZXZlbG9wbWVudCBvZiBhcHBsaWNhdGlvbnMgdGhh
dCBtYXkgbm90IGtub3cgdGhlIGFic29sdXRlIHBhdGggdG8gdGhlIAorICAgIC8vIGN1cnJlbnQg
ZGVjaywgdGhlIHBhdGggYXR0cmlidXRlIGFjY2VwdHMgcmVsYXRpdmUgVVJJcy4gVGhlIHVzZXIg
YWdlbnQgY29udmVydHMgdGhlIHJlbGF0aXZlIAorICAgIC8vIHBhdGggdG8gYW4gYWJzb2x1dGUg
cGF0aCBhbmQgdGhlbiBwZXJmb3JtcyBwcmVmaXggbWF0Y2hpbmcgYWdhaW5zdCB0aGUgUEFUSCBh
dHRyaWJ1dGUuCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9wYWdlLT5tYWluRnJhbWUoKSA/
IG1fcGFnZS0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCkgOiAwOworICAgIGlmIChkb2N1bWVudCAm
JiBwcmV2aW91c0hvc3QgPT0gbV9hY2Nlc3NEb21haW4gJiYgIW1fYWNjZXNzUGF0aC5zdGFydHNX
aXRoKCIvIikpIHsKKyAgICAgICAgU3RyaW5nIGN1cnJlbnRQYXRoID0gY3VycmVudFVSTC5wYXRo
KCk7CisKKyAgICAgICAgc2l6ZV90IGluZGV4ID0gY3VycmVudFBhdGgucmV2ZXJzZUZpbmQoJy8n
KTsKKyAgICAgICAgaWYgKGluZGV4ICE9IFdURjo6bm90Rm91bmQpCisgICAgICAgICAgICBtX2Fj
Y2Vzc1BhdGggPSBkb2N1bWVudC0+Y29tcGxldGVVUkwoY3VycmVudFBhdGgubGVmdChpbmRleCAr
IDEpICsgbV9hY2Nlc3NQYXRoKS5wYXRoKCk7CisgICAgfQogCi0gICAgU3RyaW5nIHByZXZIb3N0
ID0gdXJsLmhvc3QoKTsKLSAgICBTdHJpbmcgcHJldlBhdGggPSB1cmwucGF0aCgpOworICAgIHJl
dHVybiB0cnVlOworfQorCit2b2lkIFdNTFBhZ2VTdGF0ZTo6cmVzZXRBY2Nlc3NDb250cm9sRGF0
YSgpCit7CisgICAgbV9oYXNBY2Nlc3NDb250cm9sRGF0YSA9IGZhbHNlOworICAgIG1fYWNjZXNz
RG9tYWluID0gU3RyaW5nKCk7CisgICAgbV9hY2Nlc3NQYXRoID0gU3RyaW5nKCk7Cit9CiAKLSAg
ICAvLyBmb3IgJ2ZpbGUnIFVSSSwgdGhlIGhvc3QgcGFydCBtYXkgYmUgZW1wdHksIHNvIHdlIHNo
b3VsZCBjb21wbGV0ZSBpdC4KLSAgICBpZiAocHJldkhvc3QuaXNFbXB0eSgpKQotICAgICAgICBw
cmV2SG9zdCA9ICJsb2NhbGhvc3QiOworYm9vbCBXTUxQYWdlU3RhdGU6OmNhbkFjY2Vzc0RlY2so
KSBjb25zdAoreworICAgIGlmICghbV9oYXNBY2Nlc3NDb250cm9sRGF0YSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICBoaXN0SXRlbSA9IG1fcGFnZS0+YmFja0ZvcndhcmRMaXN0KCktPmN1
cnJlbnRJdGVtKCk7Ci0gICAgS1VSTCBjdXJVcmwoaGlzdEl0ZW0tPnVybFN0cmluZygpKTsKLSAg
ICBTdHJpbmcgY3VyUGF0aCA9IGN1clVybC5wYXRoKCk7CisgICAgS1VSTCBwcmV2aW91c1VSTCwg
Y3VycmVudFVSTDsKKyAgICBpZiAoIXRyeUFjY2Vzc0hpc3RvcnlVUkxzKG1fcGFnZSwgcHJldmlv
dXNVUkwsIGN1cnJlbnRVUkwpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChlcXVh
bElnbm9yaW5nUmVmKHVybCwgY3VyVXJsKSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ1JlZihwcmV2
aW91c1VSTCwgY3VycmVudFVSTCkpCiAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAvLyAiLyIg
aXMgdGhlIGRlZmF1bHQgdmFsdWUgaWYgbm90IHNwZWNpZmllZAotICAgIGlmIChtX2FjY2Vzc1Bh
dGguaXNFbXB0eSgpKSAgCi0gICAgICAgIG1fYWNjZXNzUGF0aCA9ICIvIjsKLSAgICBlbHNlIGlm
IChtX2FjY2Vzc1BhdGguZW5kc1dpdGgoIi8iKSAmJiAobV9hY2Nlc3NQYXRoICE9ICIvIikpCi0g
ICAgICAgIG1fYWNjZXNzUGF0aCA9IG1fYWNjZXNzUGF0aC5sZWZ0KChtX2FjY2Vzc1BhdGgubGVu
Z3RoKCktMSkpOwotCi0KLSAgICAvLyBjdXJyZW50IGRlY2sgZG9tYWluIGlzIHRoZSBkZWZhdWx0
IHZhbHVlIGlmIG5vdCBzcGVjaWZpZWQKLSAgICBpZiAobV9hY2Nlc3NEb21haW4uaXNFbXB0eSgp
KQotICAgICAgICBtX2FjY2Vzc0RvbWFpbiA9IHByZXZIb3N0OwotCi0gICAgLy8gY29udmVydCBy
ZWxhdGl2ZSBVUkwgdG8gYWJzb2x1dGUgVVJMIGJlZm9yZSBwZXJmb3JtaW5nIHBhdGggbWF0Y2hp
bmcKLSAgICBpZiAocHJldkhvc3QgPT0gbV9hY2Nlc3NEb21haW4pIHsKLSAgICAgICAgaWYgKCFt
X2FjY2Vzc1BhdGguc3RhcnRzV2l0aCgiLyIpKSB7Ci0gICAgICAgICAgIGludCBpbmRleCA9IGN1
clBhdGgucmV2ZXJzZUZpbmQoJy8nKTsKLSAgICAgICAgICAgaWYgKGluZGV4ICE9IC0xKSB7Ci0g
ICAgICAgICAgICAgICBjdXJQYXRoID0gY3VyUGF0aC5sZWZ0KGluZGV4ICsgMSk7Ci0gICAgICAg
ICAgICAgICBjdXJQYXRoICs9IG1fYWNjZXNzUGF0aDsKLSAgICAgICAgICAgICAgIGN1clVybC5z
ZXRQYXRoKGN1clBhdGgpOwotICAgICAgICAgICAgICAgbV9hY2Nlc3NQYXRoID0gY3VyVXJsLnBh
dGgoKTsKLSAgICAgICAgICAgfQorICAgIHJldHVybiBob3N0SXNBbGxvd2VkVG9BY2Nlc3MoaG9z
dEZyb21VUkwocHJldmlvdXNVUkwpKSAmJiBwYXRoSXNBbGxvd2VkVG9BY2Nlc3MocHJldmlvdXNV
UkwucGF0aCgpKTsKK30KKworYm9vbCBXTUxQYWdlU3RhdGU6Omhvc3RJc0FsbG93ZWRUb0FjY2Vz
cyhjb25zdCBTdHJpbmcmIGhvc3QpIGNvbnN0Cit7CisgICAgLy8gU3BlYzogVGhlIGFjY2VzcyBk
b21haW4gaXMgc3VmZml4LW1hdGNoZWQgYWdhaW5zdCB0aGUgZG9tYWluIG5hbWUgcG9ydGlvbiBv
ZiB0aGUgcmVmZXJyaW5nIFVSSQorICAgIFZlY3RvcjxTdHJpbmc+IHN1YmRvbWFpbnNBbGxvd2Vk
OworICAgIGlmIChtX2FjY2Vzc0RvbWFpbi5jb250YWlucygnLicpKQorICAgICAgICBtX2FjY2Vz
c0RvbWFpbi5zcGxpdCgnLicsIHN1YmRvbWFpbnNBbGxvd2VkKTsKKyAgICBlbHNlCisgICAgICAg
IHN1YmRvbWFpbnNBbGxvd2VkLmFwcGVuZChtX2FjY2Vzc0RvbWFpbik7CisKKyAgICBWZWN0b3I8
U3RyaW5nPiBzdWJkb21haW5zQ2hlY2s7CisgICAgaWYgKGhvc3QuY29udGFpbnMoJy4nKSkKKyAg
ICAgICAgaG9zdC5zcGxpdCgnLicsIHN1YmRvbWFpbnNDaGVjayk7CisgICAgZWxzZQorICAgICAg
ICBzdWJkb21haW5zQ2hlY2suYXBwZW5kKGhvc3QpOworCisgICAgVmVjdG9yPFN0cmluZz46Oml0
ZXJhdG9yIGl0QWxsb3dlZCA9IHN1YmRvbWFpbnNBbGxvd2VkLmVuZCgpIC0gMTsKKyAgICBWZWN0
b3I8U3RyaW5nPjo6aXRlcmF0b3IgYmVnaW5BbGxvd2VkID0gc3ViZG9tYWluc0FsbG93ZWQuYmVn
aW4oKTsKKworICAgIFZlY3RvcjxTdHJpbmc+OjppdGVyYXRvciBpdENoZWNrID0gc3ViZG9tYWlu
c0NoZWNrLmVuZCgpIC0gMTsKKyAgICBWZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3IgYmVnaW5DaGVj
ayA9IHN1YmRvbWFpbnNDaGVjay5iZWdpbigpOworCisgICAgYm9vbCBob3N0T2sgPSB0cnVlOwor
ICAgIGZvciAoOyBpdEFsbG93ZWQgPj0gYmVnaW5BbGxvd2VkICYmIGl0Q2hlY2sgPj0gYmVnaW5D
aGVjazsgKSB7CisgICAgICAgIGlmICgqaXRBbGxvd2VkICE9ICppdENoZWNrKSB7CisgICAgICAg
ICAgICBob3N0T2sgPSBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKKyAg
ICAgICAgLS1pdEFsbG93ZWQ7CisgICAgICAgIC0taXRDaGVjazsKICAgICB9CiAKLSAgICAvLyBw
YXRoIHByZWZpeCBtYXRjaGluZwotICAgIGlmIChwcmV2UGF0aC5zdGFydHNXaXRoKG1fYWNjZXNz
UGF0aCkgJiYgCi0gICAgICAgKHByZXZQYXRoW21fYWNjZXNzUGF0aC5sZW5ndGgoKV0gPT0gJy8n
IHx8IHByZXZQYXRoLmxlbmd0aCgpID09IG1fYWNjZXNzUGF0aC5sZW5ndGgoKSkpIHsKLSAgICAg
ICAgLy8gZG9tYWluIHN1ZmZpeCBtYXRjaGluZwotICAgICAgICB1bnNpZ25lZCBkb21haW5MZW5n
dGggPSBtX2FjY2Vzc0RvbWFpbi5sZW5ndGgoKTsKLSAgICAgICAgdW5zaWduZWQgaG9zdExlbmd0
aCA9IHByZXZIb3N0Lmxlbmd0aCgpOwotICAgICAgICByZXR1cm4gKHByZXZIb3N0LmVuZHNXaXRo
KG1fYWNjZXNzRG9tYWluKSAmJiBwcmV2SG9zdFtob3N0TGVuZ3RoIC0gZG9tYWluTGVuZ3RoIC0g
MV0gPT0gJy4nKSB8fCBob3N0TGVuZ3RoID09IGRvbWFpbkxlbmd0aDsKKyAgICByZXR1cm4gaG9z
dE9rOworfQorCitib29sIFdNTFBhZ2VTdGF0ZTo6cGF0aElzQWxsb3dlZFRvQWNjZXNzKGNvbnN0
IFN0cmluZyYgcGF0aCkgY29uc3QKK3sKKyAgICAvLyBTcGVjOiBUaGUgYWNjZXNzIHBhdGggaXMg
cHJlZml4IG1hdGNoZWQgYWdhaW5zdCB0aGUgcGF0aCBwb3J0aW9uIG9mIHRoZSByZWZlcnJpbmcg
VVJJCisgICAgVmVjdG9yPFN0cmluZz4gc3VicGF0aHNBbGxvd2VkOworICAgIGlmIChtX2FjY2Vz
c1BhdGguY29udGFpbnMoJy8nKSkKKyAgICAgICAgbV9hY2Nlc3NQYXRoLnNwbGl0KCcvJywgc3Vi
cGF0aHNBbGxvd2VkKTsKKyAgICBlbHNlCisgICAgICAgIHN1YnBhdGhzQWxsb3dlZC5hcHBlbmQo
bV9hY2Nlc3NQYXRoKTsKKworICAgIFZlY3RvcjxTdHJpbmc+IHN1YnBhdGhzQ2hlY2s7CisgICAg
aWYgKHBhdGguY29udGFpbnMoJy8nKSkKKyAgICAgICAgcGF0aC5zcGxpdCgnLycsIHN1YnBhdGhz
Q2hlY2spOworICAgIGVsc2UKKyAgICAgICAgc3VicGF0aHNDaGVjay5hcHBlbmQocGF0aCk7CisK
KyAgICBWZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3IgaXRBbGxvd2VkID0gc3VicGF0aHNBbGxvd2Vk
LmJlZ2luKCk7CisgICAgVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIGVuZEFsbG93ZWQgPSBzdWJw
YXRoc0FsbG93ZWQuZW5kKCk7CisKKyAgICBWZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3IgaXRDaGVj
ayA9IHN1YnBhdGhzQ2hlY2suYmVnaW4oKTsKKyAgICBWZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3Ig
ZW5kQ2hlY2sgPSBzdWJwYXRoc0NoZWNrLmVuZCgpOworCisgICAgYm9vbCBwYXRoT2sgPSB0cnVl
OworICAgIGZvciAoOyBpdEFsbG93ZWQgIT0gZW5kQWxsb3dlZCAmJiBpdENoZWNrICE9IGVuZENo
ZWNrOyApIHsKKyAgICAgICAgaWYgKCppdEFsbG93ZWQgIT0gKml0Q2hlY2spIHsKKyAgICAgICAg
ICAgIHBhdGhPayA9IGZhbHNlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAg
ICAgICArK2l0QWxsb3dlZDsKKyAgICAgICAgKytpdENoZWNrOwogICAgIH0KIAotICAgIHJldHVy
biBmYWxzZTsKKyAgICByZXR1cm4gcGF0aE9rOwogfQogCiB9CkluZGV4OiBXZWJDb3JlL3dtbC9X
TUxQYWdlU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dtbC9XTUxQYWdlU3RhdGUuaAko
cmV2aXNpb24gNDY5NjQpCisrKyBXZWJDb3JlL3dtbC9XTUxQYWdlU3RhdGUuaAkod29ya2luZyBj
b3B5KQpAQCAtNDMsNDAgKzQzLDM3IEBAIHB1YmxpYzoKICAgICB2b2lkIGR1bXAoKTsKICNlbmRp
ZgogCi0gICAgLy8gcmVzZXQgdGhlIGJyb3dzZXIgY29udGV4dCB3aGVuICduZXdjb250ZXh0JyBh
dHRyaWJ1dGUKLSAgICAvLyBvZiBjYXJkIGVsZW1lbnQgaXMgcGVyZm9ybWVkIGFzIHBhcnQgb2Yg
Z28gdGFzaworICAgIC8vIFJlc2V0IHRoZSBicm93c2VyIGNvbnRleHQKICAgICB2b2lkIHJlc2V0
KCk7CiAKLSAgICAvLyB2YXJpYWJsZXMgb3BlcmF0aW9ucyAKKyAgICAvLyBWYXJpYWJsZSBoYW5k
bGluZwogICAgIHZvaWQgc3RvcmVWYXJpYWJsZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgdmFsdWUpIHsgbV92YXJpYWJsZXMuc2V0KG5hbWUsIHZhbHVlKTsgfQogICAgIHZvaWQg
c3RvcmVWYXJpYWJsZXMoV01MVmFyaWFibGVNYXAmIHZhcmlhYmxlcykgeyBtX3ZhcmlhYmxlcyA9
IHZhcmlhYmxlczsgfQogICAgIFN0cmluZyBnZXRWYXJpYWJsZShjb25zdCBTdHJpbmcmIG5hbWUp
IGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFibGVzLmdldChuYW1lKTsgfQogICAgIGJvb2wgaGFzVmFy
aWFibGVzKCkgY29uc3QgeyByZXR1cm4gIW1fdmFyaWFibGVzLmlzRW1wdHkoKTsgfQogCi0gICAg
aW50IGhpc3RvcnlMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2hpc3RvcnlMZW5ndGg7IH0KLSAg
ICB2b2lkIHNldEhpc3RvcnlMZW5ndGgoaW50IGxlbmd0aCkgeyBtX2hpc3RvcnlMZW5ndGggPSBs
ZW5ndGg7IH0KLQogICAgIFBhZ2UqIHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2U7IH0KIAog
ICAgIFdNTENhcmRFbGVtZW50KiBhY3RpdmVDYXJkKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVD
YXJkOyB9CiAgICAgdm9pZCBzZXRBY3RpdmVDYXJkKFdNTENhcmRFbGVtZW50KiBjYXJkKSB7IG1f
YWN0aXZlQ2FyZCA9IGNhcmQ7IH0KIAotICAgIC8vIGRlY2sgYWNjZXNzIGNvbnRyb2wKLSAgICB2
b2lkIHJlc3RyaWN0RGVja0FjY2Vzc1RvRG9tYWluKGNvbnN0IFN0cmluZyYgZG9tYWluKSB7IG1f
YWNjZXNzRG9tYWluID0gZG9tYWluOyB9Ci0gICAgdm9pZCByZXN0cmljdERlY2tBY2Nlc3NUb1Bh
dGgoY29uc3QgU3RyaW5nJiBwYXRoKSB7IG1fYWNjZXNzUGF0aCA9IHBhdGg7IH0KLSAgICBib29s
IGhhc0RlY2tBY2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX2hhc0RlY2tBY2Nlc3M7IH0KLSAKLSAg
ICBib29sIHNldE5lZWRDaGVja0RlY2tBY2Nlc3MoYm9vbCk7Ci0gICAgYm9vbCBpc0RlY2tBY2Nl
c3NpYmxlKCk7CisgICAgLy8gRGVjayBhY2Nlc3MgY29udHJvbAorICAgIGJvb2wgcHJvY2Vzc0Fj
Y2Vzc0NvbnRyb2xEYXRhKGNvbnN0IFN0cmluZyYgZG1haW4sIGNvbnN0IFN0cmluZyYgcGF0aCk7
CisgICAgdm9pZCByZXNldEFjY2Vzc0NvbnRyb2xEYXRhKCk7CisKKyAgICBib29sIGNhbkFjY2Vz
c0RlY2soKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBib29sIGhvc3RJc0FsbG93ZWRUb0FjY2Vz
cyhjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICBib29sIHBhdGhJc0FsbG93ZWRUb0FjY2Vzcyhj
b25zdCBTdHJpbmcmKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBQYWdlKiBtX3BhZ2U7CiAgICAg
V01MVmFyaWFibGVNYXAgbV92YXJpYWJsZXM7Ci0gICAgaW50IG1faGlzdG9yeUxlbmd0aDsKICAg
ICBXTUxDYXJkRWxlbWVudCogbV9hY3RpdmVDYXJkOwogICAgIFN0cmluZyBtX2FjY2Vzc0RvbWFp
bjsKICAgICBTdHJpbmcgbV9hY2Nlc3NQYXRoOwotICAgIGJvb2wgbV9oYXNEZWNrQWNjZXNzOwor
ICAgIGJvb2wgbV9oYXNBY2Nlc3NDb250cm9sRGF0YTsKIH07CiAKIH0KSW5kZXg6IFdlYktpdC9t
YWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lv
biA0Njk2NSkKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMDktMDgtMDkgIE5pa29sYXMgWmltbWVybWFubiAgPG5pa29sYXMuemltbWVy
bWFubkB0b3JjaG1vYmlsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgW1dNTF0gRGVjayBhY2Nlc3MgY29udHJvbCBpcyBjb21wbGV0bHkgYnJv
a2VuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzcy
MQorCisgICAgICAgIFN5bmNocm9uaXplIFdlYkZyYW1lTG9hZFR5cGUgd2l0aCBGcmFtZUxvYWRU
eXBlIGVudW0uIEFwcGVuZCAnV2ViRnJhbWVMb2FkVHlwZUJhY2tXTUxEZWNrTm90QWNjZXNzaWJs
ZScuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lUHJpdmF0ZS5oOgorCiAyMDA5LTA4LTA3
ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0
aGUgYnVpbGQgb24gMTAuNi4KSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVByaXZh
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVQcml2YXRlLmgJ
KHJldmlzaW9uIDQ2OTY0KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lUHJpdmF0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw4IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgV2Vi
RnJhbWVMb2FkVHlwZVNhbWUsICAgICAgICAgICAgICAgLy8gdXNlciBsb2FkcyBzYW1lIFVSTCBh
Z2FpbiAoYnV0IG5vdCByZWxvYWQgYnV0dG9uKQogICAgIFdlYkZyYW1lTG9hZFR5cGVJbnRlcm5h
bCwgICAgICAgICAgIC8vIG1hcHMgdG8gV2ViQ29yZTo6RnJhbWVMb2FkVHlwZVJlZGlyZWN0V2l0
aExvY2tlZEJhY2tGb3J3YXJkTGlzdAogICAgIFdlYkZyYW1lTG9hZFR5cGVSZXBsYWNlLAotICAg
IFdlYkZyYW1lTG9hZFR5cGVSZWxvYWRGcm9tT3JpZ2luCisgICAgV2ViRnJhbWVMb2FkVHlwZVJl
bG9hZEZyb21PcmlnaW4sCisgICAgV2ViRnJhbWVMb2FkVHlwZUJhY2tXTUxEZWNrTm90QWNjZXNz
aWJsZQogfSBXZWJGcmFtZUxvYWRUeXBlOwogCiBAaW50ZXJmYWNlIFdlYkZyYW1lIChXZWJQcml2
YXRlKQpJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dp
bi9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ2OTY1KQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAwOS0wOC0wOSAgTmlrb2xhcyBaaW1tZXJt
YW5uICA8bmlrb2xhcy56aW1tZXJtYW5uQHRvcmNobW9iaWxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbV01MXSBEZWNrIGFjY2VzcyBjb250
cm9sIGlzIGNvbXBsZXRseSBicm9rZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTI3NzIxCisKKyAgICAgICAgU3luY2hyb25pemUgV2ViRnJhbWVMb2Fk
VHlwZSB3aXRoIEZyYW1lTG9hZFR5cGUgZW51bS4gQXBwZW5kICdXZWJGcmFtZUxvYWRUeXBlQmFj
a1dNTERlY2tOb3RBY2Nlc3NpYmxlJy4KKworICAgICAgICAqIEludGVyZmFjZXMvSVdlYkZyYW1l
UHJpdmF0ZS5pZGw6CisKIDIwMDktMDgtMDkgIE5pa29sYXMgWmltbWVybWFubiAgPG5pa29sYXMu
emltbWVybWFubkB0b3JjaG1vYmlsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVq
IFN0YWNob3dpYWsuCkluZGV4OiBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lUHJpdmF0
ZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZVByaXZh
dGUuaWRsCShyZXZpc2lvbiA0Njk2NSkKKysrIFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRnJh
bWVQcml2YXRlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsOCBAQCB0eXBlZGVmIGVu
dW0gewogICAgIFdlYkZyYW1lTG9hZFR5cGVTYW1lLCAgICAgICAgICAgICAgIC8vIHVzZXIgbG9h
ZHMgc2FtZSBVUkwgYWdhaW4gKGJ1dCBub3QgcmVsb2FkIGJ1dHRvbikKICAgICBXZWJGcmFtZUxv
YWRUeXBlUmVkaXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0LAogICAgIFdlYkZyYW1lTG9h
ZFR5cGVSZXBsYWNlLAotICAgIFdlYkZyYW1lTG9hZFR5cGVSZWxvYWRGcm9tT3JpZ2luCisgICAg
V2ViRnJhbWVMb2FkVHlwZVJlbG9hZEZyb21PcmlnaW4sCisgICAgV2ViRnJhbWVMb2FkVHlwZUJh
Y2tXTUxEZWNrTm90QWNjZXNzaWJsZQogfSBXZWJGcmFtZUxvYWRUeXBlOwogCiBbCkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0Njk2NCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDU0IEBACisyMDA5LTA4LTA5ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuaWtv
bGFzLnppbW1lcm1hbm5AdG9yY2htb2JpbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtXTUxdIERlY2sgYWNjZXNzIGNvbnRyb2wgaXMgY29t
cGxldGx5IGJyb2tlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Mjc3MjEKKworICAgICAgICBBZGQgc2V2ZXJhbCBuZXcgdGVzdHMgY292ZXJpbmcgV01M
IGRlY2stYWNjZXNzIGNvbnRyb2wuCisgICAgICAgIFVwZGF0ZSB2YXJpYWJsZS1yZWZlcmVuY2Ut
aW52YWxpZC1jaGFyYWN0ZXIuaHRtbCByZXN1bHQsIGFzIGNvbnNvbGUgbWVzc2FnZXMgYXJlbid0
IGR1bXAgdG8gdGhlIHJlc3VsdHMgYW55bW9yZS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd21s
L2FjY2Vzcy10YXJnZXQtZG9tYWluLWRlbnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3dtbC9hY2Nlc3MtdGFyZ2V0LWRvbWFpbi1kZW55Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvd21sL2FjY2Vzcy10YXJnZXQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dtbC9hY2Nlc3MtdGFyZ2V0LXBhdGgtZGVueS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd21sL2FjY2Vzcy10YXJnZXQt
cGF0aC1kZW55Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd21sL2FjY2Vzcy10
YXJnZXQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93bWwvcmVzb3VyY2VzL2Fj
Y2Vzcy10YXJnZXQtZG9tYWluLWRlbnkuanM6IEFkZGVkLgorICAgICAgICAoc2V0dXBUZXN0RG9j
dW1lbnQpOgorICAgICAgICAocHJlcGFyZVRlc3QpOgorICAgICAgICAoZXhlY3V0ZVRlc3QpOgor
ICAgICAgICAqIGh0dHAvdGVzdHMvd21sL3Jlc291cmNlcy9hY2Nlc3MtdGFyZ2V0LWRvbWFpbi1k
ZW55LndtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93bWwvcmVzb3VyY2VzL2FjY2Vz
cy10YXJnZXQtcGF0aC1kZW55LmpzOiBBZGRlZC4KKyAgICAgICAgKHNldHVwVGVzdERvY3VtZW50
KToKKyAgICAgICAgKHByZXBhcmVUZXN0KToKKyAgICAgICAgKGV4ZWN1dGVUZXN0KToKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3dtbC9yZXNvdXJjZXMvYWNjZXNzLXRhcmdldC1wYXRoLWRlbnkud21s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dtbC9yZXNvdXJjZXMvYWNjZXNzLXRhcmdl
dC5qczogQWRkZWQuCisgICAgICAgIChzZXR1cFRlc3REb2N1bWVudCk6CisgICAgICAgIChwcmVw
YXJlVGVzdCk6CisgICAgICAgIChleGVjdXRlVGVzdCk6CisgICAgICAgICogaHR0cC90ZXN0cy93
bWwvcmVzb3VyY2VzL2FjY2Vzcy10YXJnZXQud21sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3dtbC9yZXNvdXJjZXMvbG9ja2VkLWRlY2sud21sOiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3dtbC9yZXNvdXJjZXMvdW5yZWFjaGFibGUtZG9tYWluLndtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy93bWwvcmVzb3VyY2VzL3VucmVhY2hhYmxlLXBhdGgud21sOiBBZGRl
ZC4KKyAgICAgICAgKiB3bWwvYWNjZXNzLXRhcmdldC1kZW55LWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogd21sL2FjY2Vzcy10YXJnZXQtZGVueS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiB3bWwvYWNjZXNzLXRhcmdldC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdtbC9h
Y2Nlc3MtdGFyZ2V0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdtbC9yZXNvdXJjZXMvYWNjZXNz
LXRhcmdldC1kZW55LmpzOiBBZGRlZC4KKyAgICAgICAgKHNldHVwVGVzdERvY3VtZW50KToKKyAg
ICAgICAgKHByZXBhcmVUZXN0KToKKyAgICAgICAgKGV4ZWN1dGVUZXN0KToKKyAgICAgICAgKiB3
bWwvcmVzb3VyY2VzL2FjY2Vzcy10YXJnZXQtZGVueS53bWw6IEFkZGVkLgorICAgICAgICAqIHdt
bC9yZXNvdXJjZXMvYWNjZXNzLXRhcmdldC5qczogQWRkZWQuCisgICAgICAgIChzZXR1cFRlc3RE
b2N1bWVudCk6CisgICAgICAgIChwcmVwYXJlVGVzdCk6CisgICAgICAgIChleGVjdXRlVGVzdCk6
CisgICAgICAgICogd21sL3Jlc291cmNlcy9hY2Nlc3MtdGFyZ2V0LndtbDogQWRkZWQuCisgICAg
ICAgICogd21sL3Jlc291cmNlcy9sb2NrZWQtZGVjay53bWw6IEFkZGVkLgorICAgICAgICAqIHdt
bC92YXJpYWJsZS1yZWZlcmVuY2UtaW52YWxpZC1jaGFyYWN0ZXItZXhwZWN0ZWQudHh0OgorCiAy
MDA5LTA4LTA5ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuaWtvbGFzLnppbW1lcm1hbm5AdG9yY2ht
b2JpbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb3JnZSBTdGFpa29zLgpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93bWwvYWNjZXNzLXRhcmdldC1kb21haW4tZGVueS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93bWwvYWNjZXNz
LXRhcmdldC1kb21haW4tZGVueS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dtbC9hY2Nlc3MtdGFyZ2V0LWRvbWFpbi1kZW55LWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOSBAQAorV01MIGh0dHAgbmF2aWdhdGlvbiBsYXlv
dXQgdGVzdHMgLSB1c2luZyBYSFRNTCBzY3JpcHRpbmcKKworCitUZXN0cyBhY2Nlc3MgY29udHJv
bCBzdXBwb3J0CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCistLS0tLS0tLQorRnJhbWU6
ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitTdGFydCB0ZXN0
CitUZXN0IGZvciBEZWNrIEFjY2VzcyBjb250cm9sIGluIFdNTC4KK0lmIHRoZSB0ZXN0IHBhc3Nl
cywgdGhpcyBkZWNrIHdpbGwgcmVtYWluIHZpc2libGUKSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvd21sL2FjY2Vzcy10YXJnZXQtZG9tYWluLWRlbnkuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dtbC9hY2Nlc3MtdGFyZ2V0LWRvbWFpbi1kZW55Lmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dtbC9hY2Nlc3MtdGFyZ2V0
LWRvbWFpbi1kZW55Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQ+dmFyIHJlbGF0aXZlUGF0aFRvTGF5b3V0VGVzdHMg
PSAiLi4vLi4vLi4iOzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3dtbC9yZXNvdXJj
ZXMvV01MVGVzdENhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGgxPldNTCBodHRwIG5hdmlnYXRpb24gbGF5b3V0IHRlc3RzIC0gdXNpbmcgWEhUTUwgc2NyaXB0
aW5nPC9oMT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2FjY2Vzcy10YXJnZXQtZG9tYWluLWRlbnkuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93bWwvYWNjZXNzLXRhcmdldC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93bWwvYWNjZXNzLXRhcmdldC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dtbC9hY2Nlc3MtdGFyZ2V0LWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOCBAQAorV01MIGh0dHAgbmF2aWdhdGlvbiBsYXlv
dXQgdGVzdHMgLSB1c2luZyBYSFRNTCBzY3JpcHRpbmcKKworCitUZXN0cyBhY2Nlc3MgY29udHJv
bCBzdXBwb3J0CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCistLS0tLS0tLQorRnJhbWU6
ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitUZXN0IGZvciBE
ZWNrIEFjY2VzcyBjb250cm9sIGluIFdNTC4KK1RoaXMgaXMgdGhlIGxvY2tlZCB0YXJnZXQgZGVj
aywgb25seSAnYWNjZXNzLXRhcmdldC53bWwiIGNhbiBhY2Nlc3MgbWUKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvd21sL2FjY2Vzcy10YXJnZXQtcGF0aC1kZW55LWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dtbC9hY2Nlc3MtdGFyZ2V0LXBh
dGgtZGVueS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dtbC9hY2Nlc3MtdGFyZ2V0LXBhdGgtZGVueS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTkgQEAKK1dNTCBodHRwIG5hdmlnYXRpb24gbGF5b3V0IHRlc3RzIC0gdXNp
bmcgWEhUTUwgc2NyaXB0aW5nCisKKworVGVzdHMgYWNjZXNzIGNvbnRyb2wgc3VwcG9ydAorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0
aCAvLzwhLS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQorU3RhcnQgdGVzdAorVGVzdCBmb3IgRGVj
ayBBY2Nlc3MgY29udHJvbCBpbiBXTUwuCitJZiB0aGUgdGVzdCBwYXNzZXMsIHRoaXMgZGVjayB3
aWxsIHJlbWFpbiB2aXNpYmxlCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dtbC9hY2Nl
c3MtdGFyZ2V0LXBhdGgtZGVueS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvd21sL2FjY2Vzcy10YXJnZXQtcGF0aC1kZW55Lmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dtbC9hY2Nlc3MtdGFyZ2V0LXBhdGgtZGVueS5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lF
VEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8
c2NyaXB0PnZhciByZWxhdGl2ZVBhdGhUb0xheW91dFRlc3RzID0gIi4uLy4uLy4uIjs8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi93bWwvcmVzb3VyY2VzL1dNTFRlc3RDYXNlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxoMT5XTUwgaHR0cCBuYXZpZ2F0
aW9uIGxheW91dCB0ZXN0cyAtIHVzaW5nIFhIVE1MIHNjcmlwdGluZzwvaDE+Cis8cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9hY2Nlc3MtdGFyZ2V0LXBhdGgtZGVueS5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dtbC9hY2Nlc3MtdGFyZ2V0Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93bWwvYWNjZXNzLXRhcmdl
dC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93bWwvYWNjZXNz
LXRhcmdldC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyI+Cis8c2NyaXB0PnZhciByZWxhdGl2ZVBhdGhUb0xheW91dFRlc3RzID0gIi4u
Ly4uLy4uIjs8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi93bWwvcmVzb3VyY2VzL1dN
TFRlc3RDYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxoMT5X
TUwgaHR0cCBuYXZpZ2F0aW9uIGxheW91dCB0ZXN0cyAtIHVzaW5nIFhIVE1MIHNjcmlwdGluZzwv
aDE+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9hY2Nlc3MtdGFyZ2V0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd21sL3Jlc291cmNlcy9h
Y2Nlc3MtdGFyZ2V0LWRvbWFpbi1kZW55LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvd21sL3Jlc291cmNlcy9hY2Nlc3MtdGFyZ2V0LWRvbWFpbi1kZW55LmpzCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93bWwvcmVzb3VyY2VzL2FjY2Vzcy10
YXJnZXQtZG9tYWluLWRlbnkuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjMgQEAKKy8vIFtO
YW1lXSBhY2Nlc3MtdGFyZ2V0LWRvbWFpbi1kZW55LmpzCisKK2NyZWF0ZVN0YXRpY1dNTFRlc3RD
YXNlKCJUZXN0cyBhY2Nlc3MgY29udHJvbCBzdXBwb3J0IiwgInJlc291cmNlcy9hY2Nlc3MtdGFy
Z2V0LWRvbWFpbi1kZW55LndtbCIpOworCitmdW5jdGlvbiBzZXR1cFRlc3REb2N1bWVudCgpIHsK
KyAgICAvLyBuby1vcAorfQorCitmdW5jdGlvbiBwcmVwYXJlVGVzdCgpIHsKKyAgICB2YXIgbGFz
dEVycm9yID0gY29uc29sZS5sYXN0V01MRXJyb3JNZXNzYWdlKCk7CisgICAgaWYgKGxhc3RFcnJv
ciA9PSAiRGVjayBub3QgYWNjZXNzaWJsZS4iKSB7CisgICAgICAgIGNvbXBsZXRlVGVzdCgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3RhcnRUZXN0KDI1LCAxNSk7Cit9CisKK2Z1
bmN0aW9uIGV4ZWN1dGVUZXN0KCkgeworICAgIC8vIG5vLW9wCit9CisKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93bWwvcmVzb3Vy
Y2VzL2FjY2Vzcy10YXJnZXQtZG9tYWluLWRlbnkud21sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvd21sL3Jlc291cmNlcy9hY2Nlc3MtdGFyZ2V0LWRvbWFpbi1kZW55Lndt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd21sL3Jlc291cmNlcy9h
Y2Nlc3MtdGFyZ2V0LWRvbWFpbi1kZW55LndtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5IEBA
Cis8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKzwhRE9DVFlQRSB3bWwgUFVCTElDICItLy9XQVBGT1JV
TS8vRFREIFdNTCAxLjEvL0VOIiAiaHR0cDovL3d3dy53YXBmb3J1bS5vcmcvRFREL3dtbF8xLjEu
eG1sIj4KKzx3bWw+CisgICAgPGNhcmQ+CisgICAgICAgIDxhbmNob3I+U3RhcnQgdGVzdDxnbyBo
cmVmPSJ1bnJlYWNoYWJsZS1kb21haW4ud21sIi8+PC9hbmNob3I+CisgICAgICAgIDxwPlRlc3Qg
Zm9yIERlY2sgQWNjZXNzIGNvbnRyb2wgaW4gV01MLjwvcD4KKyAgICAgICAgPHA+SWYgdGhlIHRl
c3QgcGFzc2VzLCB0aGlzIGRlY2sgd2lsbCByZW1haW4gdmlzaWJsZTwvcD4KKyAgICA8L2NhcmQ+
Cis8L3dtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd21sL3Jlc291cmNlcy9hY2Nl
c3MtdGFyZ2V0LXBhdGgtZGVueS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dtbC9yZXNvdXJjZXMvYWNjZXNzLXRhcmdldC1wYXRoLWRlbnkuanMJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dtbC9yZXNvdXJjZXMvYWNjZXNzLXRhcmdldC1w
YXRoLWRlbnkuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjMgQEAKKy8vIFtOYW1lXSBhY2Nl
c3MtdGFyZ2V0LXBhdGgtZGVueS5qcworCitjcmVhdGVTdGF0aWNXTUxUZXN0Q2FzZSgiVGVzdHMg
YWNjZXNzIGNvbnRyb2wgc3VwcG9ydCIsICJyZXNvdXJjZXMvYWNjZXNzLXRhcmdldC1wYXRoLWRl
bnkud21sIik7CisKK2Z1bmN0aW9uIHNldHVwVGVzdERvY3VtZW50KCkgeworICAgIC8vIG5vLW9w
Cit9CisKK2Z1bmN0aW9uIHByZXBhcmVUZXN0KCkgeworICAgIHZhciBsYXN0RXJyb3IgPSBjb25z
b2xlLmxhc3RXTUxFcnJvck1lc3NhZ2UoKTsKKyAgICBpZiAobGFzdEVycm9yID09ICJEZWNrIG5v
dCBhY2Nlc3NpYmxlLiIpIHsKKyAgICAgICAgY29tcGxldGVUZXN0KCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBzdGFydFRlc3QoMjUsIDE1KTsKK30KKworZnVuY3Rpb24gZXhlY3V0
ZVRlc3QoKSB7CisgICAgLy8gbm8tb3AKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dtbC9yZXNvdXJjZXMvYWNjZXNzLXRh
cmdldC1wYXRoLWRlbnkud21sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
d21sL3Jlc291cmNlcy9hY2Nlc3MtdGFyZ2V0LXBhdGgtZGVueS53bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dtbC9yZXNvdXJjZXMvYWNjZXNzLXRhcmdldC1wYXRo
LWRlbnkud21sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKKzw/eG1sIHZlcnNpb249IjEu
MCI/PgorPCFET0NUWVBFIHdtbCBQVUJMSUMgIi0vL1dBUEZPUlVNLy9EVEQgV01MIDEuMS8vRU4i
ICJodHRwOi8vd3d3LndhcGZvcnVtLm9yZy9EVEQvd21sXzEuMS54bWwiPgorPHdtbD4KKyAgICA8
Y2FyZD4KKyAgICAgICAgPGFuY2hvcj5TdGFydCB0ZXN0PGdvIGhyZWY9InVucmVhY2hhYmxlLXBh
dGgud21sIi8+PC9hbmNob3I+CisgICAgICAgIDxwPlRlc3QgZm9yIERlY2sgQWNjZXNzIGNvbnRy
b2wgaW4gV01MLjwvcD4KKyAgICAgICAgPHA+SWYgdGhlIHRlc3QgcGFzc2VzLCB0aGlzIGRlY2sg
d2lsbCByZW1haW4gdmlzaWJsZTwvcD4KKyAgICA8L2NhcmQ+Cis8L3dtbD4KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvd21sL3Jlc291cmNlcy9hY2Nlc3MtdGFyZ2V0LmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd21sL3Jlc291cmNlcy9hY2Nlc3MtdGFyZ2V0
LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93bWwvcmVzb3VyY2Vz
L2FjY2Vzcy10YXJnZXQuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkgQEAKKy8vIFtOYW1l
XSBhY2Nlc3MtdGFyZ2V0LmpzCisKK2NyZWF0ZVN0YXRpY1dNTFRlc3RDYXNlKCJUZXN0cyBhY2Nl
c3MgY29udHJvbCBzdXBwb3J0IiwgInJlc291cmNlcy9hY2Nlc3MtdGFyZ2V0LndtbCIpOworCitm
dW5jdGlvbiBzZXR1cFRlc3REb2N1bWVudCgpIHsKKyAgICAvLyBuby1vcAorfQorCitmdW5jdGlv
biBwcmVwYXJlVGVzdCgpIHsKKyAgICBzdGFydFRlc3QoMjUsIDE1KTsKK30KKworZnVuY3Rpb24g
ZXhlY3V0ZVRlc3QoKSB7CisgICAgdmFyIHJlc3VsdEluZGljYXRvckVsZW1lbnQgPSB0ZXN0RG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdEluZGljYXRvciIpOworICAgIGlmIChyZXN1bHRJ
bmRpY2F0b3JFbGVtZW50KQorICAgICAgICBjb21wbGV0ZVRlc3QoKTsKK30KKwordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dtbC9y
ZXNvdXJjZXMvYWNjZXNzLXRhcmdldC53bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93bWwvcmVzb3VyY2VzL2FjY2Vzcy10YXJnZXQud21sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93bWwvcmVzb3VyY2VzL2FjY2Vzcy10YXJnZXQud21sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPCFET0NU
WVBFIHdtbCBQVUJMSUMgIi0vL1dBUEZPUlVNLy9EVEQgV01MIDEuMS8vRU4iICJodHRwOi8vd3d3
LndhcGZvcnVtLm9yZy9EVEQvd21sXzEuMS54bWwiPgorPHdtbD4KKyAgICA8Y2FyZD4KKyAgICAg
ICAgPGFuY2hvcj5TdGFydCB0ZXN0PGdvIGhyZWY9ImxvY2tlZC1kZWNrLndtbCIvPjwvYW5jaG9y
PgorICAgICAgICA8cD5UZXN0IGZvciBEZWNrIEFjY2VzcyBjb250cm9sIGluIFdNTC48L3A+Cisg
ICAgICAgIDxwPklmIHRoZSB0ZXN0IHBhc3NlcywgdGhpcyBkZWNrIHdpbGwgaW1tZWRpYXRlbHkg
anVtcCB0byAibG9ja2VkLWRlY2sud21sIjwvcD4KKyAgICA8L2NhcmQ+Cis8L3dtbD4KSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd21sL3Jlc291cmNlcy9sb2NrZWQtZGVjay53bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93bWwvcmVzb3VyY2VzL2xvY2tlZC1k
ZWNrLndtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd21sL3Jlc291
cmNlcy9sb2NrZWQtZGVjay53bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzw/eG1s
IHZlcnNpb249IjEuMCI/PgorPCFET0NUWVBFIHdtbCBQVUJMSUMgIi0vL1dBUEZPUlVNLy9EVEQg
V01MIDEuMS8vRU4iICJodHRwOi8vd3d3LndhcGZvcnVtLm9yZy9EVEQvd21sXzEuMS54bWwiPgor
PHdtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPGFjY2VzcyBkb21haW49IjEyNy4wLjAuMSIgcGF0
aD0iYWNjZXNzLXRhcmdldC53bWwiLz4KKyAgICA8L2hlYWQ+CisKKyAgICA8Y2FyZD4KKyAgICAg
ICAgPHA+VGVzdCBmb3IgRGVjayBBY2Nlc3MgY29udHJvbCBpbiBXTUwuPC9wPgorICAgICAgICA8
cD5UaGlzIGlzIHRoZSBsb2NrZWQgdGFyZ2V0IGRlY2ssIG9ubHkgJ2FjY2Vzcy10YXJnZXQud21s
IiBjYW4gYWNjZXNzIG1lPC9wPgorICAgICAgICA8cCBpZD0icmVzdWx0SW5kaWNhdG9yIiBzdHls
ZT0iZGlzcGxheTogbm9uZSIvPgorICAgIDwvY2FyZD4KKzwvd21sPgpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93bWwvcmVzb3VyY2VzL3VucmVhY2hhYmxlLWRvbWFpbi53bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93bWwvcmVzb3VyY2VzL3VucmVhY2hhYmxl
LWRvbWFpbi53bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dtbC9y
ZXNvdXJjZXMvdW5yZWFjaGFibGUtZG9tYWluLndtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8IURPQ1RZUEUgd21sIFBVQkxJQyAiLS8vV0FQ
Rk9SVU0vL0RURCBXTUwgMS4xLy9FTiIgImh0dHA6Ly93d3cud2FwZm9ydW0ub3JnL0RURC93bWxf
MS4xLnhtbCI+Cis8d21sPgorICAgIDxoZWFkPgorICAgICAgICA8YWNjZXNzIGRvbWFpbj0ibm90
ZXhpc3RhbnQuY29tIiBwYXRoPSIvd21sL3Jlc291cmNlcy9hY2Nlc3MtdGFyZ2V0LWRlbnkud21s
Ii8+CisgICAgPC9oZWFkPgorCisgICAgPGNhcmQ+CisgICAgICAgIDxwPlRlc3QgZm9yIERlY2sg
QWNjZXNzIGNvbnRyb2wgaW4gV01MLjwvcD4KKyAgICAgICAgPHA+T25seSB3d3cubm90ZXhpc3Rh
bnQuY29tIHdvdWxkIGJlIGFsbG93ZWQgdG8gYWNjZXNzIHRoaXMgZGVjay4gSXQncyB1bnJlYWNo
YWJsZSBmcm9tIHRoZSBMYXlvdXRUZXN0czwvcD4KKyAgICA8L2NhcmQ+Cis8L3dtbD4KSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd21sL3Jlc291cmNlcy91bnJlYWNoYWJsZS1wYXRoLndt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dtbC9yZXNvdXJjZXMvdW5y
ZWFjaGFibGUtcGF0aC53bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dtbC9yZXNvdXJjZXMvdW5yZWFjaGFibGUtcGF0aC53bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPCFET0NUWVBFIHdtbCBQVUJMSUMgIi0v
L1dBUEZPUlVNLy9EVEQgV01MIDEuMS8vRU4iICJodHRwOi8vd3d3LndhcGZvcnVtLm9yZy9EVEQv
d21sXzEuMS54bWwiPgorPHdtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPGFjY2VzcyBkb21haW49
ImxvY2FsaG9zdCIgcGF0aD0iL2ZhaWxzL3Jlc291cmNlcy9hY2Nlc3MtdGFyZ2V0LWRlbnkud21s
Ii8+CisgICAgPC9oZWFkPgorCisgICAgPGNhcmQ+CisgICAgICAgIDxwPlRlc3QgZm9yIERlY2sg
QWNjZXNzIGNvbnRyb2wgaW4gV01MLjwvcD4KKyAgICAgICAgPHA+T25seSAvZmFpbHMvcmVzb3Vy
Y2VzL2FjY2Vzcy10YXJnZXQtZGVueS53bWwgd291bGQgYmUgYWxsb3dlZCB0byBhY2Nlc3MgdGhp
cyBkZWNrLjwvcD4KKyAgICA8L2NhcmQ+Cis8L3dtbD4KSW5kZXg6IExheW91dFRlc3RzL3dtbC9h
Y2Nlc3MtdGFyZ2V0LWRlbnktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3dtbC9hY2Nlc3MtdGFyZ2V0LWRlbnktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvd21sL2FjY2Vzcy10YXJnZXQtZGVueS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTkgQEAKK1dNTCBsYXlvdXQgdGVzdHMgLSB1c2luZyBYSFRNTCBzY3JpcHRp
bmcKKworCitUZXN0cyBhY2Nlc3MgY29udHJvbCBzdXBwb3J0CisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKworCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0t
Pi0tPicKKy0tLS0tLS0tCitTdGFydCB0ZXN0CitUZXN0IGZvciBEZWNrIEFjY2VzcyBjb250cm9s
IGluIFdNTC4KK0lmIHRoZSB0ZXN0IHBhc3NlcywgdGhpcyBkZWNrIHdpbGwgcmVtYWluIHZpc2li
bGUKSW5kZXg6IExheW91dFRlc3RzL3dtbC9hY2Nlc3MtdGFyZ2V0LWRlbnkuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy93bWwvYWNjZXNzLXRhcmdldC1kZW55Lmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy93bWwvYWNjZXNzLXRhcmdldC1kZW55Lmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQ+dmFyIHJl
bGF0aXZlUGF0aFRvTGF5b3V0VGVzdHMgPSAiLi4iOzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9XTUxUZXN0Q2FzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
aDE+V01MIGxheW91dCB0ZXN0cyAtIHVzaW5nIFhIVE1MIHNjcmlwdGluZzwvaDE+Cis8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9hY2Nlc3MtdGFyZ2V0LWRlbnkuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvd21sL2FjY2Vzcy10YXJnZXQtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3dtbC9hY2Nlc3MtdGFyZ2V0LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3dtbC9hY2Nlc3MtdGFyZ2V0LWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOCBAQAorV01MIGxheW91dCB0ZXN0cyAtIHVzaW5n
IFhIVE1MIHNjcmlwdGluZworCisKK1Rlc3RzIGFjY2VzcyBjb250cm9sIHN1cHBvcnQKKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGgg
Ly88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK1Rlc3QgZm9yIERlY2sgQWNjZXNzIGNvbnRy
b2wgaW4gV01MLgorVGhpcyBpcyB0aGUgbG9ja2VkIHRhcmdldCBkZWNrLCBvbmx5ICdhY2Nlc3Mt
dGFyZ2V0LndtbCIgY2FuIGFjY2VzcyBtZQpJbmRleDogTGF5b3V0VGVzdHMvd21sL2FjY2Vzcy10
YXJnZXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93bWwvYWNjZXNzLXRhcmdldC5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvd21sL2FjY2Vzcy10YXJnZXQuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlw
dD52YXIgcmVsYXRpdmVQYXRoVG9MYXlvdXRUZXN0cyA9ICIuLiI7PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL1dNTFRlc3RDYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxoMT5XTUwgbGF5b3V0IHRlc3RzIC0gdXNpbmcgWEhUTUwgc2NyaXB0aW5nPC9oMT4K
KzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2FjY2Vzcy10YXJnZXQuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvd21sL3ZhcmlhYmxlLXJlZmVyZW5jZS1pbnZhbGlk
LWNoYXJhY3Rlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvd21sL3Zh
cmlhYmxlLXJlZmVyZW5jZS1pbnZhbGlkLWNoYXJhY3Rlci1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDQ2OTY0KQorKysgTGF5b3V0VGVzdHMvd21sL3ZhcmlhYmxlLXJlZmVyZW5jZS1pbnZhbGlkLWNo
YXJhY3Rlci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSwzIEBACi1DT05T
T0xFIE1FU1NBR0U6IGxpbmUgMDogQSB2YXJpYWJsZSByZWZlcmVuY2UgdXNlcyBpbnZhbGlkIHN5
bnRheC4KLUNPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBBIHZhcmlhYmxlIHJlZmVyZW5jZSB1c2Vz
IGludmFsaWQgc3ludGF4LgotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IEEgdmFyaWFibGUgcmVm
ZXJlbmNlIHVzZXMgaW52YWxpZCBzeW50YXguCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogQSB2
YXJpYWJsZSByZWZlcmVuY2UgdXNlcyBpbnZhbGlkIHN5bnRheC4KLUNPTlNPTEUgTUVTU0FHRTog
bGluZSAwOiBBIHZhcmlhYmxlIHJlZmVyZW5jZSB1c2VzIGludmFsaWQgc3ludGF4LgotQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDA6IEEgdmFyaWFibGUgcmVmZXJlbmNlIHVzZXMgaW52YWxpZCBzeW50
YXguCiBXTUwgbGF5b3V0IHRlc3RzIC0gdXNpbmcgWEhUTUwgc2NyaXB0aW5nCiAKIApJbmRleDog
TGF5b3V0VGVzdHMvd21sL3Jlc291cmNlcy9hY2Nlc3MtdGFyZ2V0LWRlbnkuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvd21sL3Jlc291cmNlcy9hY2Nlc3MtdGFyZ2V0LWRlbnkuanMJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy93bWwvcmVzb3VyY2VzL2FjY2Vzcy10YXJnZXQtZGVu
eS5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMyBAQAorLy8gW05hbWVdIGFjY2Vzcy10YXJn
ZXQtZGVueS5qcworCitjcmVhdGVTdGF0aWNXTUxUZXN0Q2FzZSgiVGVzdHMgYWNjZXNzIGNvbnRy
b2wgc3VwcG9ydCIsICJyZXNvdXJjZXMvYWNjZXNzLXRhcmdldC1kZW55LndtbCIpOworCitmdW5j
dGlvbiBzZXR1cFRlc3REb2N1bWVudCgpIHsKKyAgICAvLyBuby1vcAorfQorCitmdW5jdGlvbiBw
cmVwYXJlVGVzdCgpIHsKKyAgICB2YXIgbGFzdEVycm9yID0gY29uc29sZS5sYXN0V01MRXJyb3JN
ZXNzYWdlKCk7CisgICAgaWYgKGxhc3RFcnJvciA9PSAiRGVjayBub3QgYWNjZXNzaWJsZS4iKSB7
CisgICAgICAgIGNvbXBsZXRlVGVzdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
c3RhcnRUZXN0KDI1LCAxNSk7Cit9CisKK2Z1bmN0aW9uIGV4ZWN1dGVUZXN0KCkgeworICAgIC8v
IG5vLW9wCit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0
VGVzdHMvd21sL3Jlc291cmNlcy9hY2Nlc3MtdGFyZ2V0LWRlbnkud21sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3dtbC9yZXNvdXJjZXMvYWNjZXNzLXRhcmdldC1kZW55LndtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL3dtbC9yZXNvdXJjZXMvYWNjZXNzLXRhcmdldC1kZW55Lndt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKzwh
RE9DVFlQRSB3bWwgUFVCTElDICItLy9XQVBGT1JVTS8vRFREIFdNTCAxLjEvL0VOIiAiaHR0cDov
L3d3dy53YXBmb3J1bS5vcmcvRFREL3dtbF8xLjEueG1sIj4KKzx3bWw+CisgICAgPGNhcmQ+Cisg
ICAgICAgIDxhbmNob3I+U3RhcnQgdGVzdDxnbyBocmVmPSJsb2NrZWQtZGVjay53bWwiLz48L2Fu
Y2hvcj4KKyAgICAgICAgPHA+VGVzdCBmb3IgRGVjayBBY2Nlc3MgY29udHJvbCBpbiBXTUwuPC9w
PgorICAgICAgICA8cD5JZiB0aGUgdGVzdCBwYXNzZXMsIHRoaXMgZGVjayB3aWxsIHJlbWFpbiB2
aXNpYmxlPC9wPgorICAgIDwvY2FyZD4KKzwvd21sPgpJbmRleDogTGF5b3V0VGVzdHMvd21sL3Jl
c291cmNlcy9hY2Nlc3MtdGFyZ2V0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3dtbC9y
ZXNvdXJjZXMvYWNjZXNzLXRhcmdldC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3dt
bC9yZXNvdXJjZXMvYWNjZXNzLXRhcmdldC5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOSBA
QAorLy8gW05hbWVdIGFjY2Vzcy10YXJnZXQuanMKKworY3JlYXRlU3RhdGljV01MVGVzdENhc2Uo
IlRlc3RzIGFjY2VzcyBjb250cm9sIHN1cHBvcnQiLCAicmVzb3VyY2VzL2FjY2Vzcy10YXJnZXQu
d21sIik7CisKK2Z1bmN0aW9uIHNldHVwVGVzdERvY3VtZW50KCkgeworICAgIC8vIG5vLW9wCit9
CisKK2Z1bmN0aW9uIHByZXBhcmVUZXN0KCkgeworICAgIHN0YXJ0VGVzdCgyNSwgMTUpOworfQor
CitmdW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKKyAgICB2YXIgcmVzdWx0SW5kaWNhdG9yRWxlbWVu
dCA9IHRlc3REb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0SW5kaWNhdG9yIik7CisgICAg
aWYgKHJlc3VsdEluZGljYXRvckVsZW1lbnQpCisgICAgICAgIGNvbXBsZXRlVGVzdCgpOworfQor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL3dtbC9y
ZXNvdXJjZXMvYWNjZXNzLXRhcmdldC53bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvd21s
L3Jlc291cmNlcy9hY2Nlc3MtdGFyZ2V0LndtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L3dtbC9yZXNvdXJjZXMvYWNjZXNzLXRhcmdldC53bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
OSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8IURPQ1RZUEUgd21sIFBVQkxJQyAiLS8vV0FQ
Rk9SVU0vL0RURCBXTUwgMS4xLy9FTiIgImh0dHA6Ly93d3cud2FwZm9ydW0ub3JnL0RURC93bWxf
MS4xLnhtbCI+Cis8d21sPgorICAgIDxjYXJkPgorICAgICAgICA8YW5jaG9yPlN0YXJ0IHRlc3Q8
Z28gaHJlZj0ibG9ja2VkLWRlY2sud21sIi8+PC9hbmNob3I+CisgICAgICAgIDxwPlRlc3QgZm9y
IERlY2sgQWNjZXNzIGNvbnRyb2wgaW4gV01MLjwvcD4KKyAgICAgICAgPHA+SWYgdGhlIHRlc3Qg
cGFzc2VzLCB0aGlzIGRlY2sgd2lsbCBpbW1lZGlhdGVseSBqdW1wIHRvICJsb2NrZWQtZGVjay53
bWwiPC9wPgorICAgIDwvY2FyZD4KKzwvd21sPgpJbmRleDogTGF5b3V0VGVzdHMvd21sL3Jlc291
cmNlcy9sb2NrZWQtZGVjay53bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvd21sL3Jlc291
cmNlcy9sb2NrZWQtZGVjay53bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy93bWwvcmVz
b3VyY2VzL2xvY2tlZC1kZWNrLndtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorPD94
bWwgdmVyc2lvbj0iMS4wIj8+Cis8IURPQ1RZUEUgd21sIFBVQkxJQyAiLS8vV0FQRk9SVU0vL0RU
RCBXTUwgMS4xLy9FTiIgImh0dHA6Ly93d3cud2FwZm9ydW0ub3JnL0RURC93bWxfMS4xLnhtbCI+
Cis8d21sPgorICAgIDxoZWFkPgorICAgICAgICA8YWNjZXNzIGRvbWFpbj0ibG9jYWxob3N0IiBw
YXRoPSJhY2Nlc3MtdGFyZ2V0LndtbCIvPgorICAgIDwvaGVhZD4KKworICAgIDxjYXJkPgorICAg
ICAgICA8cD5UZXN0IGZvciBEZWNrIEFjY2VzcyBjb250cm9sIGluIFdNTC48L3A+CisgICAgICAg
IDxwPlRoaXMgaXMgdGhlIGxvY2tlZCB0YXJnZXQgZGVjaywgb25seSAnYWNjZXNzLXRhcmdldC53
bWwiIGNhbiBhY2Nlc3MgbWU8L3A+CisgICAgICAgIDxwIGlkPSJyZXN1bHRJbmRpY2F0b3IiIHN0
eWxlPSJkaXNwbGF5OiBub25lIi8+CisgICAgPC9jYXJkPgorPC93bWw+
</data>
<flag name="review"
          id="18615"
          type_id="1"
          status="+"
          setter="staikos"
    />
    <flag name="commit-queue"
          id="18617"
          type_id="3"
          status="+"
          setter="staikos"
    />
          </attachment>
      

    </bug>

</bugzilla>