<?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>185877</bug_id>
          
          <creation_ts>2018-05-22 12:25:45 -0700</creation_ts>
          <short_desc>Avoid keeping FormState alive longer than necessary</short_desc>
          <delta_ts>2018-05-23 22:23:07 -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>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>185895</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>realdawei</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1426240</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-05-22 12:25:45 -0700</bug_when>
    <thetext>A number of crash fixes were done to prevent FormState objects from being accessed after their relevant Frames had been destroyed. Unfortunately, this could cause the FormState to persist after the owning Frame had been destroyed, resulting in nullptr dereferences.

This patch does the following:

1. Changes to use WeakPtr&apos;s for FormState objects passed to completion handlers, rather than RetainPtr, since those completion handlers might fire as part of the clean-up process during Frame destruction. This allows us to use the FormState if they are still valid, but gracefully handle cases where a form submission is cancelled in-flight.
2. Removes some extraneous WTFMove() calls being made on bare FormState pointers.
3. Changes the trap from Bug 183704 so that it only fires if the FormState object is being retained more than once.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426242</commentid>
    <comment_count>1</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-05-22 12:26:35 -0700</bug_when>
    <thetext>&lt;rdar://problem/39329219&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426243</commentid>
    <comment_count>2</comment_count>
      <attachid>341006</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-05-22 12:31:31 -0700</bug_when>
    <thetext>Created attachment 341006
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426271</commentid>
    <comment_count>3</comment_count>
      <attachid>341013</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-05-22 13:44:19 -0700</bug_when>
    <thetext>Created attachment 341013
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426272</commentid>
    <comment_count>4</comment_count>
      <attachid>341006</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-05-22 13:45:00 -0700</bug_when>
    <thetext>Comment on attachment 341006
Patch

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

&gt; Source/WebCore/ChangeLog:17
&gt; +           rather than RetainPtr, since those completion handlers might fire as part of

You mean RefPtr. RetainPtr is for objective-C.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426290</commentid>
    <comment_count>5</comment_count>
      <attachid>341019</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-05-22 14:03:15 -0700</bug_when>
    <thetext>Created attachment 341019
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426303</commentid>
    <comment_count>6</comment_count>
      <attachid>341023</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-05-22 14:16:12 -0700</bug_when>
    <thetext>Created attachment 341023
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426338</commentid>
    <comment_count>7</comment_count>
      <attachid>341023</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-22 15:01:40 -0700</bug_when>
    <thetext>Comment on attachment 341023
Patch for landing

Clearing flags on attachment: 341023

Committed r232081: &lt;https://trac.webkit.org/changeset/232081&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426339</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-22 15:01:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426394</commentid>
    <comment_count>9</comment_count>
    <who name="Dawei Fenton (:realdawei)">realdawei</who>
    <bug_when>2018-05-22 16:47:47 -0700</bug_when>
    <thetext>I&apos;ve observed 2 API test failures after this patch was landed.

https://build.webkit.org/builders/Apple%20High%20Sierra%20Release%20WK1%20%28Tests%29/builds/5530/steps/run-api-tests/logs/stdio

Failed

    TestWebKitAPI.WebKit.FormSubmission
        
        /Volumes/Data/slave/highsierra-release/build/Tools/TestWebKitAPI/Tests/WebKitCocoa/_WKInputDelegate.mm:53
        Value of: willSubmitFormValuesCalled
          Actual: false
        Expected: true
        

Timeout

    TestWebKitAPI.WebKit.DuplicateCompletionHandlerCalls</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426408</commentid>
    <comment_count>10</comment_count>
      <attachid>341023</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-05-22 16:57:25 -0700</bug_when>
    <thetext>Comment on attachment 341023
Patch for landing

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

&gt; Source/WebCore/loader/PolicyChecker.cpp:171
&gt; +    m_frame.loader().client().dispatchDecidePolicyForNavigationAction(action, request, didReceiveRedirectResponse, formState, policyDecisionMode, [this, function = WTFMove(function), request = ResourceRequest(request), formState = makeWeakPtr(formState), suggestedFilename = WTFMove(suggestedFilename), blobURLLifetimeExtension = WTFMove(blobURLLifetimeExtension)](PolicyAction policyAction) mutable {

It seems wrong to be that we could loose the FormState during the async policy decision now. We initiated the navigation with a FormState, but then, after the client tells us to go for it, we may not end up using that FormState.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426414</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-22 17:16:19 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 185895</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426491</commentid>
    <comment_count>12</comment_count>
      <attachid>341070</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-05-22 21:54:44 -0700</bug_when>
    <thetext>Created attachment 341070
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426845</commentid>
    <comment_count>13</comment_count>
      <attachid>341166</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-05-23 20:36:10 -0700</bug_when>
    <thetext>Created attachment 341166
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426858</commentid>
    <comment_count>14</comment_count>
      <attachid>341170</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-05-23 21:44:09 -0700</bug_when>
    <thetext>Created attachment 341170
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426867</commentid>
    <comment_count>15</comment_count>
      <attachid>341170</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-23 22:23:05 -0700</bug_when>
    <thetext>Comment on attachment 341170
Patch for landing

Clearing flags on attachment: 341170

Committed r232147: &lt;https://trac.webkit.org/changeset/232147&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426868</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-23 22:23:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341006</attachid>
            <date>2018-05-22 12:31:31 -0700</date>
            <delta_ts>2018-05-22 13:44:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185877-20180522123130.patch</filename>
            <type>text/plain</type>
            <size>22904</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxOTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmY4MjU0YjAxN2VhODc4
ZjkwNzE5M2U0N2ExODNiZDQ4NzhjMTljZS4uZmYzZjZlY2FlNzNjMDRjMDIzNjkwMzM5NmMzN2Vm
NWYyYjE3NzlkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE4LTA1LTIyICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIEF2b2lkIGtlZXBpbmcg
Rm9ybVN0YXRlIGFsaXZlIGxvbmdlciB0aGFuIG5lY2Vzc2FyeQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1ODc3CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zOTMyOTIxOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBIG51bWJlciBvZiBjcmFzaCBmaXhlcyB3ZXJlIGRvbmUgdG8gcHJldmVudCBGb3Jt
U3RhdGUgb2JqZWN0cyBmcm9tIGJlaW5nCisgICAgICAgIGFjY2Vzc2VkIGFmdGVyIHRoZWlyIHJl
bGV2YW50IEZyYW1lcyBoYWQgYmVlbiBkZXN0cm95ZWQuIFVuZm9ydHVuYXRlbHksIHRoaXMKKyAg
ICAgICAgY291bGQgY2F1c2UgdGhlIEZvcm1TdGF0ZSB0byBwZXJzaXN0IGFmdGVyIHRoZSBvd25p
bmcgRnJhbWUgaGFkIGJlZW4KKyAgICAgICAgZGVzdHJveWVkLCByZXN1bHRpbmcgaW4gbnVsbHB0
ciBkZXJlZmVyZW5jZXMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIHRoZSBmb2xsb3dpbmc6
CisKKyAgICAgICAgMS4gQ2hhbmdlcyB0byB1c2UgV2Vha1B0cidzIGZvciBGb3JtU3RhdGUgb2Jq
ZWN0cyBwYXNzZWQgdG8gY29tcGxldGlvbiBoYW5kbGVycywKKyAgICAgICAgICAgcmF0aGVyIHRo
YW4gUmV0YWluUHRyLCBzaW5jZSB0aG9zZSBjb21wbGV0aW9uIGhhbmRsZXJzIG1pZ2h0IGZpcmUg
YXMgcGFydCBvZgorICAgICAgICAgICB0aGUgY2xlYW4tdXAgcHJvY2VzcyBkdXJpbmcgRnJhbWUg
ZGVzdHJ1Y3Rpb24uIFRoaXMgYWxsb3dzIHVzIHRvIHVzZSB0aGUgRm9ybVN0YXRlCisgICAgICAg
ICAgIGlmIHRoZXkgYXJlIHN0aWxsIHZhbGlkLCBidXQgZ3JhY2VmdWxseSBoYW5kbGUgY2FzZXMg
d2hlcmUgYSBmb3JtIHN1Ym1pc3Npb24KKyAgICAgICAgICAgaXMgY2FuY2VsbGVkIGluLWZsaWdo
dC4KKyAgICAgICAgMi4gUmVtb3ZlcyBzb21lIGV4dHJhbmVvdXMgV1RGTW92ZSgpIGNhbGxzIGJl
aW5nIG1hZGUgb24gYmFyZSBGb3JtU3RhdGUgcG9pbnRlcnMuCisgICAgICAgIDMuIENoYW5nZXMg
dGhlIHRyYXAgZnJvbSBCdWcgMTgzNzA0IHNvIHRoYXQgaXQgb25seSBmaXJlcyBpZiB0aGUgRm9y
bVN0YXRlIG9iamVjdAorICAgICAgICAgICBpcyBiZWluZyByZXRhaW5lZCBtb3JlIHRoYW4gb25j
ZS4KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KTogVXBkYXRlIGZvciBuZXcgQ29t
cGxldGlvbkhhbmRsZXIKKyAgICAgICAgc2lnbmF0dXJlLgorICAgICAgICAqIGxvYWRlci9Gb3Jt
U3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybVN0YXRlOjp3aWxsRGV0YWNoUGFnZSk6
IFJldmlzZSB0cmFwIHRvIGNoZWNrIGZvciByZXRhaW4gY291bnRzCisgICAgICAgIGFib3ZlIG9u
ZS4KKyAgICAgICAgKiBsb2FkZXIvRm9ybVN0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpGb3Jt
U3RhdGU6OndlYWtQdHJGYWN0b3J5IGNvbnN0KTogQWRkZWQuCisgICAgICAgICogbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkRnJhbWVS
ZXF1ZXN0KTogUmV2aXNlIHRvIHVzZSBXZWFrUHRyIGZvciBGb3JtU3RhdGUKKyAgICAgICAgcGFz
c2VkIHRvIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6bG9hZFVSTCk6IFVwZGF0ZSBmb3IgbmV3IENvbXBsZXRpb25IYW5kbGVyIHNpZ25hdHVy
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExvYWRlcik6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdCk6IERpdHRvLgor
ICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBv
bGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeSk6IFJldmlzZSB0byB1c2UgV2Vha1B0
ciBmb3IKKyAgICAgICAgRm9ybVN0YXRlIHBhc3NlZCB0byB0aGUgY29tcGxldGlvbiBoYW5kbGVy
LiBSZW1vdmUgc29tZSBleHRyYW5lb3VzIFdURk1vdmUoKQorICAgICAgICBjYWxscyBvbiBiYXJl
IHBvaW50ZXJzLgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOZXdXaW5k
b3dQb2xpY3kpOiBEaXR0by4KKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5oOgorCiAy
MDE4LTA1LTE4ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAg
W1dlYiBBbmltYXRpb25zXSBUdXJuIFdlYiBBbmltYXRpb25zIHdpdGggQ1NTIGludGVncmF0aW9u
IG9uIGZvciB0ZXN0IHJ1bm5lcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCmluZGV4IDJlZjZmNDkyMjBiMzgwNDAzZjQyZTQwOGU5NmIxM2YzMzQ4MGIxZWEuLjk2N2E0
OTM5ODZkMjg4NGU1MDM3OTc1MWRlMDI0ZTU1MTNlZGUxOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKQEAgLTY0MSw3ICs2NDEsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjp3aWxsU2Vu
ZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyYwogICAg
IGlmICghZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgJiYgc2hvdWxkQ29udGludWUgIT0gU2hv
dWxkQ29udGludWU6OkZvclN1c3BlbnNpb24pCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKIAotICAgIGF1dG8gbmF2aWdhdGlvblBvbGljeUNv
bXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIEZvcm1TdGF0ZSosIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRp
bnVlKSBtdXRhYmxlIHsKKyAgICBhdXRvIG5hdmlnYXRpb25Qb2xpY3lDb21wbGV0aW9uSGFuZGxl
ciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiwgU2hvdWxkQ29udGludWUgc2hvdWxkQ29udGludWUp
IG11dGFibGUgewogICAgICAgICBtX3dhaXRpbmdGb3JOYXZpZ2F0aW9uUG9saWN5ID0gZmFsc2U7
CiAgICAgICAgIHN3aXRjaCAoc2hvdWxkQ29udGludWUpIHsKICAgICAgICAgY2FzZSBTaG91bGRD
b250aW51ZTo6Rm9yU3VzcGVuc2lvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Gb3JtU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdGF0ZS5jcHAKaW5k
ZXggOWZhOGJkZDNlMWNjMzZhYjExY2NkZTVmMzAxOTY1Mjg5NGJmZDA1Yi4uZjg3MDBiMWFkMzgz
MWEzZDQzMTYzMDgxYThmMGMwNjJiNmNhMDZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Zvcm1TdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdGF0
ZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC01Miw3ICs1Miw3IEBAIFJlZjxGb3JtU3RhdGU+IEZvcm1TdGF0ZTo6Y3JlYXRl
KEhUTUxGb3JtRWxlbWVudCYgZm9ybSwgU3RyaW5nUGFpclZlY3RvciYmIHRleHRGCiB2b2lkIEZv
cm1TdGF0ZTo6d2lsbERldGFjaFBhZ2UoKQogewogICAgIC8vIEJlYXJ0cmFwIGZvciA8cmRhcjov
L3Byb2JsZW0vMzc1NzkzNTQ+Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVChoYXNPbmVSZWYoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3Jt
U3RhdGUuaAppbmRleCAyNjM0YTk3YjEyMzZjOTc2MjM0ZTUwZGE3ZDVjMjAzOTdjZGNjMmZiLi43
NzU4NDMyOWFmMTY0MjQ2NTBjMDBkYjhhNzkzZDlkOTU1ZjUwNTBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Zvcm1TdGF0ZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
Ni0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC00OSw2ICs1MCw4IEBAIHB1YmxpYzoKICAgICBEb2N1bWVudCYgc291cmNlRG9jdW1lbnQoKSBj
b25zdCB7IHJldHVybiBtX3NvdXJjZURvY3VtZW50OyB9CiAgICAgRm9ybVN1Ym1pc3Npb25Ucmln
Z2VyIGZvcm1TdWJtaXNzaW9uVHJpZ2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybVN1Ym1pc3Np
b25UcmlnZ2VyOyB9CiAKKyAgICBhdXRvJiB3ZWFrUHRyRmFjdG9yeSgpIGNvbnN0IHsgcmV0dXJu
IG1fd2Vha0ZhY3Rvcnk7IH0KKwogcHJpdmF0ZToKICAgICBGb3JtU3RhdGUoSFRNTEZvcm1FbGVt
ZW50JiwgU3RyaW5nUGFpclZlY3RvciYmIHRleHRGaWVsZFZhbHVlcywgRG9jdW1lbnQmLCBGb3Jt
U3VibWlzc2lvblRyaWdnZXIpOwogICAgIHZvaWQgd2lsbERldGFjaFBhZ2UoKSBvdmVycmlkZTsK
QEAgLTU3LDYgKzYwLDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmdQYWlyVmVjdG9yIG1fdGV4dEZp
ZWxkVmFsdWVzOwogICAgIFJlZjxEb2N1bWVudD4gbV9zb3VyY2VEb2N1bWVudDsKICAgICBGb3Jt
U3VibWlzc2lvblRyaWdnZXIgbV9mb3JtU3VibWlzc2lvblRyaWdnZXI7CisgICAgV2Vha1B0ckZh
Y3Rvcnk8Rm9ybVN0YXRlPiBtX3dlYWtGYWN0b3J5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggMTZiZjgyMzU1ZmUw
NjgzNmQ0MzMwYWIxYTgwNmU1NTNiNGEwZjU4MS4uODc3OThlZThlNWRjMDdhMDIzY2FiZjU1NGI2
NGIyMWRhYjBlOTc0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50
b3JjaG1vYmlsZS5jb20vKQogICogQ29weXJpZ2h0IChDKSAyMDA4IEFscCBUb2tlciA8YWxwQGF0
b2tlci5jb20+CkBAIC0xMjI2LDcgKzEyMjYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRnJh
bWVSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBFdmVudCogZXZlbnQsIEZvcgog
ICAgIGVsc2UKICAgICAgICAgbG9hZFR5cGUgPSBGcmFtZUxvYWRUeXBlOjpTdGFuZGFyZDsKIAot
ICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkRnJhbWUgPSBtYWtl
UmVmKG1fZnJhbWUpLCBmb3JtU3RhdGUgPSBtYWtlUmVmUHRyKGZvcm1TdGF0ZSksIGZyYW1lTmFt
ZSA9IHJlcXVlc3QuZnJhbWVOYW1lKCldIHsKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0g
W3RoaXMsIHByb3RlY3RlZEZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKSwgZm9ybVN0YXRlID0gbWFr
ZVdlYWtQdHIoZm9ybVN0YXRlKSwgZnJhbWVOYW1lID0gcmVxdWVzdC5mcmFtZU5hbWUoKV0gewog
ICAgICAgICAvLyBGSVhNRTogSXQncyBwb3NzaWJsZSB0aGlzIHRhcmdldEZyYW1lIHdpbGwgbm90
IGJlIHRoZSBzYW1lIGZyYW1lIHRoYXQgd2FzIHRhcmdldGVkIGJ5IHRoZSBhY3R1YWwKICAgICAg
ICAgLy8gbG9hZCBpZiBmcmFtZSBuYW1lcyBoYXZlIGNoYW5nZWQuCiAgICAgICAgIEZyYW1lKiBz
b3VyY2VGcmFtZSA9IGZvcm1TdGF0ZSA/IGZvcm1TdGF0ZS0+c291cmNlRG9jdW1lbnQoKS5mcmFt
ZSgpIDogJm1fZnJhbWU7CkBAIC0xMzM2LDggKzEzMzYsOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjps
b2FkVVJMKEZyYW1lTG9hZFJlcXVlc3QmJiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBTdHJpbmcm
IHJlZgogCiAgICAgaWYgKCF0YXJnZXRGcmFtZSAmJiAhZnJhbWVOYW1lLmlzRW1wdHkoKSkgewog
ICAgICAgICBhY3Rpb24gPSBhY3Rpb24uY29weVdpdGhTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5KHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KG1fZnJhbWUsIGZyYW1lTG9h
ZFJlcXVlc3QpKTsKLSAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmV3V2luZG93UG9saWN5
KFdURk1vdmUoYWN0aW9uKSwgV1RGTW92ZShyZXF1ZXN0KSwgZm9ybVN0YXRlLCBmcmFtZU5hbWUs
IFt0aGlzLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBvbGljeSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlckNhbGxlci5yZWxlYXNlKCldIChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBjb25zdCBTdHJp
bmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBTaG91bGRDb250
aW51ZSBzaG91bGRDb250aW51ZSkgewotICAgICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJOZXdX
aW5kb3dQb2xpY3kocmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIGFjdGlvbiwgc2hvdWxk
Q29udGludWUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgb3BlbmVyUG9saWN5KTsKKyAg
ICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmV3V2luZG93UG9saWN5KFdURk1vdmUoYWN0aW9u
KSwgV1RGTW92ZShyZXF1ZXN0KSwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05h
dmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBvbGljeSwgY29tcGxldGlvbkhhbmRsZXIgPSBj
b21wbGV0aW9uSGFuZGxlckNhbGxlci5yZWxlYXNlKCldIChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIFdlYWtQdHI8Rm9ybVN0YXRlPiYmIGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBm
cmFtZU5hbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgU2hvdWxkQ29udGludWUg
c2hvdWxkQ29udGludWUpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93
UG9saWN5KHJlcXVlc3QsIGZvcm1TdGF0ZS5nZXQoKSwgZnJhbWVOYW1lLCBhY3Rpb24sIHNob3Vs
ZENvbnRpbnVlLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBvbGljeSk7CiAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMTM1Niw3ICsxMzU2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChGcmFt
ZUxvYWRSZXF1ZXN0JiYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWYKICAgICAg
ICAgb2xkRG9jdW1lbnRMb2FkZXItPnNldExhc3RDaGVja2VkUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QoKSk7CiAgICAgICAgIHBvbGljeUNoZWNrZXIoKS5zdG9wQ2hlY2soKTsKICAgICAgICAgcG9s
aWN5Q2hlY2tlcigpLnNldExvYWRUeXBlKG5ld0xvYWRUeXBlKTsKLSAgICAgICAgcG9saWN5Q2hl
Y2tlcigpLmNoZWNrTmF2aWdhdGlvblBvbGljeShXVEZNb3ZlKHJlcXVlc3QpLCBmYWxzZSAvKiBk
aWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSAqLywgb2xkRG9jdW1lbnRMb2FkZXIuZ2V0KCksIGZv
cm1TdGF0ZSwgW3RoaXMsIHByb3RlY3RlZEZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKV0gKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9ybVN0YXRlKiwgU2hvdWxkQ29udGludWUgc2hv
dWxkQ29udGludWUpIHsKKyAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmF2aWdhdGlvblBv
bGljeShXVEZNb3ZlKHJlcXVlc3QpLCBmYWxzZSAvKiBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25z
ZSAqLywgb2xkRG9jdW1lbnRMb2FkZXIuZ2V0KCksIGZvcm1TdGF0ZSwgW3RoaXMsIHByb3RlY3Rl
ZEZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgV2Vha1B0cjxGb3JtU3RhdGU+JiYsIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSB7
CiAgICAgICAgICAgICBjb250aW51ZUZyYWdtZW50U2Nyb2xsQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5
KHJlcXVlc3QsIHNob3VsZENvbnRpbnVlID09IFNob3VsZENvbnRpbnVlOjpZZXMpOwogICAgICAg
ICB9LCBQb2xpY3lEZWNpc2lvbk1vZGU6OlN5bmNocm9ub3VzKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtMTQxMiw4ICsxNDEyLDggQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChGcmFtZUxvYWRSZXF1
ZXN0JiYgcmVxdWVzdCkKIAogICAgIGlmIChyZXF1ZXN0LnNob3VsZENoZWNrTmV3V2luZG93UG9s
aWN5KCkpIHsKICAgICAgICAgTmF2aWdhdGlvbkFjdGlvbiBhY3Rpb24geyByZXF1ZXN0LnJlcXVl
c3RlcigpLCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCBJbml0aWF0ZWRCeU1haW5GcmFtZTo6
VW5rbm93biwgTmF2aWdhdGlvblR5cGU6Ok90aGVyLCByZXF1ZXN0LnNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3koKSB9OwotICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOZXdXaW5kb3dQ
b2xpY3koV1RGTW92ZShhY3Rpb24pLCBXVEZNb3ZlKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkp
LCBudWxscHRyLCByZXF1ZXN0LmZyYW1lTmFtZSgpLCBbdGhpc10gKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVO
YW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFNob3VsZENvbnRpbnVlIHNob3Vs
ZENvbnRpbnVlKSB7Ci0gICAgICAgICAgICBjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGlj
eShyZXF1ZXN0LCBmb3JtU3RhdGUsIGZyYW1lTmFtZSwgYWN0aW9uLCBzaG91bGRDb250aW51ZSwg
QWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpT
dXBwcmVzcyk7CisgICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05ld1dpbmRvd1BvbGljeShX
VEZNb3ZlKGFjdGlvbiksIFdURk1vdmUocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSksIG51bGxw
dHIsIHJlcXVlc3QuZnJhbWVOYW1lKCksIFt0aGlzXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJh
bWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFNob3VsZENvbnRpbnVlIHNo
b3VsZENvbnRpbnVlKSB7CisgICAgICAgICAgICBjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1Bv
bGljeShyZXF1ZXN0LCBmb3JtU3RhdGUuZ2V0KCksIGZyYW1lTmFtZSwgYWN0aW9uLCBzaG91bGRD
b250aW51ZSwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVy
UG9saWN5OjpTdXBwcmVzcyk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIHJldHVybjsKQEAgLTE1
MjYsNyArMTUyNiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIo
RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgRnJhbWVMb2FkVHlwZSB0CiAgICAgICAgIG9sZERvY3Vt
ZW50TG9hZGVyLT5zZXRUcmlnZ2VyaW5nQWN0aW9uKGFjdGlvbik7CiAgICAgICAgIG9sZERvY3Vt
ZW50TG9hZGVyLT5zZXRMYXN0Q2hlY2tlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KCkpOwogICAg
ICAgICBwb2xpY3lDaGVja2VyKCkuc3RvcENoZWNrKCk7Ci0gICAgICAgIHBvbGljeUNoZWNrZXIo
KS5jaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci0+cmVxdWVzdCgp
KSwgZmFsc2UgLyogZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgKi8sIG9sZERvY3VtZW50TG9h
ZGVyLmdldCgpLCBmb3JtU3RhdGUsIFt0aGlzLCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9m
cmFtZSldIChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZvcm1TdGF0ZSosIFNob3Vs
ZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSB7CisgICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVj
a05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci0+cmVxdWVzdCgpKSwgZmFs
c2UgLyogZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgKi8sIG9sZERvY3VtZW50TG9hZGVyLmdl
dCgpLCBmb3JtU3RhdGUsIFt0aGlzLCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9mcmFtZSld
IChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYWtQdHI8Rm9ybVN0YXRlPiYmLCBT
aG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgewogICAgICAgICAgICAgY29udGludWVGcmFn
bWVudFNjcm9sbEFmdGVyTmF2aWdhdGlvblBvbGljeShyZXF1ZXN0LCBzaG91bGRDb250aW51ZSA9
PSBTaG91bGRDb250aW51ZTo6WWVzKTsKICAgICAgICAgfSwgUG9saWN5RGVjaXNpb25Nb2RlOjpT
eW5jaHJvbm91cyk7CiAgICAgICAgIHJldHVybjsKQEAgLTE1NjAsOCArMTU2MCw4IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRl
ciwgRnJhbWVMb2FkVHlwZSB0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwb2xpY3lD
aGVja2VyKCkuY2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdChsb2FkZXItPnJl
cXVlc3QoKSksIGZhbHNlIC8qIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlICovLCBsb2FkZXIs
IGZvcm1TdGF0ZSwgW3RoaXMsIHByb3RlY3RlZEZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKSwgYWxs
b3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBjb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRpb25I
YW5kbGVyQ2FsbGVyLnJlbGVhc2UoKV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Rm9ybVN0YXRlKiBmb3JtU3RhdGUsIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSB7Ci0g
ICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShyZXF1ZXN0LCBmb3JtU3Rh
dGUsIHNob3VsZENvbnRpbnVlLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwpOworICAgIHBv
bGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0KGxvYWRl
ci0+cmVxdWVzdCgpKSwgZmFsc2UgLyogZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgKi8sIGxv
YWRlciwgZm9ybVN0YXRlLCBbdGhpcywgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUp
LCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIGNvbXBsZXRpb25IYW5kbGVyID0gY29tcGxl
dGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUsIFNob3VsZENvbnRpbnVlIHNob3Vs
ZENvbnRpbnVlKSB7CisgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShy
ZXF1ZXN0LCBmb3JtU3RhdGUuZ2V0KCksIHNob3VsZENvbnRpbnVlLCBhbGxvd05hdmlnYXRpb25U
b0ludmFsaWRVUkwpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwogfQpA
QCAtMjg1NCwxMyArMjg1NCwxMyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3Qo
RnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZQogCiAgICAgaWYg
KCFmcmFtZU5hbWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFRoZSBzZWFyY2ggZm9yIGEgdGFy
Z2V0IGZyYW1lIGlzIGRvbmUgZWFybGllciBpbiB0aGUgY2FzZSBvZiBmb3JtIHN1Ym1pc3Npb24u
Ci0gICAgICAgIGlmIChGcmFtZSogdGFyZ2V0RnJhbWUgPSBmb3JtU3RhdGUgPyAwIDogZmluZEZy
YW1lRm9yTmF2aWdhdGlvbihmcmFtZU5hbWUpKSB7Ci0gICAgICAgICAgICB0YXJnZXRGcmFtZS0+
bG9hZGVyKCkubG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKHdvcmtpbmdSZXNvdXJjZVJlcXVlc3Qs
IGFjdGlvbiwgbG9ja0hpc3RvcnksIGxvYWRUeXBlLCBXVEZNb3ZlKGZvcm1TdGF0ZSksIGFsbG93
TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAg
ICAgICBpZiAoYXV0byogdGFyZ2V0RnJhbWUgPSBmb3JtU3RhdGUgPyBudWxscHRyIDogZmluZEZy
YW1lRm9yTmF2aWdhdGlvbihmcmFtZU5hbWUpKSB7CisgICAgICAgICAgICB0YXJnZXRGcmFtZS0+
bG9hZGVyKCkubG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKHdvcmtpbmdSZXNvdXJjZVJlcXVlc3Qs
IGFjdGlvbiwgbG9ja0hpc3RvcnksIGxvYWRUeXBlLCBmb3JtU3RhdGUsIGFsbG93TmF2aWdhdGlv
blRvSW52YWxpZFVSTCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmV3V2lu
ZG93UG9saWN5KFdURk1vdmUoYWN0aW9uKSwgV1RGTW92ZSh3b3JraW5nUmVzb3VyY2VSZXF1ZXN0
KSwgV1RGTW92ZShmb3JtU3RhdGUpLCBmcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05hdmlnYXRpb25U
b0ludmFsaWRVUkwsIG9wZW5lclBvbGljeSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9ybVN0
YXRlKiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9u
QWN0aW9uJiBhY3Rpb24sIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSB7Ci0gICAgICAg
ICAgICBjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeShyZXF1ZXN0LCBmb3JtU3RhdGUs
IGZyYW1lTmFtZSwgYWN0aW9uLCBzaG91bGRDb250aW51ZSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZh
bGlkVVJMLCBvcGVuZXJQb2xpY3kpOworICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOZXdX
aW5kb3dQb2xpY3koV1RGTW92ZShhY3Rpb24pLCBXVEZNb3ZlKHdvcmtpbmdSZXNvdXJjZVJlcXVl
c3QpLCBmb3JtU3RhdGUsIGZyYW1lTmFtZSwgW3RoaXMsIGFsbG93TmF2aWdhdGlvblRvSW52YWxp
ZFVSTCwgb3BlbmVyUG9saWN5LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWFrUHRyPEZvcm1T
dGF0ZT4mJiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJiBhY3Rpb24sIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSB7CisgICAg
ICAgICAgICBjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeShyZXF1ZXN0LCBmb3JtU3Rh
dGUuZ2V0KCksIGZyYW1lTmFtZSwgYWN0aW9uLCBzaG91bGRDb250aW51ZSwgYWxsb3dOYXZpZ2F0
aW9uVG9JbnZhbGlkVVJMLCBvcGVuZXJQb2xpY3kpOwogICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTI4NjgsNyArMjg2OCw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYg
cmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWZlCiAKICAgICAvLyBtdXN0IGdyYWIgdGhpcyBub3cs
IHNpbmNlIHRoaXMgbG9hZCBtYXkgc3RvcCB0aGUgcHJldmlvdXMgbG9hZCBhbmQgY2xlYXIgdGhp
cyBmbGFnCiAgICAgYm9vbCBpc1JlZGlyZWN0ID0gbV9xdWlja1JlZGlyZWN0Q29taW5nOwotICAg
IGxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbih3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LCBhY3Rpb24s
IGxvY2tIaXN0b3J5LCBsb2FkVHlwZSwgV1RGTW92ZShmb3JtU3RhdGUpLCBhbGxvd05hdmlnYXRp
b25Ub0ludmFsaWRVUkwsIFt0aGlzLCBpc1JlZGlyZWN0LCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VS
ZWYobV9mcmFtZSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildIHsKKyAgICBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24od29ya2luZ1Jlc291cmNlUmVxdWVz
dCwgYWN0aW9uLCBsb2NrSGlzdG9yeSwgbG9hZFR5cGUsIGZvcm1TdGF0ZSwgYWxsb3dOYXZpZ2F0
aW9uVG9JbnZhbGlkVVJMLCBbdGhpcywgaXNSZWRpcmVjdCwgcHJvdGVjdGVkRnJhbWUgPSBtYWtl
UmVmKG1fZnJhbWUpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSB7CiAgICAgICAgIGlmIChpc1JlZGlyZWN0KSB7CiAgICAgICAgICAgICBtX3F1aWNrUmVk
aXJlY3RDb21pbmcgPSBmYWxzZTsKICAgICAgICAgICAgIGlmIChtX3Byb3Zpc2lvbmFsRG9jdW1l
bnRMb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKaW5kZXggYjY2
OTBlYTk2NjVhMTUxNWM5N2E2M2FkYzk0MDc3MzJiOTgxOTEyNy4uYWI3MzVhZDk0ZjlhOWMzM2Ew
OWE2NTUzYTQ4MTc4ZDgwYjQ3YTAxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1BvbGljeUNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVj
a2VyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4g
KGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKICAqCkBAIC0xMDksNyArMTA5LDcgQEAgdm9p
ZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgYm9vbCBkaWRSZWMKICAgICAvLyBEb24ndCBhc2sgbW9yZSB0aGFuIG9uY2UgZm9y
IHRoZSBzYW1lIHJlcXVlc3Qgb3IgaWYgd2UgYXJlIGxvYWRpbmcgYW4gZW1wdHkgVVJMLgogICAg
IC8vIFRoaXMgYXZvaWRzIGNvbmZ1c2lvbiBvbiB0aGUgcGFydCBvZiB0aGUgY2xpZW50LgogICAg
IGlmIChlcXVhbElnbm9yaW5nSGVhZGVyRmllbGRzKHJlcXVlc3QsIGxvYWRlci0+bGFzdENoZWNr
ZWRSZXF1ZXN0KCkpIHx8ICghcmVxdWVzdC5pc051bGwoKSAmJiByZXF1ZXN0LnVybCgpLmlzRW1w
dHkoKSkpIHsKLSAgICAgICAgZnVuY3Rpb24oUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBudWxs
cHRyLCBTaG91bGRDb250aW51ZTo6WWVzKTsKKyAgICAgICAgZnVuY3Rpb24oUmVzb3VyY2VSZXF1
ZXN0KHJlcXVlc3QpLCB7IH0sIFNob3VsZENvbnRpbnVlOjpZZXMpOwogICAgICAgICBsb2FkZXIt
PnNldExhc3RDaGVja2VkUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2
aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBib29sIGRpZFJlYwogI2Vu
ZGlmCiAgICAgICAgIGlmIChpc0JhY2tGb3J3YXJkTG9hZFR5cGUobV9sb2FkVHlwZSkpCiAgICAg
ICAgICAgICBtX2xvYWRUeXBlID0gRnJhbWVMb2FkVHlwZTo6UmVsb2FkOwotICAgICAgICBmdW5j
dGlvbihXVEZNb3ZlKHJlcXVlc3QpLCBudWxscHRyLCBzaG91bGRDb250aW51ZSA/IFNob3VsZENv
bnRpbnVlOjpZZXMgOiBTaG91bGRDb250aW51ZTo6Tm8pOworICAgICAgICBmdW5jdGlvbihXVEZN
b3ZlKHJlcXVlc3QpLCB7IH0sIHNob3VsZENvbnRpbnVlID8gU2hvdWxkQ29udGludWU6OlllcyA6
IFNob3VsZENvbnRpbnVlOjpObyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzNCw3
ICsxMzQsNyBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBib29sIGRpZFJlYwogICAgICAgICAgICAgLy8gcmV2ZWFs
IHRoYXQgdGhlIGZyYW1lIHdhcyBibG9ja2VkLiBUaGlzIHdheSwgaXQgbG9va3MgbGlrZSBhbnkg
b3RoZXIgY3Jvc3Mtb3JpZ2luIHBhZ2UgbG9hZC4KICAgICAgICAgICAgIG1fZnJhbWUub3duZXJF
bGVtZW50KCktPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2
ZW50LCBmYWxzZSwgZmFsc2UpKTsKICAgICAgICAgfQotICAgICAgICBmdW5jdGlvbihXVEZNb3Zl
KHJlcXVlc3QpLCBudWxscHRyLCBTaG91bGRDb250aW51ZTo6Tm8pOworICAgICAgICBmdW5jdGlv
bihXVEZNb3ZlKHJlcXVlc3QpLCB7IH0sIFNob3VsZENvbnRpbnVlOjpObyk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNo
ZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBib29sIGRpZFJl
YwogCiAgICAgbV9kZWxlZ2F0ZUlzRGVjaWRpbmdOYXZpZ2F0aW9uUG9saWN5ID0gdHJ1ZTsKICAg
ICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUgPSBhY3Rpb24uZG93bmxvYWRBdHRyaWJ1dGUoKS5p
c0VtcHR5KCkgPyBudWxsQXRvbSgpIDogYWN0aW9uLmRvd25sb2FkQXR0cmlidXRlKCk7Ci0gICAg
bV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24oYWN0aW9uLCByZXF1ZXN0LCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSwgZm9y
bVN0YXRlLCBwb2xpY3lEZWNpc2lvbk1vZGUsIFt0aGlzLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVu
Y3Rpb24pLCByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBmb3JtU3RhdGUgPSBt
YWtlUmVmUHRyKGZvcm1TdGF0ZSksIHN1Z2dlc3RlZEZpbGVuYW1lID0gV1RGTW92ZShzdWdnZXN0
ZWRGaWxlbmFtZSksIGJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiA9IFdURk1vdmUoYmxvYlVSTExp
ZmV0aW1lRXh0ZW5zaW9uKV0oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgbXV0YWJsZSB7Cisg
ICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb24oYWN0aW9uLCByZXF1ZXN0LCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSwg
Zm9ybVN0YXRlLCBwb2xpY3lEZWNpc2lvbk1vZGUsIFt0aGlzLCBmdW5jdGlvbiA9IFdURk1vdmUo
ZnVuY3Rpb24pLCByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBmb3JtU3RhdGUg
PSBtYWtlV2Vha1B0cihmb3JtU3RhdGUpLCBzdWdnZXN0ZWRGaWxlbmFtZSA9IFdURk1vdmUoc3Vn
Z2VzdGVkRmlsZW5hbWUpLCBibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gPSBXVEZNb3ZlKGJsb2JV
UkxMaWZldGltZUV4dGVuc2lvbildKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIG11dGFibGUg
ewogICAgICAgICBtX2RlbGVnYXRlSXNEZWNpZGluZ05hdmlnYXRpb25Qb2xpY3kgPSBmYWxzZTsK
IAogICAgICAgICBzd2l0Y2ggKHBvbGljeUFjdGlvbikgewpAQCAtMTg1LDcgKzE4NSw3IEBAIHZv
aWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIGJvb2wgZGlkUmVjCiAgICAgICAgICAgICAgICAgaGFuZGxlVW5pbXBsZW1lbnRh
YmxlUG9saWN5KG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuY2Fubm90U2hvd1VSTEVycm9yKHJl
cXVlc3QpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oeyB9LCBudWxscHRyLCBT
aG91bGRDb250aW51ZTo6Tm8pOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uKFdURk1vdmUocmVxdWVzdCksIGZvcm1TdGF0ZS5nZXQoKSwgU2hvdWxkQ29udGludWU6
Olllcyk7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oV1RGTW92ZShyZXF1ZXN0KSwgV1RG
TW92ZShmb3JtU3RhdGUpLCBTaG91bGRDb250aW51ZTo6WWVzKTsKICAgICAgICAgfQogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9KTsKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lk
IFBvbGljeUNoZWNrZXI6OmNoZWNrTmV3V2luZG93UG9saWN5KE5hdmlnYXRpb25BY3Rpb24mJiBu
YXZpZ2F0aW9uQWN0aW9uLCBSZQogCiAgICAgYXV0byBibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24g
PSBleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeShyZXF1ZXN0KTsKIAotICAgIG1fZnJh
bWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rp
b24obmF2aWdhdGlvbkFjdGlvbiwgcmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIFtmcmFt
ZSA9IG1ha2VSZWYobV9mcmFtZSksIHJlcXVlc3QsIGZvcm1TdGF0ZSA9IG1ha2VSZWZQdHIoZm9y
bVN0YXRlKSwgZnJhbWVOYW1lLCBuYXZpZ2F0aW9uQWN0aW9uLCBmdW5jdGlvbiA9IFdURk1vdmUo
ZnVuY3Rpb24pLCBibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gPSBXVEZNb3ZlKGJsb2JVUkxMaWZl
dGltZUV4dGVuc2lvbildKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIG11dGFibGUgeworICAg
IG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5k
b3dBY3Rpb24obmF2aWdhdGlvbkFjdGlvbiwgcmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5hbWUs
IFtmcmFtZSA9IG1ha2VSZWYobV9mcmFtZSksIHJlcXVlc3QsIGZvcm1TdGF0ZSA9IG1ha2VXZWFr
UHRyKGZvcm1TdGF0ZSksIGZyYW1lTmFtZSwgbmF2aWdhdGlvbkFjdGlvbiwgZnVuY3Rpb24gPSBX
VEZNb3ZlKGZ1bmN0aW9uKSwgYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uID0gV1RGTW92ZShibG9i
VVJMTGlmZXRpbWVFeHRlbnNpb24pXShQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSBtdXRhYmxl
IHsKICAgICAgICAgc3dpdGNoIChwb2xpY3lBY3Rpb24pIHsKICAgICAgICAgY2FzZSBQb2xpY3lB
Y3Rpb246OkRvd25sb2FkOgogICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnN0
YXJ0RG93bmxvYWQocmVxdWVzdCk7CkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBQb2xpY3lDaGVj
a2VyOjpjaGVja05ld1dpbmRvd1BvbGljeShOYXZpZ2F0aW9uQWN0aW9uJiYgbmF2aWdhdGlvbkFj
dGlvbiwgUmUKICAgICAgICAgICAgIC8vIEl0IGlzIGludmFsaWQgdG8gZ2V0IGEgIlN1c3BlbmQi
IHBvbGljeSBmb3IgbmV3IHdpbmRvd3MsIGFzIHRoZSBvbGQgZG9jdW1lbnQgaXMgbm90IGdvaW5n
IGF3YXkuCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICBjYXNlIFBvbGljeUFjdGlvbjo6VXNlOgotICAgICAgICAgICAgZnVuY3Rpb24ocmVxdWVzdCwg
Zm9ybVN0YXRlLmdldCgpLCBmcmFtZU5hbWUsIG5hdmlnYXRpb25BY3Rpb24sIFNob3VsZENvbnRp
bnVlOjpZZXMpOworICAgICAgICAgICAgZnVuY3Rpb24ocmVxdWVzdCwgV1RGTW92ZShmb3JtU3Rh
dGUpLCBmcmFtZU5hbWUsIG5hdmlnYXRpb25BY3Rpb24sIFNob3VsZENvbnRpbnVlOjpZZXMpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmgKaW5kZXggYzMyOWVjNDNiODFl
MzVlOGI3M2FiZTZlNjAxZDEzZDQyNTA4NTJhZi4uNmYxMTIxMTkxNDZjNDhiNGViNGU5YjAyNjgx
ZGMwZTliMmFmNTZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNo
ZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBUb3JjaCBN
b2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5j
b20vKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiRnJh
bWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCkBAIC01OSw4ICs2MCw4IEBAIGVudW0gY2xhc3MgU2hv
dWxkQ29udGludWUgewogCiBlbnVtIGNsYXNzIFBvbGljeURlY2lzaW9uTW9kZSB7IFN5bmNocm9u
b3VzLCBBc3luY2hyb25vdXMgfTsKIAotdXNpbmcgTmV3V2luZG93UG9saWN5RGVjaXNpb25GdW5j
dGlvbiA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRm9y
bVN0YXRlKiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24m
LCBTaG91bGRDb250aW51ZSk+OwotdXNpbmcgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rp
b24gPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmLCBGb3JtU3RhdGUq
LCBTaG91bGRDb250aW51ZSk+OwordXNpbmcgTmV3V2luZG93UG9saWN5RGVjaXNpb25GdW5jdGlv
biA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgV2Vha1B0
cjxGb3JtU3RhdGU+JiYsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9u
QWN0aW9uJiwgU2hvdWxkQ29udGludWUpPjsKK3VzaW5nIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
bkZ1bmN0aW9uID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJiwgV2Vh
a1B0cjxGb3JtU3RhdGU+JiYsIFNob3VsZENvbnRpbnVlKT47CiAKIGNsYXNzIFBvbGljeUNoZWNr
ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBvbGljeUNoZWNrZXIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341013</attachid>
            <date>2018-05-22 13:44:19 -0700</date>
            <delta_ts>2018-05-22 14:03:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185877-20180522134418.patch</filename>
            <type>text/plain</type>
            <size>23385</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxOTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmY4MjU0YjAxN2VhODc4
ZjkwNzE5M2U0N2ExODNiZDQ4NzhjMTljZS4uZmYzZjZlY2FlNzNjMDRjMDIzNjkwMzM5NmMzN2Vm
NWYyYjE3NzlkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE4LTA1LTIyICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIEF2b2lkIGtlZXBpbmcg
Rm9ybVN0YXRlIGFsaXZlIGxvbmdlciB0aGFuIG5lY2Vzc2FyeQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1ODc3CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zOTMyOTIxOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBIG51bWJlciBvZiBjcmFzaCBmaXhlcyB3ZXJlIGRvbmUgdG8gcHJldmVudCBGb3Jt
U3RhdGUgb2JqZWN0cyBmcm9tIGJlaW5nCisgICAgICAgIGFjY2Vzc2VkIGFmdGVyIHRoZWlyIHJl
bGV2YW50IEZyYW1lcyBoYWQgYmVlbiBkZXN0cm95ZWQuIFVuZm9ydHVuYXRlbHksIHRoaXMKKyAg
ICAgICAgY291bGQgY2F1c2UgdGhlIEZvcm1TdGF0ZSB0byBwZXJzaXN0IGFmdGVyIHRoZSBvd25p
bmcgRnJhbWUgaGFkIGJlZW4KKyAgICAgICAgZGVzdHJveWVkLCByZXN1bHRpbmcgaW4gbnVsbHB0
ciBkZXJlZmVyZW5jZXMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIHRoZSBmb2xsb3dpbmc6
CisKKyAgICAgICAgMS4gQ2hhbmdlcyB0byB1c2UgV2Vha1B0cidzIGZvciBGb3JtU3RhdGUgb2Jq
ZWN0cyBwYXNzZWQgdG8gY29tcGxldGlvbiBoYW5kbGVycywKKyAgICAgICAgICAgcmF0aGVyIHRo
YW4gUmV0YWluUHRyLCBzaW5jZSB0aG9zZSBjb21wbGV0aW9uIGhhbmRsZXJzIG1pZ2h0IGZpcmUg
YXMgcGFydCBvZgorICAgICAgICAgICB0aGUgY2xlYW4tdXAgcHJvY2VzcyBkdXJpbmcgRnJhbWUg
ZGVzdHJ1Y3Rpb24uIFRoaXMgYWxsb3dzIHVzIHRvIHVzZSB0aGUgRm9ybVN0YXRlCisgICAgICAg
ICAgIGlmIHRoZXkgYXJlIHN0aWxsIHZhbGlkLCBidXQgZ3JhY2VmdWxseSBoYW5kbGUgY2FzZXMg
d2hlcmUgYSBmb3JtIHN1Ym1pc3Npb24KKyAgICAgICAgICAgaXMgY2FuY2VsbGVkIGluLWZsaWdo
dC4KKyAgICAgICAgMi4gUmVtb3ZlcyBzb21lIGV4dHJhbmVvdXMgV1RGTW92ZSgpIGNhbGxzIGJl
aW5nIG1hZGUgb24gYmFyZSBGb3JtU3RhdGUgcG9pbnRlcnMuCisgICAgICAgIDMuIENoYW5nZXMg
dGhlIHRyYXAgZnJvbSBCdWcgMTgzNzA0IHNvIHRoYXQgaXQgb25seSBmaXJlcyBpZiB0aGUgRm9y
bVN0YXRlIG9iamVjdAorICAgICAgICAgICBpcyBiZWluZyByZXRhaW5lZCBtb3JlIHRoYW4gb25j
ZS4KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KTogVXBkYXRlIGZvciBuZXcgQ29t
cGxldGlvbkhhbmRsZXIKKyAgICAgICAgc2lnbmF0dXJlLgorICAgICAgICAqIGxvYWRlci9Gb3Jt
U3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybVN0YXRlOjp3aWxsRGV0YWNoUGFnZSk6
IFJldmlzZSB0cmFwIHRvIGNoZWNrIGZvciByZXRhaW4gY291bnRzCisgICAgICAgIGFib3ZlIG9u
ZS4KKyAgICAgICAgKiBsb2FkZXIvRm9ybVN0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpGb3Jt
U3RhdGU6OndlYWtQdHJGYWN0b3J5IGNvbnN0KTogQWRkZWQuCisgICAgICAgICogbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkRnJhbWVS
ZXF1ZXN0KTogUmV2aXNlIHRvIHVzZSBXZWFrUHRyIGZvciBGb3JtU3RhdGUKKyAgICAgICAgcGFz
c2VkIHRvIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6bG9hZFVSTCk6IFVwZGF0ZSBmb3IgbmV3IENvbXBsZXRpb25IYW5kbGVyIHNpZ25hdHVy
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExvYWRlcik6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdCk6IERpdHRvLgor
ICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBv
bGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeSk6IFJldmlzZSB0byB1c2UgV2Vha1B0
ciBmb3IKKyAgICAgICAgRm9ybVN0YXRlIHBhc3NlZCB0byB0aGUgY29tcGxldGlvbiBoYW5kbGVy
LiBSZW1vdmUgc29tZSBleHRyYW5lb3VzIFdURk1vdmUoKQorICAgICAgICBjYWxscyBvbiBiYXJl
IHBvaW50ZXJzLgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOZXdXaW5k
b3dQb2xpY3kpOiBEaXR0by4KKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5oOgorCiAy
MDE4LTA1LTE4ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAg
W1dlYiBBbmltYXRpb25zXSBUdXJuIFdlYiBBbmltYXRpb25zIHdpdGggQ1NTIGludGVncmF0aW9u
IG9uIGZvciB0ZXN0IHJ1bm5lcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCmluZGV4IDJlZjZmNDkyMjBiMzgwNDAzZjQyZTQwOGU5NmIxM2YzMzQ4MGIxZWEuLjk2N2E0
OTM5ODZkMjg4NGU1MDM3OTc1MWRlMDI0ZTU1MTNlZGUxOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKQEAgLTY0MSw3ICs2NDEsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjp3aWxsU2Vu
ZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyYwogICAg
IGlmICghZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgJiYgc2hvdWxkQ29udGludWUgIT0gU2hv
dWxkQ29udGludWU6OkZvclN1c3BlbnNpb24pCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKIAotICAgIGF1dG8gbmF2aWdhdGlvblBvbGljeUNv
bXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIEZvcm1TdGF0ZSosIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRp
bnVlKSBtdXRhYmxlIHsKKyAgICBhdXRvIG5hdmlnYXRpb25Qb2xpY3lDb21wbGV0aW9uSGFuZGxl
ciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiwgU2hvdWxkQ29udGludWUgc2hvdWxkQ29udGludWUp
IG11dGFibGUgewogICAgICAgICBtX3dhaXRpbmdGb3JOYXZpZ2F0aW9uUG9saWN5ID0gZmFsc2U7
CiAgICAgICAgIHN3aXRjaCAoc2hvdWxkQ29udGludWUpIHsKICAgICAgICAgY2FzZSBTaG91bGRD
b250aW51ZTo6Rm9yU3VzcGVuc2lvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Gb3JtU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdGF0ZS5jcHAKaW5k
ZXggOWZhOGJkZDNlMWNjMzZhYjExY2NkZTVmMzAxOTY1Mjg5NGJmZDA1Yi4uZjg3MDBiMWFkMzgz
MWEzZDQzMTYzMDgxYThmMGMwNjJiNmNhMDZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Zvcm1TdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdGF0
ZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC01Miw3ICs1Miw3IEBAIFJlZjxGb3JtU3RhdGU+IEZvcm1TdGF0ZTo6Y3JlYXRl
KEhUTUxGb3JtRWxlbWVudCYgZm9ybSwgU3RyaW5nUGFpclZlY3RvciYmIHRleHRGCiB2b2lkIEZv
cm1TdGF0ZTo6d2lsbERldGFjaFBhZ2UoKQogewogICAgIC8vIEJlYXJ0cmFwIGZvciA8cmRhcjov
L3Byb2JsZW0vMzc1NzkzNTQ+Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVChoYXNPbmVSZWYoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3Jt
U3RhdGUuaAppbmRleCAyNjM0YTk3YjEyMzZjOTc2MjM0ZTUwZGE3ZDVjMjAzOTdjZGNjMmZiLi43
NzU4NDMyOWFmMTY0MjQ2NTBjMDBkYjhhNzkzZDlkOTU1ZjUwNTBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Zvcm1TdGF0ZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
Ni0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC00OSw2ICs1MCw4IEBAIHB1YmxpYzoKICAgICBEb2N1bWVudCYgc291cmNlRG9jdW1lbnQoKSBj
b25zdCB7IHJldHVybiBtX3NvdXJjZURvY3VtZW50OyB9CiAgICAgRm9ybVN1Ym1pc3Npb25Ucmln
Z2VyIGZvcm1TdWJtaXNzaW9uVHJpZ2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybVN1Ym1pc3Np
b25UcmlnZ2VyOyB9CiAKKyAgICBhdXRvJiB3ZWFrUHRyRmFjdG9yeSgpIGNvbnN0IHsgcmV0dXJu
IG1fd2Vha0ZhY3Rvcnk7IH0KKwogcHJpdmF0ZToKICAgICBGb3JtU3RhdGUoSFRNTEZvcm1FbGVt
ZW50JiwgU3RyaW5nUGFpclZlY3RvciYmIHRleHRGaWVsZFZhbHVlcywgRG9jdW1lbnQmLCBGb3Jt
U3VibWlzc2lvblRyaWdnZXIpOwogICAgIHZvaWQgd2lsbERldGFjaFBhZ2UoKSBvdmVycmlkZTsK
QEAgLTU3LDYgKzYwLDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmdQYWlyVmVjdG9yIG1fdGV4dEZp
ZWxkVmFsdWVzOwogICAgIFJlZjxEb2N1bWVudD4gbV9zb3VyY2VEb2N1bWVudDsKICAgICBGb3Jt
U3VibWlzc2lvblRyaWdnZXIgbV9mb3JtU3VibWlzc2lvblRyaWdnZXI7CisgICAgV2Vha1B0ckZh
Y3Rvcnk8Rm9ybVN0YXRlPiBtX3dlYWtGYWN0b3J5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggMTZiZjgyMzU1ZmUw
NjgzNmQ0MzMwYWIxYTgwNmU1NTNiNGEwZjU4MS4uODc3OThlZThlNWRjMDdhMDIzY2FiZjU1NGI2
NGIyMWRhYjBlOTc0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50
b3JjaG1vYmlsZS5jb20vKQogICogQ29weXJpZ2h0IChDKSAyMDA4IEFscCBUb2tlciA8YWxwQGF0
b2tlci5jb20+CkBAIC0xMjI2LDcgKzEyMjYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRnJh
bWVSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBFdmVudCogZXZlbnQsIEZvcgog
ICAgIGVsc2UKICAgICAgICAgbG9hZFR5cGUgPSBGcmFtZUxvYWRUeXBlOjpTdGFuZGFyZDsKIAot
ICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkRnJhbWUgPSBtYWtl
UmVmKG1fZnJhbWUpLCBmb3JtU3RhdGUgPSBtYWtlUmVmUHRyKGZvcm1TdGF0ZSksIGZyYW1lTmFt
ZSA9IHJlcXVlc3QuZnJhbWVOYW1lKCldIHsKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0g
W3RoaXMsIHByb3RlY3RlZEZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKSwgZm9ybVN0YXRlID0gbWFr
ZVdlYWtQdHIoZm9ybVN0YXRlKSwgZnJhbWVOYW1lID0gcmVxdWVzdC5mcmFtZU5hbWUoKV0gewog
ICAgICAgICAvLyBGSVhNRTogSXQncyBwb3NzaWJsZSB0aGlzIHRhcmdldEZyYW1lIHdpbGwgbm90
IGJlIHRoZSBzYW1lIGZyYW1lIHRoYXQgd2FzIHRhcmdldGVkIGJ5IHRoZSBhY3R1YWwKICAgICAg
ICAgLy8gbG9hZCBpZiBmcmFtZSBuYW1lcyBoYXZlIGNoYW5nZWQuCiAgICAgICAgIEZyYW1lKiBz
b3VyY2VGcmFtZSA9IGZvcm1TdGF0ZSA/IGZvcm1TdGF0ZS0+c291cmNlRG9jdW1lbnQoKS5mcmFt
ZSgpIDogJm1fZnJhbWU7CkBAIC0xMzM2LDggKzEzMzYsOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjps
b2FkVVJMKEZyYW1lTG9hZFJlcXVlc3QmJiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBTdHJpbmcm
IHJlZgogCiAgICAgaWYgKCF0YXJnZXRGcmFtZSAmJiAhZnJhbWVOYW1lLmlzRW1wdHkoKSkgewog
ICAgICAgICBhY3Rpb24gPSBhY3Rpb24uY29weVdpdGhTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5KHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KG1fZnJhbWUsIGZyYW1lTG9h
ZFJlcXVlc3QpKTsKLSAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmV3V2luZG93UG9saWN5
KFdURk1vdmUoYWN0aW9uKSwgV1RGTW92ZShyZXF1ZXN0KSwgZm9ybVN0YXRlLCBmcmFtZU5hbWUs
IFt0aGlzLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBvbGljeSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlckNhbGxlci5yZWxlYXNlKCldIChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBjb25zdCBTdHJp
bmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBTaG91bGRDb250
aW51ZSBzaG91bGRDb250aW51ZSkgewotICAgICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJOZXdX
aW5kb3dQb2xpY3kocmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIGFjdGlvbiwgc2hvdWxk
Q29udGludWUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgb3BlbmVyUG9saWN5KTsKKyAg
ICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmV3V2luZG93UG9saWN5KFdURk1vdmUoYWN0aW9u
KSwgV1RGTW92ZShyZXF1ZXN0KSwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05h
dmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBvbGljeSwgY29tcGxldGlvbkhhbmRsZXIgPSBj
b21wbGV0aW9uSGFuZGxlckNhbGxlci5yZWxlYXNlKCldIChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIFdlYWtQdHI8Rm9ybVN0YXRlPiYmIGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBm
cmFtZU5hbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgU2hvdWxkQ29udGludWUg
c2hvdWxkQ29udGludWUpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93
UG9saWN5KHJlcXVlc3QsIGZvcm1TdGF0ZS5nZXQoKSwgZnJhbWVOYW1lLCBhY3Rpb24sIHNob3Vs
ZENvbnRpbnVlLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBvbGljeSk7CiAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMTM1Niw3ICsxMzU2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChGcmFt
ZUxvYWRSZXF1ZXN0JiYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWYKICAgICAg
ICAgb2xkRG9jdW1lbnRMb2FkZXItPnNldExhc3RDaGVja2VkUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QoKSk7CiAgICAgICAgIHBvbGljeUNoZWNrZXIoKS5zdG9wQ2hlY2soKTsKICAgICAgICAgcG9s
aWN5Q2hlY2tlcigpLnNldExvYWRUeXBlKG5ld0xvYWRUeXBlKTsKLSAgICAgICAgcG9saWN5Q2hl
Y2tlcigpLmNoZWNrTmF2aWdhdGlvblBvbGljeShXVEZNb3ZlKHJlcXVlc3QpLCBmYWxzZSAvKiBk
aWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSAqLywgb2xkRG9jdW1lbnRMb2FkZXIuZ2V0KCksIGZv
cm1TdGF0ZSwgW3RoaXMsIHByb3RlY3RlZEZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKV0gKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9ybVN0YXRlKiwgU2hvdWxkQ29udGludWUgc2hv
dWxkQ29udGludWUpIHsKKyAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmF2aWdhdGlvblBv
bGljeShXVEZNb3ZlKHJlcXVlc3QpLCBmYWxzZSAvKiBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25z
ZSAqLywgb2xkRG9jdW1lbnRMb2FkZXIuZ2V0KCksIGZvcm1TdGF0ZSwgW3RoaXMsIHByb3RlY3Rl
ZEZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgV2Vha1B0cjxGb3JtU3RhdGU+JiYsIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSB7
CiAgICAgICAgICAgICBjb250aW51ZUZyYWdtZW50U2Nyb2xsQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5
KHJlcXVlc3QsIHNob3VsZENvbnRpbnVlID09IFNob3VsZENvbnRpbnVlOjpZZXMpOwogICAgICAg
ICB9LCBQb2xpY3lEZWNpc2lvbk1vZGU6OlN5bmNocm9ub3VzKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtMTQxMiw4ICsxNDEyLDggQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChGcmFtZUxvYWRSZXF1
ZXN0JiYgcmVxdWVzdCkKIAogICAgIGlmIChyZXF1ZXN0LnNob3VsZENoZWNrTmV3V2luZG93UG9s
aWN5KCkpIHsKICAgICAgICAgTmF2aWdhdGlvbkFjdGlvbiBhY3Rpb24geyByZXF1ZXN0LnJlcXVl
c3RlcigpLCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCBJbml0aWF0ZWRCeU1haW5GcmFtZTo6
VW5rbm93biwgTmF2aWdhdGlvblR5cGU6Ok90aGVyLCByZXF1ZXN0LnNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3koKSB9OwotICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOZXdXaW5kb3dQ
b2xpY3koV1RGTW92ZShhY3Rpb24pLCBXVEZNb3ZlKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkp
LCBudWxscHRyLCByZXF1ZXN0LmZyYW1lTmFtZSgpLCBbdGhpc10gKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVO
YW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFNob3VsZENvbnRpbnVlIHNob3Vs
ZENvbnRpbnVlKSB7Ci0gICAgICAgICAgICBjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGlj
eShyZXF1ZXN0LCBmb3JtU3RhdGUsIGZyYW1lTmFtZSwgYWN0aW9uLCBzaG91bGRDb250aW51ZSwg
QWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpT
dXBwcmVzcyk7CisgICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05ld1dpbmRvd1BvbGljeShX
VEZNb3ZlKGFjdGlvbiksIFdURk1vdmUocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSksIG51bGxw
dHIsIHJlcXVlc3QuZnJhbWVOYW1lKCksIFt0aGlzXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJh
bWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFNob3VsZENvbnRpbnVlIHNo
b3VsZENvbnRpbnVlKSB7CisgICAgICAgICAgICBjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1Bv
bGljeShyZXF1ZXN0LCBmb3JtU3RhdGUuZ2V0KCksIGZyYW1lTmFtZSwgYWN0aW9uLCBzaG91bGRD
b250aW51ZSwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVy
UG9saWN5OjpTdXBwcmVzcyk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIHJldHVybjsKQEAgLTE1
MjYsNyArMTUyNiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIo
RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgRnJhbWVMb2FkVHlwZSB0CiAgICAgICAgIG9sZERvY3Vt
ZW50TG9hZGVyLT5zZXRUcmlnZ2VyaW5nQWN0aW9uKGFjdGlvbik7CiAgICAgICAgIG9sZERvY3Vt
ZW50TG9hZGVyLT5zZXRMYXN0Q2hlY2tlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KCkpOwogICAg
ICAgICBwb2xpY3lDaGVja2VyKCkuc3RvcENoZWNrKCk7Ci0gICAgICAgIHBvbGljeUNoZWNrZXIo
KS5jaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci0+cmVxdWVzdCgp
KSwgZmFsc2UgLyogZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgKi8sIG9sZERvY3VtZW50TG9h
ZGVyLmdldCgpLCBmb3JtU3RhdGUsIFt0aGlzLCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9m
cmFtZSldIChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZvcm1TdGF0ZSosIFNob3Vs
ZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSB7CisgICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVj
a05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci0+cmVxdWVzdCgpKSwgZmFs
c2UgLyogZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgKi8sIG9sZERvY3VtZW50TG9hZGVyLmdl
dCgpLCBmb3JtU3RhdGUsIFt0aGlzLCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9mcmFtZSld
IChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYWtQdHI8Rm9ybVN0YXRlPiYmLCBT
aG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgewogICAgICAgICAgICAgY29udGludWVGcmFn
bWVudFNjcm9sbEFmdGVyTmF2aWdhdGlvblBvbGljeShyZXF1ZXN0LCBzaG91bGRDb250aW51ZSA9
PSBTaG91bGRDb250aW51ZTo6WWVzKTsKICAgICAgICAgfSwgUG9saWN5RGVjaXNpb25Nb2RlOjpT
eW5jaHJvbm91cyk7CiAgICAgICAgIHJldHVybjsKQEAgLTE1NjAsOCArMTU2MCw4IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRl
ciwgRnJhbWVMb2FkVHlwZSB0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwb2xpY3lD
aGVja2VyKCkuY2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdChsb2FkZXItPnJl
cXVlc3QoKSksIGZhbHNlIC8qIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlICovLCBsb2FkZXIs
IGZvcm1TdGF0ZSwgW3RoaXMsIHByb3RlY3RlZEZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKSwgYWxs
b3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBjb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRpb25I
YW5kbGVyQ2FsbGVyLnJlbGVhc2UoKV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Rm9ybVN0YXRlKiBmb3JtU3RhdGUsIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSB7Ci0g
ICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShyZXF1ZXN0LCBmb3JtU3Rh
dGUsIHNob3VsZENvbnRpbnVlLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwpOworICAgIHBv
bGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0KGxvYWRl
ci0+cmVxdWVzdCgpKSwgZmFsc2UgLyogZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgKi8sIGxv
YWRlciwgZm9ybVN0YXRlLCBbdGhpcywgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUp
LCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIGNvbXBsZXRpb25IYW5kbGVyID0gY29tcGxl
dGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUsIFNob3VsZENvbnRpbnVlIHNob3Vs
ZENvbnRpbnVlKSB7CisgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShy
ZXF1ZXN0LCBmb3JtU3RhdGUuZ2V0KCksIHNob3VsZENvbnRpbnVlLCBhbGxvd05hdmlnYXRpb25U
b0ludmFsaWRVUkwpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwogfQpA
QCAtMjg1NCwxMyArMjg1NCwxMyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3Qo
RnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZQogCiAgICAgaWYg
KCFmcmFtZU5hbWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFRoZSBzZWFyY2ggZm9yIGEgdGFy
Z2V0IGZyYW1lIGlzIGRvbmUgZWFybGllciBpbiB0aGUgY2FzZSBvZiBmb3JtIHN1Ym1pc3Npb24u
Ci0gICAgICAgIGlmIChGcmFtZSogdGFyZ2V0RnJhbWUgPSBmb3JtU3RhdGUgPyAwIDogZmluZEZy
YW1lRm9yTmF2aWdhdGlvbihmcmFtZU5hbWUpKSB7Ci0gICAgICAgICAgICB0YXJnZXRGcmFtZS0+
bG9hZGVyKCkubG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKHdvcmtpbmdSZXNvdXJjZVJlcXVlc3Qs
IGFjdGlvbiwgbG9ja0hpc3RvcnksIGxvYWRUeXBlLCBXVEZNb3ZlKGZvcm1TdGF0ZSksIGFsbG93
TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAg
ICAgICBpZiAoYXV0byogdGFyZ2V0RnJhbWUgPSBmb3JtU3RhdGUgPyBudWxscHRyIDogZmluZEZy
YW1lRm9yTmF2aWdhdGlvbihmcmFtZU5hbWUpKSB7CisgICAgICAgICAgICB0YXJnZXRGcmFtZS0+
bG9hZGVyKCkubG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKHdvcmtpbmdSZXNvdXJjZVJlcXVlc3Qs
IGFjdGlvbiwgbG9ja0hpc3RvcnksIGxvYWRUeXBlLCBmb3JtU3RhdGUsIGFsbG93TmF2aWdhdGlv
blRvSW52YWxpZFVSTCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmV3V2lu
ZG93UG9saWN5KFdURk1vdmUoYWN0aW9uKSwgV1RGTW92ZSh3b3JraW5nUmVzb3VyY2VSZXF1ZXN0
KSwgV1RGTW92ZShmb3JtU3RhdGUpLCBmcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05hdmlnYXRpb25U
b0ludmFsaWRVUkwsIG9wZW5lclBvbGljeSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9ybVN0
YXRlKiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9u
QWN0aW9uJiBhY3Rpb24sIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSB7Ci0gICAgICAg
ICAgICBjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeShyZXF1ZXN0LCBmb3JtU3RhdGUs
IGZyYW1lTmFtZSwgYWN0aW9uLCBzaG91bGRDb250aW51ZSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZh
bGlkVVJMLCBvcGVuZXJQb2xpY3kpOworICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOZXdX
aW5kb3dQb2xpY3koV1RGTW92ZShhY3Rpb24pLCBXVEZNb3ZlKHdvcmtpbmdSZXNvdXJjZVJlcXVl
c3QpLCBmb3JtU3RhdGUsIGZyYW1lTmFtZSwgW3RoaXMsIGFsbG93TmF2aWdhdGlvblRvSW52YWxp
ZFVSTCwgb3BlbmVyUG9saWN5LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWFrUHRyPEZvcm1T
dGF0ZT4mJiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJiBhY3Rpb24sIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSB7CisgICAg
ICAgICAgICBjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeShyZXF1ZXN0LCBmb3JtU3Rh
dGUuZ2V0KCksIGZyYW1lTmFtZSwgYWN0aW9uLCBzaG91bGRDb250aW51ZSwgYWxsb3dOYXZpZ2F0
aW9uVG9JbnZhbGlkVVJMLCBvcGVuZXJQb2xpY3kpOwogICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTI4NjgsNyArMjg2OCw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYg
cmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWZlCiAKICAgICAvLyBtdXN0IGdyYWIgdGhpcyBub3cs
IHNpbmNlIHRoaXMgbG9hZCBtYXkgc3RvcCB0aGUgcHJldmlvdXMgbG9hZCBhbmQgY2xlYXIgdGhp
cyBmbGFnCiAgICAgYm9vbCBpc1JlZGlyZWN0ID0gbV9xdWlja1JlZGlyZWN0Q29taW5nOwotICAg
IGxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbih3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LCBhY3Rpb24s
IGxvY2tIaXN0b3J5LCBsb2FkVHlwZSwgV1RGTW92ZShmb3JtU3RhdGUpLCBhbGxvd05hdmlnYXRp
b25Ub0ludmFsaWRVUkwsIFt0aGlzLCBpc1JlZGlyZWN0LCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VS
ZWYobV9mcmFtZSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildIHsKKyAgICBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24od29ya2luZ1Jlc291cmNlUmVxdWVz
dCwgYWN0aW9uLCBsb2NrSGlzdG9yeSwgbG9hZFR5cGUsIGZvcm1TdGF0ZSwgYWxsb3dOYXZpZ2F0
aW9uVG9JbnZhbGlkVVJMLCBbdGhpcywgaXNSZWRpcmVjdCwgcHJvdGVjdGVkRnJhbWUgPSBtYWtl
UmVmKG1fZnJhbWUpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSB7CiAgICAgICAgIGlmIChpc1JlZGlyZWN0KSB7CiAgICAgICAgICAgICBtX3F1aWNrUmVk
aXJlY3RDb21pbmcgPSBmYWxzZTsKICAgICAgICAgICAgIGlmIChtX3Byb3Zpc2lvbmFsRG9jdW1l
bnRMb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKaW5kZXggYjY2
OTBlYTk2NjVhMTUxNWM5N2E2M2FkYzk0MDc3MzJiOTgxOTEyNy4uN2M0MWRjNzUwMzc4ODY1MzZl
NGE3Mzk1OWM3OTM2OTUzMDMxNWUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1BvbGljeUNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVj
a2VyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4g
KGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKICAqCkBAIC0xMDksNyArMTA5LDcgQEAgdm9p
ZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgYm9vbCBkaWRSZWMKICAgICAvLyBEb24ndCBhc2sgbW9yZSB0aGFuIG9uY2UgZm9y
IHRoZSBzYW1lIHJlcXVlc3Qgb3IgaWYgd2UgYXJlIGxvYWRpbmcgYW4gZW1wdHkgVVJMLgogICAg
IC8vIFRoaXMgYXZvaWRzIGNvbmZ1c2lvbiBvbiB0aGUgcGFydCBvZiB0aGUgY2xpZW50LgogICAg
IGlmIChlcXVhbElnbm9yaW5nSGVhZGVyRmllbGRzKHJlcXVlc3QsIGxvYWRlci0+bGFzdENoZWNr
ZWRSZXF1ZXN0KCkpIHx8ICghcmVxdWVzdC5pc051bGwoKSAmJiByZXF1ZXN0LnVybCgpLmlzRW1w
dHkoKSkpIHsKLSAgICAgICAgZnVuY3Rpb24oUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBudWxs
cHRyLCBTaG91bGRDb250aW51ZTo6WWVzKTsKKyAgICAgICAgZnVuY3Rpb24oUmVzb3VyY2VSZXF1
ZXN0KHJlcXVlc3QpLCB7IH0sIFNob3VsZENvbnRpbnVlOjpZZXMpOwogICAgICAgICBsb2FkZXIt
PnNldExhc3RDaGVja2VkUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2
aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBib29sIGRpZFJlYwogI2Vu
ZGlmCiAgICAgICAgIGlmIChpc0JhY2tGb3J3YXJkTG9hZFR5cGUobV9sb2FkVHlwZSkpCiAgICAg
ICAgICAgICBtX2xvYWRUeXBlID0gRnJhbWVMb2FkVHlwZTo6UmVsb2FkOwotICAgICAgICBmdW5j
dGlvbihXVEZNb3ZlKHJlcXVlc3QpLCBudWxscHRyLCBzaG91bGRDb250aW51ZSA/IFNob3VsZENv
bnRpbnVlOjpZZXMgOiBTaG91bGRDb250aW51ZTo6Tm8pOworICAgICAgICBmdW5jdGlvbihXVEZN
b3ZlKHJlcXVlc3QpLCB7IH0sIHNob3VsZENvbnRpbnVlID8gU2hvdWxkQ29udGludWU6OlllcyA6
IFNob3VsZENvbnRpbnVlOjpObyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzNCw3
ICsxMzQsNyBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBib29sIGRpZFJlYwogICAgICAgICAgICAgLy8gcmV2ZWFs
IHRoYXQgdGhlIGZyYW1lIHdhcyBibG9ja2VkLiBUaGlzIHdheSwgaXQgbG9va3MgbGlrZSBhbnkg
b3RoZXIgY3Jvc3Mtb3JpZ2luIHBhZ2UgbG9hZC4KICAgICAgICAgICAgIG1fZnJhbWUub3duZXJF
bGVtZW50KCktPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2
ZW50LCBmYWxzZSwgZmFsc2UpKTsKICAgICAgICAgfQotICAgICAgICBmdW5jdGlvbihXVEZNb3Zl
KHJlcXVlc3QpLCBudWxscHRyLCBTaG91bGRDb250aW51ZTo6Tm8pOworICAgICAgICBmdW5jdGlv
bihXVEZNb3ZlKHJlcXVlc3QpLCB7IH0sIFNob3VsZENvbnRpbnVlOjpObyk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNo
ZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBib29sIGRpZFJl
YwogI2lmIFVTRShRVUlDS19MT09LKQogICAgIC8vIEFsd2F5cyBhbGxvdyBRdWlja0xvb2stZ2Vu
ZXJhdGVkIFVSTHMgYmFzZWQgb24gdGhlIHByb3RvY29sIHNjaGVtZS4KICAgICBpZiAoIXJlcXVl
c3QuaXNOdWxsKCkgJiYgaXNRdWlja0xvb2tQcmV2aWV3VVJMKHJlcXVlc3QudXJsKCkpKQotICAg
ICAgICByZXR1cm4gZnVuY3Rpb24oV1RGTW92ZShyZXF1ZXN0KSwgZm9ybVN0YXRlLCBTaG91bGRD
b250aW51ZTo6WWVzKTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKFdURk1vdmUocmVxdWVzdCks
IFdURk1vdmUobWFrZVdlYWtQdHIoZm9ybVN0YXRlKSksIFNob3VsZENvbnRpbnVlOjpZZXMpOwog
I2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCkBAIC0xNjgsNyArMTY4LDcg
QEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgYm9vbCBkaWRSZWMKIAogICAgIG1fZGVsZWdhdGVJc0RlY2lkaW5nTmF2
aWdhdGlvblBvbGljeSA9IHRydWU7CiAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lID0gYWN0
aW9uLmRvd25sb2FkQXR0cmlidXRlKCkuaXNFbXB0eSgpID8gbnVsbEF0b20oKSA6IGFjdGlvbi5k
b3dubG9hZEF0dHJpYnV0ZSgpOwotICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0
Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGFjdGlvbiwgcmVxdWVzdCwgZGlkUmVj
ZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIGZvcm1TdGF0ZSwgcG9saWN5RGVjaXNpb25Nb2RlLCBbdGhp
cywgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKSwgcmVxdWVzdCA9IFJlc291cmNlUmVxdWVz
dChyZXF1ZXN0KSwgZm9ybVN0YXRlID0gbWFrZVJlZlB0cihmb3JtU3RhdGUpLCBzdWdnZXN0ZWRG
aWxlbmFtZSA9IFdURk1vdmUoc3VnZ2VzdGVkRmlsZW5hbWUpLCBibG9iVVJMTGlmZXRpbWVFeHRl
bnNpb24gPSBXVEZNb3ZlKGJsb2JVUkxMaWZldGltZUV4dGVuc2lvbildKFBvbGljeUFjdGlvbiBw
b2xpY3lBY3Rpb24pIG11dGFibGUgeworICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGFjdGlvbiwgcmVxdWVzdCwgZGlk
UmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIGZvcm1TdGF0ZSwgcG9saWN5RGVjaXNpb25Nb2RlLCBb
dGhpcywgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKSwgcmVxdWVzdCA9IFJlc291cmNlUmVx
dWVzdChyZXF1ZXN0KSwgZm9ybVN0YXRlID0gbWFrZVdlYWtQdHIoZm9ybVN0YXRlKSwgc3VnZ2Vz
dGVkRmlsZW5hbWUgPSBXVEZNb3ZlKHN1Z2dlc3RlZEZpbGVuYW1lKSwgYmxvYlVSTExpZmV0aW1l
RXh0ZW5zaW9uID0gV1RGTW92ZShibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24pXShQb2xpY3lBY3Rp
b24gcG9saWN5QWN0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgbV9kZWxlZ2F0ZUlzRGVjaWRpbmdO
YXZpZ2F0aW9uUG9saWN5ID0gZmFsc2U7CiAKICAgICAgICAgc3dpdGNoIChwb2xpY3lBY3Rpb24p
IHsKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlv
blBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBib29sIGRpZFJlYwogICAgICAgICAg
ICAgICAgIGhhbmRsZVVuaW1wbGVtZW50YWJsZVBvbGljeShtX2ZyYW1lLmxvYWRlcigpLmNsaWVu
dCgpLmNhbm5vdFNob3dVUkxFcnJvcihyZXF1ZXN0KSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZ1bmN0aW9uKHsgfSwgbnVsbHB0ciwgU2hvdWxkQ29udGludWU6Ok5vKTsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihXVEZNb3ZlKHJlcXVlc3QpLCBmb3JtU3Rh
dGUuZ2V0KCksIFNob3VsZENvbnRpbnVlOjpZZXMpOworICAgICAgICAgICAgcmV0dXJuIGZ1bmN0
aW9uKFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoZm9ybVN0YXRlKSwgU2hvdWxkQ29udGludWU6
Olllcyk7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfSk7
CkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05ld1dpbmRvd1Bv
bGljeShOYXZpZ2F0aW9uQWN0aW9uJiYgbmF2aWdhdGlvbkFjdGlvbiwgUmUKIAogICAgIGF1dG8g
YmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uID0gZXh0ZW5kQmxvYlVSTExpZmV0aW1lSWZOZWNlc3Nh
cnkocmVxdWVzdCk7CiAKLSAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKG5hdmlnYXRpb25BY3Rpb24sIHJlcXVlc3QsIGZv
cm1TdGF0ZSwgZnJhbWVOYW1lLCBbZnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpLCByZXF1ZXN0LCBm
b3JtU3RhdGUgPSBtYWtlUmVmUHRyKGZvcm1TdGF0ZSksIGZyYW1lTmFtZSwgbmF2aWdhdGlvbkFj
dGlvbiwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKSwgYmxvYlVSTExpZmV0aW1lRXh0ZW5z
aW9uID0gV1RGTW92ZShibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24pXShQb2xpY3lBY3Rpb24gcG9s
aWN5QWN0aW9uKSBtdXRhYmxlIHsKKyAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKG5hdmlnYXRpb25BY3Rpb24sIHJlcXVl
c3QsIGZvcm1TdGF0ZSwgZnJhbWVOYW1lLCBbZnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpLCByZXF1
ZXN0LCBmb3JtU3RhdGUgPSBtYWtlV2Vha1B0cihmb3JtU3RhdGUpLCBmcmFtZU5hbWUsIG5hdmln
YXRpb25BY3Rpb24sIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbiksIGJsb2JVUkxMaWZldGlt
ZUV4dGVuc2lvbiA9IFdURk1vdmUoYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uKV0oUG9saWN5QWN0
aW9uIHBvbGljeUFjdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIHN3aXRjaCAocG9saWN5QWN0aW9u
KSB7CiAgICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpEb3dubG9hZDoKICAgICAgICAgICAgIGZy
YW1lLT5sb2FkZXIoKS5jbGllbnQoKS5zdGFydERvd25sb2FkKHJlcXVlc3QpOwpAQCAtMjEzLDcg
KzIxMyw3IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOZXdXaW5kb3dQb2xpY3koTmF2aWdh
dGlvbkFjdGlvbiYmIG5hdmlnYXRpb25BY3Rpb24sIFJlCiAgICAgICAgICAgICAvLyBJdCBpcyBp
bnZhbGlkIHRvIGdldCBhICJTdXNwZW5kIiBwb2xpY3kgZm9yIG5ldyB3aW5kb3dzLCBhcyB0aGUg
b2xkIGRvY3VtZW50IGlzIG5vdCBnb2luZyBhd2F5LgogICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgY2FzZSBQb2xpY3lBY3Rpb246OlVzZToKLSAgICAg
ICAgICAgIGZ1bmN0aW9uKHJlcXVlc3QsIGZvcm1TdGF0ZS5nZXQoKSwgZnJhbWVOYW1lLCBuYXZp
Z2F0aW9uQWN0aW9uLCBTaG91bGRDb250aW51ZTo6WWVzKTsKKyAgICAgICAgICAgIGZ1bmN0aW9u
KHJlcXVlc3QsIFdURk1vdmUoZm9ybVN0YXRlKSwgZnJhbWVOYW1lLCBuYXZpZ2F0aW9uQWN0aW9u
LCBTaG91bGRDb250aW51ZTo6WWVzKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Qb2xpY3lDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hl
Y2tlci5oCmluZGV4IGMzMjllYzQzYjgxZTM1ZThiNzNhYmU2ZTYwMWQxM2Q0MjUwODUyYWYuLjZm
MTEyMTE5MTQ2YzQ4YjRlYjRlOWIwMjY4MWRjMGU5YjJhZjU2ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1BvbGljeUNoZWNrZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDYtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4g
KGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTMxLDYg
KzMxLDcgQEAKIAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJSZXNv
dXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpAQCAtNTks
OCArNjAsOCBAQCBlbnVtIGNsYXNzIFNob3VsZENvbnRpbnVlIHsKIAogZW51bSBjbGFzcyBQb2xp
Y3lEZWNpc2lvbk1vZGUgeyBTeW5jaHJvbm91cywgQXN5bmNocm9ub3VzIH07CiAKLXVzaW5nIE5l
d1dpbmRvd1BvbGljeURlY2lzaW9uRnVuY3Rpb24gPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1TdGF0ZSosIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1l
LCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgU2hvdWxkQ29udGludWUpPjsKLXVzaW5nIE5hdmln
YXRpb25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9uID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNv
dXJjZVJlcXVlc3QmJiwgRm9ybVN0YXRlKiwgU2hvdWxkQ29udGludWUpPjsKK3VzaW5nIE5ld1dp
bmRvd1BvbGljeURlY2lzaW9uRnVuY3Rpb24gPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIFdlYWtQdHI8Rm9ybVN0YXRlPiYmLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIFNob3VsZENvbnRpbnVlKT47Cit1c2lu
ZyBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25GdW5jdGlvbiA9IENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVzb3VyY2VSZXF1ZXN0JiYsIFdlYWtQdHI8Rm9ybVN0YXRlPiYmLCBTaG91bGRDb250aW51
ZSk+OwogCiBjbGFzcyBQb2xpY3lDaGVja2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQ
b2xpY3lDaGVja2VyKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341019</attachid>
            <date>2018-05-22 14:03:15 -0700</date>
            <delta_ts>2018-05-22 14:16:11 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-185877-20180522140314.patch</filename>
            <type>text/plain</type>
            <size>23374</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxOTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmY4MjU0YjAxN2VhODc4
ZjkwNzE5M2U0N2ExODNiZDQ4NzhjMTljZS4uNTEwODFlMjM3OWNkZmM2Y2Q5Y2VlYjliMTliMDIy
NzAwZmUxNThmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE4LTA1LTIyICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIEF2b2lkIGtlZXBpbmcg
Rm9ybVN0YXRlIGFsaXZlIGxvbmdlciB0aGFuIG5lY2Vzc2FyeQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1ODc3CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zOTMyOTIxOT4KKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAg
ICAgICAgQSBudW1iZXIgb2YgY3Jhc2ggZml4ZXMgd2VyZSBkb25lIHRvIHByZXZlbnQgRm9ybVN0
YXRlIG9iamVjdHMgZnJvbSBiZWluZworICAgICAgICBhY2Nlc3NlZCBhZnRlciB0aGVpciByZWxl
dmFudCBGcmFtZXMgaGFkIGJlZW4gZGVzdHJveWVkLiBVbmZvcnR1bmF0ZWx5LCB0aGlzCisgICAg
ICAgIGNvdWxkIGNhdXNlIHRoZSBGb3JtU3RhdGUgdG8gcGVyc2lzdCBhZnRlciB0aGUgb3duaW5n
IEZyYW1lIGhhZCBiZWVuCisgICAgICAgIGRlc3Ryb3llZCwgcmVzdWx0aW5nIGluIG51bGxwdHIg
ZGVyZWZlcmVuY2VzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyB0aGUgZm9sbG93aW5nOgor
CisgICAgICAgIDEuIENoYW5nZXMgdG8gdXNlIFdlYWtQdHIncyBmb3IgRm9ybVN0YXRlIG9iamVj
dHMgcGFzc2VkIHRvIGNvbXBsZXRpb24gaGFuZGxlcnMsCisgICAgICAgICAgIHJhdGhlciB0aGFu
IFJldGFpblB0ciwgc2luY2UgdGhvc2UgY29tcGxldGlvbiBoYW5kbGVycyBtaWdodCBmaXJlIGFz
IHBhcnQgb2YKKyAgICAgICAgICAgdGhlIGNsZWFuLXVwIHByb2Nlc3MgZHVyaW5nIEZyYW1lIGRl
c3RydWN0aW9uLiBUaGlzIGFsbG93cyB1cyB0byB1c2UgdGhlIEZvcm1TdGF0ZQorICAgICAgICAg
ICBpZiB0aGV5IGFyZSBzdGlsbCB2YWxpZCwgYnV0IGdyYWNlZnVsbHkgaGFuZGxlIGNhc2VzIHdo
ZXJlIGEgZm9ybSBzdWJtaXNzaW9uCisgICAgICAgICAgIGlzIGNhbmNlbGxlZCBpbi1mbGlnaHQu
CisgICAgICAgIDIuIFJlbW92ZXMgc29tZSBleHRyYW5lb3VzIFdURk1vdmUoKSBjYWxscyBiZWlu
ZyBtYWRlIG9uIGJhcmUgRm9ybVN0YXRlIHBvaW50ZXJzLgorICAgICAgICAzLiBDaGFuZ2VzIHRo
ZSB0cmFwIGZyb20gQnVnIDE4MzcwNCBzbyB0aGF0IGl0IG9ubHkgZmlyZXMgaWYgdGhlIEZvcm1T
dGF0ZSBvYmplY3QKKyAgICAgICAgICAgaXMgYmVpbmcgcmV0YWluZWQgbW9yZSB0aGFuIG9uY2Uu
CisKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6IFVwZGF0ZSBmb3IgbmV3IENvbXBs
ZXRpb25IYW5kbGVyCisgICAgICAgIHNpZ25hdHVyZS4KKyAgICAgICAgKiBsb2FkZXIvRm9ybVN0
YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1TdGF0ZTo6d2lsbERldGFjaFBhZ2UpOiBS
ZXZpc2UgdHJhcCB0byBjaGVjayBmb3IgcmV0YWluIGNvdW50cworICAgICAgICBhYm92ZSBvbmUu
CisgICAgICAgICogbG9hZGVyL0Zvcm1TdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybVN0
YXRlOjp3ZWFrUHRyRmFjdG9yeSBjb25zdCk6IEFkZGVkLgorICAgICAgICAqIGxvYWRlci9GcmFt
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZEZyYW1lUmVx
dWVzdCk6IFJldmlzZSB0byB1c2UgV2Vha1B0ciBmb3IgRm9ybVN0YXRlCisgICAgICAgIHBhc3Nl
ZCB0byB0aGUgY29tcGxldGlvbiBoYW5kbGVyLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmxvYWRVUkwpOiBVcGRhdGUgZm9yIG5ldyBDb21wbGV0aW9uSGFuZGxlciBzaWduYXR1cmUu
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3QpOiBEaXR0by4KKyAg
ICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb2xp
Y3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3kpOiBSZXZpc2UgdG8gdXNlIFdlYWtQdHIg
Zm9yCisgICAgICAgIEZvcm1TdGF0ZSBwYXNzZWQgdG8gdGhlIGNvbXBsZXRpb24gaGFuZGxlci4g
UmVtb3ZlIHNvbWUgZXh0cmFuZW91cyBXVEZNb3ZlKCkKKyAgICAgICAgY2FsbHMgb24gYmFyZSBw
b2ludGVycy4KKyAgICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmV3V2luZG93
UG9saWN5KTogRGl0dG8uCisgICAgICAgICogbG9hZGVyL1BvbGljeUNoZWNrZXIuaDoKKwogMjAx
OC0wNS0xOCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFtX
ZWIgQW5pbWF0aW9uc10gVHVybiBXZWIgQW5pbWF0aW9ucyB3aXRoIENTUyBpbnRlZ3JhdGlvbiBv
biBmb3IgdGVzdCBydW5uZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cAppbmRleCAyZWY2ZjQ5MjIwYjM4MDQwM2Y0MmU0MDhlOTZiMTNmMzM0ODBiMWVhLi45NjdhNDkz
OTg2ZDI4ODRlNTAzNzk3NTFkZTAyNGU1NTEzZWRlMThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CkBAIC02NDEsNyArNjQxLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRS
ZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmMKICAgICBp
ZiAoIWRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlICYmIHNob3VsZENvbnRpbnVlICE9IFNob3Vs
ZENvbnRpbnVlOjpGb3JTdXNwZW5zaW9uKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CiAKLSAgICBhdXRvIG5hdmlnYXRpb25Qb2xpY3lDb21w
bGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBGb3JtU3RhdGUqLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51
ZSkgbXV0YWJsZSB7CisgICAgYXV0byBuYXZpZ2F0aW9uUG9saWN5Q29tcGxldGlvbkhhbmRsZXIg
PSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgV2Vha1B0cjxGb3JtU3RhdGU+JiYsIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSBt
dXRhYmxlIHsKICAgICAgICAgbV93YWl0aW5nRm9yTmF2aWdhdGlvblBvbGljeSA9IGZhbHNlOwog
ICAgICAgICBzd2l0Y2ggKHNob3VsZENvbnRpbnVlKSB7CiAgICAgICAgIGNhc2UgU2hvdWxkQ29u
dGludWU6OkZvclN1c3BlbnNpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Rm9ybVN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3RhdGUuY3BwCmluZGV4
IDlmYThiZGQzZTFjYzM2YWIxMWNjZGU1ZjMwMTk2NTI4OTRiZmQwNWIuLmY4NzAwYjFhZDM4MzFh
M2Q0MzE2MzA4MWE4ZjBjMDYyYjZjYTA2ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Gb3JtU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3RhdGUu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNTIsNyArNTIsNyBAQCBSZWY8Rm9ybVN0YXRlPiBGb3JtU3RhdGU6OmNyZWF0ZShI
VE1MRm9ybUVsZW1lbnQmIGZvcm0sIFN0cmluZ1BhaXJWZWN0b3ImJiB0ZXh0Rgogdm9pZCBGb3Jt
U3RhdGU6OndpbGxEZXRhY2hQYWdlKCkKIHsKICAgICAvLyBCZWFydHJhcCBmb3IgPHJkYXI6Ly9w
cm9ibGVtLzM3NTc5MzU0PgotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
UkVMRUFTRV9BU1NFUlQoaGFzT25lUmVmKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRm9ybVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN0
YXRlLmgKaW5kZXggMjYzNGE5N2IxMjM2Yzk3NjIzNGU1MGRhN2Q1YzIwMzk3Y2RjYzJmYi4uNzc1
ODQzMjlhZjE2NDI0NjUwYzAwZGI4YTc5M2Q5ZDk1NWY1MDUwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0Zvcm1TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
b3JtU3RhdGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmgiCisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NDksNiArNTAsOCBAQCBwdWJsaWM6CiAgICAgRG9jdW1lbnQmIHNvdXJjZURvY3VtZW50KCkgY29u
c3QgeyByZXR1cm4gbV9zb3VyY2VEb2N1bWVudDsgfQogICAgIEZvcm1TdWJtaXNzaW9uVHJpZ2dl
ciBmb3JtU3VibWlzc2lvblRyaWdnZXIoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1TdWJtaXNzaW9u
VHJpZ2dlcjsgfQogCisgICAgYXV0byYgd2Vha1B0ckZhY3RvcnkoKSBjb25zdCB7IHJldHVybiBt
X3dlYWtGYWN0b3J5OyB9CisKIHByaXZhdGU6CiAgICAgRm9ybVN0YXRlKEhUTUxGb3JtRWxlbWVu
dCYsIFN0cmluZ1BhaXJWZWN0b3ImJiB0ZXh0RmllbGRWYWx1ZXMsIERvY3VtZW50JiwgRm9ybVN1
Ym1pc3Npb25UcmlnZ2VyKTsKICAgICB2b2lkIHdpbGxEZXRhY2hQYWdlKCkgb3ZlcnJpZGU7CkBA
IC01Nyw2ICs2MCw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nUGFpclZlY3RvciBtX3RleHRGaWVs
ZFZhbHVlczsKICAgICBSZWY8RG9jdW1lbnQ+IG1fc291cmNlRG9jdW1lbnQ7CiAgICAgRm9ybVN1
Ym1pc3Npb25UcmlnZ2VyIG1fZm9ybVN1Ym1pc3Npb25UcmlnZ2VyOworICAgIFdlYWtQdHJGYWN0
b3J5PEZvcm1TdGF0ZT4gbV93ZWFrRmFjdG9yeTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDE2YmY4MjM1NWZlMDY4
MzZkNDMzMGFiMWE4MDZlNTUzYjRhMGY1ODEuLjg3Nzk4ZWU4ZTVkYzA3YTAyM2NhYmY1NTRiNjRi
MjFkYWIwZTk3NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIw
MDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9y
Y2htb2JpbGUuY29tLykKICAqIENvcHlyaWdodCAoQykgMjAwOCBBbHAgVG9rZXIgPGFscEBhdG9r
ZXIuY29tPgpAQCAtMTIyNiw3ICsxMjI2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEZyYW1l
UmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgRXZlbnQqIGV2ZW50LCBGb3IKICAg
ICBlbHNlCiAgICAgICAgIGxvYWRUeXBlID0gRnJhbWVMb2FkVHlwZTo6U3RhbmRhcmQ7CiAKLSAg
ICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZEZyYW1lID0gbWFrZVJl
ZihtX2ZyYW1lKSwgZm9ybVN0YXRlID0gbWFrZVJlZlB0cihmb3JtU3RhdGUpLCBmcmFtZU5hbWUg
PSByZXF1ZXN0LmZyYW1lTmFtZSgpXSB7CisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0
aGlzLCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9mcmFtZSksIGZvcm1TdGF0ZSA9IG1ha2VX
ZWFrUHRyKGZvcm1TdGF0ZSksIGZyYW1lTmFtZSA9IHJlcXVlc3QuZnJhbWVOYW1lKCldIHsKICAg
ICAgICAgLy8gRklYTUU6IEl0J3MgcG9zc2libGUgdGhpcyB0YXJnZXRGcmFtZSB3aWxsIG5vdCBi
ZSB0aGUgc2FtZSBmcmFtZSB0aGF0IHdhcyB0YXJnZXRlZCBieSB0aGUgYWN0dWFsCiAgICAgICAg
IC8vIGxvYWQgaWYgZnJhbWUgbmFtZXMgaGF2ZSBjaGFuZ2VkLgogICAgICAgICBGcmFtZSogc291
cmNlRnJhbWUgPSBmb3JtU3RhdGUgPyBmb3JtU3RhdGUtPnNvdXJjZURvY3VtZW50KCkuZnJhbWUo
KSA6ICZtX2ZyYW1lOwpAQCAtMTMzNiw4ICsxMzM2LDggQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9h
ZFVSTChGcmFtZUxvYWRSZXF1ZXN0JiYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgU3RyaW5nJiBy
ZWYKIAogICAgIGlmICghdGFyZ2V0RnJhbWUgJiYgIWZyYW1lTmFtZS5pc0VtcHR5KCkpIHsKICAg
ICAgICAgYWN0aW9uID0gYWN0aW9uLmNvcHlXaXRoU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eShzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9BcHBseShtX2ZyYW1lLCBmcmFtZUxvYWRS
ZXF1ZXN0KSk7Ci0gICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05ld1dpbmRvd1BvbGljeShX
VEZNb3ZlKGFjdGlvbiksIFdURk1vdmUocmVxdWVzdCksIGZvcm1TdGF0ZSwgZnJhbWVOYW1lLCBb
dGhpcywgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBvcGVuZXJQb2xpY3ksIGNvbXBsZXRp
b25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpXSAoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5n
JiBmcmFtZU5hbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgU2hvdWxkQ29udGlu
dWUgc2hvdWxkQ29udGludWUpIHsKLSAgICAgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmV3V2lu
ZG93UG9saWN5KHJlcXVlc3QsIGZvcm1TdGF0ZSwgZnJhbWVOYW1lLCBhY3Rpb24sIHNob3VsZENv
bnRpbnVlLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBvbGljeSk7CisgICAg
ICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05ld1dpbmRvd1BvbGljeShXVEZNb3ZlKGFjdGlvbiks
IFdURk1vdmUocmVxdWVzdCksIGZvcm1TdGF0ZSwgZnJhbWVOYW1lLCBbdGhpcywgYWxsb3dOYXZp
Z2F0aW9uVG9JbnZhbGlkVVJMLCBvcGVuZXJQb2xpY3ksIGNvbXBsZXRpb25IYW5kbGVyID0gY29t
cGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJh
bWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFNob3VsZENvbnRpbnVlIHNo
b3VsZENvbnRpbnVlKSB7CisgICAgICAgICAgICBjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1Bv
bGljeShyZXF1ZXN0LCBmb3JtU3RhdGUuZ2V0KCksIGZyYW1lTmFtZSwgYWN0aW9uLCBzaG91bGRD
b250aW51ZSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBvcGVuZXJQb2xpY3kpOwogICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTEzNTYsNyArMTM1Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoRnJhbWVM
b2FkUmVxdWVzdCYmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmCiAgICAgICAg
IG9sZERvY3VtZW50TG9hZGVyLT5zZXRMYXN0Q2hlY2tlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
KCkpOwogICAgICAgICBwb2xpY3lDaGVja2VyKCkuc3RvcENoZWNrKCk7CiAgICAgICAgIHBvbGlj
eUNoZWNrZXIoKS5zZXRMb2FkVHlwZShuZXdMb2FkVHlwZSk7Ci0gICAgICAgIHBvbGljeUNoZWNr
ZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3koV1RGTW92ZShyZXF1ZXN0KSwgZmFsc2UgLyogZGlk
UmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgKi8sIG9sZERvY3VtZW50TG9hZGVyLmdldCgpLCBmb3Jt
U3RhdGUsIFt0aGlzLCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9mcmFtZSldIChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZvcm1TdGF0ZSosIFNob3VsZENvbnRpbnVlIHNob3Vs
ZENvbnRpbnVlKSB7CisgICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xp
Y3koV1RGTW92ZShyZXF1ZXN0KSwgZmFsc2UgLyogZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2Ug
Ki8sIG9sZERvY3VtZW50TG9hZGVyLmdldCgpLCBmb3JtU3RhdGUsIFt0aGlzLCBwcm90ZWN0ZWRG
cmFtZSA9IG1ha2VSZWYobV9mcmFtZSldIChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IFdlYWtQdHI8Rm9ybVN0YXRlPiYmLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgewog
ICAgICAgICAgICAgY29udGludWVGcmFnbWVudFNjcm9sbEFmdGVyTmF2aWdhdGlvblBvbGljeShy
ZXF1ZXN0LCBzaG91bGRDb250aW51ZSA9PSBTaG91bGRDb250aW51ZTo6WWVzKTsKICAgICAgICAg
fSwgUG9saWN5RGVjaXNpb25Nb2RlOjpTeW5jaHJvbm91cyk7CiAgICAgICAgIHJldHVybjsKQEAg
LTE0MTIsOCArMTQxMiw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWQoRnJhbWVMb2FkUmVxdWVz
dCYmIHJlcXVlc3QpCiAKICAgICBpZiAocmVxdWVzdC5zaG91bGRDaGVja05ld1dpbmRvd1BvbGlj
eSgpKSB7CiAgICAgICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uIHsgcmVxdWVzdC5yZXF1ZXN0
ZXIoKSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVu
a25vd24sIE5hdmlnYXRpb25UeXBlOjpPdGhlciwgcmVxdWVzdC5zaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5KCkgfTsKLSAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmV3V2luZG93UG9s
aWN5KFdURk1vdmUoYWN0aW9uKSwgV1RGTW92ZShyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKSwg
bnVsbHB0ciwgcmVxdWVzdC5mcmFtZU5hbWUoKSwgW3RoaXNdIChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFt
ZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBTaG91bGRDb250aW51ZSBzaG91bGRD
b250aW51ZSkgewotICAgICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3ko
cmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIGFjdGlvbiwgc2hvdWxkQ29udGludWUsIEFs
bG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6U3Vw
cHJlc3MpOworICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOZXdXaW5kb3dQb2xpY3koV1RG
TW92ZShhY3Rpb24pLCBXVEZNb3ZlKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpLCBudWxscHRy
LCByZXF1ZXN0LmZyYW1lTmFtZSgpLCBbdGhpc10gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgV2Vha1B0cjxGb3JtU3RhdGU+JiYgZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1l
TmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBTaG91bGRDb250aW51ZSBzaG91
bGRDb250aW51ZSkgeworICAgICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xp
Y3kocmVxdWVzdCwgZm9ybVN0YXRlLmdldCgpLCBmcmFtZU5hbWUsIGFjdGlvbiwgc2hvdWxkQ29u
dGludWUsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBv
bGljeTo6U3VwcHJlc3MpOwogICAgICAgICB9KTsKIAogICAgICAgICByZXR1cm47CkBAIC0xNTI2
LDcgKzE1MjYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVyKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIEZyYW1lTG9hZFR5cGUgdAogICAgICAgICBvbGREb2N1bWVu
dExvYWRlci0+c2V0VHJpZ2dlcmluZ0FjdGlvbihhY3Rpb24pOwogICAgICAgICBvbGREb2N1bWVu
dExvYWRlci0+c2V0TGFzdENoZWNrZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCgpKTsKICAgICAg
ICAgcG9saWN5Q2hlY2tlcigpLnN0b3BDaGVjaygpOwotICAgICAgICBwb2xpY3lDaGVja2VyKCku
Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdChsb2FkZXItPnJlcXVlc3QoKSks
IGZhbHNlIC8qIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlICovLCBvbGREb2N1bWVudExvYWRl
ci5nZXQoKSwgZm9ybVN0YXRlLCBbdGhpcywgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJh
bWUpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqLCBTaG91bGRD
b250aW51ZSBzaG91bGRDb250aW51ZSkgeworICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tO
YXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdChsb2FkZXItPnJlcXVlc3QoKSksIGZhbHNl
IC8qIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlICovLCBvbGREb2N1bWVudExvYWRlci5nZXQo
KSwgZm9ybVN0YXRlLCBbdGhpcywgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpXSAo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiwgU2hv
dWxkQ29udGludWUgc2hvdWxkQ29udGludWUpIHsKICAgICAgICAgICAgIGNvbnRpbnVlRnJhZ21l
bnRTY3JvbGxBZnRlck5hdmlnYXRpb25Qb2xpY3kocmVxdWVzdCwgc2hvdWxkQ29udGludWUgPT0g
U2hvdWxkQ29udGludWU6Olllcyk7CiAgICAgICAgIH0sIFBvbGljeURlY2lzaW9uTW9kZTo6U3lu
Y2hyb25vdXMpOwogICAgICAgICByZXR1cm47CkBAIC0xNTYwLDggKzE1NjAsOCBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIs
IEZyYW1lTG9hZFR5cGUgdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcG9saWN5Q2hl
Y2tlcigpLmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QobG9hZGVyLT5yZXF1
ZXN0KCkpLCBmYWxzZSAvKiBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSAqLywgbG9hZGVyLCBm
b3JtU3RhdGUsIFt0aGlzLCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9mcmFtZSksIGFsbG93
TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgY29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFu
ZGxlckNhbGxlci5yZWxlYXNlKCldIChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZv
cm1TdGF0ZSogZm9ybVN0YXRlLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgewotICAg
ICAgICBjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kocmVxdWVzdCwgZm9ybVN0YXRl
LCBzaG91bGRDb250aW51ZSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKKyAgICBwb2xp
Y3lDaGVja2VyKCkuY2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdChsb2FkZXIt
PnJlcXVlc3QoKSksIGZhbHNlIC8qIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlICovLCBsb2Fk
ZXIsIGZvcm1TdGF0ZSwgW3RoaXMsIHByb3RlY3RlZEZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKSwg
YWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBjb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRp
b25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgV2Vha1B0cjxGb3JtU3RhdGU+JiYgZm9ybVN0YXRlLCBTaG91bGRDb250aW51ZSBzaG91bGRD
b250aW51ZSkgeworICAgICAgICBjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kocmVx
dWVzdCwgZm9ybVN0YXRlLmdldCgpLCBzaG91bGRDb250aW51ZSwgYWxsb3dOYXZpZ2F0aW9uVG9J
bnZhbGlkVVJMKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKIH0KQEAg
LTI4NTQsMTMgKzI4NTQsMTMgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZy
YW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmUKIAogICAgIGlmICgh
ZnJhbWVOYW1lLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBUaGUgc2VhcmNoIGZvciBhIHRhcmdl
dCBmcmFtZSBpcyBkb25lIGVhcmxpZXIgaW4gdGhlIGNhc2Ugb2YgZm9ybSBzdWJtaXNzaW9uLgot
ICAgICAgICBpZiAoRnJhbWUqIHRhcmdldEZyYW1lID0gZm9ybVN0YXRlID8gMCA6IGZpbmRGcmFt
ZUZvck5hdmlnYXRpb24oZnJhbWVOYW1lKSkgewotICAgICAgICAgICAgdGFyZ2V0RnJhbWUtPmxv
YWRlcigpLmxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbih3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LCBh
Y3Rpb24sIGxvY2tIaXN0b3J5LCBsb2FkVHlwZSwgV1RGTW92ZShmb3JtU3RhdGUpLCBhbGxvd05h
dmlnYXRpb25Ub0ludmFsaWRVUkwsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAg
ICAgaWYgKGF1dG8qIHRhcmdldEZyYW1lID0gZm9ybVN0YXRlID8gbnVsbHB0ciA6IGZpbmRGcmFt
ZUZvck5hdmlnYXRpb24oZnJhbWVOYW1lKSkgeworICAgICAgICAgICAgdGFyZ2V0RnJhbWUtPmxv
YWRlcigpLmxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbih3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LCBh
Y3Rpb24sIGxvY2tIaXN0b3J5LCBsb2FkVHlwZSwgZm9ybVN0YXRlLCBhbGxvd05hdmlnYXRpb25U
b0ludmFsaWRVUkwsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05ld1dpbmRv
d1BvbGljeShXVEZNb3ZlKGFjdGlvbiksIFdURk1vdmUod29ya2luZ1Jlc291cmNlUmVxdWVzdCks
IFdURk1vdmUoZm9ybVN0YXRlKSwgZnJhbWVOYW1lLCBbdGhpcywgYWxsb3dOYXZpZ2F0aW9uVG9J
bnZhbGlkVVJMLCBvcGVuZXJQb2xpY3ksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildIChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZvcm1TdGF0
ZSogZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFj
dGlvbiYgYWN0aW9uLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgewotICAgICAgICAg
ICAgY29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kocmVxdWVzdCwgZm9ybVN0YXRlLCBm
cmFtZU5hbWUsIGFjdGlvbiwgc2hvdWxkQ29udGludWUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxp
ZFVSTCwgb3BlbmVyUG9saWN5KTsKKyAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmV3V2lu
ZG93UG9saWN5KFdURk1vdmUoYWN0aW9uKSwgV1RGTW92ZSh3b3JraW5nUmVzb3VyY2VSZXF1ZXN0
KSwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRV
UkwsIG9wZW5lclBvbGljeSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2Vha1B0cjxGb3JtU3Rh
dGU+JiYgZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlv
bkFjdGlvbiYgYWN0aW9uLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgeworICAgICAg
ICAgICAgY29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kocmVxdWVzdCwgZm9ybVN0YXRl
LmdldCgpLCBmcmFtZU5hbWUsIGFjdGlvbiwgc2hvdWxkQ29udGludWUsIGFsbG93TmF2aWdhdGlv
blRvSW52YWxpZFVSTCwgb3BlbmVyUG9saWN5KTsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CkBAIC0yODY4LDcgKzI4NjgsNyBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJl
cXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZQogCiAgICAgLy8gbXVzdCBncmFiIHRoaXMgbm93LCBz
aW5jZSB0aGlzIGxvYWQgbWF5IHN0b3AgdGhlIHByZXZpb3VzIGxvYWQgYW5kIGNsZWFyIHRoaXMg
ZmxhZwogICAgIGJvb2wgaXNSZWRpcmVjdCA9IG1fcXVpY2tSZWRpcmVjdENvbWluZzsKLSAgICBs
b2FkV2l0aE5hdmlnYXRpb25BY3Rpb24od29ya2luZ1Jlc291cmNlUmVxdWVzdCwgYWN0aW9uLCBs
b2NrSGlzdG9yeSwgbG9hZFR5cGUsIFdURk1vdmUoZm9ybVN0YXRlKSwgYWxsb3dOYXZpZ2F0aW9u
VG9JbnZhbGlkVVJMLCBbdGhpcywgaXNSZWRpcmVjdCwgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVm
KG1fZnJhbWUpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSB7CisgICAgbG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKHdvcmtpbmdSZXNvdXJjZVJlcXVlc3Qs
IGFjdGlvbiwgbG9ja0hpc3RvcnksIGxvYWRUeXBlLCBmb3JtU3RhdGUsIGFsbG93TmF2aWdhdGlv
blRvSW52YWxpZFVSTCwgW3RoaXMsIGlzUmVkaXJlY3QsIHByb3RlY3RlZEZyYW1lID0gbWFrZVJl
ZihtX2ZyYW1lKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gewogICAgICAgICBpZiAoaXNSZWRpcmVjdCkgewogICAgICAgICAgICAgbV9xdWlja1JlZGly
ZWN0Q29taW5nID0gZmFsc2U7CiAgICAgICAgICAgICBpZiAobV9wcm92aXNpb25hbERvY3VtZW50
TG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCmluZGV4IGI2Njkw
ZWE5NjY1YTE1MTVjOTdhNjNhZGM5NDA3NzMyYjk4MTkxMjcuLjFiZTcwZTE0ZTczODhhZDgyNzZl
ODVjZmFhMjdlMDkzYjI5OTcyODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Q
b2xpY3lDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tl
ci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IE5v
a2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICogQ29weXJpZ2h0
IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuICho
dHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKgpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQg
UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIGJvb2wgZGlkUmVjCiAgICAgLy8gRG9uJ3QgYXNrIG1vcmUgdGhhbiBvbmNlIGZvciB0
aGUgc2FtZSByZXF1ZXN0IG9yIGlmIHdlIGFyZSBsb2FkaW5nIGFuIGVtcHR5IFVSTC4KICAgICAv
LyBUaGlzIGF2b2lkcyBjb25mdXNpb24gb24gdGhlIHBhcnQgb2YgdGhlIGNsaWVudC4KICAgICBp
ZiAoZXF1YWxJZ25vcmluZ0hlYWRlckZpZWxkcyhyZXF1ZXN0LCBsb2FkZXItPmxhc3RDaGVja2Vk
UmVxdWVzdCgpKSB8fCAoIXJlcXVlc3QuaXNOdWxsKCkgJiYgcmVxdWVzdC51cmwoKS5pc0VtcHR5
KCkpKSB7Ci0gICAgICAgIGZ1bmN0aW9uKFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwgbnVsbHB0
ciwgU2hvdWxkQ29udGludWU6Olllcyk7CisgICAgICAgIGZ1bmN0aW9uKFJlc291cmNlUmVxdWVz
dChyZXF1ZXN0KSwgeyB9LCBTaG91bGRDb250aW51ZTo6WWVzKTsKICAgICAgICAgbG9hZGVyLT5z
ZXRMYXN0Q2hlY2tlZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmln
YXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgYm9vbCBkaWRSZWMKICNlbmRp
ZgogICAgICAgICBpZiAoaXNCYWNrRm9yd2FyZExvYWRUeXBlKG1fbG9hZFR5cGUpKQogICAgICAg
ICAgICAgbV9sb2FkVHlwZSA9IEZyYW1lTG9hZFR5cGU6OlJlbG9hZDsKLSAgICAgICAgZnVuY3Rp
b24oV1RGTW92ZShyZXF1ZXN0KSwgbnVsbHB0ciwgc2hvdWxkQ29udGludWUgPyBTaG91bGRDb250
aW51ZTo6WWVzIDogU2hvdWxkQ29udGludWU6Ok5vKTsKKyAgICAgICAgZnVuY3Rpb24oV1RGTW92
ZShyZXF1ZXN0KSwgeyB9LCBzaG91bGRDb250aW51ZSA/IFNob3VsZENvbnRpbnVlOjpZZXMgOiBT
aG91bGRDb250aW51ZTo6Tm8pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzQsNyAr
MTM0LDcgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgYm9vbCBkaWRSZWMKICAgICAgICAgICAgIC8vIHJldmVhbCB0
aGF0IHRoZSBmcmFtZSB3YXMgYmxvY2tlZC4gVGhpcyB3YXksIGl0IGxvb2tzIGxpa2UgYW55IG90
aGVyIGNyb3NzLW9yaWdpbiBwYWdlIGxvYWQuCiAgICAgICAgICAgICBtX2ZyYW1lLm93bmVyRWxl
bWVudCgpLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVu
dCwgZmFsc2UsIGZhbHNlKSk7CiAgICAgICAgIH0KLSAgICAgICAgZnVuY3Rpb24oV1RGTW92ZShy
ZXF1ZXN0KSwgbnVsbHB0ciwgU2hvdWxkQ29udGludWU6Ok5vKTsKKyAgICAgICAgZnVuY3Rpb24o
V1RGTW92ZShyZXF1ZXN0KSwgeyB9LCBTaG91bGRDb250aW51ZTo6Tm8pOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVj
a05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgYm9vbCBkaWRSZWMK
ICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICAvLyBBbHdheXMgYWxsb3cgUXVpY2tMb29rLWdlbmVy
YXRlZCBVUkxzIGJhc2VkIG9uIHRoZSBwcm90b2NvbCBzY2hlbWUuCiAgICAgaWYgKCFyZXF1ZXN0
LmlzTnVsbCgpICYmIGlzUXVpY2tMb29rUHJldmlld1VSTChyZXF1ZXN0LnVybCgpKSkKLSAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uKFdURk1vdmUocmVxdWVzdCksIGZvcm1TdGF0ZSwgU2hvdWxkQ29u
dGludWU6Olllcyk7CisgICAgICAgIHJldHVybiBmdW5jdGlvbihXVEZNb3ZlKHJlcXVlc3QpLCBt
YWtlV2Vha1B0cihmb3JtU3RhdGUpLCBTaG91bGRDb250aW51ZTo6WWVzKTsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgUG9s
aWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIGJvb2wgZGlkUmVjCiAKICAgICBtX2RlbGVnYXRlSXNEZWNpZGluZ05hdmlnYXRpb25Qb2xp
Y3kgPSB0cnVlOwogICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSA9IGFjdGlvbi5kb3dubG9h
ZEF0dHJpYnV0ZSgpLmlzRW1wdHkoKSA/IG51bGxBdG9tKCkgOiBhY3Rpb24uZG93bmxvYWRBdHRy
aWJ1dGUoKTsKLSAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihhY3Rpb24sIHJlcXVlc3QsIGRpZFJlY2VpdmVSZWRpcmVj
dFJlc3BvbnNlLCBmb3JtU3RhdGUsIHBvbGljeURlY2lzaW9uTW9kZSwgW3RoaXMsIGZ1bmN0aW9u
ID0gV1RGTW92ZShmdW5jdGlvbiksIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCks
IGZvcm1TdGF0ZSA9IG1ha2VSZWZQdHIoZm9ybVN0YXRlKSwgc3VnZ2VzdGVkRmlsZW5hbWUgPSBX
VEZNb3ZlKHN1Z2dlc3RlZEZpbGVuYW1lKSwgYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uID0gV1RG
TW92ZShibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24pXShQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9u
KSBtdXRhYmxlIHsKKyAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihhY3Rpb24sIHJlcXVlc3QsIGRpZFJlY2VpdmVSZWRp
cmVjdFJlc3BvbnNlLCBmb3JtU3RhdGUsIHBvbGljeURlY2lzaW9uTW9kZSwgW3RoaXMsIGZ1bmN0
aW9uID0gV1RGTW92ZShmdW5jdGlvbiksIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QocmVxdWVz
dCksIGZvcm1TdGF0ZSA9IG1ha2VXZWFrUHRyKGZvcm1TdGF0ZSksIHN1Z2dlc3RlZEZpbGVuYW1l
ID0gV1RGTW92ZShzdWdnZXN0ZWRGaWxlbmFtZSksIGJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiA9
IFdURk1vdmUoYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uKV0oUG9saWN5QWN0aW9uIHBvbGljeUFj
dGlvbikgbXV0YWJsZSB7CiAgICAgICAgIG1fZGVsZWdhdGVJc0RlY2lkaW5nTmF2aWdhdGlvblBv
bGljeSA9IGZhbHNlOwogCiAgICAgICAgIHN3aXRjaCAocG9saWN5QWN0aW9uKSB7CkBAIC0xODUs
NyArMTg1LDcgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgYm9vbCBkaWRSZWMKICAgICAgICAgICAgICAgICBoYW5k
bGVVbmltcGxlbWVudGFibGVQb2xpY3kobV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5jYW5ub3RT
aG93VVJMRXJyb3IocmVxdWVzdCkpOwogICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih7
IH0sIG51bGxwdHIsIFNob3VsZENvbnRpbnVlOjpObyk7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICByZXR1cm4gZnVuY3Rpb24oV1RGTW92ZShyZXF1ZXN0KSwgZm9ybVN0YXRlLmdldCgpLCBT
aG91bGRDb250aW51ZTo6WWVzKTsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihXVEZNb3Zl
KHJlcXVlc3QpLCBXVEZNb3ZlKGZvcm1TdGF0ZSksIFNob3VsZENvbnRpbnVlOjpZZXMpOwogICAg
ICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0pOwpAQCAtMjAxLDcg
KzIwMSw3IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOZXdXaW5kb3dQb2xpY3koTmF2aWdh
dGlvbkFjdGlvbiYmIG5hdmlnYXRpb25BY3Rpb24sIFJlCiAKICAgICBhdXRvIGJsb2JVUkxMaWZl
dGltZUV4dGVuc2lvbiA9IGV4dGVuZEJsb2JVUkxMaWZldGltZUlmTmVjZXNzYXJ5KHJlcXVlc3Qp
OwogCi0gICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZv
ck5ld1dpbmRvd0FjdGlvbihuYXZpZ2F0aW9uQWN0aW9uLCByZXF1ZXN0LCBmb3JtU3RhdGUsIGZy
YW1lTmFtZSwgW2ZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKSwgcmVxdWVzdCwgZm9ybVN0YXRlID0g
bWFrZVJlZlB0cihmb3JtU3RhdGUpLCBmcmFtZU5hbWUsIG5hdmlnYXRpb25BY3Rpb24sIGZ1bmN0
aW9uID0gV1RGTW92ZShmdW5jdGlvbiksIGJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiA9IFdURk1v
dmUoYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uKV0oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikg
bXV0YWJsZSB7CisgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERlY2lkZVBv
bGljeUZvck5ld1dpbmRvd0FjdGlvbihuYXZpZ2F0aW9uQWN0aW9uLCByZXF1ZXN0LCBmb3JtU3Rh
dGUsIGZyYW1lTmFtZSwgW2ZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKSwgcmVxdWVzdCwgZm9ybVN0
YXRlID0gbWFrZVdlYWtQdHIoZm9ybVN0YXRlKSwgZnJhbWVOYW1lLCBuYXZpZ2F0aW9uQWN0aW9u
LCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pLCBibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24g
PSBXVEZNb3ZlKGJsb2JVUkxMaWZldGltZUV4dGVuc2lvbildKFBvbGljeUFjdGlvbiBwb2xpY3lB
Y3Rpb24pIG11dGFibGUgewogICAgICAgICBzd2l0Y2ggKHBvbGljeUFjdGlvbikgewogICAgICAg
ICBjYXNlIFBvbGljeUFjdGlvbjo6RG93bmxvYWQ6CiAgICAgICAgICAgICBmcmFtZS0+bG9hZGVy
KCkuY2xpZW50KCkuc3RhcnREb3dubG9hZChyZXF1ZXN0KTsKQEAgLTIxMyw3ICsyMTMsNyBAQCB2
b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmV3V2luZG93UG9saWN5KE5hdmlnYXRpb25BY3Rpb24m
JiBuYXZpZ2F0aW9uQWN0aW9uLCBSZQogICAgICAgICAgICAgLy8gSXQgaXMgaW52YWxpZCB0byBn
ZXQgYSAiU3VzcGVuZCIgcG9saWN5IGZvciBuZXcgd2luZG93cywgYXMgdGhlIG9sZCBkb2N1bWVu
dCBpcyBub3QgZ29pbmcgYXdheS4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpVc2U6Ci0gICAgICAgICAgICBmdW5j
dGlvbihyZXF1ZXN0LCBmb3JtU3RhdGUuZ2V0KCksIGZyYW1lTmFtZSwgbmF2aWdhdGlvbkFjdGlv
biwgU2hvdWxkQ29udGludWU6Olllcyk7CisgICAgICAgICAgICBmdW5jdGlvbihyZXF1ZXN0LCBX
VEZNb3ZlKGZvcm1TdGF0ZSksIGZyYW1lTmFtZSwgbmF2aWdhdGlvbkFjdGlvbiwgU2hvdWxkQ29u
dGludWU6Olllcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9s
aWN5Q2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuaAppbmRl
eCBjMzI5ZWM0M2I4MWUzNWU4YjczYWJlNmU2MDFkMTNkNDI1MDg1MmFmLi42ZjExMjExOTE0NmM0
OGI0ZWI0ZTliMDI2ODFkYzBlOWIyYWY1NmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUG9saWN5Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lD
aGVja2VyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4
LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3
LnRvcmNobW9iaWxlLmNvbS8pCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMSw2ICszMSw3IEBACiAK
ICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0
LmgiCisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKQEAgLTU5LDggKzYwLDggQEAg
ZW51bSBjbGFzcyBTaG91bGRDb250aW51ZSB7CiAKIGVudW0gY2xhc3MgUG9saWN5RGVjaXNpb25N
b2RlIHsgU3luY2hyb25vdXMsIEFzeW5jaHJvbm91cyB9OwogCi11c2luZyBOZXdXaW5kb3dQb2xp
Y3lEZWNpc2lvbkZ1bmN0aW9uID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2
aWdhdGlvbkFjdGlvbiYsIFNob3VsZENvbnRpbnVlKT47Ci11c2luZyBOYXZpZ2F0aW9uUG9saWN5
RGVjaXNpb25GdW5jdGlvbiA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0
JiYsIEZvcm1TdGF0ZSosIFNob3VsZENvbnRpbnVlKT47Cit1c2luZyBOZXdXaW5kb3dQb2xpY3lE
ZWNpc2lvbkZ1bmN0aW9uID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNv
bnN0IE5hdmlnYXRpb25BY3Rpb24mLCBTaG91bGRDb250aW51ZSk+OwordXNpbmcgTmF2aWdhdGlv
blBvbGljeURlY2lzaW9uRnVuY3Rpb24gPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNl
UmVxdWVzdCYmLCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiwgU2hvdWxkQ29udGludWUpPjsKIAogY2xh
c3MgUG9saWN5Q2hlY2tlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUG9saWN5Q2hlY2tl
cik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341023</attachid>
            <date>2018-05-22 14:16:12 -0700</date>
            <delta_ts>2018-05-22 21:54:43 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-185877-20180522141611.patch</filename>
            <type>text/plain</type>
            <size>23371</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxOTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmY4MjU0YjAxN2VhODc4
ZjkwNzE5M2U0N2ExODNiZDQ4NzhjMTljZS4uMjhlY2VlZDc4YTc0ZDI1YzJhMGU3YWEzOGEwYzQx
ZDQ5YzIxYWJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE4LTA1LTIyICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIEF2b2lkIGtlZXBpbmcg
Rm9ybVN0YXRlIGFsaXZlIGxvbmdlciB0aGFuIG5lY2Vzc2FyeQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1ODc3CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zOTMyOTIxOT4KKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAg
ICAgICAgQSBudW1iZXIgb2YgY3Jhc2ggZml4ZXMgd2VyZSBkb25lIHRvIHByZXZlbnQgRm9ybVN0
YXRlIG9iamVjdHMgZnJvbSBiZWluZworICAgICAgICBhY2Nlc3NlZCBhZnRlciB0aGVpciByZWxl
dmFudCBGcmFtZXMgaGFkIGJlZW4gZGVzdHJveWVkLiBVbmZvcnR1bmF0ZWx5LCB0aGlzCisgICAg
ICAgIGNvdWxkIGNhdXNlIHRoZSBGb3JtU3RhdGUgdG8gcGVyc2lzdCBhZnRlciB0aGUgb3duaW5n
IEZyYW1lIGhhZCBiZWVuCisgICAgICAgIGRlc3Ryb3llZCwgcmVzdWx0aW5nIGluIG51bGxwdHIg
ZGVyZWZlcmVuY2VzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyB0aGUgZm9sbG93aW5nOgor
CisgICAgICAgIDEuIENoYW5nZXMgdG8gdXNlIFdlYWtQdHIncyBmb3IgRm9ybVN0YXRlIG9iamVj
dHMgcGFzc2VkIHRvIGNvbXBsZXRpb24gaGFuZGxlcnMsCisgICAgICAgICAgIHJhdGhlciB0aGFu
IFJlZlB0ciwgc2luY2UgdGhvc2UgY29tcGxldGlvbiBoYW5kbGVycyBtaWdodCBmaXJlIGFzIHBh
cnQgb2YKKyAgICAgICAgICAgdGhlIGNsZWFuLXVwIHByb2Nlc3MgZHVyaW5nIEZyYW1lIGRlc3Ry
dWN0aW9uLiBUaGlzIGFsbG93cyB1cyB0byB1c2UgdGhlIEZvcm1TdGF0ZQorICAgICAgICAgICBp
ZiB0aGV5IGFyZSBzdGlsbCB2YWxpZCwgYnV0IGdyYWNlZnVsbHkgaGFuZGxlIGNhc2VzIHdoZXJl
IGEgZm9ybSBzdWJtaXNzaW9uCisgICAgICAgICAgIGlzIGNhbmNlbGxlZCBpbi1mbGlnaHQuCisg
ICAgICAgIDIuIFJlbW92ZXMgc29tZSBleHRyYW5lb3VzIFdURk1vdmUoKSBjYWxscyBiZWluZyBt
YWRlIG9uIGJhcmUgRm9ybVN0YXRlIHBvaW50ZXJzLgorICAgICAgICAzLiBDaGFuZ2VzIHRoZSB0
cmFwIGZyb20gQnVnIDE4MzcwNCBzbyB0aGF0IGl0IG9ubHkgZmlyZXMgaWYgdGhlIEZvcm1TdGF0
ZSBvYmplY3QKKyAgICAgICAgICAgaXMgYmVpbmcgcmV0YWluZWQgbW9yZSB0aGFuIG9uY2UuCisK
KyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6IFVwZGF0ZSBmb3IgbmV3IENvbXBsZXRp
b25IYW5kbGVyCisgICAgICAgIHNpZ25hdHVyZS4KKyAgICAgICAgKiBsb2FkZXIvRm9ybVN0YXRl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1TdGF0ZTo6d2lsbERldGFjaFBhZ2UpOiBSZXZp
c2UgdHJhcCB0byBjaGVjayBmb3IgcmV0YWluIGNvdW50cworICAgICAgICBhYm92ZSBvbmUuCisg
ICAgICAgICogbG9hZGVyL0Zvcm1TdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybVN0YXRl
Ojp3ZWFrUHRyRmFjdG9yeSBjb25zdCk6IEFkZGVkLgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZEZyYW1lUmVxdWVz
dCk6IFJldmlzZSB0byB1c2UgV2Vha1B0ciBmb3IgRm9ybVN0YXRlCisgICAgICAgIHBhc3NlZCB0
byB0aGUgY29tcGxldGlvbiBoYW5kbGVyLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmxvYWRVUkwpOiBVcGRhdGUgZm9yIG5ldyBDb21wbGV0aW9uSGFuZGxlciBzaWduYXR1cmUuCisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3QpOiBEaXR0by4KKyAgICAg
ICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lD
aGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3kpOiBSZXZpc2UgdG8gdXNlIFdlYWtQdHIgZm9y
CisgICAgICAgIEZvcm1TdGF0ZSBwYXNzZWQgdG8gdGhlIGNvbXBsZXRpb24gaGFuZGxlci4gUmVt
b3ZlIHNvbWUgZXh0cmFuZW91cyBXVEZNb3ZlKCkKKyAgICAgICAgY2FsbHMgb24gYmFyZSBwb2lu
dGVycy4KKyAgICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmV3V2luZG93UG9s
aWN5KTogRGl0dG8uCisgICAgICAgICogbG9hZGVyL1BvbGljeUNoZWNrZXIuaDoKKwogMjAxOC0w
NS0xOCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWIg
QW5pbWF0aW9uc10gVHVybiBXZWIgQW5pbWF0aW9ucyB3aXRoIENTUyBpbnRlZ3JhdGlvbiBvbiBm
b3IgdGVzdCBydW5uZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApp
bmRleCAyZWY2ZjQ5MjIwYjM4MDQwM2Y0MmU0MDhlOTZiMTNmMzM0ODBiMWVhLi45NjdhNDkzOTg2
ZDI4ODRlNTAzNzk3NTFkZTAyNGU1NTEzZWRlMThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CkBAIC02NDEsNyArNjQxLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmMKICAgICBpZiAo
IWRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlICYmIHNob3VsZENvbnRpbnVlICE9IFNob3VsZENv
bnRpbnVlOjpGb3JTdXNwZW5zaW9uKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShuZXdSZXF1ZXN0KSk7CiAKLSAgICBhdXRvIG5hdmlnYXRpb25Qb2xpY3lDb21wbGV0
aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBGb3JtU3RhdGUqLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkg
bXV0YWJsZSB7CisgICAgYXV0byBuYXZpZ2F0aW9uUG9saWN5Q29tcGxldGlvbkhhbmRsZXIgPSBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
V2Vha1B0cjxGb3JtU3RhdGU+JiYsIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSBtdXRh
YmxlIHsKICAgICAgICAgbV93YWl0aW5nRm9yTmF2aWdhdGlvblBvbGljeSA9IGZhbHNlOwogICAg
ICAgICBzd2l0Y2ggKHNob3VsZENvbnRpbnVlKSB7CiAgICAgICAgIGNhc2UgU2hvdWxkQ29udGlu
dWU6OkZvclN1c3BlbnNpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9y
bVN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3RhdGUuY3BwCmluZGV4IDlm
YThiZGQzZTFjYzM2YWIxMWNjZGU1ZjMwMTk2NTI4OTRiZmQwNWIuLmY4NzAwYjFhZDM4MzFhM2Q0
MzE2MzA4MWE4ZjBjMDYyYjZjYTA2ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Gb3JtU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3RhdGUuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNTIsNyArNTIsNyBAQCBSZWY8Rm9ybVN0YXRlPiBGb3JtU3RhdGU6OmNyZWF0ZShIVE1M
Rm9ybUVsZW1lbnQmIGZvcm0sIFN0cmluZ1BhaXJWZWN0b3ImJiB0ZXh0Rgogdm9pZCBGb3JtU3Rh
dGU6OndpbGxEZXRhY2hQYWdlKCkKIHsKICAgICAvLyBCZWFydHJhcCBmb3IgPHJkYXI6Ly9wcm9i
bGVtLzM3NTc5MzU0PgotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgUkVM
RUFTRV9BU1NFUlQoaGFzT25lUmVmKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRm9ybVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN0YXRl
LmgKaW5kZXggMjYzNGE5N2IxMjM2Yzk3NjIzNGU1MGRhN2Q1YzIwMzk3Y2RjYzJmYi4uNzc1ODQz
MjlhZjE2NDI0NjUwYzAwZGI4YTc5M2Q5ZDk1NWY1MDUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Zvcm1TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3Jt
U3RhdGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRnJh
bWVEZXN0cnVjdGlvbk9ic2VydmVyLmgiCisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDks
NiArNTAsOCBAQCBwdWJsaWM6CiAgICAgRG9jdW1lbnQmIHNvdXJjZURvY3VtZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9zb3VyY2VEb2N1bWVudDsgfQogICAgIEZvcm1TdWJtaXNzaW9uVHJpZ2dlciBm
b3JtU3VibWlzc2lvblRyaWdnZXIoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1TdWJtaXNzaW9uVHJp
Z2dlcjsgfQogCisgICAgYXV0byYgd2Vha1B0ckZhY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3dl
YWtGYWN0b3J5OyB9CisKIHByaXZhdGU6CiAgICAgRm9ybVN0YXRlKEhUTUxGb3JtRWxlbWVudCYs
IFN0cmluZ1BhaXJWZWN0b3ImJiB0ZXh0RmllbGRWYWx1ZXMsIERvY3VtZW50JiwgRm9ybVN1Ym1p
c3Npb25UcmlnZ2VyKTsKICAgICB2b2lkIHdpbGxEZXRhY2hQYWdlKCkgb3ZlcnJpZGU7CkBAIC01
Nyw2ICs2MCw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nUGFpclZlY3RvciBtX3RleHRGaWVsZFZh
bHVlczsKICAgICBSZWY8RG9jdW1lbnQ+IG1fc291cmNlRG9jdW1lbnQ7CiAgICAgRm9ybVN1Ym1p
c3Npb25UcmlnZ2VyIG1fZm9ybVN1Ym1pc3Npb25UcmlnZ2VyOworICAgIFdlYWtQdHJGYWN0b3J5
PEZvcm1TdGF0ZT4gbV93ZWFrRmFjdG9yeTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDE2YmY4MjM1NWZlMDY4MzZk
NDMzMGFiMWE4MDZlNTUzYjRhMGY1ODEuLjg3Nzk4ZWU4ZTVkYzA3YTAyM2NhYmY1NTRiNjRiMjFk
YWIwZTk3NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkg
VG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2ht
b2JpbGUuY29tLykKICAqIENvcHlyaWdodCAoQykgMjAwOCBBbHAgVG9rZXIgPGFscEBhdG9rZXIu
Y29tPgpAQCAtMTIyNiw3ICsxMjI2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEZyYW1lUmVx
dWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgRXZlbnQqIGV2ZW50LCBGb3IKICAgICBl
bHNlCiAgICAgICAgIGxvYWRUeXBlID0gRnJhbWVMb2FkVHlwZTo6U3RhbmRhcmQ7CiAKLSAgICBh
dXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZEZyYW1lID0gbWFrZVJlZiht
X2ZyYW1lKSwgZm9ybVN0YXRlID0gbWFrZVJlZlB0cihmb3JtU3RhdGUpLCBmcmFtZU5hbWUgPSBy
ZXF1ZXN0LmZyYW1lTmFtZSgpXSB7CisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlz
LCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9mcmFtZSksIGZvcm1TdGF0ZSA9IG1ha2VXZWFr
UHRyKGZvcm1TdGF0ZSksIGZyYW1lTmFtZSA9IHJlcXVlc3QuZnJhbWVOYW1lKCldIHsKICAgICAg
ICAgLy8gRklYTUU6IEl0J3MgcG9zc2libGUgdGhpcyB0YXJnZXRGcmFtZSB3aWxsIG5vdCBiZSB0
aGUgc2FtZSBmcmFtZSB0aGF0IHdhcyB0YXJnZXRlZCBieSB0aGUgYWN0dWFsCiAgICAgICAgIC8v
IGxvYWQgaWYgZnJhbWUgbmFtZXMgaGF2ZSBjaGFuZ2VkLgogICAgICAgICBGcmFtZSogc291cmNl
RnJhbWUgPSBmb3JtU3RhdGUgPyBmb3JtU3RhdGUtPnNvdXJjZURvY3VtZW50KCkuZnJhbWUoKSA6
ICZtX2ZyYW1lOwpAQCAtMTMzNiw4ICsxMzM2LDggQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVS
TChGcmFtZUxvYWRSZXF1ZXN0JiYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWYK
IAogICAgIGlmICghdGFyZ2V0RnJhbWUgJiYgIWZyYW1lTmFtZS5pc0VtcHR5KCkpIHsKICAgICAg
ICAgYWN0aW9uID0gYWN0aW9uLmNvcHlXaXRoU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShz
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9BcHBseShtX2ZyYW1lLCBmcmFtZUxvYWRSZXF1
ZXN0KSk7Ci0gICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05ld1dpbmRvd1BvbGljeShXVEZN
b3ZlKGFjdGlvbiksIFdURk1vdmUocmVxdWVzdCksIGZvcm1TdGF0ZSwgZnJhbWVOYW1lLCBbdGhp
cywgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBvcGVuZXJQb2xpY3ksIGNvbXBsZXRpb25I
YW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpXSAoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBm
cmFtZU5hbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgU2hvdWxkQ29udGludWUg
c2hvdWxkQ29udGludWUpIHsKLSAgICAgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93
UG9saWN5KHJlcXVlc3QsIGZvcm1TdGF0ZSwgZnJhbWVOYW1lLCBhY3Rpb24sIHNob3VsZENvbnRp
bnVlLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBvbGljeSk7CisgICAgICAg
IHBvbGljeUNoZWNrZXIoKS5jaGVja05ld1dpbmRvd1BvbGljeShXVEZNb3ZlKGFjdGlvbiksIFdU
Rk1vdmUocmVxdWVzdCksIGZvcm1TdGF0ZSwgZnJhbWVOYW1lLCBbdGhpcywgYWxsb3dOYXZpZ2F0
aW9uVG9JbnZhbGlkVVJMLCBvcGVuZXJQb2xpY3ksIGNvbXBsZXRpb25IYW5kbGVyID0gY29tcGxl
dGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVO
YW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFNob3VsZENvbnRpbnVlIHNob3Vs
ZENvbnRpbnVlKSB7CisgICAgICAgICAgICBjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGlj
eShyZXF1ZXN0LCBmb3JtU3RhdGUuZ2V0KCksIGZyYW1lTmFtZSwgYWN0aW9uLCBzaG91bGRDb250
aW51ZSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBvcGVuZXJQb2xpY3kpOwogICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTEzNTYsNyArMTM1Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoRnJhbWVMb2Fk
UmVxdWVzdCYmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmCiAgICAgICAgIG9s
ZERvY3VtZW50TG9hZGVyLT5zZXRMYXN0Q2hlY2tlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KCkp
OwogICAgICAgICBwb2xpY3lDaGVja2VyKCkuc3RvcENoZWNrKCk7CiAgICAgICAgIHBvbGljeUNo
ZWNrZXIoKS5zZXRMb2FkVHlwZShuZXdMb2FkVHlwZSk7Ci0gICAgICAgIHBvbGljeUNoZWNrZXIo
KS5jaGVja05hdmlnYXRpb25Qb2xpY3koV1RGTW92ZShyZXF1ZXN0KSwgZmFsc2UgLyogZGlkUmVj
ZWl2ZVJlZGlyZWN0UmVzcG9uc2UgKi8sIG9sZERvY3VtZW50TG9hZGVyLmdldCgpLCBmb3JtU3Rh
dGUsIFt0aGlzLCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9mcmFtZSldIChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZvcm1TdGF0ZSosIFNob3VsZENvbnRpbnVlIHNob3VsZENv
bnRpbnVlKSB7CisgICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3ko
V1RGTW92ZShyZXF1ZXN0KSwgZmFsc2UgLyogZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgKi8s
IG9sZERvY3VtZW50TG9hZGVyLmdldCgpLCBmb3JtU3RhdGUsIFt0aGlzLCBwcm90ZWN0ZWRGcmFt
ZSA9IG1ha2VSZWYobV9mcmFtZSldIChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdl
YWtQdHI8Rm9ybVN0YXRlPiYmLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgewogICAg
ICAgICAgICAgY29udGludWVGcmFnbWVudFNjcm9sbEFmdGVyTmF2aWdhdGlvblBvbGljeShyZXF1
ZXN0LCBzaG91bGRDb250aW51ZSA9PSBTaG91bGRDb250aW51ZTo6WWVzKTsKICAgICAgICAgfSwg
UG9saWN5RGVjaXNpb25Nb2RlOjpTeW5jaHJvbm91cyk7CiAgICAgICAgIHJldHVybjsKQEAgLTE0
MTIsOCArMTQxMiw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWQoRnJhbWVMb2FkUmVxdWVzdCYm
IHJlcXVlc3QpCiAKICAgICBpZiAocmVxdWVzdC5zaG91bGRDaGVja05ld1dpbmRvd1BvbGljeSgp
KSB7CiAgICAgICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uIHsgcmVxdWVzdC5yZXF1ZXN0ZXIo
KSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVua25v
d24sIE5hdmlnYXRpb25UeXBlOjpPdGhlciwgcmVxdWVzdC5zaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5KCkgfTsKLSAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmV3V2luZG93UG9saWN5
KFdURk1vdmUoYWN0aW9uKSwgV1RGTW92ZShyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKSwgbnVs
bHB0ciwgcmVxdWVzdC5mcmFtZU5hbWUoKSwgW3RoaXNdIChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwg
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250
aW51ZSkgewotICAgICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kocmVx
dWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIGFjdGlvbiwgc2hvdWxkQ29udGludWUsIEFsbG93
TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6U3VwcHJl
c3MpOworICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOZXdXaW5kb3dQb2xpY3koV1RGTW92
ZShhY3Rpb24pLCBXVEZNb3ZlKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpLCBudWxscHRyLCBy
ZXF1ZXN0LmZyYW1lTmFtZSgpLCBbdGhpc10gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgV2Vha1B0cjxGb3JtU3RhdGU+JiYgZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFt
ZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBTaG91bGRDb250aW51ZSBzaG91bGRD
b250aW51ZSkgeworICAgICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3ko
cmVxdWVzdCwgZm9ybVN0YXRlLmdldCgpLCBmcmFtZU5hbWUsIGFjdGlvbiwgc2hvdWxkQ29udGlu
dWUsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGlj
eTo6U3VwcHJlc3MpOwogICAgICAgICB9KTsKIAogICAgICAgICByZXR1cm47CkBAIC0xNTI2LDcg
KzE1MjYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVyKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIsIEZyYW1lTG9hZFR5cGUgdAogICAgICAgICBvbGREb2N1bWVudExv
YWRlci0+c2V0VHJpZ2dlcmluZ0FjdGlvbihhY3Rpb24pOwogICAgICAgICBvbGREb2N1bWVudExv
YWRlci0+c2V0TGFzdENoZWNrZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCgpKTsKICAgICAgICAg
cG9saWN5Q2hlY2tlcigpLnN0b3BDaGVjaygpOwotICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hl
Y2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdChsb2FkZXItPnJlcXVlc3QoKSksIGZh
bHNlIC8qIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlICovLCBvbGREb2N1bWVudExvYWRlci5n
ZXQoKSwgZm9ybVN0YXRlLCBbdGhpcywgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUp
XSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqLCBTaG91bGRDb250
aW51ZSBzaG91bGRDb250aW51ZSkgeworICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOYXZp
Z2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdChsb2FkZXItPnJlcXVlc3QoKSksIGZhbHNlIC8q
IGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlICovLCBvbGREb2N1bWVudExvYWRlci5nZXQoKSwg
Zm9ybVN0YXRlLCBbdGhpcywgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpXSAoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiwgU2hvdWxk
Q29udGludWUgc2hvdWxkQ29udGludWUpIHsKICAgICAgICAgICAgIGNvbnRpbnVlRnJhZ21lbnRT
Y3JvbGxBZnRlck5hdmlnYXRpb25Qb2xpY3kocmVxdWVzdCwgc2hvdWxkQ29udGludWUgPT0gU2hv
dWxkQ29udGludWU6Olllcyk7CiAgICAgICAgIH0sIFBvbGljeURlY2lzaW9uTW9kZTo6U3luY2hy
b25vdXMpOwogICAgICAgICByZXR1cm47CkBAIC0xNTYwLDggKzE1NjAsOCBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIEZy
YW1lTG9hZFR5cGUgdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcG9saWN5Q2hlY2tl
cigpLmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QobG9hZGVyLT5yZXF1ZXN0
KCkpLCBmYWxzZSAvKiBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSAqLywgbG9hZGVyLCBmb3Jt
U3RhdGUsIFt0aGlzLCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9mcmFtZSksIGFsbG93TmF2
aWdhdGlvblRvSW52YWxpZFVSTCwgY29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxl
ckNhbGxlci5yZWxlYXNlKCldIChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZvcm1T
dGF0ZSogZm9ybVN0YXRlLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgewotICAgICAg
ICBjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kocmVxdWVzdCwgZm9ybVN0YXRlLCBz
aG91bGRDb250aW51ZSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKKyAgICBwb2xpY3lD
aGVja2VyKCkuY2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdChsb2FkZXItPnJl
cXVlc3QoKSksIGZhbHNlIC8qIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlICovLCBsb2FkZXIs
IGZvcm1TdGF0ZSwgW3RoaXMsIHByb3RlY3RlZEZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKSwgYWxs
b3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBjb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRpb25I
YW5kbGVyQ2FsbGVyLnJlbGVhc2UoKV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
V2Vha1B0cjxGb3JtU3RhdGU+JiYgZm9ybVN0YXRlLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250
aW51ZSkgeworICAgICAgICBjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kocmVxdWVz
dCwgZm9ybVN0YXRlLmdldCgpLCBzaG91bGRDb250aW51ZSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZh
bGlkVVJMKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKIH0KQEAgLTI4
NTQsMTMgKzI4NTQsMTMgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1l
TG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmUKIAogICAgIGlmICghZnJh
bWVOYW1lLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBUaGUgc2VhcmNoIGZvciBhIHRhcmdldCBm
cmFtZSBpcyBkb25lIGVhcmxpZXIgaW4gdGhlIGNhc2Ugb2YgZm9ybSBzdWJtaXNzaW9uLgotICAg
ICAgICBpZiAoRnJhbWUqIHRhcmdldEZyYW1lID0gZm9ybVN0YXRlID8gMCA6IGZpbmRGcmFtZUZv
ck5hdmlnYXRpb24oZnJhbWVOYW1lKSkgewotICAgICAgICAgICAgdGFyZ2V0RnJhbWUtPmxvYWRl
cigpLmxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbih3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LCBhY3Rp
b24sIGxvY2tIaXN0b3J5LCBsb2FkVHlwZSwgV1RGTW92ZShmb3JtU3RhdGUpLCBhbGxvd05hdmln
YXRpb25Ub0ludmFsaWRVUkwsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAg
aWYgKGF1dG8qIHRhcmdldEZyYW1lID0gZm9ybVN0YXRlID8gbnVsbHB0ciA6IGZpbmRGcmFtZUZv
ck5hdmlnYXRpb24oZnJhbWVOYW1lKSkgeworICAgICAgICAgICAgdGFyZ2V0RnJhbWUtPmxvYWRl
cigpLmxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbih3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LCBhY3Rp
b24sIGxvY2tIaXN0b3J5LCBsb2FkVHlwZSwgZm9ybVN0YXRlLCBhbGxvd05hdmlnYXRpb25Ub0lu
dmFsaWRVUkwsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05ld1dpbmRvd1Bv
bGljeShXVEZNb3ZlKGFjdGlvbiksIFdURk1vdmUod29ya2luZ1Jlc291cmNlUmVxdWVzdCksIFdU
Rk1vdmUoZm9ybVN0YXRlKSwgZnJhbWVOYW1lLCBbdGhpcywgYWxsb3dOYXZpZ2F0aW9uVG9JbnZh
bGlkVVJMLCBvcGVuZXJQb2xpY3ksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildIChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZvcm1TdGF0ZSog
Zm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlv
biYgYWN0aW9uLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgewotICAgICAgICAgICAg
Y29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kocmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFt
ZU5hbWUsIGFjdGlvbiwgc2hvdWxkQ29udGludWUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVS
TCwgb3BlbmVyUG9saWN5KTsKKyAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmV3V2luZG93
UG9saWN5KFdURk1vdmUoYWN0aW9uKSwgV1RGTW92ZSh3b3JraW5nUmVzb3VyY2VSZXF1ZXN0KSwg
Zm9ybVN0YXRlLCBmcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkws
IG9wZW5lclBvbGljeSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2Vha1B0cjxGb3JtU3RhdGU+
JiYgZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFj
dGlvbiYgYWN0aW9uLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgeworICAgICAgICAg
ICAgY29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kocmVxdWVzdCwgZm9ybVN0YXRlLmdl
dCgpLCBmcmFtZU5hbWUsIGFjdGlvbiwgc2hvdWxkQ29udGludWUsIGFsbG93TmF2aWdhdGlvblRv
SW52YWxpZFVSTCwgb3BlbmVyUG9saWN5KTsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CkBAIC0yODY4LDcgKzI4NjgsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVl
c3QsIGNvbnN0IFN0cmluZyYgcmVmZQogCiAgICAgLy8gbXVzdCBncmFiIHRoaXMgbm93LCBzaW5j
ZSB0aGlzIGxvYWQgbWF5IHN0b3AgdGhlIHByZXZpb3VzIGxvYWQgYW5kIGNsZWFyIHRoaXMgZmxh
ZwogICAgIGJvb2wgaXNSZWRpcmVjdCA9IG1fcXVpY2tSZWRpcmVjdENvbWluZzsKLSAgICBsb2Fk
V2l0aE5hdmlnYXRpb25BY3Rpb24od29ya2luZ1Jlc291cmNlUmVxdWVzdCwgYWN0aW9uLCBsb2Nr
SGlzdG9yeSwgbG9hZFR5cGUsIFdURk1vdmUoZm9ybVN0YXRlKSwgYWxsb3dOYXZpZ2F0aW9uVG9J
bnZhbGlkVVJMLCBbdGhpcywgaXNSZWRpcmVjdCwgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1f
ZnJhbWUpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7
CisgICAgbG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKHdvcmtpbmdSZXNvdXJjZVJlcXVlc3QsIGFj
dGlvbiwgbG9ja0hpc3RvcnksIGxvYWRUeXBlLCBmb3JtU3RhdGUsIGFsbG93TmF2aWdhdGlvblRv
SW52YWxpZFVSTCwgW3RoaXMsIGlzUmVkaXJlY3QsIHByb3RlY3RlZEZyYW1lID0gbWFrZVJlZiht
X2ZyYW1lKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
ewogICAgICAgICBpZiAoaXNSZWRpcmVjdCkgewogICAgICAgICAgICAgbV9xdWlja1JlZGlyZWN0
Q29taW5nID0gZmFsc2U7CiAgICAgICAgICAgICBpZiAobV9wcm92aXNpb25hbERvY3VtZW50TG9h
ZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCmluZGV4IGI2NjkwZWE5
NjY1YTE1MTVjOTdhNjNhZGM5NDA3NzMyYjk4MTkxMjcuLjFiZTcwZTE0ZTczODhhZDgyNzZlODVj
ZmFhMjdlMDkzYjI5OTcyODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xp
Y3lDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICogQ29weXJpZ2h0IChD
KSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRw
Oi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKgpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgUG9s
aWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIGJvb2wgZGlkUmVjCiAgICAgLy8gRG9uJ3QgYXNrIG1vcmUgdGhhbiBvbmNlIGZvciB0aGUg
c2FtZSByZXF1ZXN0IG9yIGlmIHdlIGFyZSBsb2FkaW5nIGFuIGVtcHR5IFVSTC4KICAgICAvLyBU
aGlzIGF2b2lkcyBjb25mdXNpb24gb24gdGhlIHBhcnQgb2YgdGhlIGNsaWVudC4KICAgICBpZiAo
ZXF1YWxJZ25vcmluZ0hlYWRlckZpZWxkcyhyZXF1ZXN0LCBsb2FkZXItPmxhc3RDaGVja2VkUmVx
dWVzdCgpKSB8fCAoIXJlcXVlc3QuaXNOdWxsKCkgJiYgcmVxdWVzdC51cmwoKS5pc0VtcHR5KCkp
KSB7Ci0gICAgICAgIGZ1bmN0aW9uKFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwgbnVsbHB0ciwg
U2hvdWxkQ29udGludWU6Olllcyk7CisgICAgICAgIGZ1bmN0aW9uKFJlc291cmNlUmVxdWVzdChy
ZXF1ZXN0KSwgeyB9LCBTaG91bGRDb250aW51ZTo6WWVzKTsKICAgICAgICAgbG9hZGVyLT5zZXRM
YXN0Q2hlY2tlZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRp
b25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgYm9vbCBkaWRSZWMKICNlbmRpZgog
ICAgICAgICBpZiAoaXNCYWNrRm9yd2FyZExvYWRUeXBlKG1fbG9hZFR5cGUpKQogICAgICAgICAg
ICAgbV9sb2FkVHlwZSA9IEZyYW1lTG9hZFR5cGU6OlJlbG9hZDsKLSAgICAgICAgZnVuY3Rpb24o
V1RGTW92ZShyZXF1ZXN0KSwgbnVsbHB0ciwgc2hvdWxkQ29udGludWUgPyBTaG91bGRDb250aW51
ZTo6WWVzIDogU2hvdWxkQ29udGludWU6Ok5vKTsKKyAgICAgICAgZnVuY3Rpb24oV1RGTW92ZShy
ZXF1ZXN0KSwgeyB9LCBzaG91bGRDb250aW51ZSA/IFNob3VsZENvbnRpbnVlOjpZZXMgOiBTaG91
bGRDb250aW51ZTo6Tm8pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzQsNyArMTM0
LDcgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgYm9vbCBkaWRSZWMKICAgICAgICAgICAgIC8vIHJldmVhbCB0aGF0
IHRoZSBmcmFtZSB3YXMgYmxvY2tlZC4gVGhpcyB3YXksIGl0IGxvb2tzIGxpa2UgYW55IG90aGVy
IGNyb3NzLW9yaWdpbiBwYWdlIGxvYWQuCiAgICAgICAgICAgICBtX2ZyYW1lLm93bmVyRWxlbWVu
dCgpLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVudCwg
ZmFsc2UsIGZhbHNlKSk7CiAgICAgICAgIH0KLSAgICAgICAgZnVuY3Rpb24oV1RGTW92ZShyZXF1
ZXN0KSwgbnVsbHB0ciwgU2hvdWxkQ29udGludWU6Ok5vKTsKKyAgICAgICAgZnVuY3Rpb24oV1RG
TW92ZShyZXF1ZXN0KSwgeyB9LCBTaG91bGRDb250aW51ZTo6Tm8pOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05h
dmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgYm9vbCBkaWRSZWMKICNp
ZiBVU0UoUVVJQ0tfTE9PSykKICAgICAvLyBBbHdheXMgYWxsb3cgUXVpY2tMb29rLWdlbmVyYXRl
ZCBVUkxzIGJhc2VkIG9uIHRoZSBwcm90b2NvbCBzY2hlbWUuCiAgICAgaWYgKCFyZXF1ZXN0Lmlz
TnVsbCgpICYmIGlzUXVpY2tMb29rUHJldmlld1VSTChyZXF1ZXN0LnVybCgpKSkKLSAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uKFdURk1vdmUocmVxdWVzdCksIGZvcm1TdGF0ZSwgU2hvdWxkQ29udGlu
dWU6Olllcyk7CisgICAgICAgIHJldHVybiBmdW5jdGlvbihXVEZNb3ZlKHJlcXVlc3QpLCBtYWtl
V2Vha1B0cihmb3JtU3RhdGUpLCBTaG91bGRDb250aW51ZTo6WWVzKTsKICNlbmRpZgogCiAjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgUG9saWN5
Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IGJvb2wgZGlkUmVjCiAKICAgICBtX2RlbGVnYXRlSXNEZWNpZGluZ05hdmlnYXRpb25Qb2xpY3kg
PSB0cnVlOwogICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSA9IGFjdGlvbi5kb3dubG9hZEF0
dHJpYnV0ZSgpLmlzRW1wdHkoKSA/IG51bGxBdG9tKCkgOiBhY3Rpb24uZG93bmxvYWRBdHRyaWJ1
dGUoKTsKLSAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbihhY3Rpb24sIHJlcXVlc3QsIGRpZFJlY2VpdmVSZWRpcmVjdFJl
c3BvbnNlLCBmb3JtU3RhdGUsIHBvbGljeURlY2lzaW9uTW9kZSwgW3RoaXMsIGZ1bmN0aW9uID0g
V1RGTW92ZShmdW5jdGlvbiksIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIGZv
cm1TdGF0ZSA9IG1ha2VSZWZQdHIoZm9ybVN0YXRlKSwgc3VnZ2VzdGVkRmlsZW5hbWUgPSBXVEZN
b3ZlKHN1Z2dlc3RlZEZpbGVuYW1lKSwgYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uID0gV1RGTW92
ZShibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24pXShQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSBt
dXRhYmxlIHsKKyAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihhY3Rpb24sIHJlcXVlc3QsIGRpZFJlY2VpdmVSZWRpcmVj
dFJlc3BvbnNlLCBmb3JtU3RhdGUsIHBvbGljeURlY2lzaW9uTW9kZSwgW3RoaXMsIGZ1bmN0aW9u
ID0gV1RGTW92ZShmdW5jdGlvbiksIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCks
IGZvcm1TdGF0ZSA9IG1ha2VXZWFrUHRyKGZvcm1TdGF0ZSksIHN1Z2dlc3RlZEZpbGVuYW1lID0g
V1RGTW92ZShzdWdnZXN0ZWRGaWxlbmFtZSksIGJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiA9IFdU
Rk1vdmUoYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uKV0oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlv
bikgbXV0YWJsZSB7CiAgICAgICAgIG1fZGVsZWdhdGVJc0RlY2lkaW5nTmF2aWdhdGlvblBvbGlj
eSA9IGZhbHNlOwogCiAgICAgICAgIHN3aXRjaCAocG9saWN5QWN0aW9uKSB7CkBAIC0xODUsNyAr
MTg1LDcgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgYm9vbCBkaWRSZWMKICAgICAgICAgICAgICAgICBoYW5kbGVV
bmltcGxlbWVudGFibGVQb2xpY3kobV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5jYW5ub3RTaG93
VVJMRXJyb3IocmVxdWVzdCkpOwogICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih7IH0s
IG51bGxwdHIsIFNob3VsZENvbnRpbnVlOjpObyk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICByZXR1cm4gZnVuY3Rpb24oV1RGTW92ZShyZXF1ZXN0KSwgZm9ybVN0YXRlLmdldCgpLCBTaG91
bGRDb250aW51ZTo6WWVzKTsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihXVEZNb3ZlKHJl
cXVlc3QpLCBXVEZNb3ZlKGZvcm1TdGF0ZSksIFNob3VsZENvbnRpbnVlOjpZZXMpOwogICAgICAg
ICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0pOwpAQCAtMjAxLDcgKzIw
MSw3IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOZXdXaW5kb3dQb2xpY3koTmF2aWdhdGlv
bkFjdGlvbiYmIG5hdmlnYXRpb25BY3Rpb24sIFJlCiAKICAgICBhdXRvIGJsb2JVUkxMaWZldGlt
ZUV4dGVuc2lvbiA9IGV4dGVuZEJsb2JVUkxMaWZldGltZUlmTmVjZXNzYXJ5KHJlcXVlc3QpOwog
Ci0gICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbihuYXZpZ2F0aW9uQWN0aW9uLCByZXF1ZXN0LCBmb3JtU3RhdGUsIGZyYW1l
TmFtZSwgW2ZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKSwgcmVxdWVzdCwgZm9ybVN0YXRlID0gbWFr
ZVJlZlB0cihmb3JtU3RhdGUpLCBmcmFtZU5hbWUsIG5hdmlnYXRpb25BY3Rpb24sIGZ1bmN0aW9u
ID0gV1RGTW92ZShmdW5jdGlvbiksIGJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiA9IFdURk1vdmUo
YmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uKV0oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgbXV0
YWJsZSB7CisgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5ld1dpbmRvd0FjdGlvbihuYXZpZ2F0aW9uQWN0aW9uLCByZXF1ZXN0LCBmb3JtU3RhdGUs
IGZyYW1lTmFtZSwgW2ZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKSwgcmVxdWVzdCwgZm9ybVN0YXRl
ID0gbWFrZVdlYWtQdHIoZm9ybVN0YXRlKSwgZnJhbWVOYW1lLCBuYXZpZ2F0aW9uQWN0aW9uLCBm
dW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pLCBibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gPSBX
VEZNb3ZlKGJsb2JVUkxMaWZldGltZUV4dGVuc2lvbildKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rp
b24pIG11dGFibGUgewogICAgICAgICBzd2l0Y2ggKHBvbGljeUFjdGlvbikgewogICAgICAgICBj
YXNlIFBvbGljeUFjdGlvbjo6RG93bmxvYWQ6CiAgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCku
Y2xpZW50KCkuc3RhcnREb3dubG9hZChyZXF1ZXN0KTsKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lk
IFBvbGljeUNoZWNrZXI6OmNoZWNrTmV3V2luZG93UG9saWN5KE5hdmlnYXRpb25BY3Rpb24mJiBu
YXZpZ2F0aW9uQWN0aW9uLCBSZQogICAgICAgICAgICAgLy8gSXQgaXMgaW52YWxpZCB0byBnZXQg
YSAiU3VzcGVuZCIgcG9saWN5IGZvciBuZXcgd2luZG93cywgYXMgdGhlIG9sZCBkb2N1bWVudCBp
cyBub3QgZ29pbmcgYXdheS4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpVc2U6Ci0gICAgICAgICAgICBmdW5jdGlv
bihyZXF1ZXN0LCBmb3JtU3RhdGUuZ2V0KCksIGZyYW1lTmFtZSwgbmF2aWdhdGlvbkFjdGlvbiwg
U2hvdWxkQ29udGludWU6Olllcyk7CisgICAgICAgICAgICBmdW5jdGlvbihyZXF1ZXN0LCBXVEZN
b3ZlKGZvcm1TdGF0ZSksIGZyYW1lTmFtZSwgbmF2aWdhdGlvbkFjdGlvbiwgU2hvdWxkQ29udGlu
dWU6Olllcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5
Q2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuaAppbmRleCBj
MzI5ZWM0M2I4MWUzNWU4YjczYWJlNmU2MDFkMTNkNDI1MDg1MmFmLi42ZjExMjExOTE0NmM0OGI0
ZWI0ZTliMDI2ODFkYzBlOWIyYWY1NmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUG9saWN5Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVj
a2VyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAy
MDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRv
cmNobW9iaWxlLmNvbS8pCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMSw2ICszMSw3IEBACiAKICNp
bmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0Lmgi
CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKQEAgLTU5LDggKzYwLDggQEAgZW51
bSBjbGFzcyBTaG91bGRDb250aW51ZSB7CiAKIGVudW0gY2xhc3MgUG9saWN5RGVjaXNpb25Nb2Rl
IHsgU3luY2hyb25vdXMsIEFzeW5jaHJvbm91cyB9OwogCi11c2luZyBOZXdXaW5kb3dQb2xpY3lE
ZWNpc2lvbkZ1bmN0aW9uID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdh
dGlvbkFjdGlvbiYsIFNob3VsZENvbnRpbnVlKT47Ci11c2luZyBOYXZpZ2F0aW9uUG9saWN5RGVj
aXNpb25GdW5jdGlvbiA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYs
IEZvcm1TdGF0ZSosIFNob3VsZENvbnRpbnVlKT47Cit1c2luZyBOZXdXaW5kb3dQb2xpY3lEZWNp
c2lvbkZ1bmN0aW9uID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0
IE5hdmlnYXRpb25BY3Rpb24mLCBTaG91bGRDb250aW51ZSk+OwordXNpbmcgTmF2aWdhdGlvblBv
bGljeURlY2lzaW9uRnVuY3Rpb24gPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVx
dWVzdCYmLCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiwgU2hvdWxkQ29udGludWUpPjsKIAogY2xhc3Mg
UG9saWN5Q2hlY2tlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUG9saWN5Q2hlY2tlcik7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341070</attachid>
            <date>2018-05-22 21:54:44 -0700</date>
            <delta_ts>2018-05-23 20:36:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185877-20180522215444.patch</filename>
            <type>text/plain</type>
            <size>21833</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzk1YzZjNTBlYWZlMTRl
ZWRjMDlhZTE2MWQxMmY0NzQyZDljODU0ZS4uNTczZGRiMWY4Yzk3NzBmODA4ZjA1MDA4Mzk2NTEy
MmIyNTUzNzQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE4LTA1LTIyICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIEF2b2lkIGtlZXBpbmcg
Rm9ybVN0YXRlIGFsaXZlIGxvbmdlciB0aGFuIG5lY2Vzc2FyeQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1ODc3CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zOTMyOTIxOT4KKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAg
ICAgICAgQSBudW1iZXIgb2YgY3Jhc2ggZml4ZXMgd2VyZSBkb25lIHRvIHByZXZlbnQgRm9ybVN0
YXRlIG9iamVjdHMgZnJvbSBiZWluZworICAgICAgICBhY2Nlc3NlZCBhZnRlciB0aGVpciByZWxl
dmFudCBGcmFtZXMgaGFkIGJlZW4gZGVzdHJveWVkLiBVbmZvcnR1bmF0ZWx5LCB0aGlzCisgICAg
ICAgIGNvdWxkIGNhdXNlIHRoZSBGb3JtU3RhdGUgdG8gcGVyc2lzdCBhZnRlciB0aGUgb3duaW5n
IEZyYW1lIGhhZCBiZWVuCisgICAgICAgIGRlc3Ryb3llZCwgcmVzdWx0aW5nIGluIG51bGxwdHIg
ZGVyZWZlcmVuY2VzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyB0aGUgZm9sbG93aW5nOgor
CisgICAgICAgIDEuIENoYW5nZXMgdG8gdXNlIFdlYWtQdHIncyBmb3IgRm9ybVN0YXRlIG9iamVj
dHMgcGFzc2VkIHRvIGNvbXBsZXRpb24gaGFuZGxlcnMsCisgICAgICAgICAgIHJhdGhlciB0aGFu
IFJlZlB0ciwgc2luY2UgdGhvc2UgY29tcGxldGlvbiBoYW5kbGVycyBtaWdodCBmaXJlIGFzIHBh
cnQgb2YKKyAgICAgICAgICAgdGhlIGNsZWFuLXVwIHByb2Nlc3MgZHVyaW5nIEZyYW1lIGRlc3Ry
dWN0aW9uLiBUaGlzIGFsbG93cyB1cyB0byB1c2UgdGhlIEZvcm1TdGF0ZQorICAgICAgICAgICBp
ZiB0aGV5IGFyZSBzdGlsbCB2YWxpZCwgYnV0IGdyYWNlZnVsbHkgaGFuZGxlIGNhc2VzIHdoZXJl
IGEgZm9ybSBzdWJtaXNzaW9uCisgICAgICAgICAgIGlzIGNhbmNlbGxlZCBpbi1mbGlnaHQuCisg
ICAgICAgIDIuIFJlbW92ZXMgc29tZSBleHRyYW5lb3VzIFdURk1vdmUoKSBjYWxscyBiZWluZyBt
YWRlIG9uIGJhcmUgRm9ybVN0YXRlIHBvaW50ZXJzLgorICAgICAgICAzLiBDaGFuZ2VzIHRoZSB0
cmFwIGZyb20gQnVnIDE4MzcwNCBzbyB0aGF0IGl0IG9ubHkgZmlyZXMgaWYgdGhlIEZvcm1TdGF0
ZSBvYmplY3QKKyAgICAgICAgICAgaXMgYmVpbmcgcmV0YWluZWQgbW9yZSB0aGFuIG9uY2UuCisK
KyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6IFVwZGF0ZSBmb3IgbmV3IENvbXBsZXRp
b25IYW5kbGVyCisgICAgICAgIHNpZ25hdHVyZS4KKyAgICAgICAgKiBsb2FkZXIvRm9ybVN0YXRl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1TdGF0ZTo6d2lsbERldGFjaFBhZ2UpOiBSZXZp
c2UgdHJhcCB0byBjaGVjayBmb3IgcmV0YWluIGNvdW50cworICAgICAgICBhYm92ZSBvbmUuCisg
ICAgICAgICogbG9hZGVyL0Zvcm1TdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybVN0YXRl
Ojp3ZWFrUHRyRmFjdG9yeSBjb25zdCk6IEFkZGVkLgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZEZyYW1lUmVxdWVz
dCk6IFJldmlzZSB0byB1c2UgV2Vha1B0ciBmb3IgRm9ybVN0YXRlCisgICAgICAgIHBhc3NlZCB0
byB0aGUgY29tcGxldGlvbiBoYW5kbGVyLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmxvYWRVUkwpOiBVcGRhdGUgZm9yIG5ldyBDb21wbGV0aW9uSGFuZGxlciBzaWduYXR1cmUuCisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3QpOiBEaXR0by4KKyAgICAg
ICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lD
aGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3kpOiBSZXZpc2UgdG8gdXNlIFdlYWtQdHIgZm9y
CisgICAgICAgIEZvcm1TdGF0ZSBwYXNzZWQgdG8gdGhlIGNvbXBsZXRpb24gaGFuZGxlci4gUmVt
b3ZlIHNvbWUgZXh0cmFuZW91cyBXVEZNb3ZlKCkKKyAgICAgICAgY2FsbHMgb24gYmFyZSBwb2lu
dGVycy4KKyAgICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmV3V2luZG93UG9s
aWN5KTogRGl0dG8uCisgICAgICAgICogbG9hZGVyL1BvbGljeUNoZWNrZXIuaDoKKwogMjAxOC0w
NS0yMiAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgT3B0aW1pemVk
IHBhdGggem9vbSBhbmltYXRpb24gbmVlZHMgYSB2YWxpZCBVSUltYWdlIGFuZCBDR1JlY3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDllMDliZDM1ZTBkMzRm
Yzc0YTQ5MDdiOTI2OTJjZTAyMzI2NGQyMGQuLjdlZDRmNjRjOTIxMTgxZTQ4YWY5YmQ2MDMyNTll
ZWQ1NWQxYjg4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTY0MCw3ICs2NDAs
NyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyYwogICAgIGlmICghZGlkUmVjZWl2ZVJlZGlyZWN0
UmVzcG9uc2UgJiYgc2hvdWxkQ29udGludWUgIT0gU2hvdWxkQ29udGludWU6OkZvclN1c3BlbnNp
b24pCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG5ld1JlcXVlc3Qp
KTsKIAotICAgIGF1dG8gbmF2aWdhdGlvblBvbGljeUNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZvcm1T
dGF0ZSosIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSBtdXRhYmxlIHsKKyAgICBhdXRv
IG5hdmlnYXRpb25Qb2xpY3lDb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildIChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4m
JiwgU2hvdWxkQ29udGludWUgc2hvdWxkQ29udGludWUpIG11dGFibGUgewogICAgICAgICBtX3dh
aXRpbmdGb3JOYXZpZ2F0aW9uUG9saWN5ID0gZmFsc2U7CiAgICAgICAgIHN3aXRjaCAoc2hvdWxk
Q29udGludWUpIHsKICAgICAgICAgY2FzZSBTaG91bGRDb250aW51ZTo6Rm9yU3VzcGVuc2lvbjoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3RhdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0Zvcm1TdGF0ZS5jcHAKaW5kZXggOWZhOGJkZDNlMWNjMzZhYjExY2Nk
ZTVmMzAxOTY1Mjg5NGJmZDA1Yi4uZjg3MDBiMWFkMzgzMWEzZDQzMTYzMDgxYThmMGMwNjJiNmNh
MDZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdGF0ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdGF0ZS5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Miw3ICs1Miw3IEBA
IFJlZjxGb3JtU3RhdGU+IEZvcm1TdGF0ZTo6Y3JlYXRlKEhUTUxGb3JtRWxlbWVudCYgZm9ybSwg
U3RyaW5nUGFpclZlY3RvciYmIHRleHRGCiB2b2lkIEZvcm1TdGF0ZTo6d2lsbERldGFjaFBhZ2Uo
KQogewogICAgIC8vIEJlYXJ0cmFwIGZvciA8cmRhcjovL3Byb2JsZW0vMzc1NzkzNTQ+Ci0gICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChoYXNPbmVS
ZWYoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3Rh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3RhdGUuaAppbmRleCAyNjM0YTk3YjEy
MzZjOTc2MjM0ZTUwZGE3ZDVjMjAzOTdjZGNjMmZiLi43NzU4NDMyOWFmMTY0MjQ2NTBjMDBkYjhh
NzkzZDlkOTU1ZjUwNTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN0
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdGF0ZS5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiAr
MjksNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGcmFtZURlc3RydWN0aW9uT2JzZXJ2
ZXIuaCIKKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OSw2ICs1MCw4IEBAIHB1YmxpYzoK
ICAgICBEb2N1bWVudCYgc291cmNlRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZURv
Y3VtZW50OyB9CiAgICAgRm9ybVN1Ym1pc3Npb25UcmlnZ2VyIGZvcm1TdWJtaXNzaW9uVHJpZ2dl
cigpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybVN1Ym1pc3Npb25UcmlnZ2VyOyB9CiAKKyAgICBhdXRv
JiB3ZWFrUHRyRmFjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fd2Vha0ZhY3Rvcnk7IH0KKwogcHJp
dmF0ZToKICAgICBGb3JtU3RhdGUoSFRNTEZvcm1FbGVtZW50JiwgU3RyaW5nUGFpclZlY3RvciYm
IHRleHRGaWVsZFZhbHVlcywgRG9jdW1lbnQmLCBGb3JtU3VibWlzc2lvblRyaWdnZXIpOwogICAg
IHZvaWQgd2lsbERldGFjaFBhZ2UoKSBvdmVycmlkZTsKQEAgLTU3LDYgKzYwLDcgQEAgcHJpdmF0
ZToKICAgICBTdHJpbmdQYWlyVmVjdG9yIG1fdGV4dEZpZWxkVmFsdWVzOwogICAgIFJlZjxEb2N1
bWVudD4gbV9zb3VyY2VEb2N1bWVudDsKICAgICBGb3JtU3VibWlzc2lvblRyaWdnZXIgbV9mb3Jt
U3VibWlzc2lvblRyaWdnZXI7CisgICAgV2Vha1B0ckZhY3Rvcnk8Rm9ybVN0YXRlPiBtX3dlYWtG
YWN0b3J5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKaW5kZXggMzBkMDAyNTNjZGU4YTc0ODM3YjBkNDc1YzBmMTczNTFmNWFh
OGFmOC4uYzg5ZTZjZTgyNTRhNGI2ZjhkZjllMGU5NmUxMjE2NWY3MDFiZDg4MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwNi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykKICAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQogICogQ29w
eXJpZ2h0IChDKSAyMDA4IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CkBAIC0xMjI4LDcgKzEy
MjgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRnJhbWVSZXF1ZXN0KEZyYW1lTG9hZFJlcXVl
c3QmJiByZXF1ZXN0LCBFdmVudCogZXZlbnQsIEZvcgogICAgIGVsc2UKICAgICAgICAgbG9hZFR5
cGUgPSBGcmFtZUxvYWRUeXBlOjpTdGFuZGFyZDsKIAotICAgIGF1dG8gY29tcGxldGlvbkhhbmRs
ZXIgPSBbdGhpcywgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpLCBmb3JtU3RhdGUg
PSBtYWtlUmVmUHRyKGZvcm1TdGF0ZSksIGZyYW1lTmFtZSA9IHJlcXVlc3QuZnJhbWVOYW1lKCld
IHsKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZEZyYW1lID0g
bWFrZVJlZihtX2ZyYW1lKSwgZm9ybVN0YXRlID0gbWFrZVdlYWtQdHIoZm9ybVN0YXRlKSwgZnJh
bWVOYW1lID0gcmVxdWVzdC5mcmFtZU5hbWUoKV0gewogICAgICAgICAvLyBGSVhNRTogSXQncyBw
b3NzaWJsZSB0aGlzIHRhcmdldEZyYW1lIHdpbGwgbm90IGJlIHRoZSBzYW1lIGZyYW1lIHRoYXQg
d2FzIHRhcmdldGVkIGJ5IHRoZSBhY3R1YWwKICAgICAgICAgLy8gbG9hZCBpZiBmcmFtZSBuYW1l
cyBoYXZlIGNoYW5nZWQuCiAgICAgICAgIEZyYW1lKiBzb3VyY2VGcmFtZSA9IGZvcm1TdGF0ZSA/
IGZvcm1TdGF0ZS0+c291cmNlRG9jdW1lbnQoKS5mcmFtZSgpIDogJm1fZnJhbWU7CkBAIC0xMzM4
LDggKzEzMzgsOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMKEZyYW1lTG9hZFJlcXVlc3Qm
JiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZgogCiAgICAgaWYgKCF0YXJnZXRG
cmFtZSAmJiAhZnJhbWVOYW1lLmlzRW1wdHkoKSkgewogICAgICAgICBhY3Rpb24gPSBhY3Rpb24u
Y29weVdpdGhTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KHNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3lUb0FwcGx5KG1fZnJhbWUsIGZyYW1lTG9hZFJlcXVlc3QpKTsKLSAgICAgICAgcG9s
aWN5Q2hlY2tlcigpLmNoZWNrTmV3V2luZG93UG9saWN5KFdURk1vdmUoYWN0aW9uKSwgV1RGTW92
ZShyZXF1ZXN0KSwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05hdmlnYXRpb25U
b0ludmFsaWRVUkwsIG9wZW5lclBvbGljeSwgY29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9u
SGFuZGxlckNhbGxlci5yZWxlYXNlKCldIChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2
aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgewot
ICAgICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kocmVxdWVzdCwgZm9y
bVN0YXRlLCBmcmFtZU5hbWUsIGFjdGlvbiwgc2hvdWxkQ29udGludWUsIGFsbG93TmF2aWdhdGlv
blRvSW52YWxpZFVSTCwgb3BlbmVyUG9saWN5KTsKKyAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNo
ZWNrTmV3V2luZG93UG9saWN5KFdURk1vdmUoYWN0aW9uKSwgV1RGTW92ZShyZXF1ZXN0KSwgZm9y
bVN0YXRlLCBmcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIG9w
ZW5lclBvbGljeSwgY29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlckNhbGxlci5y
ZWxlYXNlKCldIChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYWtQdHI8Rm9ybVN0
YXRlPiYmIGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5hdmlnYXRp
b25BY3Rpb24mIGFjdGlvbiwgU2hvdWxkQ29udGludWUgc2hvdWxkQ29udGludWUpIHsKKyAgICAg
ICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KHJlcXVlc3QsIGZvcm1TdGF0
ZS5nZXQoKSwgZnJhbWVOYW1lLCBhY3Rpb24sIHNob3VsZENvbnRpbnVlLCBhbGxvd05hdmlnYXRp
b25Ub0ludmFsaWRVUkwsIG9wZW5lclBvbGljeSk7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTM1OCw3ICsxMzU4LDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChGcmFtZUxvYWRSZXF1ZXN0JiYgZnJhbWVMb2Fk
UmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWYKICAgICAgICAgb2xkRG9jdW1lbnRMb2FkZXItPnNl
dExhc3RDaGVja2VkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoKSk7CiAgICAgICAgIHBvbGljeUNo
ZWNrZXIoKS5zdG9wQ2hlY2soKTsKICAgICAgICAgcG9saWN5Q2hlY2tlcigpLnNldExvYWRUeXBl
KG5ld0xvYWRUeXBlKTsKLSAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmF2aWdhdGlvblBv
bGljeShXVEZNb3ZlKHJlcXVlc3QpLCBmYWxzZSAvKiBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25z
ZSAqLywgb2xkRG9jdW1lbnRMb2FkZXIuZ2V0KCksIGZvcm1TdGF0ZSwgW3RoaXMsIHByb3RlY3Rl
ZEZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgRm9ybVN0YXRlKiwgU2hvdWxkQ29udGludWUgc2hvdWxkQ29udGludWUpIHsKKyAgICAgICAg
cG9saWN5Q2hlY2tlcigpLmNoZWNrTmF2aWdhdGlvblBvbGljeShXVEZNb3ZlKHJlcXVlc3QpLCBm
YWxzZSAvKiBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSAqLywgb2xkRG9jdW1lbnRMb2FkZXIu
Z2V0KCksIGZvcm1TdGF0ZSwgW3RoaXMsIHByb3RlY3RlZEZyYW1lID0gbWFrZVJlZihtX2ZyYW1l
KV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2Vha1B0cjxGb3JtU3RhdGU+JiYs
IFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSB7CiAgICAgICAgICAgICBjb250aW51ZUZy
YWdtZW50U2Nyb2xsQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KHJlcXVlc3QsIHNob3VsZENvbnRpbnVl
ID09IFNob3VsZENvbnRpbnVlOjpZZXMpOwogICAgICAgICB9LCBQb2xpY3lEZWNpc2lvbk1vZGU6
OlN5bmNocm9ub3VzKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTQxOSw4ICsxNDE5LDggQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6bG9hZChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCkKIAogICAgIGlm
IChyZXF1ZXN0LnNob3VsZENoZWNrTmV3V2luZG93UG9saWN5KCkpIHsKICAgICAgICAgTmF2aWdh
dGlvbkFjdGlvbiBhY3Rpb24geyByZXF1ZXN0LnJlcXVlc3RlcigpLCByZXF1ZXN0LnJlc291cmNl
UmVxdWVzdCgpLCBJbml0aWF0ZWRCeU1haW5GcmFtZTo6VW5rbm93biwgTmF2aWdhdGlvblR5cGU6
Ok90aGVyLCByZXF1ZXN0LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSB9OwotICAgICAg
ICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOZXdXaW5kb3dQb2xpY3koV1RGTW92ZShhY3Rpb24pLCBX
VEZNb3ZlKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpLCBudWxscHRyLCByZXF1ZXN0LmZyYW1l
TmFtZSgpLCBbdGhpc10gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9ybVN0YXRl
KiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0
aW9uJiBhY3Rpb24sIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSB7Ci0gICAgICAgICAg
ICBjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeShyZXF1ZXN0LCBmb3JtU3RhdGUsIGZy
YW1lTmFtZSwgYWN0aW9uLCBzaG91bGRDb250aW51ZSwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlk
VVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpTdXBwcmVzcyk7CisgICAgICAgIHBvbGlj
eUNoZWNrZXIoKS5jaGVja05ld1dpbmRvd1BvbGljeShXVEZNb3ZlKGFjdGlvbiksIFdURk1vdmUo
cmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSksIG51bGxwdHIsIHJlcXVlc3QuZnJhbWVOYW1lKCks
IFt0aGlzXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWFrUHRyPEZvcm1TdGF0
ZT4mJiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9u
QWN0aW9uJiBhY3Rpb24sIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSB7CisgICAgICAg
ICAgICBjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeShyZXF1ZXN0LCBmb3JtU3RhdGUu
Z2V0KCksIGZyYW1lTmFtZSwgYWN0aW9uLCBzaG91bGRDb250aW51ZSwgQWxsb3dOYXZpZ2F0aW9u
VG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpTdXBwcmVzcyk7CiAgICAg
ICAgIH0pOwogCiAgICAgICAgIHJldHVybjsKQEAgLTE1MzMsNyArMTUzMyw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwg
RnJhbWVMb2FkVHlwZSB0CiAgICAgICAgIG9sZERvY3VtZW50TG9hZGVyLT5zZXRUcmlnZ2VyaW5n
QWN0aW9uKGFjdGlvbik7CiAgICAgICAgIG9sZERvY3VtZW50TG9hZGVyLT5zZXRMYXN0Q2hlY2tl
ZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KCkpOwogICAgICAgICBwb2xpY3lDaGVja2VyKCkuc3Rv
cENoZWNrKCk7Ci0gICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3ko
UmVzb3VyY2VSZXF1ZXN0KGxvYWRlci0+cmVxdWVzdCgpKSwgZmFsc2UgLyogZGlkUmVjZWl2ZVJl
ZGlyZWN0UmVzcG9uc2UgKi8sIG9sZERvY3VtZW50TG9hZGVyLmdldCgpLCBmb3JtU3RhdGUsIFt0
aGlzLCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9mcmFtZSldIChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIEZvcm1TdGF0ZSosIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVl
KSB7CisgICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3Vy
Y2VSZXF1ZXN0KGxvYWRlci0+cmVxdWVzdCgpKSwgZmFsc2UgLyogZGlkUmVjZWl2ZVJlZGlyZWN0
UmVzcG9uc2UgKi8sIG9sZERvY3VtZW50TG9hZGVyLmdldCgpLCBmb3JtU3RhdGUsIFt0aGlzLCBw
cm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9mcmFtZSldIChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIFdlYWtQdHI8Rm9ybVN0YXRlPiYmLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250
aW51ZSkgewogICAgICAgICAgICAgY29udGludWVGcmFnbWVudFNjcm9sbEFmdGVyTmF2aWdhdGlv
blBvbGljeShyZXF1ZXN0LCBzaG91bGRDb250aW51ZSA9PSBTaG91bGRDb250aW51ZTo6WWVzKTsK
ICAgICAgICAgfSwgUG9saWN5RGVjaXNpb25Nb2RlOjpTeW5jaHJvbm91cyk7CiAgICAgICAgIHJl
dHVybjsKQEAgLTE1NjcsOCArMTU2Nyw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRoRG9j
dW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgRnJhbWVMb2FkVHlwZSB0CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOYXZpZ2F0aW9u
UG9saWN5KFJlc291cmNlUmVxdWVzdChsb2FkZXItPnJlcXVlc3QoKSksIGZhbHNlIC8qIGRpZFJl
Y2VpdmVSZWRpcmVjdFJlc3BvbnNlICovLCBsb2FkZXIsIGZvcm1TdGF0ZSwgW3RoaXMsIHByb3Rl
Y3RlZEZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJM
LCBjb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKV0g
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIFNo
b3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSB7Ci0gICAgICAgIGNvbnRpbnVlTG9hZEFmdGVy
TmF2aWdhdGlvblBvbGljeShyZXF1ZXN0LCBmb3JtU3RhdGUsIHNob3VsZENvbnRpbnVlLCBhbGxv
d05hdmlnYXRpb25Ub0ludmFsaWRVUkwpOworICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmln
YXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci0+cmVxdWVzdCgpKSwgZmFsc2UgLyog
ZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgKi8sIGxvYWRlciwgZm9ybVN0YXRlLCBbdGhpcywg
cHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpLCBhbGxvd05hdmlnYXRpb25Ub0ludmFs
aWRVUkwsIGNvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFz
ZSgpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4m
JiBmb3JtU3RhdGUsIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSB7CisgICAgICAgIGNv
bnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShyZXF1ZXN0LCBmb3JtU3RhdGUuZ2V0KCks
IHNob3VsZENvbnRpbnVlLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwpOwogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwogfQpAQCAtMjg2MSwxMyArMjg2MSwxMyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVl
c3QsIGNvbnN0IFN0cmluZyYgcmVmZQogCiAgICAgaWYgKCFmcmFtZU5hbWUuaXNFbXB0eSgpKSB7
CiAgICAgICAgIC8vIFRoZSBzZWFyY2ggZm9yIGEgdGFyZ2V0IGZyYW1lIGlzIGRvbmUgZWFybGll
ciBpbiB0aGUgY2FzZSBvZiBmb3JtIHN1Ym1pc3Npb24uCi0gICAgICAgIGlmIChGcmFtZSogdGFy
Z2V0RnJhbWUgPSBmb3JtU3RhdGUgPyAwIDogZmluZEZyYW1lRm9yTmF2aWdhdGlvbihmcmFtZU5h
bWUpKSB7Ci0gICAgICAgICAgICB0YXJnZXRGcmFtZS0+bG9hZGVyKCkubG9hZFdpdGhOYXZpZ2F0
aW9uQWN0aW9uKHdvcmtpbmdSZXNvdXJjZVJlcXVlc3QsIGFjdGlvbiwgbG9ja0hpc3RvcnksIGxv
YWRUeXBlLCBXVEZNb3ZlKGZvcm1TdGF0ZSksIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBpZiAoYXV0byogdGFyZ2V0RnJh
bWUgPSBmb3JtU3RhdGUgPyBudWxscHRyIDogZmluZEZyYW1lRm9yTmF2aWdhdGlvbihmcmFtZU5h
bWUpKSB7CisgICAgICAgICAgICB0YXJnZXRGcmFtZS0+bG9hZGVyKCkubG9hZFdpdGhOYXZpZ2F0
aW9uQWN0aW9uKHdvcmtpbmdSZXNvdXJjZVJlcXVlc3QsIGFjdGlvbiwgbG9ja0hpc3RvcnksIGxv
YWRUeXBlLCBmb3JtU3RhdGUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmV3V2luZG93UG9saWN5KFdURk1vdmUoYWN0aW9u
KSwgV1RGTW92ZSh3b3JraW5nUmVzb3VyY2VSZXF1ZXN0KSwgV1RGTW92ZShmb3JtU3RhdGUpLCBm
cmFtZU5hbWUsIFt0aGlzLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBvbGlj
eSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIGNvbnN0IFN0
cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFNob3VsZENv
bnRpbnVlIHNob3VsZENvbnRpbnVlKSB7Ci0gICAgICAgICAgICBjb250aW51ZUxvYWRBZnRlck5l
d1dpbmRvd1BvbGljeShyZXF1ZXN0LCBmb3JtU3RhdGUsIGZyYW1lTmFtZSwgYWN0aW9uLCBzaG91
bGRDb250aW51ZSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBvcGVuZXJQb2xpY3kpOwor
ICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOZXdXaW5kb3dQb2xpY3koV1RGTW92ZShhY3Rp
b24pLCBXVEZNb3ZlKHdvcmtpbmdSZXNvdXJjZVJlcXVlc3QpLCBmb3JtU3RhdGUsIGZyYW1lTmFt
ZSwgW3RoaXMsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgb3BlbmVyUG9saWN5LCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUsIGNvbnN0
IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFNob3Vs
ZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSB7CisgICAgICAgICAgICBjb250aW51ZUxvYWRBZnRl
ck5ld1dpbmRvd1BvbGljeShyZXF1ZXN0LCBmb3JtU3RhdGUuZ2V0KCksIGZyYW1lTmFtZSwgYWN0
aW9uLCBzaG91bGRDb250aW51ZSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBvcGVuZXJQ
b2xpY3kpOwogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgfSk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTI4NzUsNyArMjg3NSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6Omxv
YWRQb3N0UmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBy
ZWZlCiAKICAgICAvLyBtdXN0IGdyYWIgdGhpcyBub3csIHNpbmNlIHRoaXMgbG9hZCBtYXkgc3Rv
cCB0aGUgcHJldmlvdXMgbG9hZCBhbmQgY2xlYXIgdGhpcyBmbGFnCiAgICAgYm9vbCBpc1JlZGly
ZWN0ID0gbV9xdWlja1JlZGlyZWN0Q29taW5nOwotICAgIGxvYWRXaXRoTmF2aWdhdGlvbkFjdGlv
bih3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LCBhY3Rpb24sIGxvY2tIaXN0b3J5LCBsb2FkVHlwZSwg
V1RGTW92ZShmb3JtU3RhdGUpLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIFt0aGlzLCBp
c1JlZGlyZWN0LCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9mcmFtZSksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICBsb2FkV2l0aE5hdmln
YXRpb25BY3Rpb24od29ya2luZ1Jlc291cmNlUmVxdWVzdCwgYWN0aW9uLCBsb2NrSGlzdG9yeSwg
bG9hZFR5cGUsIGZvcm1TdGF0ZSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBbdGhpcywg
aXNSZWRpcmVjdCwgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CiAgICAgICAgIGlmIChpc1Jl
ZGlyZWN0KSB7CiAgICAgICAgICAgICBtX3F1aWNrUmVkaXJlY3RDb21pbmcgPSBmYWxzZTsKICAg
ICAgICAgICAgIGlmIChtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIpCkBAIC0zNjMwLDcgKzM2
MzAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKEhpc3Rv
cnlJdGVtJiBpdGVtLCBGcmFtZUxvYWRUeXBlIGxvYQogCiAgICAgYWN0aW9uLnNldFRhcmdldEJh
Y2tGb3J3YXJkSXRlbShpdGVtKTsKIAotICAgIGxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbihyZXF1
ZXN0LCBhY3Rpb24sIExvY2tIaXN0b3J5OjpObywgbG9hZFR5cGUsIDAsIEFsbG93TmF2aWdhdGlv
blRvSW52YWxpZFVSTDo6WWVzLCBbXSB7IH0pOworICAgIGxvYWRXaXRoTmF2aWdhdGlvbkFjdGlv
bihyZXF1ZXN0LCBhY3Rpb24sIExvY2tIaXN0b3J5OjpObywgbG9hZFR5cGUsIG51bGxwdHIsIEFs
bG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBbXSB7IH0pOwogfQogCiAvLyBMb2FkcyBj
b250ZW50IGludG8gdGhpcyBmcmFtZSwgYXMgc3BlY2lmaWVkIGJ5IGhpc3RvcnkgaXRlbQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCmluZGV4IGI2NjkwZWE5NjY1YTE1MTVj
OTdhNjNhZGM5NDA3NzMyYjk4MTkxMjcuLjcxNGU4MWRjZjZkY2E5NmQwOWE0MjI0ZjdiZTRhM2Fi
ZTM2NWQ1NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICogQ29weXJpZ2h0IChDKSAyMDA4LCAy
MDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRv
cmNobW9iaWxlLmNvbS8pCiAgKgpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgUG9saWN5Q2hlY2tl
cjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGJvb2wg
ZGlkUmVjCiAgICAgLy8gRG9uJ3QgYXNrIG1vcmUgdGhhbiBvbmNlIGZvciB0aGUgc2FtZSByZXF1
ZXN0IG9yIGlmIHdlIGFyZSBsb2FkaW5nIGFuIGVtcHR5IFVSTC4KICAgICAvLyBUaGlzIGF2b2lk
cyBjb25mdXNpb24gb24gdGhlIHBhcnQgb2YgdGhlIGNsaWVudC4KICAgICBpZiAoZXF1YWxJZ25v
cmluZ0hlYWRlckZpZWxkcyhyZXF1ZXN0LCBsb2FkZXItPmxhc3RDaGVja2VkUmVxdWVzdCgpKSB8
fCAoIXJlcXVlc3QuaXNOdWxsKCkgJiYgcmVxdWVzdC51cmwoKS5pc0VtcHR5KCkpKSB7Ci0gICAg
ICAgIGZ1bmN0aW9uKFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwgbnVsbHB0ciwgU2hvdWxkQ29u
dGludWU6Olllcyk7CisgICAgICAgIGZ1bmN0aW9uKFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwg
eyB9LCBTaG91bGRDb250aW51ZTo6WWVzKTsKICAgICAgICAgbG9hZGVyLT5zZXRMYXN0Q2hlY2tl
ZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0x
MjQsNyArMTI0LDcgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3ko
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgYm9vbCBkaWRSZWMKICNlbmRpZgogICAgICAgICBp
ZiAoaXNCYWNrRm9yd2FyZExvYWRUeXBlKG1fbG9hZFR5cGUpKQogICAgICAgICAgICAgbV9sb2Fk
VHlwZSA9IEZyYW1lTG9hZFR5cGU6OlJlbG9hZDsKLSAgICAgICAgZnVuY3Rpb24oV1RGTW92ZShy
ZXF1ZXN0KSwgbnVsbHB0ciwgc2hvdWxkQ29udGludWUgPyBTaG91bGRDb250aW51ZTo6WWVzIDog
U2hvdWxkQ29udGludWU6Ok5vKTsKKyAgICAgICAgZnVuY3Rpb24oV1RGTW92ZShyZXF1ZXN0KSwg
eyB9LCBzaG91bGRDb250aW51ZSA/IFNob3VsZENvbnRpbnVlOjpZZXMgOiBTaG91bGRDb250aW51
ZTo6Tm8pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9p
ZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgYm9vbCBkaWRSZWMKICAgICAgICAgICAgIC8vIHJldmVhbCB0aGF0IHRoZSBmcmFt
ZSB3YXMgYmxvY2tlZC4gVGhpcyB3YXksIGl0IGxvb2tzIGxpa2UgYW55IG90aGVyIGNyb3NzLW9y
aWdpbiBwYWdlIGxvYWQuCiAgICAgICAgICAgICBtX2ZyYW1lLm93bmVyRWxlbWVudCgpLT5kaXNw
YXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgZmFsc2UsIGZh
bHNlKSk7CiAgICAgICAgIH0KLSAgICAgICAgZnVuY3Rpb24oV1RGTW92ZShyZXF1ZXN0KSwgbnVs
bHB0ciwgU2hvdWxkQ29udGludWU6Ok5vKTsKKyAgICAgICAgZnVuY3Rpb24oV1RGTW92ZShyZXF1
ZXN0KSwgeyB9LCBTaG91bGRDb250aW51ZTo6Tm8pOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Q
b2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgYm9vbCBkaWRSZWMKICNpZiBVU0UoUVVJ
Q0tfTE9PSykKICAgICAvLyBBbHdheXMgYWxsb3cgUXVpY2tMb29rLWdlbmVyYXRlZCBVUkxzIGJh
c2VkIG9uIHRoZSBwcm90b2NvbCBzY2hlbWUuCiAgICAgaWYgKCFyZXF1ZXN0LmlzTnVsbCgpICYm
IGlzUXVpY2tMb29rUHJldmlld1VSTChyZXF1ZXN0LnVybCgpKSkKLSAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uKFdURk1vdmUocmVxdWVzdCksIGZvcm1TdGF0ZSwgU2hvdWxkQ29udGludWU6Olllcyk7
CisgICAgICAgIHJldHVybiBmdW5jdGlvbihXVEZNb3ZlKHJlcXVlc3QpLCBtYWtlV2Vha1B0cihm
b3JtU3RhdGUpLCBTaG91bGRDb250aW51ZTo6WWVzKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQpAQCAtMTgzLDkgKzE4Myw5IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6
Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGJvb2wgZGlk
UmVjCiAgICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpVc2U6CiAgICAgICAgICAgICBpZiAoIW1f
ZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuY2FuSGFuZGxlUmVxdWVzdChyZXF1ZXN0KSkgewogICAg
ICAgICAgICAgICAgIGhhbmRsZVVuaW1wbGVtZW50YWJsZVBvbGljeShtX2ZyYW1lLmxvYWRlcigp
LmNsaWVudCgpLmNhbm5vdFNob3dVUkxFcnJvcihyZXF1ZXN0KSk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uKHsgfSwgbnVsbHB0ciwgU2hvdWxkQ29udGludWU6Ok5vKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oeyB9LCB7IH0sIFNob3VsZENvbnRpbnVlOjpObyk7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oV1RGTW92ZShyZXF1
ZXN0KSwgZm9ybVN0YXRlLmdldCgpLCBTaG91bGRDb250aW51ZTo6WWVzKTsKKyAgICAgICAgICAg
IHJldHVybiBmdW5jdGlvbihXVEZNb3ZlKHJlcXVlc3QpLCBtYWtlV2Vha1B0cihmb3JtU3RhdGUu
Z2V0KCkpLCBTaG91bGRDb250aW51ZTo6WWVzKTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICB9KTsKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lkIFBvbGljeUNo
ZWNrZXI6OmNoZWNrTmV3V2luZG93UG9saWN5KE5hdmlnYXRpb25BY3Rpb24mJiBuYXZpZ2F0aW9u
QWN0aW9uLCBSZQogICAgICAgICAgICAgLy8gSXQgaXMgaW52YWxpZCB0byBnZXQgYSAiU3VzcGVu
ZCIgcG9saWN5IGZvciBuZXcgd2luZG93cywgYXMgdGhlIG9sZCBkb2N1bWVudCBpcyBub3QgZ29p
bmcgYXdheS4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIGNhc2UgUG9saWN5QWN0aW9uOjpVc2U6Ci0gICAgICAgICAgICBmdW5jdGlvbihyZXF1ZXN0
LCBmb3JtU3RhdGUuZ2V0KCksIGZyYW1lTmFtZSwgbmF2aWdhdGlvbkFjdGlvbiwgU2hvdWxkQ29u
dGludWU6Olllcyk7CisgICAgICAgICAgICBmdW5jdGlvbihyZXF1ZXN0LCBtYWtlV2Vha1B0cihm
b3JtU3RhdGUuZ2V0KCkpLCBmcmFtZU5hbWUsIG5hdmlnYXRpb25BY3Rpb24sIFNob3VsZENvbnRp
bnVlOjpZZXMpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGlj
eUNoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmgKaW5kZXgg
YzMyOWVjNDNiODFlMzVlOGI3M2FiZTZlNjAxZDEzZDQyNTA4NTJhZi4uNmYxMTIxMTkxNDZjNDhi
NGViNGU5YjAyNjgxZGMwZTliMmFmNTZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1BvbGljeUNoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hl
Y2tlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50
b3JjaG1vYmlsZS5jb20vKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzEsNiArMzEsNyBAQAogCiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5o
IgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCkBAIC01OSw4ICs2MCw4IEBAIGVu
dW0gY2xhc3MgU2hvdWxkQ29udGludWUgewogCiBlbnVtIGNsYXNzIFBvbGljeURlY2lzaW9uTW9k
ZSB7IFN5bmNocm9ub3VzLCBBc3luY2hyb25vdXMgfTsKIAotdXNpbmcgTmV3V2luZG93UG9saWN5
RGVjaXNpb25GdW5jdGlvbiA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgRm9ybVN0YXRlKiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5hdmln
YXRpb25BY3Rpb24mLCBTaG91bGRDb250aW51ZSk+OwotdXNpbmcgTmF2aWdhdGlvblBvbGljeURl
Y2lzaW9uRnVuY3Rpb24gPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYm
LCBGb3JtU3RhdGUqLCBTaG91bGRDb250aW51ZSk+OwordXNpbmcgTmV3V2luZG93UG9saWN5RGVj
aXNpb25GdW5jdGlvbiA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgV2Vha1B0cjxGb3JtU3RhdGU+JiYsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25z
dCBOYXZpZ2F0aW9uQWN0aW9uJiwgU2hvdWxkQ29udGludWUpPjsKK3VzaW5nIE5hdmlnYXRpb25Q
b2xpY3lEZWNpc2lvbkZ1bmN0aW9uID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJiwgV2Vha1B0cjxGb3JtU3RhdGU+JiYsIFNob3VsZENvbnRpbnVlKT47CiAKIGNsYXNz
IFBvbGljeUNoZWNrZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBvbGljeUNoZWNrZXIp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341166</attachid>
            <date>2018-05-23 20:36:10 -0700</date>
            <delta_ts>2018-05-23 21:44:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185877-20180523203609.patch</filename>
            <type>text/plain</type>
            <size>43762</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzk1YzZjNTBlYWZlMTRl
ZWRjMDlhZTE2MWQxMmY0NzQyZDljODU0ZS4uMjE4N2M1OTE2NGU5ODRmNjkwYTAyNzgwZmJhNGEx
ZTdjZDk4NjViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDE4LTA1LTIzICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIEF2b2lkIGtlZXBpbmcg
Rm9ybVN0YXRlIGFsaXZlIGxvbmdlciB0aGFuIG5lY2Vzc2FyeQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1ODc3CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zOTMyOTIxOT4KKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAg
ICAgICAgQSBudW1iZXIgb2YgY3Jhc2ggZml4ZXMgd2VyZSBkb25lIHRvIHByZXZlbnQgRm9ybVN0
YXRlIG9iamVjdHMgZnJvbSBiZWluZworICAgICAgICBhY2Nlc3NlZCBhZnRlciB0aGVpciByZWxl
dmFudCBGcmFtZXMgaGFkIGJlZW4gZGVzdHJveWVkLiBVbmZvcnR1bmF0ZWx5LCB0aGlzCisgICAg
ICAgIGNvdWxkIGNhdXNlIHRoZSBGb3JtU3RhdGUgdG8gcGVyc2lzdCBhZnRlciB0aGUgb3duaW5n
IEZyYW1lIGhhZCBiZWVuCisgICAgICAgIGRlc3Ryb3llZCwgcmVzdWx0aW5nIGluIG51bGxwdHIg
ZGVyZWZlcmVuY2VzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyB0aGUgZm9sbG93aW5nOgor
CisgICAgICAgIDEuIFVzZXMgV2Vha1B0cidzIGZvciBGb3JtU3RhdGUgb2JqZWN0cyBwYXNzZWQg
dG8gY29tcGxldGlvbiBoYW5kbGVycywgcmF0aGVyCisgICAgICAgICAgIHRoYW4gUmVmUHRyLCBz
aW5jZSB0aG9zZSBjb21wbGV0aW9uIGhhbmRsZXJzIG1pZ2h0IGZpcmUgYXMgcGFydCBvZiB0aGUK
KyAgICAgICAgICAgY2xlYW4tdXAgcHJvY2VzcyBkdXJpbmcgRnJhbWUgZGVzdHJ1Y3Rpb24uIFRo
aXMgYWxsb3dzIHVzIHRvIHVzZSB0aGUgRm9ybVN0YXRlCisgICAgICAgICAgIGlmIHRoZXkgYXJl
IHN0aWxsIHZhbGlkLCBidXQgZ3JhY2VmdWxseSBoYW5kbGUgY2FzZXMgd2hlcmUgYSBmb3JtIHN1
Ym1pc3Npb24KKyAgICAgICAgICAgaXMgY2FuY2VsbGVkIGluLWZsaWdodC4KKyAgICAgICAgMi4g
TW92ZXMgRm9ybVN0YXRlIG9iamVjdCBhcyB0aGV5IHBhc3MgdGhyb3VnaCB0aGUgbG9hZGVyLgor
ICAgICAgICAzLiBSZW1vdmVzIHNvbWUgZXh0cmFuZW91cyBXVEZNb3ZlKCkgY2FsbHMgYmVpbmcg
bWFkZSBvbiBiYXJlIEZvcm1TdGF0ZSBwb2ludGVycy4KKyAgICAgICAgNC4gQ2hhbmdlcyBGb3Jt
U3VibWlzc2lvbiB0byBob2xkIGEgUmVmUHRyIHNvIHdlIGNhbiBtb3ZlIHRoZSBGb3JtU3RhdGUg
dG8gdGhlCisgICAgICAgICAgIGxvYWRlciBpbiB0aGUgY29kZSBwYXRoIHRoYXQgdXNlcyBpdCAo
dGhlIEZvcm1TdWJtaXNzaW9uIGlzIGFsd2F5cyBkZXN0cm95ZWQKKyAgICAgICAgICAgc2hvcnRs
eSBhZnRlcndhcmRzKS4KKyAgICAgICAgNS4gQ2hhbmdlcyB0aGUgdHJhcCBmcm9tIEJ1ZyAxODM3
MDQgc28gdGhhdCBpdCBvbmx5IGZpcmVzIGlmIHRoZSBGb3JtU3RhdGUgb2JqZWN0CisgICAgICAg
ICAgIGlzIGJlaW5nIHJldGFpbmVkIG1vcmUgdGhhbiBvbmNlLgorCisgICAgICAgICogbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjp3
aWxsU2VuZFJlcXVlc3QpOiBVcGRhdGUgZm9yIG5ldyBDb21wbGV0aW9uSGFuZGxlcgorICAgICAg
ICBzaWduYXR1cmUuCisgICAgICAgICogbG9hZGVyL0Zvcm1TdGF0ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb3JtU3RhdGU6OndpbGxEZXRhY2hQYWdlKTogUmV2aXNlIHRyYXAgdG8gY2hlY2sg
Zm9yIHJldGFpbiBjb3VudHMKKyAgICAgICAgYWJvdmUgb25lLgorICAgICAgICAqIGxvYWRlci9G
b3JtU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1TdGF0ZTo6d2Vha1B0ckZhY3Rvcnkg
Y29uc3QpOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvcm1TdWJtaXNzaW9uOjpzdGF0ZSBjb25zdCk6IFJldmlzZWQgZm9yIGNo
YW5nZSB0byBSZWZQdHIuCisgICAgICAgIChXZWJDb3JlOjpGb3JtU3VibWlzc2lvbjo6dGFrZVN0
YXRlKTogQWRkZWQuCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZCk6IFVwZGF0ZSBmb3IgbmV3IENvbXBs
ZXRpb25IYW5kbGVyIHNpZ25hdHVyZS4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjps
b2FkVVJMSW50b0NoaWxkRnJhbWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpsb2FkRnJhbWVSZXF1ZXN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6bG9hZFVSTCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6Omxv
YWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkV2l0aE5hdmln
YXRpb25BY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2Fk
V2l0aERvY3VtZW50TG9hZGVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6cmVsb2FkV2l0aE92ZXJyaWRlRW5jb2RpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpyZWxvYWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpsb2FkUG9zdFJlcXVlc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKTogRGl0dG8uCisgICAgICAgICogbG9hZGVy
L0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3Bw
OgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeSk6UmV2aXNlIHRvIHVzZSBXZWFr
UHRyIGZvcgorICAgICAgICBGb3JtU3RhdGUgcGFzc2VkIHRvIHRoZSBjb21wbGV0aW9uIGhhbmRs
ZXIuIFJlbW92ZSBzb21lIGV4dHJhbmVvdXMgV1RGTW92ZSgpCisgICAgICAgIGNhbGxzIG9uIGJh
cmUgcG9pbnRlcnMuCisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpjaGVja05ld1dp
bmRvd1BvbGljeSk6IERpdHRvLgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmg6Cisg
ICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6b3Blbk5ld1dpbmRvdyk6IFJldmlzZSBmb3IgbmV3IHNpZ25hdHVyZXMuCisgICAgICAgIChX
ZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKTog
RGl0dG8uCisKIDIwMTgtMDUtMjIgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAg
ICAgICAgIE9wdGltaXplZCBwYXRoIHpvb20gYW5pbWF0aW9uIG5lZWRzIGEgdmFsaWQgVUlJbWFn
ZSBhbmQgQ0dSZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRl
eCA5ZTA5YmQzNWUwZDM0ZmM3NGE0OTA3YjkyNjkyY2UwMjMyNjRkMjBkLi43ZWQ0ZjY0YzkyMTE4
MWU0OGFmOWJkNjAzMjU5ZWVkNTVkMWI4ODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CkBAIC02NDAsNyArNjQwLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmMKICAgICBpZiAoIWRp
ZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlICYmIHNob3VsZENvbnRpbnVlICE9IFNob3VsZENvbnRp
bnVlOjpGb3JTdXNwZW5zaW9uKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShuZXdSZXF1ZXN0KSk7CiAKLSAgICBhdXRvIG5hdmlnYXRpb25Qb2xpY3lDb21wbGV0aW9u
SGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBGb3JtU3RhdGUqLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgbXV0
YWJsZSB7CisgICAgYXV0byBuYXZpZ2F0aW9uUG9saWN5Q29tcGxldGlvbkhhbmRsZXIgPSBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2Vh
a1B0cjxGb3JtU3RhdGU+JiYsIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSBtdXRhYmxl
IHsKICAgICAgICAgbV93YWl0aW5nRm9yTmF2aWdhdGlvblBvbGljeSA9IGZhbHNlOwogICAgICAg
ICBzd2l0Y2ggKHNob3VsZENvbnRpbnVlKSB7CiAgICAgICAgIGNhc2UgU2hvdWxkQ29udGludWU6
OkZvclN1c3BlbnNpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN0
YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3RhdGUuY3BwCmluZGV4IDlmYThi
ZGQzZTFjYzM2YWIxMWNjZGU1ZjMwMTk2NTI4OTRiZmQwNWIuLmY4NzAwYjFhZDM4MzFhM2Q0MzE2
MzA4MWE4ZjBjMDYyYjZjYTA2ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
b3JtU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3RhdGUuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNTIsNyArNTIsNyBAQCBSZWY8Rm9ybVN0YXRlPiBGb3JtU3RhdGU6OmNyZWF0ZShIVE1MRm9y
bUVsZW1lbnQmIGZvcm0sIFN0cmluZ1BhaXJWZWN0b3ImJiB0ZXh0Rgogdm9pZCBGb3JtU3RhdGU6
OndpbGxEZXRhY2hQYWdlKCkKIHsKICAgICAvLyBCZWFydHJhcCBmb3IgPHJkYXI6Ly9wcm9ibGVt
LzM3NTc5MzU0PgotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgUkVMRUFT
RV9BU1NFUlQoaGFzT25lUmVmKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRm9ybVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN0YXRlLmgK
aW5kZXggMjYzNGE5N2IxMjM2Yzk3NjIzNGU1MGRhN2Q1YzIwMzk3Y2RjYzJmYi4uNzc1ODQzMjlh
ZjE2NDI0NjUwYzAwZGI4YTc5M2Q5ZDk1NWY1MDUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Zvcm1TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3Rh
dGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRnJhbWVE
ZXN0cnVjdGlvbk9ic2VydmVyLmgiCisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDksNiAr
NTAsOCBAQCBwdWJsaWM6CiAgICAgRG9jdW1lbnQmIHNvdXJjZURvY3VtZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9zb3VyY2VEb2N1bWVudDsgfQogICAgIEZvcm1TdWJtaXNzaW9uVHJpZ2dlciBmb3Jt
U3VibWlzc2lvblRyaWdnZXIoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1TdWJtaXNzaW9uVHJpZ2dl
cjsgfQogCisgICAgYXV0byYgd2Vha1B0ckZhY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3dlYWtG
YWN0b3J5OyB9CisKIHByaXZhdGU6CiAgICAgRm9ybVN0YXRlKEhUTUxGb3JtRWxlbWVudCYsIFN0
cmluZ1BhaXJWZWN0b3ImJiB0ZXh0RmllbGRWYWx1ZXMsIERvY3VtZW50JiwgRm9ybVN1Ym1pc3Np
b25UcmlnZ2VyKTsKICAgICB2b2lkIHdpbGxEZXRhY2hQYWdlKCkgb3ZlcnJpZGU7CkBAIC01Nyw2
ICs2MCw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nUGFpclZlY3RvciBtX3RleHRGaWVsZFZhbHVl
czsKICAgICBSZWY8RG9jdW1lbnQ+IG1fc291cmNlRG9jdW1lbnQ7CiAgICAgRm9ybVN1Ym1pc3Np
b25UcmlnZ2VyIG1fZm9ybVN1Ym1pc3Npb25UcmlnZ2VyOworICAgIFdlYWtQdHJGYWN0b3J5PEZv
cm1TdGF0ZT4gbV93ZWFrRmFjdG9yeTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmgKaW5kZXggODY3ZTYzZmUyY2NjYzM2YWJi
NzgyM2I5OGJjZjFiY2M1MzBmNjZlYy4uNmViY2U2Yjc3YTI5OTA3MmM3NjY5MGQ4ODMxZjBkOTg1
Mzg5ZTBmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmgKQEAgLTgzLDcg
KzgzLDggQEAgcHVibGljOgogICAgIGNvbnN0IFVSTCYgYWN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9hY3Rpb247IH0KICAgICBjb25zdCBTdHJpbmcmIHRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1f
dGFyZ2V0OyB9CiAgICAgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGVudFR5cGU7IH0KLSAgICBGb3JtU3RhdGUmIHN0YXRlKCkgY29uc3QgeyByZXR1cm4g
bV9mb3JtU3RhdGU7IH0KKyAgICBGb3JtU3RhdGUmIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gKm1f
Zm9ybVN0YXRlOyB9CisgICAgUmVmPEZvcm1TdGF0ZT4gdGFrZVN0YXRlKCkgeyByZXR1cm4gbV9m
b3JtU3RhdGUucmVsZWFzZU5vbk51bGwoKTsgfQogICAgIEZvcm1EYXRhJiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9mb3JtRGF0YTsgfQogICAgIGNvbnN0IFN0cmluZyBib3VuZGFyeSgpIGNvbnN0
IHsgcmV0dXJuIG1fYm91bmRhcnk7IH0KICAgICBMb2NrSGlzdG9yeSBsb2NrSGlzdG9yeSgpIGNv
bnN0IHsgcmV0dXJuIG1fbG9ja0hpc3Rvcnk7IH0KQEAgLTEwMyw3ICsxMDQsNyBAQCBwcml2YXRl
OgogICAgIFVSTCBtX2FjdGlvbjsKICAgICBTdHJpbmcgbV90YXJnZXQ7CiAgICAgU3RyaW5nIG1f
Y29udGVudFR5cGU7Ci0gICAgUmVmPEZvcm1TdGF0ZT4gbV9mb3JtU3RhdGU7CisgICAgUmVmUHRy
PEZvcm1TdGF0ZT4gbV9mb3JtU3RhdGU7CiAgICAgUmVmPEZvcm1EYXRhPiBtX2Zvcm1EYXRhOwog
ICAgIFN0cmluZyBtX2JvdW5kYXJ5OwogICAgIExvY2tIaXN0b3J5IG1fbG9ja0hpc3Rvcnk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCAzMGQwMDI1M2NkZThhNzQ4Mzdi
MGQ0NzVjMGYxNzM1MWY1YWE4YWY4Li42NTVmMDFjNDc2NmUxZjAzZTdjMjc3YzRlNGY2MGUwYWJh
NWMwYTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFu
ZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRv
cmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9i
aWxlLmNvbS8pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQWxwIFRva2VyIDxhbHBAYXRva2VyLmNv
bT4KQEAgLTM5Miw3ICszOTIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZChGcmFt
ZUxvYWRSZXF1ZXN0JiYgZnJhbWVSZXF1ZXN0LCBFdmVudCogdHJpZ2dlcmluZwogICAgIGFkZEhU
VFBPcmlnaW5JZk5lZWRlZChmcmFtZVJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIG91dGdvaW5n
T3JpZ2luKCkpOwogICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5
KCktPnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZChmcmFtZVJlcXVlc3QucmVzb3VyY2VS
ZXF1ZXN0KCksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SW5zZWN1cmVSZXF1ZXN0VHlwZTo6TmF2
aWdhdGlvbik7CiAKLSAgICBsb2FkRnJhbWVSZXF1ZXN0KFdURk1vdmUoZnJhbWVSZXF1ZXN0KSwg
dHJpZ2dlcmluZ0V2ZW50LCBudWxscHRyKTsKKyAgICBsb2FkRnJhbWVSZXF1ZXN0KFdURk1vdmUo
ZnJhbWVSZXF1ZXN0KSwgdHJpZ2dlcmluZ0V2ZW50LCB7IH0pOwogfQogCiB2b2lkIEZyYW1lTG9h
ZGVyOjpzdWJtaXRGb3JtKFJlZjxGb3JtU3VibWlzc2lvbj4mJiBzdWJtaXNzaW9uKQpAQCAtOTU3
LDcgKzk1Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkxJbnRvQ2hpbGRGcmFtZShjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcmVyLCBGCiAgICAgYXV0byBpbml0aWF0ZWRC
eU1haW5GcmFtZSA9IGxleGljYWxGcmFtZSAmJiBsZXhpY2FsRnJhbWUtPmlzTWFpbkZyYW1lKCkg
PyBJbml0aWF0ZWRCeU1haW5GcmFtZTo6WWVzIDogSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVua25v
d247CiAKICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyAqbV9mcmFtZS5k
b2N1bWVudCgpLCBtX2ZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHsgdXJsIH0s
IEFTQ0lJTGl0ZXJhbCgiX3NlbGYiKSwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRM
aXN0OjpZZXMsIFNob3VsZFNlbmRSZWZlcnJlcjo6TWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2
aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6U3VwcHJlc3Ms
IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBpbml0aWF0ZWRC
eU1haW5GcmFtZSB9OwotICAgIGNoaWxkRnJhbWUtPmxvYWRlcigpLmxvYWRVUkwoV1RGTW92ZShm
cmFtZUxvYWRSZXF1ZXN0KSwgcmVmZXJlciwgRnJhbWVMb2FkVHlwZTo6UmVkaXJlY3RXaXRoTG9j
a2VkQmFja0ZvcndhcmRMaXN0LCBudWxscHRyLCBudWxscHRyLCBbXSB7IH0pOworICAgIGNoaWxk
RnJhbWUtPmxvYWRlcigpLmxvYWRVUkwoV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgcmVmZXJl
ciwgRnJhbWVMb2FkVHlwZTo6UmVkaXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0LCBudWxs
cHRyLCB7IH0sIFtdIHsgfSk7CiB9CiAKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJM
RShNSFRNTCkKQEAgLTExOTksNyArMTE5OSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNldHVwRm9y
UmVwbGFjZSgpCiAgICAgZGV0YWNoQ2hpbGRyZW4oKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6
bG9hZEZyYW1lUmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgRXZlbnQqIGV2ZW50
LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSkKK3ZvaWQgRnJhbWVMb2FkZXI6OmxvYWRGcmFtZVJlcXVl
c3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QsIEV2ZW50KiBldmVudCwgUmVmUHRyPEZvcm1T
dGF0ZT4mJiBmb3JtU3RhdGUpCiB7CiAgICAgLy8gUHJvdGVjdCBmcmFtZSBmcm9tIGdldHRpbmcg
Ymxvd24gYXdheSBpbnNpZGUgZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQgaW4gbG9hZFdpdGhEb2N1
bWVudExvYWRlci4KICAgICBhdXRvIHByb3RlY3RGcmFtZSA9IG1ha2VSZWYobV9mcmFtZSk7CkBA
IC0xMjI4LDcgKzEyMjgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRnJhbWVSZXF1ZXN0KEZy
YW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBFdmVudCogZXZlbnQsIEZvcgogICAgIGVsc2UKICAg
ICAgICAgbG9hZFR5cGUgPSBGcmFtZUxvYWRUeXBlOjpTdGFuZGFyZDsKIAotICAgIGF1dG8gY29t
cGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUp
LCBmb3JtU3RhdGUgPSBtYWtlUmVmUHRyKGZvcm1TdGF0ZSksIGZyYW1lTmFtZSA9IHJlcXVlc3Qu
ZnJhbWVOYW1lKCldIHsKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3Rl
Y3RlZEZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKSwgZm9ybVN0YXRlID0gbWFrZVdlYWtQdHIoZm9y
bVN0YXRlLmdldCgpKSwgZnJhbWVOYW1lID0gcmVxdWVzdC5mcmFtZU5hbWUoKV0gewogICAgICAg
ICAvLyBGSVhNRTogSXQncyBwb3NzaWJsZSB0aGlzIHRhcmdldEZyYW1lIHdpbGwgbm90IGJlIHRo
ZSBzYW1lIGZyYW1lIHRoYXQgd2FzIHRhcmdldGVkIGJ5IHRoZSBhY3R1YWwKICAgICAgICAgLy8g
bG9hZCBpZiBmcmFtZSBuYW1lcyBoYXZlIGNoYW5nZWQuCiAgICAgICAgIEZyYW1lKiBzb3VyY2VG
cmFtZSA9IGZvcm1TdGF0ZSA/IGZvcm1TdGF0ZS0+c291cmNlRG9jdW1lbnQoKS5mcmFtZSgpIDog
Jm1fZnJhbWU7CkBAIC0xMjQyLDkgKzEyNDIsOSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRnJh
bWVSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBFdmVudCogZXZlbnQsIEZvcgog
ICAgIH07CiAKICAgICBpZiAocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5odHRwTWV0aG9kKCkg
PT0gIlBPU1QiKQotICAgICAgICBsb2FkUG9zdFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSwgcmVm
ZXJyZXIsIGxvYWRUeXBlLCBldmVudCwgZm9ybVN0YXRlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CisgICAgICAgIGxvYWRQb3N0UmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpLCByZWZlcnJl
ciwgbG9hZFR5cGUsIGV2ZW50LCBXVEZNb3ZlKGZvcm1TdGF0ZSksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKICAgICBlbHNlCi0gICAgICAgIGxvYWRVUkwoV1RGTW92ZShyZXF1ZXN0KSwg
cmVmZXJyZXIsIGxvYWRUeXBlLCBldmVudCwgZm9ybVN0YXRlLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgICAgIGxvYWRVUkwoV1RGTW92ZShyZXF1ZXN0KSwgcmVmZXJyZXIsIGxv
YWRUeXBlLCBldmVudCwgV1RGTW92ZShmb3JtU3RhdGUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKIHN0YXRpYyBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KEZyYW1lJiBjdXJyZW50RnJhbWUsIEluaXRpYXRl
ZEJ5TWFpbkZyYW1lIGluaXRpYXRlZEJ5TWFpbkZyYW1lLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5IHByb3BhZ2F0ZWRQb2xpY3kpCkBAIC0xMjg2LDcgKzEyODYsNyBAQCBib29sIEZyYW1l
TG9hZGVyOjppc1N0b3BMb2FkaW5nQWxsb3dlZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFnZURp
c21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkID09IFBhZ2VEaXNtaXNzYWxUeXBlOjpOb25lOwog
fQogCi12b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMKEZyYW1lTG9hZFJlcXVlc3QmJiBmcmFtZUxv
YWRSZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBGcmFtZUxvYWRUeXBlIG5ld0xvYWRU
eXBlLCBFdmVudCogZXZlbnQsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJM
KEZyYW1lTG9hZFJlcXVlc3QmJiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmVy
cmVyLCBGcmFtZUxvYWRUeXBlIG5ld0xvYWRUeXBlLCBFdmVudCogZXZlbnQsIFJlZlB0cjxGb3Jt
U3RhdGU+JiYgZm9ybVN0YXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQ29tcGxldGlvbkhhbmRsZXJDYWxsaW5nU2NvcGUgY29tcGxldGlv
bkhhbmRsZXJDYWxsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIGlmIChtX2lu
U3RvcEFsbExvYWRlcnMpCkBAIC0xMzIwLDcgKzEzMjAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjps
b2FkVVJMKEZyYW1lTG9hZFJlcXVlc3QmJiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBTdHJpbmcm
IHJlZgogICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9IGlzRm9ybVN1Ym1pc3Npb24gPyBudWxscHRy
IDogZmluZEZyYW1lRm9yTmF2aWdhdGlvbihmcmFtZU5hbWUpOwogICAgIGlmICh0YXJnZXRGcmFt
ZSAmJiB0YXJnZXRGcmFtZSAhPSAmbV9mcmFtZSkgewogICAgICAgICBmcmFtZUxvYWRSZXF1ZXN0
LnNldEZyYW1lTmFtZSgiX3NlbGYiKTsKLSAgICAgICAgdGFyZ2V0RnJhbWUtPmxvYWRlcigpLmxv
YWRVUkwoV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgcmVmZXJyZXIsIG5ld0xvYWRUeXBlLCBl
dmVudCwgZm9ybVN0YXRlLCBjb21wbGV0aW9uSGFuZGxlckNhbGxlci5yZWxlYXNlKCkpOworICAg
ICAgICB0YXJnZXRGcmFtZS0+bG9hZGVyKCkubG9hZFVSTChXVEZNb3ZlKGZyYW1lTG9hZFJlcXVl
c3QpLCByZWZlcnJlciwgbmV3TG9hZFR5cGUsIGV2ZW50LCBXVEZNb3ZlKGZvcm1TdGF0ZSksIGNv
bXBsZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTEzMzgsOCArMTMzOCw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoRnJhbWVM
b2FkUmVxdWVzdCYmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmCiAKICAgICBp
ZiAoIXRhcmdldEZyYW1lICYmICFmcmFtZU5hbWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGFjdGlv
biA9IGFjdGlvbi5jb3B5V2l0aFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeVRvQXBwbHkobV9mcmFtZSwgZnJhbWVMb2FkUmVxdWVzdCkpOwot
ICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOZXdXaW5kb3dQb2xpY3koV1RGTW92ZShhY3Rp
b24pLCBXVEZNb3ZlKHJlcXVlc3QpLCBmb3JtU3RhdGUsIGZyYW1lTmFtZSwgW3RoaXMsIGFsbG93
TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgb3BlbmVyUG9saWN5LCBjb21wbGV0aW9uSGFuZGxlciA9
IGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKV0gKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1l
LCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFNob3VsZENvbnRpbnVlIHNob3VsZENv
bnRpbnVlKSB7Ci0gICAgICAgICAgICBjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeShy
ZXF1ZXN0LCBmb3JtU3RhdGUsIGZyYW1lTmFtZSwgYWN0aW9uLCBzaG91bGRDb250aW51ZSwgYWxs
b3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBvcGVuZXJQb2xpY3kpOworICAgICAgICBwb2xpY3lD
aGVja2VyKCkuY2hlY2tOZXdXaW5kb3dQb2xpY3koV1RGTW92ZShhY3Rpb24pLCBXVEZNb3ZlKHJl
cXVlc3QpLCBXVEZNb3ZlKGZvcm1TdGF0ZSksIGZyYW1lTmFtZSwgW3RoaXMsIGFsbG93TmF2aWdh
dGlvblRvSW52YWxpZFVSTCwgb3BlbmVyUG9saWN5LCBjb21wbGV0aW9uSGFuZGxlciA9IGNvbXBs
ZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgV2Vha1B0cjxGb3JtU3RhdGU+JiYgZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1l
TmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBTaG91bGRDb250aW51ZSBzaG91
bGRDb250aW51ZSkgeworICAgICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xp
Y3kocmVxdWVzdCwgZm9ybVN0YXRlLmdldCgpLCBmcmFtZU5hbWUsIGFjdGlvbiwgc2hvdWxkQ29u
dGludWUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgb3BlbmVyUG9saWN5KTsKICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47
CkBAIC0xMzU4LDcgKzEzNTgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMKEZyYW1lTG9h
ZFJlcXVlc3QmJiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZgogICAgICAgICBv
bGREb2N1bWVudExvYWRlci0+c2V0TGFzdENoZWNrZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCgp
KTsKICAgICAgICAgcG9saWN5Q2hlY2tlcigpLnN0b3BDaGVjaygpOwogICAgICAgICBwb2xpY3lD
aGVja2VyKCkuc2V0TG9hZFR5cGUobmV3TG9hZFR5cGUpOwotICAgICAgICBwb2xpY3lDaGVja2Vy
KCkuY2hlY2tOYXZpZ2F0aW9uUG9saWN5KFdURk1vdmUocmVxdWVzdCksIGZhbHNlIC8qIGRpZFJl
Y2VpdmVSZWRpcmVjdFJlc3BvbnNlICovLCBvbGREb2N1bWVudExvYWRlci5nZXQoKSwgZm9ybVN0
YXRlLCBbdGhpcywgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpXSAoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqLCBTaG91bGRDb250aW51ZSBzaG91bGRD
b250aW51ZSkgeworICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOYXZpZ2F0aW9uUG9saWN5
KFdURk1vdmUocmVxdWVzdCksIGZhbHNlIC8qIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlICov
LCBvbGREb2N1bWVudExvYWRlci5nZXQoKSwgV1RGTW92ZShmb3JtU3RhdGUpLCBbdGhpcywgcHJv
dGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiwgU2hvdWxkQ29udGludWUgc2hvdWxkQ29udGlu
dWUpIHsKICAgICAgICAgICAgIGNvbnRpbnVlRnJhZ21lbnRTY3JvbGxBZnRlck5hdmlnYXRpb25Q
b2xpY3kocmVxdWVzdCwgc2hvdWxkQ29udGludWUgPT0gU2hvdWxkQ29udGludWU6Olllcyk7CiAg
ICAgICAgIH0sIFBvbGljeURlY2lzaW9uTW9kZTo6U3luY2hyb25vdXMpOwogICAgICAgICByZXR1
cm47CkBAIC0xMzcyLDcgKzEzNzIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMKEZyYW1l
TG9hZFJlcXVlc3QmJiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZgogICAgIGlm
IChpc1N5c3RlbVByZXZpZXcpCiAgICAgICAgIHJlcXVlc3Quc2V0U3lzdGVtUHJldmlld1JlY3Qo
ZnJhbWVMb2FkUmVxdWVzdC5zeXN0ZW1QcmV2aWV3UmVjdCgpKTsKICNlbmRpZgotICAgIGxvYWRX
aXRoTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LCBhY3Rpb24sIGxvY2tIaXN0b3J5LCBuZXdMb2Fk
VHlwZSwgZm9ybVN0YXRlLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIFt0aGlzLCBpc1Jl
ZGlyZWN0LCBzYW1lVVJMLCBuZXdMb2FkVHlwZSwgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1f
ZnJhbWUpLCBjb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVh
c2UoKV0geworICAgIGxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LCBhY3Rpb24sIGxv
Y2tIaXN0b3J5LCBuZXdMb2FkVHlwZSwgV1RGTW92ZShmb3JtU3RhdGUpLCBhbGxvd05hdmlnYXRp
b25Ub0ludmFsaWRVUkwsIFt0aGlzLCBpc1JlZGlyZWN0LCBzYW1lVVJMLCBuZXdMb2FkVHlwZSwg
cHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpLCBjb21wbGV0aW9uSGFuZGxlciA9IGNv
bXBsZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKV0gewogICAgICAgICBpZiAoaXNSZWRpcmVj
dCkgewogICAgICAgICAgICAgbV9xdWlja1JlZGlyZWN0Q29taW5nID0gZmFsc2U7CiAgICAgICAg
ICAgICBpZiAobV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKQpAQCAtMTQxOSw4ICsxNDE5LDgg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCkKIAog
ICAgIGlmIChyZXF1ZXN0LnNob3VsZENoZWNrTmV3V2luZG93UG9saWN5KCkpIHsKICAgICAgICAg
TmF2aWdhdGlvbkFjdGlvbiBhY3Rpb24geyByZXF1ZXN0LnJlcXVlc3RlcigpLCByZXF1ZXN0LnJl
c291cmNlUmVxdWVzdCgpLCBJbml0aWF0ZWRCeU1haW5GcmFtZTo6VW5rbm93biwgTmF2aWdhdGlv
blR5cGU6Ok90aGVyLCByZXF1ZXN0LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSB9Owot
ICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOZXdXaW5kb3dQb2xpY3koV1RGTW92ZShhY3Rp
b24pLCBXVEZNb3ZlKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpLCBudWxscHRyLCByZXF1ZXN0
LmZyYW1lTmFtZSgpLCBbdGhpc10gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9y
bVN0YXRlKiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJiBhY3Rpb24sIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSB7Ci0gICAg
ICAgICAgICBjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeShyZXF1ZXN0LCBmb3JtU3Rh
dGUsIGZyYW1lTmFtZSwgYWN0aW9uLCBzaG91bGRDb250aW51ZSwgQWxsb3dOYXZpZ2F0aW9uVG9J
bnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpTdXBwcmVzcyk7CisgICAgICAg
IHBvbGljeUNoZWNrZXIoKS5jaGVja05ld1dpbmRvd1BvbGljeShXVEZNb3ZlKGFjdGlvbiksIFdU
Rk1vdmUocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSksIHsgfSwgcmVxdWVzdC5mcmFtZU5hbWUo
KSwgW3RoaXNdIChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYWtQdHI8Rm9ybVN0
YXRlPiYmIGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5hdmlnYXRp
b25BY3Rpb24mIGFjdGlvbiwgU2hvdWxkQ29udGludWUgc2hvdWxkQ29udGludWUpIHsKKyAgICAg
ICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KHJlcXVlc3QsIGZvcm1TdGF0
ZS5nZXQoKSwgZnJhbWVOYW1lLCBhY3Rpb24sIHNob3VsZENvbnRpbnVlLCBBbGxvd05hdmlnYXRp
b25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OlN1cHByZXNzKTsKICAg
ICAgICAgfSk7CiAKICAgICAgICAgcmV0dXJuOwpAQCAtMTQzNyw3ICsxNDM3LDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6bG9hZChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCkKICAgICBsb2FkKGxv
YWRlci5wdHIoKSk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRoTmF2aWdhdGlvbkFj
dGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IE5hdmlnYXRpb25BY3Rp
b24mIGFjdGlvbiwgTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnksIEZyYW1lTG9hZFR5cGUgdHlwZSwg
Rm9ybVN0YXRlKiBmb3JtU3RhdGUsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCBhbGxvd05h
dmlnYXRpb25Ub0ludmFsaWRVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbihj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFj
dGlvbiwgTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnksIEZyYW1lTG9hZFR5cGUgdHlwZSwgUmVmUHRy
PEZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCBhbGxv
d05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9IG1fY2xp
ZW50LmNyZWF0ZURvY3VtZW50TG9hZGVyKHJlcXVlc3QsIGRlZmF1bHRTdWJzdGl0dXRlRGF0YUZv
clVSTChyZXF1ZXN0LnVybCgpKSk7CiAgICAgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5VG9OZXdEb2N1bWVudExvYWRlcihtX2ZyYW1lLCBsb2FkZXIsIGFjdGlvbi5pbml0aWF0ZWRC
eU1haW5GcmFtZSgpLCBhY3Rpb24uc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpKTsKQEAg
LTE0NDksNyArMTQ0OSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRoTmF2aWdhdGlvbkFj
dGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0CiAgICAgaWYgKG1fZG9j
dW1lbnRMb2FkZXIpCiAgICAgICAgIGxvYWRlci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhtX2RvY3Vt
ZW50TG9hZGVyLT5vdmVycmlkZUVuY29kaW5nKCkpOwogCi0gICAgbG9hZFdpdGhEb2N1bWVudExv
YWRlcihsb2FkZXIucHRyKCksIHR5cGUsIGZvcm1TdGF0ZSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZh
bGlkVVJMLCBOYXZpZ2F0aW9uUG9saWN5Q2hlY2s6OlJlcXVpcmUsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKKyAgICBsb2FkV2l0aERvY3VtZW50TG9hZGVyKGxvYWRlci5wdHIoKSwgdHlw
ZSwgV1RGTW92ZShmb3JtU3RhdGUpLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIE5hdmln
YXRpb25Qb2xpY3lDaGVjazo6UmVxdWlyZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
fQogCiB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkKERvY3VtZW50TG9hZGVyKiBuZXdEb2N1bWVudExv
YWRlcikKQEAgLTE0ODgsMTAgKzE0ODgsMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChEb2N1
bWVudExvYWRlciogbmV3RG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHR5cGUgPSBGcmFtZUxvYWRU
eXBlOjpSZWxvYWQ7CiAgICAgfQogCi0gICAgbG9hZFdpdGhEb2N1bWVudExvYWRlcihuZXdEb2N1
bWVudExvYWRlciwgdHlwZSwgMCwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5h
dmlnYXRpb25Qb2xpY3lDaGVjazo6UmVxdWlyZSwgW10geyB9KTsKKyAgICBsb2FkV2l0aERvY3Vt
ZW50TG9hZGVyKG5ld0RvY3VtZW50TG9hZGVyLCB0eXBlLCB7IH0sIEFsbG93TmF2aWdhdGlvblRv
SW52YWxpZFVSTDo6WWVzLCBOYXZpZ2F0aW9uUG9saWN5Q2hlY2s6OlJlcXVpcmUsIFtdIHsgfSk7
CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRM
b2FkZXIqIGxvYWRlciwgRnJhbWVMb2FkVHlwZSB0eXBlLCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwg
QWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwg
TmF2aWdhdGlvblBvbGljeUNoZWNrLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVyKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIEZyYW1lTG9hZFR5cGUgdHlwZSwgUmVmUHRyPEZvcm1TdGF0
ZT4mJiBmb3JtU3RhdGUsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCBhbGxvd05hdmlnYXRp
b25Ub0ludmFsaWRVUkwsIE5hdmlnYXRpb25Qb2xpY3lDaGVjaywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIC8vIFJldGFpbiBiZWNhdXNlIGRp
c3BhdGNoQmVmb3JlTG9hZEV2ZW50IG1heSByZWxlYXNlIHRoZSBsYXN0IHJlZmVyZW5jZSB0byBp
dC4KICAgICBSZWY8RnJhbWU+IHByb3RlY3QobV9mcmFtZSk7CkBAIC0xNTMzLDcgKzE1MzMsNyBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVy
KiBsb2FkZXIsIEZyYW1lTG9hZFR5cGUgdAogICAgICAgICBvbGREb2N1bWVudExvYWRlci0+c2V0
VHJpZ2dlcmluZ0FjdGlvbihhY3Rpb24pOwogICAgICAgICBvbGREb2N1bWVudExvYWRlci0+c2V0
TGFzdENoZWNrZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCgpKTsKICAgICAgICAgcG9saWN5Q2hl
Y2tlcigpLnN0b3BDaGVjaygpOwotICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOYXZpZ2F0
aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdChsb2FkZXItPnJlcXVlc3QoKSksIGZhbHNlIC8qIGRp
ZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlICovLCBvbGREb2N1bWVudExvYWRlci5nZXQoKSwgZm9y
bVN0YXRlLCBbdGhpcywgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpXSAoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqLCBTaG91bGRDb250aW51ZSBzaG91
bGRDb250aW51ZSkgeworICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOYXZpZ2F0aW9uUG9s
aWN5KFJlc291cmNlUmVxdWVzdChsb2FkZXItPnJlcXVlc3QoKSksIGZhbHNlIC8qIGRpZFJlY2Vp
dmVSZWRpcmVjdFJlc3BvbnNlICovLCBvbGREb2N1bWVudExvYWRlci5nZXQoKSwgV1RGTW92ZShm
b3JtU3RhdGUpLCBbdGhpcywgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpXSAoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiwgU2hvdWxk
Q29udGludWUgc2hvdWxkQ29udGludWUpIHsKICAgICAgICAgICAgIGNvbnRpbnVlRnJhZ21lbnRT
Y3JvbGxBZnRlck5hdmlnYXRpb25Qb2xpY3kocmVxdWVzdCwgc2hvdWxkQ29udGludWUgPT0gU2hv
dWxkQ29udGludWU6Olllcyk7CiAgICAgICAgIH0sIFBvbGljeURlY2lzaW9uTW9kZTo6U3luY2hy
b25vdXMpOwogICAgICAgICByZXR1cm47CkBAIC0xNTU1LDcgKzE1NTUsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIEZy
YW1lTG9hZFR5cGUgdAogICAgICAgICAvLyBhIG5ldyBVUkwsIHRoZSBwYXJlbnQgZnJhbWUgc2hv
dWxkbid0IGxlYXJuIHRoZSBVUkwuCiAgICAgICAgIGlmICghbV9zdGF0ZU1hY2hpbmUuY29tbWl0
dGVkRmlyc3RSZWFsRG9jdW1lbnRMb2FkKCkKICAgICAgICAgICAgICYmICFvd25lckVsZW1lbnQt
PmRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KGxvYWRlci0+cmVxdWVzdCgpLnVybCgpLnN0cmluZygp
KSkgewotICAgICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGxvYWRl
ci0+cmVxdWVzdCgpLCBmb3JtU3RhdGUsIFNob3VsZENvbnRpbnVlOjpObywgYWxsb3dOYXZpZ2F0
aW9uVG9JbnZhbGlkVVJMKTsKKyAgICAgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlv
blBvbGljeShsb2FkZXItPnJlcXVlc3QoKSwgZm9ybVN0YXRlLmdldCgpLCBTaG91bGRDb250aW51
ZTo6Tm8sIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICB9CkBAIC0xNTYzLDEyICsxNTYzLDEyIEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgRnJhbWVM
b2FkVHlwZSB0CiAgICAgbV9mcmFtZS5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuY2FuY2VsKHRydWUp
OwogCiAgICAgaWYgKCFtX2N1cnJlbnRMb2FkU2hvdWxkQ2hlY2tOYXZpZ2F0aW9uUG9saWN5KSB7
Ci0gICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShsb2FkZXItPnJlcXVl
c3QoKSwgZm9ybVN0YXRlLCBTaG91bGRDb250aW51ZTo6WWVzLCBhbGxvd05hdmlnYXRpb25Ub0lu
dmFsaWRVUkwpOworICAgICAgICBjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kobG9h
ZGVyLT5yZXF1ZXN0KCksIGZvcm1TdGF0ZS5nZXQoKSwgU2hvdWxkQ29udGludWU6OlllcywgYWxs
b3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0KGxv
YWRlci0+cmVxdWVzdCgpKSwgZmFsc2UgLyogZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgKi8s
IGxvYWRlciwgZm9ybVN0YXRlLCBbdGhpcywgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJh
bWUpLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIGNvbXBsZXRpb25IYW5kbGVyID0gY29t
cGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgU2hvdWxkQ29udGludWUgc2hvdWxkQ29udGlu
dWUpIHsKLSAgICAgICAgY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KHJlcXVlc3Qs
IGZvcm1TdGF0ZSwgc2hvdWxkQ29udGludWUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7
CisgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVl
c3QobG9hZGVyLT5yZXF1ZXN0KCkpLCBmYWxzZSAvKiBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25z
ZSAqLywgbG9hZGVyLCBXVEZNb3ZlKGZvcm1TdGF0ZSksIFt0aGlzLCBwcm90ZWN0ZWRGcmFtZSA9
IG1ha2VSZWYobV9mcmFtZSksIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgY29tcGxldGlv
bkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlckNhbGxlci5yZWxlYXNlKCldIChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYWtQdHI8Rm9ybVN0YXRlPiYmIGZvcm1TdGF0ZSwgU2hv
dWxkQ29udGludWUgc2hvdWxkQ29udGludWUpIHsKKyAgICAgICAgY29udGludWVMb2FkQWZ0ZXJO
YXZpZ2F0aW9uUG9saWN5KHJlcXVlc3QsIGZvcm1TdGF0ZS5nZXQoKSwgc2hvdWxkQ29udGludWUs
IGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiAgICAgfSk7CiB9CkBAIC0xNjc2LDcgKzE2NzYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpy
ZWxvYWRXaXRoT3ZlcnJpZGVFbmNvZGluZyhjb25zdCBTdHJpbmcmIGVuY29kaW5nKQogCiAgICAg
bG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKGVuY29kaW5nKTsKIAotICAgIGxvYWRXaXRoRG9j
dW1lbnRMb2FkZXIobG9hZGVyLnB0cigpLCBGcmFtZUxvYWRUeXBlOjpSZWxvYWQsIDAsIEFsbG93
TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOYXZpZ2F0aW9uUG9saWN5Q2hlY2s6OlJlcXVp
cmUsIFtdIHsgfSk7CisgICAgbG9hZFdpdGhEb2N1bWVudExvYWRlcihsb2FkZXIucHRyKCksIEZy
YW1lTG9hZFR5cGU6OlJlbG9hZCwgeyB9LCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6Olll
cywgTmF2aWdhdGlvblBvbGljeUNoZWNrOjpSZXF1aXJlLCBbXSB7IH0pOwogfQogCiB2b2lkIEZy
YW1lTG9hZGVyOjpyZWxvYWQoT3B0aW9uU2V0PFJlbG9hZE9wdGlvbj4gb3B0aW9ucykKQEAgLTE3
MjMsNyArMTcyMyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZChPcHRpb25TZXQ8UmVsb2Fk
T3B0aW9uPiBvcHRpb25zKQogICAgICAgICByZXR1cm4gRnJhbWVMb2FkVHlwZTo6UmVsb2FkOwog
ICAgIH07CiAgICAgCi0gICAgbG9hZFdpdGhEb2N1bWVudExvYWRlcihsb2FkZXIucHRyKCksIGZy
YW1lTG9hZFR5cGVGb3JSZWxvYWRPcHRpb25zKG9wdGlvbnMpLCAwLCBBbGxvd05hdmlnYXRpb25U
b0ludmFsaWRVUkw6OlllcywgTmF2aWdhdGlvblBvbGljeUNoZWNrOjpSZXF1aXJlLCBbXSB7IH0p
OworICAgIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIobG9hZGVyLnB0cigpLCBmcmFtZUxvYWRUeXBl
Rm9yUmVsb2FkT3B0aW9ucyhvcHRpb25zKSwgeyB9LCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRV
Ukw6OlllcywgTmF2aWdhdGlvblBvbGljeUNoZWNrOjpSZXF1aXJlLCBbXSB7IH0pOwogfQogCiB2
b2lkIEZyYW1lTG9hZGVyOjpzdG9wQWxsTG9hZGVycyhDbGVhclByb3Zpc2lvbmFsSXRlbVBvbGlj
eSBjbGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeSkKQEAgLTI4MzIsNyArMjgzMiw3IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmFkZEhUVFBVcGdyYWRlSW5zZWN1cmVSZXF1ZXN0c0lmTmVlZGVkKFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzCiAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhl
YWRlck5hbWU6OlVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RzLCBBU0NJSUxpdGVyYWwoIjEiKSk7CiB9
CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYg
cmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgRnJhbWVMb2FkVHlwZSBsb2FkVHlwZSwg
RXZlbnQqIGV2ZW50LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1
ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBG
cmFtZUxvYWRUeXBlIGxvYWRUeXBlLCBFdmVudCogZXZlbnQsIFJlZlB0cjxGb3JtU3RhdGU+JiYg
Zm9ybVN0YXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgU3RyaW5nIGZyYW1lTmFtZSA9IHJlcXVlc3QuZnJhbWVOYW1lKCk7CiAgICAgTG9j
a0hpc3RvcnkgbG9ja0hpc3RvcnkgPSByZXF1ZXN0LmxvY2tIaXN0b3J5KCk7CkBAIC0yODYxLDEz
ICsyODYxLDEzIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChGcmFtZUxvYWRS
ZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWZlCiAKICAgICBpZiAoIWZyYW1lTmFt
ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gVGhlIHNlYXJjaCBmb3IgYSB0YXJnZXQgZnJhbWUg
aXMgZG9uZSBlYXJsaWVyIGluIHRoZSBjYXNlIG9mIGZvcm0gc3VibWlzc2lvbi4KLSAgICAgICAg
aWYgKEZyYW1lKiB0YXJnZXRGcmFtZSA9IGZvcm1TdGF0ZSA/IDAgOiBmaW5kRnJhbWVGb3JOYXZp
Z2F0aW9uKGZyYW1lTmFtZSkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHRhcmdldEZyYW1lID0gZm9y
bVN0YXRlID8gbnVsbHB0ciA6IGZpbmRGcmFtZUZvck5hdmlnYXRpb24oZnJhbWVOYW1lKSkgewog
ICAgICAgICAgICAgdGFyZ2V0RnJhbWUtPmxvYWRlcigpLmxvYWRXaXRoTmF2aWdhdGlvbkFjdGlv
bih3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LCBhY3Rpb24sIGxvY2tIaXN0b3J5LCBsb2FkVHlwZSwg
V1RGTW92ZShmb3JtU3RhdGUpLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05ld1dpbmRvd1BvbGljeShXVEZNb3ZlKGFjdGlv
biksIFdURk1vdmUod29ya2luZ1Jlc291cmNlUmVxdWVzdCksIFdURk1vdmUoZm9ybVN0YXRlKSwg
ZnJhbWVOYW1lLCBbdGhpcywgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBvcGVuZXJQb2xp
Y3ksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBjb25zdCBT
dHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBTaG91bGRD
b250aW51ZSBzaG91bGRDb250aW51ZSkgewotICAgICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJO
ZXdXaW5kb3dQb2xpY3kocmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIGFjdGlvbiwgc2hv
dWxkQ29udGludWUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgb3BlbmVyUG9saWN5KTsK
KyAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmV3V2luZG93UG9saWN5KFdURk1vdmUoYWN0
aW9uKSwgV1RGTW92ZSh3b3JraW5nUmVzb3VyY2VSZXF1ZXN0KSwgV1RGTW92ZShmb3JtU3RhdGUp
LCBmcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBv
bGljeSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2Vha1B0cjxGb3JtU3RhdGU+JiYgZm9ybVN0
YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0
aW9uLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgeworICAgICAgICAgICAgY29udGlu
dWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kocmVxdWVzdCwgZm9ybVN0YXRlLmdldCgpLCBmcmFt
ZU5hbWUsIGFjdGlvbiwgc2hvdWxkQ29udGludWUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVS
TCwgb3BlbmVyUG9saWN5KTsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAg
ICAgIH0pOwogICAgICAgICByZXR1cm47CkBAIC0zNTQyLDcgKzM1NDIsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKEhpc3RvcnlJdGVtJiBpdGVtLCBGcmFt
ZUxvYWRUeXBlIGxvYQogICAgICAgICBkb2N1bWVudExvYWRlci0+c2V0VHJpZ2dlcmluZ0FjdGlv
bihXVEZNb3ZlKGFjdGlvbikpOwogCiAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXRMYXN0Q2hl
Y2tlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KCkpOwotICAgICAgICBsb2FkV2l0aERvY3VtZW50
TG9hZGVyKGRvY3VtZW50TG9hZGVyLCBsb2FkVHlwZSwgMCwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZh
bGlkVVJMOjpZZXMsIG5hdmlnYXRpb25Qb2xpY3lDaGVjaywgW10geyB9KTsKKyAgICAgICAgbG9h
ZFdpdGhEb2N1bWVudExvYWRlcihkb2N1bWVudExvYWRlciwgbG9hZFR5cGUsIHsgfSwgQWxsb3dO
YXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIG5hdmlnYXRpb25Qb2xpY3lDaGVjaywgW10geyB9
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzYzMCw3ICszNjMwLDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50SXRlbShIaXN0b3J5SXRlbSYgaXRlbSwg
RnJhbWVMb2FkVHlwZSBsb2EKIAogICAgIGFjdGlvbi5zZXRUYXJnZXRCYWNrRm9yd2FyZEl0ZW0o
aXRlbSk7CiAKLSAgICBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdCwgYWN0aW9uLCBM
b2NrSGlzdG9yeTo6Tm8sIGxvYWRUeXBlLCAwLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6
OlllcywgW10geyB9KTsKKyAgICBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdCwgYWN0
aW9uLCBMb2NrSGlzdG9yeTo6Tm8sIGxvYWRUeXBlLCB7IH0sIEFsbG93TmF2aWdhdGlvblRvSW52
YWxpZFVSTDo6WWVzLCBbXSB7IH0pOwogfQogCiAvLyBMb2FkcyBjb250ZW50IGludG8gdGhpcyBm
cmFtZSwgYXMgc3BlY2lmaWVkIGJ5IGhpc3RvcnkgaXRlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaAppbmRleCBmYmM3MmVjMTI0YWM1MDBlNzZiZWJlZjAxYThiMGQwNjI2ZDQyYWZhLi45
YmRiZjcxMjU0ZjE3MDBlNTljMGY0NzE3MWNkM2UyN2I2M2JjZTI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuaApAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEZJ
WE1FOiBUaGVzZSBhcmUgYWxsIGZ1bmN0aW9ucyB3aGljaCBzdGFydCBsb2Fkcy4gV2UgaGF2ZSB0
b28gbWFueS4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxvYWRVUkxJbnRvQ2hpbGRGcmFtZShj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVyZXIsIEZyYW1lKik7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBsb2FkRnJhbWVSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiwgRXZlbnQqLCBG
b3JtU3RhdGUqKTsgLy8gQ2FsbGVkIGJ5IHN1Ym1pdEZvcm0sIGNhbGxzIGxvYWRQb3N0UmVxdWVz
dCBhbmQgbG9hZFVSTC4KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxvYWRGcmFtZVJlcXVlc3Qo
RnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCosIFJlZlB0cjxGb3JtU3RhdGU+JiYpOyAvLyBDYWxs
ZWQgYnkgc3VibWl0Rm9ybSwgY2FsbHMgbG9hZFBvc3RSZXF1ZXN0IGFuZCBsb2FkVVJMLgogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkKEZyYW1lTG9hZFJlcXVlc3QmJik7CiAKQEAgLTM2
NCwxMyArMzY0LDEzIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHVybFNlbGVjdGVkKEZyYW1lTG9h
ZFJlcXVlc3QmJiwgRXZlbnQqKTsKIAotICAgIHZvaWQgbG9hZFdpdGhEb2N1bWVudExvYWRlcihE
b2N1bWVudExvYWRlciosIEZyYW1lTG9hZFR5cGUsIEZvcm1TdGF0ZSosIEFsbG93TmF2aWdhdGlv
blRvSW52YWxpZFVSTCwgTmF2aWdhdGlvblBvbGljeUNoZWNrLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOyAvLyBDYWxscyBjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kKKyAg
ICB2b2lkIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqLCBGcmFtZUxvYWRU
eXBlLCBSZWZQdHI8Rm9ybVN0YXRlPiYmLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIE5h
dmlnYXRpb25Qb2xpY3lDaGVjaywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsgLy8gQ2Fs
bHMgY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5CiAgICAgdm9pZCBsb2FkKERvY3Vt
ZW50TG9hZGVyKik7IC8vIENhbGxzIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIKIAotICAgIHZvaWQg
bG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IE5h
dmlnYXRpb25BY3Rpb24mLCBMb2NrSGlzdG9yeSwgRnJhbWVMb2FkVHlwZSwgRm9ybVN0YXRlKiwg
QWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OyAvLyBDYWxscyBsb2FkV2l0aERvY3VtZW50TG9hZGVyCisgICAgdm9pZCBsb2FkV2l0aE5hdmln
YXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgTmF2aWdhdGlvbkFjdGlv
biYsIExvY2tIaXN0b3J5LCBGcmFtZUxvYWRUeXBlLCBSZWZQdHI8Rm9ybVN0YXRlPiYmLCBBbGxv
d05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7IC8v
IENhbGxzIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIKIAotICAgIHZvaWQgbG9hZFBvc3RSZXF1ZXN0
KEZyYW1lTG9hZFJlcXVlc3QmJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgRnJhbWVMb2FkVHlw
ZSwgRXZlbnQqLCBGb3JtU3RhdGUqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAg
IHZvaWQgbG9hZFVSTChGcmFtZUxvYWRSZXF1ZXN0JiYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIs
IEZyYW1lTG9hZFR5cGUsIEV2ZW50KiwgRm9ybVN0YXRlKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKKyAgICB2b2lkIGxvYWRQb3N0UmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYsIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXIsIEZyYW1lTG9hZFR5cGUsIEV2ZW50KiwgUmVmUHRyPEZvcm1T
dGF0ZT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGxvYWRVUkwo
RnJhbWVMb2FkUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBGcmFtZUxvYWRUeXBl
LCBFdmVudCosIFJlZlB0cjxGb3JtU3RhdGU+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAKICAgICBib29sIHNob3VsZFJlbG9hZChjb25zdCBVUkwmIGN1cnJlbnRVUkwsIGNvbnN0
IFVSTCYgZGVzdGluYXRpb25VUkwpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdh
dGlvblNjaGVkdWxlci5jcHAKaW5kZXggYTlmYzM0NGI3NGY0MDk1MmFkMDlmMjliMjRjNTk3NmJm
NGM0MzA2Ny4uYjYxMTQwYWI3ZWU1ZTkxNDQ1MDg5M2JlODYwNDk5YThkNjA2YzFjYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcApAQCAtMjc0LDcg
KzI3NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgRnJhbWVMb2Fk
UmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgcmVxdWVzdGluZ0RvY3VtZW50LCByZXF1ZXN0aW5n
RG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKSwgeyB9LCB7IH0sIGxvY2tIaXN0b3J5KCksIGxvY2tC
YWNrRm9yd2FyZExpc3QoKSwgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52
YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIHNob3VsZE9wZW5FeHRl
cm5hbFVSTHMoKSwgaW5pdGlhdGVkQnlNYWluRnJhbWUoKSB9OwogICAgICAgICBtX3N1Ym1pc3Np
b24tPnBvcHVsYXRlRnJhbWVMb2FkUmVxdWVzdChmcmFtZUxvYWRSZXF1ZXN0KTsKLSAgICAgICAg
ZnJhbWUubG9hZGVyKCkubG9hZEZyYW1lUmVxdWVzdChXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3Qp
LCBtX3N1Ym1pc3Npb24tPmV2ZW50KCksICZtX3N1Ym1pc3Npb24tPnN0YXRlKCkpOworICAgICAg
ICBmcmFtZS5sb2FkZXIoKS5sb2FkRnJhbWVSZXF1ZXN0KFdURk1vdmUoZnJhbWVMb2FkUmVxdWVz
dCksIG1fc3VibWlzc2lvbi0+ZXZlbnQoKSwgbV9zdWJtaXNzaW9uLT50YWtlU3RhdGUoKSk7CiAg
ICAgfQogCiAgICAgdm9pZCBkaWRTdGFydFRpbWVyKEZyYW1lJiBmcmFtZSwgVGltZXImIHRpbWVy
KSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNr
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCmluZGV4IGI2
NjkwZWE5NjY1YTE1MTVjOTdhNjNhZGM5NDA3NzMyYjk4MTkxMjcuLjVmOTc1MWNiNmUzZTkwNDQw
YzA5MGVkOGY2Mjc4ZTBjMDU5OTU0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Qb2xpY3lDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hl
Y2tlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICogQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
IChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKgpAQCAtODEsNyArODEsNyBAQCBQb2xp
Y3lDaGVja2VyOjpQb2xpY3lDaGVja2VyKEZyYW1lJiBmcmFtZSkKIAogdm9pZCBQb2xpY3lDaGVj
a2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwg
Ym9vbCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9u
RnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKLSAgICBjaGVja05hdmlnYXRpb25Qb2xpY3koV1RGTW92
ZShuZXdSZXF1ZXN0KSwgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIG1fZnJhbWUubG9hZGVy
KCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSwgbnVsbHB0ciwgV1RGTW92ZShmdW5jdGlvbikpOwor
ICAgIGNoZWNrTmF2aWdhdGlvblBvbGljeShXVEZNb3ZlKG5ld1JlcXVlc3QpLCBkaWRSZWNlaXZl
UmVkaXJlY3RSZXNwb25zZSwgbV9mcmFtZS5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigp
LCB7IH0sIFdURk1vdmUoZnVuY3Rpb24pKTsKIH0KIAogQ29tcGxldGlvbkhhbmRsZXJDYWxsaW5n
U2NvcGUgUG9saWN5Q2hlY2tlcjo6ZXh0ZW5kQmxvYlVSTExpZmV0aW1lSWZOZWNlc3NhcnkoUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdApAQCAtOTgsNyArOTgsNyBAQCBDb21wbGV0aW9u
SGFuZGxlckNhbGxpbmdTY29wZSBQb2xpY3lDaGVja2VyOjpleHRlbmRCbG9iVVJMTGlmZXRpbWVJ
Zk5lY2Vzc2FyeShSZQogICAgIH0pOwogfQogCi12b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2
aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBib29sIGRpZFJlY2VpdmVS
ZWRpcmVjdFJlc3BvbnNlLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBGb3JtU3RhdGUqIGZvcm1T
dGF0ZSwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24mJiBmdW5jdGlvbiwgUG9saWN5
RGVjaXNpb25Nb2RlIHBvbGljeURlY2lzaW9uTW9kZSkKK3ZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hl
Y2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGJvb2wgZGlkUmVj
ZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlZlB0cjxGb3Jt
U3RhdGU+JiYgZm9ybVN0YXRlLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25GdW5jdGlvbiYmIGZ1
bmN0aW9uLCBQb2xpY3lEZWNpc2lvbk1vZGUgcG9saWN5RGVjaXNpb25Nb2RlKQogewogICAgIE5h
dmlnYXRpb25BY3Rpb24gYWN0aW9uID0gbG9hZGVyLT50cmlnZ2VyaW5nQWN0aW9uKCk7CiAgICAg
aWYgKGFjdGlvbi5pc0VtcHR5KCkpIHsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFBvbGljeUNo
ZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBi
b29sIGRpZFJlYwogICAgIC8vIERvbid0IGFzayBtb3JlIHRoYW4gb25jZSBmb3IgdGhlIHNhbWUg
cmVxdWVzdCBvciBpZiB3ZSBhcmUgbG9hZGluZyBhbiBlbXB0eSBVUkwuCiAgICAgLy8gVGhpcyBh
dm9pZHMgY29uZnVzaW9uIG9uIHRoZSBwYXJ0IG9mIHRoZSBjbGllbnQuCiAgICAgaWYgKGVxdWFs
SWdub3JpbmdIZWFkZXJGaWVsZHMocmVxdWVzdCwgbG9hZGVyLT5sYXN0Q2hlY2tlZFJlcXVlc3Qo
KSkgfHwgKCFyZXF1ZXN0LmlzTnVsbCgpICYmIHJlcXVlc3QudXJsKCkuaXNFbXB0eSgpKSkgewot
ICAgICAgICBmdW5jdGlvbihSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIG51bGxwdHIsIFNob3Vs
ZENvbnRpbnVlOjpZZXMpOworICAgICAgICBmdW5jdGlvbihSZXNvdXJjZVJlcXVlc3QocmVxdWVz
dCksIHsgfSwgU2hvdWxkQ29udGludWU6Olllcyk7CiAgICAgICAgIGxvYWRlci0+c2V0TGFzdENo
ZWNrZWRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9s
aWN5KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGJvb2wgZGlkUmVjCiAjZW5kaWYKICAgICAg
ICAgaWYgKGlzQmFja0ZvcndhcmRMb2FkVHlwZShtX2xvYWRUeXBlKSkKICAgICAgICAgICAgIG1f
bG9hZFR5cGUgPSBGcmFtZUxvYWRUeXBlOjpSZWxvYWQ7Ci0gICAgICAgIGZ1bmN0aW9uKFdURk1v
dmUocmVxdWVzdCksIG51bGxwdHIsIHNob3VsZENvbnRpbnVlID8gU2hvdWxkQ29udGludWU6Olll
cyA6IFNob3VsZENvbnRpbnVlOjpObyk7CisgICAgICAgIGZ1bmN0aW9uKFdURk1vdmUocmVxdWVz
dCksIHsgfSwgc2hvdWxkQ29udGludWUgPyBTaG91bGRDb250aW51ZTo6WWVzIDogU2hvdWxkQ29u
dGludWU6Ok5vKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM0LDcgKzEzNCw3IEBA
IHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIGJvb2wgZGlkUmVjCiAgICAgICAgICAgICAvLyByZXZlYWwgdGhhdCB0aGUg
ZnJhbWUgd2FzIGJsb2NrZWQuIFRoaXMgd2F5LCBpdCBsb29rcyBsaWtlIGFueSBvdGhlciBjcm9z
cy1vcmlnaW4gcGFnZSBsb2FkLgogICAgICAgICAgICAgbV9mcmFtZS5vd25lckVsZW1lbnQoKS0+
ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNl
LCBmYWxzZSkpOwogICAgICAgICB9Ci0gICAgICAgIGZ1bmN0aW9uKFdURk1vdmUocmVxdWVzdCks
IG51bGxwdHIsIFNob3VsZENvbnRpbnVlOjpObyk7CisgICAgICAgIGZ1bmN0aW9uKFdURk1vdmUo
cmVxdWVzdCksIHsgfSwgU2hvdWxkQ29udGludWU6Ok5vKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0
aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGJvb2wgZGlkUmVjCiAjaWYgVVNF
KFFVSUNLX0xPT0spCiAgICAgLy8gQWx3YXlzIGFsbG93IFF1aWNrTG9vay1nZW5lcmF0ZWQgVVJM
cyBiYXNlZCBvbiB0aGUgcHJvdG9jb2wgc2NoZW1lLgogICAgIGlmICghcmVxdWVzdC5pc051bGwo
KSAmJiBpc1F1aWNrTG9va1ByZXZpZXdVUkwocmVxdWVzdC51cmwoKSkpCi0gICAgICAgIHJldHVy
biBmdW5jdGlvbihXVEZNb3ZlKHJlcXVlc3QpLCBmb3JtU3RhdGUsIFNob3VsZENvbnRpbnVlOjpZ
ZXMpOworICAgICAgICByZXR1cm4gZnVuY3Rpb24oV1RGTW92ZShyZXF1ZXN0KSwgbWFrZVdlYWtQ
dHIoZm9ybVN0YXRlLmdldCgpKSwgU2hvdWxkQ29udGludWU6Olllcyk7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIFBvbGlj
eUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBib29sIGRpZFJlYwogCiAgICAgbV9kZWxlZ2F0ZUlzRGVjaWRpbmdOYXZpZ2F0aW9uUG9saWN5
ID0gdHJ1ZTsKICAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUgPSBhY3Rpb24uZG93bmxvYWRB
dHRyaWJ1dGUoKS5pc0VtcHR5KCkgPyBudWxsQXRvbSgpIDogYWN0aW9uLmRvd25sb2FkQXR0cmli
dXRlKCk7Ci0gICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24oYWN0aW9uLCByZXF1ZXN0LCBkaWRSZWNlaXZlUmVkaXJlY3RS
ZXNwb25zZSwgZm9ybVN0YXRlLCBwb2xpY3lEZWNpc2lvbk1vZGUsIFt0aGlzLCBmdW5jdGlvbiA9
IFdURk1vdmUoZnVuY3Rpb24pLCByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBm
b3JtU3RhdGUgPSBtYWtlUmVmUHRyKGZvcm1TdGF0ZSksIHN1Z2dlc3RlZEZpbGVuYW1lID0gV1RG
TW92ZShzdWdnZXN0ZWRGaWxlbmFtZSksIGJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiA9IFdURk1v
dmUoYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uKV0oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikg
bXV0YWJsZSB7CisgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24oYWN0aW9uLCByZXF1ZXN0LCBkaWRSZWNlaXZlUmVkaXJl
Y3RSZXNwb25zZSwgZm9ybVN0YXRlLmdldCgpLCBwb2xpY3lEZWNpc2lvbk1vZGUsIFt0aGlzLCBm
dW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pLCByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KHJl
cXVlc3QpLCBmb3JtU3RhdGUgPSBXVEZNb3ZlKGZvcm1TdGF0ZSksIHN1Z2dlc3RlZEZpbGVuYW1l
ID0gV1RGTW92ZShzdWdnZXN0ZWRGaWxlbmFtZSksIGJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiA9
IFdURk1vdmUoYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uKV0oUG9saWN5QWN0aW9uIHBvbGljeUFj
dGlvbikgbXV0YWJsZSB7CiAgICAgICAgIG1fZGVsZWdhdGVJc0RlY2lkaW5nTmF2aWdhdGlvblBv
bGljeSA9IGZhbHNlOwogCiAgICAgICAgIHN3aXRjaCAocG9saWN5QWN0aW9uKSB7CkBAIC0xODMs
MTUgKzE4MywxNSBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBib29sIGRpZFJlYwogICAgICAgICBjYXNlIFBvbGlj
eUFjdGlvbjo6VXNlOgogICAgICAgICAgICAgaWYgKCFtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgp
LmNhbkhhbmRsZVJlcXVlc3QocmVxdWVzdCkpIHsKICAgICAgICAgICAgICAgICBoYW5kbGVVbmlt
cGxlbWVudGFibGVQb2xpY3kobV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5jYW5ub3RTaG93VVJM
RXJyb3IocmVxdWVzdCkpOwotICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih7IH0sIG51
bGxwdHIsIFNob3VsZENvbnRpbnVlOjpObyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0
aW9uKHsgfSwgeyB9LCBTaG91bGRDb250aW51ZTo6Tm8pOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgcmV0dXJuIGZ1bmN0aW9uKFdURk1vdmUocmVxdWVzdCksIGZvcm1TdGF0ZS5nZXQoKSwg
U2hvdWxkQ29udGludWU6Olllcyk7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oV1RGTW92
ZShyZXF1ZXN0KSwgbWFrZVdlYWtQdHIoZm9ybVN0YXRlLmdldCgpKSwgU2hvdWxkQ29udGludWU6
Olllcyk7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfSk7
CiB9CiAKLXZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOZXdXaW5kb3dQb2xpY3koTmF2aWdhdGlv
bkFjdGlvbiYmIG5hdmlnYXRpb25BY3Rpb24sIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZv
cm1TdGF0ZSogZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgTmV3V2luZG93UG9s
aWN5RGVjaXNpb25GdW5jdGlvbiYmIGZ1bmN0aW9uKQordm9pZCBQb2xpY3lDaGVja2VyOjpjaGVj
a05ld1dpbmRvd1BvbGljeShOYXZpZ2F0aW9uQWN0aW9uJiYgbmF2aWdhdGlvbkFjdGlvbiwgUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVmUHRyPEZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUsIGNv
bnN0IFN0cmluZyYgZnJhbWVOYW1lLCBOZXdXaW5kb3dQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uJiYg
ZnVuY3Rpb24pCiB7CiAgICAgaWYgKG1fZnJhbWUuZG9jdW1lbnQoKSAmJiBtX2ZyYW1lLmRvY3Vt
ZW50KCktPmlzU2FuZGJveGVkKFNhbmRib3hQb3B1cHMpKQogICAgICAgICByZXR1cm4gZnVuY3Rp
b24oeyB9LCBudWxscHRyLCB7IH0sIHsgfSwgU2hvdWxkQ29udGludWU6Ok5vKTsKQEAgLTIwMSw3
ICsyMDEsNyBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmV3V2luZG93UG9saWN5KE5hdmln
YXRpb25BY3Rpb24mJiBuYXZpZ2F0aW9uQWN0aW9uLCBSZQogCiAgICAgYXV0byBibG9iVVJMTGlm
ZXRpbWVFeHRlbnNpb24gPSBleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeShyZXF1ZXN0
KTsKIAotICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24obmF2aWdhdGlvbkFjdGlvbiwgcmVxdWVzdCwgZm9ybVN0YXRlLCBm
cmFtZU5hbWUsIFtmcmFtZSA9IG1ha2VSZWYobV9mcmFtZSksIHJlcXVlc3QsIGZvcm1TdGF0ZSA9
IG1ha2VSZWZQdHIoZm9ybVN0YXRlKSwgZnJhbWVOYW1lLCBuYXZpZ2F0aW9uQWN0aW9uLCBmdW5j
dGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pLCBibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gPSBXVEZN
b3ZlKGJsb2JVUkxMaWZldGltZUV4dGVuc2lvbildKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24p
IG11dGFibGUgeworICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24obmF2aWdhdGlvbkFjdGlvbiwgcmVxdWVzdCwgZm9ybVN0
YXRlLmdldCgpLCBmcmFtZU5hbWUsIFtmcmFtZSA9IG1ha2VSZWYobV9mcmFtZSksIHJlcXVlc3Qs
IGZvcm1TdGF0ZSA9IFdURk1vdmUoZm9ybVN0YXRlKSwgZnJhbWVOYW1lLCBuYXZpZ2F0aW9uQWN0
aW9uLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pLCBibG9iVVJMTGlmZXRpbWVFeHRlbnNp
b24gPSBXVEZNb3ZlKGJsb2JVUkxMaWZldGltZUV4dGVuc2lvbildKFBvbGljeUFjdGlvbiBwb2xp
Y3lBY3Rpb24pIG11dGFibGUgewogICAgICAgICBzd2l0Y2ggKHBvbGljeUFjdGlvbikgewogICAg
ICAgICBjYXNlIFBvbGljeUFjdGlvbjo6RG93bmxvYWQ6CiAgICAgICAgICAgICBmcmFtZS0+bG9h
ZGVyKCkuY2xpZW50KCkuc3RhcnREb3dubG9hZChyZXF1ZXN0KTsKQEAgLTIxMyw3ICsyMTMsNyBA
QCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmV3V2luZG93UG9saWN5KE5hdmlnYXRpb25BY3Rp
b24mJiBuYXZpZ2F0aW9uQWN0aW9uLCBSZQogICAgICAgICAgICAgLy8gSXQgaXMgaW52YWxpZCB0
byBnZXQgYSAiU3VzcGVuZCIgcG9saWN5IGZvciBuZXcgd2luZG93cywgYXMgdGhlIG9sZCBkb2N1
bWVudCBpcyBub3QgZ29pbmcgYXdheS4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpVc2U6Ci0gICAgICAgICAgICBm
dW5jdGlvbihyZXF1ZXN0LCBmb3JtU3RhdGUuZ2V0KCksIGZyYW1lTmFtZSwgbmF2aWdhdGlvbkFj
dGlvbiwgU2hvdWxkQ29udGludWU6Olllcyk7CisgICAgICAgICAgICBmdW5jdGlvbihyZXF1ZXN0
LCBtYWtlV2Vha1B0cihmb3JtU3RhdGUuZ2V0KCkpLCBmcmFtZU5hbWUsIG5hdmlnYXRpb25BY3Rp
b24sIFNob3VsZENvbnRpbnVlOjpZZXMpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lD
aGVja2VyLmgKaW5kZXggYzMyOWVjNDNiODFlMzVlOGI3M2FiZTZlNjAxZDEzZDQyNTA4NTJhZi4u
OWYwNDg5NzM4MTkxOTM1YzMzZDljNzJjYjA1NTE4YTM3MDhmYThhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUG9saWN5Q2hlY2tlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzEs
NiArMzEsNyBAQAogCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIlJl
c291cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCkBAIC01
OSw4ICs2MCw4IEBAIGVudW0gY2xhc3MgU2hvdWxkQ29udGludWUgewogCiBlbnVtIGNsYXNzIFBv
bGljeURlY2lzaW9uTW9kZSB7IFN5bmNocm9ub3VzLCBBc3luY2hyb25vdXMgfTsKIAotdXNpbmcg
TmV3V2luZG93UG9saWN5RGVjaXNpb25GdW5jdGlvbiA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRm9ybVN0YXRlKiwgY29uc3QgU3RyaW5nJiBmcmFtZU5h
bWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBTaG91bGRDb250aW51ZSk+OwotdXNpbmcgTmF2
aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24gPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
c291cmNlUmVxdWVzdCYmLCBGb3JtU3RhdGUqLCBTaG91bGRDb250aW51ZSk+OwordXNpbmcgTmV3
V2luZG93UG9saWN5RGVjaXNpb25GdW5jdGlvbiA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgV2Vha1B0cjxGb3JtU3RhdGU+JiYsIGNvbnN0IFN0cmluZyYg
ZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgU2hvdWxkQ29udGludWUpPjsKK3Vz
aW5nIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9uID0gQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZXNvdXJjZVJlcXVlc3QmJiwgV2Vha1B0cjxGb3JtU3RhdGU+JiYsIFNob3VsZENvbnRp
bnVlKT47CiAKIGNsYXNzIFBvbGljeUNoZWNrZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFBvbGljeUNoZWNrZXIpOwpAQCAtNjgsOSArNjksOSBAQCBjbGFzcyBQb2xpY3lDaGVja2VyIHsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBQb2xpY3lDaGVja2VyKEZyYW1lJik7CiAKLSAgICB2b2lk
IGNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiwgYm9vbCBkaWRSZWNlaXZl
UmVkaXJlY3RSZXNwb25zZSwgRG9jdW1lbnRMb2FkZXIqLCBGb3JtU3RhdGUqLCBOYXZpZ2F0aW9u
UG9saWN5RGVjaXNpb25GdW5jdGlvbiYmLCBQb2xpY3lEZWNpc2lvbk1vZGUgPSBQb2xpY3lEZWNp
c2lvbk1vZGU6OkFzeW5jaHJvbm91cyk7CisgICAgdm9pZCBjaGVja05hdmlnYXRpb25Qb2xpY3ko
UmVzb3VyY2VSZXF1ZXN0JiYsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIERvY3Vt
ZW50TG9hZGVyKiwgUmVmUHRyPEZvcm1TdGF0ZT4mJiwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9u
RnVuY3Rpb24mJiwgUG9saWN5RGVjaXNpb25Nb2RlID0gUG9saWN5RGVjaXNpb25Nb2RlOjpBc3lu
Y2hyb25vdXMpOwogICAgIHZvaWQgY2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVz
dCYmLCBib29sIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlLCBOYXZpZ2F0aW9uUG9saWN5RGVj
aXNpb25GdW5jdGlvbiYmKTsKLSAgICB2b2lkIGNoZWNrTmV3V2luZG93UG9saWN5KE5hdmlnYXRp
b25BY3Rpb24mJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIEZvcm1TdGF0ZSosIGNvbnN0IFN0cmluZyYg
ZnJhbWVOYW1lLCBOZXdXaW5kb3dQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uJiYpOworICAgIHZvaWQg
Y2hlY2tOZXdXaW5kb3dQb2xpY3koTmF2aWdhdGlvbkFjdGlvbiYmLCBSZXNvdXJjZVJlcXVlc3Qm
JiwgUmVmUHRyPEZvcm1TdGF0ZT4mJiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIE5ld1dpbmRv
d1BvbGljeURlY2lzaW9uRnVuY3Rpb24mJik7CiAKICAgICB2b2lkIHN0b3BDaGVjaygpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggMzZl
Zjc5ZmVjMmMyYTg0ODUxMGUzOTBjZjIxN2MxNTY2ZmU4YWMwNS4uOGNkODQxODNkMGFmNWMwNmI1
ZGFhZWFhZjlkOWMwNzcyYTU1ODViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4
dE1lbnVDb250cm9sbGVyLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIHN0YXRpYyB2b2lkIG9wZW5O
ZXdXaW5kb3coY29uc3QgVVJMJiB1cmxUb0xvYWQsIEZyYW1lJiBmcmFtZSwgU2hvdWxkT3BlbkV4
dGVybmFsCiAgICAgaWYgKCFuZXdQYWdlKQogICAgICAgICByZXR1cm47CiAgICAgbmV3UGFnZS0+
Y2hyb21lKCkuc2hvdygpOwotICAgIG5ld1BhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmxvYWRG
cmFtZVJlcXVlc3QoV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgbnVsbHB0ciwgbnVsbHB0cik7
CisgICAgbmV3UGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkubG9hZEZyYW1lUmVxdWVzdChXVEZN
b3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCBudWxscHRyLCB7IH0pOwogfQogCiAjaWYgUExBVEZPUk0o
R1RLKQpAQCAtMzk3LDcgKzM5Nyw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250
ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24sIGNvCiAgICAgICAg
IGlmIChGcmFtZSogdGFyZ2V0RnJhbWUgPSBtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLnRhcmdl
dEZyYW1lKCkpIHsKICAgICAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3Qg
eyBtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmFic29sdXRlTGlua1VSTCgpLCBmcmFtZS0+bG9h
ZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpIH07CiAgICAgICAgICAgICBGcmFtZUxvYWRSZXF1ZXN0
IGZyYW1lTG9hZFJlcXVlc3QgeyAqZnJhbWUtPmRvY3VtZW50KCksIGZyYW1lLT5kb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpLCByZXNvdXJjZVJlcXVlc3QsIHsgfSwgTG9ja0hpc3Rvcnk6Ok5v
LCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdh
dGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6U3VwcHJlc3MsIHRh
cmdldEZyYW1lLT5pc01haW5GcmFtZSgpID8gU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6
U2hvdWxkQWxsb3cgOiBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxv
dywgSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVua25vd24gfTsKLSAgICAgICAgICAgIHRhcmdldEZy
YW1lLT5sb2FkZXIoKS5sb2FkRnJhbWVSZXF1ZXN0KFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCks
IG51bGxwdHIsIG51bGxwdHIpOworICAgICAgICAgICAgdGFyZ2V0RnJhbWUtPmxvYWRlcigpLmxv
YWRGcmFtZVJlcXVlc3QoV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgbnVsbHB0ciwgIHsgfSk7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgb3Blbk5ld1dpbmRvdyhtX2NvbnRleHQuaGl0
VGVzdFJlc3VsdCgpLmFic29sdXRlTGlua1VSTCgpLCAqZnJhbWUsIFNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3k6OlNob3VsZEFsbG93KTsKICAgICAgICAgYnJlYWs7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341170</attachid>
            <date>2018-05-23 21:44:09 -0700</date>
            <delta_ts>2018-05-23 22:23:05 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-185877-20180523214408.patch</filename>
            <type>text/plain</type>
            <size>43762</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzk1YzZjNTBlYWZlMTRl
ZWRjMDlhZTE2MWQxMmY0NzQyZDljODU0ZS4uMjE4N2M1OTE2NGU5ODRmNjkwYTAyNzgwZmJhNGEx
ZTdjZDk4NjViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDE4LTA1LTIzICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIEF2b2lkIGtlZXBpbmcg
Rm9ybVN0YXRlIGFsaXZlIGxvbmdlciB0aGFuIG5lY2Vzc2FyeQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1ODc3CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zOTMyOTIxOT4KKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAg
ICAgICAgQSBudW1iZXIgb2YgY3Jhc2ggZml4ZXMgd2VyZSBkb25lIHRvIHByZXZlbnQgRm9ybVN0
YXRlIG9iamVjdHMgZnJvbSBiZWluZworICAgICAgICBhY2Nlc3NlZCBhZnRlciB0aGVpciByZWxl
dmFudCBGcmFtZXMgaGFkIGJlZW4gZGVzdHJveWVkLiBVbmZvcnR1bmF0ZWx5LCB0aGlzCisgICAg
ICAgIGNvdWxkIGNhdXNlIHRoZSBGb3JtU3RhdGUgdG8gcGVyc2lzdCBhZnRlciB0aGUgb3duaW5n
IEZyYW1lIGhhZCBiZWVuCisgICAgICAgIGRlc3Ryb3llZCwgcmVzdWx0aW5nIGluIG51bGxwdHIg
ZGVyZWZlcmVuY2VzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyB0aGUgZm9sbG93aW5nOgor
CisgICAgICAgIDEuIFVzZXMgV2Vha1B0cidzIGZvciBGb3JtU3RhdGUgb2JqZWN0cyBwYXNzZWQg
dG8gY29tcGxldGlvbiBoYW5kbGVycywgcmF0aGVyCisgICAgICAgICAgIHRoYW4gUmVmUHRyLCBz
aW5jZSB0aG9zZSBjb21wbGV0aW9uIGhhbmRsZXJzIG1pZ2h0IGZpcmUgYXMgcGFydCBvZiB0aGUK
KyAgICAgICAgICAgY2xlYW4tdXAgcHJvY2VzcyBkdXJpbmcgRnJhbWUgZGVzdHJ1Y3Rpb24uIFRo
aXMgYWxsb3dzIHVzIHRvIHVzZSB0aGUgRm9ybVN0YXRlCisgICAgICAgICAgIGlmIHRoZXkgYXJl
IHN0aWxsIHZhbGlkLCBidXQgZ3JhY2VmdWxseSBoYW5kbGUgY2FzZXMgd2hlcmUgYSBmb3JtIHN1
Ym1pc3Npb24KKyAgICAgICAgICAgaXMgY2FuY2VsbGVkIGluLWZsaWdodC4KKyAgICAgICAgMi4g
TW92ZXMgRm9ybVN0YXRlIG9iamVjdCBhcyB0aGV5IHBhc3MgdGhyb3VnaCB0aGUgbG9hZGVyLgor
ICAgICAgICAzLiBSZW1vdmVzIHNvbWUgZXh0cmFuZW91cyBXVEZNb3ZlKCkgY2FsbHMgYmVpbmcg
bWFkZSBvbiBiYXJlIEZvcm1TdGF0ZSBwb2ludGVycy4KKyAgICAgICAgNC4gQ2hhbmdlcyBGb3Jt
U3VibWlzc2lvbiB0byBob2xkIGEgUmVmUHRyIHNvIHdlIGNhbiBtb3ZlIHRoZSBGb3JtU3RhdGUg
dG8gdGhlCisgICAgICAgICAgIGxvYWRlciBpbiB0aGUgY29kZSBwYXRoIHRoYXQgdXNlcyBpdCAo
dGhlIEZvcm1TdWJtaXNzaW9uIGlzIGFsd2F5cyBkZXN0cm95ZWQKKyAgICAgICAgICAgc2hvcnRs
eSBhZnRlcndhcmRzKS4KKyAgICAgICAgNS4gQ2hhbmdlcyB0aGUgdHJhcCBmcm9tIEJ1ZyAxODM3
MDQgc28gdGhhdCBpdCBvbmx5IGZpcmVzIGlmIHRoZSBGb3JtU3RhdGUgb2JqZWN0CisgICAgICAg
ICAgIGlzIGJlaW5nIHJldGFpbmVkIG1vcmUgdGhhbiBvbmNlLgorCisgICAgICAgICogbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjp3
aWxsU2VuZFJlcXVlc3QpOiBVcGRhdGUgZm9yIG5ldyBDb21wbGV0aW9uSGFuZGxlcgorICAgICAg
ICBzaWduYXR1cmUuCisgICAgICAgICogbG9hZGVyL0Zvcm1TdGF0ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb3JtU3RhdGU6OndpbGxEZXRhY2hQYWdlKTogUmV2aXNlIHRyYXAgdG8gY2hlY2sg
Zm9yIHJldGFpbiBjb3VudHMKKyAgICAgICAgYWJvdmUgb25lLgorICAgICAgICAqIGxvYWRlci9G
b3JtU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1TdGF0ZTo6d2Vha1B0ckZhY3Rvcnkg
Y29uc3QpOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvcm1TdWJtaXNzaW9uOjpzdGF0ZSBjb25zdCk6IFJldmlzZWQgZm9yIGNo
YW5nZSB0byBSZWZQdHIuCisgICAgICAgIChXZWJDb3JlOjpGb3JtU3VibWlzc2lvbjo6dGFrZVN0
YXRlKTogQWRkZWQuCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZCk6IFVwZGF0ZSBmb3IgbmV3IENvbXBs
ZXRpb25IYW5kbGVyIHNpZ25hdHVyZS4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjps
b2FkVVJMSW50b0NoaWxkRnJhbWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpsb2FkRnJhbWVSZXF1ZXN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6bG9hZFVSTCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6Omxv
YWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkV2l0aE5hdmln
YXRpb25BY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2Fk
V2l0aERvY3VtZW50TG9hZGVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6cmVsb2FkV2l0aE92ZXJyaWRlRW5jb2RpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpyZWxvYWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpsb2FkUG9zdFJlcXVlc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKTogRGl0dG8uCisgICAgICAgICogbG9hZGVy
L0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3Bw
OgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeSk6UmV2aXNlIHRvIHVzZSBXZWFr
UHRyIGZvcgorICAgICAgICBGb3JtU3RhdGUgcGFzc2VkIHRvIHRoZSBjb21wbGV0aW9uIGhhbmRs
ZXIuIFJlbW92ZSBzb21lIGV4dHJhbmVvdXMgV1RGTW92ZSgpCisgICAgICAgIGNhbGxzIG9uIGJh
cmUgcG9pbnRlcnMuCisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpjaGVja05ld1dp
bmRvd1BvbGljeSk6IERpdHRvLgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmg6Cisg
ICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6b3Blbk5ld1dpbmRvdyk6IFJldmlzZSBmb3IgbmV3IHNpZ25hdHVyZXMuCisgICAgICAgIChX
ZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKTog
RGl0dG8uCisKIDIwMTgtMDUtMjIgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAg
ICAgICAgIE9wdGltaXplZCBwYXRoIHpvb20gYW5pbWF0aW9uIG5lZWRzIGEgdmFsaWQgVUlJbWFn
ZSBhbmQgQ0dSZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRl
eCA5ZTA5YmQzNWUwZDM0ZmM3NGE0OTA3YjkyNjkyY2UwMjMyNjRkMjBkLi43ZWQ0ZjY0YzkyMTE4
MWU0OGFmOWJkNjAzMjU5ZWVkNTVkMWI4ODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CkBAIC02NDAsNyArNjQwLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmMKICAgICBpZiAoIWRp
ZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlICYmIHNob3VsZENvbnRpbnVlICE9IFNob3VsZENvbnRp
bnVlOjpGb3JTdXNwZW5zaW9uKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShuZXdSZXF1ZXN0KSk7CiAKLSAgICBhdXRvIG5hdmlnYXRpb25Qb2xpY3lDb21wbGV0aW9u
SGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBGb3JtU3RhdGUqLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgbXV0
YWJsZSB7CisgICAgYXV0byBuYXZpZ2F0aW9uUG9saWN5Q29tcGxldGlvbkhhbmRsZXIgPSBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2Vh
a1B0cjxGb3JtU3RhdGU+JiYsIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSBtdXRhYmxl
IHsKICAgICAgICAgbV93YWl0aW5nRm9yTmF2aWdhdGlvblBvbGljeSA9IGZhbHNlOwogICAgICAg
ICBzd2l0Y2ggKHNob3VsZENvbnRpbnVlKSB7CiAgICAgICAgIGNhc2UgU2hvdWxkQ29udGludWU6
OkZvclN1c3BlbnNpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN0
YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3RhdGUuY3BwCmluZGV4IDlmYThi
ZGQzZTFjYzM2YWIxMWNjZGU1ZjMwMTk2NTI4OTRiZmQwNWIuLmY4NzAwYjFhZDM4MzFhM2Q0MzE2
MzA4MWE4ZjBjMDYyYjZjYTA2ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
b3JtU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3RhdGUuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNTIsNyArNTIsNyBAQCBSZWY8Rm9ybVN0YXRlPiBGb3JtU3RhdGU6OmNyZWF0ZShIVE1MRm9y
bUVsZW1lbnQmIGZvcm0sIFN0cmluZ1BhaXJWZWN0b3ImJiB0ZXh0Rgogdm9pZCBGb3JtU3RhdGU6
OndpbGxEZXRhY2hQYWdlKCkKIHsKICAgICAvLyBCZWFydHJhcCBmb3IgPHJkYXI6Ly9wcm9ibGVt
LzM3NTc5MzU0PgotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgUkVMRUFT
RV9BU1NFUlQoaGFzT25lUmVmKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRm9ybVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN0YXRlLmgK
aW5kZXggMjYzNGE5N2IxMjM2Yzk3NjIzNGU1MGRhN2Q1YzIwMzk3Y2RjYzJmYi4uNzc1ODQzMjlh
ZjE2NDI0NjUwYzAwZGI4YTc5M2Q5ZDk1NWY1MDUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Zvcm1TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3Rh
dGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRnJhbWVE
ZXN0cnVjdGlvbk9ic2VydmVyLmgiCisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDksNiAr
NTAsOCBAQCBwdWJsaWM6CiAgICAgRG9jdW1lbnQmIHNvdXJjZURvY3VtZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9zb3VyY2VEb2N1bWVudDsgfQogICAgIEZvcm1TdWJtaXNzaW9uVHJpZ2dlciBmb3Jt
U3VibWlzc2lvblRyaWdnZXIoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1TdWJtaXNzaW9uVHJpZ2dl
cjsgfQogCisgICAgYXV0byYgd2Vha1B0ckZhY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3dlYWtG
YWN0b3J5OyB9CisKIHByaXZhdGU6CiAgICAgRm9ybVN0YXRlKEhUTUxGb3JtRWxlbWVudCYsIFN0
cmluZ1BhaXJWZWN0b3ImJiB0ZXh0RmllbGRWYWx1ZXMsIERvY3VtZW50JiwgRm9ybVN1Ym1pc3Np
b25UcmlnZ2VyKTsKICAgICB2b2lkIHdpbGxEZXRhY2hQYWdlKCkgb3ZlcnJpZGU7CkBAIC01Nyw2
ICs2MCw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nUGFpclZlY3RvciBtX3RleHRGaWVsZFZhbHVl
czsKICAgICBSZWY8RG9jdW1lbnQ+IG1fc291cmNlRG9jdW1lbnQ7CiAgICAgRm9ybVN1Ym1pc3Np
b25UcmlnZ2VyIG1fZm9ybVN1Ym1pc3Npb25UcmlnZ2VyOworICAgIFdlYWtQdHJGYWN0b3J5PEZv
cm1TdGF0ZT4gbV93ZWFrRmFjdG9yeTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmgKaW5kZXggODY3ZTYzZmUyY2NjYzM2YWJi
NzgyM2I5OGJjZjFiY2M1MzBmNjZlYy4uNmViY2U2Yjc3YTI5OTA3MmM3NjY5MGQ4ODMxZjBkOTg1
Mzg5ZTBmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmgKQEAgLTgzLDcg
KzgzLDggQEAgcHVibGljOgogICAgIGNvbnN0IFVSTCYgYWN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9hY3Rpb247IH0KICAgICBjb25zdCBTdHJpbmcmIHRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1f
dGFyZ2V0OyB9CiAgICAgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGVudFR5cGU7IH0KLSAgICBGb3JtU3RhdGUmIHN0YXRlKCkgY29uc3QgeyByZXR1cm4g
bV9mb3JtU3RhdGU7IH0KKyAgICBGb3JtU3RhdGUmIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gKm1f
Zm9ybVN0YXRlOyB9CisgICAgUmVmPEZvcm1TdGF0ZT4gdGFrZVN0YXRlKCkgeyByZXR1cm4gbV9m
b3JtU3RhdGUucmVsZWFzZU5vbk51bGwoKTsgfQogICAgIEZvcm1EYXRhJiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9mb3JtRGF0YTsgfQogICAgIGNvbnN0IFN0cmluZyBib3VuZGFyeSgpIGNvbnN0
IHsgcmV0dXJuIG1fYm91bmRhcnk7IH0KICAgICBMb2NrSGlzdG9yeSBsb2NrSGlzdG9yeSgpIGNv
bnN0IHsgcmV0dXJuIG1fbG9ja0hpc3Rvcnk7IH0KQEAgLTEwMyw3ICsxMDQsNyBAQCBwcml2YXRl
OgogICAgIFVSTCBtX2FjdGlvbjsKICAgICBTdHJpbmcgbV90YXJnZXQ7CiAgICAgU3RyaW5nIG1f
Y29udGVudFR5cGU7Ci0gICAgUmVmPEZvcm1TdGF0ZT4gbV9mb3JtU3RhdGU7CisgICAgUmVmUHRy
PEZvcm1TdGF0ZT4gbV9mb3JtU3RhdGU7CiAgICAgUmVmPEZvcm1EYXRhPiBtX2Zvcm1EYXRhOwog
ICAgIFN0cmluZyBtX2JvdW5kYXJ5OwogICAgIExvY2tIaXN0b3J5IG1fbG9ja0hpc3Rvcnk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCAzMGQwMDI1M2NkZThhNzQ4Mzdi
MGQ0NzVjMGYxNzM1MWY1YWE4YWY4Li42NTVmMDFjNDc2NmUxZjAzZTdjMjc3YzRlNGY2MGUwYWJh
NWMwYTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFu
ZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRv
cmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9i
aWxlLmNvbS8pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQWxwIFRva2VyIDxhbHBAYXRva2VyLmNv
bT4KQEAgLTM5Miw3ICszOTIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZChGcmFt
ZUxvYWRSZXF1ZXN0JiYgZnJhbWVSZXF1ZXN0LCBFdmVudCogdHJpZ2dlcmluZwogICAgIGFkZEhU
VFBPcmlnaW5JZk5lZWRlZChmcmFtZVJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIG91dGdvaW5n
T3JpZ2luKCkpOwogICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5
KCktPnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZChmcmFtZVJlcXVlc3QucmVzb3VyY2VS
ZXF1ZXN0KCksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SW5zZWN1cmVSZXF1ZXN0VHlwZTo6TmF2
aWdhdGlvbik7CiAKLSAgICBsb2FkRnJhbWVSZXF1ZXN0KFdURk1vdmUoZnJhbWVSZXF1ZXN0KSwg
dHJpZ2dlcmluZ0V2ZW50LCBudWxscHRyKTsKKyAgICBsb2FkRnJhbWVSZXF1ZXN0KFdURk1vdmUo
ZnJhbWVSZXF1ZXN0KSwgdHJpZ2dlcmluZ0V2ZW50LCB7IH0pOwogfQogCiB2b2lkIEZyYW1lTG9h
ZGVyOjpzdWJtaXRGb3JtKFJlZjxGb3JtU3VibWlzc2lvbj4mJiBzdWJtaXNzaW9uKQpAQCAtOTU3
LDcgKzk1Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkxJbnRvQ2hpbGRGcmFtZShjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcmVyLCBGCiAgICAgYXV0byBpbml0aWF0ZWRC
eU1haW5GcmFtZSA9IGxleGljYWxGcmFtZSAmJiBsZXhpY2FsRnJhbWUtPmlzTWFpbkZyYW1lKCkg
PyBJbml0aWF0ZWRCeU1haW5GcmFtZTo6WWVzIDogSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVua25v
d247CiAKICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyAqbV9mcmFtZS5k
b2N1bWVudCgpLCBtX2ZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHsgdXJsIH0s
IEFTQ0lJTGl0ZXJhbCgiX3NlbGYiKSwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRM
aXN0OjpZZXMsIFNob3VsZFNlbmRSZWZlcnJlcjo6TWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2
aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6U3VwcHJlc3Ms
IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBpbml0aWF0ZWRC
eU1haW5GcmFtZSB9OwotICAgIGNoaWxkRnJhbWUtPmxvYWRlcigpLmxvYWRVUkwoV1RGTW92ZShm
cmFtZUxvYWRSZXF1ZXN0KSwgcmVmZXJlciwgRnJhbWVMb2FkVHlwZTo6UmVkaXJlY3RXaXRoTG9j
a2VkQmFja0ZvcndhcmRMaXN0LCBudWxscHRyLCBudWxscHRyLCBbXSB7IH0pOworICAgIGNoaWxk
RnJhbWUtPmxvYWRlcigpLmxvYWRVUkwoV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgcmVmZXJl
ciwgRnJhbWVMb2FkVHlwZTo6UmVkaXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0LCBudWxs
cHRyLCB7IH0sIFtdIHsgfSk7CiB9CiAKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJM
RShNSFRNTCkKQEAgLTExOTksNyArMTE5OSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNldHVwRm9y
UmVwbGFjZSgpCiAgICAgZGV0YWNoQ2hpbGRyZW4oKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6
bG9hZEZyYW1lUmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgRXZlbnQqIGV2ZW50
LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSkKK3ZvaWQgRnJhbWVMb2FkZXI6OmxvYWRGcmFtZVJlcXVl
c3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QsIEV2ZW50KiBldmVudCwgUmVmUHRyPEZvcm1T
dGF0ZT4mJiBmb3JtU3RhdGUpCiB7CiAgICAgLy8gUHJvdGVjdCBmcmFtZSBmcm9tIGdldHRpbmcg
Ymxvd24gYXdheSBpbnNpZGUgZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQgaW4gbG9hZFdpdGhEb2N1
bWVudExvYWRlci4KICAgICBhdXRvIHByb3RlY3RGcmFtZSA9IG1ha2VSZWYobV9mcmFtZSk7CkBA
IC0xMjI4LDcgKzEyMjgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRnJhbWVSZXF1ZXN0KEZy
YW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBFdmVudCogZXZlbnQsIEZvcgogICAgIGVsc2UKICAg
ICAgICAgbG9hZFR5cGUgPSBGcmFtZUxvYWRUeXBlOjpTdGFuZGFyZDsKIAotICAgIGF1dG8gY29t
cGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUp
LCBmb3JtU3RhdGUgPSBtYWtlUmVmUHRyKGZvcm1TdGF0ZSksIGZyYW1lTmFtZSA9IHJlcXVlc3Qu
ZnJhbWVOYW1lKCldIHsKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3Rl
Y3RlZEZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKSwgZm9ybVN0YXRlID0gbWFrZVdlYWtQdHIoZm9y
bVN0YXRlLmdldCgpKSwgZnJhbWVOYW1lID0gcmVxdWVzdC5mcmFtZU5hbWUoKV0gewogICAgICAg
ICAvLyBGSVhNRTogSXQncyBwb3NzaWJsZSB0aGlzIHRhcmdldEZyYW1lIHdpbGwgbm90IGJlIHRo
ZSBzYW1lIGZyYW1lIHRoYXQgd2FzIHRhcmdldGVkIGJ5IHRoZSBhY3R1YWwKICAgICAgICAgLy8g
bG9hZCBpZiBmcmFtZSBuYW1lcyBoYXZlIGNoYW5nZWQuCiAgICAgICAgIEZyYW1lKiBzb3VyY2VG
cmFtZSA9IGZvcm1TdGF0ZSA/IGZvcm1TdGF0ZS0+c291cmNlRG9jdW1lbnQoKS5mcmFtZSgpIDog
Jm1fZnJhbWU7CkBAIC0xMjQyLDkgKzEyNDIsOSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRnJh
bWVSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBFdmVudCogZXZlbnQsIEZvcgog
ICAgIH07CiAKICAgICBpZiAocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5odHRwTWV0aG9kKCkg
PT0gIlBPU1QiKQotICAgICAgICBsb2FkUG9zdFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSwgcmVm
ZXJyZXIsIGxvYWRUeXBlLCBldmVudCwgZm9ybVN0YXRlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CisgICAgICAgIGxvYWRQb3N0UmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpLCByZWZlcnJl
ciwgbG9hZFR5cGUsIGV2ZW50LCBXVEZNb3ZlKGZvcm1TdGF0ZSksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKICAgICBlbHNlCi0gICAgICAgIGxvYWRVUkwoV1RGTW92ZShyZXF1ZXN0KSwg
cmVmZXJyZXIsIGxvYWRUeXBlLCBldmVudCwgZm9ybVN0YXRlLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgICAgIGxvYWRVUkwoV1RGTW92ZShyZXF1ZXN0KSwgcmVmZXJyZXIsIGxv
YWRUeXBlLCBldmVudCwgV1RGTW92ZShmb3JtU3RhdGUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKIHN0YXRpYyBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KEZyYW1lJiBjdXJyZW50RnJhbWUsIEluaXRpYXRl
ZEJ5TWFpbkZyYW1lIGluaXRpYXRlZEJ5TWFpbkZyYW1lLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5IHByb3BhZ2F0ZWRQb2xpY3kpCkBAIC0xMjg2LDcgKzEyODYsNyBAQCBib29sIEZyYW1l
TG9hZGVyOjppc1N0b3BMb2FkaW5nQWxsb3dlZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFnZURp
c21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkID09IFBhZ2VEaXNtaXNzYWxUeXBlOjpOb25lOwog
fQogCi12b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMKEZyYW1lTG9hZFJlcXVlc3QmJiBmcmFtZUxv
YWRSZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBGcmFtZUxvYWRUeXBlIG5ld0xvYWRU
eXBlLCBFdmVudCogZXZlbnQsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJM
KEZyYW1lTG9hZFJlcXVlc3QmJiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmVy
cmVyLCBGcmFtZUxvYWRUeXBlIG5ld0xvYWRUeXBlLCBFdmVudCogZXZlbnQsIFJlZlB0cjxGb3Jt
U3RhdGU+JiYgZm9ybVN0YXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQ29tcGxldGlvbkhhbmRsZXJDYWxsaW5nU2NvcGUgY29tcGxldGlv
bkhhbmRsZXJDYWxsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIGlmIChtX2lu
U3RvcEFsbExvYWRlcnMpCkBAIC0xMzIwLDcgKzEzMjAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjps
b2FkVVJMKEZyYW1lTG9hZFJlcXVlc3QmJiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBTdHJpbmcm
IHJlZgogICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9IGlzRm9ybVN1Ym1pc3Npb24gPyBudWxscHRy
IDogZmluZEZyYW1lRm9yTmF2aWdhdGlvbihmcmFtZU5hbWUpOwogICAgIGlmICh0YXJnZXRGcmFt
ZSAmJiB0YXJnZXRGcmFtZSAhPSAmbV9mcmFtZSkgewogICAgICAgICBmcmFtZUxvYWRSZXF1ZXN0
LnNldEZyYW1lTmFtZSgiX3NlbGYiKTsKLSAgICAgICAgdGFyZ2V0RnJhbWUtPmxvYWRlcigpLmxv
YWRVUkwoV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgcmVmZXJyZXIsIG5ld0xvYWRUeXBlLCBl
dmVudCwgZm9ybVN0YXRlLCBjb21wbGV0aW9uSGFuZGxlckNhbGxlci5yZWxlYXNlKCkpOworICAg
ICAgICB0YXJnZXRGcmFtZS0+bG9hZGVyKCkubG9hZFVSTChXVEZNb3ZlKGZyYW1lTG9hZFJlcXVl
c3QpLCByZWZlcnJlciwgbmV3TG9hZFR5cGUsIGV2ZW50LCBXVEZNb3ZlKGZvcm1TdGF0ZSksIGNv
bXBsZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTEzMzgsOCArMTMzOCw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoRnJhbWVM
b2FkUmVxdWVzdCYmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmCiAKICAgICBp
ZiAoIXRhcmdldEZyYW1lICYmICFmcmFtZU5hbWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGFjdGlv
biA9IGFjdGlvbi5jb3B5V2l0aFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeVRvQXBwbHkobV9mcmFtZSwgZnJhbWVMb2FkUmVxdWVzdCkpOwot
ICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOZXdXaW5kb3dQb2xpY3koV1RGTW92ZShhY3Rp
b24pLCBXVEZNb3ZlKHJlcXVlc3QpLCBmb3JtU3RhdGUsIGZyYW1lTmFtZSwgW3RoaXMsIGFsbG93
TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgb3BlbmVyUG9saWN5LCBjb21wbGV0aW9uSGFuZGxlciA9
IGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKV0gKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1l
LCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFNob3VsZENvbnRpbnVlIHNob3VsZENv
bnRpbnVlKSB7Ci0gICAgICAgICAgICBjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeShy
ZXF1ZXN0LCBmb3JtU3RhdGUsIGZyYW1lTmFtZSwgYWN0aW9uLCBzaG91bGRDb250aW51ZSwgYWxs
b3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBvcGVuZXJQb2xpY3kpOworICAgICAgICBwb2xpY3lD
aGVja2VyKCkuY2hlY2tOZXdXaW5kb3dQb2xpY3koV1RGTW92ZShhY3Rpb24pLCBXVEZNb3ZlKHJl
cXVlc3QpLCBXVEZNb3ZlKGZvcm1TdGF0ZSksIGZyYW1lTmFtZSwgW3RoaXMsIGFsbG93TmF2aWdh
dGlvblRvSW52YWxpZFVSTCwgb3BlbmVyUG9saWN5LCBjb21wbGV0aW9uSGFuZGxlciA9IGNvbXBs
ZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgV2Vha1B0cjxGb3JtU3RhdGU+JiYgZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1l
TmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBTaG91bGRDb250aW51ZSBzaG91
bGRDb250aW51ZSkgeworICAgICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xp
Y3kocmVxdWVzdCwgZm9ybVN0YXRlLmdldCgpLCBmcmFtZU5hbWUsIGFjdGlvbiwgc2hvdWxkQ29u
dGludWUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgb3BlbmVyUG9saWN5KTsKICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47
CkBAIC0xMzU4LDcgKzEzNTgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMKEZyYW1lTG9h
ZFJlcXVlc3QmJiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZgogICAgICAgICBv
bGREb2N1bWVudExvYWRlci0+c2V0TGFzdENoZWNrZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCgp
KTsKICAgICAgICAgcG9saWN5Q2hlY2tlcigpLnN0b3BDaGVjaygpOwogICAgICAgICBwb2xpY3lD
aGVja2VyKCkuc2V0TG9hZFR5cGUobmV3TG9hZFR5cGUpOwotICAgICAgICBwb2xpY3lDaGVja2Vy
KCkuY2hlY2tOYXZpZ2F0aW9uUG9saWN5KFdURk1vdmUocmVxdWVzdCksIGZhbHNlIC8qIGRpZFJl
Y2VpdmVSZWRpcmVjdFJlc3BvbnNlICovLCBvbGREb2N1bWVudExvYWRlci5nZXQoKSwgZm9ybVN0
YXRlLCBbdGhpcywgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpXSAoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqLCBTaG91bGRDb250aW51ZSBzaG91bGRD
b250aW51ZSkgeworICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOYXZpZ2F0aW9uUG9saWN5
KFdURk1vdmUocmVxdWVzdCksIGZhbHNlIC8qIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlICov
LCBvbGREb2N1bWVudExvYWRlci5nZXQoKSwgV1RGTW92ZShmb3JtU3RhdGUpLCBbdGhpcywgcHJv
dGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiwgU2hvdWxkQ29udGludWUgc2hvdWxkQ29udGlu
dWUpIHsKICAgICAgICAgICAgIGNvbnRpbnVlRnJhZ21lbnRTY3JvbGxBZnRlck5hdmlnYXRpb25Q
b2xpY3kocmVxdWVzdCwgc2hvdWxkQ29udGludWUgPT0gU2hvdWxkQ29udGludWU6Olllcyk7CiAg
ICAgICAgIH0sIFBvbGljeURlY2lzaW9uTW9kZTo6U3luY2hyb25vdXMpOwogICAgICAgICByZXR1
cm47CkBAIC0xMzcyLDcgKzEzNzIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMKEZyYW1l
TG9hZFJlcXVlc3QmJiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZgogICAgIGlm
IChpc1N5c3RlbVByZXZpZXcpCiAgICAgICAgIHJlcXVlc3Quc2V0U3lzdGVtUHJldmlld1JlY3Qo
ZnJhbWVMb2FkUmVxdWVzdC5zeXN0ZW1QcmV2aWV3UmVjdCgpKTsKICNlbmRpZgotICAgIGxvYWRX
aXRoTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LCBhY3Rpb24sIGxvY2tIaXN0b3J5LCBuZXdMb2Fk
VHlwZSwgZm9ybVN0YXRlLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIFt0aGlzLCBpc1Jl
ZGlyZWN0LCBzYW1lVVJMLCBuZXdMb2FkVHlwZSwgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1f
ZnJhbWUpLCBjb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVh
c2UoKV0geworICAgIGxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LCBhY3Rpb24sIGxv
Y2tIaXN0b3J5LCBuZXdMb2FkVHlwZSwgV1RGTW92ZShmb3JtU3RhdGUpLCBhbGxvd05hdmlnYXRp
b25Ub0ludmFsaWRVUkwsIFt0aGlzLCBpc1JlZGlyZWN0LCBzYW1lVVJMLCBuZXdMb2FkVHlwZSwg
cHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpLCBjb21wbGV0aW9uSGFuZGxlciA9IGNv
bXBsZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKV0gewogICAgICAgICBpZiAoaXNSZWRpcmVj
dCkgewogICAgICAgICAgICAgbV9xdWlja1JlZGlyZWN0Q29taW5nID0gZmFsc2U7CiAgICAgICAg
ICAgICBpZiAobV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKQpAQCAtMTQxOSw4ICsxNDE5LDgg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCkKIAog
ICAgIGlmIChyZXF1ZXN0LnNob3VsZENoZWNrTmV3V2luZG93UG9saWN5KCkpIHsKICAgICAgICAg
TmF2aWdhdGlvbkFjdGlvbiBhY3Rpb24geyByZXF1ZXN0LnJlcXVlc3RlcigpLCByZXF1ZXN0LnJl
c291cmNlUmVxdWVzdCgpLCBJbml0aWF0ZWRCeU1haW5GcmFtZTo6VW5rbm93biwgTmF2aWdhdGlv
blR5cGU6Ok90aGVyLCByZXF1ZXN0LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSB9Owot
ICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOZXdXaW5kb3dQb2xpY3koV1RGTW92ZShhY3Rp
b24pLCBXVEZNb3ZlKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpLCBudWxscHRyLCByZXF1ZXN0
LmZyYW1lTmFtZSgpLCBbdGhpc10gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9y
bVN0YXRlKiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJiBhY3Rpb24sIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSB7Ci0gICAg
ICAgICAgICBjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeShyZXF1ZXN0LCBmb3JtU3Rh
dGUsIGZyYW1lTmFtZSwgYWN0aW9uLCBzaG91bGRDb250aW51ZSwgQWxsb3dOYXZpZ2F0aW9uVG9J
bnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpTdXBwcmVzcyk7CisgICAgICAg
IHBvbGljeUNoZWNrZXIoKS5jaGVja05ld1dpbmRvd1BvbGljeShXVEZNb3ZlKGFjdGlvbiksIFdU
Rk1vdmUocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSksIHsgfSwgcmVxdWVzdC5mcmFtZU5hbWUo
KSwgW3RoaXNdIChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYWtQdHI8Rm9ybVN0
YXRlPiYmIGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5hdmlnYXRp
b25BY3Rpb24mIGFjdGlvbiwgU2hvdWxkQ29udGludWUgc2hvdWxkQ29udGludWUpIHsKKyAgICAg
ICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KHJlcXVlc3QsIGZvcm1TdGF0
ZS5nZXQoKSwgZnJhbWVOYW1lLCBhY3Rpb24sIHNob3VsZENvbnRpbnVlLCBBbGxvd05hdmlnYXRp
b25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OlN1cHByZXNzKTsKICAg
ICAgICAgfSk7CiAKICAgICAgICAgcmV0dXJuOwpAQCAtMTQzNyw3ICsxNDM3LDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6bG9hZChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCkKICAgICBsb2FkKGxv
YWRlci5wdHIoKSk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRoTmF2aWdhdGlvbkFj
dGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IE5hdmlnYXRpb25BY3Rp
b24mIGFjdGlvbiwgTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnksIEZyYW1lTG9hZFR5cGUgdHlwZSwg
Rm9ybVN0YXRlKiBmb3JtU3RhdGUsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCBhbGxvd05h
dmlnYXRpb25Ub0ludmFsaWRVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbihj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFj
dGlvbiwgTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnksIEZyYW1lTG9hZFR5cGUgdHlwZSwgUmVmUHRy
PEZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCBhbGxv
d05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9IG1fY2xp
ZW50LmNyZWF0ZURvY3VtZW50TG9hZGVyKHJlcXVlc3QsIGRlZmF1bHRTdWJzdGl0dXRlRGF0YUZv
clVSTChyZXF1ZXN0LnVybCgpKSk7CiAgICAgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5VG9OZXdEb2N1bWVudExvYWRlcihtX2ZyYW1lLCBsb2FkZXIsIGFjdGlvbi5pbml0aWF0ZWRC
eU1haW5GcmFtZSgpLCBhY3Rpb24uc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpKTsKQEAg
LTE0NDksNyArMTQ0OSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRoTmF2aWdhdGlvbkFj
dGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0CiAgICAgaWYgKG1fZG9j
dW1lbnRMb2FkZXIpCiAgICAgICAgIGxvYWRlci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhtX2RvY3Vt
ZW50TG9hZGVyLT5vdmVycmlkZUVuY29kaW5nKCkpOwogCi0gICAgbG9hZFdpdGhEb2N1bWVudExv
YWRlcihsb2FkZXIucHRyKCksIHR5cGUsIGZvcm1TdGF0ZSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZh
bGlkVVJMLCBOYXZpZ2F0aW9uUG9saWN5Q2hlY2s6OlJlcXVpcmUsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKKyAgICBsb2FkV2l0aERvY3VtZW50TG9hZGVyKGxvYWRlci5wdHIoKSwgdHlw
ZSwgV1RGTW92ZShmb3JtU3RhdGUpLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIE5hdmln
YXRpb25Qb2xpY3lDaGVjazo6UmVxdWlyZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
fQogCiB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkKERvY3VtZW50TG9hZGVyKiBuZXdEb2N1bWVudExv
YWRlcikKQEAgLTE0ODgsMTAgKzE0ODgsMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChEb2N1
bWVudExvYWRlciogbmV3RG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHR5cGUgPSBGcmFtZUxvYWRU
eXBlOjpSZWxvYWQ7CiAgICAgfQogCi0gICAgbG9hZFdpdGhEb2N1bWVudExvYWRlcihuZXdEb2N1
bWVudExvYWRlciwgdHlwZSwgMCwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5h
dmlnYXRpb25Qb2xpY3lDaGVjazo6UmVxdWlyZSwgW10geyB9KTsKKyAgICBsb2FkV2l0aERvY3Vt
ZW50TG9hZGVyKG5ld0RvY3VtZW50TG9hZGVyLCB0eXBlLCB7IH0sIEFsbG93TmF2aWdhdGlvblRv
SW52YWxpZFVSTDo6WWVzLCBOYXZpZ2F0aW9uUG9saWN5Q2hlY2s6OlJlcXVpcmUsIFtdIHsgfSk7
CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRM
b2FkZXIqIGxvYWRlciwgRnJhbWVMb2FkVHlwZSB0eXBlLCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwg
QWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwg
TmF2aWdhdGlvblBvbGljeUNoZWNrLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVyKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIEZyYW1lTG9hZFR5cGUgdHlwZSwgUmVmUHRyPEZvcm1TdGF0
ZT4mJiBmb3JtU3RhdGUsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCBhbGxvd05hdmlnYXRp
b25Ub0ludmFsaWRVUkwsIE5hdmlnYXRpb25Qb2xpY3lDaGVjaywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIC8vIFJldGFpbiBiZWNhdXNlIGRp
c3BhdGNoQmVmb3JlTG9hZEV2ZW50IG1heSByZWxlYXNlIHRoZSBsYXN0IHJlZmVyZW5jZSB0byBp
dC4KICAgICBSZWY8RnJhbWU+IHByb3RlY3QobV9mcmFtZSk7CkBAIC0xNTMzLDcgKzE1MzMsNyBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVy
KiBsb2FkZXIsIEZyYW1lTG9hZFR5cGUgdAogICAgICAgICBvbGREb2N1bWVudExvYWRlci0+c2V0
VHJpZ2dlcmluZ0FjdGlvbihhY3Rpb24pOwogICAgICAgICBvbGREb2N1bWVudExvYWRlci0+c2V0
TGFzdENoZWNrZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCgpKTsKICAgICAgICAgcG9saWN5Q2hl
Y2tlcigpLnN0b3BDaGVjaygpOwotICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOYXZpZ2F0
aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdChsb2FkZXItPnJlcXVlc3QoKSksIGZhbHNlIC8qIGRp
ZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlICovLCBvbGREb2N1bWVudExvYWRlci5nZXQoKSwgZm9y
bVN0YXRlLCBbdGhpcywgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpXSAoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqLCBTaG91bGRDb250aW51ZSBzaG91
bGRDb250aW51ZSkgeworICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOYXZpZ2F0aW9uUG9s
aWN5KFJlc291cmNlUmVxdWVzdChsb2FkZXItPnJlcXVlc3QoKSksIGZhbHNlIC8qIGRpZFJlY2Vp
dmVSZWRpcmVjdFJlc3BvbnNlICovLCBvbGREb2N1bWVudExvYWRlci5nZXQoKSwgV1RGTW92ZShm
b3JtU3RhdGUpLCBbdGhpcywgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpXSAoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiwgU2hvdWxk
Q29udGludWUgc2hvdWxkQ29udGludWUpIHsKICAgICAgICAgICAgIGNvbnRpbnVlRnJhZ21lbnRT
Y3JvbGxBZnRlck5hdmlnYXRpb25Qb2xpY3kocmVxdWVzdCwgc2hvdWxkQ29udGludWUgPT0gU2hv
dWxkQ29udGludWU6Olllcyk7CiAgICAgICAgIH0sIFBvbGljeURlY2lzaW9uTW9kZTo6U3luY2hy
b25vdXMpOwogICAgICAgICByZXR1cm47CkBAIC0xNTU1LDcgKzE1NTUsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIEZy
YW1lTG9hZFR5cGUgdAogICAgICAgICAvLyBhIG5ldyBVUkwsIHRoZSBwYXJlbnQgZnJhbWUgc2hv
dWxkbid0IGxlYXJuIHRoZSBVUkwuCiAgICAgICAgIGlmICghbV9zdGF0ZU1hY2hpbmUuY29tbWl0
dGVkRmlyc3RSZWFsRG9jdW1lbnRMb2FkKCkKICAgICAgICAgICAgICYmICFvd25lckVsZW1lbnQt
PmRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KGxvYWRlci0+cmVxdWVzdCgpLnVybCgpLnN0cmluZygp
KSkgewotICAgICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGxvYWRl
ci0+cmVxdWVzdCgpLCBmb3JtU3RhdGUsIFNob3VsZENvbnRpbnVlOjpObywgYWxsb3dOYXZpZ2F0
aW9uVG9JbnZhbGlkVVJMKTsKKyAgICAgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlv
blBvbGljeShsb2FkZXItPnJlcXVlc3QoKSwgZm9ybVN0YXRlLmdldCgpLCBTaG91bGRDb250aW51
ZTo6Tm8sIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICB9CkBAIC0xNTYzLDEyICsxNTYzLDEyIEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgRnJhbWVM
b2FkVHlwZSB0CiAgICAgbV9mcmFtZS5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuY2FuY2VsKHRydWUp
OwogCiAgICAgaWYgKCFtX2N1cnJlbnRMb2FkU2hvdWxkQ2hlY2tOYXZpZ2F0aW9uUG9saWN5KSB7
Ci0gICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShsb2FkZXItPnJlcXVl
c3QoKSwgZm9ybVN0YXRlLCBTaG91bGRDb250aW51ZTo6WWVzLCBhbGxvd05hdmlnYXRpb25Ub0lu
dmFsaWRVUkwpOworICAgICAgICBjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kobG9h
ZGVyLT5yZXF1ZXN0KCksIGZvcm1TdGF0ZS5nZXQoKSwgU2hvdWxkQ29udGludWU6OlllcywgYWxs
b3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0KGxv
YWRlci0+cmVxdWVzdCgpKSwgZmFsc2UgLyogZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgKi8s
IGxvYWRlciwgZm9ybVN0YXRlLCBbdGhpcywgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJh
bWUpLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIGNvbXBsZXRpb25IYW5kbGVyID0gY29t
cGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgU2hvdWxkQ29udGludWUgc2hvdWxkQ29udGlu
dWUpIHsKLSAgICAgICAgY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KHJlcXVlc3Qs
IGZvcm1TdGF0ZSwgc2hvdWxkQ29udGludWUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7
CisgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVl
c3QobG9hZGVyLT5yZXF1ZXN0KCkpLCBmYWxzZSAvKiBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25z
ZSAqLywgbG9hZGVyLCBXVEZNb3ZlKGZvcm1TdGF0ZSksIFt0aGlzLCBwcm90ZWN0ZWRGcmFtZSA9
IG1ha2VSZWYobV9mcmFtZSksIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgY29tcGxldGlv
bkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlckNhbGxlci5yZWxlYXNlKCldIChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYWtQdHI8Rm9ybVN0YXRlPiYmIGZvcm1TdGF0ZSwgU2hv
dWxkQ29udGludWUgc2hvdWxkQ29udGludWUpIHsKKyAgICAgICAgY29udGludWVMb2FkQWZ0ZXJO
YXZpZ2F0aW9uUG9saWN5KHJlcXVlc3QsIGZvcm1TdGF0ZS5nZXQoKSwgc2hvdWxkQ29udGludWUs
IGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiAgICAgfSk7CiB9CkBAIC0xNjc2LDcgKzE2NzYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpy
ZWxvYWRXaXRoT3ZlcnJpZGVFbmNvZGluZyhjb25zdCBTdHJpbmcmIGVuY29kaW5nKQogCiAgICAg
bG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKGVuY29kaW5nKTsKIAotICAgIGxvYWRXaXRoRG9j
dW1lbnRMb2FkZXIobG9hZGVyLnB0cigpLCBGcmFtZUxvYWRUeXBlOjpSZWxvYWQsIDAsIEFsbG93
TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOYXZpZ2F0aW9uUG9saWN5Q2hlY2s6OlJlcXVp
cmUsIFtdIHsgfSk7CisgICAgbG9hZFdpdGhEb2N1bWVudExvYWRlcihsb2FkZXIucHRyKCksIEZy
YW1lTG9hZFR5cGU6OlJlbG9hZCwgeyB9LCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6Olll
cywgTmF2aWdhdGlvblBvbGljeUNoZWNrOjpSZXF1aXJlLCBbXSB7IH0pOwogfQogCiB2b2lkIEZy
YW1lTG9hZGVyOjpyZWxvYWQoT3B0aW9uU2V0PFJlbG9hZE9wdGlvbj4gb3B0aW9ucykKQEAgLTE3
MjMsNyArMTcyMyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZChPcHRpb25TZXQ8UmVsb2Fk
T3B0aW9uPiBvcHRpb25zKQogICAgICAgICByZXR1cm4gRnJhbWVMb2FkVHlwZTo6UmVsb2FkOwog
ICAgIH07CiAgICAgCi0gICAgbG9hZFdpdGhEb2N1bWVudExvYWRlcihsb2FkZXIucHRyKCksIGZy
YW1lTG9hZFR5cGVGb3JSZWxvYWRPcHRpb25zKG9wdGlvbnMpLCAwLCBBbGxvd05hdmlnYXRpb25U
b0ludmFsaWRVUkw6OlllcywgTmF2aWdhdGlvblBvbGljeUNoZWNrOjpSZXF1aXJlLCBbXSB7IH0p
OworICAgIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIobG9hZGVyLnB0cigpLCBmcmFtZUxvYWRUeXBl
Rm9yUmVsb2FkT3B0aW9ucyhvcHRpb25zKSwgeyB9LCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRV
Ukw6OlllcywgTmF2aWdhdGlvblBvbGljeUNoZWNrOjpSZXF1aXJlLCBbXSB7IH0pOwogfQogCiB2
b2lkIEZyYW1lTG9hZGVyOjpzdG9wQWxsTG9hZGVycyhDbGVhclByb3Zpc2lvbmFsSXRlbVBvbGlj
eSBjbGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeSkKQEAgLTI4MzIsNyArMjgzMiw3IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmFkZEhUVFBVcGdyYWRlSW5zZWN1cmVSZXF1ZXN0c0lmTmVlZGVkKFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzCiAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhl
YWRlck5hbWU6OlVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RzLCBBU0NJSUxpdGVyYWwoIjEiKSk7CiB9
CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYg
cmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgRnJhbWVMb2FkVHlwZSBsb2FkVHlwZSwg
RXZlbnQqIGV2ZW50LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1
ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBG
cmFtZUxvYWRUeXBlIGxvYWRUeXBlLCBFdmVudCogZXZlbnQsIFJlZlB0cjxGb3JtU3RhdGU+JiYg
Zm9ybVN0YXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgU3RyaW5nIGZyYW1lTmFtZSA9IHJlcXVlc3QuZnJhbWVOYW1lKCk7CiAgICAgTG9j
a0hpc3RvcnkgbG9ja0hpc3RvcnkgPSByZXF1ZXN0LmxvY2tIaXN0b3J5KCk7CkBAIC0yODYxLDEz
ICsyODYxLDEzIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChGcmFtZUxvYWRS
ZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWZlCiAKICAgICBpZiAoIWZyYW1lTmFt
ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gVGhlIHNlYXJjaCBmb3IgYSB0YXJnZXQgZnJhbWUg
aXMgZG9uZSBlYXJsaWVyIGluIHRoZSBjYXNlIG9mIGZvcm0gc3VibWlzc2lvbi4KLSAgICAgICAg
aWYgKEZyYW1lKiB0YXJnZXRGcmFtZSA9IGZvcm1TdGF0ZSA/IDAgOiBmaW5kRnJhbWVGb3JOYXZp
Z2F0aW9uKGZyYW1lTmFtZSkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHRhcmdldEZyYW1lID0gZm9y
bVN0YXRlID8gbnVsbHB0ciA6IGZpbmRGcmFtZUZvck5hdmlnYXRpb24oZnJhbWVOYW1lKSkgewog
ICAgICAgICAgICAgdGFyZ2V0RnJhbWUtPmxvYWRlcigpLmxvYWRXaXRoTmF2aWdhdGlvbkFjdGlv
bih3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LCBhY3Rpb24sIGxvY2tIaXN0b3J5LCBsb2FkVHlwZSwg
V1RGTW92ZShmb3JtU3RhdGUpLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05ld1dpbmRvd1BvbGljeShXVEZNb3ZlKGFjdGlv
biksIFdURk1vdmUod29ya2luZ1Jlc291cmNlUmVxdWVzdCksIFdURk1vdmUoZm9ybVN0YXRlKSwg
ZnJhbWVOYW1lLCBbdGhpcywgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBvcGVuZXJQb2xp
Y3ksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBjb25zdCBT
dHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBTaG91bGRD
b250aW51ZSBzaG91bGRDb250aW51ZSkgewotICAgICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJO
ZXdXaW5kb3dQb2xpY3kocmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIGFjdGlvbiwgc2hv
dWxkQ29udGludWUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgb3BlbmVyUG9saWN5KTsK
KyAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmV3V2luZG93UG9saWN5KFdURk1vdmUoYWN0
aW9uKSwgV1RGTW92ZSh3b3JraW5nUmVzb3VyY2VSZXF1ZXN0KSwgV1RGTW92ZShmb3JtU3RhdGUp
LCBmcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBv
bGljeSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2Vha1B0cjxGb3JtU3RhdGU+JiYgZm9ybVN0
YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0
aW9uLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgeworICAgICAgICAgICAgY29udGlu
dWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kocmVxdWVzdCwgZm9ybVN0YXRlLmdldCgpLCBmcmFt
ZU5hbWUsIGFjdGlvbiwgc2hvdWxkQ29udGludWUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVS
TCwgb3BlbmVyUG9saWN5KTsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAg
ICAgIH0pOwogICAgICAgICByZXR1cm47CkBAIC0zNTQyLDcgKzM1NDIsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKEhpc3RvcnlJdGVtJiBpdGVtLCBGcmFt
ZUxvYWRUeXBlIGxvYQogICAgICAgICBkb2N1bWVudExvYWRlci0+c2V0VHJpZ2dlcmluZ0FjdGlv
bihXVEZNb3ZlKGFjdGlvbikpOwogCiAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXRMYXN0Q2hl
Y2tlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KCkpOwotICAgICAgICBsb2FkV2l0aERvY3VtZW50
TG9hZGVyKGRvY3VtZW50TG9hZGVyLCBsb2FkVHlwZSwgMCwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZh
bGlkVVJMOjpZZXMsIG5hdmlnYXRpb25Qb2xpY3lDaGVjaywgW10geyB9KTsKKyAgICAgICAgbG9h
ZFdpdGhEb2N1bWVudExvYWRlcihkb2N1bWVudExvYWRlciwgbG9hZFR5cGUsIHsgfSwgQWxsb3dO
YXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIG5hdmlnYXRpb25Qb2xpY3lDaGVjaywgW10geyB9
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzYzMCw3ICszNjMwLDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50SXRlbShIaXN0b3J5SXRlbSYgaXRlbSwg
RnJhbWVMb2FkVHlwZSBsb2EKIAogICAgIGFjdGlvbi5zZXRUYXJnZXRCYWNrRm9yd2FyZEl0ZW0o
aXRlbSk7CiAKLSAgICBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdCwgYWN0aW9uLCBM
b2NrSGlzdG9yeTo6Tm8sIGxvYWRUeXBlLCAwLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6
OlllcywgW10geyB9KTsKKyAgICBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdCwgYWN0
aW9uLCBMb2NrSGlzdG9yeTo6Tm8sIGxvYWRUeXBlLCB7IH0sIEFsbG93TmF2aWdhdGlvblRvSW52
YWxpZFVSTDo6WWVzLCBbXSB7IH0pOwogfQogCiAvLyBMb2FkcyBjb250ZW50IGludG8gdGhpcyBm
cmFtZSwgYXMgc3BlY2lmaWVkIGJ5IGhpc3RvcnkgaXRlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaAppbmRleCBmYmM3MmVjMTI0YWM1MDBlNzZiZWJlZjAxYThiMGQwNjI2ZDQyYWZhLi45
YmRiZjcxMjU0ZjE3MDBlNTljMGY0NzE3MWNkM2UyN2I2M2JjZTI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuaApAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEZJ
WE1FOiBUaGVzZSBhcmUgYWxsIGZ1bmN0aW9ucyB3aGljaCBzdGFydCBsb2Fkcy4gV2UgaGF2ZSB0
b28gbWFueS4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxvYWRVUkxJbnRvQ2hpbGRGcmFtZShj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVyZXIsIEZyYW1lKik7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBsb2FkRnJhbWVSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiwgRXZlbnQqLCBG
b3JtU3RhdGUqKTsgLy8gQ2FsbGVkIGJ5IHN1Ym1pdEZvcm0sIGNhbGxzIGxvYWRQb3N0UmVxdWVz
dCBhbmQgbG9hZFVSTC4KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxvYWRGcmFtZVJlcXVlc3Qo
RnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCosIFJlZlB0cjxGb3JtU3RhdGU+JiYpOyAvLyBDYWxs
ZWQgYnkgc3VibWl0Rm9ybSwgY2FsbHMgbG9hZFBvc3RSZXF1ZXN0IGFuZCBsb2FkVVJMLgogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkKEZyYW1lTG9hZFJlcXVlc3QmJik7CiAKQEAgLTM2
NCwxMyArMzY0LDEzIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHVybFNlbGVjdGVkKEZyYW1lTG9h
ZFJlcXVlc3QmJiwgRXZlbnQqKTsKIAotICAgIHZvaWQgbG9hZFdpdGhEb2N1bWVudExvYWRlcihE
b2N1bWVudExvYWRlciosIEZyYW1lTG9hZFR5cGUsIEZvcm1TdGF0ZSosIEFsbG93TmF2aWdhdGlv
blRvSW52YWxpZFVSTCwgTmF2aWdhdGlvblBvbGljeUNoZWNrLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOyAvLyBDYWxscyBjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kKKyAg
ICB2b2lkIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqLCBGcmFtZUxvYWRU
eXBlLCBSZWZQdHI8Rm9ybVN0YXRlPiYmLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIE5h
dmlnYXRpb25Qb2xpY3lDaGVjaywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsgLy8gQ2Fs
bHMgY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5CiAgICAgdm9pZCBsb2FkKERvY3Vt
ZW50TG9hZGVyKik7IC8vIENhbGxzIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIKIAotICAgIHZvaWQg
bG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IE5h
dmlnYXRpb25BY3Rpb24mLCBMb2NrSGlzdG9yeSwgRnJhbWVMb2FkVHlwZSwgRm9ybVN0YXRlKiwg
QWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OyAvLyBDYWxscyBsb2FkV2l0aERvY3VtZW50TG9hZGVyCisgICAgdm9pZCBsb2FkV2l0aE5hdmln
YXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgTmF2aWdhdGlvbkFjdGlv
biYsIExvY2tIaXN0b3J5LCBGcmFtZUxvYWRUeXBlLCBSZWZQdHI8Rm9ybVN0YXRlPiYmLCBBbGxv
d05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7IC8v
IENhbGxzIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIKIAotICAgIHZvaWQgbG9hZFBvc3RSZXF1ZXN0
KEZyYW1lTG9hZFJlcXVlc3QmJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgRnJhbWVMb2FkVHlw
ZSwgRXZlbnQqLCBGb3JtU3RhdGUqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAg
IHZvaWQgbG9hZFVSTChGcmFtZUxvYWRSZXF1ZXN0JiYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIs
IEZyYW1lTG9hZFR5cGUsIEV2ZW50KiwgRm9ybVN0YXRlKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKKyAgICB2b2lkIGxvYWRQb3N0UmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYsIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXIsIEZyYW1lTG9hZFR5cGUsIEV2ZW50KiwgUmVmUHRyPEZvcm1T
dGF0ZT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGxvYWRVUkwo
RnJhbWVMb2FkUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBGcmFtZUxvYWRUeXBl
LCBFdmVudCosIFJlZlB0cjxGb3JtU3RhdGU+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAKICAgICBib29sIHNob3VsZFJlbG9hZChjb25zdCBVUkwmIGN1cnJlbnRVUkwsIGNvbnN0
IFVSTCYgZGVzdGluYXRpb25VUkwpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdh
dGlvblNjaGVkdWxlci5jcHAKaW5kZXggYTlmYzM0NGI3NGY0MDk1MmFkMDlmMjliMjRjNTk3NmJm
NGM0MzA2Ny4uYjYxMTQwYWI3ZWU1ZTkxNDQ1MDg5M2JlODYwNDk5YThkNjA2YzFjYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcApAQCAtMjc0LDcg
KzI3NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgRnJhbWVMb2Fk
UmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgcmVxdWVzdGluZ0RvY3VtZW50LCByZXF1ZXN0aW5n
RG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKSwgeyB9LCB7IH0sIGxvY2tIaXN0b3J5KCksIGxvY2tC
YWNrRm9yd2FyZExpc3QoKSwgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52
YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIHNob3VsZE9wZW5FeHRl
cm5hbFVSTHMoKSwgaW5pdGlhdGVkQnlNYWluRnJhbWUoKSB9OwogICAgICAgICBtX3N1Ym1pc3Np
b24tPnBvcHVsYXRlRnJhbWVMb2FkUmVxdWVzdChmcmFtZUxvYWRSZXF1ZXN0KTsKLSAgICAgICAg
ZnJhbWUubG9hZGVyKCkubG9hZEZyYW1lUmVxdWVzdChXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3Qp
LCBtX3N1Ym1pc3Npb24tPmV2ZW50KCksICZtX3N1Ym1pc3Npb24tPnN0YXRlKCkpOworICAgICAg
ICBmcmFtZS5sb2FkZXIoKS5sb2FkRnJhbWVSZXF1ZXN0KFdURk1vdmUoZnJhbWVMb2FkUmVxdWVz
dCksIG1fc3VibWlzc2lvbi0+ZXZlbnQoKSwgbV9zdWJtaXNzaW9uLT50YWtlU3RhdGUoKSk7CiAg
ICAgfQogCiAgICAgdm9pZCBkaWRTdGFydFRpbWVyKEZyYW1lJiBmcmFtZSwgVGltZXImIHRpbWVy
KSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNr
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCmluZGV4IGI2
NjkwZWE5NjY1YTE1MTVjOTdhNjNhZGM5NDA3NzMyYjk4MTkxMjcuLjVmOTc1MWNiNmUzZTkwNDQw
YzA5MGVkOGY2Mjc4ZTBjMDU5OTU0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Qb2xpY3lDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hl
Y2tlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICogQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
IChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKgpAQCAtODEsNyArODEsNyBAQCBQb2xp
Y3lDaGVja2VyOjpQb2xpY3lDaGVja2VyKEZyYW1lJiBmcmFtZSkKIAogdm9pZCBQb2xpY3lDaGVj
a2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwg
Ym9vbCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9u
RnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKLSAgICBjaGVja05hdmlnYXRpb25Qb2xpY3koV1RGTW92
ZShuZXdSZXF1ZXN0KSwgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIG1fZnJhbWUubG9hZGVy
KCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSwgbnVsbHB0ciwgV1RGTW92ZShmdW5jdGlvbikpOwor
ICAgIGNoZWNrTmF2aWdhdGlvblBvbGljeShXVEZNb3ZlKG5ld1JlcXVlc3QpLCBkaWRSZWNlaXZl
UmVkaXJlY3RSZXNwb25zZSwgbV9mcmFtZS5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigp
LCB7IH0sIFdURk1vdmUoZnVuY3Rpb24pKTsKIH0KIAogQ29tcGxldGlvbkhhbmRsZXJDYWxsaW5n
U2NvcGUgUG9saWN5Q2hlY2tlcjo6ZXh0ZW5kQmxvYlVSTExpZmV0aW1lSWZOZWNlc3NhcnkoUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdApAQCAtOTgsNyArOTgsNyBAQCBDb21wbGV0aW9u
SGFuZGxlckNhbGxpbmdTY29wZSBQb2xpY3lDaGVja2VyOjpleHRlbmRCbG9iVVJMTGlmZXRpbWVJ
Zk5lY2Vzc2FyeShSZQogICAgIH0pOwogfQogCi12b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2
aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBib29sIGRpZFJlY2VpdmVS
ZWRpcmVjdFJlc3BvbnNlLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBGb3JtU3RhdGUqIGZvcm1T
dGF0ZSwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24mJiBmdW5jdGlvbiwgUG9saWN5
RGVjaXNpb25Nb2RlIHBvbGljeURlY2lzaW9uTW9kZSkKK3ZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hl
Y2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGJvb2wgZGlkUmVj
ZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlZlB0cjxGb3Jt
U3RhdGU+JiYgZm9ybVN0YXRlLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25GdW5jdGlvbiYmIGZ1
bmN0aW9uLCBQb2xpY3lEZWNpc2lvbk1vZGUgcG9saWN5RGVjaXNpb25Nb2RlKQogewogICAgIE5h
dmlnYXRpb25BY3Rpb24gYWN0aW9uID0gbG9hZGVyLT50cmlnZ2VyaW5nQWN0aW9uKCk7CiAgICAg
aWYgKGFjdGlvbi5pc0VtcHR5KCkpIHsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFBvbGljeUNo
ZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBi
b29sIGRpZFJlYwogICAgIC8vIERvbid0IGFzayBtb3JlIHRoYW4gb25jZSBmb3IgdGhlIHNhbWUg
cmVxdWVzdCBvciBpZiB3ZSBhcmUgbG9hZGluZyBhbiBlbXB0eSBVUkwuCiAgICAgLy8gVGhpcyBh
dm9pZHMgY29uZnVzaW9uIG9uIHRoZSBwYXJ0IG9mIHRoZSBjbGllbnQuCiAgICAgaWYgKGVxdWFs
SWdub3JpbmdIZWFkZXJGaWVsZHMocmVxdWVzdCwgbG9hZGVyLT5sYXN0Q2hlY2tlZFJlcXVlc3Qo
KSkgfHwgKCFyZXF1ZXN0LmlzTnVsbCgpICYmIHJlcXVlc3QudXJsKCkuaXNFbXB0eSgpKSkgewot
ICAgICAgICBmdW5jdGlvbihSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIG51bGxwdHIsIFNob3Vs
ZENvbnRpbnVlOjpZZXMpOworICAgICAgICBmdW5jdGlvbihSZXNvdXJjZVJlcXVlc3QocmVxdWVz
dCksIHsgfSwgU2hvdWxkQ29udGludWU6Olllcyk7CiAgICAgICAgIGxvYWRlci0+c2V0TGFzdENo
ZWNrZWRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9s
aWN5KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGJvb2wgZGlkUmVjCiAjZW5kaWYKICAgICAg
ICAgaWYgKGlzQmFja0ZvcndhcmRMb2FkVHlwZShtX2xvYWRUeXBlKSkKICAgICAgICAgICAgIG1f
bG9hZFR5cGUgPSBGcmFtZUxvYWRUeXBlOjpSZWxvYWQ7Ci0gICAgICAgIGZ1bmN0aW9uKFdURk1v
dmUocmVxdWVzdCksIG51bGxwdHIsIHNob3VsZENvbnRpbnVlID8gU2hvdWxkQ29udGludWU6Olll
cyA6IFNob3VsZENvbnRpbnVlOjpObyk7CisgICAgICAgIGZ1bmN0aW9uKFdURk1vdmUocmVxdWVz
dCksIHsgfSwgc2hvdWxkQ29udGludWUgPyBTaG91bGRDb250aW51ZTo6WWVzIDogU2hvdWxkQ29u
dGludWU6Ok5vKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM0LDcgKzEzNCw3IEBA
IHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIGJvb2wgZGlkUmVjCiAgICAgICAgICAgICAvLyByZXZlYWwgdGhhdCB0aGUg
ZnJhbWUgd2FzIGJsb2NrZWQuIFRoaXMgd2F5LCBpdCBsb29rcyBsaWtlIGFueSBvdGhlciBjcm9z
cy1vcmlnaW4gcGFnZSBsb2FkLgogICAgICAgICAgICAgbV9mcmFtZS5vd25lckVsZW1lbnQoKS0+
ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNl
LCBmYWxzZSkpOwogICAgICAgICB9Ci0gICAgICAgIGZ1bmN0aW9uKFdURk1vdmUocmVxdWVzdCks
IG51bGxwdHIsIFNob3VsZENvbnRpbnVlOjpObyk7CisgICAgICAgIGZ1bmN0aW9uKFdURk1vdmUo
cmVxdWVzdCksIHsgfSwgU2hvdWxkQ29udGludWU6Ok5vKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0
aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGJvb2wgZGlkUmVjCiAjaWYgVVNF
KFFVSUNLX0xPT0spCiAgICAgLy8gQWx3YXlzIGFsbG93IFF1aWNrTG9vay1nZW5lcmF0ZWQgVVJM
cyBiYXNlZCBvbiB0aGUgcHJvdG9jb2wgc2NoZW1lLgogICAgIGlmICghcmVxdWVzdC5pc051bGwo
KSAmJiBpc1F1aWNrTG9va1ByZXZpZXdVUkwocmVxdWVzdC51cmwoKSkpCi0gICAgICAgIHJldHVy
biBmdW5jdGlvbihXVEZNb3ZlKHJlcXVlc3QpLCBmb3JtU3RhdGUsIFNob3VsZENvbnRpbnVlOjpZ
ZXMpOworICAgICAgICByZXR1cm4gZnVuY3Rpb24oV1RGTW92ZShyZXF1ZXN0KSwgbWFrZVdlYWtQ
dHIoZm9ybVN0YXRlLmdldCgpKSwgU2hvdWxkQ29udGludWU6Olllcyk7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIFBvbGlj
eUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBib29sIGRpZFJlYwogCiAgICAgbV9kZWxlZ2F0ZUlzRGVjaWRpbmdOYXZpZ2F0aW9uUG9saWN5
ID0gdHJ1ZTsKICAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUgPSBhY3Rpb24uZG93bmxvYWRB
dHRyaWJ1dGUoKS5pc0VtcHR5KCkgPyBudWxsQXRvbSgpIDogYWN0aW9uLmRvd25sb2FkQXR0cmli
dXRlKCk7Ci0gICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24oYWN0aW9uLCByZXF1ZXN0LCBkaWRSZWNlaXZlUmVkaXJlY3RS
ZXNwb25zZSwgZm9ybVN0YXRlLCBwb2xpY3lEZWNpc2lvbk1vZGUsIFt0aGlzLCBmdW5jdGlvbiA9
IFdURk1vdmUoZnVuY3Rpb24pLCByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBm
b3JtU3RhdGUgPSBtYWtlUmVmUHRyKGZvcm1TdGF0ZSksIHN1Z2dlc3RlZEZpbGVuYW1lID0gV1RG
TW92ZShzdWdnZXN0ZWRGaWxlbmFtZSksIGJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiA9IFdURk1v
dmUoYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uKV0oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikg
bXV0YWJsZSB7CisgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24oYWN0aW9uLCByZXF1ZXN0LCBkaWRSZWNlaXZlUmVkaXJl
Y3RSZXNwb25zZSwgZm9ybVN0YXRlLmdldCgpLCBwb2xpY3lEZWNpc2lvbk1vZGUsIFt0aGlzLCBm
dW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pLCByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KHJl
cXVlc3QpLCBmb3JtU3RhdGUgPSBXVEZNb3ZlKGZvcm1TdGF0ZSksIHN1Z2dlc3RlZEZpbGVuYW1l
ID0gV1RGTW92ZShzdWdnZXN0ZWRGaWxlbmFtZSksIGJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiA9
IFdURk1vdmUoYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uKV0oUG9saWN5QWN0aW9uIHBvbGljeUFj
dGlvbikgbXV0YWJsZSB7CiAgICAgICAgIG1fZGVsZWdhdGVJc0RlY2lkaW5nTmF2aWdhdGlvblBv
bGljeSA9IGZhbHNlOwogCiAgICAgICAgIHN3aXRjaCAocG9saWN5QWN0aW9uKSB7CkBAIC0xODMs
MTUgKzE4MywxNSBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBib29sIGRpZFJlYwogICAgICAgICBjYXNlIFBvbGlj
eUFjdGlvbjo6VXNlOgogICAgICAgICAgICAgaWYgKCFtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgp
LmNhbkhhbmRsZVJlcXVlc3QocmVxdWVzdCkpIHsKICAgICAgICAgICAgICAgICBoYW5kbGVVbmlt
cGxlbWVudGFibGVQb2xpY3kobV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5jYW5ub3RTaG93VVJM
RXJyb3IocmVxdWVzdCkpOwotICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih7IH0sIG51
bGxwdHIsIFNob3VsZENvbnRpbnVlOjpObyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0
aW9uKHsgfSwgeyB9LCBTaG91bGRDb250aW51ZTo6Tm8pOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgcmV0dXJuIGZ1bmN0aW9uKFdURk1vdmUocmVxdWVzdCksIGZvcm1TdGF0ZS5nZXQoKSwg
U2hvdWxkQ29udGludWU6Olllcyk7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oV1RGTW92
ZShyZXF1ZXN0KSwgbWFrZVdlYWtQdHIoZm9ybVN0YXRlLmdldCgpKSwgU2hvdWxkQ29udGludWU6
Olllcyk7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfSk7
CiB9CiAKLXZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOZXdXaW5kb3dQb2xpY3koTmF2aWdhdGlv
bkFjdGlvbiYmIG5hdmlnYXRpb25BY3Rpb24sIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZv
cm1TdGF0ZSogZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgTmV3V2luZG93UG9s
aWN5RGVjaXNpb25GdW5jdGlvbiYmIGZ1bmN0aW9uKQordm9pZCBQb2xpY3lDaGVja2VyOjpjaGVj
a05ld1dpbmRvd1BvbGljeShOYXZpZ2F0aW9uQWN0aW9uJiYgbmF2aWdhdGlvbkFjdGlvbiwgUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVmUHRyPEZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUsIGNv
bnN0IFN0cmluZyYgZnJhbWVOYW1lLCBOZXdXaW5kb3dQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uJiYg
ZnVuY3Rpb24pCiB7CiAgICAgaWYgKG1fZnJhbWUuZG9jdW1lbnQoKSAmJiBtX2ZyYW1lLmRvY3Vt
ZW50KCktPmlzU2FuZGJveGVkKFNhbmRib3hQb3B1cHMpKQogICAgICAgICByZXR1cm4gZnVuY3Rp
b24oeyB9LCBudWxscHRyLCB7IH0sIHsgfSwgU2hvdWxkQ29udGludWU6Ok5vKTsKQEAgLTIwMSw3
ICsyMDEsNyBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmV3V2luZG93UG9saWN5KE5hdmln
YXRpb25BY3Rpb24mJiBuYXZpZ2F0aW9uQWN0aW9uLCBSZQogCiAgICAgYXV0byBibG9iVVJMTGlm
ZXRpbWVFeHRlbnNpb24gPSBleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeShyZXF1ZXN0
KTsKIAotICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24obmF2aWdhdGlvbkFjdGlvbiwgcmVxdWVzdCwgZm9ybVN0YXRlLCBm
cmFtZU5hbWUsIFtmcmFtZSA9IG1ha2VSZWYobV9mcmFtZSksIHJlcXVlc3QsIGZvcm1TdGF0ZSA9
IG1ha2VSZWZQdHIoZm9ybVN0YXRlKSwgZnJhbWVOYW1lLCBuYXZpZ2F0aW9uQWN0aW9uLCBmdW5j
dGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pLCBibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gPSBXVEZN
b3ZlKGJsb2JVUkxMaWZldGltZUV4dGVuc2lvbildKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24p
IG11dGFibGUgeworICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24obmF2aWdhdGlvbkFjdGlvbiwgcmVxdWVzdCwgZm9ybVN0
YXRlLmdldCgpLCBmcmFtZU5hbWUsIFtmcmFtZSA9IG1ha2VSZWYobV9mcmFtZSksIHJlcXVlc3Qs
IGZvcm1TdGF0ZSA9IFdURk1vdmUoZm9ybVN0YXRlKSwgZnJhbWVOYW1lLCBuYXZpZ2F0aW9uQWN0
aW9uLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pLCBibG9iVVJMTGlmZXRpbWVFeHRlbnNp
b24gPSBXVEZNb3ZlKGJsb2JVUkxMaWZldGltZUV4dGVuc2lvbildKFBvbGljeUFjdGlvbiBwb2xp
Y3lBY3Rpb24pIG11dGFibGUgewogICAgICAgICBzd2l0Y2ggKHBvbGljeUFjdGlvbikgewogICAg
ICAgICBjYXNlIFBvbGljeUFjdGlvbjo6RG93bmxvYWQ6CiAgICAgICAgICAgICBmcmFtZS0+bG9h
ZGVyKCkuY2xpZW50KCkuc3RhcnREb3dubG9hZChyZXF1ZXN0KTsKQEAgLTIxMyw3ICsyMTMsNyBA
QCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmV3V2luZG93UG9saWN5KE5hdmlnYXRpb25BY3Rp
b24mJiBuYXZpZ2F0aW9uQWN0aW9uLCBSZQogICAgICAgICAgICAgLy8gSXQgaXMgaW52YWxpZCB0
byBnZXQgYSAiU3VzcGVuZCIgcG9saWN5IGZvciBuZXcgd2luZG93cywgYXMgdGhlIG9sZCBkb2N1
bWVudCBpcyBub3QgZ29pbmcgYXdheS4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpVc2U6Ci0gICAgICAgICAgICBm
dW5jdGlvbihyZXF1ZXN0LCBmb3JtU3RhdGUuZ2V0KCksIGZyYW1lTmFtZSwgbmF2aWdhdGlvbkFj
dGlvbiwgU2hvdWxkQ29udGludWU6Olllcyk7CisgICAgICAgICAgICBmdW5jdGlvbihyZXF1ZXN0
LCBtYWtlV2Vha1B0cihmb3JtU3RhdGUuZ2V0KCkpLCBmcmFtZU5hbWUsIG5hdmlnYXRpb25BY3Rp
b24sIFNob3VsZENvbnRpbnVlOjpZZXMpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lD
aGVja2VyLmgKaW5kZXggYzMyOWVjNDNiODFlMzVlOGI3M2FiZTZlNjAxZDEzZDQyNTA4NTJhZi4u
OWYwNDg5NzM4MTkxOTM1YzMzZDljNzJjYjA1NTE4YTM3MDhmYThhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUG9saWN5Q2hlY2tlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzEs
NiArMzEsNyBAQAogCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIlJl
c291cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCkBAIC01
OSw4ICs2MCw4IEBAIGVudW0gY2xhc3MgU2hvdWxkQ29udGludWUgewogCiBlbnVtIGNsYXNzIFBv
bGljeURlY2lzaW9uTW9kZSB7IFN5bmNocm9ub3VzLCBBc3luY2hyb25vdXMgfTsKIAotdXNpbmcg
TmV3V2luZG93UG9saWN5RGVjaXNpb25GdW5jdGlvbiA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRm9ybVN0YXRlKiwgY29uc3QgU3RyaW5nJiBmcmFtZU5h
bWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBTaG91bGRDb250aW51ZSk+OwotdXNpbmcgTmF2
aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24gPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
c291cmNlUmVxdWVzdCYmLCBGb3JtU3RhdGUqLCBTaG91bGRDb250aW51ZSk+OwordXNpbmcgTmV3
V2luZG93UG9saWN5RGVjaXNpb25GdW5jdGlvbiA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgV2Vha1B0cjxGb3JtU3RhdGU+JiYsIGNvbnN0IFN0cmluZyYg
ZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgU2hvdWxkQ29udGludWUpPjsKK3Vz
aW5nIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9uID0gQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZXNvdXJjZVJlcXVlc3QmJiwgV2Vha1B0cjxGb3JtU3RhdGU+JiYsIFNob3VsZENvbnRp
bnVlKT47CiAKIGNsYXNzIFBvbGljeUNoZWNrZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFBvbGljeUNoZWNrZXIpOwpAQCAtNjgsOSArNjksOSBAQCBjbGFzcyBQb2xpY3lDaGVja2VyIHsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBQb2xpY3lDaGVja2VyKEZyYW1lJik7CiAKLSAgICB2b2lk
IGNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiwgYm9vbCBkaWRSZWNlaXZl
UmVkaXJlY3RSZXNwb25zZSwgRG9jdW1lbnRMb2FkZXIqLCBGb3JtU3RhdGUqLCBOYXZpZ2F0aW9u
UG9saWN5RGVjaXNpb25GdW5jdGlvbiYmLCBQb2xpY3lEZWNpc2lvbk1vZGUgPSBQb2xpY3lEZWNp
c2lvbk1vZGU6OkFzeW5jaHJvbm91cyk7CisgICAgdm9pZCBjaGVja05hdmlnYXRpb25Qb2xpY3ko
UmVzb3VyY2VSZXF1ZXN0JiYsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIERvY3Vt
ZW50TG9hZGVyKiwgUmVmUHRyPEZvcm1TdGF0ZT4mJiwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9u
RnVuY3Rpb24mJiwgUG9saWN5RGVjaXNpb25Nb2RlID0gUG9saWN5RGVjaXNpb25Nb2RlOjpBc3lu
Y2hyb25vdXMpOwogICAgIHZvaWQgY2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVz
dCYmLCBib29sIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlLCBOYXZpZ2F0aW9uUG9saWN5RGVj
aXNpb25GdW5jdGlvbiYmKTsKLSAgICB2b2lkIGNoZWNrTmV3V2luZG93UG9saWN5KE5hdmlnYXRp
b25BY3Rpb24mJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIEZvcm1TdGF0ZSosIGNvbnN0IFN0cmluZyYg
ZnJhbWVOYW1lLCBOZXdXaW5kb3dQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uJiYpOworICAgIHZvaWQg
Y2hlY2tOZXdXaW5kb3dQb2xpY3koTmF2aWdhdGlvbkFjdGlvbiYmLCBSZXNvdXJjZVJlcXVlc3Qm
JiwgUmVmUHRyPEZvcm1TdGF0ZT4mJiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIE5ld1dpbmRv
d1BvbGljeURlY2lzaW9uRnVuY3Rpb24mJik7CiAKICAgICB2b2lkIHN0b3BDaGVjaygpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggMzZl
Zjc5ZmVjMmMyYTg0ODUxMGUzOTBjZjIxN2MxNTY2ZmU4YWMwNS4uOGNkODQxODNkMGFmNWMwNmI1
ZGFhZWFhZjlkOWMwNzcyYTU1ODViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4
dE1lbnVDb250cm9sbGVyLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIHN0YXRpYyB2b2lkIG9wZW5O
ZXdXaW5kb3coY29uc3QgVVJMJiB1cmxUb0xvYWQsIEZyYW1lJiBmcmFtZSwgU2hvdWxkT3BlbkV4
dGVybmFsCiAgICAgaWYgKCFuZXdQYWdlKQogICAgICAgICByZXR1cm47CiAgICAgbmV3UGFnZS0+
Y2hyb21lKCkuc2hvdygpOwotICAgIG5ld1BhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmxvYWRG
cmFtZVJlcXVlc3QoV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgbnVsbHB0ciwgbnVsbHB0cik7
CisgICAgbmV3UGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkubG9hZEZyYW1lUmVxdWVzdChXVEZN
b3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCBudWxscHRyLCB7IH0pOwogfQogCiAjaWYgUExBVEZPUk0o
R1RLKQpAQCAtMzk3LDcgKzM5Nyw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250
ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24sIGNvCiAgICAgICAg
IGlmIChGcmFtZSogdGFyZ2V0RnJhbWUgPSBtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLnRhcmdl
dEZyYW1lKCkpIHsKICAgICAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3Qg
eyBtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmFic29sdXRlTGlua1VSTCgpLCBmcmFtZS0+bG9h
ZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpIH07CiAgICAgICAgICAgICBGcmFtZUxvYWRSZXF1ZXN0
IGZyYW1lTG9hZFJlcXVlc3QgeyAqZnJhbWUtPmRvY3VtZW50KCksIGZyYW1lLT5kb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpLCByZXNvdXJjZVJlcXVlc3QsIHsgfSwgTG9ja0hpc3Rvcnk6Ok5v
LCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdh
dGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6U3VwcHJlc3MsIHRh
cmdldEZyYW1lLT5pc01haW5GcmFtZSgpID8gU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6
U2hvdWxkQWxsb3cgOiBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxv
dywgSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVua25vd24gfTsKLSAgICAgICAgICAgIHRhcmdldEZy
YW1lLT5sb2FkZXIoKS5sb2FkRnJhbWVSZXF1ZXN0KFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCks
IG51bGxwdHIsIG51bGxwdHIpOworICAgICAgICAgICAgdGFyZ2V0RnJhbWUtPmxvYWRlcigpLmxv
YWRGcmFtZVJlcXVlc3QoV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgbnVsbHB0ciwgIHsgfSk7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgb3Blbk5ld1dpbmRvdyhtX2NvbnRleHQuaGl0
VGVzdFJlc3VsdCgpLmFic29sdXRlTGlua1VSTCgpLCAqZnJhbWUsIFNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3k6OlNob3VsZEFsbG93KTsKICAgICAgICAgYnJlYWs7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>