<?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>161961</bug_id>
          
          <creation_ts>2016-09-14 07:26:32 -0700</creation_ts>
          <short_desc>callPromiseFunction should be made usable for custom binding code</short_desc>
          <delta_ts>2016-09-15 00:42:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>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=161787</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=162010</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1229543</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-09-14 07:26:32 -0700</bug_when>
    <thetext>Custom binding code is not always handling promise correctly as can be seen from SubtleCrypto and getUserMedia, especially the handling of exceptions.
Having a wrapper function would be useful for these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229544</commentid>
    <comment_count>1</comment_count>
      <attachid>288812</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-09-14 07:32:37 -0700</bug_when>
    <thetext>Created attachment 288812
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229558</commentid>
    <comment_count>2</comment_count>
      <attachid>288817</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-09-14 08:38:31 -0700</bug_when>
    <thetext>Created attachment 288817
Adding binding test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229559</commentid>
    <comment_count>3</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-09-14 08:40:00 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Created attachment 288817 [details]
&gt; Adding binding test

Patch only updates getUserMedia
SubtleCrypto should follow with the same routines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229612</commentid>
    <comment_count>4</comment_count>
      <attachid>288817</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-09-14 10:04:09 -0700</bug_when>
    <thetext>Comment on attachment 288817
Adding binding test

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

&gt; Source/WebCore/bindings/js/JSDOMPromise.h:162
&gt; +template&lt;PromiseFunction promiseFunction, bool canBeCalledInWorker = false&gt;

The use of a boolean here probably makes this hard to read at call sites. Is there a better way do this? We can use our typical enum approach, for example.

&gt; Source/WebCore/bindings/js/JSDOMPromise.h:189
&gt; +template&lt;BindingPromiseFunction bindingPromiseFunction, bool canBeCalledInWorker&gt;

Ditto.

&gt; Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp:386
&gt; +    return callPromiseFunction&lt;JSMediaDevicesGetUserMediaPromiseFunction, false&gt;(state);

The &quot;false&quot; here is completely unclear.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3414
&gt;  static EncodedJSValue ${functionName}Promise(ExecState*, Ref&lt;DeferredWrapper&gt;&amp;&amp;);
&gt;  ${functionReturn} ${functionName}(ExecState* state)

I’d like to see a blank line between these two lines.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3420
&gt;  static inline EncodedJSValue ${functionName}Promise(ExecState* state, Ref&lt;DeferredWrapper&gt;&amp;&amp;  deferredWrapper)

There is an extra space here after the &quot;&amp;&amp;&quot;.

&gt; LayoutTests/fast/mediastream/MediaDevices-getUserMedia.html:140
&gt; +                testPassed(&quot; navigator.mediaDevices.getUserMedia() rejected with error: &quot; + error);

Why the leading space here?

&gt; LayoutTests/fast/mediastream/MediaDevices-getUserMedia.html:143
&gt;                  testPassed(&quot; navigator.mediaDevices.getUserMedia({}) rejected with error: &quot; + error);

Why the leading space here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229913</commentid>
    <comment_count>5</comment_count>
      <attachid>288933</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-09-14 23:51:33 -0700</bug_when>
    <thetext>Created attachment 288933
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229921</commentid>
    <comment_count>6</comment_count>
      <attachid>288933</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-15 00:23:26 -0700</bug_when>
    <thetext>Comment on attachment 288933
Patch for landing

Clearing flags on attachment: 288933

Committed r205953: &lt;http://trac.webkit.org/changeset/205953&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229922</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-15 00:23:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229928</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-09-15 00:42:09 -0700</bug_when>
    <thetext>Thanks for the review.

(In reply to comment #4)
&gt; Comment on attachment 288817 [details]
&gt; Adding binding test
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=288817&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSDOMPromise.h:162
&gt; &gt; +template&lt;PromiseFunction promiseFunction, bool canBeCalledInWorker = false&gt;
&gt; 
&gt; The use of a boolean here probably makes this hard to read at call sites. Is
&gt; there a better way do this? We can use our typical enum approach, for
&gt; example.

Done with a PromiseExecutionScope enum class.

&gt; The &quot;false&quot; here is completely unclear.
&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3414
&gt; &gt;  static EncodedJSValue ${functionName}Promise(ExecState*, Ref&lt;DeferredWrapper&gt;&amp;&amp;);
&gt; &gt;  ${functionReturn} ${functionName}(ExecState* state)
&gt; 
&gt; I’d like to see a blank line between these two lines.

Done

&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3420
&gt; &gt;  static inline EncodedJSValue ${functionName}Promise(ExecState* state, Ref&lt;DeferredWrapper&gt;&amp;&amp;  deferredWrapper)
&gt; 
&gt; There is an extra space here after the &quot;&amp;&amp;&quot;.

Done

&gt; &gt; LayoutTests/fast/mediastream/MediaDevices-getUserMedia.html:140
&gt; &gt; +                testPassed(&quot; navigator.mediaDevices.getUserMedia() rejected with error: &quot; + error);
&gt; 
&gt; Why the leading space here?
&gt; 
&gt; &gt; LayoutTests/fast/mediastream/MediaDevices-getUserMedia.html:143
&gt; &gt;                  testPassed(&quot; navigator.mediaDevices.getUserMedia({}) rejected with error: &quot; + error);
&gt; 
&gt; Why the leading space here?

Fixed</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288812</attachid>
            <date>2016-09-14 07:32:37 -0700</date>
            <delta_ts>2016-09-14 08:38:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161961-20160914162955.patch</filename>
            <type>text/plain</type>
            <size>11266</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1OTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmViOGYzMWVkZmEwMTc1
OWI4OThmYzk1ZGFlNWFhNWI0MWY1NDcyZS4uNjQ0NTc0ZWEyYzUxMWRmNjA4ZDhkOGY4ODhlNDA1
YmVmNmUxZGExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE2LTA5LTE0ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBjYWxsUHJvbWlzZUZ1bmN0
aW9uIHNob3VsZCBiZSBtYWRlIHVzYWJsZSBmb3IgY3VzdG9tIGJpbmRpbmcgY29kZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxOTYxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSB1cGRh
dGVkIHRlc3QuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNhc3RUaGlzVmFsdWUpOiBVdGlsaXR5IGZ1bmN0aW9uIHRvIGNhc3QgdGhp
cyB2YWx1ZSB0byBhIHNwZWNpZmljIHR5cGUuCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Q
cm9taXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpjYWxsUHJvbWlzZUZ1bmN0aW9uKTogVXBkYXRl
ZCB0byB0YWtlIHJlYWwgcHJvbWlzZSBmdW5jdGlvbiBhcyBhIHRlbXBsYXRlIHBhcmFtZXRlcgor
ICAgICAgICBmb3IgaW1wcm92ZWQgZWZmaWNpZW5jeS4gQWRkZWQgd29ya2VyTW9kZSB0ZW1wbGF0
ZSBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpiaW5kaW5nUHJvbWlzZUZ1bmN0aW9uQWRh
cHRlcik6IEZ1bmN0aW9uIHNpZ25hdHVyZSBhZGFwdG9yLgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVkaWFEZXZp
Y2VzR2V0VXNlck1lZGlhUHJvbWlzZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVk
aWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEpOiBNYWtpbmcgdXNlIG9mIGNhbGxQcm9taXNlRnVuY3Rp
b24gdG8gcHJvcGVybHkgaGFuZGxlIGV4Y2VwdGlvbnMuCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9u
KTogVXBkYXRlZCB0byB1c2UgdGVtcGxhdGUgcGFyYW1ldGVyLgorCiAyMDE2LTA5LTEzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjIwNTg4Ny4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgK
aW5kZXggMGY3MmEwMzMyYjhhMjM5MjhiZDUwYWI0MzFlM2JlZDMyMDgwMDA5OC4uYTg3MGE3MWZj
NmJmMDMwNTIyOWFmMjQwODA1ZGZjNWQwZTIwMTZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTE3Myw2ICsxNzMsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBET01DbGFzcywgdHlwZW5hbWUgVD4gYXV0byBjcmVhdGVXcmFwcGVyKEpTRE9NR2xvYmFsT2Jq
ZWN0KiwgUgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFzcz4gSlNDOjpKU1ZhbHVlIHdyYXAo
SlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIERPTUNsYXNzJik7CiAKK3RlbXBs
YXRlPHR5cGVuYW1lIEpTQ2xhc3M+IEpTQ2xhc3MmIGNhc3RUaGlzVmFsdWUoSlNDOjpFeGVjU3Rh
dGUmKTsKKwogdm9pZCBhZGRJbXB1cmVQcm9wZXJ0eShjb25zdCBBdG9taWNTdHJpbmcmKTsKIAog
Y29uc3QgSlNDOjpIYXNoVGFibGUmIGdldEhhc2hUYWJsZUZvckdsb2JhbERhdGEoSlNDOjpWTSYs
IGNvbnN0IEpTQzo6SGFzaFRhYmxlJiBzdGF0aWNUYWJsZSk7CkBAIC01MjksNiArNTMxLDE0IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIERPTUNsYXNzPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHdyYXAoSlND
OjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPCiAgICAgcmV0dXJuIHRvSlNOZXdseUNyZWF0ZWQoc3Rh
dGUsIGdsb2JhbE9iamVjdCwgUmVmPERPTUNsYXNzPihkb21PYmplY3QpKTsKIH0KIAordGVtcGxh
dGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpTQ2xhc3MmIGNhc3RUaGlzVmFsdWUoSlNDOjpF
eGVjU3RhdGUmIHN0YXRlKQoreworICAgIGF1dG8gdGhpc1ZhbHVlID0gc3RhdGUudGhpc1ZhbHVl
KCk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTQ2xhc3MqPih0
aGlzVmFsdWUpOworICAgIEFTU0VSVChjYXN0ZWRUaGlzKTsKKyAgICByZXR1cm4gKmNhc3RlZFRo
aXM7Cit9CisKIGlubGluZSBpbnQzMl90IGZpbml0ZUludDMyVmFsdWUoSlNDOjpKU1ZhbHVlIHZh
bHVlLCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgYm9vbCYgb2theSkKIHsKICAgICBkb3VibGUgbnVt
YmVyID0gdmFsdWUudG9OdW1iZXIoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NUHJvbWlzZS5oCmluZGV4IDU0ZDY4YzdmNDY5NGUwYzdmNDk3NGEzYWNmYmU2YjBkYmQ4NTdm
MmEuLjdhODJlYzdjYjViNjBiMjY0ZmJiZDdmOGE1NGY0MWU0YTE2OTY4NDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCkBAIC0xNTcsNyArMTU3LDEwIEBAIHZv
aWQgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIoUmVmPERlZmVycmVkV3JhcHBlcj4mJiwg
QXJyYXlCdWZmZXIqKTsKIHZvaWQgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIoUmVmPERl
ZmVycmVkV3JhcHBlcj4mJiwgY29uc3Qgdm9pZCosIHNpemVfdCk7CiB2b2lkIHJlamVjdFByb21p
c2VXaXRoRXhjZXB0aW9uSWZBbnkoSlNDOjpFeGVjU3RhdGUmLCBKU0RPTUdsb2JhbE9iamVjdCYs
IEpTQzo6SlNQcm9taXNlRGVmZXJyZWQmKTsKIAotaW5saW5lIEpTQzo6SlNWYWx1ZSBjYWxsUHJv
bWlzZUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSBw
cm9taXNlRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqLCBSZWY8RGVmZXJyZWRXcmFwcGVyPiYmKSkK
K3VzaW5nIFByb21pc2VGdW5jdGlvbiA9IHZvaWQoSlNDOjpFeGVjU3RhdGUmLCBSZWY8RGVmZXJy
ZWRXcmFwcGVyPiYmKTsKKwordGVtcGxhdGU8UHJvbWlzZUZ1bmN0aW9uIHByb21pc2VGdW5jdGlv
biwgYm9vbCBjYW5CZUNhbGxlZEluV29ya2VyID0gZmFsc2U+CitpbmxpbmUgSlNDOjpKU1ZhbHVl
IGNhbGxQcm9taXNlRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIEpTQzo6
Vk0mIHZtID0gc3RhdGUudm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09Q
RSh2bSk7CkBAIC0xNjYsMTYgKzE2OSwyOSBAQCBpbmxpbmUgSlNDOjpKU1ZhbHVlIGNhbGxQcm9t
aXNlRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkVuY29kZWRKU1ZhbAogICAg
IEpTQzo6SlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2VEZWZlcnJlZCA9IEpTQzo6SlNQcm9taXNl
RGVmZXJyZWQ6OmNyZWF0ZSgmc3RhdGUsICZnbG9iYWxPYmplY3QpOwogCiAgICAgLy8gcHJvbWlz
ZURlZmVycmVkIGNhbiBiZSBudWxsIHdoZW4gdGVybWluYXRpbmcgYSBXb3JrZXIgYWJydXB0bHku
Ci0gICAgaWYgKCFwcm9taXNlRGVmZXJyZWQpCisgICAgaWYgKGNhbkJlQ2FsbGVkSW5Xb3JrZXIg
JiYgIXByb21pc2VEZWZlcnJlZCkKICAgICAgICAgcmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsK
IAotICAgIHByb21pc2VGdW5jdGlvbigmc3RhdGUsIERlZmVycmVkV3JhcHBlcjo6Y3JlYXRlKCZz
dGF0ZSwgJmdsb2JhbE9iamVjdCwgcHJvbWlzZURlZmVycmVkKSk7CisgICAgcHJvbWlzZUZ1bmN0
aW9uKHN0YXRlLCBEZWZlcnJlZFdyYXBwZXI6OmNyZWF0ZSgmc3RhdGUsICZnbG9iYWxPYmplY3Qs
IHByb21pc2VEZWZlcnJlZCkpOwogCiAgICAgcmVqZWN0UHJvbWlzZVdpdGhFeGNlcHRpb25JZkFu
eShzdGF0ZSwgZ2xvYmFsT2JqZWN0LCAqcHJvbWlzZURlZmVycmVkKTsKICAgICBBU1NFUlRfVU5V
U0VEKHNjb3BlLCAhc2NvcGUuZXhjZXB0aW9uKCkpOwogICAgIHJldHVybiBwcm9taXNlRGVmZXJy
ZWQtPnByb21pc2UoKTsKIH0KIAordXNpbmcgQmluZGluZ1Byb21pc2VGdW5jdGlvbiA9IEpTQzo6
RW5jb2RlZEpTVmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBSZWY8RGVmZXJyZWRXcmFwcGVyPiYmKTsK
K3RlbXBsYXRlPEJpbmRpbmdQcm9taXNlRnVuY3Rpb24gYmluZGluZ0Z1bmN0aW9uPgoraW5saW5l
IHZvaWQgYmluZGluZ1Byb21pc2VGdW5jdGlvbkFkYXB0ZXIoSlNDOjpFeGVjU3RhdGUmIHN0YXRl
LCBSZWY8RGVmZXJyZWRXcmFwcGVyPiYmIHByb21pc2UpCit7CisgICAgYmluZGluZ0Z1bmN0aW9u
KCZzdGF0ZSwgV1RGTW92ZShwcm9taXNlKSk7Cit9CisKK3RlbXBsYXRlPEJpbmRpbmdQcm9taXNl
RnVuY3Rpb24gYmluZGluZ1Byb21pc2VGdW5jdGlvbiwgYm9vbCBjYW5CZUNhbGxlZEluV29ya2Vy
PgoraW5saW5lIEpTQzo6SlNWYWx1ZSBjYWxsUHJvbWlzZUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gY2FsbFByb21pc2VGdW5jdGlvbjxiaW5kaW5nUHJvbWlz
ZUZ1bmN0aW9uQWRhcHRlcjxiaW5kaW5nUHJvbWlzZUZ1bmN0aW9uPiwgY2FuQmVDYWxsZWRJbldv
cmtlcj4oc3RhdGUpOworfQorCiAvLyBBdCB0aGUgbW9tZW50LCBWYWx1ZSBjYW5ub3QgYmUgYSBS
ZWY8VD4gb3IgUmVmUHRyPFQ+LCBpdCBzaG91bGQgYmUgYSBET00gY2xhc3MuCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVmFsdWU+CiBjbGFzcyBET01Qcm9taXNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcAppbmRleCA0Y2U2MTNhZTEz
YTk1Y2RmZGE1NDYxNDYyMTI3ZjhjMDUwODFlN2VmLi5kMTQzM2M2NTMxNTRkNmYzODY2OTVlZjUz
Y2JlZTQzNGE4OTgyY2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U01lZGlhRGV2aWNlc0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNNZWRpYURldmljZXNDdXN0b20uY3BwCkBAIC0zNDAsMTMgKzM0MCwxNiBAQCB2b2lkIHBhcnNl
TWVkaWFDb25zdHJhaW50c0RpY3Rpb25hcnkoY29uc3QgRGljdGlvbmFyeSYgbWVkaWFUcmFja0Nv
bnN0cmFpbnRzLCBNZQogICAgIH0KIH0KIAotSlNWYWx1ZSBKU01lZGlhRGV2aWNlczo6Z2V0VXNl
ck1lZGlhKEV4ZWNTdGF0ZSYgc3RhdGUpCitzdGF0aWMgdm9pZCBKU01lZGlhRGV2aWNlc0dldFVz
ZXJNZWRpYVByb21pc2VGdW5jdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBSZWY8RGVmZXJyZWRXcmFw
cGVyPiYmIHByb21pc2UpCiB7CiAgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBpZiAoVU5MSUtFTFkoc3RhdGUu
YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhy
b3dWTUVycm9yKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZz
dGF0ZSkpKTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpIHsK
KyAgICAgICAgdGhyb3dWTUVycm9yKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CiAgICAgYXV0byBjb25zdHJhaW50c0RpY3Rpb25hcnkgPSBEaWN0aW9u
YXJ5KCZzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogCkBAIC0zNzQsMTAgKzM3
NywxMyBAQCBKU1ZhbHVlIEpTTWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEoRXhlY1N0YXRlJiBz
dGF0ZSkKIAogICAgIGF1dG8gYXVkaW9Db25zdHJhaW50cyA9IE1lZGlhQ29uc3RyYWludHNJbXBs
OjpjcmVhdGUoV1RGTW92ZShtYW5kYXRvcnlBdWRpb0NvbnN0cmFpbnRzKSwgV1RGTW92ZShhZHZh
bmNlZEF1ZGlvQ29uc3RyYWludHMpLCBhcmVBdWRpb0NvbnN0cmFpbnRzVmFsaWQpOwogICAgIGF1
dG8gdmlkZW9Db25zdHJhaW50cyA9IE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUoV1RGTW92
ZShtYW5kYXRvcnlWaWRlb0NvbnN0cmFpbnRzKSwgV1RGTW92ZShhZHZhbmNlZFZpZGVvQ29uc3Ry
YWludHMpLCBhcmVWaWRlb0NvbnN0cmFpbnRzVmFsaWQpOwotICAgIEpTQzo6SlNQcm9taXNlRGVm
ZXJyZWQqIHByb21pc2VEZWZlcnJlZCA9IEpTQzo6SlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZSgm
c3RhdGUsIGdsb2JhbE9iamVjdCgpKTsKLSAgICB3cmFwcGVkKCkuZ2V0VXNlck1lZGlhKFdURk1v
dmUoYXVkaW9Db25zdHJhaW50cyksIFdURk1vdmUodmlkZW9Db25zdHJhaW50cyksIERlZmVycmVk
V3JhcHBlcjo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIHByb21pc2VEZWZlcnJlZCks
IGVjKTsKKyAgICBjYXN0VGhpc1ZhbHVlPEpTTWVkaWFEZXZpY2VzPihzdGF0ZSkud3JhcHBlZCgp
LmdldFVzZXJNZWRpYShXVEZNb3ZlKGF1ZGlvQ29uc3RyYWludHMpLCBXVEZNb3ZlKHZpZGVvQ29u
c3RyYWludHMpLCBXVEZNb3ZlKHByb21pc2UpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZz
dGF0ZSwgZWMpOwotICAgIHJldHVybiBwcm9taXNlRGVmZXJyZWQtPnByb21pc2UoKTsKK30KKwor
SlNWYWx1ZSBKU01lZGlhRGV2aWNlczo6Z2V0VXNlck1lZGlhKEV4ZWNTdGF0ZSYgc3RhdGUpCit7
CisgICAgcmV0dXJuIGNhbGxQcm9taXNlRnVuY3Rpb248SlNNZWRpYURldmljZXNHZXRVc2VyTWVk
aWFQcm9taXNlRnVuY3Rpb24sIGZhbHNlPihzdGF0ZSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggZGRkNjUw
ZGZlOTQwMThlODJhMzE3MDU0YTIzYTFlNDA0YzM3YmY3Ny4uMzAyOTVkZTM3OWUzOWQ5YTA0OTg0
MzIwYmU2YzU4NGJjMGI1ZmNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTM0MDgsMTEgKzM0MDgsMTMgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIGlmIChJc1JldHVybmluZ1Byb21pc2Uo
JGZ1bmN0aW9uKSAmJiAhJGlzQ3VzdG9tKSB7CiAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5j
bHVkZXMoIkpTRE9NUHJvbWlzZS5oIik7CiAKKyAgICAgICAgICAgICAgICBteSAkY2FuQmVDYWxs
ZWRJbldvcmtlciA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFeHBvc2VkIn0g
PyAidHJ1ZSIgOiAiZmFsc2UiOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8
PEVORCk7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgJHtmdW5jdGlvbk5hbWV9UHJvbWlzZShFeGVj
U3RhdGUqLCBSZWY8RGVmZXJyZWRXcmFwcGVyPiYmKTsKICR7ZnVuY3Rpb25SZXR1cm59ICR7ZnVu
Y3Rpb25OYW1lfShFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY2FsbFByb21pc2VGdW5jdGlvbigqc3RhdGUsICR7ZnVuY3Rpb25OYW1lfVByb21pc2UpKTsK
KyAgICBBU1NFUlQoc3RhdGUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbFByb21p
c2VGdW5jdGlvbjwke2Z1bmN0aW9uTmFtZX1Qcm9taXNlLCAkY2FuQmVDYWxsZWRJbldvcmtlcj4o
KnN0YXRlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgJHtmdW5jdGlvbk5h
bWV9UHJvbWlzZShFeGVjU3RhdGUqIHN0YXRlLCBSZWY8RGVmZXJyZWRXcmFwcGVyPiYmICBkZWZl
cnJlZFdyYXBwZXIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggOGNlNzZkZjY4NzkwNjgzNTQ0ZTk1OGIwZTBmZjY3OWQyNTBl
NmJmNC4uMTMzNTk0NmFhMTdjZmNkMDQwNGZmZTdiNTNiNjUwNzZlNjQxM2E3OSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzIEBACisyMDE2LTA5LTE0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KKworICAgICAgICBjYWxsUHJvbWlzZUZ1bmN0aW9uIHNob3VsZCBiZSBtYWRlIHVzYWJsZSBm
b3IgY3VzdG9tIGJpbmRpbmcgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYxOTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1nZXRVc2VyTWVk
aWEtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2Vz
LWdldFVzZXJNZWRpYS5odG1sOiBVcGRhdGVkIHRvIGV4cGVjdCBhIHJlamVjdGVkIHByb21pc2Ug
aW4gbGlldSBvZiBhbiBleGNlcHRpb24uCisKIDIwMTYtMDktMTMgIFJ5YW4gSGFkZGFkICA8cnlh
bmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgTWFya2luZyBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL1hNTEh0dHBSZXF1ZXN0L3Jlc3BvbnNlLW1ldGhvZC5odG0gYXMgZmFpbGlu
ZyBvbiBpb3Mtc2ltdWxhdG9yLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVzZXJNZWRpYS1leHBlY3RlZC50eHQK
aW5kZXggOGI2OTA1MTNmZTRmYTMxOTA2YzUxYWQ1NWExNzA5OWE1M2U0OGM2ZC4uNzM4ODI1Y2Qy
Y2RmYWZkNWNlYzViOTYwOTI1ODEzMWEwMGZiM2U5ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1nZXRVc2VyTWVk
aWEtZXhwZWN0ZWQudHh0CkBAIC0zLDkgKzMsOSBAQCBUZXN0cyBnZXRVc2VyTWVkaWEgKFByb21p
c2UtYmFzZWQgdmVyc2lvbiBvbiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzKQogT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgogCiAKLVBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVk
aWEoKS50aGVuKGludmFsaWRHb3RTdHJlYW0pOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBO
b3QgZW5vdWdoIGFyZ3VtZW50cy4KIFBBU1MgdHlwZW9mIG5hdmlnYXRvci5tZWRpYURldmljZXMu
d2Via2l0R2V0VXNlck1lZGlhIGlzICd1bmRlZmluZWQnCiBQQVNTIG5hdmlnYXRvci5tZWRpYURl
dmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSkudGhlbihnb3RTdHJlYW0xKTsgZGlkIG5v
dCB0aHJvdyBleGNlcHRpb24uCitQQVNTICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJN
ZWRpYSgpIHJlamVjdGVkIHdpdGggZXJyb3I6IFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVu
dHMKIFBBU1MgIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt9KSByZWplY3Rl
ZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKIFBBU1MgU3RyZWFtIGdlbmVyYXRl
ZC4KIFBBU1Mgc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDEKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVzZXJNZWRpYS5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1l
ZGlhLmh0bWwKaW5kZXggMDk0OGFmMzI0M2E0NjU1OWZiM2I4ZmNhNjA0NmQyODY1NDc0YjNlMS4u
ZWZmNTQwZmYxN2M5NDM0YmJlMDI2MmJjMTVjZGU4ZGZiMmU5YzhjZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1l
ZGlhLmh0bWwKQEAgLTEzNiw3ICsxMzYsOSBAQAogICAgICAgICAgICAgICAgIHNob3VsZE5vdFRo
cm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7dmlkZW86dHJ1ZX0pLnRo
ZW4oZ290U3RyZWFtMik7IikKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgc2hvdWxkVGhy
b3coIm5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKCkudGhlbihpbnZhbGlkR290
U3RyZWFtKTsiKTsKKyAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1l
ZGlhKCkudGhlbihpbnZhbGlkR290U3RyZWFtLCBmdW5jdGlvbihlcnJvcikgeworICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoIiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgp
IHJlamVjdGVkIHdpdGggZXJyb3I6ICIgKyBlcnJvcik7CisgICAgICAgICAgICB9KTsKICAgICAg
ICAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt9KS50aGVuKGludmFs
aWRHb3RTdHJlYW0sIGZ1bmN0aW9uKGVycm9yKSB7CiAgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt9KSByZWplY3RlZCB3aXRo
IGVycm9yOiAiICsgZXJyb3IpOwogICAgICAgICAgICAgfSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288817</attachid>
            <date>2016-09-14 08:38:31 -0700</date>
            <delta_ts>2016-09-14 23:51:22 -0700</delta_ts>
            <desc>Adding binding test</desc>
            <filename>bug-161961-20160914173553.patch</filename>
            <type>text/plain</type>
            <size>22792</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1OTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmViOGYzMWVkZmEwMTc1
OWI4OThmYzk1ZGFlNWFhNWI0MWY1NDcyZS4uYjg1MzU4N2NiNGEyNTRiN2I2NTNjNWVjZDFlY2Nk
Y2ZmN2YwMGJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE2LTA5LTE0ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBjYWxsUHJvbWlzZUZ1bmN0
aW9uIHNob3VsZCBiZSBtYWRlIHVzYWJsZSBmb3IgY3VzdG9tIGJpbmRpbmcgY29kZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxOTYxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSB1cGRh
dGVkIHRlc3QuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNhc3RUaGlzVmFsdWUpOiBVdGlsaXR5IGZ1bmN0aW9uIHRvIGNhc3QgdGhp
cyB2YWx1ZSB0byBhIHNwZWNpZmljIHR5cGUuCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Q
cm9taXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpjYWxsUHJvbWlzZUZ1bmN0aW9uKTogVXBkYXRl
ZCB0byB0YWtlIHJlYWwgcHJvbWlzZSBmdW5jdGlvbiBhcyBhIHRlbXBsYXRlIHBhcmFtZXRlcgor
ICAgICAgICBmb3IgaW1wcm92ZWQgZWZmaWNpZW5jeS4gQWRkZWQgd29ya2VyTW9kZSB0ZW1wbGF0
ZSBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpiaW5kaW5nUHJvbWlzZUZ1bmN0aW9uQWRh
cHRlcik6IEZ1bmN0aW9uIHNpZ25hdHVyZSBhZGFwdG9yLgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVkaWFEZXZp
Y2VzR2V0VXNlck1lZGlhUHJvbWlzZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVk
aWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEpOiBNYWtpbmcgdXNlIG9mIGNhbGxQcm9taXNlRnVuY3Rp
b24gdG8gcHJvcGVybHkgaGFuZGxlIGV4Y2VwdGlvbnMuCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9u
KTogVXBkYXRlZCB0byB1c2UgdGVtcGxhdGUgcGFyYW1ldGVyLgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE5vZGVQcm90b3R5cGVGdW5jdGlvblRlc3RXb3JrZXJQcm9taXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblRlc3RXb3JrZXJQcm9taXNlUHJvbWlzZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJv
bWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVu
Y3Rpb25XaXRoT3B0aW9uYWxJbnRBcmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uMSk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3Zlcmxv
YWRlZEZ1bmN0aW9uMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1
bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNl
cHRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Tm9kZS5pZGw6IEFk
ZGluZyBXb3JrZXIgcHJvbWlzZSBiaW5kaW5nIHRlc3QuCisKIDIwMTYtMDktMTMgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMjA1ODg3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRl
eCAwZjcyYTAzMzJiOGEyMzkyOGJkNTBhYjQzMWUzYmVkMzIwODAwMDk4Li5hODcwYTcxZmM2YmYw
MzA1MjI5YWYyNDA4MDVkZmM1ZDBlMjAxNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUJpbmRpbmcuaApAQCAtMTczLDYgKzE3Myw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIERP
TUNsYXNzLCB0eXBlbmFtZSBUPiBhdXRvIGNyZWF0ZVdyYXBwZXIoSlNET01HbG9iYWxPYmplY3Qq
LCBSCiAKIHRlbXBsYXRlPHR5cGVuYW1lIERPTUNsYXNzPiBKU0M6OkpTVmFsdWUgd3JhcChKU0M6
OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgRE9NQ2xhc3MmKTsKIAordGVtcGxhdGU8
dHlwZW5hbWUgSlNDbGFzcz4gSlNDbGFzcyYgY2FzdFRoaXNWYWx1ZShKU0M6OkV4ZWNTdGF0ZSYp
OworCiB2b2lkIGFkZEltcHVyZVByb3BlcnR5KGNvbnN0IEF0b21pY1N0cmluZyYpOwogCiBjb25z
dCBKU0M6Okhhc2hUYWJsZSYgZ2V0SGFzaFRhYmxlRm9yR2xvYmFsRGF0YShKU0M6OlZNJiwgY29u
c3QgSlNDOjpIYXNoVGFibGUmIHN0YXRpY1RhYmxlKTsKQEAgLTUyOSw2ICs1MzEsMTQgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgRE9NQ2xhc3M+IGlubGluZSBKU0M6OkpTVmFsdWUgd3JhcChKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIEpTRE8KICAgICByZXR1cm4gdG9KU05ld2x5Q3JlYXRlZChzdGF0ZSwg
Z2xvYmFsT2JqZWN0LCBSZWY8RE9NQ2xhc3M+KGRvbU9iamVjdCkpOwogfQogCit0ZW1wbGF0ZTx0
eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNDbGFzcyYgY2FzdFRoaXNWYWx1ZShKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUpCit7CisgICAgYXV0byB0aGlzVmFsdWUgPSBzdGF0ZS50aGlzVmFsdWUoKTsK
KyAgICBhdXRvIGNhc3RlZFRoaXMgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNDbGFzcyo+KHRoaXNW
YWx1ZSk7CisgICAgQVNTRVJUKGNhc3RlZFRoaXMpOworICAgIHJldHVybiAqY2FzdGVkVGhpczsK
K30KKwogaW5saW5lIGludDMyX3QgZmluaXRlSW50MzJWYWx1ZShKU0M6OkpTVmFsdWUgdmFsdWUs
IEpTQzo6RXhlY1N0YXRlKiBleGVjLCBib29sJiBva2F5KQogewogICAgIGRvdWJsZSBudW1iZXIg
PSB2YWx1ZS50b051bWJlcihleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NUHJvbWlzZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Q
cm9taXNlLmgKaW5kZXggNTRkNjhjN2Y0Njk0ZTBjN2Y0OTc0YTNhY2ZiZTZiMGRiZDg1N2YyYS4u
N2E4MmVjN2NiNWI2MGIyNjRmYmJkN2Y4YTU0ZjQxZTRhMTY5Njg0MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKQEAgLTE1Nyw3ICsxNTcsMTAgQEAgdm9pZCBm
dWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihSZWY8RGVmZXJyZWRXcmFwcGVyPiYmLCBBcnJh
eUJ1ZmZlciopOwogdm9pZCBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihSZWY8RGVmZXJy
ZWRXcmFwcGVyPiYmLCBjb25zdCB2b2lkKiwgc2l6ZV90KTsKIHZvaWQgcmVqZWN0UHJvbWlzZVdp
dGhFeGNlcHRpb25JZkFueShKU0M6OkV4ZWNTdGF0ZSYsIEpTRE9NR2xvYmFsT2JqZWN0JiwgSlND
OjpKU1Byb21pc2VEZWZlcnJlZCYpOwogCi1pbmxpbmUgSlNDOjpKU1ZhbHVlIGNhbGxQcm9taXNl
RnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkVuY29kZWRKU1ZhbHVlIHByb21p
c2VGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSosIFJlZjxEZWZlcnJlZFdyYXBwZXI+JiYpKQordXNp
bmcgUHJvbWlzZUZ1bmN0aW9uID0gdm9pZChKU0M6OkV4ZWNTdGF0ZSYsIFJlZjxEZWZlcnJlZFdy
YXBwZXI+JiYpOworCit0ZW1wbGF0ZTxQcm9taXNlRnVuY3Rpb24gcHJvbWlzZUZ1bmN0aW9uLCBi
b29sIGNhbkJlQ2FsbGVkSW5Xb3JrZXIgPSBmYWxzZT4KK2lubGluZSBKU0M6OkpTVmFsdWUgY2Fs
bFByb21pc2VGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgSlNDOjpWTSYg
dm0gPSBzdGF0ZS52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZt
KTsKQEAgLTE2NiwxNiArMTY5LDI5IEBAIGlubGluZSBKU0M6OkpTVmFsdWUgY2FsbFByb21pc2VG
dW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6RW5jb2RlZEpTVmFsCiAgICAgSlND
OjpKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZURlZmVycmVkID0gSlNDOjpKU1Byb21pc2VEZWZl
cnJlZDo6Y3JlYXRlKCZzdGF0ZSwgJmdsb2JhbE9iamVjdCk7CiAKICAgICAvLyBwcm9taXNlRGVm
ZXJyZWQgY2FuIGJlIG51bGwgd2hlbiB0ZXJtaW5hdGluZyBhIFdvcmtlciBhYnJ1cHRseS4KLSAg
ICBpZiAoIXByb21pc2VEZWZlcnJlZCkKKyAgICBpZiAoY2FuQmVDYWxsZWRJbldvcmtlciAmJiAh
cHJvbWlzZURlZmVycmVkKQogICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOwogCi0g
ICAgcHJvbWlzZUZ1bmN0aW9uKCZzdGF0ZSwgRGVmZXJyZWRXcmFwcGVyOjpjcmVhdGUoJnN0YXRl
LCAmZ2xvYmFsT2JqZWN0LCBwcm9taXNlRGVmZXJyZWQpKTsKKyAgICBwcm9taXNlRnVuY3Rpb24o
c3RhdGUsIERlZmVycmVkV3JhcHBlcjo6Y3JlYXRlKCZzdGF0ZSwgJmdsb2JhbE9iamVjdCwgcHJv
bWlzZURlZmVycmVkKSk7CiAKICAgICByZWplY3RQcm9taXNlV2l0aEV4Y2VwdGlvbklmQW55KHN0
YXRlLCBnbG9iYWxPYmplY3QsICpwcm9taXNlRGVmZXJyZWQpOwogICAgIEFTU0VSVF9VTlVTRUQo
c2NvcGUsICFzY29wZS5leGNlcHRpb24oKSk7CiAgICAgcmV0dXJuIHByb21pc2VEZWZlcnJlZC0+
cHJvbWlzZSgpOwogfQogCit1c2luZyBCaW5kaW5nUHJvbWlzZUZ1bmN0aW9uID0gSlNDOjpFbmNv
ZGVkSlNWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIFJlZjxEZWZlcnJlZFdyYXBwZXI+JiYpOwordGVt
cGxhdGU8QmluZGluZ1Byb21pc2VGdW5jdGlvbiBiaW5kaW5nRnVuY3Rpb24+CitpbmxpbmUgdm9p
ZCBiaW5kaW5nUHJvbWlzZUZ1bmN0aW9uQWRhcHRlcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIFJl
ZjxEZWZlcnJlZFdyYXBwZXI+JiYgcHJvbWlzZSkKK3sKKyAgICBiaW5kaW5nRnVuY3Rpb24oJnN0
YXRlLCBXVEZNb3ZlKHByb21pc2UpKTsKK30KKwordGVtcGxhdGU8QmluZGluZ1Byb21pc2VGdW5j
dGlvbiBiaW5kaW5nUHJvbWlzZUZ1bmN0aW9uLCBib29sIGNhbkJlQ2FsbGVkSW5Xb3JrZXI+Citp
bmxpbmUgSlNDOjpKU1ZhbHVlIGNhbGxQcm9taXNlRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUmIHN0
YXRlKQoreworICAgIHJldHVybiBjYWxsUHJvbWlzZUZ1bmN0aW9uPGJpbmRpbmdQcm9taXNlRnVu
Y3Rpb25BZGFwdGVyPGJpbmRpbmdQcm9taXNlRnVuY3Rpb24+LCBjYW5CZUNhbGxlZEluV29ya2Vy
PihzdGF0ZSk7Cit9CisKIC8vIEF0IHRoZSBtb21lbnQsIFZhbHVlIGNhbm5vdCBiZSBhIFJlZjxU
PiBvciBSZWZQdHI8VD4sIGl0IHNob3VsZCBiZSBhIERPTSBjbGFzcy4KIHRlbXBsYXRlIDx0eXBl
bmFtZSBWYWx1ZT4KIGNsYXNzIERPTVByb21pc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNNZWRpYURldmljZXNDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNNZWRpYURldmljZXNDdXN0b20uY3BwCmluZGV4IDRjZTYxM2FlMTNhOTVj
ZGZkYTU0NjE0NjIxMjdmOGMwNTA4MWU3ZWYuLmQxNDMzYzY1MzE1NGQ2ZjM4NjY5NWVmNTNjYmVl
NDM0YTg5ODJjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVk
aWFEZXZpY2VzQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01l
ZGlhRGV2aWNlc0N1c3RvbS5jcHAKQEAgLTM0MCwxMyArMzQwLDE2IEBAIHZvaWQgcGFyc2VNZWRp
YUNvbnN0cmFpbnRzRGljdGlvbmFyeShjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3Ry
YWludHMsIE1lCiAgICAgfQogfQogCi1KU1ZhbHVlIEpTTWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVk
aWEoRXhlY1N0YXRlJiBzdGF0ZSkKK3N0YXRpYyB2b2lkIEpTTWVkaWFEZXZpY2VzR2V0VXNlck1l
ZGlhUHJvbWlzZUZ1bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIFJlZjxEZWZlcnJlZFdyYXBwZXI+
JiYgcHJvbWlzZSkKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1
bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1ZN
RXJyb3IoJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRl
KSkpOworICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKSkgeworICAg
ICAgICB0aHJvd1ZNRXJyb3IoJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKICAgICBhdXRvIGNvbnN0cmFpbnRzRGljdGlvbmFyeSA9IERpY3Rpb25hcnko
JnN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAKQEAgLTM3NCwxMCArMzc3LDEz
IEBAIEpTVmFsdWUgSlNNZWRpYURldmljZXM6OmdldFVzZXJNZWRpYShFeGVjU3RhdGUmIHN0YXRl
KQogCiAgICAgYXV0byBhdWRpb0NvbnN0cmFpbnRzID0gTWVkaWFDb25zdHJhaW50c0ltcGw6OmNy
ZWF0ZShXVEZNb3ZlKG1hbmRhdG9yeUF1ZGlvQ29uc3RyYWludHMpLCBXVEZNb3ZlKGFkdmFuY2Vk
QXVkaW9Db25zdHJhaW50cyksIGFyZUF1ZGlvQ29uc3RyYWludHNWYWxpZCk7CiAgICAgYXV0byB2
aWRlb0NvbnN0cmFpbnRzID0gTWVkaWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZShXVEZNb3ZlKG1h
bmRhdG9yeVZpZGVvQ29uc3RyYWludHMpLCBXVEZNb3ZlKGFkdmFuY2VkVmlkZW9Db25zdHJhaW50
cyksIGFyZVZpZGVvQ29uc3RyYWludHNWYWxpZCk7Ci0gICAgSlNDOjpKU1Byb21pc2VEZWZlcnJl
ZCogcHJvbWlzZURlZmVycmVkID0gSlNDOjpKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlKCZzdGF0
ZSwgZ2xvYmFsT2JqZWN0KCkpOwotICAgIHdyYXBwZWQoKS5nZXRVc2VyTWVkaWEoV1RGTW92ZShh
dWRpb0NvbnN0cmFpbnRzKSwgV1RGTW92ZSh2aWRlb0NvbnN0cmFpbnRzKSwgRGVmZXJyZWRXcmFw
cGVyOjpjcmVhdGUoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgcHJvbWlzZURlZmVycmVkKSwgZWMp
OworICAgIGNhc3RUaGlzVmFsdWU8SlNNZWRpYURldmljZXM+KHN0YXRlKS53cmFwcGVkKCkuZ2V0
VXNlck1lZGlhKFdURk1vdmUoYXVkaW9Db25zdHJhaW50cyksIFdURk1vdmUodmlkZW9Db25zdHJh
aW50cyksIFdURk1vdmUocHJvbWlzZSksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRl
LCBlYyk7Ci0gICAgcmV0dXJuIHByb21pc2VEZWZlcnJlZC0+cHJvbWlzZSgpOworfQorCitKU1Zh
bHVlIEpTTWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEoRXhlY1N0YXRlJiBzdGF0ZSkKK3sKKyAg
ICByZXR1cm4gY2FsbFByb21pc2VGdW5jdGlvbjxKU01lZGlhRGV2aWNlc0dldFVzZXJNZWRpYVBy
b21pc2VGdW5jdGlvbiwgZmFsc2U+KHN0YXRlKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBkZGQ2NTBkZmU5
NDAxOGU4MmEzMTcwNTRhMjNhMWU0MDRjMzdiZjc3Li4zMDI5NWRlMzc5ZTM5ZDlhMDQ5ODQzMjBi
ZTZjNTg0YmMwYjVmY2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMzQwOCwxMSArMzQwOCwxMyBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgaWYgKElzUmV0dXJuaW5nUHJvbWlzZSgkZnVu
Y3Rpb24pICYmICEkaXNDdXN0b20pIHsKICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRl
cygiSlNET01Qcm9taXNlLmgiKTsKIAorICAgICAgICAgICAgICAgIG15ICRjYW5CZUNhbGxlZElu
V29ya2VyID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkV4cG9zZWQifSA/ICJ0
cnVlIiA6ICJmYWxzZSI7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5E
KTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSAke2Z1bmN0aW9uTmFtZX1Qcm9taXNlKEV4ZWNTdGF0
ZSosIFJlZjxEZWZlcnJlZFdyYXBwZXI+JiYpOwogJHtmdW5jdGlvblJldHVybn0gJHtmdW5jdGlv
bk5hbWV9KEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
YWxsUHJvbWlzZUZ1bmN0aW9uKCpzdGF0ZSwgJHtmdW5jdGlvbk5hbWV9UHJvbWlzZSkpOworICAg
IEFTU0VSVChzdGF0ZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsUHJvbWlzZUZ1
bmN0aW9uPCR7ZnVuY3Rpb25OYW1lfVByb21pc2UsICRjYW5CZUNhbGxlZEluV29ya2VyPigqc3Rh
dGUpKTsKIH0KIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSAke2Z1bmN0aW9uTmFtZX1Q
cm9taXNlKEV4ZWNTdGF0ZSogc3RhdGUsIFJlZjxEZWZlcnJlZFdyYXBwZXI+JiYgIGRlZmVycmVk
V3JhcHBlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROb2RlLmNwcAppbmRleCA0ZmRhNzQwZjhmNTJlZmM0M2MyMzNiNjM4N2M5OWRl
ZTEyNTQ2MGY3Li43NTQwYjQxMDVjOGQxZjhjYmFlZGE3NjJiZGI1YWQ4ODU3OGRkNWE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5vZGUuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAj
aW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTRE9NSXRlcmF0b3IuaCIK
KyNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1
cmVzLmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgpAQCAt
MzcsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEZ1bmN0aW9ucwogCitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9u
VGVzdFdvcmtlclByb21pc2UoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25TeW1ib2xJdGVyYXRvcihK
U0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE5vZGVQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25LZXlz
KEpTQzo6RXhlY1N0YXRlKik7CkBAIC0xMDgsNiArMTEwLDcgQEAgc3RhdGljIGNvbnN0IEhhc2hU
YWJsZVZhbHVlIEpTVGVzdE5vZGVQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKICAgICB7ICJj
b25zdHJ1Y3RvciIsIERvbnRFbnVtLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5vZGVDb25zdHJ1Y3RvciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdE5vZGVDb25zdHJ1Y3RvcikgfSB9LAogICAgIHsgIm5hbWUiLCBDdXN0b21BY2Nlc3Nvciwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3ROb2RlTmFtZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE5vZGVOYW1lKSB9IH0sCisgICAgeyAidGVz
dFdvcmtlclByb21pc2UiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblRl
c3RXb3JrZXJQcm9taXNlKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgImVudHJpZXMiLCBK
U0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZl
RnVuY3Rpb24+KGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMpLCAoaW50cHRyX3Qp
ICgwKSB9IH0sCiAgICAgeyAia2V5cyIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0Tm9kZVByb3RvdHlwZUZ1
bmN0aW9uS2V5cyksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJ2YWx1ZXMiLCBKU0M6OkZ1
bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblZhbHVlcyksIChpbnRwdHJfdCkgKDApIH0g
fSwKQEAgLTIyOCw2ICsyMzEsMjggQEAgSlNWYWx1ZSBKU1Rlc3ROb2RlOjpnZXRDb25zdHJ1Y3Rv
cihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgcmV0dXJu
IGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29u
c3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblRlc3RXb3JrZXJQcm9taXNlUHJv
bWlzZShFeGVjU3RhdGUqLCBSZWY8RGVmZXJyZWRXcmFwcGVyPiYmKTsKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVGVzdFdvcmtlclByb21p
c2UoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICBBU1NFUlQoc3RhdGUpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY2FsbFByb21pc2VGdW5jdGlvbjxqc1Rlc3ROb2RlUHJvdG90eXBlRnVu
Y3Rpb25UZXN0V29ya2VyUHJvbWlzZVByb21pc2UsIHRydWU+KCpzdGF0ZSkpOworfQorCitzdGF0
aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblRlc3RX
b3JrZXJQcm9taXNlUHJvbWlzZShFeGVjU3RhdGUqIHN0YXRlLCBSZWY8RGVmZXJyZWRXcmFwcGVy
PiYmICBkZWZlcnJlZFdyYXBwZXIpCit7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1
ZSgpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9kZSo+KHRo
aXNWYWx1ZSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0Tm9kZSIsICJ0ZXN0
V29ya2VyUHJvbWlzZSIpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0Tm9kZTo6aW5mbygpKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOworICAgIGltcGwudGVzdFdvcmtlclByb21pc2UoV1RGTW92ZShkZWZlcnJlZFdyYXBw
ZXIpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCiB1
c2luZyBUZXN0Tm9kZUl0ZXJhdG9yID0gSlNET01JdGVyYXRvcjxKU1Rlc3ROb2RlPjsKIHVzaW5n
IFRlc3ROb2RlSXRlcmF0b3JQcm90b3R5cGUgPSBKU0RPTUl0ZXJhdG9yUHJvdG90eXBlPEpTVGVz
dE5vZGU+OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IDZkYmFkZWNkYzE0OTZiMDZjN2NkZjFmZTIxM2MxZDIy
OTFhODgyNmIuLmQ1ZGQ2Njk2ZTEzZGU3MzBlMDFjZjdkMTcxYTgzYWRiMWUwNTIxYWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwCkBAIC03MTYwLDcgKzcxNjAsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQW55KEV4ZWNTdGF0ZSogc3RhdGUpCiBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0
aW9uUHJvbWlzZShFeGVjU3RhdGUqLCBSZWY8RGVmZXJyZWRXcmFwcGVyPiYmKTsKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlz
ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjYWxsUHJvbWlzZUZ1bmN0aW9uKCpzdGF0ZSwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25U
ZXN0UHJvbWlzZUZ1bmN0aW9uUHJvbWlzZSkpOworICAgIEFTU0VSVChzdGF0ZSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsUHJvbWlzZUZ1bmN0aW9uPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvblByb21pc2UsIGZhbHNlPigqc3RhdGUpKTsKIH0K
IAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blRlc3RQcm9taXNlRnVuY3Rpb25Qcm9taXNlKEV4ZWNTdGF0ZSogc3RhdGUsIFJlZjxEZWZlcnJl
ZFdyYXBwZXI+JiYgIGRlZmVycmVkV3JhcHBlcikKQEAgLTcxODEsNyArNzE4Miw4IEBAIHN0YXRp
YyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJv
bWlzZUZ1bmN0aW9uUHJvbWlzCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnRQcm9taXNlKEV4
ZWNTdGF0ZSosIFJlZjxEZWZlcnJlZFdyYXBwZXI+JiYpOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRo
RmxvYXRBcmd1bWVudChFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoY2FsbFByb21pc2VGdW5jdGlvbigqc3RhdGUsIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50UHJvbWlzZSkpOworICAgIEFT
U0VSVChzdGF0ZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsUHJvbWlzZUZ1bmN0
aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9h
dEFyZ3VtZW50UHJvbWlzZSwgZmFsc2U+KCpzdGF0ZSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlv
bldpdGhGbG9hdEFyZ3VtZW50UHJvbWlzZShFeGVjU3RhdGUqIHN0YXRlLCBSZWY8RGVmZXJyZWRX
cmFwcGVyPiYmICBkZWZlcnJlZFdyYXBwZXIpCkBAIC03MjA3LDcgKzcyMDksOCBAQCBzdGF0aWMg
aW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21p
c2VGdW5jdGlvbldpdGhGbAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb25Qcm9taXNlKEV4ZWNTdGF0
ZSosIFJlZjxEZWZlcnJlZFdyYXBwZXI+JiYpOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0
aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxs
UHJvbWlzZUZ1bmN0aW9uKCpzdGF0ZSwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJv
bWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvblByb21pc2UpKTsKKyAgICBBU1NFUlQoc3RhdGUpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbFByb21pc2VGdW5jdGlvbjxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uUHJvbWlzZSwg
ZmFsc2U+KCpzdGF0ZSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb25Qcm9t
aXNlKEV4ZWNTdGF0ZSogc3RhdGUsIFJlZjxEZWZlcnJlZFdyYXBwZXI+JiYgIGRlZmVycmVkV3Jh
cHBlcikKQEAgLTcyMzAsNyArNzIzMyw4IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4CiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1
bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnRQcm9taXNlKEV4ZWNTdGF0ZSosIFJlZjxEZWZl
cnJlZFdyYXBwZXI+JiYpOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoT3B0aW9uYWxJbnRBcmd1bWVu
dChFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbFBy
b21pc2VGdW5jdGlvbigqc3RhdGUsIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21p
c2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50UHJvbWlzZSkpOworICAgIEFTU0VSVChz
dGF0ZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsUHJvbWlzZUZ1bmN0aW9uPGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbElu
dEFyZ3VtZW50UHJvbWlzZSwgZmFsc2U+KCpzdGF0ZSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlv
bldpdGhPcHRpb25hbEludEFyZ3VtZW50UHJvbWlzZShFeGVjU3RhdGUqIHN0YXRlLCBSZWY8RGVm
ZXJyZWRXcmFwcGVyPiYmICBkZWZlcnJlZFdyYXBwZXIpCkBAIC03MjU0LDcgKzcyNTgsOCBAQCBz
dGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVz
dFByb21pc2VGdW5jdGlvbldpdGhPcAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24xUHJvbWlzZShFeGVj
U3RhdGUqLCBSZWY8RGVmZXJyZWRXcmFwcGVyPiYmKTsKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5j
dGlvbjEoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNh
bGxQcm9taXNlRnVuY3Rpb24oKnN0YXRlLCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQ
cm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uMVByb21pc2UpKTsKKyAgICBBU1NFUlQoc3RhdGUpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbFByb21pc2VGdW5jdGlvbjxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uMVByb21pc2UsIGZh
bHNlPigqc3RhdGUpKTsKIH0KIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uMVByb21pc2Uo
RXhlY1N0YXRlKiBzdGF0ZSwgUmVmPERlZmVycmVkV3JhcHBlcj4mJiAgZGVmZXJyZWRXcmFwcGVy
KQpAQCAtNzI4MCw3ICs3Mjg1LDggQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmMKIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3Zlcmxv
YWRlZEZ1bmN0aW9uMlByb21pc2UoRXhlY1N0YXRlKiwgUmVmPERlZmVycmVkV3JhcHBlcj4mJik7
CiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24yKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsUHJvbWlzZUZ1bmN0aW9uKCpzdGF0ZSwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbjJQcm9taXNl
KSk7CisgICAgQVNTRVJUKHN0YXRlKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxQ
cm9taXNlRnVuY3Rpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJs
b2FkZWRGdW5jdGlvbjJQcm9taXNlLCBmYWxzZT4oKnN0YXRlKSk7CiB9CiAKIHN0YXRpYyBpbmxp
bmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92
ZXJsb2FkZWRGdW5jdGlvbjJQcm9taXNlKEV4ZWNTdGF0ZSogc3RhdGUsIFJlZjxEZWZlcnJlZFdy
YXBwZXI+JiYgIGRlZmVycmVkV3JhcHBlcikKQEAgLTczMjMsNyArNzMyOSw4IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlz
ZU92ZXJsb2FkZWRGdW5jCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0
b3JGdW5jdGlvblRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25Qcm9taXNlKEV4ZWNTdGF0ZSosIFJl
ZjxEZWZlcnJlZFdyYXBwZXI+JiYpOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbihFeGVjU3Rh
dGUqIHN0YXRlKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbFByb21pc2VGdW5j
dGlvbigqc3RhdGUsIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlz
ZUZ1bmN0aW9uUHJvbWlzZSkpOworICAgIEFTU0VSVChzdGF0ZSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShjYWxsUHJvbWlzZUZ1bmN0aW9uPGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rp
b25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uUHJvbWlzZSwgZmFsc2U+KCpzdGF0ZSkpOwogfQog
CiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rp
b25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uUHJvbWlzZShFeGVjU3RhdGUqIHN0YXRlLCBSZWY8
RGVmZXJyZWRXcmFwcGVyPiYmICBkZWZlcnJlZFdyYXBwZXIpCkBAIC03MzM4LDcgKzczNDUsOCBA
QCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rp
b25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aQogc3RhdGljIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
akNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlv
blByb21pc2UoRXhlY1N0YXRlKiwgUmVmPERlZmVycmVkV3JhcHBlcj4mJik7CiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGlj
UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbFByb21pc2VGdW5jdGlvbigqc3RhdGUsIGpzVGVzdE9i
akNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlv
blByb21pc2UpKTsKKyAgICBBU1NFUlQoc3RhdGUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY2FsbFByb21pc2VGdW5jdGlvbjxqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0
YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb25Qcm9taXNlLCBmYWxzZT4oKnN0YXRlKSk7
CiB9CiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JG
dW5jdGlvblRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uUHJvbWlzZShFeGVj
U3RhdGUqIHN0YXRlLCBSZWY8RGVmZXJyZWRXcmFwcGVyPiYmICBkZWZlcnJlZFdyYXBwZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE5vZGUu
aWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROb2RlLmlkbApp
bmRleCA4ZGMwZTQ5ZjZjZDQ3OTc1MmM5ZGMyMmE5NDU1OTA4MjMwNmIxMmRlLi40NGY4Y2E4Mjcz
ZTc4ZmYxZDUzYTFmOWVjNWYxZmU1M2ViOTY4YmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE5vZGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Tm9kZS5pZGwKQEAgLTIxLDkgKzIxLDEwIEBACiBb
CiAgICAgQ29uc3RydWN0b3IsCiAgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9URVNUU1VQUE9SVF9F
WFBPUlQsCisgICAgRXhwb3NlZD0oV2luZG93LFdvcmtlcikKIF0gaW50ZXJmYWNlIFRlc3ROb2Rl
IDogTm9kZSB7CiAgICAgYXR0cmlidXRlIERPTVN0cmluZyBuYW1lOwogCiAgICAgW0VuYWJsZWRB
dFJ1bnRpbWU9RE9NSXRlcmF0b3JdIGl0ZXJhYmxlPFRlc3ROb2RlPjsKKyAgICBQcm9taXNlIHRl
c3RXb3JrZXJQcm9taXNlKCk7CiB9OwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOGNlNzZkZjY4NzkwNjgzNTQ0ZTk1OGIw
ZTBmZjY3OWQyNTBlNmJmNC4uMTMzNTk0NmFhMTdjZmNkMDQwNGZmZTdiNTNiNjUwNzZlNjQxM2E3
OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE2LTA5LTE0ICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBjYWxsUHJvbWlzZUZ1bmN0aW9uIHNob3VsZCBiZSBt
YWRlIHVzYWJsZSBmb3IgY3VzdG9tIGJpbmRpbmcgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxOTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNl
cy1nZXRVc2VyTWVkaWEtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0v
TWVkaWFEZXZpY2VzLWdldFVzZXJNZWRpYS5odG1sOiBVcGRhdGVkIHRvIGV4cGVjdCBhIHJlamVj
dGVkIHByb21pc2UgaW4gbGlldSBvZiBhbiBleGNlcHRpb24uCisKIDIwMTYtMDktMTMgIFJ5YW4g
SGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgTWFya2luZyBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1hNTEh0dHBSZXF1ZXN0L3Jlc3BvbnNlLW1ldGhvZC5o
dG0gYXMgZmFpbGluZyBvbiBpb3Mtc2ltdWxhdG9yLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVzZXJNZWRpYS1l
eHBlY3RlZC50eHQKaW5kZXggOGI2OTA1MTNmZTRmYTMxOTA2YzUxYWQ1NWExNzA5OWE1M2U0OGM2
ZC4uNzM4ODI1Y2QyY2RmYWZkNWNlYzViOTYwOTI1ODEzMWEwMGZiM2U5ZSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNl
cy1nZXRVc2VyTWVkaWEtZXhwZWN0ZWQudHh0CkBAIC0zLDkgKzMsOSBAQCBUZXN0cyBnZXRVc2Vy
TWVkaWEgKFByb21pc2UtYmFzZWQgdmVyc2lvbiBvbiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzKQog
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNl
cy5nZXRVc2VyTWVkaWEoKS50aGVuKGludmFsaWRHb3RTdHJlYW0pOyB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KIFBBU1MgdHlwZW9mIG5hdmlnYXRvci5t
ZWRpYURldmljZXMud2Via2l0R2V0VXNlck1lZGlhIGlzICd1bmRlZmluZWQnCiBQQVNTIG5hdmln
YXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSkudGhlbihnb3RTdHJl
YW0xKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTICBuYXZpZ2F0b3IubWVkaWFEZXZp
Y2VzLmdldFVzZXJNZWRpYSgpIHJlamVjdGVkIHdpdGggZXJyb3I6IFR5cGVFcnJvcjogTm90IGVu
b3VnaCBhcmd1bWVudHMKIFBBU1MgIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlh
KHt9KSByZWplY3RlZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKIFBBU1MgU3Ry
ZWFtIGdlbmVyYXRlZC4KIFBBU1Mgc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDEK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdl
dFVzZXJNZWRpYS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmlj
ZXMtZ2V0VXNlck1lZGlhLmh0bWwKaW5kZXggMDk0OGFmMzI0M2E0NjU1OWZiM2I4ZmNhNjA0NmQy
ODY1NDc0YjNlMS4uZWZmNTQwZmYxN2M5NDM0YmJlMDI2MmJjMTVjZGU4ZGZiMmU5YzhjZSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNl
ck1lZGlhLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmlj
ZXMtZ2V0VXNlck1lZGlhLmh0bWwKQEAgLTEzNiw3ICsxMzYsOSBAQAogICAgICAgICAgICAgICAg
IHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7dmlk
ZW86dHJ1ZX0pLnRoZW4oZ290U3RyZWFtMik7IikKICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgc2hvdWxkVGhyb3coIm5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKCkudGhl
bihpbnZhbGlkR290U3RyZWFtKTsiKTsKKyAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYURldmlj
ZXMuZ2V0VXNlck1lZGlhKCkudGhlbihpbnZhbGlkR290U3RyZWFtLCBmdW5jdGlvbihlcnJvcikg
eworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdl
dFVzZXJNZWRpYSgpIHJlamVjdGVkIHdpdGggZXJyb3I6ICIgKyBlcnJvcik7CisgICAgICAgICAg
ICB9KTsKICAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt9
KS50aGVuKGludmFsaWRHb3RTdHJlYW0sIGZ1bmN0aW9uKGVycm9yKSB7CiAgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt9KSBy
ZWplY3RlZCB3aXRoIGVycm9yOiAiICsgZXJyb3IpOwogICAgICAgICAgICAgfSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288933</attachid>
            <date>2016-09-14 23:51:33 -0700</date>
            <delta_ts>2016-09-15 00:23:26 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-161961-20160915084853.patch</filename>
            <type>text/plain</type>
            <size>23474</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1OTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2EyNGJmNzEzYjA5OTE3
Zjk1ZTkxZTM5NTA4OWI4NDA4OGI0Yjc1ZC4uMjk4NzA2NGNiZDk3YjAxMzA2ZGU0ZTE2MGM4MTFm
NTNlMzczODFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE2LTA5LTE0ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBjYWxsUHJvbWlzZUZ1bmN0
aW9uIHNob3VsZCBiZSBtYWRlIHVzYWJsZSBmb3IgY3VzdG9tIGJpbmRpbmcgY29kZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxOTYxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQ292ZXJlZCBieSB1cGRhdGVk
IHRlc3QuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaDoKKyAgICAgICAg
KFdlYkNvcmU6OmNhc3RUaGlzVmFsdWUpOiBVdGlsaXR5IGZ1bmN0aW9uIHRvIGNhc3QgdGhpcyB2
YWx1ZSB0byBhIHNwZWNpZmljIHR5cGUuCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9t
aXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpjYWxsUHJvbWlzZUZ1bmN0aW9uKTogVXBkYXRlZCB0
byB0YWtlIHJlYWwgcHJvbWlzZSBmdW5jdGlvbiBhcyBhIHRlbXBsYXRlIHBhcmFtZXRlcgorICAg
ICAgICBmb3IgaW1wcm92ZWQgZWZmaWNpZW5jeS4gQWRkZWQgd29ya2VyTW9kZSB0ZW1wbGF0ZSBw
YXJhbWV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpiaW5kaW5nUHJvbWlzZUZ1bmN0aW9uQWRhcHRl
cik6IEZ1bmN0aW9uIHNpZ25hdHVyZSBhZGFwdG9yLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
TWVkaWFEZXZpY2VzQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVkaWFEZXZpY2Vz
R2V0VXNlck1lZGlhUHJvbWlzZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVkaWFE
ZXZpY2VzOjpnZXRVc2VyTWVkaWEpOiBNYWtpbmcgdXNlIG9mIGNhbGxQcm9taXNlRnVuY3Rpb24g
dG8gcHJvcGVybHkgaGFuZGxlIGV4Y2VwdGlvbnMuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKTog
VXBkYXRlZCB0byB1c2UgdGVtcGxhdGUgcGFyYW1ldGVyLgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5v
ZGVQcm90b3R5cGVGdW5jdGlvblRlc3RXb3JrZXJQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblRlc3RXb3JrZXJQcm9taXNlUHJvbWlzZSk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlz
ZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rp
b25XaXRoT3B0aW9uYWxJbnRBcmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uMSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3ZlcmxvYWRl
ZEZ1bmN0aW9uMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0
aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRp
b24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Tm9kZS5pZGw6IEFkZGlu
ZyBXb3JrZXIgcHJvbWlzZSBiaW5kaW5nIHRlc3QuCisKIDIwMTYtMDktMTQgIEppZXdlbiBUYW4g
IDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJDcnlwdG8gYWxnb3JpdGhtcyBz
aG91bGQgYmUgZXhwb3NlZCB2aWEgS2V5QWxnb3JpdGhtIGRpY3Rpb25hcnkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKaW5kZXggMGY3MmEwMzMyYjhhMjM5MjhiZDUw
YWI0MzFlM2JlZDMyMDgwMDA5OC4uYTg3MGE3MWZjNmJmMDMwNTIyOWFmMjQwODA1ZGZjNWQwZTIw
MTZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTE3
Myw2ICsxNzMsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFzcywgdHlwZW5hbWUgVD4gYXV0
byBjcmVhdGVXcmFwcGVyKEpTRE9NR2xvYmFsT2JqZWN0KiwgUgogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBET01DbGFzcz4gSlNDOjpKU1ZhbHVlIHdyYXAoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2Jh
bE9iamVjdCosIERPTUNsYXNzJik7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+IEpTQ2xh
c3MmIGNhc3RUaGlzVmFsdWUoSlNDOjpFeGVjU3RhdGUmKTsKKwogdm9pZCBhZGRJbXB1cmVQcm9w
ZXJ0eShjb25zdCBBdG9taWNTdHJpbmcmKTsKIAogY29uc3QgSlNDOjpIYXNoVGFibGUmIGdldEhh
c2hUYWJsZUZvckdsb2JhbERhdGEoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SGFzaFRhYmxlJiBzdGF0
aWNUYWJsZSk7CkBAIC01MjksNiArNTMxLDE0IEBAIHRlbXBsYXRlPHR5cGVuYW1lIERPTUNsYXNz
PiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHdyYXAoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPCiAg
ICAgcmV0dXJuIHRvSlNOZXdseUNyZWF0ZWQoc3RhdGUsIGdsb2JhbE9iamVjdCwgUmVmPERPTUNs
YXNzPihkb21PYmplY3QpKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5l
IEpTQ2xhc3MmIGNhc3RUaGlzVmFsdWUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQoreworICAgIGF1
dG8gdGhpc1ZhbHVlID0gc3RhdGUudGhpc1ZhbHVlKCk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0g
SlNDOjpqc0R5bmFtaWNDYXN0PEpTQ2xhc3MqPih0aGlzVmFsdWUpOworICAgIEFTU0VSVChjYXN0
ZWRUaGlzKTsKKyAgICByZXR1cm4gKmNhc3RlZFRoaXM7Cit9CisKIGlubGluZSBpbnQzMl90IGZp
bml0ZUludDMyVmFsdWUoSlNDOjpKU1ZhbHVlIHZhbHVlLCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
Ym9vbCYgb2theSkKIHsKICAgICBkb3VibGUgbnVtYmVyID0gdmFsdWUudG9OdW1iZXIoZXhlYyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCmluZGV4IDU0ZDY4Yzdm
NDY5NGUwYzdmNDk3NGEzYWNmYmU2YjBkYmQ4NTdmMmEuLjJlMjkxNzI0MzU0MmUxODBmOTI0OWM2
NTE4ZDYwOWY2YjgxMjkyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NUHJvbWlzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJv
bWlzZS5oCkBAIC0xNTcsNyArMTU3LDEyIEBAIHZvaWQgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlC
dWZmZXIoUmVmPERlZmVycmVkV3JhcHBlcj4mJiwgQXJyYXlCdWZmZXIqKTsKIHZvaWQgZnVsZmls
bFByb21pc2VXaXRoQXJyYXlCdWZmZXIoUmVmPERlZmVycmVkV3JhcHBlcj4mJiwgY29uc3Qgdm9p
ZCosIHNpemVfdCk7CiB2b2lkIHJlamVjdFByb21pc2VXaXRoRXhjZXB0aW9uSWZBbnkoSlNDOjpF
eGVjU3RhdGUmLCBKU0RPTUdsb2JhbE9iamVjdCYsIEpTQzo6SlNQcm9taXNlRGVmZXJyZWQmKTsK
IAotaW5saW5lIEpTQzo6SlNWYWx1ZSBjYWxsUHJvbWlzZUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSBwcm9taXNlRnVuY3Rpb24oSlNDOjpFeGVjU3Rh
dGUqLCBSZWY8RGVmZXJyZWRXcmFwcGVyPiYmKSkKK3VzaW5nIFByb21pc2VGdW5jdGlvbiA9IHZv
aWQoSlNDOjpFeGVjU3RhdGUmLCBSZWY8RGVmZXJyZWRXcmFwcGVyPiYmKTsKKworZW51bSBjbGFz
cyBQcm9taXNlRXhlY3V0aW9uU2NvcGUgeyBXaW5kb3dPbmx5LCBXaW5kb3dPcldvcmtlciB9Owor
Cit0ZW1wbGF0ZTxQcm9taXNlRnVuY3Rpb24gcHJvbWlzZUZ1bmN0aW9uLCBQcm9taXNlRXhlY3V0
aW9uU2NvcGUgZXhlY3V0aW9uU2NvcGU+CitpbmxpbmUgSlNDOjpKU1ZhbHVlIGNhbGxQcm9taXNl
RnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIEpTQzo6Vk0mIHZtID0gc3Rh
dGUudm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CkBAIC0x
NjYsMTYgKzE3MSwyOSBAQCBpbmxpbmUgSlNDOjpKU1ZhbHVlIGNhbGxQcm9taXNlRnVuY3Rpb24o
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkVuY29kZWRKU1ZhbAogICAgIEpTQzo6SlNQcm9t
aXNlRGVmZXJyZWQqIHByb21pc2VEZWZlcnJlZCA9IEpTQzo6SlNQcm9taXNlRGVmZXJyZWQ6OmNy
ZWF0ZSgmc3RhdGUsICZnbG9iYWxPYmplY3QpOwogCiAgICAgLy8gcHJvbWlzZURlZmVycmVkIGNh
biBiZSBudWxsIHdoZW4gdGVybWluYXRpbmcgYSBXb3JrZXIgYWJydXB0bHkuCi0gICAgaWYgKCFw
cm9taXNlRGVmZXJyZWQpCisgICAgaWYgKGV4ZWN1dGlvblNjb3BlID09IFByb21pc2VFeGVjdXRp
b25TY29wZTo6V2luZG93T3JXb3JrZXIgJiYgIXByb21pc2VEZWZlcnJlZCkKICAgICAgICAgcmV0
dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKIAotICAgIHByb21pc2VGdW5jdGlvbigmc3RhdGUsIERl
ZmVycmVkV3JhcHBlcjo6Y3JlYXRlKCZzdGF0ZSwgJmdsb2JhbE9iamVjdCwgcHJvbWlzZURlZmVy
cmVkKSk7CisgICAgcHJvbWlzZUZ1bmN0aW9uKHN0YXRlLCBEZWZlcnJlZFdyYXBwZXI6OmNyZWF0
ZSgmc3RhdGUsICZnbG9iYWxPYmplY3QsIHByb21pc2VEZWZlcnJlZCkpOwogCiAgICAgcmVqZWN0
UHJvbWlzZVdpdGhFeGNlcHRpb25JZkFueShzdGF0ZSwgZ2xvYmFsT2JqZWN0LCAqcHJvbWlzZURl
ZmVycmVkKTsKICAgICBBU1NFUlRfVU5VU0VEKHNjb3BlLCAhc2NvcGUuZXhjZXB0aW9uKCkpOwog
ICAgIHJldHVybiBwcm9taXNlRGVmZXJyZWQtPnByb21pc2UoKTsKIH0KIAordXNpbmcgQmluZGlu
Z1Byb21pc2VGdW5jdGlvbiA9IEpTQzo6RW5jb2RlZEpTVmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBS
ZWY8RGVmZXJyZWRXcmFwcGVyPiYmKTsKK3RlbXBsYXRlPEJpbmRpbmdQcm9taXNlRnVuY3Rpb24g
YmluZGluZ0Z1bmN0aW9uPgoraW5saW5lIHZvaWQgYmluZGluZ1Byb21pc2VGdW5jdGlvbkFkYXB0
ZXIoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBSZWY8RGVmZXJyZWRXcmFwcGVyPiYmIHByb21pc2Up
Cit7CisgICAgYmluZGluZ0Z1bmN0aW9uKCZzdGF0ZSwgV1RGTW92ZShwcm9taXNlKSk7Cit9CisK
K3RlbXBsYXRlPEJpbmRpbmdQcm9taXNlRnVuY3Rpb24gYmluZGluZ1Byb21pc2VGdW5jdGlvbiwg
UHJvbWlzZUV4ZWN1dGlvblNjb3BlIGV4ZWN1dGlvblNjb3BlPgoraW5saW5lIEpTQzo6SlNWYWx1
ZSBjYWxsUHJvbWlzZUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKK3sKKyAgICByZXR1
cm4gY2FsbFByb21pc2VGdW5jdGlvbjxiaW5kaW5nUHJvbWlzZUZ1bmN0aW9uQWRhcHRlcjxiaW5k
aW5nUHJvbWlzZUZ1bmN0aW9uPiwgZXhlY3V0aW9uU2NvcGU+KHN0YXRlKTsKK30KKwogLy8gQXQg
dGhlIG1vbWVudCwgVmFsdWUgY2Fubm90IGJlIGEgUmVmPFQ+IG9yIFJlZlB0cjxUPiwgaXQgc2hv
dWxkIGJlIGEgRE9NIGNsYXNzLgogdGVtcGxhdGUgPHR5cGVuYW1lIFZhbHVlPgogY2xhc3MgRE9N
UHJvbWlzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlh
RGV2aWNlc0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhRGV2
aWNlc0N1c3RvbS5jcHAKaW5kZXggNGNlNjEzYWUxM2E5NWNkZmRhNTQ2MTQ2MjEyN2Y4YzA1MDgx
ZTdlZi4uYzMxZTk0ZTNlM2U4NWNiYzRkODc1NTE2NmFjMmRkYjg4OWI4NGJlNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYURldmljZXNDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcApA
QCAtMzQwLDEzICszNDAsMTYgQEAgdm9pZCBwYXJzZU1lZGlhQ29uc3RyYWludHNEaWN0aW9uYXJ5
KGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhVHJhY2tDb25zdHJhaW50cywgTWUKICAgICB9CiB9CiAK
LUpTVmFsdWUgSlNNZWRpYURldmljZXM6OmdldFVzZXJNZWRpYShFeGVjU3RhdGUmIHN0YXRlKQor
c3RhdGljIHZvaWQgSlNNZWRpYURldmljZXNHZXRVc2VyTWVkaWFQcm9taXNlRnVuY3Rpb24oRXhl
Y1N0YXRlJiBzdGF0ZSwgUmVmPERlZmVycmVkV3JhcHBlcj4mJiBwcm9taXNlKQogewogICAgIFZN
JiB2bSA9IHN0YXRlLnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93Vk1FcnJvcigmc3RhdGUsIHNjb3BlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKSk7CisgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpKSB7CisgICAgICAgIHRocm93Vk1FcnJvcigmc3Rh
dGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGF1dG8g
Y29uc3RyYWludHNEaWN0aW9uYXJ5ID0gRGljdGlvbmFyeSgmc3RhdGUsIHN0YXRlLnVuY2hlY2tl
ZEFyZ3VtZW50KDApKTsKIApAQCAtMzc0LDEwICszNzcsMTMgQEAgSlNWYWx1ZSBKU01lZGlhRGV2
aWNlczo6Z2V0VXNlck1lZGlhKEV4ZWNTdGF0ZSYgc3RhdGUpCiAKICAgICBhdXRvIGF1ZGlvQ29u
c3RyYWludHMgPSBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKFdURk1vdmUobWFuZGF0b3J5
QXVkaW9Db25zdHJhaW50cyksIFdURk1vdmUoYWR2YW5jZWRBdWRpb0NvbnN0cmFpbnRzKSwgYXJl
QXVkaW9Db25zdHJhaW50c1ZhbGlkKTsKICAgICBhdXRvIHZpZGVvQ29uc3RyYWludHMgPSBNZWRp
YUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKFdURk1vdmUobWFuZGF0b3J5VmlkZW9Db25zdHJhaW50
cyksIFdURk1vdmUoYWR2YW5jZWRWaWRlb0NvbnN0cmFpbnRzKSwgYXJlVmlkZW9Db25zdHJhaW50
c1ZhbGlkKTsKLSAgICBKU0M6OkpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlRGVmZXJyZWQgPSBK
U0M6OkpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSk7Ci0g
ICAgd3JhcHBlZCgpLmdldFVzZXJNZWRpYShXVEZNb3ZlKGF1ZGlvQ29uc3RyYWludHMpLCBXVEZN
b3ZlKHZpZGVvQ29uc3RyYWludHMpLCBEZWZlcnJlZFdyYXBwZXI6OmNyZWF0ZSgmc3RhdGUsIGds
b2JhbE9iamVjdCgpLCBwcm9taXNlRGVmZXJyZWQpLCBlYyk7CisgICAgY2FzdFRoaXNWYWx1ZTxK
U01lZGlhRGV2aWNlcz4oc3RhdGUpLndyYXBwZWQoKS5nZXRVc2VyTWVkaWEoV1RGTW92ZShhdWRp
b0NvbnN0cmFpbnRzKSwgV1RGTW92ZSh2aWRlb0NvbnN0cmFpbnRzKSwgV1RGTW92ZShwcm9taXNl
KSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLSAgICByZXR1cm4gcHJv
bWlzZURlZmVycmVkLT5wcm9taXNlKCk7Cit9CisKK0pTVmFsdWUgSlNNZWRpYURldmljZXM6Omdl
dFVzZXJNZWRpYShFeGVjU3RhdGUmIHN0YXRlKQoreworICAgIHJldHVybiBjYWxsUHJvbWlzZUZ1
bmN0aW9uPEpTTWVkaWFEZXZpY2VzR2V0VXNlck1lZGlhUHJvbWlzZUZ1bmN0aW9uLCBQcm9taXNl
RXhlY3V0aW9uU2NvcGU6OldpbmRvd09ubHk+KHN0YXRlKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBjZDAx
OGMyNzJkMDc2NzNiMDgzYTNiY2QyM2IxZTFhOTFiYzRjOTljLi4zYjNhNTE2N2QxMzJjMDY4YTIz
MmU3YzQ1YjBjNDg5ZjUzNWYyNzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMzQyMSwxNCArMzQyMSwxNyBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgaWYgKElzUmV0dXJuaW5nUHJvbWlz
ZSgkZnVuY3Rpb24pICYmICEkaXNDdXN0b20pIHsKICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJ
bmNsdWRlcygiSlNET01Qcm9taXNlLmgiKTsKIAorICAgICAgICAgICAgICAgIG15ICRzY29wZSA9
ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFeHBvc2VkIn0gPyAiV2luZG93T3JX
b3JrZXIiIDogIldpbmRvd09ubHkiOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCA8PEVORCk7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgJHtmdW5jdGlvbk5hbWV9UHJvbWlzZShF
eGVjU3RhdGUqLCBSZWY8RGVmZXJyZWRXcmFwcGVyPiYmKTsKKwogJHtmdW5jdGlvblJldHVybn0g
JHtmdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShjYWxsUHJvbWlzZUZ1bmN0aW9uKCpzdGF0ZSwgJHtmdW5jdGlvbk5hbWV9UHJvbWlz
ZSkpOworICAgIEFTU0VSVChzdGF0ZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxs
UHJvbWlzZUZ1bmN0aW9uPCR7ZnVuY3Rpb25OYW1lfVByb21pc2UsIFByb21pc2VFeGVjdXRpb25T
Y29wZTo6JHtzY29wZX0+KCpzdGF0ZSkpOwogfQogCi1zdGF0aWMgaW5saW5lIEVuY29kZWRKU1Zh
bHVlICR7ZnVuY3Rpb25OYW1lfVByb21pc2UoRXhlY1N0YXRlKiBzdGF0ZSwgUmVmPERlZmVycmVk
V3JhcHBlcj4mJiAgZGVmZXJyZWRXcmFwcGVyKQorc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1
ZSAke2Z1bmN0aW9uTmFtZX1Qcm9taXNlKEV4ZWNTdGF0ZSogc3RhdGUsIFJlZjxEZWZlcnJlZFdy
YXBwZXI+JiYgZGVmZXJyZWRXcmFwcGVyKQogRU5ECiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROb2RlLmNwcAppbmRleCA0ZmRhNzQwZjhmNTJlZmM0M2MyMzNiNjM4N2M5OWRl
ZTEyNTQ2MGY3Li43NTQwYjQxMDVjOGQxZjhjYmFlZGE3NjJiZGI1YWQ4ODU3OGRkNWE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5vZGUuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAj
aW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTRE9NSXRlcmF0b3IuaCIK
KyNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1
cmVzLmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgpAQCAt
MzcsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEZ1bmN0aW9ucwogCitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9u
VGVzdFdvcmtlclByb21pc2UoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25TeW1ib2xJdGVyYXRvcihK
U0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE5vZGVQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25LZXlz
KEpTQzo6RXhlY1N0YXRlKik7CkBAIC0xMDgsNiArMTEwLDcgQEAgc3RhdGljIGNvbnN0IEhhc2hU
YWJsZVZhbHVlIEpTVGVzdE5vZGVQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKICAgICB7ICJj
b25zdHJ1Y3RvciIsIERvbnRFbnVtLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5vZGVDb25zdHJ1Y3RvciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdE5vZGVDb25zdHJ1Y3RvcikgfSB9LAogICAgIHsgIm5hbWUiLCBDdXN0b21BY2Nlc3Nvciwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3ROb2RlTmFtZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE5vZGVOYW1lKSB9IH0sCisgICAgeyAidGVz
dFdvcmtlclByb21pc2UiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblRl
c3RXb3JrZXJQcm9taXNlKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgImVudHJpZXMiLCBK
U0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZl
RnVuY3Rpb24+KGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMpLCAoaW50cHRyX3Qp
ICgwKSB9IH0sCiAgICAgeyAia2V5cyIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0Tm9kZVByb3RvdHlwZUZ1
bmN0aW9uS2V5cyksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJ2YWx1ZXMiLCBKU0M6OkZ1
bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblZhbHVlcyksIChpbnRwdHJfdCkgKDApIH0g
fSwKQEAgLTIyOCw2ICsyMzEsMjggQEAgSlNWYWx1ZSBKU1Rlc3ROb2RlOjpnZXRDb25zdHJ1Y3Rv
cihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgcmV0dXJu
IGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29u
c3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblRlc3RXb3JrZXJQcm9taXNlUHJv
bWlzZShFeGVjU3RhdGUqLCBSZWY8RGVmZXJyZWRXcmFwcGVyPiYmKTsKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVGVzdFdvcmtlclByb21p
c2UoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICBBU1NFUlQoc3RhdGUpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY2FsbFByb21pc2VGdW5jdGlvbjxqc1Rlc3ROb2RlUHJvdG90eXBlRnVu
Y3Rpb25UZXN0V29ya2VyUHJvbWlzZVByb21pc2UsIHRydWU+KCpzdGF0ZSkpOworfQorCitzdGF0
aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblRlc3RX
b3JrZXJQcm9taXNlUHJvbWlzZShFeGVjU3RhdGUqIHN0YXRlLCBSZWY8RGVmZXJyZWRXcmFwcGVy
PiYmICBkZWZlcnJlZFdyYXBwZXIpCit7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1
ZSgpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9kZSo+KHRo
aXNWYWx1ZSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0Tm9kZSIsICJ0ZXN0
V29ya2VyUHJvbWlzZSIpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0Tm9kZTo6aW5mbygpKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOworICAgIGltcGwudGVzdFdvcmtlclByb21pc2UoV1RGTW92ZShkZWZlcnJlZFdyYXBw
ZXIpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCiB1
c2luZyBUZXN0Tm9kZUl0ZXJhdG9yID0gSlNET01JdGVyYXRvcjxKU1Rlc3ROb2RlPjsKIHVzaW5n
IFRlc3ROb2RlSXRlcmF0b3JQcm90b3R5cGUgPSBKU0RPTUl0ZXJhdG9yUHJvdG90eXBlPEpTVGVz
dE5vZGU+OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IDZkYmFkZWNkYzE0OTZiMDZjN2NkZjFmZTIxM2MxZDIy
OTFhODgyNmIuLmQ1ZGQ2Njk2ZTEzZGU3MzBlMDFjZjdkMTcxYTgzYWRiMWUwNTIxYWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwCkBAIC03MTYwLDcgKzcxNjAsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQW55KEV4ZWNTdGF0ZSogc3RhdGUpCiBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0
aW9uUHJvbWlzZShFeGVjU3RhdGUqLCBSZWY8RGVmZXJyZWRXcmFwcGVyPiYmKTsKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlz
ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjYWxsUHJvbWlzZUZ1bmN0aW9uKCpzdGF0ZSwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25U
ZXN0UHJvbWlzZUZ1bmN0aW9uUHJvbWlzZSkpOworICAgIEFTU0VSVChzdGF0ZSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsUHJvbWlzZUZ1bmN0aW9uPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvblByb21pc2UsIGZhbHNlPigqc3RhdGUpKTsKIH0K
IAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blRlc3RQcm9taXNlRnVuY3Rpb25Qcm9taXNlKEV4ZWNTdGF0ZSogc3RhdGUsIFJlZjxEZWZlcnJl
ZFdyYXBwZXI+JiYgIGRlZmVycmVkV3JhcHBlcikKQEAgLTcxODEsNyArNzE4Miw4IEBAIHN0YXRp
YyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJv
bWlzZUZ1bmN0aW9uUHJvbWlzCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnRQcm9taXNlKEV4
ZWNTdGF0ZSosIFJlZjxEZWZlcnJlZFdyYXBwZXI+JiYpOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRo
RmxvYXRBcmd1bWVudChFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoY2FsbFByb21pc2VGdW5jdGlvbigqc3RhdGUsIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50UHJvbWlzZSkpOworICAgIEFT
U0VSVChzdGF0ZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsUHJvbWlzZUZ1bmN0
aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9h
dEFyZ3VtZW50UHJvbWlzZSwgZmFsc2U+KCpzdGF0ZSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlv
bldpdGhGbG9hdEFyZ3VtZW50UHJvbWlzZShFeGVjU3RhdGUqIHN0YXRlLCBSZWY8RGVmZXJyZWRX
cmFwcGVyPiYmICBkZWZlcnJlZFdyYXBwZXIpCkBAIC03MjA3LDcgKzcyMDksOCBAQCBzdGF0aWMg
aW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21p
c2VGdW5jdGlvbldpdGhGbAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb25Qcm9taXNlKEV4ZWNTdGF0
ZSosIFJlZjxEZWZlcnJlZFdyYXBwZXI+JiYpOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0
aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxs
UHJvbWlzZUZ1bmN0aW9uKCpzdGF0ZSwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJv
bWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvblByb21pc2UpKTsKKyAgICBBU1NFUlQoc3RhdGUpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbFByb21pc2VGdW5jdGlvbjxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uUHJvbWlzZSwg
ZmFsc2U+KCpzdGF0ZSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb25Qcm9t
aXNlKEV4ZWNTdGF0ZSogc3RhdGUsIFJlZjxEZWZlcnJlZFdyYXBwZXI+JiYgIGRlZmVycmVkV3Jh
cHBlcikKQEAgLTcyMzAsNyArNzIzMyw4IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4CiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1
bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnRQcm9taXNlKEV4ZWNTdGF0ZSosIFJlZjxEZWZl
cnJlZFdyYXBwZXI+JiYpOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoT3B0aW9uYWxJbnRBcmd1bWVu
dChFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbFBy
b21pc2VGdW5jdGlvbigqc3RhdGUsIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21p
c2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50UHJvbWlzZSkpOworICAgIEFTU0VSVChz
dGF0ZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsUHJvbWlzZUZ1bmN0aW9uPGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbElu
dEFyZ3VtZW50UHJvbWlzZSwgZmFsc2U+KCpzdGF0ZSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlv
bldpdGhPcHRpb25hbEludEFyZ3VtZW50UHJvbWlzZShFeGVjU3RhdGUqIHN0YXRlLCBSZWY8RGVm
ZXJyZWRXcmFwcGVyPiYmICBkZWZlcnJlZFdyYXBwZXIpCkBAIC03MjU0LDcgKzcyNTgsOCBAQCBz
dGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVz
dFByb21pc2VGdW5jdGlvbldpdGhPcAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24xUHJvbWlzZShFeGVj
U3RhdGUqLCBSZWY8RGVmZXJyZWRXcmFwcGVyPiYmKTsKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5j
dGlvbjEoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNh
bGxQcm9taXNlRnVuY3Rpb24oKnN0YXRlLCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQ
cm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uMVByb21pc2UpKTsKKyAgICBBU1NFUlQoc3RhdGUpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbFByb21pc2VGdW5jdGlvbjxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uMVByb21pc2UsIGZh
bHNlPigqc3RhdGUpKTsKIH0KIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uMVByb21pc2Uo
RXhlY1N0YXRlKiBzdGF0ZSwgUmVmPERlZmVycmVkV3JhcHBlcj4mJiAgZGVmZXJyZWRXcmFwcGVy
KQpAQCAtNzI4MCw3ICs3Mjg1LDggQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmMKIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3Zlcmxv
YWRlZEZ1bmN0aW9uMlByb21pc2UoRXhlY1N0YXRlKiwgUmVmPERlZmVycmVkV3JhcHBlcj4mJik7
CiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24yKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsUHJvbWlzZUZ1bmN0aW9uKCpzdGF0ZSwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbjJQcm9taXNl
KSk7CisgICAgQVNTRVJUKHN0YXRlKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxQ
cm9taXNlRnVuY3Rpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJs
b2FkZWRGdW5jdGlvbjJQcm9taXNlLCBmYWxzZT4oKnN0YXRlKSk7CiB9CiAKIHN0YXRpYyBpbmxp
bmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92
ZXJsb2FkZWRGdW5jdGlvbjJQcm9taXNlKEV4ZWNTdGF0ZSogc3RhdGUsIFJlZjxEZWZlcnJlZFdy
YXBwZXI+JiYgIGRlZmVycmVkV3JhcHBlcikKQEAgLTczMjMsNyArNzMyOSw4IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlz
ZU92ZXJsb2FkZWRGdW5jCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0
b3JGdW5jdGlvblRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25Qcm9taXNlKEV4ZWNTdGF0ZSosIFJl
ZjxEZWZlcnJlZFdyYXBwZXI+JiYpOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbihFeGVjU3Rh
dGUqIHN0YXRlKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbFByb21pc2VGdW5j
dGlvbigqc3RhdGUsIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlz
ZUZ1bmN0aW9uUHJvbWlzZSkpOworICAgIEFTU0VSVChzdGF0ZSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShjYWxsUHJvbWlzZUZ1bmN0aW9uPGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rp
b25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uUHJvbWlzZSwgZmFsc2U+KCpzdGF0ZSkpOwogfQog
CiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rp
b25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uUHJvbWlzZShFeGVjU3RhdGUqIHN0YXRlLCBSZWY8
RGVmZXJyZWRXcmFwcGVyPiYmICBkZWZlcnJlZFdyYXBwZXIpCkBAIC03MzM4LDcgKzczNDUsOCBA
QCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rp
b25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aQogc3RhdGljIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
akNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlv
blByb21pc2UoRXhlY1N0YXRlKiwgUmVmPERlZmVycmVkV3JhcHBlcj4mJik7CiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGlj
UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbFByb21pc2VGdW5jdGlvbigqc3RhdGUsIGpzVGVzdE9i
akNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlv
blByb21pc2UpKTsKKyAgICBBU1NFUlQoc3RhdGUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY2FsbFByb21pc2VGdW5jdGlvbjxqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0
YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb25Qcm9taXNlLCBmYWxzZT4oKnN0YXRlKSk7
CiB9CiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JG
dW5jdGlvblRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uUHJvbWlzZShFeGVj
U3RhdGUqIHN0YXRlLCBSZWY8RGVmZXJyZWRXcmFwcGVyPiYmICBkZWZlcnJlZFdyYXBwZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE5vZGUu
aWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROb2RlLmlkbApp
bmRleCA4ZGMwZTQ5ZjZjZDQ3OTc1MmM5ZGMyMmE5NDU1OTA4MjMwNmIxMmRlLi40NGY4Y2E4Mjcz
ZTc4ZmYxZDUzYTFmOWVjNWYxZmU1M2ViOTY4YmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE5vZGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Tm9kZS5pZGwKQEAgLTIxLDkgKzIxLDEwIEBACiBb
CiAgICAgQ29uc3RydWN0b3IsCiAgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9URVNUU1VQUE9SVF9F
WFBPUlQsCisgICAgRXhwb3NlZD0oV2luZG93LFdvcmtlcikKIF0gaW50ZXJmYWNlIFRlc3ROb2Rl
IDogTm9kZSB7CiAgICAgYXR0cmlidXRlIERPTVN0cmluZyBuYW1lOwogCiAgICAgW0VuYWJsZWRB
dFJ1bnRpbWU9RE9NSXRlcmF0b3JdIGl0ZXJhYmxlPFRlc3ROb2RlPjsKKyAgICBQcm9taXNlIHRl
c3RXb3JrZXJQcm9taXNlKCk7CiB9OwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNmY2YTE4NDE3YzIyNGQ3YTVmYTczMmQz
YjMzZjIwNjljMjYyM2Y5MS4uMjk0MTUwYzI5OTkyZDk5NzY3MTNkZmViY2ExZTYxMWQxMGY0YTRk
NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE2LTA5LTE0ICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBjYWxsUHJvbWlzZUZ1bmN0aW9uIHNob3VsZCBiZSBt
YWRlIHVzYWJsZSBmb3IgY3VzdG9tIGJpbmRpbmcgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxOTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1n
ZXRVc2VyTWVkaWEtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVk
aWFEZXZpY2VzLWdldFVzZXJNZWRpYS5odG1sOiBVcGRhdGVkIHRvIGV4cGVjdCBhIHJlamVjdGVk
IHByb21pc2UgaW4gbGlldSBvZiBhbiBleGNlcHRpb24uCisKIDIwMTYtMDktMTQgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCB1cGRhdGUg
aW9zLXNpbXVsYXRvci13azEgdGVzdCBleHBlY3RhdGlvbnMgYWZ0ZXIgbWlncmF0aW5nIHRvIGlP
UyAxMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmlj
ZXMtZ2V0VXNlck1lZGlhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vTWVkaWFEZXZpY2VzLWdldFVzZXJNZWRpYS1leHBlY3RlZC50eHQKaW5kZXggOGI2OTA1MTNm
ZTRmYTMxOTA2YzUxYWQ1NWExNzA5OWE1M2U0OGM2ZC4uMzA5YjU0MjdlOGQ0ZTQ2OWU4YTZjZWIw
YmUyZWI0YTdiOGI1YTA1ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVh
bS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1nZXRVc2VyTWVkaWEtZXhwZWN0ZWQudHh0
CkBAIC0zLDEwICszLDEwIEBAIFRlc3RzIGdldFVzZXJNZWRpYSAoUHJvbWlzZS1iYXNlZCB2ZXJz
aW9uIG9uIG5hdmlnYXRvci5tZWRpYURldmljZXMpCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CiAKIAotUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgpLnRoZW4oaW52
YWxpZEdvdFN0cmVhbSk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJn
dW1lbnRzLgogUEFTUyB0eXBlb2YgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy53ZWJraXRHZXRVc2Vy
TWVkaWEgaXMgJ3VuZGVmaW5lZCcKIFBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2Vy
TWVkaWEoe2F1ZGlvOnRydWV9KS50aGVuKGdvdFN0cmVhbTEpOyBkaWQgbm90IHRocm93IGV4Y2Vw
dGlvbi4KLVBBU1MgIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt9KSByZWpl
Y3RlZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKK1BBU1MgbmF2aWdhdG9yLm1l
ZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoKSByZWplY3RlZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6
IE5vdCBlbm91Z2ggYXJndW1lbnRzCitQQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNl
ck1lZGlhKHt9KSByZWplY3RlZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKIFBB
U1MgU3RyZWFtIGdlbmVyYXRlZC4KIFBBU1Mgc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3Ro
IGlzIDEKIFBBU1Mgc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVzZXJNZWRp
YS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNl
ck1lZGlhLmh0bWwKaW5kZXggMDk0OGFmMzI0M2E0NjU1OWZiM2I4ZmNhNjA0NmQyODY1NDc0YjNl
MS4uNDk5MWE5MWEzOTk0MDQ1Mjc3NjZmYjRhNTg2ZWY3ZTM3ZjQ2ZDAzZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNl
ck1lZGlhLmh0bWwKQEAgLTEzNiw5ICsxMzYsMTEgQEAKICAgICAgICAgICAgICAgICBzaG91bGRO
b3RUaHJvdygibmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe3ZpZGVvOnRydWV9
KS50aGVuKGdvdFN0cmVhbTIpOyIpCiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHNob3Vs
ZFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgpLnRoZW4oaW52YWxp
ZEdvdFN0cmVhbSk7Iik7CisgICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVz
ZXJNZWRpYSgpLnRoZW4oaW52YWxpZEdvdFN0cmVhbSwgZnVuY3Rpb24oZXJyb3IpIHsKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRp
YSgpIHJlamVjdGVkIHdpdGggZXJyb3I6ICIgKyBlcnJvcik7CisgICAgICAgICAgICB9KTsKICAg
ICAgICAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt9KS50aGVuKGlu
dmFsaWRHb3RTdHJlYW0sIGZ1bmN0aW9uKGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt9KSByZWplY3RlZCB3
aXRoIGVycm9yOiAiICsgZXJyb3IpOworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIm5hdmln
YXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt9KSByZWplY3RlZCB3aXRoIGVycm9yOiAi
ICsgZXJyb3IpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBzaG91bGRCZSgidHlwZW9m
IG5hdmlnYXRvci5tZWRpYURldmljZXMud2Via2l0R2V0VXNlck1lZGlhIiwgIid1bmRlZmluZWQn
Iik7CiAgICAgICAgICAgICBzZXRVc2VyTWVkaWFQZXJtaXNzaW9uKHRydWUpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>