<?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>220566</bug_id>
          
          <creation_ts>2021-01-12 13:50:40 -0800</creation_ts>
          <short_desc>Payment Request API - response.shippingOption is always null</short_desc>
          <delta_ts>2021-02-16 06:34:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>Safari 14</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>macOS 10.15</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=221960</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>nickgzzjr</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>aestes</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1719122</commentid>
    <comment_count>0</comment_count>
    <who name="">nickgzzjr</who>
    <bug_when>2021-01-12 13:50:40 -0800</bug_when>
    <thetext>The shippingOption in the response that is resolved from the promise returned when calling request.show() is always null.

I expect the shippingOption to show the user&apos;s selected shipping method. 

I am only able to see the shippingOption inside the onshippingoptionchange event handler.

Code Example:

const request = new PaymentRequest(...);

request.onshippingoptionchange = event =&gt; {
  request.shippingOption; // not null
}

const response = await request.show();

response.shippingOption; // null
request.shippingOption; // null</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719628</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-14 10:10:06 -0800</bug_when>
    <thetext>&lt;rdar://problem/73204387&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719734</commentid>
    <comment_count>2</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-01-14 15:53:21 -0800</bug_when>
    <thetext>Are you providing `requestShipping` (part of the optional `options` 3rd argument) when constructing the `PaymentRequest`?  `shippingOption` (and `shippingAddress`) are only populated if you do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719924</commentid>
    <comment_count>3</comment_count>
    <who name="">nickgzzjr</who>
    <bug_when>2021-01-15 10:47:00 -0800</bug_when>
    <thetext>Yes I am providing requestShipping: true. I can confirm this because I am seeing the shippingOption inside the onshippingoptionchange event handler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720985</commentid>
    <comment_count>4</comment_count>
      <attachid>417993</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-01-20 13:47:37 -0800</bug_when>
    <thetext>Created attachment 417993
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721261</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-21 11:37:57 -0800</bug_when>
    <thetext>Committed r271703: &lt;https://trac.webkit.org/changeset/271703&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 417993.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721623</commentid>
    <comment_count>6</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2021-01-22 10:38:39 -0800</bug_when>
    <thetext>The new test http/tests/paymentrequest/updateWith-modifiers.https.html 

is crashing 

History:
https://results.webkit.org/?suite=layout-tests&amp;test=http%2Ftests%2Fpaymentrequest%2FupdateWith-modifiers.https.html

Log:
No crash log found for com.apple.WebKit.WebContent.Development:3178.

stdout:

stderr:
ASSERTION FAILED: !m_isUpdating
./Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp(586) : virtual void WebCore::ApplePayPaymentHandler::didAuthorizePayment(const WebCore::Payment &amp;)
1   0x773794e69 WTFCrash
2   0x74fde6a3b WTFCrashWithInfo(int, char const*, char const*, int)
3   0x751ad8ca8 WebCore::ApplePayPaymentHandler::didAuthorizePayment(WebCore::Payment const&amp;)
4   0x751a93cc5 WebCore::PaymentCoordinator::didAuthorizePayment(WebCore::Payment const&amp;)
5   0x77f205862 WebCore::MockPaymentCoordinator::acceptPayment()::$_7::operator()()
6   0x77f20571e WTF::Detail::CallableWrapper&lt;WebCore::MockPaymentCoordinator::acceptPayment()::$_7, void&gt;::call()
7   0x77f1bf482 WTF::Function&lt;void ()&gt;::operator()() const
8   0x77f1faf1e WebCore::dispatchIfShowing(WTF::Function&lt;void ()&gt;&amp;&amp;)::$_9::operator()() const
9   0x77f1fae2e WTF::Detail::CallableWrapper&lt;WebCore::dispatchIfShowing(WTF::Function&lt;void ()&gt;&amp;&amp;)::$_9, void&gt;::call()
10  0x7737c1082 WTF::Function&lt;void ()&gt;::operator()() const
11  0x773843585 WTF::RunLoop::performWork()
12  0x773847e21 WTF::RunLoop::performWork(void*)
13  0x7fff2046ba0c __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
14  0x7fff2046b974 __CFRunLoopDoSource0
15  0x7fff2046b6ef __CFRunLoopDoSources0
16  0x7fff2046a121 __CFRunLoopRun
17  0x7fff204696ce CFRunLoopRunSpecific
18  0x7fff211f6fa1 -[NSRunLoop(NSRunLoop) runMode:beforeDate:]
19  0x7fff21285384 -[NSRunLoop(NSRunLoop) run]
20  0x7fff200c03dd _xpc_objc_main
21  0x7fff200bfe65 _xpc_copy_xpcservice_dictionary
22  0x740d1ebcc WebKit::XPCServiceMain(int, char const**)
23  0x74227eacb WKXPCServiceMain
24  0x1062edea2 main
25  0x7fff2038e621 start
LEAK: 1 WebPageProxy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721636</commentid>
    <comment_count>7</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-01-22 11:12:39 -0800</bug_when>
    <thetext>Fixed in r271752.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417993</attachid>
            <date>2021-01-20 13:47:37 -0800</date>
            <delta_ts>2021-01-21 11:37:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220566-20210120144736.patch</filename>
            <type>text/plain</type>
            <size>44779</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlZDA1ZGQ0Mjc4NTI0M2NlNTJkYThmMDMwMWU1ZjI0ZWQ3ZGQxNzg0Li42
ZjhkZDQwMjgzZDYxZDI1ODg1OThkNGFkZWVjZTg4MjU2OTVjMWQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDggQEAKKzIwMjEtMDEtMjAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFBheW1lbnQgUmVxdWVzdCBBUEkgLSByZXNwb25zZS5zaGlwcGluZ09wdGlv
biBpcyBhbHdheXMgbnVsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIwNTY2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MzIwNDM4Nz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgUGF5bWVudCBS
ZXF1ZXN0IEFQSSBzcGVjIGluZGljYXRlcyB0aGF0IHdoZW4gdXBkYXRpbmcgYSBgUGF5bWVudFJl
cXVlc3RgJ3MgZGV0YWlscyBbMV0KKyAgICAgICAgd2Ugc2hvdWxkIGJlIGNoZWNraW5nIGZvciB0
aGUgZXhpc3RlbmNlIG9mIGBkaXNwbGF5SXRlbXNgLCBgc2hpcHBpbmdPcHRpb25zYCAoYnV0IG9u
bHkgaWYKKyAgICAgICAgYHJlcXVlc3RTaGlwcGluZ2Agd2FzIHNwZWNpZmllZCksIGFuZCBgbW9k
aWZpZXJzYCBiZWZvcmUgb3ZlcnJpZGluZyBhbnkgY29ycmVzcG9uZGluZyBkYXRhCisgICAgICAg
IG9uIHRoZSBgUGF5bWVudFJlcXVlc3RgIGl0c2VsZi4gVGhpcyBtZWFucyB0aGF0IGNhbGxzIHRv
IGB1cGRhdGVXaXRoYCBvbmx5IG5lZWQgdG8gcHJvdmlkZQorICAgICAgICB0aGUgZGF0YSB0aGF0
IG5lZWRzIHRvIGJlIGNoYW5nZWQgKGUuZy4gdGhlIGB0b3RhbGApIHJhdGhlciB0aGFuIGRhdGEg
Zm9yIHRoZSB3aG9sZSBwYXltZW50LgorCisgICAgICAgIFsxXTogaHR0cHM6Ly93d3cudzMub3Jn
L1RSL3BheW1lbnQtcmVxdWVzdC8jZGZuLXVwZGF0ZS1hLXBheW1lbnRyZXF1ZXN0LXMtZGV0YWls
cy1hbGdvcml0aG0KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9pbnNwZWN0b3IvcGF5bWVu
dHJlcXVlc3QvcGF5bWVudC1yZXF1ZXN0LWludGVybmFsLXByb3BlcnRpZXMuaHR0cHMuaHRtbAor
ICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC91cGRhdGVXaXRoLWRpc3Bs
YXlJdGVtcy5odHRwcy5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3BheW1lbnRyZXF1
ZXN0L3VwZGF0ZVdpdGgtbW9kaWZpZXJzLmh0dHBzLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAv
dGVzdHMvcGF5bWVudHJlcXVlc3QvdXBkYXRlV2l0aC1zaGlwcGluZ09wdGlvbnMuaHR0cHMuaHRt
bAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC91cGRhdGVXaXRoLXRv
dGFsLmh0dHBzLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVu
dERldGFpbHNCYXNlLmg6CisgICAgICAgIE1ha2UgZXZlcnkgbWVtYmVyIGBPcHRpb25hbGAgc28g
d2UgY2FuIGRpc3Rpbmd1aXNoIGJldHdlZW4gInByb3ZpZGVkIGFuIGVtcHR5IGFycmF5IiBhbmQK
KyAgICAgICAgImRpZCBub3QgcHJvdmlkZSB0aGUgcHJvcGVydHkgYXQgYWxsIi4KKworICAgICAg
ICAqIE1vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y2hlY2tBbmRDYW5vbmljYWxpemVEZXRhaWxzKToKKyAgICAgICAgKFdlYkNvcmU6
OlBheW1lbnRSZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudFJlcXVl
c3Q6OnNldHRsZURldGFpbHNQcm9taXNlKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L3Bh
eW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbGVQYXlQYXltZW50SGFuZGxlcjo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
ZVBheVBheW1lbnRIYW5kbGVyOjpjb21wdXRlU2hpcHBpbmdNZXRob2RzKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmNvbXB1dGVUb3RhbEFuZExpbmVJdGVtcyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpjb21wdXRl
RXJyb3JzIGNvbnN0KToKKyAgICAgICAgQWRkIGNoZWNrcyBiZWZvcmUgYWNjZXNzaW5nIGBkaXNw
bGF5SXRlbXNgLCBgc2hpcHBpbmdPcHRpb25zYCwgYW5kIGBtb2RpZmllcnNgLgorICAgICAgICBN
YXRjaCB0aGUgZGVzY3JpYmVkIGJlaGF2aW9yIG9mIHRoZSBzcGVjIHdoZXJlIGBzaGlwcGluZ09w
dGlvbnNgIChidXQgb25seSBpZgorICAgICAgICBgcmVxdWVzdFNoaXBwaW5nYCB3YXMgc3BlY2lm
aWVkKSBhbmQgYG1vZGlmaWVyc2AgYXJlIHNldCB0byBhbiBlbXB0eSBhcnJheSBpZiBub3QgcHJv
dmlkZWQKKyAgICAgICAgd2hlbiBjb25zdHJ1Y3RpbmcgdGhlIGBQYXltZW50UmVxdWVzdGAuCisK
KyAgICAgICAgKiBpbnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Om9iamVjdEZvclBheW1lbnREZXRhaWxzKToKKyAgICAgICAgRG9uJ3QgY3JlYXRl
IGludGVybmFsIHByb3BlcnRpZXMgZm9yIGBkaXNwbGF5SXRlbXNgLCBgc2hpcHBpbmdPcHRpb25z
YCwgYW5kIGBtb2RpZmllcnNgCisgICAgICAgIHVubGVzcyB0aGV5IGFyZSBhY3R1YWxseSBwcm92
aWRlZCBmb3IgdGhlIHNhbWUgcmVhc29uIGFzIGFib3ZlLgorCiAyMDIxLTAxLTE5ICBQYXRyaWNr
IEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBGb250
IERldGFpbHMgc2lkZWJhciAtIEZyYWN0aW9uYWwgdmFyaWF0aW9uIGF4aXMgcmFuZ2VzL2RlZmF1
bHQgdmFsdWVzIGFyZSByb3VuZGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXlt
ZW50SGFuZGxlci5jcHAKaW5kZXggZTc1NWI4OGZlYjQ3OTBjMmM2MTM4Njk1NmNiZjc4NWIwMmE5
MmVhOC4uMDUwOTZhMzU1YjI4Mzc0MTAzMGRhNWQ2MDFlOWQyMjMzNzkwYTRiOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBh
eVBheW1lbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwCkBAIC0yMTgsMTcgKzIx
OCwyMSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpzaG93KERv
Y3VtZW50JiBkb2N1bWVudCkKICAgICBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCByZXF1
ZXN0ID0gdmFsaWRhdGVkUmVxdWVzdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICByZXF1ZXN0
LnNldFJlcXVlc3RlcihBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6UmVxdWVzdGVyOjpQ
YXltZW50UmVxdWVzdCk7CiAKLSAgICBTdHJpbmcgZXhwZWN0ZWRDdXJyZW5jeSA9IG1fcGF5bWVu
dFJlcXVlc3QtPnBheW1lbnREZXRhaWxzKCkudG90YWwuYW1vdW50LmN1cnJlbmN5OworICAgIGF1
dG8mIGRldGFpbHMgPSBtX3BheW1lbnRSZXF1ZXN0LT5wYXltZW50RGV0YWlscygpOworCisgICAg
U3RyaW5nIGV4cGVjdGVkQ3VycmVuY3kgPSBkZXRhaWxzLnRvdGFsLmFtb3VudC5jdXJyZW5jeTsK
ICAgICByZXF1ZXN0LnNldEN1cnJlbmN5Q29kZShleHBlY3RlZEN1cnJlbmN5KTsKIAotICAgIGF1
dG8gdG90YWwgPSBjb252ZXJ0QW5kVmFsaWRhdGUobV9wYXltZW50UmVxdWVzdC0+cGF5bWVudERl
dGFpbHMoKS50b3RhbCwgZXhwZWN0ZWRDdXJyZW5jeSk7CisgICAgYXV0byB0b3RhbCA9IGNvbnZl
cnRBbmRWYWxpZGF0ZShkZXRhaWxzLnRvdGFsLCBleHBlY3RlZEN1cnJlbmN5KTsKICAgICBBU1NF
UlQoIXRvdGFsLmhhc0V4Y2VwdGlvbigpKTsKICAgICByZXF1ZXN0LnNldFRvdGFsKHRvdGFsLnJl
bGVhc2VSZXR1cm5WYWx1ZSgpKTsKIAotICAgIGF1dG8gY29udmVydGVkTGluZUl0ZW1zID0gY29u
dmVydEFuZFZhbGlkYXRlKG1fcGF5bWVudFJlcXVlc3QtPnBheW1lbnREZXRhaWxzKCkuZGlzcGxh
eUl0ZW1zLCBleHBlY3RlZEN1cnJlbmN5KTsKLSAgICBpZiAoY29udmVydGVkTGluZUl0ZW1zLmhh
c0V4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gY29udmVydGVkTGluZUl0ZW1zLnJlbGVhc2VF
eGNlcHRpb24oKTsKLSAgICByZXF1ZXN0LnNldExpbmVJdGVtcyhjb252ZXJ0ZWRMaW5lSXRlbXMu
cmVsZWFzZVJldHVyblZhbHVlKCkpOworICAgIGlmIChkZXRhaWxzLmRpc3BsYXlJdGVtcykgewor
ICAgICAgICBhdXRvIGNvbnZlcnRlZExpbmVJdGVtcyA9IGNvbnZlcnRBbmRWYWxpZGF0ZSgqZGV0
YWlscy5kaXNwbGF5SXRlbXMsIGV4cGVjdGVkQ3VycmVuY3kpOworICAgICAgICBpZiAoY29udmVy
dGVkTGluZUl0ZW1zLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRl
ZExpbmVJdGVtcy5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgICAgIHJlcXVlc3Quc2V0TGluZUl0
ZW1zKGNvbnZlcnRlZExpbmVJdGVtcy5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisgICAgfQogCiAg
ICAgbWVyZ2VQYXltZW50T3B0aW9ucyhtX3BheW1lbnRSZXF1ZXN0LT5wYXltZW50T3B0aW9ucygp
LCByZXF1ZXN0KTsKIApAQCAtMjYwLDIwICsyNjQsMjEgQEAgdm9pZCBBcHBsZVBheVBheW1lbnRI
YW5kbGVyOjpjYW5NYWtlUGF5bWVudChEb2N1bWVudCYgZG9jdW1lbnQsIEZ1bmN0aW9uPHZvaWQo
Ym8KIEV4Y2VwdGlvbk9yPFZlY3RvcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6U2hp
cHBpbmdNZXRob2Q+PiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpjb21wdXRlU2hpcHBpbmdNZXRo
b2RzKCkKIHsKICAgICBhdXRvJiBkZXRhaWxzID0gbV9wYXltZW50UmVxdWVzdC0+cGF5bWVudERl
dGFpbHMoKTsKLSAgICBhdXRvJiBjdXJyZW5jeSA9IGRldGFpbHMudG90YWwuYW1vdW50LmN1cnJl
bmN5OwotICAgIGF1dG8mIHNoaXBwaW5nT3B0aW9ucyA9IGRldGFpbHMuc2hpcHBpbmdPcHRpb25z
OwogCi0gICAgVmVjdG9yPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01l
dGhvZD4gc2hpcHBpbmdNZXRob2RzOwotICAgIHNoaXBwaW5nTWV0aG9kcy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KHNoaXBwaW5nT3B0aW9ucy5zaXplKCkpOworICAgIFZlY3RvcjxBcHBsZVBheVNl
c3Npb25QYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Q+IHNoaXBwaW5nT3B0aW9uczsKKyAg
ICBpZiAoZGV0YWlscy5zaGlwcGluZ09wdGlvbnMpIHsKKyAgICAgICAgYXV0byYgY3VycmVuY3kg
PSBkZXRhaWxzLnRvdGFsLmFtb3VudC5jdXJyZW5jeTsKIAotICAgIGZvciAoYXV0byYgc2hpcHBp
bmdPcHRpb24gOiBzaGlwcGluZ09wdGlvbnMpIHsKLSAgICAgICAgYXV0byBzaGlwcGluZ01ldGhv
ZCA9IGNvbnZlcnRBbmRWYWxpZGF0ZShzaGlwcGluZ09wdGlvbiwgY3VycmVuY3kpOwotICAgICAg
ICBpZiAoc2hpcHBpbmdNZXRob2QuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4g
c2hpcHBpbmdNZXRob2QucmVsZWFzZUV4Y2VwdGlvbigpOwotICAgICAgICBzaGlwcGluZ01ldGhv
ZHMudW5jaGVja2VkQXBwZW5kKHNoaXBwaW5nTWV0aG9kLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsK
KyAgICAgICAgc2hpcHBpbmdPcHRpb25zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZGV0YWlscy5z
aGlwcGluZ09wdGlvbnMtPnNpemUoKSk7CisgICAgICAgIGZvciAoYXV0byYgc2hpcHBpbmdPcHRp
b24gOiAqZGV0YWlscy5zaGlwcGluZ09wdGlvbnMpIHsKKyAgICAgICAgICAgIGF1dG8gc2hpcHBp
bmdNZXRob2QgPSBjb252ZXJ0QW5kVmFsaWRhdGUoc2hpcHBpbmdPcHRpb24sIGN1cnJlbmN5KTsK
KyAgICAgICAgICAgIGlmIChzaGlwcGluZ01ldGhvZC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gc2hpcHBpbmdNZXRob2QucmVsZWFzZUV4Y2VwdGlvbigpOworICAgICAg
ICAgICAgc2hpcHBpbmdPcHRpb25zLnVuY2hlY2tlZEFwcGVuZChzaGlwcGluZ01ldGhvZC5yZWxl
YXNlUmV0dXJuVmFsdWUoKSk7CisgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gV1RGTW92
ZShzaGlwcGluZ01ldGhvZHMpOworICAgIHJldHVybiBXVEZNb3ZlKHNoaXBwaW5nT3B0aW9ucyk7
CiB9CiAKIEV4Y2VwdGlvbk9yPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpUb3RhbEFu
ZExpbmVJdGVtcz4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6Y29tcHV0ZVRvdGFsQW5kTGluZUl0
ZW1zKCkgY29uc3QKQEAgLTI4Niw1NCArMjkxLDYwIEBAIEV4Y2VwdGlvbk9yPEFwcGxlUGF5U2Vz
c2lvblBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gQXBwbGVQYXlQYXltZW50SGFu
CiAgICAgICAgIHJldHVybiBjb252ZXJ0ZWRUb3RhbC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAg
YXV0byB0b3RhbCA9IGNvbnZlcnRlZFRvdGFsLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogCi0gICAg
YXV0byBjb252ZXJ0ZWRMaW5lSXRlbXMgPSBjb252ZXJ0QW5kVmFsaWRhdGUoZGV0YWlscy5kaXNw
bGF5SXRlbXMsIGN1cnJlbmN5KTsKLSAgICBpZiAoY29udmVydGVkTGluZUl0ZW1zLmhhc0V4Y2Vw
dGlvbigpKQotICAgICAgICByZXR1cm4gY29udmVydGVkTGluZUl0ZW1zLnJlbGVhc2VFeGNlcHRp
b24oKTsKLSAgICBhdXRvIGxpbmVJdGVtcyA9IGNvbnZlcnRlZExpbmVJdGVtcy5yZWxlYXNlUmV0
dXJuVmFsdWUoKTsKKyAgICBWZWN0b3I8QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6Okxp
bmVJdGVtPiBsaW5lSXRlbXM7CisgICAgaWYgKGRldGFpbHMuZGlzcGxheUl0ZW1zKSB7CisgICAg
ICAgIGF1dG8gY29udmVydGVkTGluZUl0ZW1zID0gY29udmVydEFuZFZhbGlkYXRlKCpkZXRhaWxz
LmRpc3BsYXlJdGVtcywgY3VycmVuY3kpOworICAgICAgICBpZiAoY29udmVydGVkTGluZUl0ZW1z
Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlZExpbmVJdGVtcy5y
ZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgICAgIGxpbmVJdGVtcyA9IGNvbnZlcnRlZExpbmVJdGVt
cy5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICB9CiAKICAgICBpZiAoIW1fc2VsZWN0ZWRQYXlt
ZW50TWV0aG9kVHlwZSkKICAgICAgICAgcmV0dXJuIEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1
ZXN0OjpUb3RhbEFuZExpbmVJdGVtcyB7IFdURk1vdmUodG90YWwpLCBXVEZNb3ZlKGxpbmVJdGVt
cykgfTsKIAotICAgIGF1dG8mIG1vZGlmaWVycyA9IGRldGFpbHMubW9kaWZpZXJzOwotICAgIGF1
dG8mIHNlcmlhbGl6ZWRNb2RpZmllckRhdGEgPSBtX3BheW1lbnRSZXF1ZXN0LT5zZXJpYWxpemVk
TW9kaWZpZXJEYXRhKCk7Ci0gICAgQVNTRVJUKG1vZGlmaWVycy5zaXplKCkgPT0gc2VyaWFsaXpl
ZE1vZGlmaWVyRGF0YS5zaXplKCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbW9kaWZp
ZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8gY29udmVydGVkSWRlbnRpZmllciA9IGNv
bnZlcnRBbmRWYWxpZGF0ZVBheW1lbnRNZXRob2RJZGVudGlmaWVyKG1vZGlmaWVyc1tpXS5zdXBw
b3J0ZWRNZXRob2RzKTsKLSAgICAgICAgaWYgKCFjb252ZXJ0ZWRJZGVudGlmaWVyIHx8ICFoYW5k
bGVzSWRlbnRpZmllcigqY29udmVydGVkSWRlbnRpZmllcikpCi0gICAgICAgICAgICBjb250aW51
ZTsKKyAgICBpZiAoZGV0YWlscy5tb2RpZmllcnMpIHsKKyAgICAgICAgYXV0byYgc2VyaWFsaXpl
ZE1vZGlmaWVyRGF0YSA9IG1fcGF5bWVudFJlcXVlc3QtPnNlcmlhbGl6ZWRNb2RpZmllckRhdGEo
KTsKKyAgICAgICAgQVNTRVJUKGRldGFpbHMubW9kaWZpZXJzLT5zaXplKCkgPT0gc2VyaWFsaXpl
ZE1vZGlmaWVyRGF0YS5zaXplKCkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRl
dGFpbHMubW9kaWZpZXJzLT5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgYXV0byYgbW9kaWZp
ZXIgPSBkZXRhaWxzLm1vZGlmaWVycy0+YXQoaSk7CiAKLSAgICAgICAgaWYgKHNlcmlhbGl6ZWRN
b2RpZmllckRhdGFbaV0uaXNFbXB0eSgpKQotICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICBhdXRvIGNvbnZlcnRlZElkZW50aWZpZXIgPSBjb252ZXJ0QW5kVmFsaWRhdGVQYXltZW50
TWV0aG9kSWRlbnRpZmllcihtb2RpZmllci5zdXBwb3J0ZWRNZXRob2RzKTsKKyAgICAgICAgICAg
IGlmICghY29udmVydGVkSWRlbnRpZmllciB8fCAhaGFuZGxlc0lkZW50aWZpZXIoKmNvbnZlcnRl
ZElkZW50aWZpZXIpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8m
IGxleGljYWxHbG9iYWxPYmplY3QgPSAqZG9jdW1lbnQoKS5nbG9iYWxPYmplY3QoKTsKLSAgICAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUobGV4aWNhbEdsb2JhbE9iamVjdC52
bSgpKTsKLSAgICAgICAgSlNDOjpKU1ZhbHVlIGRhdGE7Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IGF1dG8gbG9jayA9IEpTQzo6SlNMb2NrSG9sZGVyIHsgJmxleGljYWxHbG9iYWxPYmplY3QgfTsK
LSAgICAgICAgICAgIGRhdGEgPSBKU09OUGFyc2UoJmxleGljYWxHbG9iYWxPYmplY3QsIHNlcmlh
bGl6ZWRNb2RpZmllckRhdGFbaV0pOworICAgICAgICAgICAgaWYgKHNlcmlhbGl6ZWRNb2RpZmll
ckRhdGFbaV0uaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
ICAgICBhdXRvJiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gKmRvY3VtZW50KCkuZ2xvYmFsT2JqZWN0
KCk7CisgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShsZXhpY2Fs
R2xvYmFsT2JqZWN0LnZtKCkpOworICAgICAgICAgICAgSlNDOjpKU1ZhbHVlIGRhdGE7CisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgYXV0byBsb2NrID0gSlNDOjpKU0xvY2tIb2xkZXIg
eyAmbGV4aWNhbEdsb2JhbE9iamVjdCB9OworICAgICAgICAgICAgICAgIGRhdGEgPSBKU09OUGFy
c2UoJmxleGljYWxHbG9iYWxPYmplY3QsIHNlcmlhbGl6ZWRNb2RpZmllckRhdGFbaV0pOworICAg
ICAgICAgICAgICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgYXV0byBhcHBsZVBheU1vZGlmaWVyID0gY29udmVydERpY3Rpb25h
cnk8QXBwbGVQYXlNb2RpZmllcj4obGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShkYXRhKSk7
CiAgICAgICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfTsKKworICAgICAgICAgICAg
aWYgKGFwcGxlUGF5TW9kaWZpZXIucGF5bWVudE1ldGhvZFR5cGUgIT0gKm1fc2VsZWN0ZWRQYXlt
ZW50TWV0aG9kVHlwZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAg
aWYgKG1vZGlmaWVyLnRvdGFsKSB7CisgICAgICAgICAgICAgICAgYXV0byB0b3RhbE92ZXJyaWRl
ID0gY29udmVydEFuZFZhbGlkYXRlKCptb2RpZmllci50b3RhbCwgY3VycmVuY3kpOworICAgICAg
ICAgICAgICAgIGlmICh0b3RhbE92ZXJyaWRlLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdG90YWxPdmVycmlkZS5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgICAg
ICAgICAgICAgdG90YWwgPSB0b3RhbE92ZXJyaWRlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBhdXRvIGFkZGl0aW9uYWxEaXNwbGF5SXRlbXMgPSBj
b252ZXJ0QW5kVmFsaWRhdGUobW9kaWZpZXIuYWRkaXRpb25hbERpc3BsYXlJdGVtcywgY3VycmVu
Y3kpOworICAgICAgICAgICAgaWYgKGFkZGl0aW9uYWxEaXNwbGF5SXRlbXMuaGFzRXhjZXB0aW9u
KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGFkZGl0aW9uYWxEaXNwbGF5SXRlbXMucmVsZWFz
ZUV4Y2VwdGlvbigpOworICAgICAgICAgICAgbGluZUl0ZW1zLmFwcGVuZFZlY3RvcihhZGRpdGlv
bmFsRGlzcGxheUl0ZW1zLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKyAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBhcHBsZVBheU1vZGlmaWVyID0gY29udmVydERp
Y3Rpb25hcnk8QXBwbGVQYXlNb2RpZmllcj4obGV4aWNhbEdsb2JhbE9iamVjdCwgV1RGTW92ZShk
YXRhKSk7Ci0gICAgICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH07Ci0KLSAgICAgICAgaWYgKGFw
cGxlUGF5TW9kaWZpZXIucGF5bWVudE1ldGhvZFR5cGUgIT0gKm1fc2VsZWN0ZWRQYXltZW50TWV0
aG9kVHlwZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmIChtb2RpZmllcnNb
aV0udG90YWwpIHsKLSAgICAgICAgICAgIGF1dG8gdG90YWxPdmVycmlkZSA9IGNvbnZlcnRBbmRW
YWxpZGF0ZSgqbW9kaWZpZXJzW2ldLnRvdGFsLCBjdXJyZW5jeSk7Ci0gICAgICAgICAgICBpZiAo
dG90YWxPdmVycmlkZS5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdG90
YWxPdmVycmlkZS5yZWxlYXNlRXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICB0b3RhbCA9IHRvdGFs
T3ZlcnJpZGUucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRv
IGFkZGl0aW9uYWxEaXNwbGF5SXRlbXMgPSBjb252ZXJ0QW5kVmFsaWRhdGUobW9kaWZpZXJzW2ld
LmFkZGl0aW9uYWxEaXNwbGF5SXRlbXMsIGN1cnJlbmN5KTsKLSAgICAgICAgaWYgKGFkZGl0aW9u
YWxEaXNwbGF5SXRlbXMuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gYWRkaXRp
b25hbERpc3BsYXlJdGVtcy5yZWxlYXNlRXhjZXB0aW9uKCk7Ci0gICAgICAgIGxpbmVJdGVtcy5h
cHBlbmRWZWN0b3IoYWRkaXRpb25hbERpc3BsYXlJdGVtcy5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7
Ci0gICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIHJldHVybiBBcHBsZVBheVNlc3Npb25QYXlt
ZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXMgeyBXVEZNb3ZlKHRvdGFsKSwgV1RGTW92ZShs
aW5lSXRlbXMpIH07CkBAIC0zNDksNyArMzYwLDkgQEAgVmVjdG9yPFBheW1lbnRFcnJvcj4gQXBw
bGVQYXlQYXltZW50SGFuZGxlcjo6Y29tcHV0ZUVycm9ycyhTdHJpbmcmJiBlcnJvciwgQWRkcmUK
IHsKICAgICBWZWN0b3I8UGF5bWVudEVycm9yPiBlcnJvcnM7CiAKLSAgICBpZiAobV9wYXltZW50
UmVxdWVzdC0+cGF5bWVudERldGFpbHMoKS5zaGlwcGluZ09wdGlvbnMuaXNFbXB0eSgpKQorICAg
IGF1dG8mIGRldGFpbHMgPSBtX3BheW1lbnRSZXF1ZXN0LT5wYXltZW50RGV0YWlscygpOworCisg
ICAgaWYgKCFkZXRhaWxzLnNoaXBwaW5nT3B0aW9ucyB8fCBkZXRhaWxzLnNoaXBwaW5nT3B0aW9u
cy0+aXNFbXB0eSgpKQogICAgICAgICBjb21wdXRlQWRkcmVzc0Vycm9ycyhXVEZNb3ZlKGVycm9y
KSwgV1RGTW92ZShhZGRyZXNzRXJyb3JzKSwgZXJyb3JzKTsKIAogICAgIGNvbXB1dGVQYXllckVy
cm9ycyhXVEZNb3ZlKHBheWVyRXJyb3JzKSwgZXJyb3JzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudERldGFpbHNCYXNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnREZXRhaWxzQmFzZS5oCmlu
ZGV4IDQ0MjAzZGE1MzdmMGQ1NzRmMjEyOWE0MGZmODg4ZWVkMzBjOTc4Y2EuLjk0MjJkNDIwMTM0
YWY5M2RiOWE2ZjQwYWE2ZmUxZDUzNmIxZTFlZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudERldGFpbHNCYXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50RGV0YWlsc0Jhc2UuaApAQCAt
MzUsOSArMzUsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgUGF5bWVudERldGFp
bHNCYXNlIHsKLSAgICBWZWN0b3I8UGF5bWVudEl0ZW0+IGRpc3BsYXlJdGVtczsKLSAgICBWZWN0
b3I8UGF5bWVudFNoaXBwaW5nT3B0aW9uPiBzaGlwcGluZ09wdGlvbnM7Ci0gICAgVmVjdG9yPFBh
eW1lbnREZXRhaWxzTW9kaWZpZXI+IG1vZGlmaWVyczsKKyAgICBPcHRpb25hbDxWZWN0b3I8UGF5
bWVudEl0ZW0+PiBkaXNwbGF5SXRlbXM7CisgICAgT3B0aW9uYWw8VmVjdG9yPFBheW1lbnRTaGlw
cGluZ09wdGlvbj4+IHNoaXBwaW5nT3B0aW9uczsKKyAgICBPcHRpb25hbDxWZWN0b3I8UGF5bWVu
dERldGFpbHNNb2RpZmllcj4+IG1vZGlmaWVyczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5
bWVudFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9Q
YXltZW50UmVxdWVzdC5jcHAKaW5kZXggNjg5ZDVjYTYzYzMzMmE0OWQwNTBkNzUyN2M4NWViYzY4
MjkyNDg1OS4uNzU3YWEyMTlmNjY0MTYwOGFjZGQ3ODhkMGNiOWI5NzJkNjU2ZDQ0NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50
UmVxdWVzdC5jcHAKQEAgLTI0MCw2OCArMjQwLDc2IEBAIE9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0
OjpNZXRob2RJZGVudGlmaWVyPiBjb252ZXJ0QW5kVmFsaWRhdGVQYXltZW50TWV0aG9kSWRlbnRp
CiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAotZW51bSBjbGFzcyBTaG91bGRWYWxpZGF0
ZVBheW1lbnRNZXRob2RJZGVudGlmaWVyIHsKK2VudW0gY2xhc3MgSXNVcGRhdGUgewogICAgIE5v
LAogICAgIFllcywKIH07CiAKLXN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnR1cGxlPFN0cmluZywg
VmVjdG9yPFN0cmluZz4+PiBjaGVja0FuZENhbm9uaWNhbGl6ZURldGFpbHMoSlNDOjpKU0dsb2Jh
bE9iamVjdCYgZXhlY1N0YXRlLCBQYXltZW50RGV0YWlsc0Jhc2UmIGRldGFpbHMsIGJvb2wgcmVx
dWVzdFNoaXBwaW5nLCBTaG91bGRWYWxpZGF0ZVBheW1lbnRNZXRob2RJZGVudGlmaWVyIHNob3Vs
ZFZhbGlkYXRlUGF5bWVudE1ldGhvZElkZW50aWZpZXIpCitzdGF0aWMgRXhjZXB0aW9uT3I8c3Rk
Ojp0dXBsZTxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+Pj4gY2hlY2tBbmRDYW5vbmljYWxpemVEZXRh
aWxzKEpTQzo6SlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgUGF5bWVudERldGFpbHNCYXNlJiBk
ZXRhaWxzLCBib29sIHJlcXVlc3RTaGlwcGluZywgSXNVcGRhdGUgaXNVcGRhdGUpCiB7Ci0gICAg
Zm9yIChhdXRvJiBpdGVtIDogZGV0YWlscy5kaXNwbGF5SXRlbXMpIHsKLSAgICAgICAgYXV0byBl
eGNlcHRpb24gPSBjaGVja0FuZENhbm9uaWNhbGl6ZUFtb3VudChpdGVtLmFtb3VudCk7Ci0gICAg
ICAgIGlmIChleGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gZXhj
ZXB0aW9uLnJlbGVhc2VFeGNlcHRpb24oKTsKLSAgICB9Ci0KLSAgICBTdHJpbmcgc2VsZWN0ZWRT
aGlwcGluZ09wdGlvbjsKLSAgICBpZiAocmVxdWVzdFNoaXBwaW5nKSB7Ci0gICAgICAgIEhhc2hT
ZXQ8U3RyaW5nPiBzZWVuU2hpcHBpbmdPcHRpb25JRHM7Ci0gICAgICAgIGZvciAoYXV0byYgc2hp
cHBpbmdPcHRpb24gOiBkZXRhaWxzLnNoaXBwaW5nT3B0aW9ucykgewotICAgICAgICAgICAgYXV0
byBleGNlcHRpb24gPSBjaGVja0FuZENhbm9uaWNhbGl6ZUFtb3VudChzaGlwcGluZ09wdGlvbi5h
bW91bnQpOwotICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uLnJlbGVhc2VFeGNlcHRpb24oKTsKLQotICAgICAg
ICAgICAgYXV0byBhZGRSZXN1bHQgPSBzZWVuU2hpcHBpbmdPcHRpb25JRHMuYWRkKHNoaXBwaW5n
T3B0aW9uLmlkKTsKLSAgICAgICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlNoaXBwaW5nIG9wdGlv
biBJRHMgbXVzdCBiZSB1bmlxdWUuIiB9OwotCi0gICAgICAgICAgICBpZiAoc2hpcHBpbmdPcHRp
b24uc2VsZWN0ZWQpCi0gICAgICAgICAgICAgICAgc2VsZWN0ZWRTaGlwcGluZ09wdGlvbiA9IHNo
aXBwaW5nT3B0aW9uLmlkOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgVmVjdG9yPFN0cmluZz4g
c2VyaWFsaXplZE1vZGlmaWVyRGF0YTsKLSAgICBzZXJpYWxpemVkTW9kaWZpZXJEYXRhLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoZGV0YWlscy5tb2RpZmllcnMuc2l6ZSgpKTsKLSAgICBmb3IgKGF1
dG8mIG1vZGlmaWVyIDogZGV0YWlscy5tb2RpZmllcnMpIHsKLSAgICAgICAgaWYgKHNob3VsZFZh
bGlkYXRlUGF5bWVudE1ldGhvZElkZW50aWZpZXIgPT0gU2hvdWxkVmFsaWRhdGVQYXltZW50TWV0
aG9kSWRlbnRpZmllcjo6WWVzKSB7Ci0gICAgICAgICAgICBhdXRvIHBheW1lbnRNZXRob2RJZGVu
dGlmaWVyID0gY29udmVydEFuZFZhbGlkYXRlUGF5bWVudE1ldGhvZElkZW50aWZpZXIobW9kaWZp
ZXIuc3VwcG9ydGVkTWV0aG9kcyk7Ci0gICAgICAgICAgICBpZiAoIXBheW1lbnRNZXRob2RJZGVu
dGlmaWVyKQotICAgICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBSYW5nZUVycm9yLCBt
YWtlU3RyaW5nKCciJywgbW9kaWZpZXIuc3VwcG9ydGVkTWV0aG9kcywgIlwiIGlzIGFuIGludmFs
aWQgcGF5bWVudCBtZXRob2QgaWRlbnRpZmllci4iKSB9OwotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKG1vZGlmaWVyLnRvdGFsKSB7Ci0gICAgICAgICAgICBhdXRvIGV4Y2VwdGlvbiA9IGNoZWNr
QW5kQ2Fub25pY2FsaXplVG90YWwobW9kaWZpZXIudG90YWwtPmFtb3VudCk7Ci0gICAgICAgICAg
ICBpZiAoZXhjZXB0aW9uLmhhc0V4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgIHJldHVybiBl
eGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9yIChh
dXRvJiBpdGVtIDogbW9kaWZpZXIuYWRkaXRpb25hbERpc3BsYXlJdGVtcykgeworICAgIGlmIChk
ZXRhaWxzLmRpc3BsYXlJdGVtcykgeworICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiAqZGV0YWls
cy5kaXNwbGF5SXRlbXMpIHsKICAgICAgICAgICAgIGF1dG8gZXhjZXB0aW9uID0gY2hlY2tBbmRD
YW5vbmljYWxpemVBbW91bnQoaXRlbS5hbW91bnQpOwogICAgICAgICAgICAgaWYgKGV4Y2VwdGlv
bi5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uLnJlbGVh
c2VFeGNlcHRpb24oKTsKICAgICAgICAgfQotCi0gICAgICAgIFN0cmluZyBzZXJpYWxpemVkRGF0
YTsKLSAgICAgICAgaWYgKG1vZGlmaWVyLmRhdGEpIHsKLSAgICAgICAgICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWNTdGF0ZS52bSgpKTsKLSAgICAgICAgICAgIHNlcmlh
bGl6ZWREYXRhID0gSlNPTlN0cmluZ2lmeSgmZXhlY1N0YXRlLCBtb2RpZmllci5kYXRhLmdldCgp
LCAwKTsKLSAgICAgICAgICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9OwotICAgICAgICAg
ICAgbW9kaWZpZXIuZGF0YS5jbGVhcigpOwotICAgICAgICB9Ci0gICAgICAgIHNlcmlhbGl6ZWRN
b2RpZmllckRhdGEudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoc2VyaWFsaXplZERhdGEpKTsKICAg
ICB9CiAKKyAgICBTdHJpbmcgc2VsZWN0ZWRTaGlwcGluZ09wdGlvbjsKKyAgICBpZiAocmVxdWVz
dFNoaXBwaW5nKSB7CisgICAgICAgIGlmIChkZXRhaWxzLnNoaXBwaW5nT3B0aW9ucykgeworICAg
ICAgICAgICAgSGFzaFNldDxTdHJpbmc+IHNlZW5TaGlwcGluZ09wdGlvbklEczsKKyAgICAgICAg
ICAgIGZvciAoYXV0byYgc2hpcHBpbmdPcHRpb24gOiAqZGV0YWlscy5zaGlwcGluZ09wdGlvbnMp
IHsKKyAgICAgICAgICAgICAgICBhdXRvIGV4Y2VwdGlvbiA9IGNoZWNrQW5kQ2Fub25pY2FsaXpl
QW1vdW50KHNoaXBwaW5nT3B0aW9uLmFtb3VudCk7CisgICAgICAgICAgICAgICAgaWYgKGV4Y2Vw
dGlvbi5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlv
bi5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9
IHNlZW5TaGlwcGluZ09wdGlvbklEcy5hZGQoc2hpcHBpbmdPcHRpb24uaWQpOworICAgICAgICAg
ICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJTaGlwcGluZyBvcHRpb24gSURzIG11c3QgYmUg
dW5pcXVlLiIgfTsKKworICAgICAgICAgICAgICAgIGlmIChzaGlwcGluZ09wdGlvbi5zZWxlY3Rl
ZCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRTaGlwcGluZ09wdGlvbiA9IHNoaXBwaW5n
T3B0aW9uLmlkOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGlzVXBkYXRlID09
IElzVXBkYXRlOjpObykKKyAgICAgICAgICAgIGRldGFpbHMuc2hpcHBpbmdPcHRpb25zID0geyB7
IH0gfTsKKyAgICB9CisKKyAgICBWZWN0b3I8U3RyaW5nPiBzZXJpYWxpemVkTW9kaWZpZXJEYXRh
OworICAgIGlmIChkZXRhaWxzLm1vZGlmaWVycykgeworICAgICAgICBzZXJpYWxpemVkTW9kaWZp
ZXJEYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZGV0YWlscy5tb2RpZmllcnMtPnNpemUoKSk7
CisgICAgICAgIGZvciAoYXV0byYgbW9kaWZpZXIgOiAqZGV0YWlscy5tb2RpZmllcnMpIHsKKyAg
ICAgICAgICAgIGlmIChpc1VwZGF0ZSA9PSBJc1VwZGF0ZTo6WWVzKSB7CisgICAgICAgICAgICAg
ICAgYXV0byBwYXltZW50TWV0aG9kSWRlbnRpZmllciA9IGNvbnZlcnRBbmRWYWxpZGF0ZVBheW1l
bnRNZXRob2RJZGVudGlmaWVyKG1vZGlmaWVyLnN1cHBvcnRlZE1ldGhvZHMpOworICAgICAgICAg
ICAgICAgIGlmICghcGF5bWVudE1ldGhvZElkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBSYW5nZUVycm9yLCBtYWtlU3RyaW5nKCciJywgbW9kaWZpZXIu
c3VwcG9ydGVkTWV0aG9kcywgIlwiIGlzIGFuIGludmFsaWQgcGF5bWVudCBtZXRob2QgaWRlbnRp
Zmllci4iKSB9OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobW9kaWZpZXIudG90
YWwpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGV4Y2VwdGlvbiA9IGNoZWNrQW5kQ2Fub25pY2Fs
aXplVG90YWwobW9kaWZpZXIudG90YWwtPmFtb3VudCk7CisgICAgICAgICAgICAgICAgaWYgKGV4
Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2Vw
dGlvbi5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZv
ciAoYXV0byYgaXRlbSA6IG1vZGlmaWVyLmFkZGl0aW9uYWxEaXNwbGF5SXRlbXMpIHsKKyAgICAg
ICAgICAgICAgICBhdXRvIGV4Y2VwdGlvbiA9IGNoZWNrQW5kQ2Fub25pY2FsaXplQW1vdW50KGl0
ZW0uYW1vdW50KTsKKyAgICAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uLmhhc0V4Y2VwdGlvbigp
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uLnJlbGVhc2VFeGNlcHRpb24o
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgU3RyaW5nIHNlcmlhbGl6ZWREYXRhOwor
ICAgICAgICAgICAgaWYgKG1vZGlmaWVyLmRhdGEpIHsKKyAgICAgICAgICAgICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjU3RhdGUudm0oKSk7CisgICAgICAgICAgICAg
ICAgc2VyaWFsaXplZERhdGEgPSBKU09OU3RyaW5naWZ5KCZleGVjU3RhdGUsIG1vZGlmaWVyLmRh
dGEuZ2V0KCksIDApOworICAgICAgICAgICAgICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJy
b3IgfTsKKyAgICAgICAgICAgICAgICBtb2RpZmllci5kYXRhLmNsZWFyKCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBzZXJpYWxpemVkTW9kaWZpZXJEYXRhLnVuY2hlY2tlZEFwcGVuZChX
VEZNb3ZlKHNlcmlhbGl6ZWREYXRhKSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGlzVXBk
YXRlID09IElzVXBkYXRlOjpObykKKyAgICAgICAgZGV0YWlscy5tb2RpZmllcnMgPSB7IHsgfSB9
OworCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShXVEZNb3ZlKHNlbGVjdGVkU2hpcHBpbmdP
cHRpb24pLCBXVEZNb3ZlKHNlcmlhbGl6ZWRNb2RpZmllckRhdGEpKTsKIH0KIApAQCAtMzU3LDcg
KzM2NSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxQYXltZW50UmVxdWVzdD4+IFBheW1lbnRSZXF1ZXN0
OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBWZWN0CiAgICAgaWYgKHRvdGFsUmVzdWx0Lmhh
c0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gdG90YWxSZXN1bHQucmVsZWFzZUV4Y2VwdGlv
bigpOwogCi0gICAgYXV0byBkZXRhaWxzUmVzdWx0ID0gY2hlY2tBbmRDYW5vbmljYWxpemVEZXRh
aWxzKCpkb2N1bWVudC5nbG9iYWxPYmplY3QoKSwgZGV0YWlscywgb3B0aW9ucy5yZXF1ZXN0U2hp
cHBpbmcsIFNob3VsZFZhbGlkYXRlUGF5bWVudE1ldGhvZElkZW50aWZpZXI6Ok5vKTsKKyAgICBh
dXRvIGRldGFpbHNSZXN1bHQgPSBjaGVja0FuZENhbm9uaWNhbGl6ZURldGFpbHMoKmRvY3VtZW50
Lmdsb2JhbE9iamVjdCgpLCBkZXRhaWxzLCBvcHRpb25zLnJlcXVlc3RTaGlwcGluZywgSXNVcGRh
dGU6Ok5vKTsKICAgICBpZiAoZGV0YWlsc1Jlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIGRldGFpbHNSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogCkBAIC02NjEsNyArNjY5
LDcgQEAgdm9pZCBQYXltZW50UmVxdWVzdDo6c2V0dGxlRGV0YWlsc1Byb21pc2UoVXBkYXRlUmVh
c29uIHJlYXNvbikKICAgICAgICAgfQogICAgIH0KIAotICAgIGF1dG8gZGV0YWlsc1Jlc3VsdCA9
IGNoZWNrQW5kQ2Fub25pY2FsaXplRGV0YWlscygqY29udGV4dC5nbG9iYWxPYmplY3QoKSwgZGV0
YWlsc1VwZGF0ZSwgbV9vcHRpb25zLnJlcXVlc3RTaGlwcGluZywgU2hvdWxkVmFsaWRhdGVQYXlt
ZW50TWV0aG9kSWRlbnRpZmllcjo6WWVzKTsKKyAgICBhdXRvIGRldGFpbHNSZXN1bHQgPSBjaGVj
a0FuZENhbm9uaWNhbGl6ZURldGFpbHMoKmNvbnRleHQuZ2xvYmFsT2JqZWN0KCksIGRldGFpbHNV
cGRhdGUsIG1fb3B0aW9ucy5yZXF1ZXN0U2hpcHBpbmcsIElzVXBkYXRlOjpZZXMpOwogICAgIGlm
IChkZXRhaWxzUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIGFib3J0V2l0aEV4Y2Vw
dGlvbihkZXRhaWxzUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTY2OSwxNSArNjc3LDE4IEBAIHZvaWQgUGF5bWVudFJlcXVlc3Q6OnNldHRsZURldGFpbHNQ
cm9taXNlKFVwZGF0ZVJlYXNvbiByZWFzb24pCiAKICAgICBhdXRvIHNoaXBwaW5nT3B0aW9uQW5k
TW9kaWZpZXJEYXRhID0gZGV0YWlsc1Jlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKIAotICAg
IG1fZGV0YWlscy50b3RhbCA9IGRldGFpbHNVcGRhdGUudG90YWwgPyBXVEZNb3ZlKCpkZXRhaWxz
VXBkYXRlLnRvdGFsKSA6IFBheW1lbnRJdGVtKCk7Ci0gICAgbV9kZXRhaWxzLmRpc3BsYXlJdGVt
cyA9IFdURk1vdmUoZGV0YWlsc1VwZGF0ZS5kaXNwbGF5SXRlbXMpOwotICAgIGlmIChtX29wdGlv
bnMucmVxdWVzdFNoaXBwaW5nKSB7CisgICAgaWYgKGRldGFpbHNVcGRhdGUudG90YWwpCisgICAg
ICAgIG1fZGV0YWlscy50b3RhbCA9IFdURk1vdmUoKmRldGFpbHNVcGRhdGUudG90YWwpOworICAg
IGlmIChkZXRhaWxzVXBkYXRlLmRpc3BsYXlJdGVtcykKKyAgICAgICAgbV9kZXRhaWxzLmRpc3Bs
YXlJdGVtcyA9IFdURk1vdmUoKmRldGFpbHNVcGRhdGUuZGlzcGxheUl0ZW1zKTsKKyAgICBpZiAo
ZGV0YWlsc1VwZGF0ZS5zaGlwcGluZ09wdGlvbnMgJiYgbV9vcHRpb25zLnJlcXVlc3RTaGlwcGlu
ZykgewogICAgICAgICBtX2RldGFpbHMuc2hpcHBpbmdPcHRpb25zID0gV1RGTW92ZShkZXRhaWxz
VXBkYXRlLnNoaXBwaW5nT3B0aW9ucyk7CiAgICAgICAgIG1fc2hpcHBpbmdPcHRpb24gPSBXVEZN
b3ZlKHN0ZDo6Z2V0PDA+KHNoaXBwaW5nT3B0aW9uQW5kTW9kaWZpZXJEYXRhKSk7CiAgICAgfQot
Ci0gICAgbV9kZXRhaWxzLm1vZGlmaWVycyA9IFdURk1vdmUoZGV0YWlsc1VwZGF0ZS5tb2RpZmll
cnMpOwotICAgIG1fc2VyaWFsaXplZE1vZGlmaWVyRGF0YSA9IFdURk1vdmUoc3RkOjpnZXQ8MT4o
c2hpcHBpbmdPcHRpb25BbmRNb2RpZmllckRhdGEpKTsKKyAgICBpZiAoZGV0YWlsc1VwZGF0ZS5t
b2RpZmllcnMpIHsKKyAgICAgICAgbV9kZXRhaWxzLm1vZGlmaWVycyA9IFdURk1vdmUoKmRldGFp
bHNVcGRhdGUubW9kaWZpZXJzKTsKKyAgICAgICAgbV9zZXJpYWxpemVkTW9kaWZpZXJEYXRhID0g
V1RGTW92ZShzdGQ6OmdldDwxPihzaGlwcGluZ09wdGlvbkFuZE1vZGlmaWVyRGF0YSkpOworICAg
IH0KIAogICAgIGF1dG8gcmVzdWx0ID0gYWN0aXZlUGF5bWVudEhhbmRsZXIoKS0+ZGV0YWlsc1Vw
ZGF0ZWQocmVhc29uLCBXVEZNb3ZlKGRldGFpbHNVcGRhdGUuZXJyb3IpLCBXVEZNb3ZlKGRldGFp
bHNVcGRhdGUuc2hpcHBpbmdBZGRyZXNzRXJyb3JzKSwgV1RGTW92ZShkZXRhaWxzVXBkYXRlLnBh
eWVyRXJyb3JzKSwgZGV0YWlsc1VwZGF0ZS5wYXltZW50TWV0aG9kRXJyb3JzLmdldCgpKTsKICAg
ICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9XZWJJbmplY3RlZFNjcmlwdEhvc3QuY3BwCmluZGV4IGFjYjVmYWM4YTRjMzcxNDUw
MmQ0ZmE2MTkzMWVkZTU0OWIwYmFjY2UuLjZjZWEyNDY2NGJhZTI3NmVmNGRiNDRkOWE4MGE5NjJj
MjQ5OGEyNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJJbmplY3Rl
ZFNjcmlwdEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJJbmplY3Rl
ZFNjcmlwdEhvc3QuY3BwCkBAIC0xMjYsMjQgKzEyNiwyNyBAQCBzdGF0aWMgSlNPYmplY3QqIG9i
amVjdEZvclBheW1lbnREZXRhaWxzTW9kaWZpZXIoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZXhl
YywgYwogCiBzdGF0aWMgSlNPYmplY3QqIG9iamVjdEZvclBheW1lbnREZXRhaWxzKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFBheW1lbnREZXRhaWxzSW5pdCYgcGF5bWVudERl
dGFpbHMpCiB7Ci0gICAgYXV0byogZGlzcGxheUl0ZW1zID0gY29uc3RydWN0RW1wdHlBcnJheShl
eGVjLCBudWxscHRyKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF5bWVudERldGFp
bHMuZGlzcGxheUl0ZW1zLnNpemUoKTsgKytpKQotICAgICAgICBkaXNwbGF5SXRlbXMtPnB1dERp
cmVjdEluZGV4KGV4ZWMsIGksIG9iamVjdEZvclBheW1lbnRJdGVtKHZtLCBleGVjLCBwYXltZW50
RGV0YWlscy5kaXNwbGF5SXRlbXNbaV0pKTsKLQotICAgIGF1dG8qIHNoaXBwaW5nT3B0aW9ucyA9
IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0cik7Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHBheW1lbnREZXRhaWxzLnNoaXBwaW5nT3B0aW9ucy5zaXplKCk7ICsraSkKLSAg
ICAgICAgc2hpcHBpbmdPcHRpb25zLT5wdXREaXJlY3RJbmRleChleGVjLCBpLCBvYmplY3RGb3JQ
YXltZW50U2hpcHBpbmdPcHRpb24odm0sIGV4ZWMsIHBheW1lbnREZXRhaWxzLnNoaXBwaW5nT3B0
aW9uc1tpXSkpOwotCi0gICAgYXV0byogbW9kaWZpZXJzID0gY29uc3RydWN0RW1wdHlBcnJheShl
eGVjLCBudWxscHRyKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF5bWVudERldGFp
bHMubW9kaWZpZXJzLnNpemUoKTsgKytpKQotICAgICAgICBtb2RpZmllcnMtPnB1dERpcmVjdElu
ZGV4KGV4ZWMsIGksIG9iamVjdEZvclBheW1lbnREZXRhaWxzTW9kaWZpZXIodm0sIGV4ZWMsIHBh
eW1lbnREZXRhaWxzLm1vZGlmaWVyc1tpXSkpOwotCiAgICAgYXV0byogb2JqZWN0ID0gY29uc3Ry
dWN0RW1wdHlPYmplY3QoZXhlYyk7CiAgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJpZCIpLCBqc1N0cmluZyh2bSwgcGF5bWVudERldGFpbHMuaWQp
KTsKICAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InRvdGFsIiksIG9iamVjdEZvclBheW1lbnRJdGVtKHZtLCBleGVjLCBwYXltZW50RGV0YWlscy50
b3RhbCkpOwotICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiZGlzcGxheUl0ZW1zIiksIGRpc3BsYXlJdGVtcyk7Ci0gICAgb2JqZWN0LT5wdXREaXJl
Y3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzaGlwcGluZ09wdGlvbnMiKSwgc2hp
cHBpbmdPcHRpb25zKTsKLSAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgIm1vZGlmaWVycyIpLCBtb2RpZmllcnMpOworICAgIGlmIChwYXltZW50RGV0
YWlscy5kaXNwbGF5SXRlbXMpIHsKKyAgICAgICAgYXV0byogZGlzcGxheUl0ZW1zID0gY29uc3Ry
dWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHBheW1lbnREZXRhaWxzLmRpc3BsYXlJdGVtcy0+c2l6ZSgpOyArK2kpCisgICAgICAg
ICAgICBkaXNwbGF5SXRlbXMtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGksIG9iamVjdEZvclBheW1l
bnRJdGVtKHZtLCBleGVjLCBwYXltZW50RGV0YWlscy5kaXNwbGF5SXRlbXMtPmF0KGkpKSk7Cisg
ICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
ZGlzcGxheUl0ZW1zIiksIGRpc3BsYXlJdGVtcyk7CisgICAgfQorICAgIGlmIChwYXltZW50RGV0
YWlscy5zaGlwcGluZ09wdGlvbnMpIHsKKyAgICAgICAgYXV0byogc2hpcHBpbmdPcHRpb25zID0g
Y29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyKTsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHBheW1lbnREZXRhaWxzLnNoaXBwaW5nT3B0aW9ucy0+c2l6ZSgpOyArK2kp
CisgICAgICAgICAgICBzaGlwcGluZ09wdGlvbnMtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGksIG9i
amVjdEZvclBheW1lbnRTaGlwcGluZ09wdGlvbih2bSwgZXhlYywgcGF5bWVudERldGFpbHMuc2hp
cHBpbmdPcHRpb25zLT5hdChpKSkpOworICAgICAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNoaXBwaW5nT3B0aW9ucyIpLCBzaGlwcGluZ09wdGlv
bnMpOworICAgIH0KKyAgICBpZiAocGF5bWVudERldGFpbHMubW9kaWZpZXJzKSB7CisgICAgICAg
IGF1dG8qIG1vZGlmaWVycyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0cik7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXltZW50RGV0YWlscy5tb2RpZmllcnMt
PnNpemUoKTsgKytpKQorICAgICAgICAgICAgbW9kaWZpZXJzLT5wdXREaXJlY3RJbmRleChleGVj
LCBpLCBvYmplY3RGb3JQYXltZW50RGV0YWlsc01vZGlmaWVyKHZtLCBleGVjLCBwYXltZW50RGV0
YWlscy5tb2RpZmllcnMtPmF0KGkpKSk7CisgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibW9kaWZpZXJzIiksIG1vZGlmaWVycyk7CisgICAg
fQogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5ZTBkMWM0ZTEzY2ZkNGM1N2IwNWVi
OWRmNTA0MGM2MTBmOTFkNDMwLi43OWI1ZWM5ODYyNTY3YzBlM2E4YmNkMzBhYjIyMGY3YWY5MDc1
MjA0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjEtMDEtMjAgIERldmluIFJvdXNzbyAgPGRy
b3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFBheW1lbnQgUmVxdWVzdCBBUEkgLSByZXNwb25z
ZS5zaGlwcGluZ09wdGlvbiBpcyBhbHdheXMgbnVsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwNTY2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83
MzIwNDM4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVxdWVzdC1p
bnRlcm5hbC1wcm9wZXJ0aWVzLmh0dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rl
c3RzL3BheW1lbnRyZXF1ZXN0L3VwZGF0ZVdpdGgtZGlzcGxheUl0ZW1zLmh0dHBzLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvdXBkYXRlV2l0aC1kaXNw
bGF5SXRlbXMuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3BheW1lbnRyZXF1ZXN0L3VwZGF0ZVdpdGgtbW9kaWZpZXJzLmh0dHBzLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvdXBkYXRlV2l0aC1tb2RpZmllcnMu
aHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3BheW1lbnRy
ZXF1ZXN0L3VwZGF0ZVdpdGgtc2hpcHBpbmdPcHRpb25zLmh0dHBzLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvdXBkYXRlV2l0aC1zaGlwcGluZ09wdGlv
bnMuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3BheW1l
bnRyZXF1ZXN0L3VwZGF0ZVdpdGgtdG90YWwuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC91cGRhdGVXaXRoLXRvdGFsLmh0dHBzLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisKIDIwMjEtMDEtMTkgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFy
QGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjY2Njk1KSBSYW5nZSBjb250cm9s
IHdpdGggY3VzdG9tIHRyYWNrIHdpZHRoIHNpemVkIGluY29ycmVjdGx5CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9wYXltZW50cmVxdWVzdC9wYXltZW50LXJl
cXVlc3QtaW50ZXJuYWwtcHJvcGVydGllcy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlcXVlc3QtaW50
ZXJuYWwtcHJvcGVydGllcy5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggZTJjNzJjNDNhNzY0NTY3
YzlhN2QxMjE3YjI4YzBjNTdiNzQ0OTVlZS4uY2Q5ZTBjYWM2NjQwYzJkYmQ0ZTFhOTZkOTZhMTZh
N2Y2MjJiNzgwMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
cGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXF1ZXN0LWludGVybmFsLXByb3BlcnRpZXMuaHR0cHMt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3BheW1l
bnRyZXF1ZXN0L3BheW1lbnQtcmVxdWVzdC1pbnRlcm5hbC1wcm9wZXJ0aWVzLmh0dHBzLWV4cGVj
dGVkLnR4dApAQCAtOTYsOCArOTYsNiBAQCBJTlRFUk5BTCBQUk9QRVJUWTogZGV0YWlsczogewog
ICAgIH0sCiAgICAgInBlbmRpbmciOiBmYWxzZQogICB9LAotICAiZGlzcGxheUl0ZW1zIjogW10s
Ci0gICJzaGlwcGluZ09wdGlvbnMiOiBbXSwKICAgIm1vZGlmaWVycyI6IFtdCiB9CiBJTlRFUk5B
TCBQUk9QRVJUWTogb3B0aW9uczogewpAQCAtMTIwLDggKzExOCw2IEBAIElOVEVSTkFMIFBST1BF
UlRZOiBkZXRhaWxzOiB7CiAgICAgfSwKICAgICAicGVuZGluZyI6IGZhbHNlCiAgIH0sCi0gICJk
aXNwbGF5SXRlbXMiOiBbXSwKLSAgInNoaXBwaW5nT3B0aW9ucyI6IFtdLAogICAibW9kaWZpZXJz
IjogW10KIH0KIElOVEVSTkFMIFBST1BFUlRZOiBvcHRpb25zOiB7CkBAIC0xNDQsOCArMTQwLDYg
QEAgSU5URVJOQUwgUFJPUEVSVFk6IGRldGFpbHM6IHsKICAgICB9LAogICAgICJwZW5kaW5nIjog
ZmFsc2UKICAgfSwKLSAgImRpc3BsYXlJdGVtcyI6IFtdLAotICAic2hpcHBpbmdPcHRpb25zIjog
W10sCiAgICJtb2RpZmllcnMiOiBbXQogfQogSU5URVJOQUwgUFJPUEVSVFk6IG9wdGlvbnM6IHsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvdXBkYXRl
V2l0aC1kaXNwbGF5SXRlbXMuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9wYXltZW50cmVxdWVzdC91cGRhdGVXaXRoLWRpc3BsYXlJdGVtcy5odHRwcy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTU2ZWYwZjk3OTgzNjQ3MzEyYzAxMjQyMjVkODVlZTg3ZmRmYWI0
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVl
c3QvdXBkYXRlV2l0aC1kaXNwbGF5SXRlbXMuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MyBAQAorCitQQVNTIENhbGxpbmcgYHVwZGF0ZVdpdGhgIHdpdGggYSBuZXcgYGRpc3BsYXlJdGVt
c2Agc2hvdWxkIG5vdCB1cGRhdGUgYW55IG90aGVyIHZhbHVlcy4KKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC91cGRhdGVXaXRoLWRpc3BsYXlJdGVt
cy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC91cGRh
dGVXaXRoLWRpc3BsYXlJdGVtcy5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlNGM0NjkxMDRlMjcw
YjA1NmMyMjZhZmE5OWUxM2NjOGIxNDYyOWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3VwZGF0ZVdpdGgtZGlzcGxheUl0ZW1zLmh0dHBz
Lmh0bWwKQEAgLTAsMCArMSw2MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8dGl0bGU+VGVzdHMgZm9yIHByb3ZpZGluZyBgZGlzcGxheUl0ZW1zYCB0byBgUGF5
bWVudFJlcXVlc3RVcGRhdGVFdmVudC5wcm90b3R5cGUudXBkYXRlV2l0aGAuPC90aXRsZT4KKzxz
Y3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3BheW1lbnQtcmVxdWVzdC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8Ym9keT4KKzxz
Y3JpcHQ+CitzZXR1cCh7IGV4cGxpY2l0X2RvbmU6IHRydWUsIGV4cGxpY2l0X3RpbWVvdXQ6IHRy
dWUgfSk7CisKK2NvbnN0IG1ldGhvZCA9IHZhbGlkUGF5bWVudE1ldGhvZCgpOworCitjb25zdCBk
ZXRhaWxzSW5pdCA9IHZhbGlkUGF5bWVudERldGFpbHMoKTsKKworY29uc3QgZGV0YWlsc1VwZGF0
ZSA9IHsKKyAgICBkaXNwbGF5SXRlbXM6IFsKKyAgICAgICAgeworICAgICAgICAgICAgbGFiZWw6
ICdJdGVtIDEnLAorICAgICAgICAgICAgYW1vdW50OiB7CisgICAgICAgICAgICAgICAgY3VycmVu
Y3k6ICdVU0QnLAorICAgICAgICAgICAgICAgIHZhbHVlOiAnNS4wMCcsCisgICAgICAgICAgICB9
LAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICBsYWJlbDogJ0l0ZW0gMicsCisg
ICAgICAgICAgICBhbW91bnQ6IHsKKyAgICAgICAgICAgICAgICBjdXJyZW5jeTogJ1VTRCcsCisg
ICAgICAgICAgICAgICAgdmFsdWU6ICcxNS4wMCcsCisgICAgICAgICAgICB9LAorICAgICAgICB9
LAorICAgIF0sCit9OworCit1c2VyX2FjdGl2YXRpb25fdGVzdChhc3luYyAodGVzdCkgPT4gewor
ICAgIGxldCByZXF1ZXN0ID0gbmV3IFBheW1lbnRSZXF1ZXN0KFttZXRob2RdLCBkZXRhaWxzSW5p
dCk7CisgICAgcmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKCJtZXJjaGFudHZhbGlkYXRpb24iLCAo
ZXZlbnQpID0+IHsKKyAgICAgICAgZXZlbnQuY29tcGxldGUoeyB9KTsKKyAgICB9KTsKKyAgICBy
ZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoInNoaXBwaW5nYWRkcmVzc2NoYW5nZSIsIChldmVudCkg
PT4geworICAgICAgICBldmVudC51cGRhdGVXaXRoKGRldGFpbHNVcGRhdGUpOworICAgICAgICBp
bnRlcm5hbHMubW9ja1BheW1lbnRDb29yZGluYXRvci5hY2NlcHRQYXltZW50KCk7CisgICAgfSk7
CisKKyAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCByZXF1ZXN0LnNob3coKTsKKworICAgIGFzc2Vy
dF9lcXVhbHMoaW50ZXJuYWxzLm1vY2tQYXltZW50Q29vcmRpbmF0b3IudG90YWwubGFiZWwsIGRl
dGFpbHNJbml0LnRvdGFsLmxhYmVsLCAibGFiZWwgb2YgdG90YWwgc2hvdWxkIG5vdCBjaGFuZ2Ui
KTsKKyAgICBhc3NlcnRfZXF1YWxzKGludGVybmFscy5tb2NrUGF5bWVudENvb3JkaW5hdG9yLnRv
dGFsLmFtb3VudCwgZGV0YWlsc0luaXQudG90YWwuYW1vdW50LnZhbHVlLCAidmFsdWUgb2YgdG90
YWwgc2hvdWxkIG5vdCBjaGFuZ2UiKTsKKyAgICBhc3NlcnRfZXF1YWxzKGludGVybmFscy5tb2Nr
UGF5bWVudENvb3JkaW5hdG9yLmxpbmVJdGVtcy5sZW5ndGgsIGRldGFpbHNVcGRhdGUuZGlzcGxh
eUl0ZW1zLmxlbmd0aCwgIm51bWJlciBvZiBkaXNwbGF5IGl0ZW1zIHNob3VsZCBjaGFuZ2UiKTsK
KyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRldGFpbHNVcGRhdGUuZGlzcGxheUl0ZW1zLmxlbmd0
aDsgKytpKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMoaW50ZXJuYWxzLm1vY2tQYXltZW50Q29v
cmRpbmF0b3IubGluZUl0ZW1zW2ldLmxhYmVsLCBkZXRhaWxzVXBkYXRlLmRpc3BsYXlJdGVtc1tp
XS5sYWJlbCwgYGRpc3BsYXkgaXRlbSAke2l9IGxhYmVsIHNob3VsZCBjaGFuZ2VgKTsKKyAgICAg
ICAgYXNzZXJ0X2VxdWFscyhpbnRlcm5hbHMubW9ja1BheW1lbnRDb29yZGluYXRvci5saW5lSXRl
bXNbaV0uYW1vdW50LCBkZXRhaWxzVXBkYXRlLmRpc3BsYXlJdGVtc1tpXS5hbW91bnQudmFsdWUs
IGBkaXNwbGF5IGl0ZW0gJHtpfSB2YWx1ZSBzaG91bGQgY2hhbmdlYCk7CisgICAgfQorCisgICAg
YXdhaXQgcmVzcG9uc2UuY29tcGxldGUoInN1Y2Nlc3MiKTsKK30sICJDYWxsaW5nIGB1cGRhdGVX
aXRoYCB3aXRoIGEgbmV3IGBkaXNwbGF5SXRlbXNgIHNob3VsZCBub3QgdXBkYXRlIGFueSBvdGhl
ciB2YWx1ZXMuIik7CisKK2RvbmUoKTsKKzwvc2NyaXB0PgorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3VwZGF0ZVdpdGgtbW9kaWZpZXJzLmh0dHBz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvdXBk
YXRlV2l0aC1tb2RpZmllcnMuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwMzBmZTM0
ODY4YTBmZWVhYTBmMWZiZWJhOWY3ZDQ1YjIyODZmOGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3VwZGF0ZVdpdGgtbW9kaWZpZXJzLmh0
dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBDYWxsaW5nIGB1cGRhdGVX
aXRoYCB3aXRoIGEgbmV3IGBtb2RpZmllcnNgIHNob3VsZCBub3QgdXBkYXRlIGFueSBvdGhlciB2
YWx1ZXMuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVl
c3QvdXBkYXRlV2l0aC1tb2RpZmllcnMuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcGF5bWVudHJlcXVlc3QvdXBkYXRlV2l0aC1tb2RpZmllcnMuaHR0cHMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43OWEwZWIwMDRlYWZjZjgxODk3NDNiOWQzZjEyYzFmNjRiOTA4ZDVhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC91cGRhdGVXaXRo
LW1vZGlmaWVycy5odHRwcy5odG1sCkBAIC0wLDAgKzEsOTIgQEAKKzwhRE9DVFlQRSBodG1sPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPlRlc3RzIGZvciBwcm92aWRpbmcgYG1vZGlm
aWVyc2AgdG8gYFBheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQucHJvdG90eXBlLnVwZGF0ZVdpdGhg
LjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy9wYXltZW50LXJlcXVlc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgorPGJvZHk+Cis8c2NyaXB0Pgorc2V0dXAoeyBleHBsaWNpdF9kb25lOiB0cnVlLCBleHBsaWNp
dF90aW1lb3V0OiB0cnVlIH0pOworCitjb25zdCBtZXRob2QgPSB2YWxpZFBheW1lbnRNZXRob2Qo
KTsKKworY29uc3QgZGV0YWlsc0luaXQgPSB2YWxpZFBheW1lbnREZXRhaWxzKCk7CitkZXRhaWxz
SW5pdC5tb2RpZmllcnMgPSBbCisgICAgeworICAgICAgICBzdXBwb3J0ZWRNZXRob2RzOiBtZXRo
b2Quc3VwcG9ydGVkTWV0aG9kcywKKyAgICAgICAgdG90YWw6IHsKKyAgICAgICAgICAgIGxhYmVs
OiAiVG90YWxNb2RpZmllciIsCisgICAgICAgICAgICBhbW91bnQ6IHtjdXJyZW5jeTogIlVTRCIs
IHZhbHVlOiAiMjAuMDAifSwKKyAgICAgICAgfSwKKyAgICAgICAgYWRkaXRpb25hbERpc3BsYXlJ
dGVtczogWworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGxhYmVsOiAiQWRkaXRpb25h
bERpc3BsYXlJdGVtIiwKKyAgICAgICAgICAgICAgICBhbW91bnQ6IHsKKyAgICAgICAgICAgICAg
ICAgICAgY3VycmVuY3k6ICJVU0QiLAorICAgICAgICAgICAgICAgICAgICB2YWx1ZTogIjI1LjAw
IiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgfSwKKyAgICAgICAgXSwKKyAgICAg
ICAgZGF0YTogeworICAgICAgICAgICAgcGF5bWVudE1ldGhvZFR5cGU6ICJjcmVkaXQiLAorICAg
ICAgICB9LAorICAgIH0sCitdOworCitjb25zdCBkZXRhaWxzVXBkYXRlID0geworICAgIG1vZGlm
aWVyczogWworICAgICAgICB7CisgICAgICAgICAgICBzdXBwb3J0ZWRNZXRob2RzOiBtZXRob2Qu
c3VwcG9ydGVkTWV0aG9kcywKKyAgICAgICAgICAgIHRvdGFsOiB7CisgICAgICAgICAgICAgICAg
bGFiZWw6ICJOZXdUb3RhbE1vZGlmaWVyIiwKKyAgICAgICAgICAgICAgICBhbW91bnQ6IHtjdXJy
ZW5jeTogIlVTRCIsIHZhbHVlOiAiMzAuMDAifSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICBhZGRpdGlvbmFsRGlzcGxheUl0ZW1zOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBsYWJlbDogIk5ld0FkZGl0aW9uYWxEaXNwbGF5SXRlbSIsCisgICAgICAgICAg
ICAgICAgICAgIGFtb3VudDogeworICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVuY3k6ICJV
U0QiLAorICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICIzNS4wMCIsCisgICAgICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIF0sCisgICAgICAg
ICAgICBkYXRhOiB7CisgICAgICAgICAgICAgICAgcGF5bWVudE1ldGhvZFR5cGU6ICJjcmVkaXQi
LAorICAgICAgICAgICAgfSwKKyAgICAgICAgfSwKKyAgICBdLAorfTsKKwordXNlcl9hY3RpdmF0
aW9uX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBsZXQgcmVxdWVzdCA9IG5ldyBQYXltZW50
UmVxdWVzdChbbWV0aG9kXSwgZGV0YWlsc0luaXQpOworICAgIHJlcXVlc3QuYWRkRXZlbnRMaXN0
ZW5lcigibWVyY2hhbnR2YWxpZGF0aW9uIiwgKGV2ZW50KSA9PiB7CisgICAgICAgIGV2ZW50LmNv
bXBsZXRlKHsgfSk7CisgICAgfSk7CisgICAgcmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKCJwYXlt
ZW50bWV0aG9kY2hhbmdlIiwgKGV2ZW50KSA9PiB7CisgICAgICAgIGV2ZW50LnVwZGF0ZVdpdGgo
ZGV0YWlsc1VwZGF0ZSk7CisgICAgICAgIGludGVybmFscy5tb2NrUGF5bWVudENvb3JkaW5hdG9y
LmFjY2VwdFBheW1lbnQoKTsKKyAgICB9KTsKKworICAgIGxldCBzaG93UHJvbWlzZSA9IHJlcXVl
c3Quc2hvdygpOworICAgIGludGVybmFscy5tb2NrUGF5bWVudENvb3JkaW5hdG9yLmNoYW5nZVBh
eW1lbnRNZXRob2Qoe3R5cGU6ICJjcmVkaXQifSk7CisgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQg
c2hvd1Byb21pc2U7CisKKyAgICBhc3NlcnRfZXF1YWxzKGludGVybmFscy5tb2NrUGF5bWVudENv
b3JkaW5hdG9yLnRvdGFsLmxhYmVsLCBkZXRhaWxzVXBkYXRlLm1vZGlmaWVyc1swXS50b3RhbC5s
YWJlbCwgImxhYmVsIG9mIG1vZGlmaWVyIHRvdGFsIHNob3VsZCBjaGFuZ2UiKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKGludGVybmFscy5tb2NrUGF5bWVudENvb3JkaW5hdG9yLnRvdGFsLmFtb3VudCwg
ZGV0YWlsc1VwZGF0ZS5tb2RpZmllcnNbMF0udG90YWwuYW1vdW50LnZhbHVlLCAidmFsdWUgb2Yg
bW9kaWZpZXIgdG90YWwgc2hvdWxkIGNoYW5nZSIpOworICAgIGFzc2VydF9lcXVhbHMoaW50ZXJu
YWxzLm1vY2tQYXltZW50Q29vcmRpbmF0b3IubGluZUl0ZW1zLmxlbmd0aCwgZGV0YWlsc0luaXQu
ZGlzcGxheUl0ZW1zLmxlbmd0aCArIGRldGFpbHNVcGRhdGUubW9kaWZpZXJzWzBdLmFkZGl0aW9u
YWxEaXNwbGF5SXRlbXMubGVuZ3RoLCAibnVtYmVyIG9mIGRpc3BsYXkgaXRlbXMgc2hvdWxkIGNo
YW5nZSIpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGV0YWlsc0luaXQuZGlzcGxheUl0ZW1z
Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMoaW50ZXJuYWxzLm1vY2tQYXlt
ZW50Q29vcmRpbmF0b3IubGluZUl0ZW1zW2ldLmxhYmVsLCBkZXRhaWxzSW5pdC5kaXNwbGF5SXRl
bXNbaV0ubGFiZWwsIGBkaXNwbGF5IGl0ZW0gJHtpfSBsYWJlbCBzaG91bGQgbm90IGNoYW5nZWAp
OworICAgICAgICBhc3NlcnRfZXF1YWxzKGludGVybmFscy5tb2NrUGF5bWVudENvb3JkaW5hdG9y
LmxpbmVJdGVtc1tpXS5hbW91bnQsIGRldGFpbHNJbml0LmRpc3BsYXlJdGVtc1tpXS5hbW91bnQu
dmFsdWUsIGBkaXNwbGF5IGl0ZW0gJHtpfSB2YWx1ZSBzaG91bGQgbm90IGNoYW5nZWApOworICAg
IH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRldGFpbHNVcGRhdGUubW9kaWZpZXJzWzBdLmFk
ZGl0aW9uYWxEaXNwbGF5SXRlbXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFs
cyhpbnRlcm5hbHMubW9ja1BheW1lbnRDb29yZGluYXRvci5saW5lSXRlbXNbaSArIGRldGFpbHNJ
bml0LmRpc3BsYXlJdGVtcy5sZW5ndGhdLmxhYmVsLCBkZXRhaWxzVXBkYXRlLm1vZGlmaWVyc1sw
XS5hZGRpdGlvbmFsRGlzcGxheUl0ZW1zW2ldLmxhYmVsLCBgbW9kaWZpZXIgYWRkaXRpb25hbCBk
aXNwbGF5IGl0ZW0gJHtpfSBsYWJlbCBzaG91bGQgY2hhbmdlYCk7CisgICAgICAgIGFzc2VydF9l
cXVhbHMoaW50ZXJuYWxzLm1vY2tQYXltZW50Q29vcmRpbmF0b3IubGluZUl0ZW1zW2kgKyBkZXRh
aWxzSW5pdC5kaXNwbGF5SXRlbXMubGVuZ3RoXS5hbW91bnQsIGRldGFpbHNVcGRhdGUubW9kaWZp
ZXJzWzBdLmFkZGl0aW9uYWxEaXNwbGF5SXRlbXNbaV0uYW1vdW50LnZhbHVlLCBgbW9kaWZpZXIg
YWRkaXRpb25hbCBkaXNwbGF5IGl0ZW0gJHtpfSB2YWx1ZSBzaG91bGQgY2hhbmdlYCk7CisgICAg
fQorCisgICAgYXdhaXQgcmVzcG9uc2UuY29tcGxldGUoInN1Y2Nlc3MiKTsKK30sICJDYWxsaW5n
IGB1cGRhdGVXaXRoYCB3aXRoIGEgbmV3IGBtb2RpZmllcnNgIHNob3VsZCBub3QgdXBkYXRlIGFu
eSBvdGhlciB2YWx1ZXMuIik7CisKK2RvbmUoKTsKKzwvc2NyaXB0PgorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3VwZGF0ZVdpdGgtc2hpcHBpbmdP
cHRpb25zLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVu
dHJlcXVlc3QvdXBkYXRlV2l0aC1zaGlwcGluZ09wdGlvbnMuaHR0cHMtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmM5NDA4Zjc2OTg3MzFlZWYxODkyYzAyYjdmOGEyNDA0M2IzZTgzYWYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3VwZGF0
ZVdpdGgtc2hpcHBpbmdPcHRpb25zLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAK
KworUEFTUyBDYWxsaW5nIGB1cGRhdGVXaXRoYCB3aXRoIGEgbmV3IGBzaGlwcGluZ09wdGlvbnNg
IHdpdGhvdXQgYHJlcXVlc3RTaGlwcGluZ2Agc2hvdWxkIG5vdCB1cGRhdGUgYW55IHZhbHVlcy4K
K1BBU1MgQ2FsbGluZyBgdXBkYXRlV2l0aGAgd2l0aCBhIG5ldyBgc2hpcHBpbmdPcHRpb25zYCBz
aG91bGQgbm90IHVwZGF0ZSBhbnkgb3RoZXIgdmFsdWVzLgorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3VwZGF0ZVdpdGgtc2hpcHBpbmdPcHRpb25z
Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3VwZGF0
ZVdpdGgtc2hpcHBpbmdPcHRpb25zLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGE2ZDY4YTM5NzY2
YzY5OTc1ZDFhZDQzOTYzOTliMTBkY2QwMTdhYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvdXBkYXRlV2l0aC1zaGlwcGluZ09wdGlvbnMu
aHR0cHMuaHRtbApAQCAtMCwwICsxLDEwOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8dGl0bGU+VGVzdHMgZm9yIHByb3ZpZGluZyBgc2hpcHBpbmdPcHRpb25z
YCB0byBgUGF5bWVudFJlcXVlc3RVcGRhdGVFdmVudC5wcm90b3R5cGUudXBkYXRlV2l0aGAuPC90
aXRsZT4KKzxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3BheW1lbnQtcmVxdWVzdC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8
Ym9keT4KKzxzY3JpcHQ+CitzZXR1cCh7IGV4cGxpY2l0X2RvbmU6IHRydWUsIGV4cGxpY2l0X3Rp
bWVvdXQ6IHRydWUgfSk7CisKK2NvbnN0IG1ldGhvZCA9IHZhbGlkUGF5bWVudE1ldGhvZCgpOwor
Citjb25zdCBkZXRhaWxzSW5pdCA9IHZhbGlkUGF5bWVudERldGFpbHMoKTsKK2RldGFpbHNJbml0
LnNoaXBwaW5nT3B0aW9ucyA9IFsKKyAgICB7CisgICAgICAgIGlkOiAic2hpcHBpbmdJZDEiLAor
ICAgICAgICBsYWJlbDogIlNoaXBwaW5nIExhYmVsIDEiLAorICAgICAgICBhbW91bnQ6IHtjdXJy
ZW5jeTogIlVTRCIsIHZhbHVlOiAiNS4wMCJ9LAorICAgICAgICBzZWxlY3RlZDogdHJ1ZSwKKyAg
ICB9LCB7CisgICAgICAgIGlkOiAic2hpcHBpbmdJZDIiLAorICAgICAgICBsYWJlbDogIlNoaXBw
aW5nIExhYmVsIDIiLAorICAgICAgICBhbW91bnQ6IHtjdXJyZW5jeTogIlVTRCIsIHZhbHVlOiAi
MTAuMDAifSwKKyAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLAorICAgIH0sCitdOworCitjb25zdCBk
ZXRhaWxzVXBkYXRlID0geworICAgIHNoaXBwaW5nT3B0aW9uczogWworICAgICAgICB7CisgICAg
ICAgICAgICBpZDogInNoaXBwaW5nSWQzIiwKKyAgICAgICAgICAgIGxhYmVsOiAiU2hpcHBpbmcg
TGFiZWwgMyIsCisgICAgICAgICAgICBhbW91bnQ6IHtjdXJyZW5jeTogIlVTRCIsIHZhbHVlOiAi
MTUuMDAifSwKKyAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSwKKyAgICAgICAgfSwgeworICAg
ICAgICAgICAgaWQ6ICJzaGlwcGluZ0lkNCIsCisgICAgICAgICAgICBsYWJlbDogIlNoaXBwaW5n
IExhYmVsIDQiLAorICAgICAgICAgICAgYW1vdW50OiB7Y3VycmVuY3k6ICJVU0QiLCB2YWx1ZTog
IjIwLjAwIn0sCisgICAgICAgICAgICBzZWxlY3RlZDogdHJ1ZSwKKyAgICAgICAgfSwKKyAgICBd
LAorfTsKKwordXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBsZXQg
cmVxdWVzdCA9IG5ldyBQYXltZW50UmVxdWVzdChbbWV0aG9kXSwgZGV0YWlsc0luaXQsIHtyZXF1
ZXN0U2hpcHBpbmc6IGZhbHNlfSk7CisgICAgcmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKCJtZXJj
aGFudHZhbGlkYXRpb24iLCAoZXZlbnQpID0+IHsKKyAgICAgICAgZXZlbnQuY29tcGxldGUoeyB9
KTsKKyAgICB9KTsKKyAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoInNoaXBwaW5nYWRkcmVz
c2NoYW5nZSIsIChldmVudCkgPT4geworICAgICAgICBldmVudC51cGRhdGVXaXRoKGRldGFpbHNV
cGRhdGUpOworICAgICAgICBpbnRlcm5hbHMubW9ja1BheW1lbnRDb29yZGluYXRvci5hY2NlcHRQ
YXltZW50KCk7CisgICAgfSk7CisKKyAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCByZXF1ZXN0LnNo
b3coKTsKKworICAgIGFzc2VydF9lcXVhbHMoaW50ZXJuYWxzLm1vY2tQYXltZW50Q29vcmRpbmF0
b3IudG90YWwubGFiZWwsIGRldGFpbHNJbml0LnRvdGFsLmxhYmVsLCAibGFiZWwgb2YgdG90YWwg
c2hvdWxkIG5vdCBjaGFuZ2UiKTsKKyAgICBhc3NlcnRfZXF1YWxzKGludGVybmFscy5tb2NrUGF5
bWVudENvb3JkaW5hdG9yLnRvdGFsLmFtb3VudCwgZGV0YWlsc0luaXQudG90YWwuYW1vdW50LnZh
bHVlLCAidmFsdWUgb2YgdG90YWwgc2hvdWxkIG5vdCBjaGFuZ2UiKTsKKyAgICBhc3NlcnRfZXF1
YWxzKGludGVybmFscy5tb2NrUGF5bWVudENvb3JkaW5hdG9yLmxpbmVJdGVtcy5sZW5ndGgsIGRl
dGFpbHNJbml0LmRpc3BsYXlJdGVtcy5sZW5ndGgsICJudW1iZXIgb2YgZGlzcGxheSBpdGVtcyBz
aG91bGQgbm90IGNoYW5nZSIpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGV0YWlsc0luaXQu
ZGlzcGxheUl0ZW1zLmxlbmd0aDsgKytpKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMoaW50ZXJu
YWxzLm1vY2tQYXltZW50Q29vcmRpbmF0b3IubGluZUl0ZW1zW2ldLmxhYmVsLCBkZXRhaWxzSW5p
dC5kaXNwbGF5SXRlbXNbaV0ubGFiZWwsIGBkaXNwbGF5IGl0ZW0gJHtpfSBsYWJlbCBzaG91bGQg
bm90IGNoYW5nZWApOworICAgICAgICBhc3NlcnRfZXF1YWxzKGludGVybmFscy5tb2NrUGF5bWVu
dENvb3JkaW5hdG9yLmxpbmVJdGVtc1tpXS5hbW91bnQsIGRldGFpbHNJbml0LmRpc3BsYXlJdGVt
c1tpXS5hbW91bnQudmFsdWUsIGBkaXNwbGF5IGl0ZW0gJHtpfSB2YWx1ZSBzaG91bGQgbm90IGNo
YW5nZWApOworICAgIH0KKyAgICBhc3NlcnRfZXF1YWxzKGludGVybmFscy5tb2NrUGF5bWVudENv
b3JkaW5hdG9yLnNoaXBwaW5nTWV0aG9kcy5sZW5ndGgsIGRldGFpbHNJbml0LnNoaXBwaW5nT3B0
aW9ucy5sZW5ndGgsICJudW1iZXIgb2Ygc2hpcHBpbmcgb3B0aW9ucyBzaG91bGQgbm90IGNoYW5n
ZSIpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGV0YWlsc0luaXQuc2hpcHBpbmdPcHRpb25z
Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMoaW50ZXJuYWxzLm1vY2tQYXlt
ZW50Q29vcmRpbmF0b3Iuc2hpcHBpbmdNZXRob2RzW2ldLmlkZW50aWZpZXIsIGRldGFpbHNJbml0
LnNoaXBwaW5nT3B0aW9uc1tpXS5pZCwgYHNoaXBwaW5nIG9wdGlvbiAke2l9IGlkIHNob3VsZCBu
b3QgY2hhbmdlYCk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoaW50ZXJuYWxzLm1vY2tQYXltZW50
Q29vcmRpbmF0b3Iuc2hpcHBpbmdNZXRob2RzW2ldLmxhYmVsLCBkZXRhaWxzSW5pdC5zaGlwcGlu
Z09wdGlvbnNbaV0ubGFiZWwsIGBzaGlwcGluZyBvcHRpb24gJHtpfSBsYWJlbCBzaG91bGQgbm90
IGNoYW5nZWApOworICAgICAgICBhc3NlcnRfZXF1YWxzKGludGVybmFscy5tb2NrUGF5bWVudENv
b3JkaW5hdG9yLnNoaXBwaW5nTWV0aG9kc1tpXS5hbW91bnQsIGRldGFpbHNJbml0LnNoaXBwaW5n
T3B0aW9uc1tpXS5hbW91bnQudmFsdWUsIGBzaGlwcGluZyBvcHRpb24gJHtpfSBhbW91bnQgc2hv
dWxkIG5vdCBjaGFuZ2VgKTsKKyAgICB9CisgICAgYXNzZXJ0X2VxdWFscyhyZXF1ZXN0LnNoaXBw
aW5nT3B0aW9uLCBudWxsLCAic2VsZWN0ZWQgc2hpcHBpbmcgb3B0aW9uIHNob3VsZCBub3QgYmUg
ZXhwb3NlZCBvbiB0aGUgcmVxdWVzdCIpOworICAgIGFzc2VydF9lcXVhbHMocmVzcG9uc2Uuc2hp
cHBpbmdPcHRpb24sIG51bGwsICJzZWxlY3RlZCBzaGlwcGluZyBvcHRpb24gc2hvdWxkIG5vdCBi
ZSBleHBvc2VkIG9uIHRoZSByZXNwb25zZSIpOworCisgICAgYXdhaXQgcmVzcG9uc2UuY29tcGxl
dGUoInN1Y2Nlc3MiKTsKK30sICJDYWxsaW5nIGB1cGRhdGVXaXRoYCB3aXRoIGEgbmV3IGBzaGlw
cGluZ09wdGlvbnNgIHdpdGhvdXQgYHJlcXVlc3RTaGlwcGluZ2Agc2hvdWxkIG5vdCB1cGRhdGUg
YW55IHZhbHVlcy4iKTsKKwordXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsK
KyAgICBsZXQgcmVxdWVzdCA9IG5ldyBQYXltZW50UmVxdWVzdChbbWV0aG9kXSwgZGV0YWlsc0lu
aXQsIHtyZXF1ZXN0U2hpcHBpbmc6IHRydWV9KTsKKyAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVu
ZXIoIm1lcmNoYW50dmFsaWRhdGlvbiIsIChldmVudCkgPT4geworICAgICAgICBldmVudC5jb21w
bGV0ZSh7IH0pOworICAgIH0pOworICAgIHJlcXVlc3QuYWRkRXZlbnRMaXN0ZW5lcigic2hpcHBp
bmdhZGRyZXNzY2hhbmdlIiwgKGV2ZW50KSA9PiB7CisgICAgICAgIGV2ZW50LnVwZGF0ZVdpdGgo
ZGV0YWlsc1VwZGF0ZSk7CisgICAgICAgIGludGVybmFscy5tb2NrUGF5bWVudENvb3JkaW5hdG9y
LmFjY2VwdFBheW1lbnQoKTsKKyAgICB9KTsKKworICAgIGxldCByZXNwb25zZSA9IGF3YWl0IHJl
cXVlc3Quc2hvdygpOworCisgICAgYXNzZXJ0X2VxdWFscyhpbnRlcm5hbHMubW9ja1BheW1lbnRD
b29yZGluYXRvci50b3RhbC5sYWJlbCwgZGV0YWlsc0luaXQudG90YWwubGFiZWwsICJsYWJlbCBv
ZiB0b3RhbCBzaG91bGQgbm90IGNoYW5nZSIpOworICAgIGFzc2VydF9lcXVhbHMoaW50ZXJuYWxz
Lm1vY2tQYXltZW50Q29vcmRpbmF0b3IudG90YWwuYW1vdW50LCBkZXRhaWxzSW5pdC50b3RhbC5h
bW91bnQudmFsdWUsICJ2YWx1ZSBvZiB0b3RhbCBzaG91bGQgbm90IGNoYW5nZSIpOworICAgIGFz
c2VydF9lcXVhbHMoaW50ZXJuYWxzLm1vY2tQYXltZW50Q29vcmRpbmF0b3IubGluZUl0ZW1zLmxl
bmd0aCwgZGV0YWlsc0luaXQuZGlzcGxheUl0ZW1zLmxlbmd0aCwgIm51bWJlciBvZiBkaXNwbGF5
IGl0ZW1zIHNob3VsZCBub3QgY2hhbmdlIik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZXRh
aWxzSW5pdC5kaXNwbGF5SXRlbXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFs
cyhpbnRlcm5hbHMubW9ja1BheW1lbnRDb29yZGluYXRvci5saW5lSXRlbXNbaV0ubGFiZWwsIGRl
dGFpbHNJbml0LmRpc3BsYXlJdGVtc1tpXS5sYWJlbCwgYGRpc3BsYXkgaXRlbSAke2l9IGxhYmVs
IHNob3VsZCBub3QgY2hhbmdlYCk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoaW50ZXJuYWxzLm1v
Y2tQYXltZW50Q29vcmRpbmF0b3IubGluZUl0ZW1zW2ldLmFtb3VudCwgZGV0YWlsc0luaXQuZGlz
cGxheUl0ZW1zW2ldLmFtb3VudC52YWx1ZSwgYGRpc3BsYXkgaXRlbSAke2l9IHZhbHVlIHNob3Vs
ZCBub3QgY2hhbmdlYCk7CisgICAgfQorICAgIGFzc2VydF9lcXVhbHMoaW50ZXJuYWxzLm1vY2tQ
YXltZW50Q29vcmRpbmF0b3Iuc2hpcHBpbmdNZXRob2RzLmxlbmd0aCwgZGV0YWlsc1VwZGF0ZS5z
aGlwcGluZ09wdGlvbnMubGVuZ3RoLCAibnVtYmVyIG9mIHNoaXBwaW5nIG9wdGlvbnMgc2hvdWxk
IGNoYW5nZSIpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGV0YWlsc1VwZGF0ZS5zaGlwcGlu
Z09wdGlvbnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhpbnRlcm5hbHMu
bW9ja1BheW1lbnRDb29yZGluYXRvci5zaGlwcGluZ01ldGhvZHNbaV0uaWRlbnRpZmllciwgZGV0
YWlsc1VwZGF0ZS5zaGlwcGluZ09wdGlvbnNbaV0uaWQsIGBzaGlwcGluZyBvcHRpb24gJHtpfSBp
ZCBzaG91bGQgY2hhbmdlYCk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoaW50ZXJuYWxzLm1vY2tQ
YXltZW50Q29vcmRpbmF0b3Iuc2hpcHBpbmdNZXRob2RzW2ldLmxhYmVsLCBkZXRhaWxzVXBkYXRl
LnNoaXBwaW5nT3B0aW9uc1tpXS5sYWJlbCwgYHNoaXBwaW5nIG9wdGlvbiAke2l9IGxhYmVsIHNo
b3VsZCBjaGFuZ2VgKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhpbnRlcm5hbHMubW9ja1BheW1l
bnRDb29yZGluYXRvci5zaGlwcGluZ01ldGhvZHNbaV0uYW1vdW50LCBkZXRhaWxzVXBkYXRlLnNo
aXBwaW5nT3B0aW9uc1tpXS5hbW91bnQudmFsdWUsIGBzaGlwcGluZyBvcHRpb24gJHtpfSBhbW91
bnQgc2hvdWxkIGNoYW5nZWApOworICAgIH0KKyAgICBhc3NlcnRfZXF1YWxzKHJlcXVlc3Quc2hp
cHBpbmdPcHRpb24sIGRldGFpbHNVcGRhdGUuc2hpcHBpbmdPcHRpb25zLmZpbmQoKHNoaXBwaW5n
T3B0aW9uKSA9PiBzaGlwcGluZ09wdGlvbi5zZWxlY3RlZCkuaWQsICJzZWxlY3RlZCBzaGlwcGlu
ZyBvcHRpb24gc2hvdWxkIGNoYW5nZSIpOworICAgIGFzc2VydF9lcXVhbHMocmVzcG9uc2Uuc2hp
cHBpbmdPcHRpb24sIHJlcXVlc3Quc2hpcHBpbmdPcHRpb24sICJzZWxlY3RlZCBzaGlwcGluZyBv
cHRpb24gc2hvdWxkIGFsc28gYmUgZXhwb3NlZCBvbiB0aGUgcmVzcG9uc2UiKTsKKworICAgIGF3
YWl0IHJlc3BvbnNlLmNvbXBsZXRlKCJzdWNjZXNzIik7Cit9LCAiQ2FsbGluZyBgdXBkYXRlV2l0
aGAgd2l0aCBhIG5ldyBgc2hpcHBpbmdPcHRpb25zYCBzaG91bGQgbm90IHVwZGF0ZSBhbnkgb3Ro
ZXIgdmFsdWVzLiIpOworCitkb25lKCk7Cis8L3NjcmlwdD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC91cGRhdGVXaXRoLXRvdGFsLmh0dHBzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvdXBkYXRl
V2l0aC10b3RhbC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWRmMWVmMmNjM2Y2NTc2
ZGUyNjE2OTIxY2M5YTJlZTAyM2RkYTM5YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvdXBkYXRlV2l0aC10b3RhbC5odHRwcy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgQ2FsbGluZyBgdXBkYXRlV2l0aGAgd2l0aCBh
IG5ldyBgdG90YWxgIHNob3VsZCBub3QgdXBkYXRlIGFueSBvdGhlciB2YWx1ZXMuCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvdXBkYXRlV2l0aC10
b3RhbC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC91
cGRhdGVXaXRoLXRvdGFsLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTc1ZDIxODFiYmQyNDczNjE5
OWExODQ3MzRhYmVjZjk3MGFmZDAzNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvdXBkYXRlV2l0aC10b3RhbC5odHRwcy5odG1sCkBAIC0w
LDAgKzEsNTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRp
dGxlPlRlc3RzIGZvciBwcm92aWRpbmcgYHRvdGFsYCB0byBgUGF5bWVudFJlcXVlc3RVcGRhdGVF
dmVudC5wcm90b3R5cGUudXBkYXRlV2l0aGAuPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvanMtdGVz
dC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3BheW1lbnQtcmVxdWVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitzZXR1cCh7IGV4
cGxpY2l0X2RvbmU6IHRydWUsIGV4cGxpY2l0X3RpbWVvdXQ6IHRydWUgfSk7CisKK2NvbnN0IG1l
dGhvZCA9IHZhbGlkUGF5bWVudE1ldGhvZCgpOworCitjb25zdCBkZXRhaWxzSW5pdCA9IHZhbGlk
UGF5bWVudERldGFpbHMoKTsKKworY29uc3QgZGV0YWlsc1VwZGF0ZSA9IHsKKyAgICB0b3RhbDog
eworICAgICAgICBsYWJlbDogIk5ld1RvdGFsIiwKKyAgICAgICAgYW1vdW50OiB7CisgICAgICAg
ICAgICBjdXJyZW5jeTogIlVTRCIsCisgICAgICAgICAgICB2YWx1ZTogIjIwLjAwIiwKKyAgICAg
ICAgfSwKKyAgICB9LAorfTsKKwordXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgKHRlc3QpID0+
IHsKKyAgICBsZXQgcmVxdWVzdCA9IG5ldyBQYXltZW50UmVxdWVzdChbbWV0aG9kXSwgZGV0YWls
c0luaXQpOworICAgIHJlcXVlc3QuYWRkRXZlbnRMaXN0ZW5lcigibWVyY2hhbnR2YWxpZGF0aW9u
IiwgKGV2ZW50KSA9PiB7CisgICAgICAgIGV2ZW50LmNvbXBsZXRlKHsgfSk7CisgICAgfSk7Cisg
ICAgcmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKCJzaGlwcGluZ2FkZHJlc3NjaGFuZ2UiLCAoZXZl
bnQpID0+IHsKKyAgICAgICAgZXZlbnQudXBkYXRlV2l0aChkZXRhaWxzVXBkYXRlKTsKKyAgICAg
ICAgaW50ZXJuYWxzLm1vY2tQYXltZW50Q29vcmRpbmF0b3IuYWNjZXB0UGF5bWVudCgpOworICAg
IH0pOworCisgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgcmVxdWVzdC5zaG93KCk7CisKKyAgICBh
c3NlcnRfZXF1YWxzKGludGVybmFscy5tb2NrUGF5bWVudENvb3JkaW5hdG9yLnRvdGFsLmxhYmVs
LCBkZXRhaWxzVXBkYXRlLnRvdGFsLmxhYmVsLCAibGFiZWwgb2YgdG90YWwgc2hvdWxkIGNoYW5n
ZSIpOworICAgIGFzc2VydF9lcXVhbHMoaW50ZXJuYWxzLm1vY2tQYXltZW50Q29vcmRpbmF0b3Iu
dG90YWwuYW1vdW50LCBkZXRhaWxzVXBkYXRlLnRvdGFsLmFtb3VudC52YWx1ZSwgInZhbHVlIG9m
IHRvdGFsIHNob3VsZCBjaGFuZ2UiKTsKKyAgICBhc3NlcnRfZXF1YWxzKGludGVybmFscy5tb2Nr
UGF5bWVudENvb3JkaW5hdG9yLmxpbmVJdGVtcy5sZW5ndGgsIGRldGFpbHNJbml0LmRpc3BsYXlJ
dGVtcy5sZW5ndGgsICJudW1iZXIgb2YgZGlzcGxheSBpdGVtcyBzaG91bGQgbm90IGNoYW5nZSIp
OworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGV0YWlsc0luaXQuZGlzcGxheUl0ZW1zLmxlbmd0
aDsgKytpKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMoaW50ZXJuYWxzLm1vY2tQYXltZW50Q29v
cmRpbmF0b3IubGluZUl0ZW1zW2ldLmxhYmVsLCBkZXRhaWxzSW5pdC5kaXNwbGF5SXRlbXNbaV0u
bGFiZWwsIGBkaXNwbGF5IGl0ZW0gJHtpfSBsYWJlbCBzaG91bGQgbm90IGNoYW5nZWApOworICAg
ICAgICBhc3NlcnRfZXF1YWxzKGludGVybmFscy5tb2NrUGF5bWVudENvb3JkaW5hdG9yLmxpbmVJ
dGVtc1tpXS5hbW91bnQsIGRldGFpbHNJbml0LmRpc3BsYXlJdGVtc1tpXS5hbW91bnQudmFsdWUs
IGBkaXNwbGF5IGl0ZW0gJHtpfSB2YWx1ZSBzaG91bGQgbm90IGNoYW5nZWApOworICAgIH0KKwor
ICAgIGF3YWl0IHJlc3BvbnNlLmNvbXBsZXRlKCJzdWNjZXNzIik7Cit9LCAiQ2FsbGluZyBgdXBk
YXRlV2l0aGAgd2l0aCBhIG5ldyBgdG90YWxgIHNob3VsZCBub3QgdXBkYXRlIGFueSBvdGhlciB2
YWx1ZXMuIik7CisKK2RvbmUoKTsKKzwvc2NyaXB0PgorCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>