<?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>156947</bug_id>
          
          <creation_ts>2016-04-22 21:57:21 -0700</creation_ts>
          <short_desc>Networking process crash due to missing -[WebCoreAuthenticationClientAsChallengeSender performDefaultHandlingForAuthenticationChallenge:] implementation</short_desc>
          <delta_ts>2016-07-27 16:00:27 -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>Page Loading</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=160234</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=160235</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1186576</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2016-04-22 21:57:21 -0700</bug_when>
    <thetext>com.apple.WebKit.Networking crashes at -[WebCoreAuthenticationClientAsChallengeSender performDefaultHandlingForAuthenticationChallenge:] due to an unrecognized selector sent to instance:

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Application Specific Information:
*** Terminating app due to uncaught exception &apos;NSInvalidArgumentException&apos;, reason: &apos;-[WebCoreAuthenticationClientAsChallengeSender performDefaultHandlingForAuthenticationChallenge:]: unrecognized selector sent to instance 0x7fbe4ba2c100&apos;
abort() called
terminating with uncaught exception of type NSException

Application Specific Backtrace 1:
0   CoreFoundation                      0x00007fff81124e32 __exceptionPreprocess + 178
1   libobjc.A.dylib                     0x00007fff8a34f4fa objc_exception_throw + 48
2   CoreFoundation                      0x00007fff8118e34d -[NSObject(NSObject) doesNotRecognizeSelector:] + 205
3   CoreFoundation                      0x00007fff81095472 ___forwarding___ + 514
4   CoreFoundation                      0x00007fff810951e8 _CF_forwarding_prep_0 + 120
5   WebKit                              0x00007fff8bf08490 _ZN6WebKit21AuthenticationManager40performDefaultHandlingForSingleChallengeEy + 104
6   WebKit                              0x00007fff8bf083d9 _ZN6WebKit21AuthenticationManager22performDefaultHandlingEy + 73
7   WebKit                              0x00007fff8bf098ca _ZN6WebKit21AuthenticationManager17didReceiveMessageERN3IPC10ConnectionERNS1_14MessageDecoderE + 196
8   WebKit                              0x00007fff8bf44b61 _ZN3IPC18MessageReceiverMap15dispatchMessageERNS_10ConnectionERNS_14MessageDecoderE + 113
9   WebKit                              0x00007fff8bf69216 _ZN6WebKit14NetworkProcess17didReceiveMessageERN3IPC10ConnectionERNS1_14MessageDecoderE + 28
10  WebKit                              0x00007fff8bf0c602 _ZN3IPC10Connection15dispatchMessageENSt3__110unique_ptrINS_14MessageDecoderENS1_14default_deleteIS3_EEEE + 102
11  WebKit                              0x00007fff8bf0eb2e _ZN3IPC10Connection18dispatchOneMessageEv + 114
12  JavaScriptCore                      0x00007fff92100d85 _ZN3WTF7RunLoop11performWorkEv + 437
13  JavaScriptCore                      0x00007fff92101462 _ZN3WTF7RunLoop11performWorkEPv + 34
14  CoreFoundation                      0x00007fff810ba8b1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
15  CoreFoundation                      0x00007fff8109a0ac __CFRunLoopDoSources0 + 556
16  CoreFoundation                      0x00007fff810995cf __CFRunLoopRun + 927
17  CoreFoundation                      0x00007fff81098fc8 CFRunLoopRunSpecific + 296
18  Foundation                          0x00007fff86bcdf59 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 270
19  Foundation                          0x00007fff86bcde38 -[NSRunLoop(NSRunLoop) run] + 74
20  libxpc.dylib                        0x00007fff8412a4c8 _xpc_objc_main + 751
21  libxpc.dylib                        0x00007fff84128f1e xpc_main + 494
22  com.apple.WebKit.Networking         0x10df6db4a main + 16 (Shared/EntryPointUtilities/mac/XPCService/XPCServiceMain.mm:89)
23  libdyld.dylib                       0x00007fff94b305ad start + 1

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib        	0x00007fff884c60ae __pthread_kill + 10
1   libsystem_pthread.dylib       	0x00007fff90a9a500 pthread_kill + 90
2   libsystem_c.dylib             	0x00007fff8723137b abort + 129
3   libc++abi.dylib               	0x00007fff900baf81 abort_message + 257
4   libc++abi.dylib               	0x00007fff900e0a47 default_terminate_handler() + 267
5   libobjc.A.dylib               	0x00007fff8a35115e _objc_terminate() + 103
6   libc++abi.dylib               	0x00007fff900de19e std::__terminate(void (*)()) + 8
7   libc++abi.dylib               	0x00007fff900dde27 __cxa_rethrow + 99
8   libobjc.A.dylib               	0x00007fff8a34f998 objc_exception_rethrow + 40
9   com.apple.CoreFoundation      	0x00007fff8109905b CFRunLoopRunSpecific + 443
10  com.apple.Foundation          	0x00007fff86bcdf59 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 270
11  com.apple.Foundation          	0x00007fff86bcde38 -[NSRunLoop(NSRunLoop) run] + 74
12  libxpc.dylib                  	0x00007fff8412a4c8 _xpc_objc_main + 751
13  libxpc.dylib                  	0x00007fff84128f1e xpc_main + 494
14  com.apple.WebKit.Networking   	0x10df6db4a main + 16 (Shared/EntryPointUtilities/mac/XPCService/XPCServiceMain.mm:89)
15  libdyld.dylib                 	0x00007fff94b305ad start + 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186577</commentid>
    <comment_count>1</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2016-04-22 21:58:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/23325160&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186579</commentid>
    <comment_count>2</comment_count>
      <attachid>277136</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2016-04-22 22:18:58 -0700</bug_when>
    <thetext>Created attachment 277136
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186581</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-22 22:19:53 -0700</bug_when>
    <thetext>Attachment 277136 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:9:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186582</commentid>
    <comment_count>4</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2016-04-22 22:20:30 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Created attachment 277136 [details]
&gt; Patch v1

Looking for feedback on the approach for the patch, as well as suggestions for how to write a test.  (Does this path require SSL certificate authentication?  Do changes to Tools projects look like they&apos;re reasonable?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186594</commentid>
    <comment_count>5</comment_count>
      <attachid>277136</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-04-22 23:02:38 -0700</bug_when>
    <thetext>Comment on attachment 277136
Patch v1

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

&gt; Does this path require SSL certificate authentication?

Unsure. Maybe sending -performDefaultHandlingForAuthenticationChallenge: for a password challenge would result in returning the original 401 response.

&gt; Source/WebCore/ChangeLog:24
&gt; +        - Add -respondsToSelector: checks since
&gt; +          -performDefaultHandlingForAuthenticationChallenge: and
&gt; +          -rejectProtectionSpaceAndContinueWithChallenge: are optional
&gt; +          by API contract.

I&apos;m not sure how this can work. If we don&apos;t send the message, then the sender will never know about the decision, and the connection will leak, won&apos;t it?

&gt; Source/WebCore/platform/network/mac/ResourceHandleMac.mm:571
&gt; -        [challenge.sender() performDefaultHandlingForAuthenticationChallenge:challenge.nsURLAuthenticationChallenge()];
&gt; +        if ([challenge.sender() respondsToSelector:@selector(performDefaultHandlingForAuthenticationChallenge:)])
&gt; +            [challenge.sender() performDefaultHandlingForAuthenticationChallenge:challenge.nsURLAuthenticationChallenge()];

Is the sender here always CFNetwork? It would seem surprising if it&apos;s free to decide which methods of the protocol to implement.

&gt; Tools/DumpRenderTree/mac/ResourceLoadDelegate.mm:206
&gt; +    if (gTestRunner-&gt;performsDefaultHandlingForAuthenticationChallenge()) {

This is starting to look like we should let tests implement authentication callbacks in JS, instead of controlling client behavior with a set of confusing interdependent booleans.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186607</commentid>
    <comment_count>6</comment_count>
      <attachid>277147</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2016-04-23 03:30:27 -0700</bug_when>
    <thetext>Created attachment 277147
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186608</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-23 03:31:41 -0700</bug_when>
    <thetext>Attachment 277147 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:9:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186609</commentid>
    <comment_count>8</comment_count>
      <attachid>277136</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2016-04-23 03:46:53 -0700</bug_when>
    <thetext>Comment on attachment 277136
Patch v1

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

&gt;&gt; Source/WebCore/ChangeLog:24
&gt;&gt; +          by API contract.
&gt; 
&gt; I&apos;m not sure how this can work. If we don&apos;t send the message, then the sender will never know about the decision, and the connection will leak, won&apos;t it?

The API contract clearly states these methods are optional:
&lt;https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Protocols/NSURLAuthenticationChallengeSender_Protocol/#//apple_ref/doc/uid/20001706-SW2&gt;

&gt;&gt; Source/WebCore/platform/network/mac/ResourceHandleMac.mm:571
&gt;&gt; +            [challenge.sender() performDefaultHandlingForAuthenticationChallenge:challenge.nsURLAuthenticationChallenge()];
&gt; 
&gt; Is the sender here always CFNetwork? It would seem surprising if it&apos;s free to decide which methods of the protocol to implement.

I&apos;m not sure who the sender is, but why is that relevant.  The API contract is very clear that these methods are optional, so why wouldn&apos;t we check here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186616</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-04-23 08:37:58 -0700</bug_when>
    <thetext>&gt; I&apos;m not sure who the sender is, but why is that relevant.  The API contract is very clear that these methods are optional, so why wouldn&apos;t we check here?

That&apos;s not the API contract, that&apos;s something that unrelated code using this protocol may choose to do.

What matters to us is what CFNetwork does, not what unrelated theoretical class in user code is allowed to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186618</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-04-23 08:51:30 -0700</bug_when>
    <thetext>To put it another way, if CFNetwork ever provides a sender that doesn&apos;t implement these methods, we should probably fall back to another method, not just drop the challenge on the floor. 

My uninformed guess is that CFNetwork always implements these, and we are actually dealing with a use after free.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200162</commentid>
    <comment_count>11</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2016-06-07 12:28:31 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; To put it another way, if CFNetwork ever provides a sender that doesn&apos;t
&gt; implement these methods, we should probably fall back to another method, not
&gt; just drop the challenge on the floor. 
&gt; 
&gt; My uninformed guess is that CFNetwork always implements these, and we are
&gt; actually dealing with a use after free.

Moving to RESOLVED/INVALID.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214390</commentid>
    <comment_count>12</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-07-25 16:49:08 -0700</bug_when>
    <thetext>I think we should at least land the respondsToSelector checks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214419</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-07-25 17:43:45 -0700</bug_when>
    <thetext>Is there any evidence that these checks are appropriate? I wouldn&apos;t want to confuse the code with unnecessary checks when we expect that there is some other kind of bug in it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214455</commentid>
    <comment_count>14</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2016-07-25 22:11:02 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Is there any evidence that these checks are appropriate? I wouldn&apos;t want to
&gt; confuse the code with unnecessary checks when we expect that there is some
&gt; other kind of bug in it.

Yes.  The methods are marked as optional in the NSProtocol, so they should be checked to see if they exist before calling them on an object.

Why would it ever be correct to assume that optional methods are always implemented?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214557</commentid>
    <comment_count>15</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-07-26 09:33:25 -0700</bug_when>
    <thetext>The methods are optional in protocol, which means that some other code using the protocol is not required to implement them. That is not evidence towards what CFNetwork is required/documented/expected to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214685</commentid>
    <comment_count>16</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-07-26 14:58:31 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214686</commentid>
    <comment_count>17</comment_count>
      <attachid>284636</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-07-26 14:58:33 -0700</bug_when>
    <thetext>Created attachment 284636
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214709</commentid>
    <comment_count>18</comment_count>
      <attachid>284636</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-26 15:32:37 -0700</bug_when>
    <thetext>Comment on attachment 284636
Patch

Clearing flags on attachment: 284636

Committed r203743: &lt;http://trac.webkit.org/changeset/203743&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214710</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-26 15:32:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214711</commentid>
    <comment_count>20</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-07-26 15:36:30 -0700</bug_when>
    <thetext>Landed without respondsToSelector checks.  Having missing methods in WebCoreAuthenticationClientAsChallengeSender is demonstrably wrong, so we added them with a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214755</commentid>
    <comment_count>21</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-07-26 16:42:07 -0700</bug_when>
    <thetext>Minor test fix in https://trac.webkit.org/changeset/203755</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215069</commentid>
    <comment_count>22</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-07-27 16:00:27 -0700</bug_when>
    <thetext>I assume that the INVALID state was accidental, moving to FIXED.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277136</attachid>
            <date>2016-04-22 22:18:58 -0700</date>
            <delta_ts>2016-04-23 03:29:36 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-156947-20160422221921.patch</filename>
            <type>text/plain</type>
            <size>21719</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5OTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDI2MDkzNTQyM2Q2YzI3
YmQyYmVlMzA0OTZiMjJkZTYzN2E4OTBiOC4uZWVmYjAwMmE3M2QxNjY2MGUxZGZlZDQyY2VmNjRl
OTM5ZDFlY2IzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE2LTAxLTMxICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgTmV0d29ya2luZyBwcm9j
ZXNzIGNyYXNoIGR1ZSB0byBtaXNzaW5nIC1bV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXND
aGFsbGVuZ2VTZW5kZXIgcGVyZm9ybURlZmF1bHRIYW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOl0gaW1wbGVtZW50YXRpb24KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTU2
OTQ3PgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjMzMjUxNjA+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbToKKyAg
ICAgICAgKC1bV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXIgcGVy
Zm9ybURlZmF1bHRIYW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl0pOgorICAgICAg
ICAoLVtXZWJDb3JlQXV0aGVudGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciByZWplY3RQ
cm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZVdpdGhDaGFsbGVuZ2U6XSk6CisgICAgICAgIC0gQWRk
IG1pc3NpbmcgbWV0aG9kcyB0aGF0IGNhbGwgdGhyb3VnaCB0byBBdXRoZW50aWNhdGlvbkNsaWVu
dC4KKyAgICAgICAgICBUaGlzIGZpeGVzIHRoZSBjcmFzaGVzLgorCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZh
dWx0SGFuZGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVk
Q2hhbGxlbmdlUmVqZWN0aW9uKToKKyAgICAgICAgLSBBZGQgLXJlc3BvbmRzVG9TZWxlY3Rvcjog
Y2hlY2tzIHNpbmNlCisgICAgICAgICAgLXBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTogYW5kCisgICAgICAgICAgLXJlamVjdFByb3RlY3Rpb25TcGFjZUFu
ZENvbnRpbnVlV2l0aENoYWxsZW5nZTogYXJlIG9wdGlvbmFsCisgICAgICAgICAgYnkgQVBJIGNv
bnRyYWN0LgorCiAyMDE2LTA0LTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgQ2Fubm90IGFjY2VzcyB0aGUgU1FMVHJhbnNhY3Rpb24uY29uc3RydWN0b3IucHJv
dG90eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggY2M2MmYwMjg3YjRiMTRkNWIxNjBiZWFhYzYxZjMwMmYwM2Zi
ZTFmNC4uYTkxNDc5MDEyMzA4MjJmZDg4MjIxZDdlNTEwM2ZmMjg0NDMxOGJkYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5IEBACisyMDE2LTAxLTMxICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBh
cHBsZS5jb20+CisKKyAgICAgICAgTmV0d29ya2luZyBwcm9jZXNzIGNyYXNoIGR1ZSB0byBtaXNz
aW5nIC1bV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXIgcGVyZm9y
bURlZmF1bHRIYW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl0gaW1wbGVtZW50YXRp
b24KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTU2OTQ3PgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMjMzMjUxNjA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25N
YW5hZ2VyQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6
cmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5nKToKKyAgICAgICAgKFdlYktp
dDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZENoYWxsZW5nZVJlamVjdGlvbik6Cisg
ICAgICAgIC0gQWRkIC1yZXNwb25kc1RvU2VsZWN0b3I6IGNoZWNrcyBzaW5jZQorICAgICAgICAg
IC1wZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6IGFuZAor
ICAgICAgICAgIC1yZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZVdpdGhDaGFsbGVuZ2U6
IGFyZSBvcHRpb25hbAorICAgICAgICAgIGJ5IEFQSSBjb250cmFjdC4KKwogMjAxNi0wNC0yMiAg
UnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXhpbmcgYSB0
eXBvIGluIG15IGxhc3QgY29tbWl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQppbmRleCBlMzhiMDM4N2RlMDQ2
YzdjMDE1NzQzZDdiYjdlYTM2ZTQwOTM4MDIyLi5hYzJlYWJhOGFjNzhhYWViZGRiZjNhZmRmZjQ4
NTdmYWViMmY5NmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQpAQCAtODksNiArODksMTggQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgICAgIG1fY2xpZW50LT5yZWNlaXZlZENhbmNlbGxhdGlv
bihjb3JlKGNoYWxsZW5nZSkpOwogfQogCistICh2b2lkKXBlcmZvcm1EZWZhdWx0SGFuZGxpbmdG
b3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAq
KWNoYWxsZW5nZQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnJlY2Vp
dmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5kbGluZyhjb3JlKGNoYWxsZW5nZSkpOworfQor
CistICh2b2lkKXJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlV2l0aENoYWxsZW5nZToo
TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZQoreworICAgIGlmIChtX2Ns
aWVudCkKKyAgICAgICAgbV9jbGllbnQtPnJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvcmUo
Y2hhbGxlbmdlKSk7Cit9CisKICNpZiBVU0UoQ0ZORVRXT1JLKQogLSAodm9pZClzZXRDRkNoYWxs
ZW5nZTooQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmKWNoYWxsZW5nZQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQpp
bmRleCA4YTI2ODg4ZTdiMjNkYzQyNGI5OGI1MWU3ODIyN2I5ZWIyZjAxNzI1Li5lYjM5ZTBmMmVi
NjYxMzFmMjc4NjRkZjlhY2M2NDA4MGIxMzI0OWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQpAQCAtNTY3
LDcgKzU2Nyw4IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsCiAgICAgICAgIGNsaWVudCgpLT5k
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodGhpcywgZC0+bV9jdXJyZW50V2ViQ2hh
bGxlbmdlKTsKICAgICBlbHNlIHsKICAgICAgICAgY2xlYXJBdXRoZW50aWNhdGlvbigpOwotICAg
ICAgICBbY2hhbGxlbmdlLnNlbmRlcigpIHBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTpjaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgp
XTsKKyAgICAgICAgaWYgKFtjaGFsbGVuZ2Uuc2VuZGVyKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihwZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
KV0pCisgICAgICAgICAgICBbY2hhbGxlbmdlLnNlbmRlcigpIHBlcmZvcm1EZWZhdWx0SGFuZGxp
bmdGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSgpXTsKICAgICB9CiB9CiAKQEAgLTcxMCw3ICs3MTEsOCBAQCB2b2lkIFJlc291
cmNlSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcoY29uc3Qg
QXV0aGVudGljYXRpbwogICAgIGlmIChjaGFsbGVuZ2UgIT0gZC0+bV9jdXJyZW50V2ViQ2hhbGxl
bmdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBbW2QtPm1fY3VycmVudE1hY0NoYWxsZW5nZSBz
ZW5kZXJdIHBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpk
LT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2VdOworICAgIGlmIChbW2QtPm1fY3VycmVudE1hY0NoYWxs
ZW5nZSBzZW5kZXJdIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGVyZm9ybURlZmF1bHRI
YW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOildKQorICAgICAgICBbW2QtPm1fY3Vy
cmVudE1hY0NoYWxsZW5nZSBzZW5kZXJdIHBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTpkLT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2VdOwogCiAgICAgY2xlYXJB
dXRoZW50aWNhdGlvbigpOwogfQpAQCAtNzIzLDcgKzcyNSw4IEBAIHZvaWQgUmVzb3VyY2VIYW5k
bGU6OnJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiBjCiAgICAgaWYgKGNoYWxsZW5nZSAhPSBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFtbZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdlIHNlbmRlcl0g
cmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVXaXRoQ2hhbGxlbmdlOmQtPm1fY3VycmVu
dE1hY0NoYWxsZW5nZV07CisgICAgaWYgKFtbZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdlIHNlbmRl
cl0gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihyZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRD
b250aW51ZVdpdGhDaGFsbGVuZ2U6KV0pCisgICAgICAgIFtbZC0+bV9jdXJyZW50TWFjQ2hhbGxl
bmdlIHNlbmRlcl0gcmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVXaXRoQ2hhbGxlbmdl
OmQtPm1fY3VycmVudE1hY0NoYWxsZW5nZV07CiAKICAgICBjbGVhckF1dGhlbnRpY2F0aW9uKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXV0aGVudGljYXRpb24vY29j
b2EvQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW0KaW5kZXgg
MDBmMjRhOWRmMTg3ZjZiZDU2M2ZkYWQ3ZTkwYzA4YjUxNGU2ZTFkMS4uNjU5NGUyN2FhYzI4NmVm
ZDkyNzcyYTI5YmUwNDAyMTJiM2QwYTAzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNh
dGlvbk1hbmFnZXJDb2NvYS5tbQpAQCAtNTQsMTQgKzU0LDE3IEBAIHZvaWQgQXV0aGVudGljYXRp
b25NYW5hZ2VyOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYKIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZFJlcXVlc3RUb1BlcmZv
cm1EZWZhdWx0SGFuZGxpbmcoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKQogewogI2lmICFVU0UoQ0ZORVRXT1JLKQotICAgIFthdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5zZW5kZXIoKSBwZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSgpXTsKKyAgICBpZiAoW2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnNlbmRlcigp
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGVyZm9ybURlZmF1bHRIYW5kbGluZ0ZvckF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOildKQorCisgICAgICAgIFthdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5zZW5kZXIoKSBwZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSgpXTsKICNlbmRpZgogfQogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVjZWl2ZWRD
aGFsbGVuZ2VSZWplY3Rpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKQogewogI2lmICFVU0UoQ0ZORVRXT1JLKQotICAgIFthdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5zZW5kZXIoKSByZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZVdp
dGhDaGFsbGVuZ2U6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSgpXTsKKyAgICBpZiAoW2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnNlbmRlcigpIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGlu
dWVXaXRoQ2hhbGxlbmdlOildKQorICAgICAgICBbYXV0aGVudGljYXRpb25DaGFsbGVuZ2Uuc2Vu
ZGVyKCkgcmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVXaXRoQ2hhbGxlbmdlOmF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKV07CiAjZW5k
aWYKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDQ3NWVhZDFmMGFiMjgxNmNjMzgzN2JmNjZkZjJmYzk0YTJlNDU4OTIuLjkwZDg5MmIxMzA1
MDVlNGQxMDZkZTU1YTgxN2VhMWFkNjJhZjY3MjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxNi0wMi0wMSAgRGF2
aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIE5ldHdvcmtpbmcgcHJv
Y2VzcyBjcmFzaCBkdWUgdG8gbWlzc2luZyAtW1dlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFz
Q2hhbGxlbmdlU2VuZGVyIHBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTpdIGltcGxlbWVudGF0aW9uCisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzE1
Njk0Nz4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIzMzI1MTYwPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdFJ1
bm5lci5jcHA6CisgICAgICAgIChzZXRQZXJmb3Jtc0RlZmF1bHRIYW5kbGluZ0ZvckF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlQ2FsbGJhY2spOiBBZGRlZC4KKyAgICAgICAgKFRlc3RSdW5uZXI6OnN0
YXRpY0Z1bmN0aW9ucyk6IFVwZGF0ZSBmb3IgbmV3IGZ1bmN0aW9uLgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKFRlc3RSdW5uZXI6OnBlcmZvcm1zRGVm
YXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoVGVzdFJ1
bm5lcjo6c2V0UGVyZm9ybXNEZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSk6CisgICAgICAgIC0gQWRkZWQgZGVjbGFyYXRpb25zLgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bUmVzb3VyY2VMb2Fk
RGVsZWdhdGUgd2ViVmlldzpyZXNvdXJjZTpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6ZnJvbURhdGFTb3VyY2U6XSk6CisgICAgICAgIEFkZCBzdXBwb3J0IGZvciB0ZXN0UnVubmVy
LnBlcmZvcm1zRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKS4KKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgor
ICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRIYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VzKTogRml4IG5hbWUuCisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldFBlcmZvcm1zRGVm
YXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOiBBZGRlZC4KKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOiBVcGRhdGUgdG8gcmVz
ZXQgc3RhdGUuCisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UpOiBIYW5kbGUKKyAgICAgICAgbV9wZXJmb3Jtc0RlZmF1bHRIYW5k
bGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldFBl
cmZvcm1zRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAg
ICBBZGRlZCBkZWNsYXJhdGlvbi4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNz
YWdlRnJvbUluamVjdGVkQnVuZGxlKTogRml4IG5hbWUgZm9yCisgICAgICAgICJTZXRIYW5kbGVz
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VzIi4gIEhhbmRsZSBuZXcKKyAgICAgICAgIlNldFBlcmZv
cm1zRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiIG1lc3NhZ2UuCisK
IDIwMTYtMDQtMjIgIFNyaW5pdmFzYW4gVmlqYXlhcmFnaGF2YW4gIDxzdmlqYXlhcmFnaGF2YW5A
YXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBKU0MgdGVzdCByZXN1bHRzIGluIGpzb24gZm9ybWF0
IHRvIGEgYnVpbGRib3QgbG9nCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0
UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IGE2
OWMwZjE0NTRhNjk2YzBmNmEyN2NlYjBkNGI3YmIwMWRmN2IyYzMuLjY5ZThjMDI1Nzk1YzM5YmJk
YmI2NDkyY2FhNjkwNzgyZWVhOTgxNTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3Bw
CkBAIC0xMDAsNyArMTAwLDYgQEAgVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcihjb25zdCBzdGQ6OnN0
cmluZyYgdGVzdFVSTCwgY29uc3Qgc3RkOjpzdHJpbmcmIGV4cGVjdGVkUGkKICAgICAsIG1fZ2xv
YmFsRmxhZyhmYWxzZSkKICAgICAsIG1faXNHZW9sb2NhdGlvblBlcm1pc3Npb25TZXQoZmFsc2Up
CiAgICAgLCBtX2dlb2xvY2F0aW9uUGVybWlzc2lvbihmYWxzZSkKLSAgICAsIG1faGFuZGxlc0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcyhmYWxzZSkKICAgICAsIG1faXNQcmludGluZyhmYWxzZSkK
ICAgICAsIG1fZGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZCh0cnVlKQogICAgICwgbV91c2VEZWZl
cnJlZEZyYW1lTG9hZGluZyhmYWxzZSkKQEAgLTEwNzIsNiArMTA3MSwxOCBAQCBzdGF0aWMgSlNW
YWx1ZVJlZiBzZXRIYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzQ2FsbGJhY2soSlNDb250
ZXh0UmVmIGNvbnRleAogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
IH0KIAorc3RhdGljIEpTVmFsdWVSZWYgc2V0UGVyZm9ybXNEZWZhdWx0SGFuZGxpbmdGb3JBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVj
dFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291
bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikK
K3sKKyAgICAvLyBIYXMgbWFjIGltcGxlbWVudGF0aW9uLgorICAgIGlmIChhcmd1bWVudENvdW50
IDwgMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisg
ICAgVGVzdFJ1bm5lciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PFRlc3RSdW5uZXIqPihKU09i
amVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPnNldFBlcmZvcm1z
RGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoSlNWYWx1ZVRvQm9vbGVh
bihjb250ZXh0LCBhcmd1bWVudHNbMF0pKTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgc2V0UE9TSVhMb2NhbGVDYWxs
YmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0
UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFy
Z3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgaWYgKGFyZ3VtZW50Q291
bnQgPCAxKQpAQCAtMjEwNiw2ICsyMTE3LDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogVGVzdFJ1bm5l
cjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAic2V0RG9tYWluUmVsYXhhdGlvbkZvcmJp
ZGRlbkZvclVSTFNjaGVtZSIsIHNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hl
bWVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24i
LCBzZXRHZW9sb2NhdGlvblBlcm1pc3Npb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJz
ZXRIYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzIiwgc2V0SGFuZGxlc0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgInNldFBlcmZvcm1zRGVm
YXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiLCBzZXRQZXJmb3Jtc0RlZmF1
bHRIYW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAg
ICAgICAgeyAic2V0SWNvbkRhdGFiYXNlRW5hYmxlZCIsIHNldEljb25EYXRhYmFzZUVuYWJsZWRD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5h
YmxlZCIsIHNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAic2V0TWFpbkZyYW1lSXNGaXJzdFJlc3BvbmRlciIsIHNldE1haW5GcmFtZUlz
Rmlyc3RSZXNwb25kZXJDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5o
CmluZGV4IDczMWM4ZDFmYmYxNWZiNzI0YjBlMTdjNGNlNGQ4ZjhkZDdhNTQzNjAuLjZhZDM4NjAx
ZmZhYjUyOTMzMGJmYmM2ZDVlMDkwZWFmMzkxODgyMzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVu
bmVyLmgKQEAgLTI2MCwxMCArMjYwLDEzIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYWx3YXlzQWNj
ZXB0Q29va2llcygpIGNvbnN0IHsgcmV0dXJuIG1fYWx3YXlzQWNjZXB0Q29va2llczsgfQogICAg
IHZvaWQgc2V0QWx3YXlzQWNjZXB0Q29va2llcyhib29sKTsKLSAgICAKKwogICAgIGJvb2wgaGFu
ZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcygpIGNvbnN0IHsgcmV0dXJuIG1faGFuZGxlc0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlczsgfQogICAgIHZvaWQgc2V0SGFuZGxlc0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlcyhib29sIGhhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXMpIHsgbV9o
YW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzID0gaGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlczsgfQotICAgIAorCisgICAgYm9vbCBwZXJmb3Jtc0RlZmF1bHRIYW5kbGluZ0ZvckF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgY29uc3QgeyByZXR1cm4gbV9wZXJmb3Jtc0RlZmF1bHRI
YW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOyB9CisgICAgdm9pZCBzZXRQZXJmb3Jt
c0RlZmF1bHRIYW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGJvb2wgcGVyZm9ybXNE
ZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkgeyBtX3BlcmZvcm1zRGVm
YXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBwZXJmb3Jtc0RlZmF1bHRI
YW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOyB9CisKICAgICBib29sIGlzUHJpbnRp
bmcoKSBjb25zdCB7IHJldHVybiBtX2lzUHJpbnRpbmc7IH0KICAgICB2b2lkIHNldElzUHJpbnRp
bmcoYm9vbCBpc1ByaW50aW5nKSB7IG1faXNQcmludGluZyA9IGlzUHJpbnRpbmc7IH0KIApAQCAt
NDAyLDcgKzQwNSw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2dsb2JhbEZsYWc7CiAgICAgYm9v
bCBtX2lzR2VvbG9jYXRpb25QZXJtaXNzaW9uU2V0OwogICAgIGJvb2wgbV9nZW9sb2NhdGlvblBl
cm1pc3Npb247Ci0gICAgYm9vbCBtX2hhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXM7Cisg
ICAgYm9vbCBtX2hhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXMgeyBmYWxzZSB9OworICAg
IGJvb2wgbV9wZXJmb3Jtc0RlZmF1bHRIYW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
IHsgZmFsc2UgfTsKICAgICBib29sIG1faXNQcmludGluZzsKICAgICBib29sIG1fZGVmZXJNYWlu
UmVzb3VyY2VEYXRhTG9hZDsKICAgICBib29sIG1fdXNlRGVmZXJyZWRGcmFtZUxvYWRpbmc7CmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUu
bW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KaW5k
ZXggM2YxYTA0OTdkNjAxODMyOTExM2FjZjFjZmUxNzY5ZWIzMTg5ZmRmMi4uMzg4MzZhMzE1Nzky
NDgwN2ViMmM2MjhmM2EwNjlmMzUwYWNmNjc4YSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQpAQCAtMjAyLDcgKzIwMiwxNSBAQCBCT09M
IGlzQWxsb3dlZEhvc3QoTlNTdHJpbmcgKmhvc3QpCiAgICAgICAgIFtbY2hhbGxlbmdlIHNlbmRl
cl0gY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNo
YWxsZW5nZV07CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKKyAgICBpZiAoZ1Rlc3RS
dW5uZXItPnBlcmZvcm1zRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
KSkgeworICAgICAgICBOU1N0cmluZyAqc3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCIlQCAtIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAtIFNpbXVsYXRpbmcg
cGVyZm9ybSBkZWZhdWx0IGhhbmRsaW5nIGZvciBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2UiLCBp
ZGVudGlmaWVyXTsKKyAgICAgICAgcHJpbnRmKCIlc1xuIiwgW3N0cmluZyBVVEY4U3RyaW5nXSk7
CisKKyAgICAgICAgW1tjaGFsbGVuZ2Ugc2VuZGVyXSBwZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9y
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y2hhbGxlbmdlXTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKwogICAgIGNvbnN0IGNoYXIqIHVzZXIgPSBnVGVzdFJ1bm5lci0+YXV0aGVudGljYXRpb25V
c2VybmFtZSgpLmNfc3RyKCk7CiAgICAgTlNTdHJpbmcgKm5zVXNlciA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiJXMiLCB1c2VyID8gdXNlciA6ICIiXTsKIApAQCAtMjExLDcgKzIxOSw3
IEBAIEJPT0wgaXNBbGxvd2VkSG9zdChOU1N0cmluZyAqaG9zdCkKIAogICAgIE5TU3RyaW5nICpz
dHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAIC0gZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlIC0gUmVzcG9uZGluZyB3aXRoICVAOiVAIiwgaWRlbnRpZmllciwg
bnNVc2VyLCBuc1Bhc3N3b3JkXTsKICAgICBwcmludGYoIiVzXG4iLCBbc3RyaW5nIFVURjhTdHJp
bmddKTsKLSAgICAKKwogICAgIFtbY2hhbGxlbmdlIHNlbmRlcl0gdXNlQ3JlZGVudGlhbDpbTlNV
UkxDcmVkZW50aWFsIGNyZWRlbnRpYWxXaXRoVXNlcjpuc1VzZXIgcGFzc3dvcmQ6bnNQYXNzd29y
ZCBwZXJzaXN0ZW5jZTpOU1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Npb25dCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjaGFs
bGVuZ2VdOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggZTdkNmY1Zjg0NWExM2E1ZTQyM2I1MmJjOTM2NTk0MGU4
NjQ4YTA4Yi4uOTdhZDRkOGQ5Yjg4ZGM4ZjRlZjM3OTBkM2IzY2I3NzA2NGUzZmJhMCAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
Y3BwCkBAIC04ODIsMTEgKzg4MiwxOCBAQCB2b2lkIFRlc3RSdW5uZXI6OnF1ZXVlTm9uTG9hZGlu
Z1NjcmlwdChKU1N0cmluZ1JlZiBzY3JpcHQpCiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0SGFuZGxl
c0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcyhib29sIGhhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZXMpCiB7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0
V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRIYW5kbGVzQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1l
KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRIYW5kbGVzQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VzIikpOwogICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gbWVz
c2FnZUJvZHkoQWRvcHRXSywgV0tCb29sZWFuQ3JlYXRlKGhhbmRsZXNBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZXMpKTsKICAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6
c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9k
eS5nZXQoKSk7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0UGVyZm9ybXNEZWZhdWx0SGFuZGxp
bmdGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShib29sIHBlcmZvcm1zRGVmYXVsdEhhbmRsaW5n
Rm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJT
ZXRQZXJmb3Jtc0RlZmF1bHRIYW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIikpOwor
ICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tCb29s
ZWFuQ3JlYXRlKHBlcmZvcm1zRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UpKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xl
dG9uKCkucGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQo
KSk7Cit9CisKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0QXV0aGVudGljYXRpb25Vc2VybmFtZShKU1N0
cmluZ1JlZiB1c2VybmFtZSkKIHsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2Fn
ZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldEF1dGhlbnRp
Y2F0aW9uVXNlcm5hbWUiKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwCmluZGV4IGZjYWQ4Y2QyZmIyMzhlZTkyZjMwOTk3MjkwNjNjZjE5ZWZkOTc5MmIuLmI1OTg4
MGMyMzg2ZWI0YzdlZTliNDRiMTM1YzY1NzVjMDkzNTM5ODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0xMzUsNyArMTM1LDYgQEAgVGVzdENvbnRyb2xs
ZXI6OlRlc3RDb250cm9sbGVyKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCiAgICAgLCBt
X2lzR2VvbG9jYXRpb25QZXJtaXNzaW9uQWxsb3dlZChmYWxzZSkKICAgICAsIG1fcG9saWN5RGVs
ZWdhdGVFbmFibGVkKGZhbHNlKQogICAgICwgbV9wb2xpY3lEZWxlZ2F0ZVBlcm1pc3NpdmUoZmFs
c2UpCi0gICAgLCBtX2hhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXMoZmFsc2UpCiAgICAg
LCBtX3Nob3VsZEJsb2NrQWxsUGx1Z2lucyhmYWxzZSkKICAgICAsIG1fZm9yY2VDb21wbGV4VGV4
dChmYWxzZSkKICAgICAsIG1fc2hvdWxkVXNlQWNjZWxlcmF0ZWREcmF3aW5nKGZhbHNlKQpAQCAt
Nzg3LDYgKzc4Niw3IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3Rl
bnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCiAgICAgbV93b3JrUXVldWVNYW5h
Z2VyLmNsZWFyV29ya1F1ZXVlKCk7CiAKICAgICBtX2hhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZXMgPSBmYWxzZTsKKyAgICBtX3BlcmZvcm1zRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UgPSBmYWxzZTsKICAgICBtX2F1dGhlbnRpY2F0aW9uVXNlcm5hbWUgPSBT
dHJpbmcoKTsKICAgICBtX2F1dGhlbnRpY2F0aW9uUGFzc3dvcmQgPSBTdHJpbmcoKTsKIApAQCAt
MTYzMiwxMSArMTYzMiwxMyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoV0tQYWdlUmVmIHBhZ2UsIFdLQXV0aGVudAogICAgIFN0cmluZyBt
ZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIiVzOiVkIC0gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlIC0gIiwgaG9zdC5jX3N0cigpLCBwb3J0KTsKICAgICBpZiAoIW1faGFuZGxlc0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcykKICAgICAgICAgbWVzc2FnZS5hcHBlbmQoIlNpbXVsYXRp
bmcgY2FuY2VsbGVkIGF1dGhlbnRpY2F0aW9uIHNoZWV0XG4iKTsKKyAgICBlbHNlIGlmIChtX3Bl
cmZvcm1zRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCisgICAgICAg
IG1lc3NhZ2UuYXBwZW5kKCJTaW11bGF0aW5nIHBlcmZvcm0gZGVmYXVsdCBoYW5kbGluZyBmb3Ig
YXV0aGVudGljYXRpb24gY2hhbGxlbmdlXG4iKTsKICAgICBlbHNlCiAgICAgICAgIG1lc3NhZ2Uu
YXBwZW5kKFN0cmluZzo6Zm9ybWF0KCJSZXNwb25kaW5nIHdpdGggJXM6JXNcbiIsIG1fYXV0aGVu
dGljYXRpb25Vc2VybmFtZS51dGY4KCkuZGF0YSgpLCBtX2F1dGhlbnRpY2F0aW9uUGFzc3dvcmQu
dXRmOCgpLmRhdGEoKSkpOwogICAgIG1fY3VycmVudEludm9jYXRpb24tPm91dHB1dFRleHQobWVz
c2FnZSk7CiAKLSAgICBpZiAoIW1faGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcykgewor
ICAgIGlmICghbV9oYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzIHx8IG1fcGVyZm9ybXNE
ZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkgewogICAgICAgICBXS0F1
dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lclVzZUNyZWRlbnRpYWwoZGVjaXNpb25MaXN0ZW5l
ciwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmgKaW5kZXggY2JkZmRjYTkxMzMzNzZkMzg0MThjOWIwZTQyMTU2NTQxNzkyMDkw
NC4uMGYxOTJlNmRmYTMyYTIzNGJlZGE0MjdiNGEyN2FmZDY0MGFhYTcyMiAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMTI0LDYgKzEyNCw3IEBAIHB1YmxpYzoK
ICAgICBXb3JrUXVldWVNYW5hZ2VyJiB3b3JrUXVldWVNYW5hZ2VyKCkgeyByZXR1cm4gbV93b3Jr
UXVldWVNYW5hZ2VyOyB9CiAKICAgICB2b2lkIHNldEhhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZXMoYm9vbCB2YWx1ZSkgeyBtX2hhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXMgPSB2
YWx1ZTsgfQorICAgIHZvaWQgc2V0UGVyZm9ybXNEZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShib29sIHZhbHVlKSB7IG1fcGVyZm9ybXNEZWZhdWx0SGFuZGxpbmdGb3JB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IHZhbHVlOyB9CiAgICAgdm9pZCBzZXRBdXRoZW50aWNh
dGlvblVzZXJuYW1lKFN0cmluZyB1c2VybmFtZSkgeyBtX2F1dGhlbnRpY2F0aW9uVXNlcm5hbWUg
PSB1c2VybmFtZTsgfQogICAgIHZvaWQgc2V0QXV0aGVudGljYXRpb25QYXNzd29yZChTdHJpbmcg
cGFzc3dvcmQpIHsgbV9hdXRoZW50aWNhdGlvblBhc3N3b3JkID0gcGFzc3dvcmQ7IH0KIApAQCAt
MzE5LDcgKzMyMCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3BvbGljeURlbGVnYXRlRW5hYmxl
ZDsKICAgICBib29sIG1fcG9saWN5RGVsZWdhdGVQZXJtaXNzaXZlOwogCi0gICAgYm9vbCBtX2hh
bmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXM7CisgICAgYm9vbCBtX2hhbmRsZXNBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZXMgeyBmYWxzZSB9OworICAgIGJvb2wgbV9wZXJmb3Jtc0RlZmF1bHRI
YW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIHsgZmFsc2UgfTsKICAgICBTdHJpbmcg
bV9hdXRoZW50aWNhdGlvblVzZXJuYW1lOwogICAgIFN0cmluZyBtX2F1dGhlbnRpY2F0aW9uUGFz
c3dvcmQ7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXgg
YjU5MzY3NDdiYTE1ZjFjNzI3YmMyMTkzNTM3NDc2MWRjNzE4N2YxNy4uZTI3ODhhYzQ4YjMwYWRl
MzU5ZjZkOGE4ZWU0NDUwNzcyYTM1Zjg2MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5jcHAKQEAgLTU5NywxMyArNTk3LDIwIEBAIHZvaWQgVGVzdEludm9jYXRpb246
OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VO
YW1lCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldEhhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSIpKSB7CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUs
ICJTZXRIYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzIikpIHsKICAgICAgICAgQVNTRVJU
KFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0Jvb2xlYW5HZXRUeXBlSUQoKSk7CiAgICAg
ICAgIFdLQm9vbGVhblJlZiB2YWx1ZSA9IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4obWVzc2Fn
ZUJvZHkpOwogICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0SGFuZGxlc0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcyhXS0Jvb2xlYW5HZXRWYWx1ZSh2YWx1ZSkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmco
bWVzc2FnZU5hbWUsICJTZXRQZXJmb3Jtc0RlZmF1bHRIYW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlIikpIHsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9
PSBXS0Jvb2xlYW5HZXRUeXBlSUQoKSk7CisgICAgICAgIFdLQm9vbGVhblJlZiB2YWx1ZSA9IHN0
YXRpY19jYXN0PFdLQm9vbGVhblJlZj4obWVzc2FnZUJvZHkpOworICAgICAgICBUZXN0Q29udHJv
bGxlcjo6c2luZ2xldG9uKCkuc2V0UGVyZm9ybXNEZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShXS0Jvb2xlYW5HZXRWYWx1ZSh2YWx1ZSkpOworICAgICAgICByZXR1cm47
CisgICAgfQorCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5h
bWUsICJTZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lIikpIHsKICAgICAgICAgQVNTRVJUKFdLR2V0
VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS1N0cmluZ0dldFR5cGVJRCgpKTsKICAgICAgICAgV0tT
dHJpbmdSZWYgdXNlcm5hbWUgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4obWVzc2FnZUJvZHkp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277147</attachid>
            <date>2016-04-23 03:30:27 -0700</date>
            <delta_ts>2016-07-26 14:58:26 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-156947-20160423033052.patch</filename>
            <type>text/plain</type>
            <size>22481</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5OTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDI2MDkzNTQyM2Q2YzI3
YmQyYmVlMzA0OTZiMjJkZTYzN2E4OTBiOC4uYTkxM2Q3NzA5YzViNzllMWQzZDBmNWViZjdlMjNm
OWMxYmFlZDFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE2LTA0LTIzICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgTmV0d29ya2luZyBwcm9j
ZXNzIGNyYXNoIGR1ZSB0byBtaXNzaW5nIC1bV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXND
aGFsbGVuZ2VTZW5kZXIgcGVyZm9ybURlZmF1bHRIYW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOl0gaW1wbGVtZW50YXRpb24KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTU2
OTQ3PgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjMzMjUxNjA+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbToKKyAg
ICAgICAgKC1bV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXIgcGVy
Zm9ybURlZmF1bHRIYW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl0pOgorICAgICAg
ICAoLVtXZWJDb3JlQXV0aGVudGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciByZWplY3RQ
cm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZVdpdGhDaGFsbGVuZ2U6XSk6CisgICAgICAgIC0gQWRk
IG1pc3NpbmcgbWV0aG9kcyB0aGF0IGNhbGwgdGhyb3VnaCB0byBBdXRoZW50aWNhdGlvbkNsaWVu
dC4KKyAgICAgICAgICBUaGlzIGZpeGVzIHRoZSBjcmFzaGVzLgorCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZh
dWx0SGFuZGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVk
Q2hhbGxlbmdlUmVqZWN0aW9uKToKKyAgICAgICAgLSBBZGQgLXJlc3BvbmRzVG9TZWxlY3Rvcjog
Y2hlY2tzIHNpbmNlCisgICAgICAgICAgLXBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTogYW5kCisgICAgICAgICAgLXJlamVjdFByb3RlY3Rpb25TcGFjZUFu
ZENvbnRpbnVlV2l0aENoYWxsZW5nZTogYXJlIG9wdGlvbmFsCisgICAgICAgICAgYnkgQVBJIGNv
bnRyYWN0LgorCiAyMDE2LTA0LTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgQ2Fubm90IGFjY2VzcyB0aGUgU1FMVHJhbnNhY3Rpb24uY29uc3RydWN0b3IucHJv
dG90eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggY2M2MmYwMjg3YjRiMTRkNWIxNjBiZWFhYzYxZjMwMmYwM2Zi
ZTFmNC4uZDE2MmVlZWM2YzQ3NzNmNzdiNTBlNjI3YzJmNzcwOWUzOWNhYWFiNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5IEBACisyMDE2LTA0LTIzICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBh
cHBsZS5jb20+CisKKyAgICAgICAgTmV0d29ya2luZyBwcm9jZXNzIGNyYXNoIGR1ZSB0byBtaXNz
aW5nIC1bV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXIgcGVyZm9y
bURlZmF1bHRIYW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl0gaW1wbGVtZW50YXRp
b24KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTU2OTQ3PgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMjMzMjUxNjA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25N
YW5hZ2VyQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6
cmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5nKToKKyAgICAgICAgKFdlYktp
dDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZENoYWxsZW5nZVJlamVjdGlvbik6Cisg
ICAgICAgIC0gQWRkIC1yZXNwb25kc1RvU2VsZWN0b3I6IGNoZWNrcyBzaW5jZQorICAgICAgICAg
IC1wZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6IGFuZAor
ICAgICAgICAgIC1yZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZVdpdGhDaGFsbGVuZ2U6
IGFyZSBvcHRpb25hbAorICAgICAgICAgIGJ5IEFQSSBjb250cmFjdC4KKwogMjAxNi0wNC0yMiAg
UnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXhpbmcgYSB0
eXBvIGluIG15IGxhc3QgY29tbWl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQppbmRleCBlMzhiMDM4N2RlMDQ2
YzdjMDE1NzQzZDdiYjdlYTM2ZTQwOTM4MDIyLi5hYzJlYWJhOGFjNzhhYWViZGRiZjNhZmRmZjQ4
NTdmYWViMmY5NmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQpAQCAtODksNiArODksMTggQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgICAgIG1fY2xpZW50LT5yZWNlaXZlZENhbmNlbGxhdGlv
bihjb3JlKGNoYWxsZW5nZSkpOwogfQogCistICh2b2lkKXBlcmZvcm1EZWZhdWx0SGFuZGxpbmdG
b3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAq
KWNoYWxsZW5nZQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnJlY2Vp
dmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5kbGluZyhjb3JlKGNoYWxsZW5nZSkpOworfQor
CistICh2b2lkKXJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlV2l0aENoYWxsZW5nZToo
TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZQoreworICAgIGlmIChtX2Ns
aWVudCkKKyAgICAgICAgbV9jbGllbnQtPnJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvcmUo
Y2hhbGxlbmdlKSk7Cit9CisKICNpZiBVU0UoQ0ZORVRXT1JLKQogLSAodm9pZClzZXRDRkNoYWxs
ZW5nZTooQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmKWNoYWxsZW5nZQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQpp
bmRleCA4YTI2ODg4ZTdiMjNkYzQyNGI5OGI1MWU3ODIyN2I5ZWIyZjAxNzI1Li5lYjM5ZTBmMmVi
NjYxMzFmMjc4NjRkZjlhY2M2NDA4MGIxMzI0OWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQpAQCAtNTY3
LDcgKzU2Nyw4IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsCiAgICAgICAgIGNsaWVudCgpLT5k
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodGhpcywgZC0+bV9jdXJyZW50V2ViQ2hh
bGxlbmdlKTsKICAgICBlbHNlIHsKICAgICAgICAgY2xlYXJBdXRoZW50aWNhdGlvbigpOwotICAg
ICAgICBbY2hhbGxlbmdlLnNlbmRlcigpIHBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTpjaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgp
XTsKKyAgICAgICAgaWYgKFtjaGFsbGVuZ2Uuc2VuZGVyKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihwZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
KV0pCisgICAgICAgICAgICBbY2hhbGxlbmdlLnNlbmRlcigpIHBlcmZvcm1EZWZhdWx0SGFuZGxp
bmdGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSgpXTsKICAgICB9CiB9CiAKQEAgLTcxMCw3ICs3MTEsOCBAQCB2b2lkIFJlc291
cmNlSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcoY29uc3Qg
QXV0aGVudGljYXRpbwogICAgIGlmIChjaGFsbGVuZ2UgIT0gZC0+bV9jdXJyZW50V2ViQ2hhbGxl
bmdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBbW2QtPm1fY3VycmVudE1hY0NoYWxsZW5nZSBz
ZW5kZXJdIHBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpk
LT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2VdOworICAgIGlmIChbW2QtPm1fY3VycmVudE1hY0NoYWxs
ZW5nZSBzZW5kZXJdIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGVyZm9ybURlZmF1bHRI
YW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOildKQorICAgICAgICBbW2QtPm1fY3Vy
cmVudE1hY0NoYWxsZW5nZSBzZW5kZXJdIHBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTpkLT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2VdOwogCiAgICAgY2xlYXJB
dXRoZW50aWNhdGlvbigpOwogfQpAQCAtNzIzLDcgKzcyNSw4IEBAIHZvaWQgUmVzb3VyY2VIYW5k
bGU6OnJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiBjCiAgICAgaWYgKGNoYWxsZW5nZSAhPSBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFtbZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdlIHNlbmRlcl0g
cmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVXaXRoQ2hhbGxlbmdlOmQtPm1fY3VycmVu
dE1hY0NoYWxsZW5nZV07CisgICAgaWYgKFtbZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdlIHNlbmRl
cl0gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihyZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRD
b250aW51ZVdpdGhDaGFsbGVuZ2U6KV0pCisgICAgICAgIFtbZC0+bV9jdXJyZW50TWFjQ2hhbGxl
bmdlIHNlbmRlcl0gcmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVXaXRoQ2hhbGxlbmdl
OmQtPm1fY3VycmVudE1hY0NoYWxsZW5nZV07CiAKICAgICBjbGVhckF1dGhlbnRpY2F0aW9uKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXV0aGVudGljYXRpb24vY29j
b2EvQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW0KaW5kZXgg
MDBmMjRhOWRmMTg3ZjZiZDU2M2ZkYWQ3ZTkwYzA4YjUxNGU2ZTFkMS4uNjU5NGUyN2FhYzI4NmVm
ZDkyNzcyYTI5YmUwNDAyMTJiM2QwYTAzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNh
dGlvbk1hbmFnZXJDb2NvYS5tbQpAQCAtNTQsMTQgKzU0LDE3IEBAIHZvaWQgQXV0aGVudGljYXRp
b25NYW5hZ2VyOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYKIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZFJlcXVlc3RUb1BlcmZv
cm1EZWZhdWx0SGFuZGxpbmcoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKQogewogI2lmICFVU0UoQ0ZORVRXT1JLKQotICAgIFthdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5zZW5kZXIoKSBwZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSgpXTsKKyAgICBpZiAoW2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnNlbmRlcigp
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGVyZm9ybURlZmF1bHRIYW5kbGluZ0ZvckF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOildKQorCisgICAgICAgIFthdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5zZW5kZXIoKSBwZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSgpXTsKICNlbmRpZgogfQogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVjZWl2ZWRD
aGFsbGVuZ2VSZWplY3Rpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKQogewogI2lmICFVU0UoQ0ZORVRXT1JLKQotICAgIFthdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5zZW5kZXIoKSByZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZVdp
dGhDaGFsbGVuZ2U6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSgpXTsKKyAgICBpZiAoW2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnNlbmRlcigpIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGlu
dWVXaXRoQ2hhbGxlbmdlOildKQorICAgICAgICBbYXV0aGVudGljYXRpb25DaGFsbGVuZ2Uuc2Vu
ZGVyKCkgcmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVXaXRoQ2hhbGxlbmdlOmF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKV07CiAjZW5k
aWYKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDQ3NWVhZDFmMGFiMjgxNmNjMzgzN2JmNjZkZjJmYzk0YTJlNDU4OTIuLmI1ZGM2OGQ0MzU2
MTVlYjRhNmI5MDEzMTIxYjA5ZTY1ZDg1YWQ5NjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxNi0wNC0yMyAgRGF2
aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIE5ldHdvcmtpbmcgcHJv
Y2VzcyBjcmFzaCBkdWUgdG8gbWlzc2luZyAtW1dlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFz
Q2hhbGxlbmdlU2VuZGVyIHBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTpdIGltcGxlbWVudGF0aW9uCisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzE1
Njk0Nz4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIzMzI1MTYwPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdFJ1
bm5lci5jcHA6CisgICAgICAgIChzZXRQZXJmb3Jtc0RlZmF1bHRIYW5kbGluZ0ZvckF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlQ2FsbGJhY2spOiBBZGRlZC4KKyAgICAgICAgKFRlc3RSdW5uZXI6OnN0
YXRpY0Z1bmN0aW9ucyk6IFVwZGF0ZSBmb3IgbmV3IGZ1bmN0aW9uLgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKFRlc3RSdW5uZXI6OnBlcmZvcm1zRGVm
YXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoVGVzdFJ1
bm5lcjo6c2V0UGVyZm9ybXNEZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSk6CisgICAgICAgIC0gQWRkZWQgZGVjbGFyYXRpb25zLgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bUmVzb3VyY2VMb2Fk
RGVsZWdhdGUgd2ViVmlldzpyZXNvdXJjZTpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6ZnJvbURhdGFTb3VyY2U6XSk6CisgICAgICAgIEFkZCBzdXBwb3J0IGZvciB0ZXN0UnVubmVy
LnBlcmZvcm1zRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKS4KKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgor
ICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRIYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VzKTogRml4IG5hbWUuCisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldFBlcmZvcm1zRGVm
YXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOiBBZGRlZC4KKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAg
KFdUUjo6VGVzdFJ1bm5lcjo6c2V0UGVyZm9ybXNEZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSk6IEFkZGVkIGRlY2xhcmF0aW9uLgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6
cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6IFVwZGF0ZSB0byByZXNldCBzdGF0ZS4KKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSk6IEhhbmRsZQorICAgICAgICBtX3BlcmZvcm1zRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5oOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0UGVyZm9ybXNEZWZhdWx0
SGFuZGxpbmdGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIEFkZGVkIGRlY2xh
cmF0aW9uLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgor
ICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUpOiBGaXggbmFtZSBmb3IKKyAgICAgICAgIlNldEhhbmRsZXNBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZXMiLiAgSGFuZGxlIG5ldworICAgICAgICAiU2V0UGVyZm9ybXNEZWZhdWx0SGFu
ZGxpbmdGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSIgbWVzc2FnZS4KKwogMjAxNi0wNC0yMiAg
U3Jpbml2YXNhbiBWaWpheWFyYWdoYXZhbiAgPHN2aWpheWFyYWdoYXZhbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgQWRkIEpTQyB0ZXN0IHJlc3VsdHMgaW4ganNvbiBmb3JtYXQgdG8gYSBidWlsZGJv
dCBsb2cKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKaW5kZXggYTY5YzBmMTQ1NGE2OTZj
MGY2YTI3Y2ViMGQ0YjdiYjAxZGY3YjJjMy4uNjllOGMwMjU3OTVjMzliYmRiYjY0OTJjYWE2OTA3
ODJlZWE5ODE1OSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKQEAgLTEwMCw3ICsx
MDAsNiBAQCBUZXN0UnVubmVyOjpUZXN0UnVubmVyKGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0VVJM
LCBjb25zdCBzdGQ6OnN0cmluZyYgZXhwZWN0ZWRQaQogICAgICwgbV9nbG9iYWxGbGFnKGZhbHNl
KQogICAgICwgbV9pc0dlb2xvY2F0aW9uUGVybWlzc2lvblNldChmYWxzZSkKICAgICAsIG1fZ2Vv
bG9jYXRpb25QZXJtaXNzaW9uKGZhbHNlKQotICAgICwgbV9oYW5kbGVzQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VzKGZhbHNlKQogICAgICwgbV9pc1ByaW50aW5nKGZhbHNlKQogICAgICwgbV9kZWZl
ck1haW5SZXNvdXJjZURhdGFMb2FkKHRydWUpCiAgICAgLCBtX3VzZURlZmVycmVkRnJhbWVMb2Fk
aW5nKGZhbHNlKQpAQCAtMTA3Miw2ICsxMDcxLDE4IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldEhh
bmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4
CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMg
SlNWYWx1ZVJlZiBzZXRQZXJmb3Jtc0RlZmF1bHRIYW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9u
LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIC8vIEhh
cyBtYWMgaW1wbGVtZW50YXRpb24uCisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBUZXN0UnVubmVy
KiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpTT2JqZWN0R2V0UHJpdmF0
ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0UGVyZm9ybXNEZWZhdWx0SGFuZGxp
bmdGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGFy
Z3VtZW50c1swXSkpOworCisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQp
OworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRQT1NJWExvY2FsZUNhbGxiYWNrKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVj
dCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCkBAIC0y
MTA2LDYgKzIxMTcsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBUZXN0UnVubmVyOjpzdGF0aWNGdW5j
dGlvbnMoKQogICAgICAgICB7ICJzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2No
ZW1lIiwgc2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZUNhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgICAgIHsgInNldEdlb2xvY2F0aW9uUGVybWlzc2lvbiIsIHNldEdlb2xvY2F0
aW9uUGVybWlzc2lvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEhhbmRsZXNBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZXMiLCBzZXRIYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2Vz
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAic2V0UGVyZm9ybXNEZWZhdWx0SGFuZGxpbmdG
b3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSIsIHNldFBlcmZvcm1zRGVmYXVsdEhhbmRsaW5nRm9y
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRJ
Y29uRGF0YWJhc2VFbmFibGVkIiwgc2V0SWNvbkRhdGFiYXNlRW5hYmxlZENhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCiAgICAgICAgIHsgInNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkIiwgc2V0QXV0
b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJz
ZXRNYWluRnJhbWVJc0ZpcnN0UmVzcG9uZGVyIiwgc2V0TWFpbkZyYW1lSXNGaXJzdFJlc3BvbmRl
ckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0
UnVubmVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKaW5kZXggNzMxYzhk
MWZiZjE1ZmI3MjRiMGUxN2M0Y2U0ZDhmOGRkN2E1NDM2MC4uNmFkMzg2MDFmZmFiNTI5MzMwYmZi
YzZkNWUwOTBlYWYzOTE4ODIzNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVz
dFJ1bm5lci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaApAQCAtMjYw
LDEwICsyNjAsMTMgQEAgcHVibGljOgogCiAgICAgYm9vbCBhbHdheXNBY2NlcHRDb29raWVzKCkg
Y29uc3QgeyByZXR1cm4gbV9hbHdheXNBY2NlcHRDb29raWVzOyB9CiAgICAgdm9pZCBzZXRBbHdh
eXNBY2NlcHRDb29raWVzKGJvb2wpOwotICAgIAorCiAgICAgYm9vbCBoYW5kbGVzQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGVzQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VzOyB9CiAgICAgdm9pZCBzZXRIYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2Vz
KGJvb2wgaGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcykgeyBtX2hhbmRsZXNBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZXMgPSBoYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzOyB9Ci0g
ICAgCisKKyAgICBib29sIHBlcmZvcm1zRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoKSBjb25zdCB7IHJldHVybiBtX3BlcmZvcm1zRGVmYXVsdEhhbmRsaW5nRm9yQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U7IH0KKyAgICB2b2lkIHNldFBlcmZvcm1zRGVmYXVsdEhhbmRs
aW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoYm9vbCBwZXJmb3Jtc0RlZmF1bHRIYW5kbGlu
Z0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSB7IG1fcGVyZm9ybXNEZWZhdWx0SGFuZGxpbmdG
b3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IHBlcmZvcm1zRGVmYXVsdEhhbmRsaW5nRm9yQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U7IH0KKwogICAgIGJvb2wgaXNQcmludGluZygpIGNvbnN0IHsg
cmV0dXJuIG1faXNQcmludGluZzsgfQogICAgIHZvaWQgc2V0SXNQcmludGluZyhib29sIGlzUHJp
bnRpbmcpIHsgbV9pc1ByaW50aW5nID0gaXNQcmludGluZzsgfQogCkBAIC00MDIsNyArNDA1LDgg
QEAgcHJpdmF0ZToKICAgICBib29sIG1fZ2xvYmFsRmxhZzsKICAgICBib29sIG1faXNHZW9sb2Nh
dGlvblBlcm1pc3Npb25TZXQ7CiAgICAgYm9vbCBtX2dlb2xvY2F0aW9uUGVybWlzc2lvbjsKLSAg
ICBib29sIG1faGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlczsKKyAgICBib29sIG1faGFu
ZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcyB7IGZhbHNlIH07CisgICAgYm9vbCBtX3BlcmZv
cm1zRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9pc1ByaW50aW5nOwogICAgIGJvb2wgbV9kZWZlck1haW5SZXNvdXJjZURhdGFM
b2FkOwogICAgIGJvb2wgbV91c2VEZWZlcnJlZEZyYW1lTG9hZGluZzsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQppbmRleCAzZjFhMDQ5N2Q2
MDE4MzI5MTEzYWNmMWNmZTE3NjllYjMxODlmZGYyLi4zODgzNmEzMTU3OTI0ODA3ZWIyYzYyOGYz
YTA2OWYzNTBhY2Y2NzhhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUmVz
b3VyY2VMb2FkRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291
cmNlTG9hZERlbGVnYXRlLm1tCkBAIC0yMDIsNyArMjAyLDE1IEBAIEJPT0wgaXNBbGxvd2VkSG9z
dChOU1N0cmluZyAqaG9zdCkKICAgICAgICAgW1tjaGFsbGVuZ2Ugc2VuZGVyXSBjb250aW51ZVdp
dGhvdXRDcmVkZW50aWFsRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y2hhbGxlbmdlXTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKworICAgIGlmIChnVGVzdFJ1bm5lci0+cGVyZm9y
bXNEZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpKSB7CisgICAgICAg
IE5TU3RyaW5nICpzdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAIC0gZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIC0gU2ltdWxhdGluZyBwZXJmb3JtIGRlZmF1
bHQgaGFuZGxpbmcgZm9yIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZSIsIGlkZW50aWZpZXJdOwor
ICAgICAgICBwcmludGYoIiVzXG4iLCBbc3RyaW5nIFVURjhTdHJpbmddKTsKKworICAgICAgICBb
W2NoYWxsZW5nZSBzZW5kZXJdIHBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTpjaGFsbGVuZ2VdOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgY29u
c3QgY2hhciogdXNlciA9IGdUZXN0UnVubmVyLT5hdXRoZW50aWNhdGlvblVzZXJuYW1lKCkuY19z
dHIoKTsKICAgICBOU1N0cmluZyAqbnNVc2VyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCIlcyIsIHVzZXIgPyB1c2VyIDogIiJdOwogCkBAIC0yMTEsNyArMjE5LDcgQEAgQk9PTCBpc0Fs
bG93ZWRIb3N0KE5TU3RyaW5nICpob3N0KQogCiAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgLSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UgLSBSZXNwb25kaW5nIHdpdGggJUA6JUAiLCBpZGVudGlmaWVyLCBuc1VzZXIsIG5zUGFz
c3dvcmRdOwogICAgIHByaW50ZigiJXNcbiIsIFtzdHJpbmcgVVRGOFN0cmluZ10pOwotICAgIAor
CiAgICAgW1tjaGFsbGVuZ2Ugc2VuZGVyXSB1c2VDcmVkZW50aWFsOltOU1VSTENyZWRlbnRpYWwg
Y3JlZGVudGlhbFdpdGhVc2VyOm5zVXNlciBwYXNzd29yZDpuc1Bhc3N3b3JkIHBlcnNpc3RlbmNl
Ok5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbl0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNoYWxsZW5nZV07CiB9CmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmNwcAppbmRleCBlN2Q2ZjVmODQ1YTEzYTVlNDIzYjUyYmM5MzY1OTQwZTg2NDhhMDhiLi45N2Fk
NGQ4ZDliODhkYzhmNGVmMzc5MGQzYjNjYjc3MDY0ZTNmYmEwIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTg4Miwx
MSArODgyLDE4IEBAIHZvaWQgVGVzdFJ1bm5lcjo6cXVldWVOb25Mb2FkaW5nU2NyaXB0KEpTU3Ry
aW5nUmVmIHNjcmlwdCkKIAogdm9pZCBUZXN0UnVubmVyOjpzZXRIYW5kbGVzQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VzKGJvb2wgaGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcykKIHsKLSAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldEhhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSIp
KTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldEhhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZXMiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiBtZXNzYWdlQm9keShBZG9w
dFdLLCBXS0Jvb2xlYW5DcmVhdGUoaGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcykpOwog
ICAgIFdLQnVuZGxlUGFnZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5w
YWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKIH0K
IAordm9pZCBUZXN0UnVubmVyOjpzZXRQZXJmb3Jtc0RlZmF1bHRIYW5kbGluZ0ZvckF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKGJvb2wgcGVyZm9ybXNEZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5h
bWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldFBlcmZvcm1zRGVm
YXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiKSk7CisgICAgV0tSZXRhaW5Q
dHI8V0tCb29sZWFuUmVmPiBtZXNzYWdlQm9keShBZG9wdFdLLCBXS0Jvb2xlYW5DcmVhdGUocGVy
Zm9ybXNEZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkpOworICAgIFdL
QnVuZGxlUGFnZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCkt
PnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKK30KKwogdm9p
ZCBUZXN0UnVubmVyOjpzZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lKEpTU3RyaW5nUmVmIHVzZXJu
YW1lKQogewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdL
LCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0QXV0aGVudGljYXRpb25Vc2VybmFt
ZSIpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmgKaW5kZXggNzEwOTQ1MzI3NWE1MTk1NmM5MTY5MDcxMjU2NTg0NThjZjk0NzJhYy4u
ZjliYjAzNzliMTRmZTI5YmFhYjE5ZTFjZWE5MWQ4YTQ2MDhmNmQ3MiAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTE2Myw2
ICsxNjMsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBBdXRoZW50aWNhdGlvbgogICAgIHZvaWQgc2V0
SGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcyhib29sKTsKKyAgICB2b2lkIHNldFBlcmZv
cm1zRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoYm9vbCk7CiAgICAg
dm9pZCBzZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lKEpTU3RyaW5nUmVmKTsKICAgICB2b2lkIHNl
dEF1dGhlbnRpY2F0aW9uUGFzc3dvcmQoSlNTdHJpbmdSZWYpOwogCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGZjYWQ4Y2QyZmIyMzhlZTkyZjMwOTk3Mjkw
NjNjZjE5ZWZkOTc5MmIuLmI1OTg4MGMyMzg2ZWI0YzdlZTliNDRiMTM1YzY1NzVjMDkzNTM5ODYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0xMzUsNyAr
MTM1LDYgQEAgVGVzdENvbnRyb2xsZXI6OlRlc3RDb250cm9sbGVyKGludCBhcmdjLCBjb25zdCBj
aGFyKiBhcmd2W10pCiAgICAgLCBtX2lzR2VvbG9jYXRpb25QZXJtaXNzaW9uQWxsb3dlZChmYWxz
ZSkKICAgICAsIG1fcG9saWN5RGVsZWdhdGVFbmFibGVkKGZhbHNlKQogICAgICwgbV9wb2xpY3lE
ZWxlZ2F0ZVBlcm1pc3NpdmUoZmFsc2UpCi0gICAgLCBtX2hhbmRsZXNBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZXMoZmFsc2UpCiAgICAgLCBtX3Nob3VsZEJsb2NrQWxsUGx1Z2lucyhmYWxzZSkKICAg
ICAsIG1fZm9yY2VDb21wbGV4VGV4dChmYWxzZSkKICAgICAsIG1fc2hvdWxkVXNlQWNjZWxlcmF0
ZWREcmF3aW5nKGZhbHNlKQpAQCAtNzg3LDYgKzc4Niw3IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6
OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMp
CiAgICAgbV93b3JrUXVldWVNYW5hZ2VyLmNsZWFyV29ya1F1ZXVlKCk7CiAKICAgICBtX2hhbmRs
ZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXMgPSBmYWxzZTsKKyAgICBtX3BlcmZvcm1zRGVmYXVs
dEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBmYWxzZTsKICAgICBtX2F1dGhl
bnRpY2F0aW9uVXNlcm5hbWUgPSBTdHJpbmcoKTsKICAgICBtX2F1dGhlbnRpY2F0aW9uUGFzc3dv
cmQgPSBTdHJpbmcoKTsKIApAQCAtMTYzMiwxMSArMTYzMiwxMyBAQCB2b2lkIFRlc3RDb250cm9s
bGVyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV0tQYWdlUmVmIHBhZ2UsIFdL
QXV0aGVudAogICAgIFN0cmluZyBtZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIiVzOiVkIC0gZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIC0gIiwgaG9zdC5jX3N0cigpLCBwb3J0KTsK
ICAgICBpZiAoIW1faGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcykKICAgICAgICAgbWVz
c2FnZS5hcHBlbmQoIlNpbXVsYXRpbmcgY2FuY2VsbGVkIGF1dGhlbnRpY2F0aW9uIHNoZWV0XG4i
KTsKKyAgICBlbHNlIGlmIChtX3BlcmZvcm1zRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UpCisgICAgICAgIG1lc3NhZ2UuYXBwZW5kKCJTaW11bGF0aW5nIHBlcmZvcm0g
ZGVmYXVsdCBoYW5kbGluZyBmb3IgYXV0aGVudGljYXRpb24gY2hhbGxlbmdlXG4iKTsKICAgICBl
bHNlCiAgICAgICAgIG1lc3NhZ2UuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCJSZXNwb25kaW5nIHdp
dGggJXM6JXNcbiIsIG1fYXV0aGVudGljYXRpb25Vc2VybmFtZS51dGY4KCkuZGF0YSgpLCBtX2F1
dGhlbnRpY2F0aW9uUGFzc3dvcmQudXRmOCgpLmRhdGEoKSkpOwogICAgIG1fY3VycmVudEludm9j
YXRpb24tPm91dHB1dFRleHQobWVzc2FnZSk7CiAKLSAgICBpZiAoIW1faGFuZGxlc0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlcykgeworICAgIGlmICghbV9oYW5kbGVzQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VzIHx8IG1fcGVyZm9ybXNEZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSkgewogICAgICAgICBXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lclVzZUNyZWRl
bnRpYWwoZGVjaXNpb25MaXN0ZW5lciwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggY2JkZmRjYTkxMzMzNzZkMzg0
MThjOWIwZTQyMTU2NTQxNzkyMDkwNC4uMGYxOTJlNmRmYTMyYTIzNGJlZGE0MjdiNGEyN2FmZDY0
MGFhYTcyMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMTI0
LDYgKzEyNCw3IEBAIHB1YmxpYzoKICAgICBXb3JrUXVldWVNYW5hZ2VyJiB3b3JrUXVldWVNYW5h
Z2VyKCkgeyByZXR1cm4gbV93b3JrUXVldWVNYW5hZ2VyOyB9CiAKICAgICB2b2lkIHNldEhhbmRs
ZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXMoYm9vbCB2YWx1ZSkgeyBtX2hhbmRsZXNBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZXMgPSB2YWx1ZTsgfQorICAgIHZvaWQgc2V0UGVyZm9ybXNEZWZhdWx0
SGFuZGxpbmdGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShib29sIHZhbHVlKSB7IG1fcGVyZm9y
bXNEZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IHZhbHVlOyB9CiAg
ICAgdm9pZCBzZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lKFN0cmluZyB1c2VybmFtZSkgeyBtX2F1
dGhlbnRpY2F0aW9uVXNlcm5hbWUgPSB1c2VybmFtZTsgfQogICAgIHZvaWQgc2V0QXV0aGVudGlj
YXRpb25QYXNzd29yZChTdHJpbmcgcGFzc3dvcmQpIHsgbV9hdXRoZW50aWNhdGlvblBhc3N3b3Jk
ID0gcGFzc3dvcmQ7IH0KIApAQCAtMzE5LDcgKzMyMCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X3BvbGljeURlbGVnYXRlRW5hYmxlZDsKICAgICBib29sIG1fcG9saWN5RGVsZWdhdGVQZXJtaXNz
aXZlOwogCi0gICAgYm9vbCBtX2hhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXM7CisgICAg
Ym9vbCBtX2hhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXMgeyBmYWxzZSB9OworICAgIGJv
b2wgbV9wZXJmb3Jtc0RlZmF1bHRIYW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIHsg
ZmFsc2UgfTsKICAgICBTdHJpbmcgbV9hdXRoZW50aWNhdGlvblVzZXJuYW1lOwogICAgIFN0cmlu
ZyBtX2F1dGhlbnRpY2F0aW9uUGFzc3dvcmQ7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5jcHAKaW5kZXggYjU5MzY3NDdiYTE1ZjFjNzI3YmMyMTkzNTM3NDc2MWRjNzE4
N2YxNy4uZTI3ODhhYzQ4YjMwYWRlMzU5ZjZkOGE4ZWU0NDUwNzcyYTM1Zjg2MSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTU5NywxMyArNTk3LDIwIEBA
IHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBp
ZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldEhhbmRsZXNB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSIpKSB7CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRG
OENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRIYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2Vz
IikpIHsKICAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0Jvb2xl
YW5HZXRUeXBlSUQoKSk7CiAgICAgICAgIFdLQm9vbGVhblJlZiB2YWx1ZSA9IHN0YXRpY19jYXN0
PFdLQm9vbGVhblJlZj4obWVzc2FnZUJvZHkpOwogICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2lu
Z2xldG9uKCkuc2V0SGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcyhXS0Jvb2xlYW5HZXRW
YWx1ZSh2YWx1ZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRQZXJmb3Jtc0RlZmF1bHRIYW5k
bGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIikpIHsKKyAgICAgICAgQVNTRVJUKFdLR2V0
VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0Jvb2xlYW5HZXRUeXBlSUQoKSk7CisgICAgICAgIFdL
Qm9vbGVhblJlZiB2YWx1ZSA9IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4obWVzc2FnZUJvZHkp
OworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0UGVyZm9ybXNEZWZhdWx0
SGFuZGxpbmdGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXS0Jvb2xlYW5HZXRWYWx1ZSh2YWx1
ZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRv
VVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lIikpIHsK
ICAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS1N0cmluZ0dldFR5
cGVJRCgpKTsKICAgICAgICAgV0tTdHJpbmdSZWYgdXNlcm5hbWUgPSBzdGF0aWNfY2FzdDxXS1N0
cmluZ1JlZj4obWVzc2FnZUJvZHkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284636</attachid>
            <date>2016-07-26 14:58:33 -0700</date>
            <delta_ts>2016-07-26 15:32:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156947-20160726145725.patch</filename>
            <type>text/plain</type>
            <size>19590</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzcwMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE2LTA3LTI2ICBEYXZpZCBL
aWx6ZXIgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBOZXR3b3JraW5nIHByb2Nlc3Mg
Y3Jhc2ggZHVlIHRvIG1pc3NpbmcgLVtXZWJDb3JlQXV0aGVudGljYXRpb25DbGllbnRBc0NoYWxs
ZW5nZVNlbmRlciBwZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6XSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU2OTQ3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMzMyNTE2MD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIFRlc3Q6IGh0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYXV0aC1yZWplY3QtcHJvdGVjdGlvbi1zcGFjZS5odG1s
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbToK
KyAgICAgICAgKC1bV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXIg
cGVyZm9ybURlZmF1bHRIYW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl0pOiBBZGRl
ZC4KKyAgICAgICAgKC1bV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5k
ZXIgcmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVXaXRoQ2hhbGxlbmdlOl0pOiBBZGRl
ZC4KKwogMjAxNi0wNy0yNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFBhcmFtZXRlcnMgdG8gRE9NSW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1lbnRUeXBlKCkg
c2hvdWxkIGJlIG1hbmRhdG9yeSBhbmQgbm9uLW51bGxhYmxlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5t
bQkocmV2aXNpb24gMjAzNzAxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvQXV0aGVudGljYXRpb25NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDE4IEBA
IC0gKHZvaWQpZGV0YWNoQ2xpZW50CiAgICAgbV9jbGllbnQgPSAwOwogfQogCistICh2b2lkKXBl
cmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZQoreworICAgIGlmIChtX2NsaWVudCkKKyAg
ICAgICAgbV9jbGllbnQtPnJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5kbGluZyhj
b3JlKGNoYWxsZW5nZSkpOworfQorCistICh2b2lkKXJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENv
bnRpbnVlV2l0aENoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxs
ZW5nZQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnJlY2VpdmVkQ2hh
bGxlbmdlUmVqZWN0aW9uKGNvcmUoY2hhbGxlbmdlKSk7Cit9CisKIC0gKHZvaWQpdXNlQ3JlZGVu
dGlhbDooTlNVUkxDcmVkZW50aWFsICopY3JlZGVudGlhbCBmb3JBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZQogewogICAgIGlm
IChtX2NsaWVudCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzcwNCkKKysrIFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE2LTA3
LTI2ICBEYXZpZCBLaWx6ZXIgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBOZXR3b3Jr
aW5nIHByb2Nlc3MgY3Jhc2ggZHVlIHRvIG1pc3NpbmcgLVtXZWJDb3JlQXV0aGVudGljYXRpb25D
bGllbnRBc0NoYWxsZW5nZVNlbmRlciBwZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U6XSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2OTQ3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8y
MzMyNTE2MD4KKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNw
cDoKKyAgICAgICAgKFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyUmVqZWN0UHJvdGVj
dGlvblNwYWNlQW5kQ29udGludWUpOiAKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBdXRo
ZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaDoKKyAgICAgICAgQWRkZWQgbmV3IFNQSSBmb3Ig
dGVzdGluZyBjb3JyZXNwb25kaW5nIHRvIGNhbGxpbmcgdGhlIGNvbXBsZXRpb24gaGFuZGxlciBv
ZgorICAgICAgICBXS1dlYlZpZXcuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIHdp
dGggTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVJlamVjdFByb3RlY3Rpb25TcGFjZS4KKwogMjAx
Ni0wNy0yNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBhc3Nl
cnRpb24uCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNh
dGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5jcHAJKHJldmlz
aW9uIDIwMzcwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRp
Y2F0aW9uRGVjaXNpb25MaXN0ZW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDMgKzQ2LDgg
QEAgdm9pZCBXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lckNhbgogewogICAgIHRvSW1w
bChhdXRoZW50aWNhdGlvbkxpc3RlbmVyKS0+Y2FuY2VsKCk7CiB9CisKK3ZvaWQgV0tBdXRoZW50
aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXJSZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZShX
S0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lclJlZiBhdXRoZW50aWNhdGlvbkxpc3RlbmVy
KQoreworICAgIHRvSW1wbChhdXRoZW50aWNhdGlvbkxpc3RlbmVyKS0+cmVqZWN0UHJvdGVjdGlv
blNwYWNlQW5kQ29udGludWUoKTsKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0
ZW5lci5oCShyZXZpc2lvbiAyMDM3MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MzYsNiArMzYsNyBAQCBXS19FWFBPUlQgV0tUeXBlSUQgV0tBdXRoZW50aWNhdGlvbkRlY2lzCiAK
IFdLX0VYUE9SVCB2b2lkIFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyVXNlQ3JlZGVu
dGlhbChXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lclJlZiBhdXRoZW50aWNhdGlvbkxp
c3RlbmVyLCBXS0NyZWRlbnRpYWxSZWYgY3JlZGVudGlhbCk7CiBXS19FWFBPUlQgdm9pZCBXS0F1
dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lckNhbmNlbChXS0F1dGhlbnRpY2F0aW9uRGVjaXNp
b25MaXN0ZW5lclJlZiBhdXRoZW50aWNhdGlvbkxpc3RlbmVyKTsKK1dLX0VYUE9SVCB2b2lkIFdL
QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyUmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29u
dGludWUoV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXJSZWYpOwogCiAjaWZkZWYgX19j
cGx1c3BsdXMKIH0KSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDIwMzczNikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDE2LTA3LTI2ICBEYXZpZCBLaWx6ZXIgPGRka2lsemVy
QGFwcGxlLmNvbT4KKworICAgICAgICBOZXR3b3JraW5nIHByb2Nlc3MgY3Jhc2ggZHVlIHRvIG1p
c3NpbmcgLVtXZWJDb3JlQXV0aGVudGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciBwZXJm
b3JtRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6XSBpbXBsZW1lbnRh
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2
OTQ3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMzMyNTE2MD4KKworICAgICAgICBSZXZpZXdl
ZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdFJ1
bm5lci5jcHA6CisgICAgICAgIChUZXN0UnVubmVyOjpUZXN0UnVubmVyKToKKyAgICAgICAgKHNl
dFJlamVjdHNQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZUZvckF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlc0NhbGxiYWNrKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmg6Cisg
ICAgICAgIChUZXN0UnVubmVyOjpyZWplY3RzUHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVGb3JB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZXMpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0UmVqZWN0
c1Byb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW06Cisg
ICAgICAgICgtW1Jlc291cmNlTG9hZERlbGVnYXRlIHdlYlZpZXc6cmVzb3VyY2U6ZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmZyb21EYXRhU291cmNlOl0pOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoK
KyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6cXVldWVOb25Mb2FkaW5nU2NyaXB0KToKKyAgICAg
ICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0UmVqZWN0c1Byb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVl
Rm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0UmVq
ZWN0c1Byb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2Vz
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAg
ICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVu
ZGxlKToKKyAgICAgICAgQWRkIFRlc3RSdW5uZXIuc2V0UmVqZWN0c1Byb3RlY3Rpb25TcGFjZUFu
ZENvbnRpbnVlRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzIHRvIHVzZSBmb3IgdGVzdGluZy4K
KwogMjAxNi0wNy0yNiAgTHVjYXMgRm9yc2NobGVyICA8bGZvcnNjaGxlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgVGVzdCBzdm4ud2Via2l0Lm9yZyBmdW5jdGlvbmFsaXR5IGFmdGVyIG1haW50ZW5h
bmNlLgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAJKHJldmlzaW9uIDIwMzcw
MSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDQsNiArMTA0LDcgQEAgVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcihjb25zdCBzdGQ6OnN0
cmluZwogICAgICwgbV9nbG9iYWxGbGFnKGZhbHNlKQogICAgICwgbV9pc0dlb2xvY2F0aW9uUGVy
bWlzc2lvblNldChmYWxzZSkKICAgICAsIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uKGZhbHNlKQor
ICAgICwgbV9yZWplY3RzUHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVGb3JBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZXMoZmFsc2UpCiAgICAgLCBtX2hhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZXMoZmFsc2UpCiAgICAgLCBtX2lzUHJpbnRpbmcoZmFsc2UpCiAgICAgLCBtX2RlZmVyTWFpblJl
c291cmNlRGF0YUxvYWQodHJ1ZSkKQEAgLTEwNjQsNiArMTA2NSwxOCBAQCBzdGF0aWMgSlNWYWx1
ZVJlZiBzZXRHZW9sb2NhdGlvblBlcm1pc3NpCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZp
bmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRSZWplY3RzUHJvdGVjdGlv
blNwYWNlQW5kQ29udGludWVGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXNDYWxsYmFjayhKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNP
YmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1td
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgLy8gSGFzIG1hYyAmIHdpbmRvd3MgaW1w
bGVtZW50YXRpb24KKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAgICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKyAgICAKKyAgICBUZXN0UnVubmVyKiBjb250
cm9sbGVyID0gc3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlz
T2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0UmVqZWN0c1Byb3RlY3Rpb25TcGFjZUFuZENv
bnRpbnVlRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4
dCwgYXJndW1lbnRzWzBdKSk7CisgICAgCisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRIYW5kbGVzQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1
bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29u
c3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAg
IC8vIEhhcyBtYWMgJiB3aW5kb3dzIGltcGxlbWVudGF0aW9uCkBAIC0yMTI4LDYgKzIxNDEsNyBA
QCBKU1N0YXRpY0Z1bmN0aW9uKiBUZXN0UnVubmVyOjpzdGF0aWNGdW5jCiAgICAgICAgIHsgInNl
dFVzZURlZmVycmVkRnJhbWVMb2FkaW5nIiwgc2V0VXNlRGVmZXJyZWRGcmFtZUxvYWRpbmdDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9y
VVJMU2NoZW1lIiwgc2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZUNhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEdlb2xvY2F0aW9uUGVybWlzc2lvbiIsIHNldEdl
b2xvY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgInNldFJlamVj
dHNQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZUZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcyIs
IHNldFJlamVjdHNQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZUZvckF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEhhbmRsZXNBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZXMiLCBzZXRIYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAic2V0SWNvbkRhdGFiYXNlRW5hYmxlZCIsIHNldEljb25E
YXRhYmFzZUVuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRBdXRvbWF0aWNM
aW5rRGV0ZWN0aW9uRW5hYmxlZCIsIHNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgJKHJldmlzaW9u
IDIwMzcwMSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMjY1LDYgKzI2NSw5IEBAIHB1YmxpYzoKICAgICBib29sIGFsd2F5c0FjY2VwdENv
b2tpZXMoKSBjb25zdCB7IHJldHVybiBtX2Fsd2F5c0FjY2VwdENvb2tpZXM7IH0KICAgICB2b2lk
IHNldEFsd2F5c0FjY2VwdENvb2tpZXMoYm9vbCk7CiAgICAgCisgICAgYm9vbCByZWplY3RzUHJv
dGVjdGlvblNwYWNlQW5kQ29udGludWVGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXMoKSBjb25z
dCB7IHJldHVybiBtX3JlamVjdHNQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZUZvckF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlczsgfQorICAgIHZvaWQgc2V0UmVqZWN0c1Byb3RlY3Rpb25TcGFjZUFu
ZENvbnRpbnVlRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKGJvb2wgdmFsdWUpIHsgbV9yZWpl
Y3RzUHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXMg
PSB2YWx1ZTsgfQorICAgIAogICAgIGJvb2wgaGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
cygpIGNvbnN0IHsgcmV0dXJuIG1faGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlczsgfQog
ICAgIHZvaWQgc2V0SGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcyhib29sIGhhbmRsZXNB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZXMpIHsgbV9oYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VzID0gaGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlczsgfQogICAgIApAQCAtNDA4LDYg
KzQxMSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2dsb2JhbEZsYWc7CiAgICAgYm9vbCBtX2lz
R2VvbG9jYXRpb25QZXJtaXNzaW9uU2V0OwogICAgIGJvb2wgbV9nZW9sb2NhdGlvblBlcm1pc3Np
b247CisgICAgYm9vbCBtX3JlamVjdHNQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZUZvckF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlczsKICAgICBib29sIG1faGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlczsKICAgICBib29sIG1faXNQcmludGluZzsKICAgICBib29sIG1fZGVmZXJNYWluUmVz
b3VyY2VEYXRhTG9hZDsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxv
YWREZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUmVz
b3VyY2VMb2FkRGVsZWdhdGUubW0JKHJldmlzaW9uIDIwMzcwMSkKKysrIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTk1
LDYgKzE5NSwxMyBAQCAtKE5TVVJMUmVxdWVzdCAqKXdlYlZpZXc6IChXZWJWaWV3ICopd3YgCiAK
IC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXd2IHJlc291cmNlOihpZClpZGVudGlmaWVyIGRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSAqKWNoYWxsZW5nZSBmcm9tRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3Vy
Y2UKIHsKKyAgICBpZiAoZ1Rlc3RSdW5uZXItPnJlamVjdHNQcm90ZWN0aW9uU3BhY2VBbmRDb250
aW51ZUZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcygpKSB7CisgICAgICAgIHByaW50ZigiU2lt
dWxhdGluZyByZWplY3QgcHJvdGVjdGlvbiBzcGFjZSBhbmQgY29udGludWUgZm9yIGF1dGhlbnRp
Y2F0aW9uIGNoYWxsZW5nZVxuIik7CisKKyAgICAgICAgW1tjaGFsbGVuZ2Ugc2VuZGVyXSByZWpl
Y3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZVdpdGhDaGFsbGVuZ2U6Y2hhbGxlbmdlXTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmICghZ1Rlc3RSdW5uZXItPmhhbmRsZXNBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZXMoKSkgewogICAgICAgICBOU1N0cmluZyAqc3RyaW5nID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAtIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSAtIFNpbXVsYXRpbmcgY2FuY2VsbGVkIGF1dGhlbnRpY2F0aW9uIHNoZWV0IiwgaWRl
bnRpZmllcl07CiAgICAgICAgIHByaW50ZigiJXNcbiIsIFtzdHJpbmcgVVRGOFN0cmluZ10pOwpJ
bmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDIwMzcwMSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjExLDYgKzE2MTEsMTIgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6
ZGlkUmVjZWl2ZUF1dGhlbnRpYwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKG1f
cmVqZWN0c1Byb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlRm9yQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VzKSB7CisgICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPm91dHB1dFRleHQoIlNpbXVsYXRp
bmcgcmVqZWN0IHByb3RlY3Rpb24gc3BhY2UgYW5kIGNvbnRpbnVlIGZvciBhdXRoZW50aWNhdGlv
biBjaGFsbGVuZ2VcbiIpOworICAgICAgICBXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5l
clJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlKGRlY2lzaW9uTGlzdGVuZXIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCiAgICAgc3RkOjpzdHJpbmcgaG9zdCA9IHRvU1REKGFkb3B0
V0soV0tQcm90ZWN0aW9uU3BhY2VDb3B5SG9zdChwcm90ZWN0aW9uU3BhY2UpKS5nZXQoKSk7CiAg
ICAgaW50IHBvcnQgPSBXS1Byb3RlY3Rpb25TcGFjZUdldFBvcnQocHJvdGVjdGlvblNwYWNlKTsK
ICAgICBTdHJpbmcgbWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCIlczolZCAtIGRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSAtICIsIGhvc3QuY19zdHIoKSwgcG9ydCk7CkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiAyMDM3MDEpCisr
KyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyNSw2ICsxMjUsNyBAQCBwdWJsaWM6CiAKICAgICBXb3JrUXVldWVNYW5hZ2VyJiB3b3Jr
UXVldWVNYW5hZ2VyKCkgeyByZXR1cm4gbV93b3JrUXVldWVNYW5hZ2VyOyB9CiAKKyAgICB2b2lk
IHNldFJlamVjdHNQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZUZvckF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlcyhib29sIHZhbHVlKSB7IG1fcmVqZWN0c1Byb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVl
Rm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzID0gdmFsdWU7IH0KICAgICB2b2lkIHNldEhhbmRs
ZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXMoYm9vbCB2YWx1ZSkgeyBtX2hhbmRsZXNBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZXMgPSB2YWx1ZTsgfQogICAgIHZvaWQgc2V0QXV0aGVudGljYXRpb25V
c2VybmFtZShTdHJpbmcgdXNlcm5hbWUpIHsgbV9hdXRoZW50aWNhdGlvblVzZXJuYW1lID0gdXNl
cm5hbWU7IH0KICAgICB2b2lkIHNldEF1dGhlbnRpY2F0aW9uUGFzc3dvcmQoU3RyaW5nIHBhc3N3
b3JkKSB7IG1fYXV0aGVudGljYXRpb25QYXNzd29yZCA9IHBhc3N3b3JkOyB9CkBAIC0zMjQsNiAr
MzI1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fcG9saWN5RGVsZWdhdGVFbmFibGVkIHsgZmFs
c2UgfTsKICAgICBib29sIG1fcG9saWN5RGVsZWdhdGVQZXJtaXNzaXZlIHsgZmFsc2UgfTsKIAor
ICAgIGJvb2wgbV9yZWplY3RzUHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVGb3JBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZXMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYW5kbGVzQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VzIHsgZmFsc2UgfTsKICAgICBTdHJpbmcgbV9hdXRoZW50aWNhdGlvblVzZXJu
YW1lOwogICAgIFN0cmluZyBtX2F1dGhlbnRpY2F0aW9uUGFzc3dvcmQ7CkluZGV4OiBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAkocmV2aXNpb24gMjAzNzAxKQorKysg
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU5OSw3ICs1OTksMTQgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3Nh
Z2VGcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRv
VVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRIYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UiKSkgeworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1l
LCAiU2V0UmVqZWN0c1Byb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlRm9yQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VzIikpIHsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9
PSBXS0Jvb2xlYW5HZXRUeXBlSUQoKSk7CisgICAgICAgIFdLQm9vbGVhblJlZiB2YWx1ZSA9IHN0
YXRpY19jYXN0PFdLQm9vbGVhblJlZj4obWVzc2FnZUJvZHkpOworICAgICAgICBUZXN0Q29udHJv
bGxlcjo6c2luZ2xldG9uKCkuc2V0UmVqZWN0c1Byb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlRm9y
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKFdLQm9vbGVhbkdldFZhbHVlKHZhbHVlKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmlu
ZyhtZXNzYWdlTmFtZSwgIlNldEhhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXMiKSkgewog
ICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLQm9vbGVhbkdldFR5
cGVJRCgpKTsKICAgICAgICAgV0tCb29sZWFuUmVmIHZhbHVlID0gc3RhdGljX2Nhc3Q8V0tCb29s
ZWFuUmVmPihtZXNzYWdlQm9keSk7CiAgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24o
KS5zZXRIYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKFdLQm9vbGVhbkdldFZhbHVlKHZh
bHVlKSk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5jcHAJKHJldmlzaW9uIDIwMzcwMSkKKysrIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTkwNyw5ICs5MDcsMTYgQEAgdm9pZCBUZXN0UnVubmVyOjpxdWV1ZU5vbkxvYWRpbmdTY3JpcHQo
SgogICAgIEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5xdWV1ZU5vbkxvYWRpbmdTY3JpcHQo
c2NyaXB0V0suZ2V0KCkpOwogfQogCit2b2lkIFRlc3RSdW5uZXI6OnNldFJlamVjdHNQcm90ZWN0
aW9uU3BhY2VBbmRDb250aW51ZUZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcyhib29sIHZhbHVl
KQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0UmVqZWN0c1Byb3RlY3Rpb25TcGFjZUFu
ZENvbnRpbnVlRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzIikpOworICAgIFdLUmV0YWluUHRy
PFdLQm9vbGVhblJlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tCb29sZWFuQ3JlYXRlKHZhbHVl
KSk7CisgICAgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRv
bigpLnBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkp
OworfQorICAgIAogdm9pZCBUZXN0UnVubmVyOjpzZXRIYW5kbGVzQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VzKGJvb2wgaGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcykKIHsKLSAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIlNldEhhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSIpKTsKKyAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldEhhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXMi
KSk7CiAgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiBtZXNzYWdlQm9keShBZG9wdFdLLCBX
S0Jvb2xlYW5DcmVhdGUoaGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcykpOwogICAgIFdL
QnVuZGxlUGFnZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCkt
PnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKIH0KSW5kZXg6
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5oCShyZXZpc2lvbiAyMDM3MDEpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDYgKzE2NCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFByaW50aW5nKCkgeyBtX2lzUHJpbnRpbmcgPSB0cnVlOyB9CiAK
ICAgICAvLyBBdXRoZW50aWNhdGlvbgorICAgIHZvaWQgc2V0UmVqZWN0c1Byb3RlY3Rpb25TcGFj
ZUFuZENvbnRpbnVlRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKGJvb2wpOwogICAgIHZvaWQg
c2V0SGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcyhib29sKTsKICAgICB2b2lkIHNldFNo
b3VsZExvZ0NhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCk7CiAgICAg
dm9pZCBzZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lKEpTU3RyaW5nUmVmKTsKSW5kZXg6IFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9UZXN0UnVubmVyLmlkbAkocmV2aXNpb24gMjAzNzAxKQorKysgVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMTk5LDYgKzE5OSw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICB2b2lk
IHF1ZXVlTm9uTG9hZGluZ1NjcmlwdChET01TdHJpbmcgc2NyaXB0KTsKIAogICAgIC8vIEF1dGhl
bnRpY2F0aW9uCisgICAgdm9pZCBzZXRSZWplY3RzUHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVG
b3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXMoYm9vbGVhbiB2YWx1ZSk7CiAgICAgdm9pZCBzZXRI
YW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKGJvb2xlYW4gdmFsdWUpOwogICAgIHZvaWQg
c2V0U2hvdWxkTG9nQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sZWFu
IHZhbHVlKTsKICAgICB2b2lkIHNldEF1dGhlbnRpY2F0aW9uVXNlcm5hbWUoRE9NU3RyaW5nIHVz
ZXJuYW1lKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzcwMSkKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE2LTA3LTI2ICBEYXZpZCBL
aWx6ZXIgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBOZXR3b3JraW5nIHByb2Nlc3Mg
Y3Jhc2ggZHVlIHRvIG1pc3NpbmcgLVtXZWJDb3JlQXV0aGVudGljYXRpb25DbGllbnRBc0NoYWxs
ZW5nZVNlbmRlciBwZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6XSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU2OTQ3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMzMyNTE2MD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgICogaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9hdXRoLXJlamVjdC1wcm90ZWN0aW9uLXNwYWNlLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hdXRoLXJl
amVjdC1wcm90ZWN0aW9uLXNwYWNlLmh0bWw6IEFkZGVkLgorCiAyMDE2LTA3LTI1ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUGFyYW1ldGVycyB0byBET01JbXBs
ZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudFR5cGUoKSBzaG91bGQgYmUgbWFuZGF0b3J5IGFuZCBu
b24tbnVsbGFibGUKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
YXV0aC1yZWplY3QtcHJvdGVjdGlvbi1zcGFjZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hdXRoLXJlamVjdC1wcm90ZWN0
aW9uLXNwYWNlLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L2F1dGgtcmVqZWN0LXByb3RlY3Rpb24tc3BhY2UtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMyBAQAorU2ltdWxhdGluZyByZWplY3Qg
cHJvdGVjdGlvbiBzcGFjZSBhbmQgY29udGludWUgZm9yIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5n
ZQorQUxFUlQ6IHN0YXR1czogNDAxCisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QvYXV0aC1yZWplY3QtcHJvdGVjdGlvbi1zcGFjZS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYXV0aC1yZWplY3QtcHJv
dGVjdGlvbi1zcGFjZS5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QvYXV0aC1yZWplY3QtcHJvdGVjdGlvbi1zcGFjZS5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTcgQEAKKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLnNldFJlamVjdHNQcm90ZWN0aW9uU3BhY2VBbmRD
b250aW51ZUZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcyh0cnVlKTsKK30KK3ZhciByZXF1ZXN0
ID0gbmV3IFhNTEh0dHBSZXF1ZXN0OworcmVxdWVzdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5j
dGlvbiAoKSB7CisgICAgaWYgKHJlcXVlc3QucmVhZHlTdGF0ZSA9PT0gNCkgeworICAgICAgICBh
bGVydCgic3RhdHVzOiAiICsgcmVxdWVzdC5zdGF0dXMpOworICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQor
fTsKK3JlcXVlc3Qub3BlbignR0VUJywgJ3Jlc291cmNlcy9iYXNpYy1hdXRoL2Jhc2ljLWF1dGgu
cGhwJyk7CityZXF1ZXN0LnNlbmQobnVsbCk7Cis8L3NjcmlwdD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>