<?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>230527</bug_id>
          
          <creation_ts>2021-09-20 17:57:20 -0700</creation_ts>
          <short_desc>Drop remaining uses of makeRefPtr() in WebCore/</short_desc>
          <delta_ts>2021-09-20 22:16:17 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pangle</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1795376</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-20 17:57:20 -0700</bug_when>
    <thetext>Drop remaining uses of makeRefPtr() in WebCore/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795379</commentid>
    <comment_count>1</comment_count>
      <attachid>438762</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-20 18:05:49 -0700</bug_when>
    <thetext>Created attachment 438762
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795381</commentid>
    <comment_count>2</comment_count>
      <attachid>438763</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-20 18:19:42 -0700</bug_when>
    <thetext>Created attachment 438763
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795384</commentid>
    <comment_count>3</comment_count>
      <attachid>438766</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-20 18:34:26 -0700</bug_when>
    <thetext>Created attachment 438766
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795386</commentid>
    <comment_count>4</comment_count>
      <attachid>438767</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-20 18:37:24 -0700</bug_when>
    <thetext>Created attachment 438767
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795409</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-20 22:15:12 -0700</bug_when>
    <thetext>Committed r282799 (241931@main): &lt;https://commits.webkit.org/241931@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 438767.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795410</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-20 22:16:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/83339876&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438762</attachid>
            <date>2021-09-20 18:05:49 -0700</date>
            <delta_ts>2021-09-20 18:22:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230527-20210920180549.patch</filename>
            <type>text/plain</type>
            <size>143268</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzM3YWUwMDY5ZWQ3OWYw
ZTYyMzVkYTQwNTRlYzM0MGVlMzIzYjgyMy4uM2Q1YmViY2NmZTcyYjk4N2JlNGIwOTU0ZTM1ZTMz
YWY0NDk4ZGJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwMyBAQAorMjAyMS0wOS0yMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgcmVtYWluaW5nIHVz
ZXMgb2YgbWFrZVJlZlB0cigpIGluIFdlYkNvcmUvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA1MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHA6CisgICAg
ICAgICogaHRtbC9EaXJlY3RvcnlGaWxlTGlzdENyZWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yOjpzdGFydCk6CisgICAgICAgICogaHRtbC9GVFBE
aXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGVFBEaXJlY3RvcnlEb2N1
bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUpOgorICAgICAgICAqIGh0bWwvRmlsZUlu
cHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjphcHBlbmRGb3Jt
RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpkaXNhYmxlZFN0
YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjphdHRyaWJ1dGVD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmZpbGVzQ2hvc2VuKToK
KyAgICAgICAgKiBodG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRGV0YWlsc0VsZW1lbnQ6OmlzQWN0aXZlU3VtbWFyeSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRGV0YWlsc0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBo
dG1sL0hUTUxEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnQ6Om5h
bWVkSXRlbSk6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRWxlbWVudDo6ZWRpdGFiaWxpdHlGcm9tQ29udGVudEVkaXRhYmxlQXR0cik6Cisg
ICAgICAgIChXZWJDb3JlOjppbWFnZU92ZXJsYXlIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxFbGVtZW50Ojppc0luc2lkZUltYWdlT3ZlcmxheSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RWxlbWVudDo6dXBkYXRlV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdCk6CisgICAgICAgICogaHRt
bC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVycyk6CisgICAgICAgICogaHRtbC9IVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5kRm9ybUFz
c29jaWF0ZWRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uOjpjdXN0b21FbGVtZW50QWZ0ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVudENhY2hlIGNvbnN0KToK
KyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRm9ybUVsZW1lbnQ6On5IVE1MRm9ybUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEZvcm1FbGVtZW50OjpsZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1F
bGVtZW50OjpzdWJtaXRJZlBvc3NpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxl
bWVudDo6dGV4dEZpZWxkVmFsdWVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3Jt
RWxlbWVudDo6ZWZmZWN0aXZlVGFyZ2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxG
b3JtRWxlbWVudDo6ZWxlbWVudEZyb21QYXN0TmFtZXNNYXAgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZvcm1FbGVtZW50Ojpjb3B5QXNzb2NpYXRlZEVsZW1lbnRzVmVjdG9yIGNvbnN0
KToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZyYW1lU2V0RWxlbWVudDo6bmFtZWRJdGVtKToKKyAgICAgICAgKiBodG1sL0hU
TUxIdG1sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSHRtbEVsZW1lbnQ6Omlu
c2VydGVkQnlQYXJzZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpiZXN0Rml0U291cmNlRnJvbVBpY3R1
cmVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmV2YWx1YXRl
RHluYW1pY01lZGlhUXVlcnlEZXBlbmRlbmNpZXMpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBodG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Zmlyc3RFbGVtZW50V2l0aElkSWZMYWJlbGFibGUpOgorICAgICAgICAq
IGh0bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExlZ2Vu
ZEVsZW1lbnQ6OmZvcm0gY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6c2V0Q1NTU3R5bGVTaGVldCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmli
dXRlVVJMcyBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVRleHRUcmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpsYXlvdXRTaXplQ2hhbmdlZCk6Cisg
ICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
aG91bGRCZUV4cG9zZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6OmFw
cGVuZEZvcm1EYXRhKToKKyAgICAgICAgKiBodG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdEdyb3VwRWxlbWVudDo6cmVjYWxjU2VsZWN0T3B0aW9u
cyk6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6YmluZGluZ3NJbnN0YW5jZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6aXNSZXBsYWNlbWVudE9ic2N1cmVkKToKKyAgICAgICAg
KiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6aXNJbWFnZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6d2lsbERldGFjaFJlbmRlcmVycyk6CisgICAgICAgICogaHRt
bC9IVE1MU2xvdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNsb3RFbGVtZW50
OjphdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTbG90RWxlbWVudDo6
YXNzaWduZWROb2RlcyBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MU291cmNlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU291cmNlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUp
OgorICAgICAgICAqIGh0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MU3R5bGVFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMgY29uc3QpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpmaW5kUm93cyk6CisgICAgICAgICogaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6Om1lZGlhRWxlbWVudCBjb25zdCk6CisgICAg
ICAgICogaHRtbC9MaW5rSWNvbkNvbGxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaW5r
SWNvbkNvbGxlY3Rvcjo6aWNvbnNPZlR5cGVzKToKKyAgICAgICAgKiBodG1sL01lZGlhRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEb2N1bWVudFBhcnNlcjo6Y3JlYXRlRG9j
dW1lbnRTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEb2N1bWVudDo6ZGVmYXVs
dEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURvY3VtZW50OjpyZXBsYWNl
TWVkaWFFbGVtZW50VGltZXJGaXJlZCk6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNz
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzRWxlbWVudFJlY3RNb3N0bHlJbk1haW5GcmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjppc0VsZW1lbnRMYXJnZVJlbGF0aXZlVG9NYWluRnJhbWUp
OgorICAgICAgICAqIGh0bWwvUGx1Z2luRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGx1Z2luRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsdWdpbkRvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyk6CisgICAgICAgICog
aHRtbC9TdWJtaXRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VibWl0SW5wdXRU
eXBlOjpoYW5kbGVET01BY3RpdmF0ZUV2ZW50KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQ6OndvdWxkVGFpbnRPcmlnaW4pOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpDYW52YXNTdHlsZSk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiZWdpblF1ZXJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEluZGV4ZWRQYXJhbWV0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmdldFBhcmFtZXRlcik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFBhcmFtZXRlcik6CisgICAgICAgICogaHRtbC9w
YXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZVJlcGFyZW50VGFzayk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlVGFrZUFsbENoaWxkcmVu
QW5kUmVwYXJlbnRUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRl
OjpkaXNwYXRjaERvY3VtZW50RWxlbWVudEF2YWlsYWJsZUlmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpmaW5kRm9zdGVyU2l0ZSk6CisgICAgICAgICog
aHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRv
a2VuUHJlbG9hZFNjYW5uZXI6OlN0YXJ0VGFnU2Nhbm5lcjo6cHJvY2Vzc0F0dHJpYnV0ZSk6Cisg
ICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlhTU0F1ZGl0b3JEZWxlZ2F0ZTo6Z2VuZXJhdGVWaW9sYXRpb25SZXBvcnQpOgorICAg
ICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRs
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudDo6
cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaEZpZWxkUmVzdWx0
c0J1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAqIGh0bWwvc2hh
ZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFBs
YWNlaG9sZGVyRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFBsYWNlaG9sZGVyRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3Rvcik6CisgICAgICAg
ICogaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OnVwZGF0ZUdlbmVyaWNDdWUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5iYW5kR2VuZXJpY1RleHRUcmFjazo6cmVtb3ZlR2VuZXJpY0N1ZSk6CisgICAg
ICAgICogaHRtbC90cmFjay9UZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRy
YWNrOjphZGRDdWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjphZGRSZWdpb24pOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2V0RW11bGF0ZWRNZWRpYSk6CisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6dHJ5TG9hZGluZ1JlZGlyZWN0UmVxdWVzdEZyb21BcHBsaWNhdGlvbkNhY2hlKToKKyAg
ICAgICAgKiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9y
bVN1Ym1pc3Npb246OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkVVJMKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9yVGhpc0ZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzY3JvbGxUb0ZyYWdtZW50V2l0aFBhcmVudEJvdW5kYXJ5
KToKKyAgICAgICAgKiBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6Okhpc3RvcnlDb250cm9sbGVyOjpyZXN0b3JlU2Nyb2xsUG9zaXRp
b25BbmRWaWV3U3RhdGUpOgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNw
cDoKKyAgICAgICAgKiBsb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OlN1YmZyYW1lTG9hZGVyOjpsb2FkT3JSZWRpcmVjdFN1YmZyYW1lKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICogcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250
cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmlubmVyV2lkdGggY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpyZXF1ZXN0SWRsZUNhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVdpbmRvdzo6Y2FuY2VsSWRsZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVdpbmRvdzo6bGFuZ3VhZ2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3c6OmRpc3BhdGNoTG9hZEV2ZW50KToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjp0cnlUb1VwZGF0ZURyb3Bw
ZWRJbWFnZVBsYWNlaG9sZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6
aW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzQXRDYXJldCk6CisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQ29udHJvbGxlcjo6ZmluYWxpemVEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcik6CisgICAg
ICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9kZVRvU2Vs
ZWN0T25Nb3VzZURvd25Gb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmV4cGFuZFNlbGVjdGlv
blRvUmVzcGVjdFNlbGVjdE9uTW91c2VEb3duKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6Y2FuTW91c2VEb3duU3RhcnRTZWxlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OnNjaGVkdWxlU2Nyb2xsRXZlbnQpOgorICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Nyb2xsVG9GcmFnbWVudElu
dGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Nyb2xsVG9Gb2N1c2VkRWxl
bWVudEludGVybmFsKToKKyAgICAgICAgKiBwYWdlL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6c2VsZWN0aW9uUXVh
ZHNEaWRDaGFuZ2UpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyZXBsYWNlUmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJlcGxhY2VSYW5nZXNX
aXRoVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRFZGl0YWJsZVJlZ2lvbkVuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZWRpdGFibGVFbGVtZW50c0luUmVjdCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpkb0FmdGVyVXBkYXRlUmVuZGVyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmRpZEZpbmlzaExvYWRpbmdJbWFnZUZvckVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXBkYXRlRWxlbWVudHNXaXRoVGV4dFJlY29n
bml0aW9uUmVzdWx0cyk6CisgICAgICAgICogcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDb2xvclNhbXBsZXI6OnNhbXBsZVRvcCk6CisgICAgICAgICog
cGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRl
ckxvY2tDb250cm9sbGVyOjplbnF1ZXVlRXZlbnQpOgorICAgICAgICAqIHBhZ2UvVGV4dEluZGlj
YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFu
Z2UpOgorICAgICAgICAqIHBhZ2UvVW5kb01hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VW5kb01hbmFnZXI6OmFkZEl0ZW0pOgorICAgICAgICAqIHBhZ2UvaW9zL0V2ZW50SGFuZGxlcklP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6Zm9jdXNEb2N1bWVudFZpZXcp
OgorICAgICAgICAqIHBhZ2UvaW9zL0ZyYW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6bm9k
ZUlzTW91c2VGb2N1c2FibGUpOgorICAgICAgICAqIHBhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6Zm9jdXNEb2N1bWVudFZpZXcpOgor
ICAgICAgICAqIHBhZ2UvbWFjL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXJNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZU92ZXJsYXlDb250cm9sbGVyOjp1cGRhdGVEYXRhRGV0ZWN0b3JIaWdo
bGlnaHRzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3ZlcmxheUNvbnRyb2xsZXI6OnBsYXRm
b3JtSGFuZGxlTW91c2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJsYXlDb250
cm9sbGVyOjpoYW5kbGVEYXRhRGV0ZWN0b3JBY3Rpb24pOgorICAgICAgICAqIHBhZ2UvbWFjL1Nl
cnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092
ZXJsYXlDb250cm9sbGVyOjpidWlsZFNlbGVjdGlvbkhpZ2hsaWdodCk6CisgICAgICAgICogcGxh
dGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVi
b2FyZEN1c3RvbURhdGE6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNldExvZ2dlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0TG9nZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0TG9nZ2VyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJz
ZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qzo6c2V0TG9nZ2VyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c2V0TG9nZ2VyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjptYWtlV2ViS2l0VHJhY2spOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJFbGVtZW50OjpzZWxlY3Rpb25Qc2V1ZG9TdHlsZSBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVJT1M6OnBhaW50TWV0ZXIpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZUV2ZW50RGlzcGF0
Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNw
YXRjaFNlc3Npb25TdG9yYWdlRXZlbnRzVG9GcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3Rv
cmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHNUb0ZyYW1lcyk6
CisgICAgICAgICogc3R5bGUvU3R5bGVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6U2NvcGU6Om1ha2VSZXNvbHZlclNoYXJpbmdLZXkpOgorICAgICAgICAqIHN2Zy9TVkdBRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFu
ZGxlcik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudEJhc2U6OnN0YXJ0QW5pbWF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50QmFzZTo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1
ZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpoYXNWYWxpZEF0dHJpYnV0ZVR5cGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OnN0YXJ0
QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Ojpj
YWxjdWxhdGVBbmltYXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rp
b25FbGVtZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCk6CisgICAgICAgICogc3ZnL1NWR0RvY3Vt
ZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lv
bnM6OnRha2VFbGVtZW50RnJvbVBlbmRpbmdSZXNvdXJjZXNGb3JSZW1vdmFsTWFwKToKKyAgICAg
ICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojpy
ZW1vdmVFbGVtZW50UmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnNl
dENvcnJlc3BvbmRpbmdFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnJl
c29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojpjb21wdXRl
ZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnVwZGF0ZVJlbGF0aXZlTGVu
Z3Roc0luZm9ybWF0aW9uKToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6
YnVpbGQgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAg
ICAqIHN2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxp
Z2h0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RUxpZ2h0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVj
dWxhckxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVNwZWN1bGFy
TGlnaHRpbmdFbGVtZW50OjpidWlsZCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnZhbGlk
YXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRGYWNlRWxlbWVudDo6cmVidWlsZEZv
bnRGYWNlKToKKyAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KToKKyAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZvbnRGYWNlVXJpRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAg
KiBzdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAqIHN2Zy9T
VkdMZW5ndGhDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aENvbnRleHQ6
OmRldGVybWluZVZpZXdwb3J0IGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpmcmFtZUZvckN1cnJlbnRTY2Fs
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpkZXNlbGVjdEFsbCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50Ojpsb2NhbENvb3JkaW5hdGVTcGFjZVRy
YW5zZm9ybSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpnZXRFbGVt
ZW50QnlJZCk6CisgICAgICAgICogc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdTdHlsZUVsZW1lbnQ6OnNldERpc2FibGVkKToKKyAgICAgICAgKiBzdmcvU1ZH
VFJlZkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFJlZkVsZW1lbnQ6OmRldGFj
aFRhcmdldCk6CisgICAgICAgICogc3ZnL1NWR1RyYW5zZm9ybUxpc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVHJhbnNmb3JtTGlzdDo6Y29uc29saWRhdGUpOgorICAgICAgICAqIHN2Zy9T
VkdVc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnRyYW5z
ZmVyU2l6ZUF0dHJpYnV0ZXNUb1RhcmdldENsb25lIGNvbnN0KToKKyAgICAgICAgKiBzdmcvYW5p
bWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVt
ZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxl
bWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVs
ZW1lbnQ6OmNvbm5lY3RDb25kaXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVt
ZW50OjpkaXNjb25uZWN0Q29uZGl0aW9ucyk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpzZXRDb250YWluZXJTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ltYWdlOjpyZXBvcnRBcHByb3hpbWF0ZU1lbW9yeUNvc3QgY29uc3QpOgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVJ
bWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9T
VkdQcm9wZXJ0eUFuaW1hdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eUFuaW1h
dG9yOjpjb21wdXRlQ1NTUHJvcGVydHlWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQcm9wZXJ0eUFuaW1hdG9yOjpjb21wdXRlSW5oZXJpdGVkQ1NTUHJvcGVydHlWYWx1ZSBjb25z
dCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpjaGFuZ2VTZWxlY3Rpb25MaXN0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OmNoYW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5nKToKKwogMjAyMS0wOS0yMCAgUm9z
cyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCBidWlsZCBmaXggZm9yIFdpbkNhaXJvIHdpdGggRU5BQkxFX0VYUEVSSU1FTlRBTF9GRUFUVVJF
UyBvZmYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50SW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludEltYWdlLmNwcAppbmRleCBlMzAw
NzdmNWFiYTAwN2M5NzRjZDBkNzg5YWYyNTg2NWIwZmY2YTY2Li43ZTczM2IzZWRkZTRkZjljZTIz
ODI5Nzk2ZDNkZDZiZWVlYmI1NmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1
c3RvbVBhaW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRJ
bWFnZS5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjbGVhckVs
ZW1lbnQoKSBvdmVycmlkZSB7IH0KIAotICAgIFJlZlB0cjxDU1NTdHlsZVZhbHVlPiBnZXQoY29u
c3QgU3RyaW5nJiBwcm9wZXJ0eSkgY29uc3QgZmluYWwgeyByZXR1cm4gbWFrZVJlZlB0cihtX21h
cC5nZXQocHJvcGVydHkpKTsgfQorICAgIFJlZlB0cjxDU1NTdHlsZVZhbHVlPiBnZXQoY29uc3Qg
U3RyaW5nJiBwcm9wZXJ0eSkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9tYXAuZ2V0KHByb3BlcnR5
KTsgfQogCiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxDU1NTdHlsZVZhbHVlPj4gbV9tYXA7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EaXJlY3RvcnlGaWxlTGlzdENy
ZWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EaXJlY3RvcnlGaWxlTGlzdENyZWF0b3Iu
Y3BwCmluZGV4IDEwOGEyODA4YTM0OGY0OGI1ZGI2YTY1OTI3ZWFiMzc0YWJkZTBmMDAuLjlkM2Rh
MTg1M2MzYTYzMjBmZWIzMTk3NTE2MmU0MzVhZTkzZmZkZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5jcHAKQEAgLTEwNSw3ICsxMDUsNyBA
QCBEaXJlY3RvcnlGaWxlTGlzdENyZWF0b3I6OkRpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvcihDb21w
bGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpbwogdm9pZCBEaXJlY3RvcnlGaWxlTGlzdENyZWF0b3I6
OnN0YXJ0KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUlu
Zm8+JiBwYXRocykKIHsKICAgICAvLyBSZXNvbHZlIGRpcmVjdG9yaWVzIG9uIGEgYmFja2dyb3Vu
ZCB0aHJlYWQgdG8gYXZvaWQgYmxvY2tpbmcgdGhlIG1haW4gdGhyZWFkLgotICAgIG1fd29ya1F1
ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGRvY3Vt
ZW50ID0gbWFrZVJlZlB0cihkb2N1bWVudCksIHBhdGhzID0gY3Jvc3NUaHJlYWRDb3B5KHBhdGhz
KV0oKSBtdXRhYmxlIHsKKyAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBkb2N1bWVudCA9IFJlZlB0ciB7IGRvY3VtZW50IH0sIHBh
dGhzID0gY3Jvc3NUaHJlYWRDb3B5KHBhdGhzKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBm
aWxlcyA9IGdhdGhlckZpbGVJbmZvcm1hdGlvbihwYXRocyk7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBkb2N1
bWVudCA9IFdURk1vdmUoZG9jdW1lbnQpLCBmaWxlcyA9IGNyb3NzVGhyZWFkQ29weShmaWxlcyld
KCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0
ZDo6ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFuZGxlciwgbnVsbHB0cikpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCmluZGV4IGY5ZDE0MmVkYmI4YzY4Zjhm
N2UyZWNhYjlmMDgxMmMwMDkzNWMyYWIuLjc1MjMwMTdiYTcyOTQwNTYzYjc1ZjQ2NmE2OGVkMWNj
YjNkZWU4YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQu
Y3BwCkBAIC0yOTksNyArMjk5LDcgQEAgYm9vbCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6
bG9hZERvY3VtZW50VGVtcGxhdGUoKQogCiAgICAgYXV0byYgZG9jdW1lbnQgPSAqdGhpcy0+ZG9j
dW1lbnQoKTsKIAotICAgIGF1dG8gZm91bmRFbGVtZW50ID0gbWFrZVJlZlB0cihkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChTdHJpbmcoImZ0cERpcmVjdG9yeVRhYmxlIl9zKSkpOworICAgIFJlZlB0
ciBmb3VuZEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChTdHJpbmdWaWV3IHsgImZ0
cERpcmVjdG9yeVRhYmxlIl9zIH0pOwogICAgIGlmICghZm91bmRFbGVtZW50KQogICAgICAgICBM
T0dfRVJST1IoIlVuYWJsZSB0byBmaW5kIGVsZW1lbnQgYnkgaWQgXCJmdHBEaXJlY3RvcnlUYWJs
ZVwiIGluIHRoZSB0ZW1wbGF0ZSBkb2N1bWVudC4iKTsKICAgICBlbHNlIGlmICghaXM8SFRNTFRh
YmxlRWxlbWVudD4oZm91bmRFbGVtZW50KSkKQEAgLTMxNCw3ICszMTQsNyBAQCBib29sIEZUUERp
cmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSgpCiAKICAgICAvLyBJ
ZiB3ZSBkaWRuJ3QgZmluZCB0aGUgdGFibGUgZWxlbWVudCwgbGV0cyB0cnkgdG8gYXBwZW5kIG91
ciBvd24gdG8gdGhlIGJvZHkuCiAgICAgLy8gSWYgdGhhdCBmYWlscyBmb3Igc29tZSByZWFzb24s
IGNyYW0gaXQgb24gdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQgYXMgYSBsYXN0IGRpdGNoIGVmZm9y
dC4KLSAgICBpZiAoYXV0byBib2R5ID0gbWFrZVJlZlB0cihkb2N1bWVudC5ib2R5T3JGcmFtZXNl
dCgpKSkKKyAgICBpZiAoUmVmUHRyIGJvZHkgPSBkb2N1bWVudC5ib2R5T3JGcmFtZXNldCgpKQog
ICAgICAgICBib2R5LT5hcHBlbmRDaGlsZCgqbV90YWJsZUVsZW1lbnQpOwogICAgIGVsc2UKICAg
ICAgICAgZG9jdW1lbnQuYXBwZW5kQ2hpbGQoKm1fdGFibGVFbGVtZW50KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IGJiYzBmMTIyYjUzZjVmMjMzM2ZiNjY2Y2E1ZWIz
YWIzYWZjM2FkMzkuLmUwZmY1Mzk2M2I1NzBjYjFkZmZkMzA0OTE5Y2RhZjdjNGExMzc0MDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIHZv
aWQgRmlsZUlucHV0VHlwZTo6cmVzdG9yZUZvcm1Db250cm9sU3RhdGUoY29uc3QgRm9ybUNvbnRy
b2xTdGF0ZSYgc3RhdGUpCiBib29sIEZpbGVJbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRhKERPTUZv
cm1EYXRhJiBmb3JtRGF0YSwgYm9vbCBtdWx0aXBhcnQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGVs
ZW1lbnQoKSk7Ci0gICAgYXV0byBmaWxlTGlzdCA9IG1ha2VSZWZQdHIoZWxlbWVudCgpLT5maWxl
cygpKTsKKyAgICBSZWZQdHIgZmlsZUxpc3QgPSBlbGVtZW50KCktPmZpbGVzKCk7CiAgICAgQVNT
RVJUKGZpbGVMaXN0KTsKIAogICAgIGF1dG8gbmFtZSA9IGVsZW1lbnQoKS0+bmFtZSgpOwpAQCAt
MjkxLDcgKzI5MSw3IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6ZGlzYWJsZWRTdGF0ZUNoYW5nZWQo
KQogICAgIGlmICghcm9vdCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGlmIChhdXRvIGJ1
dHRvbiA9IG1ha2VSZWZQdHIoY2hpbGRyZW5PZlR5cGU8VXBsb2FkQnV0dG9uRWxlbWVudD4oKnJv
b3QpLmZpcnN0KCkpKQorICAgIGlmIChSZWZQdHIgYnV0dG9uID0gY2hpbGRyZW5PZlR5cGU8VXBs
b2FkQnV0dG9uRWxlbWVudD4oKnJvb3QpLmZpcnN0KCkpCiAgICAgICAgIGJ1dHRvbi0+c2V0Qm9v
bGVhbkF0dHJpYnV0ZShkaXNhYmxlZEF0dHIsIGVsZW1lbnQoKS0+aXNEaXNhYmxlZEZvcm1Db250
cm9sKCkpOwogfQogCkBAIC0zMDEsNyArMzAxLDcgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjphdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiAgICAgICAgIGlmIChhdXRv
KiBlbGVtZW50ID0gdGhpcy0+ZWxlbWVudCgpKSB7CiAgICAgICAgICAgICBBU1NFUlQoZWxlbWVu
dC0+c2hhZG93Um9vdCgpKTsKICAgICAgICAgICAgIGlmIChhdXRvIHJvb3QgPSBlbGVtZW50LT51
c2VyQWdlbnRTaGFkb3dSb290KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBidXR0b24g
PSBtYWtlUmVmUHRyKGNoaWxkcmVuT2ZUeXBlPFVwbG9hZEJ1dHRvbkVsZW1lbnQ+KCpyb290KS5m
aXJzdCgpKSkKKyAgICAgICAgICAgICAgICBpZiAoUmVmUHRyIGJ1dHRvbiA9IGNoaWxkcmVuT2ZU
eXBlPFVwbG9hZEJ1dHRvbkVsZW1lbnQ+KCpyb290KS5maXJzdCgpKQogICAgICAgICAgICAgICAg
ICAgICBidXR0b24tPnNldFZhbHVlKGVsZW1lbnQtPm11bHRpcGxlKCkgPyBmaWxlQnV0dG9uQ2hv
b3NlTXVsdGlwbGVGaWxlc0xhYmVsKCkgOiBmaWxlQnV0dG9uQ2hvb3NlRmlsZUxhYmVsKCkpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00MzYsNyArNDM2LDcgQEAgdm9pZCBGaWxlSW5w
dXRUeXBlOjpmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHBh
dGhzLCBjb25zdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9kaXJlY3RvcnlGaWxl
TGlzdENyZWF0b3IgPSBEaXJlY3RvcnlGaWxlTGlzdENyZWF0b3I6OmNyZWF0ZShbdGhpcywgd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIGljb24gPSBtYWtlUmVmUHRyKGljb24pXShSZWY8
RmlsZUxpc3Q+JiYgZmlsZUxpc3QpIG11dGFibGUgeworICAgIG1fZGlyZWN0b3J5RmlsZUxpc3RD
cmVhdG9yID0gRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yOjpjcmVhdGUoW3RoaXMsIHdlYWtUaGlz
ID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBpY29uID0gUmVmUHRyIHsgaWNvbiB9XShSZWY8RmlsZUxp
c3Q+JiYgZmlsZUxpc3QpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCmluZGV4IDMwYjM1Nzk0ODRlMTQ1ZDZl
MDA3NmU3ZmVhMDI2ZWE4OGZjZWYyMWUuLjVlNDFiNDkyNDE2YTM5NDBlZDZkZTEzMTJhMzE1MzNl
ZGQ4MTc5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAK
QEAgLTEyMiw3ICsxMjIsNyBAQCBib29sIEhUTUxEZXRhaWxzRWxlbWVudDo6aXNBY3RpdmVTdW1t
YXJ5KGNvbnN0IEhUTUxTdW1tYXJ5RWxlbWVudCYgc3VtbWFyeSkgY29ucwogICAgIGlmIChzdW1t
YXJ5LnBhcmVudE5vZGUoKSAhPSB0aGlzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBh
dXRvIHNsb3QgPSBtYWtlUmVmUHRyKHNoYWRvd1Jvb3QoKS0+ZmluZEFzc2lnbmVkU2xvdChzdW1t
YXJ5KSk7CisgICAgUmVmUHRyIHNsb3QgPSBzaGFkb3dSb290KCktPmZpbmRBc3NpZ25lZFNsb3Qo
c3VtbWFyeSk7CiAgICAgaWYgKCFzbG90KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0
dXJuIHNsb3QgPT0gbV9zdW1tYXJ5U2xvdDsKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIEhUTUxE
ZXRhaWxzRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QgQXRvbVN0cgogICAgICAgICBib29sIG9sZFZhbHVlID0gbV9pc09wZW47CiAgICAgICAg
IG1faXNPcGVuID0gIXZhbHVlLmlzTnVsbCgpOwogICAgICAgICBpZiAob2xkVmFsdWUgIT0gbV9p
c09wZW4pIHsKLSAgICAgICAgICAgIGF1dG8gcm9vdCA9IG1ha2VSZWZQdHIoc2hhZG93Um9vdCgp
KTsKKyAgICAgICAgICAgIFJlZlB0ciByb290ID0gc2hhZG93Um9vdCgpOwogICAgICAgICAgICAg
QVNTRVJUKHJvb3QpOwogICAgICAgICAgICAgaWYgKG1faXNPcGVuKQogICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZENoaWxkKCptX2RlZmF1bHRTbG90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERv
Y3VtZW50LmNwcAppbmRleCAwNzNiMmJjMzllNDBiYTBlZmRkOTY5YjY3NDZmMjU1YWI3ZmNiZDRk
Li40MTYzMzBjYjY0MDc1MDI2MWJmYTY0NTc3NDM0YWQyYjFjZjdkY2QzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRG9jdW1lbnQuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgc3RkOjpvcHRpb25hbDxW
YXJpYW50PFJlZlB0cjxXaW5kb3dQcm94eT4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxD
b2xsZWN0aW8KIAogICAgIGF1dG8mIGVsZW1lbnQgPSAqZG9jdW1lbnROYW1lZEl0ZW0oKm5hbWUu
aW1wbCgpKTsKICAgICBpZiAoVU5MSUtFTFkoaXM8SFRNTElGcmFtZUVsZW1lbnQ+KGVsZW1lbnQp
KSkgewotICAgICAgICBpZiAoYXV0byBkb21XaW5kb3cgPSBtYWtlUmVmUHRyKGRvd25jYXN0PEhU
TUxJRnJhbWVFbGVtZW50PihlbGVtZW50KS5jb250ZW50V2luZG93KCkpKQorICAgICAgICBpZiAo
UmVmUHRyIGRvbVdpbmRvdyA9IGRvd25jYXN0PEhUTUxJRnJhbWVFbGVtZW50PihlbGVtZW50KS5j
b250ZW50V2luZG93KCkpCiAgICAgICAgICAgICByZXR1cm4gVmFyaWFudDxSZWZQdHI8V2luZG93
UHJveHk+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+IHsgV1RGTW92
ZShkb21XaW5kb3cpIH07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmlu
ZGV4IDg5Yjk5ZTRlNjNkNzJmOGE3OWRkYjFhZTM5YmE5Y2IxYWUwNTEzOTMuLjM0MTA0YjU5ZjAx
ZjMyMmUxNDJmY2MwYjg5ZDdkNzQ1NGM5ZDkyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuY3BwCkBAIC00NTIsNyArNDUyLDcgQEAgTm9kZTo6RWRpdGFiaWxpdHkgSFRNTEVsZW1lbnQ6
OmVkaXRhYmlsaXR5RnJvbUNvbnRlbnRFZGl0YWJsZUF0dHIoY29uc3QgTm9kZSYgbm8KICAgICAg
ICAgfQogICAgIH0KIAotICAgIGF1dG8gY29udGFpbmluZ1NoYWRvd1Jvb3QgPSBtYWtlUmVmUHRy
KG5vZGUuY29udGFpbmluZ1NoYWRvd1Jvb3QoKSk7CisgICAgUmVmUHRyIGNvbnRhaW5pbmdTaGFk
b3dSb290IHsgbm9kZS5jb250YWluaW5nU2hhZG93Um9vdCgpIH07CiAgICAgaWYgKGNvbnRhaW5p
bmdTaGFkb3dSb290ICYmIGNvbnRhaW5pbmdTaGFkb3dSb290LT5tb2RlKCkgPT0gU2hhZG93Um9v
dE1vZGU6OlVzZXJBZ2VudCkKICAgICAgICAgcmV0dXJuIEVkaXRhYmlsaXR5OjpSZWFkT25seTsK
IApAQCAtMTI3NSw3ICsxMjc1LDcgQEAgc3RhdGljIFJlZlB0cjxIVE1MRWxlbWVudD4gaW1hZ2VP
dmVybGF5SG9zdChjb25zdCBOb2RlJiBub2RlKQogICAgIGlmICghaXM8SFRNTEVsZW1lbnQ+KGhv
c3QpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gZWxlbWVudCA9IG1ha2VS
ZWZQdHIoZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCpob3N0KSk7CisgICAgUmVmUHRyIGVsZW1lbnQg
PSBkb3duY2FzdDxIVE1MRWxlbWVudD4oKmhvc3QpOwogICAgIHJldHVybiBlbGVtZW50LT5oYXNJ
bWFnZU92ZXJsYXkoKSA/IGVsZW1lbnQgOiBudWxscHRyOwogfQogCkBAIC0xMjg2LDcgKzEyODYs
NyBAQCBib29sIEhUTUxFbGVtZW50Ojppc0ltYWdlT3ZlcmxheURhdGFEZXRlY3RvclJlc3VsdCgp
IGNvbnN0CiAKIGJvb2wgSFRNTEVsZW1lbnQ6OmlzSW5zaWRlSW1hZ2VPdmVybGF5KGNvbnN0IFNp
bXBsZVJhbmdlJiByYW5nZSkKIHsKLSAgICBhdXRvIGNvbW1vbkFuY2VzdG9yID0gbWFrZVJlZlB0
cihjb21tb25JbmNsdXNpdmVBbmNlc3RvcjxDb21wb3NlZFRyZWU+KHJhbmdlKSk7CisgICAgUmVm
UHRyIGNvbW1vbkFuY2VzdG9yID0gY29tbW9uSW5jbHVzaXZlQW5jZXN0b3I8Q29tcG9zZWRUcmVl
PihyYW5nZSk7CiAgICAgaWYgKCFjb21tb25BbmNlc3RvcikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCkBAIC0xNTg2LDcgKzE1ODYsNyBAQCB2b2lkIEhUTUxFbGVtZW50Ojp1cGRhdGVXaXRoVGV4
dFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYgcgogICAgIH0K
ICNlbmRpZiAvLyBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCiAKLSAgICBpZiAoYXV0byBmcmFtZSA9
IG1ha2VSZWZQdHIoZG9jdW1lbnQoKS5mcmFtZSgpKSkKKyAgICBpZiAoUmVmUHRyIGZyYW1lID0g
ZG9jdW1lbnQoKS5mcmFtZSgpKQogICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuc2NoZWR1
bGVDdXJzb3JVcGRhdGUoKTsKIAogICAgIGlmIChjYWNoZVRleHRSZWNvZ25pdGlvblJlc3VsdHMg
PT0gQ2FjaGVUZXh0UmVjb2duaXRpb25SZXN1bHRzOjpZZXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDczNmY4MWM5NzAwNmEwNTkw
YWJlMjZlODRkMGNlZmYyYjUxMzViMTguLmEyNjYyYTY1MGYyY2Q4ODQ2NjIzZDBjNjEwODc2NzA3
ZWJjYmQzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVt
ZW50LmNwcApAQCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6
ZGlkQXR0YWNoUmVuZGVyZXJzKCkKICAgICAgICAgc2V0QXV0b2ZvY3VzZWQoKTsKIAogICAgICAg
ICBSZWZQdHI8SFRNTEZvcm1Db250cm9sRWxlbWVudD4gZWxlbWVudCA9IHRoaXM7Ci0gICAgICAg
IGF1dG8gZnJhbWVWaWV3ID0gbWFrZVJlZlB0cihkb2N1bWVudCgpLnZpZXcoKSk7CisgICAgICAg
IFJlZlB0ciBmcmFtZVZpZXcgPSBkb2N1bWVudCgpLnZpZXcoKTsKICAgICAgICAgaWYgKGZyYW1l
VmlldyAmJiBmcmFtZVZpZXctPmxheW91dENvbnRleHQoKS5pc0luTGF5b3V0KCkpIHsKICAgICAg
ICAgICAgIGZyYW1lVmlldy0+cXVldWVQb3N0TGF5b3V0Q2FsbGJhY2soW2VsZW1lbnRdIHsKICAg
ICAgICAgICAgICAgICBlbGVtZW50LT5mb2N1cyh7IFNlbGVjdGlvblJlc3RvcmF0aW9uTW9kZTo6
UGxhY2VDYXJldEF0U3RhcnQgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCmluZGV4IGFiNmJkZDQ4ZDEyMjM3YjUyYWViZWM4N2U5
ZWIwZGQxOTcyNTc1OWEuLmUzNWRiMDA5NTJlMTZkNmZiMzU5YzMzYmIxZDZhMzNmNzk2ZDllODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b24uY3BwCkBAIC02OSw3ICs2OSw3IEBAIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8UmFk
aW9Ob2RlTGlzdD4sIFJlZlB0cjxFbGVtZW50Pj4+IEhUTUxGb3JtQ29udHJvbHNDCiBzdGF0aWMg
dW5zaWduZWQgZmluZEZvcm1Bc3NvY2lhdGVkRWxlbWVudChjb25zdCBWZWN0b3I8V2Vha1B0cjxI
VE1MRWxlbWVudD4+JiBlbGVtZW50cywgY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZWxlbWVudHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
YXV0byBjdXJyZW50RWxlbWVudCA9IG1ha2VSZWZQdHIoZWxlbWVudHNbaV0uZ2V0KCkpOworICAg
ICAgICBSZWZQdHIgY3VycmVudEVsZW1lbnQgPSBlbGVtZW50c1tpXS5nZXQoKTsKICAgICAgICAg
QVNTRVJUKGN1cnJlbnRFbGVtZW50KTsKICAgICAgICAgYXV0byogYXNzb2NpYXRlZEVsZW1lbnQg
PSBjdXJyZW50RWxlbWVudC0+YXNGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKTsKICAgICAgICAgQVNT
RVJUKGFzc29jaWF0ZWRFbGVtZW50KTsKQEAgLTkyLDcgKzkyLDcgQEAgSFRNTEVsZW1lbnQqIEhU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpjdXN0b21FbGVtZW50QWZ0ZXIoRWxlbWVudCogY3Vy
cmVudCkgY28KICAgICAgICAgc3RhcnQgPSBmaW5kRm9ybUFzc29jaWF0ZWRFbGVtZW50KGVsZW1l
bnRzLCAqY3VycmVudCkgKyAxOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gc3RhcnQ7IGkgPCBl
bGVtZW50cy5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvIGVsZW1lbnQgPSBtYWtlUmVmUHRy
KGVsZW1lbnRzW2ldLmdldCgpKTsKKyAgICAgICAgUmVmUHRyIGVsZW1lbnQgPSBlbGVtZW50c1tp
XS5nZXQoKTsKICAgICAgICAgQVNTRVJUKGVsZW1lbnQpOwogICAgICAgICBBU1NFUlQoZWxlbWVu
dC0+YXNGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKSk7CiAgICAgICAgIGlmIChlbGVtZW50LT5hc0Zv
cm1Bc3NvY2lhdGVkRWxlbWVudCgpLT5pc0VudW1lcmF0YWJsZSgpKSB7CkBAIC0xMjAsNyArMTIw
LDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50
Q2FjaGUoKSBjb25zdAogCiAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQg
c2NyaXB0RGlzYWxsb3dlZFNjb3BlOwogICAgIGZvciAoYXV0byYgd2Vha0VsZW1lbnQgOiBvd25l
ck5vZGUoKS51bnNhZmVBc3NvY2lhdGVkRWxlbWVudHMoKSkgewotICAgICAgICBhdXRvIGVsZW1l
bnQgPSBtYWtlUmVmUHRyKHdlYWtFbGVtZW50LmdldCgpKTsKKyAgICAgICAgUmVmUHRyIGVsZW1l
bnQgeyB3ZWFrRWxlbWVudC5nZXQoKSB9OwogICAgICAgICBBU1NFUlQoZWxlbWVudCk7CiAgICAg
ICAgIGF1dG8qIGFzc29jaWF0ZWRFbGVtZW50ID0gZWxlbWVudC0+YXNGb3JtQXNzb2NpYXRlZEVs
ZW1lbnQoKTsKICAgICAgICAgQVNTRVJUKGFzc29jaWF0ZWRFbGVtZW50KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCA2NDk0M2ZmMmUxZmUxMzU4MjY1NWQ1NWM0
YjgzNTBkYmVmYjJkNWFiLi44OWRlYzVlODczZTk5NWJmYzJhZWE4ZjZlNzgyYzAxNWYwMTc5ZjVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC05Myw3ICs5Myw3
IEBAIEhUTUxGb3JtRWxlbWVudDo6fkhUTUxGb3JtRWxlbWVudCgpCiAKICAgICBtX2RlZmF1bHRC
dXR0b24gPSBudWxscHRyOwogICAgIGZvciAoYXV0byYgd2Vha0VsZW1lbnQgOiBtX2Fzc29jaWF0
ZWRFbGVtZW50cykgewotICAgICAgICBhdXRvIGVsZW1lbnQgPSBtYWtlUmVmUHRyKHdlYWtFbGVt
ZW50LmdldCgpKTsKKyAgICAgICAgUmVmUHRyIGVsZW1lbnQgeyB3ZWFrRWxlbWVudC5nZXQoKSB9
OwogICAgICAgICBBU1NFUlQoZWxlbWVudCk7CiAgICAgICAgIGF1dG8qIGFzc29jaWF0ZWRFbGVt
ZW50ID0gZWxlbWVudC0+YXNGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKTsKICAgICAgICAgQVNTRVJU
KGFzc29jaWF0ZWRFbGVtZW50KTsKQEAgLTE1OSw3ICsxNTksNyBAQCB1bnNpZ25lZCBIVE1MRm9y
bUVsZW1lbnQ6Omxlbmd0aCgpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gMDsKICAg
ICBmb3IgKGF1dG8mIHdlYWtFbGVtZW50IDogbV9hc3NvY2lhdGVkRWxlbWVudHMpIHsKLSAgICAg
ICAgYXV0byBlbGVtZW50ID0gbWFrZVJlZlB0cih3ZWFrRWxlbWVudC5nZXQoKSk7CisgICAgICAg
IFJlZlB0ciBlbGVtZW50IHsgd2Vha0VsZW1lbnQuZ2V0KCkgfTsKICAgICAgICAgQVNTRVJUKGVs
ZW1lbnQpOwogICAgICAgICBhdXRvKiBhc3NvY2lhdGVkRWxlbWVudCA9IGVsZW1lbnQtPmFzRm9y
bUFzc29jaWF0ZWRFbGVtZW50KCk7CiAgICAgICAgIEFTU0VSVChhc3NvY2lhdGVkRWxlbWVudCk7
CkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnN1Ym1pdElmUG9zc2li
bGUoRXZlbnQqIGV2ZW50LCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBzdWIKIAogICAgIGJvb2wg
c2hvdWxkVmFsaWRhdGUgPSBkb2N1bWVudCgpLnBhZ2UoKSAmJiBkb2N1bWVudCgpLnBhZ2UoKS0+
c2V0dGluZ3MoKS5pbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uRW5hYmxlZCgpICYmICFub1ZhbGlk
YXRlKCk7CiAgICAgaWYgKHNob3VsZFZhbGlkYXRlKSB7Ci0gICAgICAgIGF1dG8gc3VibWl0RWxl
bWVudCA9IG1ha2VSZWZQdHIoc3VibWl0dGVyID8gc3VibWl0dGVyIDogZmluZFN1Ym1pdHRlcihl
dmVudCkpOworICAgICAgICBSZWZQdHIgc3VibWl0RWxlbWVudCA9IHN1Ym1pdHRlciA/IHN1Ym1p
dHRlciA6IGZpbmRTdWJtaXR0ZXIoZXZlbnQpOwogICAgICAgICBpZiAoc3VibWl0RWxlbWVudCAm
JiBzdWJtaXRFbGVtZW50LT5mb3JtTm9WYWxpZGF0ZSgpKQogICAgICAgICAgICAgc2hvdWxkVmFs
aWRhdGUgPSBmYWxzZTsKICAgICB9CkBAIC0zNDEsNyArMzQxLDcgQEAgU3RyaW5nUGFpclZlY3Rv
ciBIVE1MRm9ybUVsZW1lbnQ6OnRleHRGaWVsZFZhbHVlcygpIGNvbnN0CiAgICAgU3RyaW5nUGFp
clZlY3RvciByZXN1bHQ7CiAgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9hc3Nv
Y2lhdGVkRWxlbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIHdlYWtFbGVtZW50IDogbV9h
c3NvY2lhdGVkRWxlbWVudHMpIHsKLSAgICAgICAgYXV0byBlbGVtZW50ID0gbWFrZVJlZlB0cih3
ZWFrRWxlbWVudC5nZXQoKSk7CisgICAgICAgIFJlZlB0ciBlbGVtZW50IHsgd2Vha0VsZW1lbnQu
Z2V0KCkgfTsKICAgICAgICAgaWYgKCFpczxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBhdXRvJiBpbnB1dCA9IGRvd25jYXN0PEhUTUxJ
bnB1dEVsZW1lbnQ+KCplbGVtZW50KTsKQEAgLTcxNiw3ICs3MTYsNyBAQCBTdHJpbmcgSFRNTEZv
cm1FbGVtZW50Ojp0YXJnZXQoKSBjb25zdAogCiBTdHJpbmcgSFRNTEZvcm1FbGVtZW50OjplZmZl
Y3RpdmVUYXJnZXQoY29uc3QgRXZlbnQqIGV2ZW50LCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBv
dmVycmlkZVN1Ym1pdHRlcikgY29uc3QKIHsKLSAgICBpZiAoYXV0byBzdWJtaXR0ZXIgPSBtYWtl
UmVmUHRyKG92ZXJyaWRlU3VibWl0dGVyID8gb3ZlcnJpZGVTdWJtaXR0ZXIgOiBmaW5kU3VibWl0
dGVyKGV2ZW50KSkpIHsKKyAgICBpZiAoUmVmUHRyIHN1Ym1pdHRlciA9IG92ZXJyaWRlU3VibWl0
dGVyID8gb3ZlcnJpZGVTdWJtaXR0ZXIgOiBmaW5kU3VibWl0dGVyKGV2ZW50KSkgewogICAgICAg
ICBhdXRvIHRhcmdldFZhbHVlID0gc3VibWl0dGVyLT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKGZvcm10YXJnZXRBdHRyKTsKICAgICAgICAgaWYgKCF0YXJnZXRWYWx1ZS5pc051bGwo
KSkKICAgICAgICAgICAgIHJldHVybiB0YXJnZXRWYWx1ZTsKQEAgLTgzOCw3ICs4MzgsNyBAQCBS
ZWZQdHI8SFRNTEVsZW1lbnQ+IEhUTUxGb3JtRWxlbWVudDo6ZWxlbWVudEZyb21QYXN0TmFtZXNN
YXAoY29uc3QgQXRvbVN0cmluZyYgcAogICAgIGF1dG8gd2Vha0VsZW1lbnQgPSBtX3Bhc3ROYW1l
c01hcC5nZXQocGFzdE5hbWUpOwogICAgIGlmICghd2Vha0VsZW1lbnQpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIGF1dG8gZWxlbWVudCA9IG1ha2VSZWZQdHIod2Vha0VsZW1lbnQuZ2V0
KCkpOworICAgIFJlZlB0ciBlbGVtZW50IHsgd2Vha0VsZW1lbnQuZ2V0KCkgfTsKICNpZiBBU1NF
UlRfRU5BQkxFRAogICAgIGFzc2VydEl0ZW1DYW5CZUluUGFzdE5hbWVzTWFwKGVsZW1lbnQtPmFz
Rm9ybU5hbWVkSXRlbSgpKTsKICNlbmRpZgpAQCAtOTMwLDcgKzkzMCw3IEBAIGNvbnN0IFZlY3Rv
cjxXZWFrUHRyPEhUTUxFbGVtZW50Pj4mIEhUTUxGb3JtRWxlbWVudDo6dW5zYWZlQXNzb2NpYXRl
ZEVsZW1lbnRzKCkKIFZlY3RvcjxSZWY8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Pj4gSFRNTEZvcm1F
bGVtZW50Ojpjb3B5QXNzb2NpYXRlZEVsZW1lbnRzVmVjdG9yKCkgY29uc3QKIHsKICAgICByZXR1
cm4gV1RGOjptYXAobV9hc3NvY2lhdGVkRWxlbWVudHMsIFtdIChhdXRvJiB3ZWFrRWxlbWVudCkg
ewotICAgICAgICBhdXRvIGVsZW1lbnQgPSBtYWtlUmVmUHRyKHdlYWtFbGVtZW50LmdldCgpKTsK
KyAgICAgICAgUmVmUHRyIGVsZW1lbnQgeyB3ZWFrRWxlbWVudC5nZXQoKSB9OwogICAgICAgICBB
U1NFUlQoZWxlbWVudCk7CiAgICAgICAgIGF1dG8qIGZvcm1Bc3NvY2lhdGVkRWxlbWVudCA9IGVs
ZW1lbnQtPmFzRm9ybUFzc29jaWF0ZWRFbGVtZW50KCk7CiAgICAgICAgIEFTU0VSVChmb3JtQXNz
b2NpYXRlZEVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVTZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVu
dC5jcHAKaW5kZXggZGMzMjczMjgyMmRkOTA3YTc1MDE2YTdlMDE3ZWE1ZjhlNDg1NjRlMS4uNjIz
N2Y1MmVmYTZkZWM5ZmZmYTZjNzg3OTA1ZGUwNTgyMGNkZjQ3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBI
VE1MRnJhbWVTZXRFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlIHJlbW92
YWxUeXBlLCBDb250YWluZXIKIAogV2luZG93UHJveHkqIEhUTUxGcmFtZVNldEVsZW1lbnQ6Om5h
bWVkSXRlbShjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQogewotICAgIGF1dG8gZnJhbWVFbGVtZW50
ID0gbWFrZVJlZlB0cihjaGlsZHJlbigpLT5uYW1lZEl0ZW0obmFtZSkpOworICAgIFJlZlB0ciBm
cmFtZUVsZW1lbnQgPSBjaGlsZHJlbigpLT5uYW1lZEl0ZW0obmFtZSk7CiAgICAgaWYgKCFpczxI
VE1MRnJhbWVFbGVtZW50PihmcmFtZUVsZW1lbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1lbnQuY3BwCmluZGV4IDY1MTc0Yjg3Yzkw
NDkxNWJlOWQ5ODdiMjYyNzM5NmMzNzhiNDM4MzEuLmI3ZWY1ZWZiNTMxOTMzNTkwYzg4YzMzOTJl
MTMyYjc0Nzc1YjNkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEh0bWxF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIdG1sRWxlbWVudC5jcHAK
QEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBIVE1MSHRtbEVsZW1lbnQ6Omluc2VydGVkQnlQYXJzZXIo
KQogICAgIGlmICghZG9jdW1lbnQoKS5mcmFtZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBh
dXRvIGRvY3VtZW50TG9hZGVyID0gbWFrZVJlZlB0cihkb2N1bWVudCgpLmZyYW1lKCktPmxvYWRl
cigpLmRvY3VtZW50TG9hZGVyKCkpOworICAgIFJlZlB0ciBkb2N1bWVudExvYWRlciA9IGRvY3Vt
ZW50KCkuZnJhbWUoKS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIWRvY3Vt
ZW50TG9hZGVyKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUVsZW1lbnQuY3BwCmluZGV4IDM1ZmViNWVlYWU1ZDQ0OTc0MTY1NzcyY2NjOTYwMzQ3NmZmMzI1
MjUuLmM4M2ZkMjlkMGJhY2MzZjIxMDIyZGFhNTg4ZjQ3YmQ5OTdmYWEzOWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQg
SFRNTEltYWdlRWxlbWVudDo6c2V0QmVzdEZpdFVSTEFuZERQUkZyb21JbWFnZUNhbmRpZGF0ZShj
b25zdCBJbWFnZUNhbmRpZGF0CiAKIEltYWdlQ2FuZGlkYXRlIEhUTUxJbWFnZUVsZW1lbnQ6OmJl
c3RGaXRTb3VyY2VGcm9tUGljdHVyZUVsZW1lbnQoKQogewotICAgIGF1dG8gcGljdHVyZSA9IG1h
a2VSZWZQdHIocGljdHVyZUVsZW1lbnQoKSk7CisgICAgUmVmUHRyIHBpY3R1cmUgPSBwaWN0dXJl
RWxlbWVudCgpOwogICAgIGlmICghcGljdHVyZSkKICAgICAgICAgcmV0dXJuIHsgfTsKIApAQCAt
MjA2LDcgKzIwNiw3IEBAIEltYWdlQ2FuZGlkYXRlIEhUTUxJbWFnZUVsZW1lbnQ6OmJlc3RGaXRT
b3VyY2VGcm9tUGljdHVyZUVsZW1lbnQoKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9CiAKLSAgICAgICAgYXV0byBkb2N1bWVudEVsZW1lbnQgPSBtYWtlUmVmUHRyKGRvY3Vt
ZW50KCkuZG9jdW1lbnRFbGVtZW50KCkpOworICAgICAgICBSZWZQdHIgZG9jdW1lbnRFbGVtZW50
ID0gZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKTsKICAgICAgICAgTWVkaWFRdWVyeUV2YWx1
YXRvciBldmFsdWF0b3IgeyBkb2N1bWVudCgpLnByaW50aW5nKCkgPyAicHJpbnQiIDogInNjcmVl
biIsIGRvY3VtZW50KCksIGRvY3VtZW50RWxlbWVudCA/IGRvY3VtZW50RWxlbWVudC0+Y29tcHV0
ZWRTdHlsZSgpIDogbnVsbHB0ciB9OwogICAgICAgICBhdXRvKiBxdWVyaWVzID0gc291cmNlLnBh
cnNlZE1lZGlhQXR0cmlidXRlKGRvY3VtZW50KCkpOwogICAgICAgICBMT0coTWVkaWFRdWVyaWVz
LCAiSFRNTEltYWdlRWxlbWVudCAlcCBiZXN0Rml0U291cmNlRnJvbVBpY3R1cmVFbGVtZW50IGV2
YWx1YXRpbmcgbWVkaWEgcXVlcmllcyIsIHRoaXMpOwpAQCAtMjMwLDcgKzIzMCw3IEBAIEltYWdl
Q2FuZGlkYXRlIEhUTUxJbWFnZUVsZW1lbnQ6OmJlc3RGaXRTb3VyY2VGcm9tUGljdHVyZUVsZW1l
bnQoKQogCiB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmV2YWx1YXRlRHluYW1pY01lZGlhUXVlcnlE
ZXBlbmRlbmNpZXMoKQogewotICAgIGF1dG8gZG9jdW1lbnRFbGVtZW50ID0gbWFrZVJlZlB0cihk
b2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpKTsKKyAgICBSZWZQdHIgZG9jdW1lbnRFbGVtZW50
ID0gZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKTsKICAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9y
IGV2YWx1YXRvciB7IGRvY3VtZW50KCkucHJpbnRpbmcoKSA/ICJwcmludCIgOiAic2NyZWVuIiwg
ZG9jdW1lbnQoKSwgZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50LT5jb21wdXRlZFN0
eWxlKCkgOiBudWxscHRyIH07CiAKICAgICBpZiAoIWV2YWx1YXRvci5ldmFsdWF0ZUZvckNoYW5n
ZXMobV9tZWRpYVF1ZXJ5RHluYW1pY1Jlc3VsdHMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKaW5kZXggYTgwMjUyZTg3ZDM2ZDFlNTQ4MTU0OWE4ZDY1YmRiZTk5OTJi
N2M1YS4uMWI5YjJlMWIyMjFlMGZlM2FhZjZhNWUyMDI5NDU5YjQwMzQzNzIzNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xMjQ3LDcgKzEyNDcsNyBAQCB2
b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQmIGV2ZW50KQog
ICAgICAgICAgICAgZGlzcGF0Y2hGb3JtQ29udHJvbENoYW5nZUV2ZW50KCk7CiAKICAgICAgICAg
Ly8gRm9ybSBtYXkgbmV2ZXIgaGF2ZSBiZWVuIHByZXNlbnQsIG9yIG1heSBoYXZlIGJlZW4gZGVz
dHJveWVkIGJ5IGNvZGUgcmVzcG9uZGluZyB0byB0aGUgY2hhbmdlIGV2ZW50LgotICAgICAgICBp
ZiAoYXV0byBmb3JtRWxlbWVudCA9IG1ha2VSZWZQdHIoZm9ybSgpKSkKKyAgICAgICAgaWYgKFJl
ZlB0ciBmb3JtRWxlbWVudCA9IGZvcm0oKSkKICAgICAgICAgICAgIGZvcm1FbGVtZW50LT5zdWJt
aXRJbXBsaWNpdGx5KGV2ZW50LCBjYW5UcmlnZ2VySW1wbGljaXRTdWJtaXNzaW9uKCkpOwogCiAg
ICAgICAgIGV2ZW50LnNldERlZmF1bHRIYW5kbGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TGFiZWxFbGVtZW50LmNwcAppbmRleCBhZTU4MmIzYzI1ZmJmYjYyN2Q4NDQxNGUwNjMzZjFjZmVh
OTY0NWRjLi4wYmFjMGJmOGViMmM0ZjFiMDk2Yzk3MDk4ZmRjYjBlZTJjY2EyZGM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogc3RhdGljIExhYmVsYWJsZUVsZW1lbnQqIGZpcnN0
RWxlbWVudFdpdGhJZElmTGFiZWxhYmxlKFRyZWVTY29wZSYgdHJlZVNjb3BlLCBjb25zdCBBdG9t
U3RyaW5nJiBpZCkKIHsKLSAgICBhdXRvIGVsZW1lbnQgPSBtYWtlUmVmUHRyKHRyZWVTY29wZS5n
ZXRFbGVtZW50QnlJZChpZCkpOworICAgIFJlZlB0ciBlbGVtZW50ID0gdHJlZVNjb3BlLmdldEVs
ZW1lbnRCeUlkKGlkKTsKICAgICBpZiAoIWlzPExhYmVsYWJsZUVsZW1lbnQ+KGVsZW1lbnQpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTGVnZW5kRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRF
bGVtZW50LmNwcAppbmRleCA2OWIzMDcwNGZhYjczODIwYzEzYWNkYzc2Y2JlYTE4ODRiNWJmMGY3
Li40MWVlMmE5OTA1MWNlNWJlNGMzNWU0NWM2YzZmYzI2MTZkZjUxMTAyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcApAQCAtODUsNyArODUsNyBAQCBIVE1MRm9y
bUVsZW1lbnQqIEhUTUxMZWdlbmRFbGVtZW50Ojpmb3JtKCkgY29uc3QKICAgICAvLyBBY2NvcmRp
bmcgdG8gdGhlIHNwZWNpZmljYXRpb24sIElmIHRoZSBsZWdlbmQgaGFzIGEgZmllbGRzZXQgZWxl
bWVudCBhcwogICAgIC8vIGl0cyBwYXJlbnQsIHRoZW4gdGhlIGZvcm0gYXR0cmlidXRlIG11c3Qg
cmV0dXJuIHRoZSBzYW1lIHZhbHVlIGFzIHRoZQogICAgIC8vIGZvcm0gYXR0cmlidXRlIG9uIHRo
YXQgZmllbGRzZXQgZWxlbWVudC4gT3RoZXJ3aXNlLCBpdCBtdXN0IHJldHVybiBudWxsLgotICAg
IGF1dG8gZmllbGRzZXQgPSBtYWtlUmVmUHRyKHBhcmVudE5vZGUoKSk7CisgICAgUmVmUHRyIGZp
ZWxkc2V0ID0gcGFyZW50Tm9kZSgpOwogICAgIGlmICghaXM8SFRNTEZpZWxkU2V0RWxlbWVudD4o
ZmllbGRzZXQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gZG93bmNhc3Q8
SFRNTEZpZWxkU2V0RWxlbWVudD4oKmZpZWxkc2V0KS5mb3JtKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXggOTg3NzFkODIzMWI2NGNlYjI3NTE5YjdkYjUxOTFi
ZGRlYmNmNzUwYS4uYTA1NGQzZWYyMTQzMzE0YTQxYzkxN2M1OGIwMTY0MDMzZDIxYzE0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApAQCAtNDM3LDcgKzQzNyw3IEBA
IHZvaWQgSFRNTExpbmtFbGVtZW50OjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJl
ZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjCiAgICAgICAgIEFTU0VSVCghbV9zaGVldCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIoZG9jdW1lbnQo
KS5mcmFtZSgpKTsKKyAgICBSZWZQdHIgZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7CiAgICAg
aWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC02MjEsNyArNjIxLDcgQEAgdm9pZCBI
VE1MTGlua0VsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxV
Ukw+JiB1cmxzKSBjb25zdAogICAgIC8vIEFwcGVuZCB0aGUgVVJMIG9mIHRoaXMgbGluayBlbGVt
ZW50LgogICAgIGFkZFN1YnJlc291cmNlVVJMKHVybHMsIGhyZWYoKSk7CiAKLSAgICBpZiAoYXV0
byBzdHlsZVNoZWV0ID0gbWFrZVJlZlB0cih0aGlzLT5zaGVldCgpKSkgeworICAgIGlmIChSZWZQ
dHIgc3R5bGVTaGVldCA9IHRoaXMtPnNoZWV0KCkpIHsKICAgICAgICAgc3R5bGVTaGVldC0+Y29u
dGVudHMoKS50cmF2ZXJzZVN1YnJlc291cmNlcyhbJl0gKGF1dG8mIHJlc291cmNlKSB7CiAgICAg
ICAgICAgICB1cmxzLmFkZChyZXNvdXJjZS51cmwoKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCAxOTk4NjJi
ODA3YWMyMjA3NGIyZjQ1YzJmMTI5N2IxNWI2MmEzODBiLi4wYWE4M2ViYTA4MjAzMDllYjJkNTE5
NmFjYzI2NWE5OTljZTIxOTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKQEAgLTE0NzMsNyArMTQ3Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFJl
c291cmNlKGNvbnN0IFVSTCYgaW5pdGlhbFVSTCwgQ29udGVudFR5cGUmIGNvbnRlbnRUCiAgICAg
fQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICBpZiAoYXV0byBkb2N1bWVu
dExvYWRlciA9IG1ha2VSZWZQdHIoZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpKSB7
CisgICAgaWYgKFJlZlB0ciBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVu
dExvYWRlcigpKSB7CiAgICAgICAgIGlmIChwYWdlLT51c2VyQ29udGVudFByb3ZpZGVyKCkucHJv
Y2Vzc0NvbnRlbnRSdWxlTGlzdHNGb3JMb2FkKCpwYWdlLCB1cmwsIENvbnRlbnRFeHRlbnNpb25z
OjpSZXNvdXJjZVR5cGU6Ok1lZGlhLCAqZG9jdW1lbnRMb2FkZXIpLnN1bW1hcnkuYmxvY2tlZExv
YWQpIHsKICAgICAgICAgICAgIG1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29y
a1N0YXRlOjpGb3JtYXRFcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xODM2LDcgKzE4
MzYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMo
Y29uc3QgTWVkaWFUaW1lJiBtb3ZpZVRpbWUpCiAgICAgICAgIC8vIHNpbXBsZSBldmVudCBuYW1l
ZCBjdWVjaGFuZ2UgYXQgdGhlIHRyYWNrIGVsZW1lbnQgYXMgd2VsbC4KICAgICAgICAgaWYgKGlz
PExvYWRhYmxlVGV4dFRyYWNrPigqYWZmZWN0ZWRUcmFjaykpIHsKICAgICAgICAgICAgIGF1dG8g
ZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jdWVjaGFuZ2VFdmVudCwgRXZlbnQ6
OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKLSAgICAgICAgICAgIGF1
dG8gdHJhY2tFbGVtZW50ID0gbWFrZVJlZlB0cihkb3duY2FzdDxMb2FkYWJsZVRleHRUcmFjaz4o
KmFmZmVjdGVkVHJhY2spLnRyYWNrRWxlbWVudCgpKTsKKyAgICAgICAgICAgIFJlZlB0ciB0cmFj
a0VsZW1lbnQgPSBkb3duY2FzdDxMb2FkYWJsZVRleHRUcmFjaz4oKmFmZmVjdGVkVHJhY2spLnRy
YWNrRWxlbWVudCgpOwogICAgICAgICAgICAgQVNTRVJUKHRyYWNrRWxlbWVudCk7CiAgICAgICAg
ICAgICBzY2hlZHVsZUV2ZW50T24oKnRyYWNrRWxlbWVudCwgV1RGTW92ZShldmVudCkpOwogICAg
ICAgICB9CkBAIC00MjYwLDcgKzQyNjAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92
ZVRleHRUcmFjayhSZWY8VGV4dFRyYWNrPiYmIHRyYWNrLCBib29sIHNjaGVkdWxlRXZlbgogICAg
ICAgICByZXR1cm47CiAKICAgICBUcmFja0Rpc3BsYXlVcGRhdGVTY29wZSBzY29wZSB7ICp0aGlz
IH07Ci0gICAgaWYgKGF1dG8gY3VlcyA9IG1ha2VSZWZQdHIodHJhY2stPmN1ZXMoKSkpCisgICAg
aWYgKFJlZlB0ciBjdWVzID0gdHJhY2stPmN1ZXMoKSkKICAgICAgICAgdGV4dFRyYWNrUmVtb3Zl
Q3Vlcyh0cmFjaywgKmN1ZXMpOwogICAgIHRyYWNrLT5jbGVhckNsaWVudCgqdGhpcyk7CiAgICAg
aWYgKG1fdGV4dFRyYWNrcykKQEAgLTQ2MjIsNyArNDYyMiw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6dXBkYXRlQ2FwdGlvbkNvbnRhaW5lcigpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
bGF5b3V0U2l6ZUNoYW5nZWQoKQogewotICAgIGlmIChhdXRvIGZyYW1lVmlldyA9IG1ha2VSZWZQ
dHIoZG9jdW1lbnQoKS52aWV3KCkpKSB7CisgICAgaWYgKFJlZlB0ciBmcmFtZVZpZXcgPSBkb2N1
bWVudCgpLnZpZXcoKSkgewogICAgICAgICBhdXRvIHRhc2sgPSBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH1dIHsKICAgICAgICAgICAgIGlmIChhdXRvIHJvb3QgPSB1c2VyQWdl
bnRTaGFkb3dSb290KCkpCiAgICAgICAgICAgICAgICAgcm9vdC0+ZGlzcGF0Y2hFdmVudChFdmVu
dDo6Y3JlYXRlKCJyZXNpemUiLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6Tm8pKTsKQEAgLTY4ODEsNyArNjg4MSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
Y3JlYXRlTWVkaWFQbGF5ZXIoKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCiAg
ICAgbWVkaWFTZXNzaW9uKCkuc2V0QWN0aXZlKHRydWUpOwogCiAjaWYgRU5BQkxFKFdFQl9BVURJ
TykKLSAgICBhdXRvIHByb3RlY3RlZEF1ZGlvU291cmNlTm9kZSA9IG1ha2VSZWZQdHIobV9hdWRp
b1NvdXJjZU5vZGUpOworICAgIFJlZlB0ciBwcm90ZWN0ZWRBdWRpb1NvdXJjZU5vZGUgPSBtX2F1
ZGlvU291cmNlTm9kZTsKICAgICBzdGQ6Om9wdGlvbmFsPExvY2tlcjxMb2NrPj4gYXVkaW9Tb3Vy
Y2VOb2RlTG9ja2VyOwogICAgIGlmIChtX2F1ZGlvU291cmNlTm9kZSkKICAgICAgICAgYXVkaW9T
b3VyY2VOb2RlTG9ja2VyLmVtcGxhY2UobV9hdWRpb1NvdXJjZU5vZGUtPnByb2Nlc3NMb2NrKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAppbmRleCBkN2I4ZTRi
YjBjZDhhNTdhY2RmMjhjN2MwM2Y0Y2RlZjQ0ZDY4Y2MzLi43MjFkMmRjOTI2MWViOTRiYWZmYjkx
YzNhMTE5NGFmZGExOWEyZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
YmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVt
ZW50LmNwcApAQCAtNDA0LDcgKzQwNCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRCZUV4
cG9zZWQoY29uc3QgSFRNTE9iamVjdEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgLy8gd2l0aCBubyBj
aGlsZHJlbiBvdGhlciB0aGFuIHBhcmFtIGVsZW1lbnRzLCB1bmtub3duIGVsZW1lbnRzIGFuZCB3
aGl0ZXNwYWNlIGNhbiBiZSBmb3VuZAogICAgIC8vIGJ5IG5hbWUgaW4gYSBkb2N1bWVudCwgYW5k
IG90aGVyIG9iamVjdCBlbGVtZW50cyBjYW5ub3QiLgogCi0gICAgZm9yIChhdXRvIGNoaWxkID0g
bWFrZVJlZlB0cihlbGVtZW50LmZpcnN0Q2hpbGQoKSk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5u
ZXh0U2libGluZygpKSB7CisgICAgZm9yIChSZWZQdHIgY2hpbGQgPSBlbGVtZW50LmZpcnN0Q2hp
bGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYg
KHByZXZlbnRzUGFyZW50T2JqZWN0RnJvbUV4cG9zdXJlKCpjaGlsZCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtNDgwLDcgKzQ4MCw3IEBAIGJvb2wgSFRNTE9iamVjdEVs
ZW1lbnQ6OmFwcGVuZEZvcm1EYXRhKERPTUZvcm1EYXRhJiBmb3JtRGF0YSwgYm9vbCkKIAogICAg
IC8vIFVzZSBQbHVnaW5Mb2FkaW5nUG9saWN5OjpEb05vdExvYWQgaGVyZSBvciBpdCB3b3VsZCBm
aXJlIEpTIGV2ZW50cyBzeW5jaHJvbm91c2x5CiAgICAgLy8gd2hpY2ggd291bGQgbm90IGJlIHNh
ZmUgaGVyZS4KLSAgICBhdXRvIHdpZGdldCA9IG1ha2VSZWZQdHIocGx1Z2luV2lkZ2V0KFBsdWdp
bkxvYWRpbmdQb2xpY3k6OkRvTm90TG9hZCkpOworICAgIFJlZlB0ciB3aWRnZXQgPSBwbHVnaW5X
aWRnZXQoUGx1Z2luTG9hZGluZ1BvbGljeTo6RG9Ob3RMb2FkKTsKICAgICBpZiAoIWlzPFBsdWdp
blZpZXdCYXNlPih3aWRnZXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgU3RyaW5nIHZh
bHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKaW5kZXgg
OTNhNmY0Y2NmNTNlNGIzMGQzZDI5OTVlNGVhZTQzM2YzOGU3OTQxNy4uMTY1ZmE2YzU1OTU2ZmZh
N2U3YjY2N2UyZDBmYWQ5ZmZkODZlMDYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
cHRHcm91cEVsZW1lbnQuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgSFRNTE9wdEdyb3VwRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bVN0CiAKIHZvaWQgSFRNTE9wdEdyb3VwRWxlbWVudDo6cmVjYWxjU2VsZWN0T3B0aW9ucygpCiB7
Ci0gICAgaWYgKGF1dG8gc2VsZWN0RWxlbWVudCA9IG1ha2VSZWZQdHIoYW5jZXN0b3JzT2ZUeXBl
PEhUTUxTZWxlY3RFbGVtZW50PigqdGhpcykuZmlyc3QoKSkpIHsKKyAgICBpZiAoUmVmUHRyIHNl
bGVjdEVsZW1lbnQgPSBhbmNlc3RvcnNPZlR5cGU8SFRNTFNlbGVjdEVsZW1lbnQ+KCp0aGlzKS5m
aXJzdCgpKSB7CiAgICAgICAgIHNlbGVjdEVsZW1lbnQtPnNldFJlY2FsY0xpc3RJdGVtcygpOwog
ICAgICAgICBzZWxlY3RFbGVtZW50LT51cGRhdGVWYWxpZGl0eSgpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKaW5kZXggNWNlY2FlYmZkM2IwYWM5MGE0
MGJmY2RjMjZlOGIzOGMyZjk4N2M5Yy4uOTY1MWQ4NGVhMDJiNWY5N2YyNmI3NzRlMGYzNjg1ZGUy
OTg3NDc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKQEAg
LTEwMyw3ICsxMDMsNyBAQCB2b2lkIEhUTUxQbHVnSW5FbGVtZW50OjpyZXNldEluc3RhbmNlKCkK
IAogSlNDOjpCaW5kaW5nczo6SW5zdGFuY2UqIEhUTUxQbHVnSW5FbGVtZW50OjpiaW5kaW5nc0lu
c3RhbmNlKCkKIHsKLSAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihkb2N1bWVudCgpLmZyYW1l
KCkpOworICAgIFJlZlB0ciBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKTsKICAgICBpZiAoIWZy
YW1lKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTExLDcgKzExMSw3IEBAIEpTQzo6
QmluZGluZ3M6Okluc3RhbmNlKiBIVE1MUGx1Z0luRWxlbWVudDo6YmluZGluZ3NJbnN0YW5jZSgp
CiAgICAgLy8gdGhlIGNhY2hlZCBhbGxvY2F0ZWQgQmluZGluZ3M6Okluc3RhbmNlLiAgTm90IHN1
cHBvcnRpbmcgdGhpcyBlZGdlLWNhc2UgaXMgT0suCiAKICAgICBpZiAoIW1faW5zdGFuY2UpIHsK
LSAgICAgICAgaWYgKGF1dG8gd2lkZ2V0ID0gbWFrZVJlZlB0cihwbHVnaW5XaWRnZXQoKSkpCisg
ICAgICAgIGlmIChSZWZQdHIgd2lkZ2V0ID0gcGx1Z2luV2lkZ2V0KCkpCiAgICAgICAgICAgICBt
X2luc3RhbmNlID0gZnJhbWUtPnNjcmlwdCgpLmNyZWF0ZVNjcmlwdEluc3RhbmNlRm9yV2lkZ2V0
KHdpZGdldC5nZXQoKSk7CiAgICAgfQogICAgIHJldHVybiBtX2luc3RhbmNlLmdldCgpOwpAQCAt
NDM1LDggKzQzNSw4IEBAIGJvb2wgSFRNTFBsdWdJbkVsZW1lbnQ6OnNldFJlcGxhY2VtZW50KFJl
bmRlckVtYmVkZGVkT2JqZWN0OjpQbHVnaW5VbmF2YWlsYWJpbGl0CiAKIGJvb2wgSFRNTFBsdWdJ
bkVsZW1lbnQ6OmlzUmVwbGFjZW1lbnRPYnNjdXJlZCgpCiB7Ci0gICAgYXV0byB0b3BEb2N1bWVu
dCA9IG1ha2VSZWYoZG9jdW1lbnQoKS50b3BEb2N1bWVudCgpKTsKLSAgICBhdXRvIHRvcEZyYW1l
VmlldyA9IG1ha2VSZWZQdHIodG9wRG9jdW1lbnQtPnZpZXcoKSk7CisgICAgUmVmIHRvcERvY3Vt
ZW50ID0gZG9jdW1lbnQoKS50b3BEb2N1bWVudCgpOworICAgIFJlZlB0ciB0b3BGcmFtZVZpZXcg
PSB0b3BEb2N1bWVudC0+dmlldygpOwogICAgIGlmICghdG9wRnJhbWVWaWV3KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJ
bkltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQuY3BwCmluZGV4IDIwOGM4ZDJhMWNkODY5NzI0YjZkZjVkOTU5NGQ5NTliNjgwNWIyODAu
LmJlMWZlYjFiNjFiMGYwNzk0NTIyODFjZmQ1YWI4MTM5Yjk4NjVjNDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtODEsNyArODEsNyBA
QCBib29sIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmlzSW1hZ2VUeXBlKCkKICAgICBpZiAobV9z
ZXJ2aWNlVHlwZS5pc0VtcHR5KCkgJiYgcHJvdG9jb2xJcyhtX3VybCwgImRhdGEiKSkKICAgICAg
ICAgbV9zZXJ2aWNlVHlwZSA9IG1pbWVUeXBlRnJvbURhdGFVUkwobV91cmwpOwogCi0gICAgaWYg
KGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKGRvY3VtZW50KCkuZnJhbWUoKSkpCisgICAgaWYgKFJl
ZlB0ciBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIGZyYW1lLT5s
b2FkZXIoKS5jbGllbnQoKS5vYmplY3RDb250ZW50VHlwZShkb2N1bWVudCgpLmNvbXBsZXRlVVJM
KG1fdXJsKSwgbV9zZXJ2aWNlVHlwZSkgPT0gT2JqZWN0Q29udGVudFR5cGU6OkltYWdlOwogCiAg
ICAgcmV0dXJuIEltYWdlOjpzdXBwb3J0c1R5cGUobV9zZXJ2aWNlVHlwZSk7CkBAIC0xNzksNyAr
MTc5LDcgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRBdHRhY2hSZW5kZXJlcnMo
KQogCiB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OndpbGxEZXRhY2hSZW5kZXJlcnMoKQog
ewotICAgIGF1dG8gd2lkZ2V0ID0gbWFrZVJlZlB0cihwbHVnaW5XaWRnZXQoUGx1Z2luTG9hZGlu
Z1BvbGljeTo6RG9Ob3RMb2FkKSk7CisgICAgUmVmUHRyIHdpZGdldCA9IHBsdWdpbldpZGdldChQ
bHVnaW5Mb2FkaW5nUG9saWN5OjpEb05vdExvYWQpOwogICAgIGlmIChpczxQbHVnaW5WaWV3QmFz
ZT4od2lkZ2V0KSkKICAgICAgICAgZG93bmNhc3Q8UGx1Z2luVmlld0Jhc2U+KCp3aWRnZXQpLndp
bGxEZXRhY2hSZW5kZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTbG90RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxlbWVudC5j
cHAKaW5kZXggMTRlZTBmODljZTZjMmM3NDQ2ZjVhNTJiMzdkZGYxZjQ4N2E2ZmY2MC4uYTJkMTkx
Y2E5MDE4YjU4OGY1NTAyMWU3MDZmMzljYmQ3OTVkZWJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFNsb3RFbGVtZW50LmNwcApAQCAtOTMsMTQgKzkzLDE0IEBAIHZvaWQgSFRNTFNsb3RFbGVt
ZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0
b21TdHJpCiAgICAgSFRNTEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQobmFtZSwgb2xkVmFsdWUs
IG5ld1ZhbHVlLCByZWFzb24pOwogCiAgICAgaWYgKGlzSW5TaGFkb3dUcmVlKCkgJiYgbmFtZSA9
PSBuYW1lQXR0cikgewotICAgICAgICBpZiAoYXV0byBzaGFkb3dSb290ID0gbWFrZVJlZlB0cihj
b250YWluaW5nU2hhZG93Um9vdCgpKSkKKyAgICAgICAgaWYgKFJlZlB0ciBzaGFkb3dSb290ID0g
Y29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKICAgICAgICAgICAgIHNoYWRvd1Jvb3QtPnJlbmFtZVNs
b3RFbGVtZW50KCp0aGlzLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOwogICAgIH0KIH0KIAogY29uc3Qg
VmVjdG9yPFdlYWtQdHI8Tm9kZT4+KiBIVE1MU2xvdEVsZW1lbnQ6OmFzc2lnbmVkTm9kZXMoKSBj
b25zdAogewotICAgIGF1dG8gc2hhZG93Um9vdCA9IG1ha2VSZWZQdHIoY29udGFpbmluZ1NoYWRv
d1Jvb3QoKSk7CisgICAgUmVmUHRyIHNoYWRvd1Jvb3QgPSBjb250YWluaW5nU2hhZG93Um9vdCgp
OwogICAgIGlmICghc2hhZG93Um9vdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAKaW5kZXggNjFhYzJiNWFmYmEwZGYw
MGQxZmRhNGNmYTlhZTNiMTViODQ2ZGFkZi4uYjU3MzkyYjFjNGM5NzdlMGQ4NjMwNDk4MTZmYjky
ZjdkZGM1ZGUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAK
QEAgLTE4MCw3ICsxODAsNyBAQCB2b2lkIEhUTUxTb3VyY2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaQogICAgIGlmIChuYW1l
ID09IHNyY3NldEF0dHIgfHwgbmFtZSA9PSBzaXplc0F0dHIgfHwgbmFtZSA9PSBtZWRpYUF0dHIg
fHwgbmFtZSA9PSB0eXBlQXR0cikgewogICAgICAgICBpZiAobmFtZSA9PSBtZWRpYUF0dHIpCiAg
ICAgICAgICAgICBtX2NhY2hlZFBhcnNlZE1lZGlhQXR0cmlidXRlID0gc3RkOjpudWxsb3B0Owot
ICAgICAgICBhdXRvIHBhcmVudCA9IG1ha2VSZWZQdHIocGFyZW50Tm9kZSgpKTsKKyAgICAgICAg
UmVmUHRyIHBhcmVudCA9IHBhcmVudE5vZGUoKTsKICAgICAgICAgaWYgKG1fc2hvdWxkQ2FsbFNv
dXJjZXNDaGFuZ2VkKQogICAgICAgICAgICAgZG93bmNhc3Q8SFRNTFBpY3R1cmVFbGVtZW50Pigq
cGFyZW50KS5zb3VyY2VzQ2hhbmdlZCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
dHlsZUVsZW1lbnQuY3BwCmluZGV4IDE2NjMwMDFjMGYwODE1OWY3ZTEwYWMzY2E2MDMzNGJiOTBi
MGJhNjguLmFjZTBlNWE3M2M1YTNjNmY4ZDY1MzM5MjdjYTkxNjlmNGEwMTBmYzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZv
aWQgSFRNTFN0eWxlRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNo
U2V0PFVSTD4mIHVybHMpIGNvbnN0CiB7ICAgIAogICAgIEhUTUxFbGVtZW50OjphZGRTdWJyZXNv
dXJjZUF0dHJpYnV0ZVVSTHModXJscyk7CiAKLSAgICBpZiAoYXV0byBzdHlsZVNoZWV0ID0gbWFr
ZVJlZlB0cih0aGlzLT5zaGVldCgpKSkgeworICAgIGlmIChSZWZQdHIgc3R5bGVTaGVldCA9IHRo
aXMtPnNoZWV0KCkpIHsKICAgICAgICAgc3R5bGVTaGVldC0+Y29udGVudHMoKS50cmF2ZXJzZVN1
YnJlc291cmNlcyhbJl0gKGF1dG8mIHJlc291cmNlKSB7CiAgICAgICAgICAgICB1cmxzLmFkZChy
ZXNvdXJjZS51cmwoKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNwcAppbmRleCAzNjA3Yjg3NDBkY2M3YmMwODdj
YTkxMzE0MWMwN2IzYTYxNGY2MWI0Li4yMWYwZTBkZDMzMmE5MTJhYjNkNjc4NDI2ZWI4Y2Y3YzQ4
ZjFiNDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHAK
QEAgLTg4LDcgKzg4LDcgQEAgaW50IEhUTUxUYWJsZVJvd0VsZW1lbnQ6OnJvd0luZGV4KCkgY29u
c3QKIAogc3RhdGljIGlubGluZSBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGZpbmRSb3dzKGNvbnN0
IEhUTUxUYWJsZVJvd0VsZW1lbnQmIHJvdykKIHsKLSAgICBhdXRvIHBhcmVudCA9IG1ha2VSZWZQ
dHIocm93LnBhcmVudE5vZGUoKSk7CisgICAgUmVmUHRyIHBhcmVudCA9IHJvdy5wYXJlbnROb2Rl
KCk7CiAgICAgaWYgKGlzPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PihwYXJlbnQpKQogICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+KCpwYXJlbnQpLnJvd3Mo
KTsKICAgICBpZiAoaXM8SFRNTFRhYmxlRWxlbWVudD4ocGFyZW50KSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCmluZGV4IDFiZjE5YWVjZDcxYzVjNWVhYzY4ZmZhYzZk
MzJiOTg3YTExNTBlMTQuLjBmOWY0M2IwNDhmNGVkNDExMDkyMDFiZjM1M2Q1OGVhYTQ1MjMzNzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcApAQCAtMzA5LDcgKzMw
OSw3IEBAIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRy
YWNrJikKIAogUmVmUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IEhUTUxUcmFja0VsZW1lbnQ6Om1lZGlh
RWxlbWVudCgpIGNvbnN0CiB7Ci0gICAgYXV0byBwYXJlbnQgPSBtYWtlUmVmUHRyKHBhcmVudEVs
ZW1lbnQoKSk7CisgICAgUmVmUHRyIHBhcmVudCA9IHBhcmVudEVsZW1lbnQoKTsKICAgICBpZiAo
IWlzPEhUTUxNZWRpYUVsZW1lbnQ+KHBhcmVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIHJldHVybiBkb3duY2FzdDxIVE1MTWVkaWFFbGVtZW50PihwYXJlbnQuZ2V0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rSWNvbkNvbGxlY3Rvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0xpbmtJY29uQ29sbGVjdG9yLmNwcAppbmRleCA5NzIzYWI1ZTZlNmUx
MTZjNmIxNGQwYTM4YzgwMjZlODQ5NzM0OGEyLi41OTk4ZmFhY2I5ZjU5NWQ5MmJhMjAwNTJlNjBk
NzNlZmE4MDY1YmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xpbmtJY29uQ29s
bGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xpbmtJY29uQ29sbGVjdG9yLmNw
cApAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgaW50IGNvbXBhcmVJY29ucyhjb25zdCBMaW5rSWNv
biYgYSwgY29uc3QgTGlua0ljb24mIGIpCiAKIGF1dG8gTGlua0ljb25Db2xsZWN0b3I6Omljb25z
T2ZUeXBlcyhPcHRpb25TZXQ8TGlua0ljb25UeXBlPiBpY29uVHlwZXMpIC0+IFZlY3RvcjxMaW5r
SWNvbj4KIHsKLSAgICBhdXRvIGhlYWQgPSBtYWtlUmVmUHRyKG1fZG9jdW1lbnQuaGVhZCgpKTsK
KyAgICBSZWZQdHIgaGVhZCA9IG1fZG9jdW1lbnQuaGVhZCgpOwogICAgIGlmICghaGVhZCkKICAg
ICAgICAgcmV0dXJuIHsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKaW5k
ZXggZTllOTAzYWZlYjdlNDg3Y2RiMTI2ZWEyNzI5NzdjNmQ2NmJmZDQzZi4uNjZjNDVmMDBmNThj
ZTg4M2JlMzE0Y2ZmM2NkZTJjYjdlZjZmYzVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9j
dW1lbnQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBNZWRpYURvY3VtZW50UGFyc2VyOjpj
cmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpCiAgICAgdmlkZW9FbGVtZW50LT5zZXRBdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKGNvbnRyb2xzQXR0ciwgZW1wdHlBdG9tKCkpOwogICAgIHZp
ZGVvRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhdXRvcGxheUF0
dHIsIGVtcHR5QXRvbSgpKTsKICAgICB2aWRlb0VsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oc3JjQXR0ciwgZG9jdW1lbnQudXJsKCkuc3RyaW5nKCkpOwotICAgIGlm
IChhdXRvIGxvYWRlciA9IG1ha2VSZWZQdHIoZG9jdW1lbnQubG9hZGVyKCkpKQorICAgIGlmIChS
ZWZQdHIgbG9hZGVyID0gZG9jdW1lbnQubG9hZGVyKCkpCiAgICAgICAgIHZpZGVvRWxlbWVudC0+
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0eXBlQXR0ciwgbG9hZGVyLT5yZXNw
b25zZU1JTUVUeXBlKCkpOwogCiAjaWYgIUVOQUJMRShNT0RFUk5fTUVESUFfQ09OVFJPTFMpCkBA
IC0xODIsNyArMTgyLDcgQEAgdm9pZCBNZWRpYURvY3VtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVy
KEV2ZW50JiBldmVudCkKICAgICAgICAgcmV0dXJuOwogICAgIGF1dG8mIHRhcmdldE5vZGUgPSBk
b3duY2FzdDxOb2RlPigqZXZlbnQudGFyZ2V0KCkpOwogCi0gICAgaWYgKGF1dG8gdmlkZW8gPSBt
YWtlUmVmUHRyKGFuY2VzdG9yVmlkZW9FbGVtZW50KCZ0YXJnZXROb2RlKSkpIHsKKyAgICBpZiAo
UmVmUHRyIHZpZGVvID0gYW5jZXN0b3JWaWRlb0VsZW1lbnQoJnRhcmdldE5vZGUpKSB7CiAgICAg
ICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKICAgICAg
ICAgICAgIGlmICghdmlkZW8tPmNhblBsYXkoKSkgewogICAgICAgICAgICAgICAgIHZpZGVvLT5w
YXVzZSgpOwpAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgTWVkaWFEb2N1bWVudDo6ZGVmYXVsdEV2
ZW50SGFuZGxlcihFdmVudCYgZXZlbnQpCiAgICAgYXV0byYgdGFyZ2V0Q29udGFpbmVyID0gZG93
bmNhc3Q8Q29udGFpbmVyTm9kZT4odGFyZ2V0Tm9kZSk7CiAKICAgICBpZiAoZXZlbnQudHlwZSgp
ID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQgJiYgaXM8S2V5Ym9hcmRFdmVudD4oZXZlbnQp
KSB7Ci0gICAgICAgIGF1dG8gdmlkZW8gPSBtYWtlUmVmUHRyKGRlc2NlbmRhbnRWaWRlb0VsZW1l
bnQodGFyZ2V0Q29udGFpbmVyKSk7CisgICAgICAgIFJlZlB0ciB2aWRlbyA9IGRlc2NlbmRhbnRW
aWRlb0VsZW1lbnQodGFyZ2V0Q29udGFpbmVyKTsKICAgICAgICAgaWYgKCF2aWRlbykKICAgICAg
ICAgICAgIHJldHVybjsKIApAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgTWVkaWFEb2N1bWVudDo6
ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCYgZXZlbnQpCiAKIHZvaWQgTWVkaWFEb2N1bWVudDo6
cmVwbGFjZU1lZGlhRWxlbWVudFRpbWVyRmlyZWQoKQogewotICAgIGF1dG8gaHRtbEJvZHkgPSBt
YWtlUmVmUHRyKGJvZHlPckZyYW1lc2V0KCkpOworICAgIFJlZlB0ciBodG1sQm9keSA9IGJvZHlP
ckZyYW1lc2V0KCk7CiAgICAgaWYgKCFodG1sQm9keSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0y
MzAsNyArMjMwLDcgQEAgdm9pZCBNZWRpYURvY3VtZW50OjpyZXBsYWNlTWVkaWFFbGVtZW50VGlt
ZXJGaXJlZCgpCiAgICAgaHRtbEJvZHktPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24obWFyZ2lud2lkdGhBdHRyLCBBdG9tU3RyaW5nKCIwIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKICAgICBodG1sQm9keS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihtYXJnaW5oZWlnaHRBdHRyLCBBdG9tU3RyaW5nKCIwIiwgQXRvbVN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKIAotICAgIGlmIChhdXRvIHZpZGVvRWxlbWVudCA9IG1ha2VS
ZWZQdHIoZGVzY2VuZGFudFZpZGVvRWxlbWVudCgqaHRtbEJvZHkpKSkgeworICAgIGlmIChSZWZQ
dHIgdmlkZW9FbGVtZW50ID0gZGVzY2VuZGFudFZpZGVvRWxlbWVudCgqaHRtbEJvZHkpKSB7CiAg
ICAgICAgIGF1dG8gZW1iZWRFbGVtZW50ID0gSFRNTEVtYmVkRWxlbWVudDo6Y3JlYXRlKCp0aGlz
KTsKIAogICAgICAgICBlbWJlZEVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24od2lkdGhBdHRyLCBBdG9tU3RyaW5nKCIxMDAlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIE1lZGlhRG9jdW1lbnQ6OnJl
cGxhY2VNZWRpYUVsZW1lbnRUaW1lckZpcmVkKCkKICAgICAgICAgZW1iZWRFbGVtZW50LT5zZXRB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHNyY0F0dHIsIHVybCgpLnN0cmluZygpKTsK
IAogICAgICAgICBBU1NFUlQobG9hZGVyKCkpOwotICAgICAgICBpZiAoYXV0byBsb2FkZXIgPSBt
YWtlUmVmUHRyKHRoaXMtPmxvYWRlcigpKSkKKyAgICAgICAgaWYgKFJlZlB0ciBsb2FkZXIgPSB0
aGlzLT5sb2FkZXIoKSkKICAgICAgICAgICAgIGVtYmVkRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbih0eXBlQXR0ciwgbG9hZGVyLT53cml0ZXIoKS5taW1lVHlwZSgp
KTsKIAogICAgICAgICB2aWRlb0VsZW1lbnQtPnBhcmVudE5vZGUoKS0+cmVwbGFjZUNoaWxkKGVt
YmVkRWxlbWVudCwgKnZpZGVvRWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVs
ZW1lbnRTZXNzaW9uLmNwcAppbmRleCA5ZmUwMjRmMDRiMTUyMDE4ZGE5N2ZmMWE4ZTIwNWNmMDc5
NzM5MzllLi5kZjFkNzc1NDI2MjU3YWUxY2FmNDY4N2YwYjM2ZTVjNTAyNmEzY2VkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKQEAgLTEwMDksNyArMTAw
OSw3IEBAIHN0YXRpYyBib29sIGlzRWxlbWVudFJlY3RNb3N0bHlJbk1haW5GcmFtZShjb25zdCBI
VE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KQogICAgIGlmICghZWxlbWVudC5yZW5kZXJlcigpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIGRvY3VtZW50RnJhbWUgPSBtYWtlUmVm
UHRyKGVsZW1lbnQuZG9jdW1lbnQoKS5mcmFtZSgpKTsKKyAgICBSZWZQdHIgZG9jdW1lbnRGcmFt
ZSA9IGVsZW1lbnQuZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghZG9jdW1lbnRGcmFtZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMDM1LDcgKzEwMzUsNyBAQCBzdGF0aWMgYm9v
bCBpc0VsZW1lbnRMYXJnZVJlbGF0aXZlVG9NYWluRnJhbWUoY29uc3QgSFRNTE1lZGlhRWxlbWVu
dCYgZWxlbWVudCkKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBhdXRvIGRvY3VtZW50RnJhbWUgPSBtYWtlUmVmUHRyKGVsZW1lbnQuZG9jdW1lbnQoKS5m
cmFtZSgpKTsKKyAgICBSZWZQdHIgZG9jdW1lbnRGcmFtZSA9IGVsZW1lbnQuZG9jdW1lbnQoKS5m
cmFtZSgpOwogICAgIGlmICghZG9jdW1lbnRGcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCmluZGV4IGUzYTNkYTZmZjI0NzE5
YmZjOTc1MmRmZTU1M2ExNjM3NjRkZTZhNzYuLjFiOTc4OTc2Yjc3NzkxYzQ1OTVlZjczMmExZWRi
ZmFiMGY0NmFhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCkBAIC0x
MDEsNyArMTAxLDcgQEAgdm9pZCBQbHVnaW5Eb2N1bWVudFBhcnNlcjo6Y3JlYXRlRG9jdW1lbnRT
dHJ1Y3R1cmUoKQogICAgIGVtYmVkRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihzcmNBdHRyLCBkb2N1bWVudC51cmwoKS5zdHJpbmcoKSk7CiAgICAgCiAgICAgQVNT
RVJUKGRvY3VtZW50LmxvYWRlcigpKTsKLSAgICBpZiAoYXV0byBsb2FkZXIgPSBtYWtlUmVmUHRy
KGRvY3VtZW50LmxvYWRlcigpKSkKKyAgICBpZiAoUmVmUHRyIGxvYWRlciA9IGRvY3VtZW50Lmxv
YWRlcigpKQogICAgICAgICBtX2VtYmVkRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbih0eXBlQXR0ciwgbG9hZGVyLT53cml0ZXIoKS5taW1lVHlwZSgpKTsKIAogICAg
IGRvY3VtZW50LnNldFBsdWdpbkVsZW1lbnQoKm1fZW1iZWRFbGVtZW50KTsKQEAgLTExNyw3ICsx
MTcsNyBAQCB2b2lkIFBsdWdpbkRvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyhEb2N1bWVudFdy
aXRlciYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpCiAKICAgICBjcmVhdGVEb2N1bWVudFN0cnVj
dHVyZSgpOwogCi0gICAgYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIoZG9jdW1lbnQoKS0+ZnJhbWUo
KSk7CisgICAgUmVmUHRyIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKTsKICAgICBpZiAoIWZy
YW1lKQogICAgICAgICByZXR1cm47CiAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFBsdWdpbkRv
Y3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QpCiAgICAgZnJhbWUtPnZpZXcoKS0+Zmx1c2hBbnlQZW5kaW5nUG9zdExheW91dFRh
c2tzKCk7CiAKICAgICBpZiAoYXV0byByZW5kZXJlciA9IG1fZW1iZWRFbGVtZW50LT5yZW5kZXJX
aWRnZXQoKSkgewotICAgICAgICBpZiAoYXV0byB3aWRnZXQgPSBtYWtlUmVmUHRyKHJlbmRlcmVy
LT53aWRnZXQoKSkpIHsKKyAgICAgICAgaWYgKFJlZlB0ciB3aWRnZXQgPSByZW5kZXJlci0+d2lk
Z2V0KCkpIHsKICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5yZWRpcmVjdERh
dGFUb1BsdWdpbigqd2lkZ2V0KTsKIAogICAgICAgICAgICAgLy8gSW4gYSBwbHVnaW4gZG9jdW1l
bnQsIHRoZSBtYWluIHJlc291cmNlIGlzIHRoZSBwbHVnaW4uIElmIHdlIGhhdmUgYSBudWxsIHdp
ZGdldCwgdGhhdCBtZWFucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TdWJtaXRJ
bnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TdWJtaXRJbnB1dFR5cGUuY3BwCmlu
ZGV4IDgxMjJkNTRhMmZiNGEwNTE5ZTk4ZDI4YTQ1MzU0NDdlMzk0MWYxZDkuLjk4ZjM1ZmI0YmY2
Yzg5OGFhYTUxYTQyNGIzNTFmZjkwMzkxODcwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvU3VibWl0SW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1N1Ym1p
dElucHV0VHlwZS5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBTdWJtaXRJbnB1dFR5cGU6Omhh
bmRsZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQmIGV2ZW50KQogICAgIHByb3RlY3RlZEVsZW1lbnQt
PmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKICAg
ICBwcm90ZWN0ZWRFbGVtZW50LT5zZXRBY3RpdmF0ZWRTdWJtaXQodHJ1ZSk7Ci0gICAgaWYgKGF1
dG8gY3VycmVudEZvcm0gPSBtYWtlUmVmUHRyKHByb3RlY3RlZEVsZW1lbnQtPmZvcm0oKSkpCisg
ICAgaWYgKFJlZlB0ciBjdXJyZW50Rm9ybSA9IHByb3RlY3RlZEVsZW1lbnQtPmZvcm0oKSkKICAg
ICAgICAgY3VycmVudEZvcm0tPnN1Ym1pdElmUG9zc2libGUoJmV2ZW50LCBlbGVtZW50KCkpOyAv
LyBFdmVudCBoYW5kbGVycyBjYW4gcnVuLgogICAgIHByb3RlY3RlZEVsZW1lbnQtPnNldEFjdGl2
YXRlZFN1Ym1pdChmYWxzZSk7CiAgICAgZXZlbnQuc2V0RGVmYXVsdEhhbmRsZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5j
cHAKaW5kZXggNmMyMzcxN2YwNGVmNTk0YWYzZmVlZTRiOTM1YWE3M2Q1ZDcwOWQ3My4uYjc5ZjZh
MjA4ZDNjYjU4MWY5YWEyZDVjMjViNmJhZWEyMjNmNTY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTExNiw3
ICsxMTYsNyBAQCBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRPcmlnaW4o
Y29uc3QgSFRNTEltYWdlRWxlbWVudCogZWxlbWVudCkKICAgICBpZiAoIWNhY2hlZEltYWdlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIGltYWdlID0gbWFrZVJlZlB0cihjYWNo
ZWRJbWFnZS0+aW1hZ2UoKSk7CisgICAgUmVmUHRyIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdl
KCk7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAKaW5kZXggOTBhMGVjNTdkZDBkNWVlNWZk
YjQ3MGJhOGZlODc2MTgxNzkwYzUwMy4uOGQ3YTZhYTIxNjBjMGVlZmY1YmQ0MzI4ODQ0ZmEyM2E3
YmFjMWZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcApA
QCAtMTAyLDEyICsxMDIsMTIgQEAgQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKGNvbnN0IFNSR0JB
PGZsb2F0PiYgY29sb3JDb21wb25lbnRzKQogfQogCiBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUo
Q2FudmFzR3JhZGllbnQmIGdyYWRpZW50KQotICAgIDogbV9zdHlsZShtYWtlUmVmUHRyKGdyYWRp
ZW50KSkKKyAgICA6IG1fc3R5bGUoJmdyYWRpZW50KQogewogfQogCiBDYW52YXNTdHlsZTo6Q2Fu
dmFzU3R5bGUoQ2FudmFzUGF0dGVybiYgcGF0dGVybikKLSAgICA6IG1fc3R5bGUobWFrZVJlZlB0
cihwYXR0ZXJuKSkKKyAgICA6IG1fc3R5bGUoJnBhdHRlcm4pCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5k
ZXggM2JkMGMxODljOWY3NzczMjZjNTY5MWE3OTA4MjVkNjZkMDg3ZWQ4MC4uNWEzODc5NTdjMjYw
NjYyMmRiNDZmNGJmNjA4OGJlMzMxMDYxYWJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTE5NzYsNyArMTk3
Niw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmVnaW5RdWVyeShHQ0dMZW51bSB0
YXJnZXQsIFdlYkdMUXVlcnkmIHF1ZXJ5KQogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJiZWdpblF1ZXJ5IiwgInF1ZXJ5IG9i
amVjdCBvZiB0YXJnZXQgaXMgYWxyZWFkeSBhY3RpdmUiKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBtX2FjdGl2ZVF1ZXJpZXNbKmFjdGl2ZVF1ZXJ5S2V5XSA9IG1ha2VSZWZQdHIoJnF1
ZXJ5KTsKKyAgICBtX2FjdGl2ZVF1ZXJpZXNbKmFjdGl2ZVF1ZXJ5S2V5XSA9ICZxdWVyeTsKICAg
ICBtX2NvbnRleHQtPmJlZ2luUXVlcnkodGFyZ2V0LCBxdWVyeS5vYmplY3QoKSk7CiAgICAgcXVl
cnkuc2V0VGFyZ2V0KHRhcmdldCk7CiB9CkBAIC0yNTIyLDcgKzI1MjIsNyBAQCBXZWJHTEFueSBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJbmRleGVkUGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHVpbnQgaQogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0R0w6OklOVkFMSURfVkFMVUUsICJnZXRJbmRleGVkUGFyYW1ldGVyIiwgImluZGV4IG91dCBv
ZiByYW5nZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIG1ha2VSZWZQdHIoYnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIFJlZlB0ciB7IGJ1
ZmZlciB9OwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVF
REJBQ0tfQlVGRkVSX1NJWkU6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VFJBTlNGT1JN
X0ZFRURCQUNLX0JVRkZFUl9TVEFSVDoKQEAgLTI4NjcsMTQgKzI4NjcsMTQgQEAgV2ViR0xBbnkg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
KEdDR0xlbnVtIHRhcmcKIAogICAgIFJlZlB0cjxXZWJHTFNoYXJlZE9iamVjdD4gYXR0YWNobWVu
dE9iamVjdDsKICAgICBpZiAoYXR0YWNobWVudCA9PSBHcmFwaGljc0NvbnRleHRHTDo6REVQVEhf
U1RFTkNJTF9BVFRBQ0hNRU5UKSB7Ci0gICAgICAgIGF0dGFjaG1lbnRPYmplY3QgPSBtYWtlUmVm
UHRyKHRhcmdldEZyYW1lYnVmZmVyLT5nZXRBdHRhY2htZW50T2JqZWN0KEdyYXBoaWNzQ29udGV4
dEdMOjpERVBUSF9BVFRBQ0hNRU5UKSk7Ci0gICAgICAgIGF1dG8gc3RlbmNpbEF0dGFjaG1lbnQg
PSBtYWtlUmVmUHRyKHRhcmdldEZyYW1lYnVmZmVyLT5nZXRBdHRhY2htZW50T2JqZWN0KEdyYXBo
aWNzQ29udGV4dEdMOjpTVEVOQ0lMX0FUVEFDSE1FTlQpKTsKKyAgICAgICAgYXR0YWNobWVudE9i
amVjdCA9IHRhcmdldEZyYW1lYnVmZmVyLT5nZXRBdHRhY2htZW50T2JqZWN0KEdyYXBoaWNzQ29u
dGV4dEdMOjpERVBUSF9BVFRBQ0hNRU5UKTsKKyAgICAgICAgUmVmUHRyIHN0ZW5jaWxBdHRhY2ht
ZW50ID0gdGFyZ2V0RnJhbWVidWZmZXItPmdldEF0dGFjaG1lbnRPYmplY3QoR3JhcGhpY3NDb250
ZXh0R0w6OlNURU5DSUxfQVRUQUNITUVOVCk7CiAgICAgICAgIGlmIChhdHRhY2htZW50T2JqZWN0
ICE9IHN0ZW5jaWxBdHRhY2htZW50KSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgImRpZmZl
cmVudCBvYmplY3RzIGJvdW5kIHRvIERFUFRIX0FUVEFDSE1FTlQgYW5kIFNURU5DSUxfQVRUQUNI
TUVOVCIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICB9IGVs
c2UKLSAgICAgICAgYXR0YWNobWVudE9iamVjdCA9IG1ha2VSZWZQdHIodGFyZ2V0RnJhbWVidWZm
ZXItPmdldEF0dGFjaG1lbnRPYmplY3QoYXR0YWNobWVudCkpOworICAgICAgICBhdHRhY2htZW50
T2JqZWN0ID0gdGFyZ2V0RnJhbWVidWZmZXItPmdldEF0dGFjaG1lbnRPYmplY3QoYXR0YWNobWVu
dCk7CiAKICAgICBpZiAoIWF0dGFjaG1lbnRPYmplY3QpIHsKICAgICAgICAgaWYgKHBuYW1lID09
IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFKQpA
QCAtMjg5Miw4ICsyODkyLDggQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmcKICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSQlVGRkVS
KTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09C
SkVDVF9OQU1FOgogICAgICAgICBpZiAoYXR0YWNobWVudE9iamVjdC0+aXNUZXh0dXJlKCkpCi0g
ICAgICAgICAgICByZXR1cm4gbWFrZVJlZlB0cihyZWludGVycHJldF9jYXN0PFdlYkdMVGV4dHVy
ZSY+KCphdHRhY2htZW50T2JqZWN0KSk7Ci0gICAgICAgIHJldHVybiBtYWtlUmVmUHRyKHJlaW50
ZXJwcmV0X2Nhc3Q8V2ViR0xSZW5kZXJidWZmZXImPigqYXR0YWNobWVudE9iamVjdCkpOworICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8V2ViR0xUZXh0dXJlPihhdHRhY2ht
ZW50T2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8V2ViR0xSZW5k
ZXJidWZmZXI+KGF0dGFjaG1lbnRPYmplY3QpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFOgogICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MQVlFUjoK
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRV
UkVfTEVWRUw6CkBAIC0zMzg5LDcgKzMzODksNyBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpnZXRQYXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUpCiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6VkVSVEVYX0FSUkFZX0JJTkRJTkc6CiAgICAgICAgIGlmIChtX2JvdW5kVmVydGV4
QXJyYXlPYmplY3QtPmlzRGVmYXVsdE9iamVjdCgpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgICAgIHJldHVybiBtYWtlUmVmUHRyKHN0YXRpY19jYXN0PFdlYkdMVmVydGV4QXJy
YXlPYmplY3QmPigqbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0KSk7CisgICAgICAgIHJldHVybiBz
dGF0aWNfcG9pbnRlcl9jYXN0PFdlYkdMVmVydGV4QXJyYXlPYmplY3Q+KG1fYm91bmRWZXJ0ZXhB
cnJheU9iamVjdCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmdldFBhcmFtZXRlcihwbmFtZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNzAz
MThkY2RkNDM0YmM4OTBlMzg2Y2YzNjg4ZjliZjcyNzI3OGM4ZC4uZmE1N2JiNTQwMjNlM2ZmOTk2
MzRiM2E5OTkxOGUwOTNjYWEyZDRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0zMTIsNyArMzEyLDcgQEAgV2Vi
R0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXIoR0NHTGVudW0gdGFyZ2UKICAgICB9CiAjZW5kaWYKIAotICAgIGF1dG8gb2JqZWN0ID0g
bWFrZVJlZlB0cihtX2ZyYW1lYnVmZmVyQmluZGluZy0+Z2V0QXR0YWNobWVudE9iamVjdChhdHRh
Y2htZW50KSk7CisgICAgUmVmUHRyIG9iamVjdCA9IG1fZnJhbWVidWZmZXJCaW5kaW5nLT5nZXRB
dHRhY2htZW50T2JqZWN0KGF0dGFjaG1lbnQpOwogICAgIGlmICghb2JqZWN0KSB7CiAgICAgICAg
IGlmIChwbmFtZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9P
QkpFQ1RfVFlQRSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR3Jh
cGhpY3NDb250ZXh0R0w6Ok5PTkUpOwpAQCAtMzI3LDcgKzMyNyw3IEBAIFdlYkdMQW55IFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKEdDR0xl
bnVtIHRhcmdlCiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FU
VEFDSE1FTlRfT0JKRUNUX1RZUEU6CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFKTsKICAgICAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRToKLSAgICAgICAg
ICAgIHJldHVybiBtYWtlUmVmUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8V2ViR0xUZXh0dXJlJj4oKm9i
amVjdCkpOworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8V2ViR0xUZXh0
dXJlPihvYmplY3QpOwogICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZF
Ul9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUw6CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFOgogICAgICAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElO
R19FWFQ6CkBAIC0zNDIsNyArMzQyLDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2UKICAgICAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1Rf
VFlQRToKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR3JhcGhpY3ND
b250ZXh0R0w6OlJFTkRFUkJVRkZFUik7CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUU6Ci0gICAgICAgICAgICByZXR1cm4g
bWFrZVJlZlB0cihyZWludGVycHJldF9jYXN0PFdlYkdMUmVuZGVyYnVmZmVyJj4oKm9iamVjdCkp
OworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8V2ViR0xSZW5kZXJidWZm
ZXI+KG9iamVjdCk7CiAgICAgICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpGUkFNRUJVRkZFUl9BVFRB
Q0hNRU5UX0NPTE9SX0VOQ09ESU5HX0VYVDogewogICAgICAgICAgICAgaWYgKCFtX2V4dHNSR0Ip
IHsKICAgICAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6
SU5WQUxJRF9FTlVNLCAiZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyIiwgImludmFs
aWQgcGFyYW1ldGVyIG5hbWUgZm9yIHJlbmRlcmJ1ZmZlciBhdHRhY2htZW50Iik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwCmluZGV4IDNhMTY3NmQ3ZDZhNTYwYWZiNTc0M2EzY2RkMThmZTZjYmEzNWFlMDEuLjE0
MGU1YjU5MzJmNmYyNTA1YTE1NWNiYmVmODQ4YTA0MDM1YzY5MDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3Bw
CkBAIC0zMTY3LDcgKzMxNjcsNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRQYXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUpCiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6RElUSEVSOgogICAgICAgICByZXR1cm4gZ2V0Qm9vbGVhblBhcmFtZXRlcihwbmFtZSk7CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORzoK
LSAgICAgICAgcmV0dXJuIG1ha2VSZWZQdHIobV9ib3VuZFZlcnRleEFycmF5T2JqZWN0LT5nZXRF
bGVtZW50QXJyYXlCdWZmZXIoKSk7CisgICAgICAgIHJldHVybiBSZWZQdHIgeyBtX2JvdW5kVmVy
dGV4QXJyYXlPYmplY3QtPmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpIH07CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQklORElORzoKICAgICAgICAgcmV0dXJuIG1fZnJh
bWVidWZmZXJCaW5kaW5nOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZST05UX0ZBQ0U6
CkBAIC0zMzMyLDcgKzMzMzIsNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRQYXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUpCiAgICAgICAgIGlmIChtX29lc1ZlcnRleEFy
cmF5T2JqZWN0KSB7CiAgICAgICAgICAgICBpZiAobV9ib3VuZFZlcnRleEFycmF5T2JqZWN0LT5p
c0RlZmF1bHRPYmplY3QoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAg
ICAgICAgIHJldHVybiBtYWtlUmVmUHRyKHN0YXRpY19jYXN0PFdlYkdMVmVydGV4QXJyYXlPYmpl
Y3RPRVMmPigqbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0KSk7CisgICAgICAgICAgICByZXR1cm4g
c3RhdGljX3BvaW50ZXJfY2FzdDxXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPihtX2JvdW5kVmVy
dGV4QXJyYXlPYmplY3QpOwogICAgICAgICB9CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRQYXJhbWV0ZXIiLCAiaW52YWxpZCBw
YXJhbWV0ZXIgbmFtZSwgT0VTX3ZlcnRleF9hcnJheV9vYmplY3Qgbm90IGVuYWJsZWQiKTsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKaW5kZXggOGYxZmIxYWVmYzk4MjRlY2I2ZTVlZGE3
MmE1MTVmMmIyODBmYTJhOS4uMmM5YzdmZDgzMmEwN2I2OWFkZjgzNDkxM2QzYjVkZjE4NDRiZjg5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlv
blNpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rp
b25TaXRlLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBleGVjdXRl
UmVwYXJlbnRUYXNrKEhUTUxDb25zdHJ1Y3Rpb25TaXRlVGFzayYgdGFzaykKICAgICBBU1NFUlQo
dGFzay5vcGVyYXRpb24gPT0gSFRNTENvbnN0cnVjdGlvblNpdGVUYXNrOjpSZXBhcmVudCk7CiAg
ICAgQVNTRVJUKCF0YXNrLm5leHRDaGlsZCk7CiAKLSAgICBpZiAoYXV0byBwYXJlbnQgPSBtYWtl
UmVmUHRyKHRhc2suY2hpbGQtPnBhcmVudE5vZGUoKSkpCisgICAgaWYgKFJlZlB0ciBwYXJlbnQg
PSB0YXNrLmNoaWxkLT5wYXJlbnROb2RlKCkpCiAgICAgICAgIHBhcmVudC0+cGFyc2VyUmVtb3Zl
Q2hpbGQoKnRhc2suY2hpbGQpOwogCiAgICAgaWYgKHRhc2suY2hpbGQtPnBhcmVudE5vZGUoKSkK
QEAgLTE2MSw3ICsxNjEsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZXhlY3V0ZVRha2VBbGxDaGls
ZHJlbkFuZFJlcGFyZW50VGFzayhIVE1MQ29uc3RydWN0aW9uU2l0ZVRhcwogICAgIEFTU0VSVCh0
YXNrLm9wZXJhdGlvbiA9PSBIVE1MQ29uc3RydWN0aW9uU2l0ZVRhc2s6OlRha2VBbGxDaGlsZHJl
bkFuZFJlcGFyZW50KTsKICAgICBBU1NFUlQoIXRhc2submV4dENoaWxkKTsKIAotICAgIGF1dG8g
ZnVydGhlc3RCbG9jayA9IG1ha2VSZWZQdHIodGFzay5vbGRQYXJlbnQoKSk7CisgICAgUmVmUHRy
IGZ1cnRoZXN0QmxvY2sgPSB0YXNrLm9sZFBhcmVudCgpOwogICAgIHRhc2sucGFyZW50LT50YWtl
QWxsQ2hpbGRyZW5Gcm9tKGZ1cnRoZXN0QmxvY2suZ2V0KCkpOwogCiAgICAgUkVMRUFTRV9BU1NF
UlQoIXRhc2sucGFyZW50LT5wYXJlbnROb2RlKCkpOwpAQCAtMjcxLDcgKzI3MSw3IEBAIHZvaWQg
SFRNTENvbnN0cnVjdGlvblNpdGU6OmRpc3BhdGNoRG9jdW1lbnRFbGVtZW50QXZhaWxhYmxlSWZO
ZWVkZWQoKQogICAgIGlmIChtX2lzUGFyc2luZ0ZyYWdtZW50KQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIobV9kb2N1bWVudC5mcmFtZSgpKSkKKyAg
ICBpZiAoUmVmUHRyIGZyYW1lID0gbV9kb2N1bWVudC5mcmFtZSgpKQogICAgICAgICBmcmFtZS0+
aW5qZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50U3RhcnQp
OwogfQogCkBAIC03NzksNyArNzc5LDcgQEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6Zmlu
ZEZvc3RlclNpdGUoSFRNTENvbnN0cnVjdGlvblNpdGVUYXNrJiB0YXNrKQogCiAgICAgaWYgKGF1
dG8qIGxhc3RUYWJsZUVsZW1lbnRSZWNvcmQgPSBtX29wZW5FbGVtZW50cy50b3Btb3N0KHRhYmxl
VGFnLT5sb2NhbE5hbWUoKSkpIHsKICAgICAgICAgYXV0byYgbGFzdFRhYmxlRWxlbWVudCA9IGxh
c3RUYWJsZUVsZW1lbnRSZWNvcmQtPmVsZW1lbnQoKTsKLSAgICAgICAgYXV0byBwYXJlbnQgPSBt
YWtlUmVmUHRyKGxhc3RUYWJsZUVsZW1lbnQucGFyZW50Tm9kZSgpKTsKKyAgICAgICAgUmVmUHRy
IHBhcmVudCA9IGxhc3RUYWJsZUVsZW1lbnQucGFyZW50Tm9kZSgpOwogICAgICAgICAvLyBXaGVu
IHBhcnNpbmcgSFRNTCBmcmFnbWVudHMsIHdlIHNraXAgc3RlcCA0LjIgKCJMZXQgcm9vdCBiZSBh
IG5ldyBodG1sIGVsZW1lbnQgd2l0aCBubyBhdHRyaWJ1dGVzIikgZm9yIGVmZmljaWVuY3ksCiAg
ICAgICAgIC8vIGFuZCBpbnN0ZWFkIHVzZSB0aGUgRG9jdW1lbnRGcmFnbWVudCBhcyBhIHJvb3Qg
bm9kZS4gU28gd2UgbXVzdCB0cmVhdCB0aGUgcm9vdCBub2RlIChEb2N1bWVudEZyYWdtZW50KSBh
cyBpZiBpdCBpcyBhIGh0bWwgZWxlbWVudCBoZXJlLgogICAgICAgICBib29sIHBhcmVudENhbkJl
Rm9zdGVyUGFyZW50ID0gcGFyZW50ICYmIChwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSB8fCAobV9p
c1BhcnNpbmdGcmFnbWVudCAmJiBwYXJlbnQgPT0gJm1fb3BlbkVsZW1lbnRzLnJvb3ROb2RlKCkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nh
bm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIu
Y3BwCmluZGV4IDk0ODE5ZWNlZTllNzczZTRjNTg1ZDk3NjQ3ZDQ1OGM2MDg1NGUyZWYuLmZhOTlh
NjBkNmEyNzhkZDlkODJmZmJlOWVlMjhhNzcxMzZkMzIwMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcApAQCAtMjM2LDcgKzIzNiw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAobWF0Y2goYXR0cmlidXRlTmFtZSwgbWVkaWFB
dHRyKSAmJiBtX21lZGlhQXR0cmlidXRlLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICAgICAgbV9t
ZWRpYUF0dHJpYnV0ZSA9IGF0dHJpYnV0ZVZhbHVlOwogICAgICAgICAgICAgICAgIGF1dG8gbWVk
aWFTZXQgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUoYXR0cmlidXRlVmFsdWUsIE1lZGlhUXVlcnlQ
YXJzZXJDb250ZXh0KG1fZG9jdW1lbnQpKTsKLSAgICAgICAgICAgICAgICBhdXRvIGRvY3VtZW50
RWxlbWVudCA9IG1ha2VSZWZQdHIobV9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQoKSk7CisgICAg
ICAgICAgICAgICAgUmVmUHRyIGRvY3VtZW50RWxlbWVudCA9IG1fZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50KCk7CiAgICAgICAgICAgICAgICAgTE9HKE1lZGlhUXVlcmllcywgIkhUTUxQcmVsb2Fk
U2Nhbm5lciAlcCBwcm9jZXNzQXR0cmlidXRlIGV2YWx1YXRpbmcgbWVkaWEgcXVlcmllcyIsIHRo
aXMpOwogICAgICAgICAgICAgICAgIG1fbWVkaWFNYXRjaGVkID0gTWVkaWFRdWVyeUV2YWx1YXRv
ciB7IG1fZG9jdW1lbnQucHJpbnRpbmcoKSA/ICJwcmludCIgOiAic2NyZWVuIiwgbV9kb2N1bWVu
dCwgZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50LT5jb21wdXRlZFN0eWxlKCkgOiBu
dWxscHRyIH0uZXZhbHVhdGUobWVkaWFTZXQuZ2V0KCkpOwogICAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHAKaW5kZXgg
YzJlMzA3ZmEwYTNiMTQxODZiMTJhMTA0MDJmZTZjZmFmOTE1MDVhZC4uZjE0MjA0YTFkMDQxYzdi
ZDA3YzA1NGI1ODVhNzliMGExMmNlNDdmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIFJlZjxGb3Jt
RGF0YT4gWFNTQXVkaXRvckRlbGVnYXRlOjpnZW5lcmF0ZVZpb2xhdGlvblJlcG9ydChjb25zdCBY
U1NJbmZvJiB4c3NJbmZvCiAgICAgYXV0byYgZnJhbWVMb2FkZXIgPSBtX2RvY3VtZW50LmZyYW1l
KCktPmxvYWRlcigpOwogICAgIFN0cmluZyBodHRwQm9keTsKICAgICBpZiAoZnJhbWVMb2FkZXIu
ZG9jdW1lbnRMb2FkZXIoKSkgewotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IG1ha2VSZWZQ
dHIoZnJhbWVMb2FkZXIuZG9jdW1lbnRMb2FkZXIoKS0+b3JpZ2luYWxSZXF1ZXN0KCkuaHR0cEJv
ZHkoKSkpCisgICAgICAgIGlmIChSZWZQdHIgZm9ybURhdGEgPSBmcmFtZUxvYWRlci5kb2N1bWVu
dExvYWRlcigpLT5vcmlnaW5hbFJlcXVlc3QoKS5odHRwQm9keSgpKQogICAgICAgICAgICAgaHR0
cEJvZHkgPSBmb3JtRGF0YS0+ZmxhdHRlblRvU3RyaW5nKCk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNw
cAppbmRleCA5MzM0NzIyNmU5NmYyMTk3YzVmNTZlZDcyNjExNDY2OWJiMTBhN2Y3Li40NmM0NzA1
MDg1N2Q0ZjEzZDgyNzg1NmRlMWExYmYyYjA4YTU3OGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTE3
MCw3ICsxNzAsNyBAQCB2b2lkIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6ZGVmYXVsdEV2
ZW50SGFuZGxlcihFdmVudCYgZXZlbnQpCiAgICAgICAgIC8vIGNhdXNlIGV2ZW50cyB0byBiZSBz
ZW50IHRvIHRoZSBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQuIFRvCiAgICAgICAgIC8vIHBy
ZXZlbnQgYW4gaW5maW5pdGUgbG9vcCwgd2UgbXVzdCBjaGVjayBmb3IgdGhpcyBjYXNlIGJlZm9y
ZSBzZW5kaW5nCiAgICAgICAgIC8vIHRoZSBldmVudCB1cCB0aGUgY2hhaW4uCi0gICAgICAgIGlm
IChhdXRvIGhvc3QgPSBtYWtlUmVmUHRyKHNoYWRvd0hvc3QoKSkpCisgICAgICAgIGlmIChSZWZQ
dHIgaG9zdCA9IHNoYWRvd0hvc3QoKSkKICAgICAgICAgICAgIGhvc3QtPmRlZmF1bHRFdmVudEhh
bmRsZXIoZXZlbnQpOwogICAgIH0KICAgICBpZiAoIWV2ZW50LmRlZmF1bHRIYW5kbGVkKCkpCkBA
IC0yNDEsNyArMjQxLDcgQEAgUmVmPFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ+IFNl
YXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ6OmNyZWF0ZShEb2MKIAogc3RkOjpvcHRpb25h
bDxTdHlsZTo6RWxlbWVudFN0eWxlPiBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50Ojpy
ZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBS
ZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKQogewotICAgIGF1dG8gaW5wdXQgPSBtYWtlUmVm
UHRyKGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KHNoYWRvd0hvc3QoKSkpOworICAgIFJlZlB0
ciBpbnB1dCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KHNoYWRvd0hvc3QoKSk7CiAgICAg
aWYgKGlucHV0ICYmIGlucHV0LT5tYXhSZXN1bHRzKCkgPj0gMCkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIApAQCAtMjU2LDcgKzI1Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U3R5bGU6OkVs
ZW1lbnRTdHlsZT4gU2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudDo6cmVzb2x2ZUN1c3Rv
CiB2b2lkIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQmIGV2ZW50KQogewogICAgIC8vIE9uIG1vdXNlZG93biwgYnJpbmcgdXAgYSBtZW51
LCBpZiBuZWVkZWQKLSAgICBhdXRvIGlucHV0ID0gbWFrZVJlZlB0cihkb3duY2FzdDxIVE1MSW5w
dXRFbGVtZW50PihzaGFkb3dIb3N0KCkpKTsKKyAgICBSZWZQdHIgaW5wdXQgPSBkb3duY2FzdDxI
VE1MSW5wdXRFbGVtZW50PihzaGFkb3dIb3N0KCkpOwogICAgIGlmIChpbnB1dCAmJiBldmVudC50
eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50ICYmIGlzPE1vdXNlRXZlbnQ+KGV2
ZW50KSAmJiBkb3duY2FzdDxNb3VzZUV2ZW50PihldmVudCkuYnV0dG9uKCkgPT0gTGVmdEJ1dHRv
bikgewogICAgICAgICBpbnB1dC0+Zm9jdXMoKTsKICAgICAgICAgaW5wdXQtPnNlbGVjdCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dFBsYWNlaG9sZGVyRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVt
ZW50LmNwcAppbmRleCA4NDM5NzU5Zjg1MTM1ZjNkNGYwYTg2NzE2MzhmOTNjZmE1NTk3Y2RhLi4z
M2U1MGYzYzY2ZGEyODhjYzY5NzhlMjdlNzQyYjA4ZWViYTNjYjYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcApAQCAt
NTMsNyArNTMsNyBAQCBUZXh0UGxhY2Vob2xkZXJFbGVtZW50OjpUZXh0UGxhY2Vob2xkZXJFbGVt
ZW50KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgTGF5b3V0UwogYXV0byBUZXh0UGxhY2Vob2xk
ZXJFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlIGluc2VydGlvblR5
cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKSAtPiBJbnNlcnRlZEludG9B
bmNlc3RvclJlc3VsdAogewogICAgIGlmIChpbnNlcnRpb25UeXBlLnRyZWVTY29wZUNoYW5nZWQp
IHsKLSAgICAgICAgaWYgKGF1dG8gc2hhZG93SG9zdCA9IG1ha2VSZWZQdHIocGFyZW50T2ZJbnNl
cnRlZFRyZWUuc2hhZG93SG9zdCgpKTsgaXM8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KHNo
YWRvd0hvc3QpKQorICAgICAgICBpZiAoUmVmUHRyIHNoYWRvd0hvc3QgPSBwYXJlbnRPZkluc2Vy
dGVkVHJlZS5zaGFkb3dIb3N0KCk7IGlzPEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50PihzaGFk
b3dIb3N0KSkKICAgICAgICAgICAgIGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
Pigqc2hhZG93SG9zdCkuc2V0Q2FuU2hvd1BsYWNlaG9sZGVyKGZhbHNlKTsKICAgICB9CiAgICAg
cmV0dXJuIEhUTUxEaXZFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihpbnNlcnRpb25UeXBl
LCBwYXJlbnRPZkluc2VydGVkVHJlZSk7CkBAIC02Miw3ICs2Miw3IEBAIGF1dG8gVGV4dFBsYWNl
aG9sZGVyRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSBpbnNlcnRp
b25UeXBlLCBDCiB2b2lkIFRleHRQbGFjZWhvbGRlckVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0
b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9mUmVt
b3ZlZFRyZWUpCiB7CiAgICAgaWYgKHJlbW92YWxUeXBlLnRyZWVTY29wZUNoYW5nZWQpIHsKLSAg
ICAgICAgaWYgKGF1dG8gc2hhZG93SG9zdCA9IG1ha2VSZWZQdHIob2xkUGFyZW50T2ZSZW1vdmVk
VHJlZS5zaGFkb3dIb3N0KCkpOyBpczxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oc2hhZG93
SG9zdCkpCisgICAgICAgIGlmIChSZWZQdHIgc2hhZG93SG9zdCA9IG9sZFBhcmVudE9mUmVtb3Zl
ZFRyZWUuc2hhZG93SG9zdCgpOyBpczxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oc2hhZG93
SG9zdCkpCiAgICAgICAgICAgICBkb3duY2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4o
KnNoYWRvd0hvc3QpLnNldENhblNob3dQbGFjZWhvbGRlcih0cnVlKTsKICAgICB9CiAgICAgSFRN
TERpdkVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IocmVtb3ZhbFR5cGUsIG9sZFBhcmVudE9m
UmVtb3ZlZFRyZWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJh
bmRHZW5lcmljVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5k
R2VuZXJpY1RleHRUcmFjay5jcHAKaW5kZXggMjM5MWQ1ZWRlNTcyNjAxYWI3OTRkMzI1NWE2ZmU5
ZTE1ZDRiODNkMi4uN2IwNzJhZGE3ZjNhMmQ0NjEwZTAwODA1OGY4MDYyYWI0NGQzNTAyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJh
Y2suY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjph
ZGRHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmIGluYmFuZEN1ZSkKIAogdm9pZCBJbmJhbmRH
ZW5lcmljVGV4dFRyYWNrOjp1cGRhdGVHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmIGluYmFu
ZEN1ZSkKIHsKLSAgICBhdXRvIGN1ZSA9IG1ha2VSZWZQdHIobV9jdWVNYXAuZmluZChpbmJhbmRD
dWUudW5pcXVlSWQoKSkpOworICAgIFJlZlB0ciBjdWUgPSBtX2N1ZU1hcC5maW5kKGluYmFuZEN1
ZS51bmlxdWVJZCgpKTsKICAgICBpZiAoIWN1ZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNTEs
NyArMTUxLDcgQEAgdm9pZCBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjp1cGRhdGVHZW5lcmljQ3Vl
KEluYmFuZEdlbmVyaWNDdWUmIGluYmFuZEN1ZSkKIAogdm9pZCBJbmJhbmRHZW5lcmljVGV4dFRy
YWNrOjpyZW1vdmVHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmIGluYmFuZEN1ZSkKIHsKLSAg
ICBhdXRvIGN1ZSA9IG1ha2VSZWZQdHIobV9jdWVNYXAuZmluZChpbmJhbmRDdWUudW5pcXVlSWQo
KSkpOworICAgIFJlZlB0ciBjdWUgPSBtX2N1ZU1hcC5maW5kKGluYmFuZEN1ZS51bmlxdWVJZCgp
KTsKICAgICBpZiAoY3VlKSB7CiAgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICpjdWUp
OwogICAgICAgICByZW1vdmVDdWUoKmN1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFjay5jcHAKaW5kZXggNWNlMjZlNmFkYTQwNWYwOWYzMWZmYzczODhjYTg4OTgzMGNjOGFjMi4u
Mjg0ZWVkMTg2MzM1ZGI5MDc1NWM2MDhiMDYzZDIzOTI3ODQxNmIwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcApAQCAtMzQ1LDcgKzM0NSw3IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IFRleHRUcmFjazo6YWRkQ3VlKFJlZjxUZXh0VHJhY2tDdWU+JiYgY3VlKQogCiAgICAg
Ly8gVGhlIGFkZEN1ZShjdWUpIG1ldGhvZCBvZiBUZXh0VHJhY2sgb2JqZWN0cywgd2hlbiBpbnZv
a2VkLCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgogCi0gICAgYXV0byBjdWVUcmFjayA9
IG1ha2VSZWZQdHIoY3VlLT50cmFjaygpKTsKKyAgICBSZWZQdHIgY3VlVHJhY2sgPSBjdWUtPnRy
YWNrKCk7CiAgICAgaWYgKGN1ZVRyYWNrID09IHRoaXMpCiAgICAgICAgIHJldHVybiB7IH07CiAK
QEAgLTQ0NSw3ICs0NDUsNyBAQCB2b2lkIFRleHRUcmFjazo6YWRkUmVnaW9uKFJlZjxWVFRSZWdp
b24+JiYgcmVnaW9uKQogCiAgICAgLy8gMS4gSWYgdGhlIGdpdmVuIHJlZ2lvbiBpcyBpbiBhIHRl
eHQgdHJhY2sgbGlzdCBvZiByZWdpb25zLCB0aGVuIHJlbW92ZQogICAgIC8vIHJlZ2lvbiBmcm9t
IHRoYXQgdGV4dCB0cmFjayBsaXN0IG9mIHJlZ2lvbnMuCi0gICAgYXV0byByZWdpb25UcmFjayA9
IG1ha2VSZWZQdHIocmVnaW9uLT50cmFjaygpKTsKKyAgICBSZWZQdHIgcmVnaW9uVHJhY2sgPSBy
ZWdpb24tPnRyYWNrKCk7CiAgICAgaWYgKHJlZ2lvblRyYWNrICYmIHJlZ2lvblRyYWNrICE9IHRo
aXMpCiAgICAgICAgIHJlZ2lvblRyYWNrLT5yZW1vdmVSZWdpb24ocmVnaW9uLmdldCgpKTsKIApA
QCAtNDUzLDcgKzQ1Myw3IEBAIHZvaWQgVGV4dFRyYWNrOjphZGRSZWdpb24oUmVmPFZUVFJlZ2lv
bj4mJiByZWdpb24pCiAgICAgLy8gYSByZWdpb24gd2l0aCB0aGUgc2FtZSBpZGVudGlmaWVyIGFz
IHJlZ2lvbiByZXBsYWNlIHRoZSB2YWx1ZXMgb2YgdGhhdAogICAgIC8vIHJlZ2lvbidzIHdpZHRo
LCBoZWlnaHQsIGFuY2hvciBwb2ludCwgdmlld3BvcnQgYW5jaG9yIHBvaW50IGFuZCBzY3JvbGwK
ICAgICAvLyBhdHRyaWJ1dGVzIHdpdGggdGhvc2Ugb2YgcmVnaW9uLgotICAgIGF1dG8gZXhpc3Rp
bmdSZWdpb24gPSBtYWtlUmVmUHRyKHJlZ2lvbkxpc3QuZ2V0UmVnaW9uQnlJZChyZWdpb24tPmlk
KCkpKTsKKyAgICBSZWZQdHIgZXhpc3RpbmdSZWdpb24gPSByZWdpb25MaXN0LmdldFJlZ2lvbkJ5
SWQocmVnaW9uLT5pZCgpKTsKICAgICBpZiAoZXhpc3RpbmdSZWdpb24pIHsKICAgICAgICAgZXhp
c3RpbmdSZWdpb24tPnVwZGF0ZVBhcmFtZXRlcnNGcm9tUmVnaW9uKHJlZ2lvbik7CiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCA2NDExNzQyNWJhNWM1YjZhNzFkMTkwZGZjOGYxZWVm
YjRmZmM2MzdjLi43NjJkNGNhZGMwMDcwNmRmZjAwZmU0MjFiMmY1ZDNmZjhlYzM4ZmYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwCkBAIC0xMDE3LDcgKzEwMTcsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2
b2lkPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldEVtdWxhdGVkTWVkaWEoY29uc3QgU3RyaW5nJgog
ICAgIC8vIEZJWE1FOiBTY2hlZHVsZSBhIHJlbmRlcmluZyB1cGRhdGUgaW5zdGVhZCBvZiBzeW5j
aHJvbm91c2x5IHVwZGF0aW5nIHRoZSBsYXlvdXQuCiAgICAgbV9pbnNwZWN0ZWRQYWdlLnVwZGF0
ZVN0eWxlQWZ0ZXJDaGFuZ2VJbkVudmlyb25tZW50KCk7CiAKLSAgICBhdXRvIGRvY3VtZW50ID0g
bWFrZVJlZlB0cihtX2luc3BlY3RlZFBhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnQoKSk7CisgICAg
UmVmUHRyIGRvY3VtZW50ID0gbV9pbnNwZWN0ZWRQYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50KCk7
CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIHsgfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggN2Q4YmIzNmJjNGQ3OWRiYTc3NmNhYmI0
YzI1NzU3MTU5N2QzMDkyNy4uNTk2ODEzZmEyZDgwZGU2YjMxODhiNzgwZDFiYzAyZTU0ODMxNDc5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC00MjMsOCAr
NDIzLDggQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE0KICAgICAgICAgcmV0dXJuOwogI2VuZGlm
CiAKLSAgICBpZiAoYXV0byBkb2N1bWVudCA9IG1ha2VSZWZQdHIodGhpcy0+ZG9jdW1lbnQoKSkp
IHsKLSAgICAgICAgaWYgKGF1dG8gZG9tV2luZG93ID0gbWFrZVJlZlB0cihkb2N1bWVudC0+ZG9t
V2luZG93KCkpKSB7CisgICAgaWYgKFJlZlB0ciBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCkp
IHsKKyAgICAgICAgaWYgKFJlZlB0ciBkb21XaW5kb3cgPSBkb2N1bWVudC0+ZG9tV2luZG93KCkp
IHsKICAgICAgICAgICAgIGlmIChkb2N1bWVudC0+c2V0dGluZ3MoKS5wZXJmb3JtYW5jZU5hdmln
YXRpb25UaW1pbmdBUElFbmFibGVkKCkpCiAgICAgICAgICAgICAgICAgZG9tV2luZG93LT5wZXJm
b3JtYW5jZSgpLm5hdmlnYXRpb25GaW5pc2hlZChtZXRyaWNzKTsKICAgICAgICAgfQpAQCAtOTI0
LDcgKzkyNCw3IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6OnRyeUxvYWRpbmdSZWRpcmVjdFJlcXVl
c3RGcm9tQXBwbGljYXRpb25DYWNoZShjb25zdCBSZXNvdXJjCiAgICAgLy8gSWYgdGhlIFJlc291
cmNlTG9hZGVyIGlzIGluZGVlZCBjYW5jZWxsZWQsIGl0IHdvdWxkIG5vcm1hbGx5IHNlbmQgcmVz
b3VyY2UgbG9hZCBjYWxsYmFja3MuCiAgICAgLy8gVGhlcmVmb3JlLCBzZXZlciBvdXIgcmVsYXRp
b25zaGlwIHdpdGggdGhlIG5ldHdvcmsgbG9hZCBidXQgcHJldmVudCB0aGUgUmVzb3VyY2VMb2Fk
ZXIgZnJvbSBzZW5kaW5nIFJlc291cmNlTG9hZE5vdGlmaWVyIGNhbGxiYWNrcy4KIAotICAgIGF1
dG8gcmVzb3VyY2VMb2FkZXIgPSBtYWtlUmVmUHRyKG1haW5SZXNvdXJjZUxvYWRlcigpKTsKKyAg
ICBSZWZQdHIgcmVzb3VyY2VMb2FkZXIgPSBtYWluUmVzb3VyY2VMb2FkZXIoKTsKICAgICBpZiAo
cmVzb3VyY2VMb2FkZXIpIHsKICAgICAgICAgQVNTRVJUKHJlc291cmNlTG9hZGVyLT5zaG91bGRT
ZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkpOwogICAgICAgICByZXNvdXJjZUxvYWRlci0+c2V0
U2VuZENhbGxiYWNrUG9saWN5KFNlbmRDYWxsYmFja1BvbGljeTo6RG9Ob3RTZW5kQ2FsbGJhY2tz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCmluZGV4IDZiZWFmYzEw
ZDIzOWIwNDQ3YjNkMGQzNmJkOTVkNzZmNThjOGJjNGEuLjA5NGE1MWUzOTI2NTJjYmVkYzM2YmE1
MzllNGQ1NWU3NzNlMWEwNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3Jt
U3VibWlzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9u
LmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIFJlZjxGb3JtU3VibWlzc2lvbj4gRm9ybVN1Ym1pc3Np
b246OmNyZWF0ZShIVE1MRm9ybUVsZW1lbnQmIGZvcm0sIEhUTUxGb3JtQ29udHJvCiB7CiAgICAg
YXV0byBjb3BpZWRBdHRyaWJ1dGVzID0gYXR0cmlidXRlczsKIAotICAgIGF1dG8gc3VibWl0dGVy
ID0gbWFrZVJlZlB0cihvdmVycmlkZVN1Ym1pdHRlciA/IG92ZXJyaWRlU3VibWl0dGVyIDogZm9y
bS5maW5kU3VibWl0dGVyKGV2ZW50KSk7CisgICAgUmVmUHRyIHN1Ym1pdHRlciA9IG92ZXJyaWRl
U3VibWl0dGVyID8gb3ZlcnJpZGVTdWJtaXR0ZXIgOiBmb3JtLmZpbmRTdWJtaXR0ZXIoZXZlbnQp
OwogICAgIGlmIChzdWJtaXR0ZXIpIHsKICAgICAgICAgQXRvbVN0cmluZyBhdHRyaWJ1dGVWYWx1
ZTsKICAgICAgICAgaWYgKCEoYXR0cmlidXRlVmFsdWUgPSBzdWJtaXR0ZXItPmF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oZm9ybWFjdGlvbkF0dHIpKS5pc051bGwoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGRlMGJjMDg5ZWJjNzVmMjNhNjQxYmQzZjcy
MTA1MWYzN2JjNWI0YWUuLjRhZDQ1YjZlZDRmNWUwN2JjODA3ZmE2Zjk1Yzk3NjNhMDg5YmZkNjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTM0NCw3ICsxMzQ0LDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChGcmFtZUxvYWRSZXF1ZXN0JiYgZnJhbWVMb2Fk
UmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWYKICAgICBib29sIGlzRm9ybVN1Ym1pc3Npb24gPSBm
b3JtU3RhdGU7CiAKICAgICAvLyBUaGUgc2VhcmNoIGZvciBhIHRhcmdldCBmcmFtZSBpcyBkb25l
IGVhcmxpZXIgaW4gdGhlIGNhc2Ugb2YgZm9ybSBzdWJtaXNzaW9uLgotICAgIGF1dG8gdGFyZ2V0
RnJhbWUgPSBpc0Zvcm1TdWJtaXNzaW9uID8gbnVsbHB0ciA6IG1ha2VSZWZQdHIoZmluZEZyYW1l
Rm9yTmF2aWdhdGlvbihlZmZlY3RpdmVGcmFtZU5hbWUpKTsKKyAgICBhdXRvIHRhcmdldEZyYW1l
ID0gaXNGb3JtU3VibWlzc2lvbiA/IG51bGxwdHIgOiBSZWZQdHIgeyBmaW5kRnJhbWVGb3JOYXZp
Z2F0aW9uKGVmZmVjdGl2ZUZyYW1lTmFtZSkgfTsKICAgICBpZiAodGFyZ2V0RnJhbWUgJiYgdGFy
Z2V0RnJhbWUgIT0gJm1fZnJhbWUpIHsKICAgICAgICAgZnJhbWVMb2FkUmVxdWVzdC5zZXRGcmFt
ZU5hbWUoIl9zZWxmIik7CiAgICAgICAgIHRhcmdldEZyYW1lLT5sb2FkZXIoKS5sb2FkVVJMKFdU
Rk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHJlZmVycmVyLCBuZXdMb2FkVHlwZSwgZXZlbnQsIFdU
Rk1vdmUoZm9ybVN0YXRlKSwgV1RGTW92ZShwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCksIGNvbXBs
ZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKSk7CkBAIC0yMDIwLDcgKzIwMjAsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoKQogICAgICAgICBtX2ZyYW1lLmRv
Y3VtZW50KCkgPyBtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6
ZWRUb0xlbmd0aCgpLnV0ZjgoKS5kYXRhKCkgOiAiIiwKICAgICAgICAgcGRsID8gcGRsLT51cmwo
KS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKS51dGY4KCkuZGF0YSgpIDogIjxubyBw
cm92aXNpb25hbCBEb2N1bWVudExvYWRlcj4iLCBjYWNoZWRQYWdlLmdldCgpKTsKIAotICAgIGlm
IChhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0cihtX2ZyYW1lLmRvY3VtZW50KCkpKSB7CisgICAg
aWYgKFJlZlB0ciBkb2N1bWVudCA9IG1fZnJhbWUuZG9jdW1lbnQoKSkgewogICAgICAgICAvLyBJ
biB0aGUgY2FzZSB3aGVyZSB3ZSdyZSByZXN0b3JpbmcgZnJvbSBhIGNhY2hlZCBwYWdlLCBvdXIg
ZG9jdW1lbnQgd2lsbCBub3QKICAgICAgICAgLy8gYmUgY29ubmVjdGVkIHRvIGl0cyBmcmFtZSB5
ZXQsIHNvIHRoZSBmb2xsb3dpbmcgY2FsbCB3aXRoIGJlIGEgbm8tb3AuIFdlIHdpbGwKICAgICAg
ICAgLy8gYXR0ZW1wdCB0byBjb25maXJtIGFueSBhY3RpdmUgY29tcG9zaXRpb24gb25jZSBhZ2Fp
biBpbiB0aGlzIHNjZW5hcmlvIGFmdGVyIHdlCkBAIC0yMTA1LDcgKzIxMDUsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoKQogICAgIH0gZWxzZQogICAgICAgICBk
aWRPcGVuVVJMKCk7CiAKLSAgICBpZiAoYXV0byBkb2N1bWVudCA9IG1ha2VSZWZQdHIobV9mcmFt
ZS5kb2N1bWVudCgpKSkKKyAgICBpZiAoUmVmUHRyIGRvY3VtZW50ID0gbV9mcmFtZS5kb2N1bWVu
dCgpKQogICAgICAgICBkb2N1bWVudC0+ZWRpdG9yKCkuY29uZmlybU9yQ2FuY2VsQ29tcG9zaXRp
b25BbmROb3RpZnlDbGllbnQoKTsKIAogICAgIExPRyhMb2FkaW5nLCAiV2ViQ29yZUxvYWRpbmcg
JXM6IEZpbmlzaGVkIGNvbW1pdHRpbmcgcHJvdmlzaW9uYWwgbG9hZCB0byBVUkwgJXMiLCBtX2Zy
YW1lLnRyZWUoKS51bmlxdWVOYW1lKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwKQEAgLTI1ODYs
NyArMjU4Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9yVGhpc0Zy
YW1lKCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChhdXRvIGRvbVdp
bmRvdyA9IG1ha2VSZWZQdHIobV9mcmFtZS5kb2N1bWVudCgpID8gbV9mcmFtZS5kb2N1bWVudCgp
LT5kb21XaW5kb3coKSA6IG51bGxwdHIpKQorICAgICAgICBpZiAoUmVmUHRyIGRvbVdpbmRvdyA9
IG1fZnJhbWUuZG9jdW1lbnQoKSA/IG1fZnJhbWUuZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkgOiBu
dWxscHRyKQogICAgICAgICAgICAgZG9tV2luZG93LT5wZXJmb3JtYW5jZSgpLnNjaGVkdWxlTmF2
aWdhdGlvbk9ic2VydmF0aW9uVGFza0lmTmVlZGVkKCk7CiAKICAgICAgICAgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IgPSBtX2RvY3VtZW50TG9hZGVyLT5tYWluRG9jdW1lbnRFcnJvcigpOwpA
QCAtMzI1NSw4ICszMjU1LDggQEAgc3RhdGljIGJvb2wgaXNTYW1lRG9jdW1lbnRSZWxvYWQoYm9v
bCBpc05ld05hdmlnYXRpb24sIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUpCiAKIHZvaWQgRnJhbWVM
b2FkZXI6OnNjcm9sbFRvRnJhZ21lbnRXaXRoUGFyZW50Qm91bmRhcnkoY29uc3QgVVJMJiB1cmws
IGJvb2wgaXNOZXdOYXZpZ2F0aW9uKQogewotICAgIGF1dG8gdmlldyA9IG1ha2VSZWZQdHIobV9m
cmFtZS52aWV3KCkpOwotICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmUHRyKG1fZnJhbWUuZG9j
dW1lbnQoKSk7CisgICAgUmVmUHRyIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKTsKKyAgICBSZWZQdHIg
ZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCk7CiAgICAgaWYgKCF2aWV3IHx8ICFkb2N1bWVu
dCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
SGlzdG9yeUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250
cm9sbGVyLmNwcAppbmRleCAwM2IyNGU4ODgzZDA4ZWZjN2Q4YTFkZjhhZDVlMTUxYmFlYTQ1Nzc2
Li5iM2FjZjA2YjQ5YTgyYjJhNGEwOWMxMzVjMDllZjgwM2VhMDdkZDMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6cmVzdG9yZVNjcm9sbFBvc2l0aW9u
QW5kVmlld1N0YXRlKCkKICAgICBpZiAoIW1fY3VycmVudEl0ZW0pCiAgICAgICAgIHJldHVybjsK
IAotICAgIGF1dG8gdmlldyA9IG1ha2VSZWZQdHIobV9mcmFtZS52aWV3KCkpOworICAgIFJlZlB0
ciB2aWV3ID0gbV9mcmFtZS52aWV3KCk7CiAKICAgICAvLyBGSVhNRTogVGhlcmUgaXMgc29tZSBz
Y3JvbGxpbmcgcmVsYXRlZCB3b3JrIHRoYXQgbmVlZHMgdG8gaGFwcGVuIHdoZW5ldmVyIGEgcGFn
ZSBnb2VzIGludG8gdGhlCiAgICAgLy8gYmFjay9mb3J3YXJkIGNhY2hlIGFuZCBzaW1pbGFyIHdv
cmsgdGhhdCBuZWVkcyB0byBvY2N1ciB3aGVuIGl0IGNvbWVzIG91dC4gVGhpcyBpcyB3aGVyZSB3
ZSBkbyB0aGUgd29yawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRp
b25TY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVs
ZXIuY3BwCmluZGV4IGMxNDIyNjhiNzRiZDc5MmE1ODY1NjdkMjRjMzJlM2E1NzNlNWRkNjcuLmI2
MTZiYTdkZWZlMGI4NTNhODg5ZDY3OWQ1NGQwZjNjMzg4OTFhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgU2NoZWR1bGVkVVJMTmF2aWdhdGlvbihEb2N1bWVudCYgaW5pdGlhdGlu
Z0RvY3VtZW50LCBkb3VibGUgZGVsYXksIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIExvY2tIaXN0b3J5IGxvY2tI
aXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QsIGJvb2wgZHVy
aW5nTG9hZCwgYm9vbCBpc0xvY2F0aW9uQ2hhbmdlKQogICAgICAgICA6IFNjaGVkdWxlZE5hdmln
YXRpb24oZGVsYXksIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBkdXJpbmdMb2Fk
LCBpc0xvY2F0aW9uQ2hhbmdlLCBpbml0aWF0aW5nRG9jdW1lbnQuc2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeVRvUHJvcGFnYXRlKCkpCiAgICAgICAgICwgbV9pbml0aWF0aW5nRG9jdW1lbnQg
eyBtYWtlUmVmKGluaXRpYXRpbmdEb2N1bWVudCkgfQotICAgICAgICAsIG1fc2VjdXJpdHlPcmln
aW57IG1ha2VSZWZQdHIoc2VjdXJpdHlPcmlnaW4pIH0KKyAgICAgICAgLCBtX3NlY3VyaXR5T3Jp
Z2luIHsgc2VjdXJpdHlPcmlnaW4gfQogICAgICAgICAsIG1fdXJsIHsgdXJsIH0KICAgICAgICAg
LCBtX3JlZmVycmVyIHsgcmVmZXJyZXIgfQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
ZnJhbWVMb2FkZXIuY3BwCmluZGV4IDBkOWRjNjYwZDMyODhmNjAzM2I1ZjQ4MGE2ZTdiNzgyNWVh
YjU2N2QuLmMyM2UwNzM1NmM2ODVjODdlMmY4MWI0NDRlNzkyNzdkYzk5MzM5MTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcApAQCAtMjQ1LDcgKzI0NSw3IEBAIEZy
YW1lKiBGcmFtZUxvYWRlcjo6U3ViZnJhbWVMb2FkZXI6OmxvYWRPclJlZGlyZWN0U3ViZnJhbWUo
SFRNTEZyYW1lT3duZXJFbGVtZW50CiAgICAgVVJMIHVwZ3JhZGVkUmVxdWVzdFVSTCA9IHJlcXVl
c3RVUkw7CiAgICAgaW5pdGlhdGluZ0RvY3VtZW50LmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT51
cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVkZWQodXBncmFkZWRSZXF1ZXN0VVJMLCBDb250ZW50
U2VjdXJpdHlQb2xpY3k6Okluc2VjdXJlUmVxdWVzdFR5cGU6OkxvYWQpOwogCi0gICAgUmVmUHRy
PEZyYW1lPiBmcmFtZSA9IG1ha2VSZWZQdHIob3duZXJFbGVtZW50LmNvbnRlbnRGcmFtZSgpKTsK
KyAgICBSZWZQdHIgZnJhbWUgPSBvd25lckVsZW1lbnQuY29udGVudEZyYW1lKCk7CiAgICAgaWYg
KGZyYW1lKQogICAgICAgICBmcmFtZS0+bmF2aWdhdGlvblNjaGVkdWxlcigpLnNjaGVkdWxlTG9j
YXRpb25DaGFuZ2UoaW5pdGlhdGluZ0RvY3VtZW50LCBpbml0aWF0aW5nRG9jdW1lbnQuc2VjdXJp
dHlPcmlnaW4oKSwgdXBncmFkZWRSZXF1ZXN0VVJMLCBtX2ZyYW1lLmxvYWRlcigpLm91dGdvaW5n
UmVmZXJyZXIoKSwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QpOwogICAgIGVsc2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCA0Nzc4NmZm
NmY2MDczMWNjOGZkYWVmNmZjMjc4MDZmNDJmZGY5NjRhLi4yZDM5Y2Q2YjYwODBlMTIwYjA0N2Rj
MzVhMGM0M2ZjMmFiYzE1OGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0
b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCiAKIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRC
dWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBw
aW5nKQogewotICAgIGF1dG8gYnVmZmVyID0gbWFrZVJlZlB0cihieXRlcyk7CisgICAgUmVmUHRy
IGJ1ZmZlciB7ICZieXRlcyB9OwogICAgIHdyYXBwaW5nID0gIWNvbnZlcnRXT0ZGVG9TZm50SWZO
ZWNlc3NhcnkoYnVmZmVyKTsKICAgICByZXR1cm4gYnVmZmVyID8gY3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSgqYnVmZmVyLCBpdGVtSW5Db2xsZWN0aW9uKSA6IG51bGxwdHI7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggMjBjOTE5
ODk1NjAxMGE0NTRjOTVhYjljM2Y3NjM4NzZjOTYxZjcwOC4uZDE3OTkxNzAxOTgxYTgwMTk0YmQy
M2UzMDhmNmUzN2E1YmRiNWU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1l
bnVDb250cm9sbGVyLmNwcApAQCAtNTI3LDcgKzUyNyw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250
cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24s
IGNvCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVHJhbnNsYXRl
OgogI2lmIEhBVkUoVFJBTlNMQVRJT05fVUlfU0VSVklDRVMpCi0gICAgICAgIGlmIChhdXRvIHZp
ZXcgPSBtYWtlUmVmUHRyKGZyYW1lLT52aWV3KCkpKSB7CisgICAgICAgIGlmIChSZWZQdHIgdmll
dyA9IGZyYW1lLT52aWV3KCkpIHsKICAgICAgICAgICAgIG1fY2xpZW50LmhhbmRsZVRyYW5zbGF0
aW9uKHsKICAgICAgICAgICAgICAgICBtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLnNlbGVjdGVk
VGV4dCgpLAogICAgICAgICAgICAgICAgIHZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhlbmNsb3Np
bmdJbnRSZWN0KGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb25Cb3VuZHMoKSkpLApAQCAtODQ0
LDcgKzg0NCw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAgICAg
aWYgKCFtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmlzQ29udGVudEVkaXRhYmxlKCkgJiYgaXM8
SFRNTEZvcm1Db250cm9sRWxlbWVudD4oKm5vZGUpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYK
LSAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihub2RlLT5kb2N1bWVudCgpLmZyYW1lKCkpOwor
ICAgIFJlZlB0ciBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCkuZnJhbWUoKTsKICAgICBpZiAoIWZy
YW1lKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA4
MDM0ZTIxN2M2ODRiODVkZDA4YmNmMjI4ZTc3NzExZTYzYWQwZTBiLi43Njc3MjFlMTA3ODljY2Mx
MmZhNWJlNTVhYmE5ZGIyNTZkOWEwODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBA
IC0xMjg5LDcgKzEyODksNyBAQCBpbnQgRE9NV2luZG93Ojppbm5lcldpZHRoKCkgY29uc3QKICAg
ICAgICAgcmV0dXJuIDA7CiAKICAgICAvLyBGb3JjZSBlbm91Z2ggbGF5b3V0IGluIHRoZSBwYXJl
bnQgZG9jdW1lbnQgdG8gZW5zdXJlIHRoYXQgdGhlIEZyYW1lVmlldyBoYXMgYmVlbiByZXNpemVk
LgotICAgIGlmIChhdXRvIG93bmVyRWxlbWVudCA9IG1ha2VSZWZQdHIoZnJhbWVFbGVtZW50KCkp
KQorICAgIGlmIChSZWZQdHIgb3duZXJFbGVtZW50ID0gZnJhbWVFbGVtZW50KCkpCiAgICAgICAg
IG93bmVyRWxlbWVudC0+ZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZkRpbWVuc2lvbnNPdXRPZkRh
dGUoKm93bmVyRWxlbWVudCwgV2lkdGhEaW1lbnNpb25zQ2hlY2spOwogCiAgICAgUmVmUHRyIGZy
YW1lID0gdGhpcy0+ZnJhbWUoKTsKQEAgLTE4NjksNyArMTg2OSw3IEBAIHZvaWQgRE9NV2luZG93
OjpjYW5jZWxBbmltYXRpb25GcmFtZShpbnQgaWQpCiAKIGludCBET01XaW5kb3c6OnJlcXVlc3RJ
ZGxlQ2FsbGJhY2soUmVmPElkbGVSZXF1ZXN0Q2FsbGJhY2s+JiYgY2FsbGJhY2ssIGNvbnN0IElk
bGVSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJl
ZlB0cih0aGlzLT5kb2N1bWVudCgpKTsKKyAgICBSZWZQdHIgZG9jdW1lbnQgPSB0aGlzLT5kb2N1
bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVy
biBkb2N1bWVudC0+cmVxdWVzdElkbGVDYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSwgU2Vjb25k
czo6ZnJvbU1pbGxpc2Vjb25kcyhvcHRpb25zLnRpbWVvdXQpKTsKQEAgLTE4NzcsNyArMTg3Nyw3
IEBAIGludCBET01XaW5kb3c6OnJlcXVlc3RJZGxlQ2FsbGJhY2soUmVmPElkbGVSZXF1ZXN0Q2Fs
bGJhY2s+JiYgY2FsbGJhY2ssIGNvbnN0IElkCiAKIHZvaWQgRE9NV2luZG93OjpjYW5jZWxJZGxl
Q2FsbGJhY2soaW50IGlkKQogewotICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmUHRyKHRoaXMt
PmRvY3VtZW50KCkpOworICAgIFJlZlB0ciBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CiAg
ICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIHJldHVybiBkb2N1bWVudC0+
Y2FuY2VsSWRsZUNhbGxiYWNrKGlkKTsKQEAgLTIyMzcsNyArMjIzNyw3IEBAIGJvb2wgRE9NV2lu
ZG93OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZl
bnRMaXN0ZW5lciYKIHZvaWQgRE9NV2luZG93OjpsYW5ndWFnZXNDaGFuZ2VkKCkKIHsKICAgICAv
LyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeXN0ZW0tc3RhdGUuaHRt
bCNkb20tbmF2aWdhdG9yLWxhbmd1YWdlcwotICAgIGlmIChhdXRvIGRvY3VtZW50ID0gbWFrZVJl
ZlB0cih0aGlzLT5kb2N1bWVudCgpKSkKKyAgICBpZiAoUmVmUHRyIGRvY3VtZW50ID0gdGhpcy0+
ZG9jdW1lbnQoKSkKICAgICAgICAgZG9jdW1lbnQtPnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudE9u
V2luZG93KFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkubGFuZ3VhZ2VjaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJ
c0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKQEAgLTIyNDYsNyArMjI0Niw3IEBAIHZvaWQgRE9NV2lu
ZG93OjpkaXNwYXRjaExvYWRFdmVudCgpCiAgICAgLy8gSWYgd2UgZGlkIG5vdCBwcm90ZWN0IGl0
LCB0aGUgZG9jdW1lbnQgbG9hZGVyIGFuZCBpdHMgdGltaW5nIHN1Ym9iamVjdCBtaWdodCBnZXQg
ZGVzdHJveWVkCiAgICAgLy8gYXMgYSBzaWRlIGVmZmVjdCBvZiB3aGF0IGV2ZW50IGhhbmRsaW5n
IGNvZGUgZG9lcy4KICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07Ci0gICAgYXV0byBw
cm90ZWN0ZWRMb2FkZXIgPSBtYWtlUmVmUHRyKGZyYW1lKCkgPyBmcmFtZSgpLT5sb2FkZXIoKS5k
b2N1bWVudExvYWRlcigpIDogbnVsbHB0cik7CisgICAgUmVmUHRyIHByb3RlY3RlZExvYWRlciA9
IGZyYW1lKCkgPyBmcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpIDogbnVsbHB0cjsK
ICAgICBib29sIHNob3VsZE1hcmtMb2FkRXZlbnRUaW1lcyA9IHByb3RlY3RlZExvYWRlciAmJiAh
cHJvdGVjdGVkTG9hZGVyLT50aW1pbmcoKS5sb2FkRXZlbnRTdGFydCgpOwogCiAgICAgaWYgKHNo
b3VsZE1hcmtMb2FkRXZlbnRUaW1lcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVy
LmNwcAppbmRleCA0ZmVlODZlYzhhNTIxMDAzOWU1MmQ2OTAwY2Q4YWI4MzU3ZjkyYTYyLi5mNTBh
MWM3ZTNjYjFkMjUzNTllM2MzN2MwYWI3ZDdmNDcxYzRjYWViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RyYWdDb250cm9sbGVyLmNwcApAQCAtMTM4Niw4ICsxMzg2LDggQEAgYm9vbCBEcmFnQ29udHJv
bGxlcjo6dHJ5VG9VcGRhdGVEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoY29uc3QgRHJhZ0RhdGEm
IGRyYWdEYXQKICAgICBBU1NFUlQoIW1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzLmlzRW1wdHko
KSk7CiAgICAgQVNTRVJUKG1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJSYW5nZSk7CiAKLSAgICBh
dXRvIGRvY3VtZW50ID0gbWFrZVJlZihtX2Ryb3BwZWRJbWFnZVBsYWNlaG9sZGVyc1swXS0+ZG9j
dW1lbnQoKSk7Ci0gICAgYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIoZG9jdW1lbnQtPmZyYW1lKCkp
OworICAgIFJlZiBkb2N1bWVudCA9IG1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzWzBdLT5kb2N1
bWVudCgpOworICAgIFJlZlB0ciBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOwogICAgIGlmICgh
ZnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTQyOSwxMSArMTQyOSwxMSBAQCB2
b2lkIERyYWdDb250cm9sbGVyOjppbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnNBdENhcmV0
KGNvbnN0IFZlY3RvcjxJbnRTaXplPgogICAgIGlmIChkcm9wQ2FyZXQuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmUHRyKGRyb3BDYXJldC5k
ZWVwRXF1aXZhbGVudCgpLmRvY3VtZW50KCkpOworICAgIFJlZlB0ciBkb2N1bWVudCA9IGRyb3BD
YXJldC5kZWVwRXF1aXZhbGVudCgpLmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIoZG9jdW1lbnQtPmZy
YW1lKCkpOworICAgIFJlZlB0ciBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOwogICAgIGlmICgh
ZnJhbWUpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTQ5OCw3ICsxNDk4LDcgQEAgdm9pZCBEcmFn
Q29udHJvbGxlcjo6aW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzQXRDYXJldChjb25zdCBW
ZWN0b3I8SW50U2l6ZT4KIAogdm9pZCBEcmFnQ29udHJvbGxlcjo6ZmluYWxpemVEcm9wcGVkSW1h
Z2VQbGFjZWhvbGRlcihIVE1MSW1hZ2VFbGVtZW50JiBwbGFjZWhvbGRlciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb24pCiB7Ci0gICAgcGxhY2Vob2xkZXIuZG9jdW1lbnQo
KS5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6SW50ZXJuYWxBc3luY1Rhc2ssIFtj
b21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKSwgcGxhY2Vob2xkZXIgPSBtYWtlUmVmUHRy
KHBsYWNlaG9sZGVyKV0gKCkgbXV0YWJsZSB7CisgICAgcGxhY2Vob2xkZXIuZG9jdW1lbnQoKS5l
dmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6SW50ZXJuYWxBc3luY1Rhc2ssIFtjb21w
bGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKSwgcGxhY2Vob2xkZXIgPSBSZWYgeyBwbGFjZWhv
bGRlciB9XSAoKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHBsYWNlaG9sZGVyLT5pc0Ryb3BwZWRJ
bWFnZVBsYWNlaG9sZGVyKCkpIHsKICAgICAgICAgICAgIHBsYWNlaG9sZGVyLT5yZW1vdmVBdHRy
aWJ1dGUoSFRNTE5hbWVzOjpoZWlnaHRBdHRyKTsKICAgICAgICAgICAgIHBsYWNlaG9sZGVyLT5y
ZW1vdmVJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA5NWJhZWJhNDE3MjE5ZWJlMzAzMzdj
M2Y2ZWZlODI3MjU1ZWQ5NDZlLi40ZjQ3OWEyZDFlNmVjODQ1Y2NkYjY1NWJiNDQyNzFhMmVmZTM3
NmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC00NDcsNyArNDQ3LDcg
QEAgc3RhdGljIE5vZGUqIG5vZGVUb1NlbGVjdE9uTW91c2VEb3duRm9yTm9kZShOb2RlJiB0YXJn
ZXROb2RlKQogICAgIGlmIChIVE1MRWxlbWVudDo6aXNJbnNpZGVJbWFnZU92ZXJsYXkodGFyZ2V0
Tm9kZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgaWYgKGF1dG8gcm9vdFVzZXJT
ZWxlY3RBbGwgPSBtYWtlUmVmUHRyKFBvc2l0aW9uOjpyb290VXNlclNlbGVjdEFsbEZvck5vZGUo
JnRhcmdldE5vZGUpKSkKKyAgICBpZiAoUmVmUHRyIHJvb3RVc2VyU2VsZWN0QWxsID0gUG9zaXRp
b246OnJvb3RVc2VyU2VsZWN0QWxsRm9yTm9kZSgmdGFyZ2V0Tm9kZSkpCiAgICAgICAgIHJldHVy
biByb290VXNlclNlbGVjdEFsbC5nZXQoKTsKIAogICAgIGlmICh0YXJnZXROb2RlLnNob3VsZFNl
bGVjdE9uTW91c2VEb3duKCkpCkBAIC00NTgsNyArNDU4LDcgQEAgc3RhdGljIE5vZGUqIG5vZGVU
b1NlbGVjdE9uTW91c2VEb3duRm9yTm9kZShOb2RlJiB0YXJnZXROb2RlKQogCiBzdGF0aWMgVmlz
aWJsZVNlbGVjdGlvbiBleHBhbmRTZWxlY3Rpb25Ub1Jlc3BlY3RTZWxlY3RPbk1vdXNlRG93bihO
b2RlJiB0YXJnZXROb2RlLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCiB7Ci0g
ICAgYXV0byBub2RlVG9TZWxlY3QgPSBtYWtlUmVmUHRyKG5vZGVUb1NlbGVjdE9uTW91c2VEb3du
Rm9yTm9kZSh0YXJnZXROb2RlKSk7CisgICAgUmVmUHRyIG5vZGVUb1NlbGVjdCA9IG5vZGVUb1Nl
bGVjdE9uTW91c2VEb3duRm9yTm9kZSh0YXJnZXROb2RlKTsKICAgICBpZiAoIW5vZGVUb1NlbGVj
dCkKICAgICAgICAgcmV0dXJuIHNlbGVjdGlvbjsKIApAQCAtNzA1LDcgKzcwNSw3IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnRTaW5nbGVDbGljayhjb25zdCBNb3Vz
ZUV2ZW50V2l0aEhpdFRlc3RSCiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpjYW5Nb3VzZURvd25TdGFy
dFNlbGVjdChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKIHsKLSAg
ICBhdXRvIG5vZGUgPSBtYWtlUmVmUHRyKGV2ZW50LnRhcmdldE5vZGUoKSk7CisgICAgUmVmUHRy
IG5vZGUgPSBldmVudC50YXJnZXROb2RlKCk7CiAKICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJh
bWUucGFnZSgpKSB7CiAgICAgICAgIGlmICghcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuc2hvdWxk
VXNlTW91c2VFdmVudEZvclNlbGVjdGlvbihldmVudC5ldmVudCgpKSkKQEAgLTExOTMsNyArMTE5
Myw3IEBAIEhpdFRlc3RSZXN1bHQgRXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludChj
b25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIE9wdGlvCiAgICAgaWYgKCFyZXF1ZXN0LnJlYWRPbmx5
KCkpCiAgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlSG92ZXJBY3RpdmVTdGF0ZShy
ZXF1ZXN0LCByZXN1bHQudGFyZ2V0RWxlbWVudCgpKTsKIAotICAgIGF1dG8gaW5uZXJOb2RlID0g
bWFrZVJlZlB0cihyZXN1bHQuaW5uZXJOb2RlKCkpOworICAgIFJlZlB0ciBpbm5lck5vZGUgPSBy
ZXN1bHQuaW5uZXJOb2RlKCk7CiAgICAgaWYgKHJlcXVlc3QuZGlzYWxsb3dzVXNlckFnZW50U2hh
ZG93Q29udGVudCgpCiAgICAgICAgIHx8IChyZXF1ZXN0LmRpc2FsbG93c1VzZXJBZ2VudFNoYWRv
d0NvbnRlbnRFeGNlcHRGb3JJbWFnZU92ZXJsYXlzKCkgJiYgaW5uZXJOb2RlICYmICFIVE1MRWxl
bWVudDo6aXNJbnNpZGVJbWFnZU92ZXJsYXkoKmlubmVyTm9kZSkpKQogICAgICAgICByZXN1bHQu
c2V0VG9Ob25Vc2VyQWdlbnRTaGFkb3dBbmNlc3RvcigpOwpAQCAtNDM5Myw3ICs0MzkzLDcgQEAg
dm9pZCBFdmVudEhhbmRsZXI6OnNjaGVkdWxlU2Nyb2xsRXZlbnQoKQogICAgIHNldEZyYW1lV2Fz
U2Nyb2xsZWRCeVVzZXIoKTsKICAgICBpZiAoIW1fZnJhbWUudmlldygpKQogICAgICAgICByZXR1
cm47Ci0gICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWZQdHIobV9mcmFtZS5kb2N1bWVudCgpKTsK
KyAgICBSZWZQdHIgZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1
bWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIGRvY3VtZW50LT5hZGRQZW5kaW5nU2Nyb2xsRXZl
bnRUYXJnZXQoKmRvY3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA5ZDE1
NjkyZjdkOThkZTI5ZWU4Y2M5OTQ5ZjQ5OTc1NmM0YTI3YTQyLi44OWRkOWRjZjQwN2Y1M2EwYTg3
ZjU5YTY1NWI5MzQ5ZjM1MzRkZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0y
MjMxLDcgKzIyMzEsNyBAQCBib29sIEZyYW1lVmlldzo6c2Nyb2xsVG9GcmFnbWVudEludGVybmFs
KFN0cmluZ1ZpZXcgZnJhZ21lbnRJZGVudGlmaWVyKQogICAgIGF1dG8mIGRvY3VtZW50ID0gKmZy
YW1lKCkuZG9jdW1lbnQoKTsKICAgICBSRUxFQVNFX0FTU0VSVChkb2N1bWVudC5oYXZlU3R5bGVz
aGVldHNMb2FkZWQoKSk7CiAKLSAgICBhdXRvIGFuY2hvckVsZW1lbnQgPSBtYWtlUmVmUHRyKGRv
Y3VtZW50LmZpbmRBbmNob3IoZnJhZ21lbnRJZGVudGlmaWVyKSk7CisgICAgUmVmUHRyIGFuY2hv
ckVsZW1lbnQgPSBkb2N1bWVudC5maW5kQW5jaG9yKGZyYWdtZW50SWRlbnRpZmllcik7CiAKICAg
ICBMT0coU2Nyb2xsaW5nLCAiIGFuY2hvckVsZW1lbnQgaXMgJXAiLCBhbmNob3JFbGVtZW50Lmdl
dCgpKTsKIApAQCAtMjM3OSw3ICsyMzc5LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNjcm9sbFRvRm9j
dXNlZEVsZW1lbnRUaW1lckZpcmVkKCkKIHZvaWQgRnJhbWVWaWV3OjpzY3JvbGxUb0ZvY3VzZWRF
bGVtZW50SW50ZXJuYWwoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fc2hvdWxkU2Nyb2xsVG9G
b2N1c2VkRWxlbWVudCk7Ci0gICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWZQdHIoZnJhbWUoKS5k
b2N1bWVudCgpKTsKKyAgICBSZWZQdHIgZG9jdW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCk7CiAg
ICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMzg4LDcgKzIzODgsNyBA
QCB2b2lkIEZyYW1lVmlldzo6c2Nyb2xsVG9Gb2N1c2VkRWxlbWVudEludGVybmFsKCkKICAgICAg
ICAgcmV0dXJuOyAvLyBVcGRhdGluZyB0aGUgbGF5b3V0IG1heSBoYXZlIHJhbiBzY3JpcHRzLgog
ICAgIG1fc2hvdWxkU2Nyb2xsVG9Gb2N1c2VkRWxlbWVudCA9IGZhbHNlOwogCi0gICAgYXV0byBm
b2N1c2VkRWxlbWVudCA9IG1ha2VSZWZQdHIoZG9jdW1lbnQtPmZvY3VzZWRFbGVtZW50KCkpOwor
ICAgIFJlZlB0ciBmb2N1c2VkRWxlbWVudCA9IGRvY3VtZW50LT5mb2N1c2VkRWxlbWVudCgpOwog
ICAgIGlmICghZm9jdXNlZEVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKICAgICBhdXRvIHVwZGF0
ZVRhcmdldCA9IGZvY3VzZWRFbGVtZW50LT5mb2N1c0FwcGVhcmFuY2VVcGRhdGVUYXJnZXQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW1hZ2VPdmVybGF5Q29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwCmluZGV4
IDc1NDBkZjEwYTY2YTM0OWZiYTk0NzcyZGNhYTM2NzM3NzgxYWI1OTkuLmJiMjM2YTg5MjBiMzkz
M2UwMzJiYjAzYTgzMTk2ZjE2MjM4MmNkYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvSW1hZ2VPdmVybGF5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9J
bWFnZU92ZXJsYXlDb250cm9sbGVyLmNwcApAQCAtNzQsOCArNzQsOCBAQCB2b2lkIEltYWdlT3Zl
cmxheUNvbnRyb2xsZXI6OnNlbGVjdGlvblF1YWRzRGlkQ2hhbmdlKEZyYW1lJiBmcmFtZSwgY29u
c3QgVmVjdG9yPAogICAgICAgICBpZiAoIUhUTUxFbGVtZW50Ojppc0luc2lkZUltYWdlT3Zlcmxh
eSgqc2VsZWN0ZWRSYW5nZSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAg
ICBpZiAoYXV0byBob3N0ID0gbWFrZVJlZlB0cihzZWxlY3RlZFJhbmdlLT5zdGFydENvbnRhaW5l
cigpLnNoYWRvd0hvc3QoKSk7IGlzPEhUTUxFbGVtZW50Pihob3N0KSkKLSAgICAgICAgICAgIHJl
dHVybiBtYWtlUmVmUHRyKGRvd25jYXN0PEhUTUxFbGVtZW50PigqaG9zdCkpOworICAgICAgICBp
ZiAoUmVmUHRyIGhvc3QgPSBzZWxlY3RlZFJhbmdlLT5zdGFydENvbnRhaW5lcigpLnNoYWRvd0hv
c3QoKTsgaXM8SFRNTEVsZW1lbnQ+KGhvc3QpKQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19w
b2ludGVyX2Nhc3Q8SFRNTEVsZW1lbnQ+KGhvc3QpOwogCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0pKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBmOWY4Y2ZhMGQ4YTNlZjRkNTI4MjRj
ZWMzYzg5YmY3NGFlZjIzYTllLi4zNzI0OGU0M2VjNDhiNDhiYmRlNGNmYzIwMTM1ZWQ3ZDA3ZmU4
M2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTg4NywxMSArODg3LDExIEBAIHN0YXRpYyB2b2lk
IHJlcGxhY2VSYW5nZXMoUGFnZSYgcGFnZSwgY29uc3QgVmVjdG9yPEZpbmRSZXBsYWNlbWVudFJh
bmdlPiYgcmFuZ2VzCiAgICAgICAgIGlmIChmaXJzdE5vZGUgPT0gc2Vjb25kTm9kZSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBhdXRvIGZpcnN0RnJhbWUgPSBtYWtlUmVm
UHRyKGZpcnN0Tm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpKTsKKyAgICAgICAgUmVmUHRyIGZpcnN0
RnJhbWUgPSBmaXJzdE5vZGUtPmRvY3VtZW50KCkuZnJhbWUoKTsKICAgICAgICAgaWYgKCFmaXJz
dEZyYW1lKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgYXV0byBzZWNvbmRG
cmFtZSA9IG1ha2VSZWZQdHIoc2Vjb25kTm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpKTsKKyAgICAg
ICAgUmVmUHRyIHNlY29uZEZyYW1lID0gc2Vjb25kTm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOwog
ICAgICAgICBpZiAoIXNlY29uZEZyYW1lKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC05MDQsNyArOTA0LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJhbmdlcyhQYWdlJiBwYWdlLCBj
b25zdCBWZWN0b3I8RmluZFJlcGxhY2VtZW50UmFuZ2U+JiByYW5nZXMKICAgICB9KTsKIAogICAg
IGZvciAoYXV0byYgY29udGFpbmVyIDogY29udGFpbmVyTm9kZXNJbk9yZGVyT2ZSZXBsYWNlbWVu
dCkgewotICAgICAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihjb250YWluZXItPmRvY3VtZW50
KCkuZnJhbWUoKSk7CisgICAgICAgIFJlZlB0ciBmcmFtZSA9IGNvbnRhaW5lci0+ZG9jdW1lbnQo
KS5mcmFtZSgpOwogICAgICAgICBpZiAoIWZyYW1lKQogICAgICAgICAgICAgY29udGludWU7CiAK
QEAgLTkyOSw3ICs5MjksNyBAQCB1aW50MzJfdCBQYWdlOjpyZXBsYWNlUmFuZ2VzV2l0aFRleHQo
Y29uc3QgVmVjdG9yPFNpbXBsZVJhbmdlPiYgcmFuZ2VzVG9SZXBsYWNlLAogICAgIHJlcGxhY2Vt
ZW50UmFuZ2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmFuZ2VzVG9SZXBsYWNlLnNpemUoKSk7
CiAKICAgICBmb3IgKGF1dG8mIHJhbmdlIDogcmFuZ2VzVG9SZXBsYWNlKSB7Ci0gICAgICAgIGF1
dG8gaGlnaGVzdFJvb3QgPSBtYWtlUmVmUHRyKGhpZ2hlc3RFZGl0YWJsZVJvb3QobWFrZURlcHJl
Y2F0ZWRMZWdhY3lQb3NpdGlvbihyYW5nZS5zdGFydCkpKTsKKyAgICAgICAgUmVmUHRyIGhpZ2hl
c3RSb290ID0gaGlnaGVzdEVkaXRhYmxlUm9vdChtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9u
KHJhbmdlLnN0YXJ0KSk7CiAgICAgICAgIGlmICghaGlnaGVzdFJvb3QgfHwgaGlnaGVzdFJvb3Qg
IT0gaGlnaGVzdEVkaXRhYmxlUm9vdChtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKHJhbmdl
LmVuZCkpIHx8ICFoaWdoZXN0Um9vdC0+ZG9jdW1lbnQoKS5mcmFtZSgpKQogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29u
dGVudHMoKmhpZ2hlc3RSb290KTsKQEAgLTk2Niw3ICs5NjYsNyBAQCB2b2lkIFBhZ2U6OnNldEVk
aXRhYmxlUmVnaW9uRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgaWYgKG1faXNFZGl0YWJsZVJl
Z2lvbkVuYWJsZWQgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogICAgIG1faXNFZGl0YWJs
ZVJlZ2lvbkVuYWJsZWQgPSBlbmFibGVkOwotICAgIGF1dG8gZnJhbWVWaWV3ID0gbWFrZVJlZlB0
cihtYWluRnJhbWUoKS52aWV3KCkpOworICAgIFJlZlB0ciBmcmFtZVZpZXcgPSBtYWluRnJhbWUo
KS52aWV3KCk7CiAgICAgaWYgKCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAo
YXV0byogcmVuZGVyVmlldyA9IGZyYW1lVmlldy0+cmVuZGVyVmlldygpKQpAQCAtOTg2LDExICs5
ODYsMTEgQEAgYm9vbCBQYWdlOjpzaG91bGRCdWlsZEVkaXRhYmxlUmVnaW9uKCkgY29uc3QKIAog
VmVjdG9yPFJlZjxFbGVtZW50Pj4gUGFnZTo6ZWRpdGFibGVFbGVtZW50c0luUmVjdChjb25zdCBG
bG9hdFJlY3QmIHNlYXJjaFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMpIGNvbnN0CiB7Ci0gICAg
YXV0byBmcmFtZVZpZXcgPSBtYWtlUmVmUHRyKG1haW5GcmFtZSgpLnZpZXcoKSk7CisgICAgUmVm
UHRyIGZyYW1lVmlldyA9IG1haW5GcmFtZSgpLnZpZXcoKTsKICAgICBpZiAoIWZyYW1lVmlldykK
ICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmUHRyKG1h
aW5GcmFtZSgpLmRvY3VtZW50KCkpOworICAgIFJlZlB0ciBkb2N1bWVudCA9IG1haW5GcmFtZSgp
LmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIHsgfTsKIApA
QCAtMTY2Niw3ICsxNjY2LDcgQEAgdm9pZCBQYWdlOjpkb0FmdGVyVXBkYXRlUmVuZGVyaW5nKCkK
ICAgICAgICAgaWYgKGFwcEhpZ2hsaWdodFN0b3JhZ2UtPmhhc1VucmVzdG9yZWRIaWdobGlnaHRz
KCkgJiYgTW9ub3RvbmljVGltZTo6bm93KCkgLSBhcHBIaWdobGlnaHRTdG9yYWdlLT5sYXN0UmFu
Z2VTZWFyY2hUaW1lKCkgPiAxX3MpIHsKICAgICAgICAgICAgIGFwcEhpZ2hsaWdodFN0b3JhZ2Ut
PnJlc2V0TGFzdFJhbmdlU2VhcmNoVGltZSgpOwogICAgICAgICAgICAgZG9jdW1lbnQuZXZlbnRM
b29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkludGVybmFsQXN5bmNUYXNrLCBbd2Vha0RvY3Vt
ZW50ID0gbWFrZVdlYWtQdHIoZG9jdW1lbnQpXSB7Ci0gICAgICAgICAgICAgICAgYXV0byBkb2N1
bWVudCA9IG1ha2VSZWZQdHIod2Vha0RvY3VtZW50LmdldCgpKTsKKyAgICAgICAgICAgICAgICBS
ZWZQdHIgZG9jdW1lbnQgeyB3ZWFrRG9jdW1lbnQuZ2V0KCkgfTsKICAgICAgICAgICAgICAgICBp
ZiAoIWRvY3VtZW50KQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTI2MjAsNyAr
MjYyMCw3IEBAIHZvaWQgUGFnZTo6c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUo
Q29sb3ImJiB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPCiAgICAgc2NoZWR1bGVSZW5kZXJpbmdV
cGRhdGUoeyB9KTsKIAogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKLSAgICBpZiAoYXV0byBm
cmFtZVZpZXcgPSBtYWtlUmVmUHRyKG1haW5GcmFtZSgpLnZpZXcoKSkpIHsKKyAgICBpZiAoUmVm
UHRyIGZyYW1lVmlldyA9IG1haW5GcmFtZSgpLnZpZXcoKSkgewogICAgICAgICBpZiAoYXV0byog
cmVuZGVyVmlldyA9IGZyYW1lVmlldy0+cmVuZGVyVmlldygpKSB7CiAgICAgICAgICAgICBpZiAo
cmVuZGVyVmlldy0+dXNlc0NvbXBvc2l0aW5nKCkpCiAgICAgICAgICAgICAgICAgcmVuZGVyVmll
dy0+Y29tcG9zaXRvcigpLnVwZGF0ZUxheWVyRm9yT3ZlcmhhbmdBcmVhc0JhY2tncm91bmRDb2xv
cigpOwpAQCAtMzQ5Nyw3ICszNDk3LDcgQEAgdm9pZCBQYWdlOjpjb25maWd1cmVMb2dnaW5nQ2hh
bm5lbChjb25zdCBTdHJpbmcmIGNoYW5uZWxOYW1lLCBXVEZMb2dDaGFubmVsU3RhdGUKIHZvaWQg
UGFnZTo6ZGlkRmluaXNoTG9hZGluZ0ltYWdlRm9yRWxlbWVudChIVE1MSW1hZ2VFbGVtZW50JiBl
bGVtZW50KQogewogICAgIGVsZW1lbnQuZG9jdW1lbnQoKS5ldmVudExvb3AoKS5xdWV1ZVRhc2so
VGFza1NvdXJjZTo6TmV0d29ya2luZywgW2VsZW1lbnQgPSBtYWtlUmVmKGVsZW1lbnQpXSgpIHsK
LSAgICAgICAgYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIoZWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFt
ZSgpKTsKKyAgICAgICAgUmVmUHRyIGZyYW1lID0gZWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgp
OwogICAgICAgICBpZiAoIWZyYW1lKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zNjU1LDcg
KzM2NTUsNyBAQCB2b2lkIFBhZ2U6OnVwZGF0ZUVsZW1lbnRzV2l0aFRleHRSZWNvZ25pdGlvblJl
c3VsdHMoKQogCiAgICAgZm9yIChhdXRvJiBbZWxlbWVudCwgcmVzdWx0XSA6IGVsZW1lbnRzVG9V
cGRhdGUpIHsKICAgICAgICAgZWxlbWVudC0+ZG9jdW1lbnQoKS5ldmVudExvb3AoKS5xdWV1ZVRh
c2soVGFza1NvdXJjZTo6SW50ZXJuYWxBc3luY1Rhc2ssIFtyZXN1bHQgPSBUZXh0UmVjb2duaXRp
b25SZXN1bHQgeyByZXN1bHQgfSwgd2Vha0VsZW1lbnQgPSBtYWtlV2Vha1B0cihlbGVtZW50Lmdl
dCgpKV0gewotICAgICAgICAgICAgYXV0byBlbGVtZW50ID0gbWFrZVJlZlB0cih3ZWFrRWxlbWVu
dC5nZXQoKSk7CisgICAgICAgICAgICBSZWZQdHIgZWxlbWVudCB7IHdlYWtFbGVtZW50LmdldCgp
IH07CiAgICAgICAgICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb2xvclNhbXBsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAppbmRleCBmNTM2MmU3Njli
NGI3MzI5MTI3YjY3NDFiYjI0MzkzOThmMGU4NjE1Li41ZGRkMzFmOWZlMmUzYmIyOGNhNzg1ZTVi
YzcyNjczMzE0YjAyZGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb2xv
clNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5j
cHAKQEAgLTE2OSwxMSArMTY5LDExIEBAIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IFBhZ2VDb2xvclNh
bXBsZXI6OnNhbXBsZVRvcChQYWdlJiBwYWdlKQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKICAg
ICB9CiAKLSAgICBhdXRvIG1haW5Eb2N1bWVudCA9IG1ha2VSZWZQdHIocGFnZS5tYWluRnJhbWUo
KS5kb2N1bWVudCgpKTsKKyAgICBSZWZQdHIgbWFpbkRvY3VtZW50ID0gcGFnZS5tYWluRnJhbWUo
KS5kb2N1bWVudCgpOwogICAgIGlmICghbWFpbkRvY3VtZW50KQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgYXV0byBmcmFtZVZpZXcgPSBtYWtlUmVmUHRyKHBhZ2UubWFpbkZy
YW1lKCkudmlldygpKTsKKyAgICBSZWZQdHIgZnJhbWVWaWV3ID0gcGFnZS5tYWluRnJhbWUoKS52
aWV3KCk7CiAgICAgaWYgKCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmNwcAppbmRl
eCA0NzMxOTA3NDliZDM5NjE2OWExYTYwMzIwYjlkNTI1OTRjNGRhMDczLi4wZmQ5ODI1ZmFjNmU2
Y2I0NmUwZWVlNWIyNjdiMmQ4YmRkNzJmOGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
b2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwCkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBQb2ludGVy
TG9ja0NvbnRyb2xsZXI6OmVucXVldWVFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBFbGVt
ZW50KiBlbGVtZW4KIHZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjplbnF1ZXVlRXZlbnQoY29u
c3QgQXRvbVN0cmluZyYgdHlwZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIC8vIEZJWE1F
OiBTcGVjIGRvZXNuJ3Qgc3BlY2lmeSB3aGljaCB0YXNrIHNvdXJjZSB1c2UuCi0gICAgaWYgKGF1
dG8gcHJvdGVjdGVkRG9jdW1lbnQgPSBtYWtlUmVmUHRyKGRvY3VtZW50KSkKKyAgICBpZiAoUmVm
UHRyIHByb3RlY3RlZERvY3VtZW50ID0gZG9jdW1lbnQpCiAgICAgICAgIHByb3RlY3RlZERvY3Vt
ZW50LT5xdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoVGFza1NvdXJjZTo6VXNlckludGVyYWN0aW9u
LCBFdmVudDo6Y3JlYXRlKHR5cGUsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2Fu
Y2VsYWJsZTo6Tm8pKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0
SW5kaWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5jcHAKaW5k
ZXggODZmMTBkOWI1ZWQzNGJjMGUyMGViYjY5MzJmZjRhZDk0Yjc2NjM0Zi4uZDZmYjczYjY2MWIw
NzFmNzNiNDMyYjUwYzEyZDQ4YTNiYjQ4Njc4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9UZXh0SW5kaWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRp
Y2F0b3IuY3BwCkBAIC02OSwxMSArNjksMTEgQEAgUmVmPFRleHRJbmRpY2F0b3I+IFRleHRJbmRp
Y2F0b3I6OmNyZWF0ZShjb25zdCBUZXh0SW5kaWNhdG9yRGF0YSYgZGF0YSkKIAogUmVmUHRyPFRl
eHRJbmRpY2F0b3I+IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZShjb25zdCBTaW1wbGVS
YW5nZSYgcmFuZ2UsIE9wdGlvblNldDxUZXh0SW5kaWNhdG9yT3B0aW9uPiBvcHRpb25zLCBUZXh0
SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbiBwcmVzZW50YXRpb25UcmFuc2l0aW9uLCBG
bG9hdFNpemUgbWFyZ2luKQogewotICAgIGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKHJhbmdlLnN0
YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKS5mcmFtZSgpKTsKKyAgICBSZWZQdHIgZnJhbWUgPSBy
YW5nZS5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1l
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVm
UHRyKGZyYW1lLT5kb2N1bWVudCgpKTsKKyAgICBSZWZQdHIgZG9jdW1lbnQgPSBmcmFtZS0+ZG9j
dW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9VbmRvTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1VuZG9NYW5hZ2VyLmNwcAppbmRleCBiNmM5NmUwZmE4MjZmOTQ3NDlhNjRi
MDFjYWQxOTc0OTExMjQzMzFjLi4zMzcwMDdkMDZlZGZhYjllOTg1YzdmMmY1ZDc0YWY2NjcyNWI0
NzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VuZG9NYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VuZG9NYW5hZ2VyLmNwcApAQCAtNDksNyArNDksNyBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBVbmRvTWFuYWdlcjo6YWRkSXRlbShSZWY8VW5kb0l0ZW0+JiYgaXRl
bSkKICAgICBpZiAoaXRlbS0+dW5kb01hbmFnZXIoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IEludmFsaWRNb2RpZmljYXRpb25FcnJvciwgIlRoaXMgaXRlbSBoYXMgYWxyZWFkeSBiZWVu
IGFkZGVkIHRvIGFuIFVuZG9NYW5hZ2VyIl9zIH07CiAKLSAgICBhdXRvIGZyYW1lID0gbWFrZVJl
ZlB0cihtX2RvY3VtZW50LmZyYW1lKCkpOworICAgIFJlZlB0ciBmcmFtZSA9IG1fZG9jdW1lbnQu
ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2Vj
dXJpdHlFcnJvciwgIkEgYnJvd3NpbmcgY29udGV4dCBpcyByZXF1aXJlZCB0byBhZGQgYW4gVW5k
b0l0ZW0iX3MgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZlbnRI
YW5kbGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1t
CmluZGV4IGU5N2M4Mzc1OWNkZGM5YWVjYjE5ZDc4ZjhlYWNjNzM5M2JlYjI4ZDIuLjQ0MzJhYTdk
ZGIwNGU1MmZhMTllYTIzMWZhOGNmZDhmNzhhNjc0ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2lvcy9FdmVudEhhbmRsZXJJT1MubW0KQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIEV2ZW50SGFu
ZGxlcjo6Zm9jdXNEb2N1bWVudFZpZXcoKQogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKGF1dG8gZnJhbWVWaWV3ID0gbWFrZVJlZlB0cihtX2ZyYW1lLnZpZXcoKSkp
IHsKKyAgICBpZiAoUmVmUHRyIGZyYW1lVmlldyA9IG1fZnJhbWUudmlldygpKSB7CiAgICAgICAg
IGlmIChOU1ZpZXcgKmRvY3VtZW50VmlldyA9IGZyYW1lVmlldy0+ZG9jdW1lbnRWaWV3KCkpIHsK
ICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLmZvY3VzTlNWaWV3KGRvY3VtZW50Vmlldyk7CiAg
ICAgICAgICAgICAvLyBDaGVjayBwYWdlKCkgYWdhaW4gYmVjYXVzZSBmb2N1c05TVmlldyBjYW4g
Y2F1c2UgcmVlbnRyYW5jeS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0Zy
YW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KaW5kZXggMGEw
MzZhMTQ5ZTNhM2UwN2FmMTkyZWYzZWVlNmViMjA3OTUwMTVhMS4uODY5YjMxMDdjMGNhOTJmZDAy
ZjI0Y2I0ZGM5NjU0MjQ0ODNkM2E2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9p
b3MvRnJhbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0K
QEAgLTM5Nyw3ICszOTcsNyBAQCBzdGF0aWMgYm9vbCBub2RlSXNNb3VzZUZvY3VzYWJsZShOb2Rl
JiBub2RlKQogICAgIGlmIChlbGVtZW50LmlzTW91c2VGb2N1c2FibGUoKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICBpZiAoYXV0byBzaGFkb3dSb290ID0gbWFrZVJlZlB0cihlbGVtZW50
LnNoYWRvd1Jvb3QoKSkpIHsKKyAgICBpZiAoUmVmUHRyIHNoYWRvd1Jvb3QgPSBlbGVtZW50LnNo
YWRvd1Jvb3QoKSkgewogICAgICAgICBpZiAoc2hhZG93Um9vdC0+ZGVsZWdhdGVzRm9jdXMoKSkg
ewogICAgICAgICAgICAgZm9yIChhdXRvJiBub2RlIDogY29tcG9zZWRUcmVlRGVzY2VuZGFudHMo
ZWxlbWVudCkpIHsKICAgICAgICAgICAgICAgICBpZiAoaXM8RWxlbWVudD4obm9kZSkgJiYgZG93
bmNhc3Q8RWxlbWVudD4obm9kZSkuaXNNb3VzZUZvY3VzYWJsZSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCmluZGV4IGYzMTRkY2E5YjUwNTllOTNkMGEwMjk1
M2JiMTFlZjhjMjg2N2VlNjQuLjc0OGJmYjk4OGMxNTdmYjhjNDRmZWYyYjFiZDYyYWEzYjRlMjBk
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KQEAgLTE3
OCw3ICsxNzgsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6Zm9jdXNEb2N1bWVudFZpZXcoKQogICAg
IGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGF1dG8gZnJhbWVWaWV3ID0g
bWFrZVJlZlB0cihtX2ZyYW1lLnZpZXcoKSkpIHsKKyAgICBpZiAoUmVmUHRyIGZyYW1lVmlldyA9
IG1fZnJhbWUudmlldygpKSB7CiAgICAgICAgIGlmIChOU1ZpZXcgKmRvY3VtZW50VmlldyA9IGZy
YW1lVmlldy0+ZG9jdW1lbnRWaWV3KCkpIHsKICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLmZv
Y3VzTlNWaWV3KGRvY3VtZW50Vmlldyk7CiAgICAgICAgICAgICAvLyBDaGVjayBwYWdlKCkgYWdh
aW4gYmVjYXVzZSBmb2N1c05TVmlldyBjYW4gY2F1c2UgcmVlbnRyYW5jeS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXJNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9JbWFnZU92ZXJsYXlDb250cm9sbGVyTWFjLm1tCmluZGV4
IGM5MDQ0OWY1ZGQ0M2QyY2FmYWIyNjU1N2E0MGYwYjYwZmYzNTY0M2QuLjQ4MzNjZGQ1ZTgyYzU4
ZTUxYmIzMWMzYmE2MTA0ZjU2NzU2NGM4ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvbWFjL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvSW1hZ2VPdmVybGF5Q29udHJvbGxlck1hYy5tbQpAQCAtNzAsMTEgKzcwLDExIEBA
IHZvaWQgSW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6dXBkYXRlRGF0YURldGVjdG9ySGlnaGxpZ2h0
cyhjb25zdCBIVE1MRWxlbWVudCYgb3ZlCiAgICAgaWYgKGRhdGFEZXRlY3RvclJlc3VsdEVsZW1l
bnRzV2l0aEhpZ2hsaWdodHMgPT0gZGF0YURldGVjdG9yUmVzdWx0RWxlbWVudHMpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGF1dG8gbWFpbkZyYW1lVmlldyA9IG1ha2VSZWZQdHIobV9wYWdlLT5t
YWluRnJhbWUoKS52aWV3KCkpOworICAgIFJlZlB0ciBtYWluRnJhbWVWaWV3ID0gbV9wYWdlLT5t
YWluRnJhbWUoKS52aWV3KCk7CiAgICAgaWYgKCFtYWluRnJhbWVWaWV3KQogICAgICAgICByZXR1
cm47CiAKLSAgICBhdXRvIGZyYW1lVmlldyA9IG1ha2VSZWZQdHIob3ZlcmxheUhvc3QuZG9jdW1l
bnQoKS52aWV3KCkpOworICAgIFJlZlB0ciBmcmFtZVZpZXcgPSBvdmVybGF5SG9zdC5kb2N1bWVu
dCgpLnZpZXcoKTsKICAgICBpZiAoIWZyYW1lVmlldykKICAgICAgICAgcmV0dXJuOwogCkBAIC05
OCw3ICs5OCw3IEBAIHZvaWQgSW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6dXBkYXRlRGF0YURldGVj
dG9ySGlnaGxpZ2h0cyhjb25zdCBIVE1MRWxlbWVudCYgb3ZlCiAKIGJvb2wgSW1hZ2VPdmVybGF5
Q29udHJvbGxlcjo6cGxhdGZvcm1IYW5kbGVNb3VzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYgZXZlbnQpCiB7Ci0gICAgYXV0byBtYWluRnJhbWVWaWV3ID0gbWFrZVJlZlB0cihtX3Bh
Z2UtPm1haW5GcmFtZSgpLnZpZXcoKSk7CisgICAgUmVmUHRyIG1haW5GcmFtZVZpZXcgPSBtX3Bh
Z2UtPm1haW5GcmFtZSgpLnZpZXcoKTsKICAgICBpZiAoIW1haW5GcmFtZVZpZXcpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIApAQCAtMTE3LDcgKzExNyw3IEBAIGJvb2wgSW1hZ2VPdmVybGF5Q29u
dHJvbGxlcjo6cGxhdGZvcm1IYW5kbGVNb3VzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYKIAogICAgICAgICBtb3VzZUlzT3ZlckFjdGl2ZURhdGFEZXRlY3RvckhpZ2hsaWdodEJ1dHRv
biA9IGlzT3ZlckJ1dHRvbjsKICAgICAgICAgbV9hY3RpdmVEYXRhRGV0ZWN0b3JIaWdobGlnaHQg
PSBoaWdobGlnaHQuY29weVJlZigpOwotICAgICAgICBhY3RpdmVEYXRhRGV0ZWN0b3JFbGVtZW50
ID0gbWFrZVJlZlB0cigqZWxlbWVudCk7CisgICAgICAgIGFjdGl2ZURhdGFEZXRlY3RvckVsZW1l
bnQgPSBlbGVtZW50LmdldCgpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTE0MiwxMSAr
MTQyLDExIEBAIGJvb2wgSW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6aGFuZGxlRGF0YURldGVjdG9y
QWN0aW9uKGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKGVsZW1lbnQu
ZG9jdW1lbnQoKS5mcmFtZSgpKTsKKyAgICBSZWZQdHIgZnJhbWUgPSBlbGVtZW50LmRvY3VtZW50
KCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBhdXRvIGZyYW1lVmlldyA9IG1ha2VSZWZQdHIoZWxlbWVudC5kb2N1bWVudCgpLnZpZXcoKSk7
CisgICAgUmVmUHRyIGZyYW1lVmlldyA9IGVsZW1lbnQuZG9jdW1lbnQoKS52aWV3KCk7CiAgICAg
aWYgKCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0KaW5kZXggZTM3
MGMyMDliZTBiNmNjOWI2ZDAzMjMxYzQ1ODAzN2VhMTVlOTllMC4uZGNmMWFjNjEwM2ZkMmUzODdj
ZjIxM2I4YTc2Njg5YjZlY2Q2YWZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCkBAIC00MDAsNyArNDAwLDcgQEAgdm9p
ZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpidWlsZFNlbGVjdGlvbkhpZ2hsaWdodCgpCiAg
ICAgICAgIGlmICghbWFpbkZyYW1lVmlldykKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICBhdXRvIHZpZXdGb3JSYW5nZSA9IG1ha2VSZWZQdHIoc2VsZWN0aW9uUmFuZ2UtPnN0YXJ0LmRv
Y3VtZW50KCkudmlldygpKTsKKyAgICAgICAgUmVmUHRyIHZpZXdGb3JSYW5nZSA9IHNlbGVjdGlv
blJhbmdlLT5zdGFydC5kb2N1bWVudCgpLnZpZXcoKTsKICAgICAgICAgaWYgKCF2aWV3Rm9yUmFu
Z2UpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAppbmRleCBlYmQ0NTY3MDcyZTAxYzMyMWQyYzc4NDYx
Yzc3MzYwNTk2OGVhNzM5Li5kZTk0MDA2MTlmNTJiYjE3N2YxYTdhYWYxMjc1NTU1YzVlZmE4MTQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEu
Y3BwCkBAIC0yMDksNyArMjA5LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1
c3RvbURhdGE6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogICAgICAgICAg
ICAgY29udGludWU7CiAKICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNo
YXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkpCi0gICAgICAgICAgICByZXR1cm4gbWFr
ZVJlZlB0cihXVEY6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oZW50cnkucGxhdGZvcm1EYXRhKS5n
ZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gV1RGOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KGVu
dHJ5LnBsYXRmb3JtRGF0YSkuY29weVJlZigpOwogCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IDY0
NWUwNjgwODdjYmJlMmEzYWE5MDFmOWU4NmZiODY1OTNmZTRlNGEuLmM2MTEyZTExOTRjN2M5OTBm
ZGMxMTRlODI5Y2ZkYjVjNmFmNzU0YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5
U3RyZWFtaW5nLmNwcApAQCAtMjYwLDcgKzI2MCw3IEBAIENETVByaXZhdGVGYWlyUGxheVN0cmVh
bWluZzo6fkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpID0gZGVmYXVsdDsKICNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKIHZvaWQgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzZXRM
b2dnZXIoTG9nZ2VyJiBsb2dnZXIsIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIpCiB7Ci0gICAg
bV9sb2dnZXIgPSBtYWtlUmVmUHRyKGxvZ2dlcik7CisgICAgbV9sb2dnZXIgPSAmbG9nZ2VyOwog
ICAgIG1fbG9nSWRlbnRpZmllciA9IGxvZ0lkZW50aWZpZXI7CiB9CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVh
bWluZ0FWRk9iakMubW0KaW5kZXggNmI5YmYyMTBhNzE5MjI3N2U4MTk0ZTkwNGQ5NWFjZThkZmU2
MTBlNS4uMDE2MmI1YTU0NTA0NTY4YjkzMWY2ODA3MDM2YTQ1NzZjY2M3MzlkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
SW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakMubW0KQEAgLTIzNCw3ICsyMzQsNyBAQCBDRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMoKSA9
IGRlZgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6c2V0TG9nZ2VyKExvZ2dlciYgbG9nZ2VyLCBjb25zdCB2b2lkKiBs
b2dJZGVudGlmaWVyKQogewotICAgIG1fbG9nZ2VyID0gbWFrZVJlZlB0cihsb2dnZXIpOworICAg
IG1fbG9nZ2VyID0gJmxvZ2dlcjsKICAgICBtX2xvZ0lkZW50aWZpZXIgPSBsb2dJZGVudGlmaWVy
OwogfQogI2VuZGlmCkBAIC02MzMsNyArNjMzLDcgQEAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjp+Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmcK
ICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRMb2dnZXIoTG9nZ2VyJiBsb2dnZXIsIGNvbnN0IHZvaWQq
IGxvZ0lkZW50aWZpZXIpCiB7Ci0gICAgbV9sb2dnZXIgPSBtYWtlUmVmUHRyKGxvZ2dlcik7Cisg
ICAgbV9sb2dnZXIgPSAmbG9nZ2VyOwogICAgIG1fbG9nSWRlbnRpZmllciA9IGxvZ0lkZW50aWZp
ZXI7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IGVhNTk0N2M5Y2IxOTJlZGI5NjUwMTk4NGU1MjBkZTM1
MGM1NDI3MGUuLjdkNTFiZWNlNWNhOTU3OGJjNTY5YzA1Yjk5ZjMzZWY2OWUzMTEzOTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5t
bQpAQCAtMjUzLDcgKzI1Myw3IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6aW52
YWxpZGF0ZSgpCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiB2b2lkIFNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakM6OnNldExvZ2dlcihjb25zdCBMb2dnZXImIGxvZ2dlciwgY29uc3Qgdm9pZCog
bG9nSWRlbnRpZmllcikKIHsKLSAgICBtX2xvZ2dlciA9IG1ha2VSZWZQdHIobG9nZ2VyKTsKKyAg
ICBtX2xvZ2dlciA9ICZsb2dnZXI7CiAgICAgbV9sb2dJZGVudGlmaWVyID0gbG9nSWRlbnRpZmll
cjsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2Vu
ZC5jcHAKaW5kZXggYWQ5ZTFjOWVlZTEyOTJiOTc0NzZmMWI1OGM3YTdmNzlmYjMxN2E5MC4uZWEw
NDlhOTk1MzIxN2M2M2JiZTdkNDEzY2RhN2RhYTk3MjYyMjBmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VC
YWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC04Miw3ICs4Miw3IEBAIFJlZlB0
cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZl
SW1hZ2UoQmFja2luZ1N0b3JlCiAgICAgfQogCiAgICAgY2FzZSBEb250Q29weUJhY2tpbmdTdG9y
ZToKLSAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUobWFrZVJlZlB0cihtX3N1cmZh
Y2UuZ2V0KCkpKTsKKyAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoUmVmUHRyIHsg
bV9zdXJmYWNlLmdldCgpIH0pOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCA4MGE4NzhkODQwNmZjMWM3MDIw
YTAxZjM1OTIzNGM1N2VkNDg0Mjk3Li4wN2EzNWM2NTYyMzJhMDUxNDViZGY1MTk0ZGUxMGI1ZDFm
NjYxMmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtNzA2LDcgKzcw
Niw3IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aW52YWxpZGF0ZSgpCiAKIHZvaWQg
U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYgbG9nZ2VyLCBj
b25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKQogewotICAgIG1fbG9nZ2VyID0gbWFrZVJlZlB0cihs
b2dnZXIpOworICAgIG1fbG9nZ2VyID0gJmxvZ2dlcjsKICAgICBtX2xvZ0lkZW50aWZpZXIgPSBs
b2dJZGVudGlmaWVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCmluZGV4
IDg1MWM2Mjk4M2IxYWY4ZTZmOGM5MjhjOTdlOWVkMjE5OTEyY2RhYjcuLjJjYWI4YjE5ZDE0M2U3
OGJkMjI3ZjIyNGM2NGJlMDUxNzA3YmE3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxp
bmUuY3BwCkBAIC03NTgsMTkgKzc1OCwxOSBAQCBSZWY8V2ViQ29yZTo6VHJhY2tQcml2YXRlQmFz
ZT4gQXBwZW5kUGlwZWxpbmU6Om1ha2VXZWJLaXRUcmFjayhpbnQgdHJhY2tJbmRleCkKICAgICBj
YXNlIFN0cmVhbVR5cGU6OkF1ZGlvOiB7CiAgICAgICAgIGF1dG8gc3BlY2lmaWNUcmFjayA9IEF1
ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUobWFrZVdlYWtQdHIobV9wbGF5ZXJQcml2
YXRlKSwgdHJhY2tJbmRleCwgV1RGTW92ZShwYWQpLCBmYWxzZSk7CiAgICAgICAgIGdzdHJlYW1l
clRyYWNrID0gc3BlY2lmaWNUcmFjay5wdHIoKTsKLSAgICAgICAgdHJhY2sgPSBtYWtlUmVmUHRy
KHN0YXRpY19jYXN0PFRyYWNrUHJpdmF0ZUJhc2UqPihzcGVjaWZpY1RyYWNrLnB0cigpKSk7Cisg
ICAgICAgIHRyYWNrID0gc3RhdGljX2Nhc3Q8VHJhY2tQcml2YXRlQmFzZSo+KHNwZWNpZmljVHJh
Y2sucHRyKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBTdHJlYW1UeXBlOjpW
aWRlbzogewogICAgICAgICBhdXRvIHNwZWNpZmljVHJhY2sgPSBWaWRlb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lcjo6Y3JlYXRlKG1ha2VXZWFrUHRyKG1fcGxheWVyUHJpdmF0ZSksIHRyYWNrSW5kZXgs
IFdURk1vdmUocGFkKSwgZmFsc2UpOwogICAgICAgICBnc3RyZWFtZXJUcmFjayA9IHNwZWNpZmlj
VHJhY2sucHRyKCk7Ci0gICAgICAgIHRyYWNrID0gbWFrZVJlZlB0cihzdGF0aWNfY2FzdDxUcmFj
a1ByaXZhdGVCYXNlKj4oc3BlY2lmaWNUcmFjay5wdHIoKSkpOworICAgICAgICB0cmFjayA9IHN0
YXRpY19jYXN0PFRyYWNrUHJpdmF0ZUJhc2UqPihzcGVjaWZpY1RyYWNrLnB0cigpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgU3RyZWFtVHlwZTo6VGV4dDogewogICAgICAgICBh
dXRvIHNwZWNpZmljVHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVh
dGUodHJhY2tJbmRleCwgV1RGTW92ZShwYWQpLCBmYWxzZSk7CiAgICAgICAgIGdzdHJlYW1lclRy
YWNrID0gc3BlY2lmaWNUcmFjay5wdHIoKTsKLSAgICAgICAgdHJhY2sgPSBtYWtlUmVmUHRyKHN0
YXRpY19jYXN0PFRyYWNrUHJpdmF0ZUJhc2UqPihzcGVjaWZpY1RyYWNrLnB0cigpKSk7CisgICAg
ICAgIHRyYWNrID0gc3RhdGljX2Nhc3Q8VHJhY2tQcml2YXRlQmFzZSo+KHNwZWNpZmljVHJhY2su
cHRyKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVy
YXRvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNw
b25zZUdlbmVyYXRvci5tbQppbmRleCA5YmU1ODY4MmNhYzMzYmJhYWE5ZTE4NmQyYTM0YzQ2NDBi
NDE1YzYyLi43YTc5ZGUwOTNiMDUxNDE3MGQwMzQ4OTNlMTIzYjkwMzdhMWFhNWU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VH
ZW5lcmF0b3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9S
YW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCkBAIC0yNjMsNyArMjYzLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbAogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLSAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBtYWtlUmVmUHRyKG1fZ2VuZXJhdG9yLmdldCgp
KTsKKyAgICAgICAgUmVmUHRyIGdlbmVyYXRvciB7IG1fZ2VuZXJhdG9yLmdldCgpIH07CiAgICAg
ICAgIGlmICghZ2VuZXJhdG9yKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBhdXRvKiBk
YXRhID0gZ2VuZXJhdG9yLT5tX21hcC5nZXQobV91cmxTdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCmluZGV4IGIzYTdjODcxZGMzZDQxN2ZjMTYzOTI0
ZTVlNWRkYjNhYzk3YTM5OWUuLmJkZTE1ZDQ1ZGQ4MWMwMzBjZjc2ZTRlMDdkYzc2NDhiZTY3NzNh
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTE1
NzMsOSArMTU3Myw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVyRWxlbWVu
dDo6c2VsZWN0aW9uUHNldWRvU3R5bGUoKSBjb25zdAogICAgICAgICByZXR1cm4gc2VsZWN0aW9u
U3R5bGU7CiAgICAgfQogCi0gICAgaWYgKGF1dG8gcm9vdCA9IG1ha2VSZWZQdHIoZWxlbWVudCgp
LT5jb250YWluaW5nU2hhZG93Um9vdCgpKSkgeworICAgIGlmIChSZWZQdHIgcm9vdCA9IGVsZW1l
bnQoKS0+Y29udGFpbmluZ1NoYWRvd1Jvb3QoKSkgewogICAgICAgICBpZiAocm9vdC0+bW9kZSgp
ID09IFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdlbnQpIHsKLSAgICAgICAgICAgIGF1dG8gY3VycmVu
dEVsZW1lbnQgPSBtYWtlUmVmUHRyKGVsZW1lbnQoKS0+c2hhZG93SG9zdCgpKTsKKyAgICAgICAg
ICAgIFJlZlB0ciBjdXJyZW50RWxlbWVudCA9IGVsZW1lbnQoKS0+c2hhZG93SG9zdCgpOwogICAg
ICAgICAgICAgLy8gV2hlbiBhbiBlbGVtZW50IGhhcyBkaXNwbGF5OiBjb250ZW50cywgdGhpcyBl
bGVtZW50IGRvZXNuJ3QgaGF2ZSBhIHJlbmRlcmVyCiAgICAgICAgICAgICAvLyBhbmQgaXRzIGNo
aWxkcmVuIHdpbGwgcmVuZGVyIGFzIGNoaWxkcmVuIG9mIHRoZSBwYXJlbnQgZWxlbWVudC4KICAg
ICAgICAgICAgIHdoaWxlIChjdXJyZW50RWxlbWVudCAmJiBjdXJyZW50RWxlbWVudC0+aGFzRGlz
cGxheUNvbnRlbnRzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1Mu
bW0KaW5kZXggYjA0MzA3ZWZmNmM5MjA4ZDIwM2E2NTEwYjY1ZTg3Y2VhMTdjN2ZkZC4uYzkyZDE5
Njk3ZWFkNDIzOTdiZTAzOWUzYmVlMzMwNTRkMmQxZmQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAtMjMwMCw3ICsyMzAwLDcgQEAgYm9vbCBSZW5k
ZXJUaGVtZUlPUzo6cGFpbnRNZXRlcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25z
dCBQYWludEluZm8mIHAKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBhdXRvJiByZW5kZXJN
ZXRlciA9IGRvd25jYXN0PFJlbmRlck1ldGVyPihyZW5kZXJlcik7Ci0gICAgYXV0byBlbGVtZW50
ID0gbWFrZVJlZlB0cihyZW5kZXJNZXRlci5tZXRlckVsZW1lbnQoKSk7CisgICAgUmVmUHRyIGVs
ZW1lbnQgPSByZW5kZXJNZXRlci5tZXRlckVsZW1lbnQoKTsKIAogICAgIGF1dG8mIGNvbnRleHQg
PSBwYWludEluZm8uY29udGV4dCgpOwogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcihjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3Rv
cmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VF
dmVudERpc3BhdGNoZXIuY3BwCmluZGV4IDAxZDc5ZDBiMGQyNTVlYjRlOWU3YjhiZWQzYWU2OTVi
ZjkzZmJhMTMuLmQ1YTMwYmVhYTgzM2M1NzM5YmJhYzhhN2NkZGUwMWUwNzQyYTQwZTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnREaXNwYXRjaGVyLmNwcApA
QCAtODUsNyArODUsNyBAQCB2b2lkIFN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoU2Vz
c2lvblN0b3JhZ2VFdmVudHNUb0ZyYW1lcyhQYWdlJiBwYWdlLCBjbwogICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQocGFnZSwga2V5LCBvbGRW
YWx1ZSwgbmV3VmFsdWUsIFN0b3JhZ2VUeXBlOjpTZXNzaW9uLCBzZWN1cml0eU9yaWdpbi5zZWN1
cml0eU9yaWdpbigpLnB0cigpKTsKIAogICAgIGZvciAoYXV0byYgZnJhbWUgOiBmcmFtZXMpIHsK
LSAgICAgICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWZQdHIoZnJhbWUtPmRvY3VtZW50KCkpOwor
ICAgICAgICBSZWZQdHIgZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKICAgICAgICAgYXV0
byByZXN1bHQgPSBkb2N1bWVudC0+ZG9tV2luZG93KCktPnNlc3Npb25TdG9yYWdlKCk7CiAgICAg
ICAgIGlmICghcmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0
d2cub3JnL211bHRpcGFnZS93ZWJzdG9yYWdlLmh0bWwjdGhlLXN0b3JhZ2UtZXZlbnQ6ZXZlbnQt
c3RvcmFnZQogICAgICAgICAgICAgZG9jdW1lbnQtPnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudE9u
V2luZG93KFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgU3RvcmFnZUV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLnN0b3JhZ2VFdmVudCwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybCwg
cmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKSk7CkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgU3Rv
cmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHNUb0ZyYW1lcyhQ
YWdlR3JvdXAmIHBhZ2VHCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlz
cGF0Y2hET01TdG9yYWdlRXZlbnQocGFnZSwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIFN0b3Jh
Z2VUeXBlOjpMb2NhbCwgc2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKS5wdHIoKSk7CiAK
ICAgICBmb3IgKGF1dG8mIGZyYW1lIDogZnJhbWVzKSB7Ci0gICAgICAgIGF1dG8gZG9jdW1lbnQg
PSBtYWtlUmVmUHRyKGZyYW1lLT5kb2N1bWVudCgpKTsKKyAgICAgICAgUmVmUHRyIGRvY3VtZW50
ID0gZnJhbWUtPmRvY3VtZW50KCk7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gZG9jdW1lbnQtPmRv
bVdpbmRvdygpLT5sb2NhbFN0b3JhZ2UoKTsKICAgICAgICAgaWYgKCFyZXN1bHQuaGFzRXhjZXB0
aW9uKCkpIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dlYnN0b3Jh
Z2UuaHRtbCN0aGUtc3RvcmFnZS1ldmVudDpldmVudC1zdG9yYWdlCiAgICAgICAgICAgICBkb2N1
bWVudC0+cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50T25XaW5kb3coVGFza1NvdXJjZTo6RE9NTWFu
aXB1bGF0aW9uLCBTdG9yYWdlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc3RvcmFnZUV2ZW50
LCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsLCByZXN1bHQucmVsZWFzZVJldHVyblZhbHVl
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKaW5kZXggMTk5NzEzMDMzNDlkNzJm
ZDJlZDk4NjA4YWM5ZTdjMmFjYWVmN2I1Mi4uOWRkODViMjFkZjVhZDEzMTkwNWZjMzhlNDI0M2Jk
NGI3ZDZlZTJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKQEAgLTE0MSw3ICsx
NDEsNyBAQCBhdXRvIFNjb3BlOjptYWtlUmVzb2x2ZXJTaGFyaW5nS2V5KCkgLT4gUmVzb2x2ZXJT
aGFyaW5nS2V5CiB7CiAgICAgY29uc3RleHByIGJvb2wgaXNOb25FbXB0eUhhc2hUYWJsZVZhbHVl
ID0gdHJ1ZTsKICAgICByZXR1cm4gewotICAgICAgICBtX2FjdGl2ZVN0eWxlU2hlZXRzLm1hcChb
Jl0oYXV0byYgc2hlZXQpIHsgcmV0dXJuIG1ha2VSZWZQdHIoc2hlZXQtPmNvbnRlbnRzKCkpOyB9
KSwKKyAgICAgICAgbV9hY3RpdmVTdHlsZVNoZWV0cy5tYXAoWyZdKGF1dG8mIHNoZWV0KSB7IHJl
dHVybiBSZWZQdHIgeyAmc2hlZXQtPmNvbnRlbnRzKCkgfTsgfSksCiAgICAgICAgIGlzRm9yVXNl
ckFnZW50U2hhZG93VHJlZSgpLAogICAgICAgICBpc05vbkVtcHR5SGFzaFRhYmxlVmFsdWUKICAg
ICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAKaW5kZXggNDQ0ZWZkMmEwMTdiYzg3ZDJm
NmEzODQwYTljZWU0Yjc3OTExOWE0OC4uZGFmZjE5ZGJmZGU5YzVkYjNiODM0OTZmNzRhYzIwM2Zj
ZDJlNDg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCkBAIC0xMjQsNyArMTI0LDcg
QEAgdm9pZCBTVkdBRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCYgZXZlbnQpCiAg
ICAgICAgICAgICBTdHJpbmcgdXJsID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2Vz
KGhyZWYoKSk7CiAKICAgICAgICAgICAgIGlmICh1cmxbMF0gPT0gJyMnKSB7Ci0gICAgICAgICAg
ICAgICAgYXV0byB0YXJnZXRFbGVtZW50ID0gbWFrZVJlZlB0cih0cmVlU2NvcGUoKS5nZXRFbGVt
ZW50QnlJZCh1cmwuc3Vic3RyaW5nU2hhcmluZ0ltcGwoMSkpKTsKKyAgICAgICAgICAgICAgICBS
ZWZQdHIgdGFyZ2V0RWxlbWVudCA9IHRyZWVTY29wZSgpLmdldEVsZW1lbnRCeUlkKHVybC5zdWJz
dHJpbmdTaGFyaW5nSW1wbCgxKSk7CiAgICAgICAgICAgICAgICAgaWYgKGlzPFNWR1NNSUxFbGVt
ZW50Pih0YXJnZXRFbGVtZW50KSkgewogICAgICAgICAgICAgICAgICAgICBkb3duY2FzdDxTVkdT
TUlMRWxlbWVudD4oKnRhcmdldEVsZW1lbnQpLmJlZ2luQnlMaW5rQWN0aXZhdGlvbigpOwogICAg
ICAgICAgICAgICAgICAgICBldmVudC5zZXREZWZhdWx0SGFuZGxlZCgpOwpAQCAtMTM3LDcgKzEz
Nyw3IEBAIHZvaWQgU1ZHQUVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQmIGV2ZW50
KQogICAgICAgICAgICAgICAgIHRhcmdldCA9ICJfYmxhbmsiOwogICAgICAgICAgICAgZXZlbnQu
c2V0RGVmYXVsdEhhbmRsZWQoKTsKIAotICAgICAgICAgICAgYXV0byBmcmFtZSA9IG1ha2VSZWZQ
dHIoZG9jdW1lbnQoKS5mcmFtZSgpKTsKKyAgICAgICAgICAgIFJlZlB0ciBmcmFtZSA9IGRvY3Vt
ZW50KCkuZnJhbWUoKTsKICAgICAgICAgICAgIGlmICghZnJhbWUpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKGRvY3Vt
ZW50KCkuY29tcGxldGVVUkwodXJsKSwgdGFyZ2V0LCAmZXZlbnQsIFJlZmVycmVyUG9saWN5OjpF
bXB0eVN0cmluZywgZG9jdW1lbnQoKS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9w
YWdhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1l
bnRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3Bw
CmluZGV4IDY5OWU5YTNlMmMyZWU5ZjVhOTMwNzEyZTMxNzIxZDM0YWRlNWY0ODUuLmY2ZmY5NGIz
YmQ4YzcyZDM4MDRkN2Q1NjIyNDk1OTk2MGQwOTU0MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBTVkdB
bmltYXRlRWxlbWVudEJhc2U6OnN0YXJ0QW5pbWF0aW9uKCkKICAgICBpZiAoIXRhcmdldEVsZW1l
bnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGF1dG8gcHJvdGVjdGVkQW5pbWF0b3Ig
PSBtYWtlUmVmUHRyKHRoaXMtPmFuaW1hdG9yKCkpKQorICAgIGlmIChSZWZQdHIgcHJvdGVjdGVk
QW5pbWF0b3IgPSB0aGlzLT5hbmltYXRvcigpKQogICAgICAgICBwcm90ZWN0ZWRBbmltYXRvci0+
c3RhcnQoKnRhcmdldEVsZW1lbnQoKSk7CiB9CiAKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFNW
R0FuaW1hdGVFbGVtZW50QmFzZTo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwcm9ncmVz
cywgdW5zaWduZWQgcmVwZQogICAgIGlmIChjYWxjTW9kZSgpID09IENhbGNNb2RlOjpEaXNjcmV0
ZSkKICAgICAgICAgcHJvZ3Jlc3MgPSBwcm9ncmVzcyA8IDAuNSA/IDAgOiAxOwogCi0gICAgaWYg
KGF1dG8gcHJvdGVjdGVkQW5pbWF0b3IgPSBtYWtlUmVmUHRyKHRoaXMtPmFuaW1hdG9yKCkpKQor
ICAgIGlmIChSZWZQdHIgcHJvdGVjdGVkQW5pbWF0b3IgPSB0aGlzLT5hbmltYXRvcigpKQogICAg
ICAgICBwcm90ZWN0ZWRBbmltYXRvci0+YW5pbWF0ZSgqdGFyZ2V0RWxlbWVudCgpLCBwcm9ncmVz
cywgcmVwZWF0Q291bnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVN
b3Rpb25FbGVtZW50LmNwcAppbmRleCAzNzdkNzlhMGQzMWUwYWZiNWJjOGQ4MmU0ZmQwZTYxMjZk
Y2QzZDhjLi4xYWNjYzNhZWI5MDM3OTNlZTAxYTUyYTJjNGE5MDU1NzY5MTZmMmY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKQEAgLTU4LDcg
KzU4LDcgQEAgUmVmPFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50PiBTVkdBbmltYXRlTW90aW9uRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUKIAogYm9vbCBTVkdBbmltYXRlTW90aW9u
RWxlbWVudDo6aGFzVmFsaWRBdHRyaWJ1dGVUeXBlKCkgY29uc3QKIHsKLSAgICBhdXRvIHRhcmdl
dEVsZW1lbnQgPSBtYWtlUmVmUHRyKHRoaXMtPnRhcmdldEVsZW1lbnQoKSk7CisgICAgUmVmUHRy
IHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7CiAgICAgaWYgKCF0YXJnZXRF
bGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lk
IFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpzdGFydEFuaW1hdGlvbigpCiB7CiAgICAgaWYgKCFo
YXNWYWxpZEF0dHJpYnV0ZVR5cGUoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gdGFyZ2V0
RWxlbWVudCA9IG1ha2VSZWZQdHIodGhpcy0+dGFyZ2V0RWxlbWVudCgpKTsKKyAgICBSZWZQdHIg
dGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsKICAgICBpZiAoIXRhcmdldEVs
ZW1lbnQpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoQWZmaW5lVHJhbnNmb3JtKiB0cmFuc2Zv
cm0gPSB0YXJnZXRFbGVtZW50LT5zdXBwbGVtZW50YWxUcmFuc2Zvcm0oKSkKQEAgLTIwNiw3ICsy
MDYsNyBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpidWlsZFRyYW5zZm9ybUZvclBy
b2dyZXNzKEFmZmluZVRyYW5zZm9ybSogdHJhbnNmbwogCiB2b2lkIFNWR0FuaW1hdGVNb3Rpb25F
bGVtZW50OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVk
IHJlcGVhdENvdW50KQogewotICAgIGF1dG8gdGFyZ2V0RWxlbWVudCA9IG1ha2VSZWZQdHIodGhp
cy0+dGFyZ2V0RWxlbWVudCgpKTsKKyAgICBSZWZQdHIgdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRh
cmdldEVsZW1lbnQoKTsKICAgICBpZiAoIXRhcmdldEVsZW1lbnQpCiAgICAgICAgIHJldHVybjsK
IApAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNhbGN1
bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQKIHZvaWQgU1ZHQW5p
bWF0ZU1vdGlvbkVsZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KCkKIHsKICAgICAvLyBXZSBh
Y2N1bXVsYXRlIHRvIHRoZSB0YXJnZXQgZWxlbWVudCB0cmFuc2Zvcm0gbGlzdCBzbyB0aGVyZSBp
cyBub3QgbXVjaCB0byBkbyBoZXJlLgotICAgIGF1dG8gdGFyZ2V0RWxlbWVudCA9IG1ha2VSZWZQ
dHIodGhpcy0+dGFyZ2V0RWxlbWVudCgpKTsKKyAgICBSZWZQdHIgdGFyZ2V0RWxlbWVudCA9IHRo
aXMtPnRhcmdldEVsZW1lbnQoKTsKICAgICBpZiAoIXRhcmdldEVsZW1lbnQpCiAgICAgICAgIHJl
dHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5z
aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcApp
bmRleCA1MWI4OGNjMGZlZWVhYjgxMzA1N2U5NWY5NGQ3ZDQxZTA2ZTE4NDYwLi44NjMyZjAyZjRi
ZjZiZDVjMjAxNzVmMzEzNjMzNTYxMzJjYWFmNGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcApAQCAtMjU4LDcgKzI1OCw3IEBAIFJlZlB0cjxFbGVt
ZW50PiBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnRha2VFbGVtZW50RnJvbVBlbmRpbmdSZXNvdXJj
ZXNGb3JSZW1vdmFsCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byYgcmVzb3Vy
Y2VTZXQgPSBpdC0+dmFsdWU7Ci0gICAgYXV0byBmaXJzdEVsZW1lbnQgPSBtYWtlUmVmUHRyKHJl
c291cmNlU2V0LmJlZ2luKCkuZ2V0KCkpOworICAgIFJlZlB0ciBmaXJzdEVsZW1lbnQgPSByZXNv
dXJjZVNldC5iZWdpbigpLmdldCgpOwogICAgIGlmICghZmlyc3RFbGVtZW50KQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IGJhNTQyNjA2
YmIwOWJhNjk4ODczZGJkN2FlMDhhMTNlMjJhYWZkYmYuLjE1Y2FhNDVjZjkzYzVmYjg0Yzc4MTQ5
YjE1Mzk4MmRiNDdiZDE2OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTMzMyw3
ICszMzMsNyBAQCB2b2lkIFNWR0VsZW1lbnQ6OnJlbW92ZUVsZW1lbnRSZWZlcmVuY2UoKQogewog
ICAgIGlmICghbV9zdmdSYXJlRGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChhdXRvIGRl
c3RpbmF0aW9uID0gbWFrZVJlZlB0cihtX3N2Z1JhcmVEYXRhLT5yZWZlcmVuY2VUYXJnZXQoKSkp
CisgICAgaWYgKFJlZlB0ciBkZXN0aW5hdGlvbiA9IG1fc3ZnUmFyZURhdGEtPnJlZmVyZW5jZVRh
cmdldCgpKQogICAgICAgICBkZXN0aW5hdGlvbi0+cmVtb3ZlUmVmZXJlbmNpbmdFbGVtZW50KCp0
aGlzKTsKIH0KIApAQCAtMzc3LDcgKzM3Nyw3IEBAIFJlZlB0cjxTVkdVc2VFbGVtZW50PiBTVkdF
bGVtZW50Ojpjb3JyZXNwb25kaW5nVXNlRWxlbWVudCgpIGNvbnN0CiB2b2lkIFNWR0VsZW1lbnQ6
OnNldENvcnJlc3BvbmRpbmdFbGVtZW50KFNWR0VsZW1lbnQqIGNvcnJlc3BvbmRpbmdFbGVtZW50
KQogewogICAgIGlmIChtX3N2Z1JhcmVEYXRhKSB7Ci0gICAgICAgIGlmIChhdXRvIG9sZENvcnJl
c3BvbmRpbmdFbGVtZW50ID0gbWFrZVJlZlB0cihtX3N2Z1JhcmVEYXRhLT5jb3JyZXNwb25kaW5n
RWxlbWVudCgpKSkKKyAgICAgICAgaWYgKFJlZlB0ciBvbGRDb3JyZXNwb25kaW5nRWxlbWVudCA9
IG1fc3ZnUmFyZURhdGEtPmNvcnJlc3BvbmRpbmdFbGVtZW50KCkpCiAgICAgICAgICAgICBvbGRD
b3JyZXNwb25kaW5nRWxlbWVudC0+bV9zdmdSYXJlRGF0YS0+cmVtb3ZlSW5zdGFuY2UoKnRoaXMp
OwogICAgIH0KICAgICBpZiAobV9zdmdSYXJlRGF0YSB8fCBjb3JyZXNwb25kaW5nRWxlbWVudCkK
QEAgLTY0Myw3ICs2NDMsNyBAQCB2b2lkIFNWR0VsZW1lbnQ6OmFuaW1hdG9yV2lsbEJlRGVsZXRl
ZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQogc3RkOjpvcHRpb25hbDxTdHls
ZTo6RWxlbWVudFN0eWxlPiBTVkdFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVu
ZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSopCiB7CiAgICAgLy8gSWYg
dGhlIGVsZW1lbnQgaXMgaW4gYSA8dXNlPiB0cmVlIHdlIGdldCB0aGUgc3R5bGUgZnJvbSB0aGUg
ZGVmaW5pdGlvbiB0cmVlLgotICAgIGlmIChhdXRvIHN0eWxlRWxlbWVudCA9IG1ha2VSZWZQdHIo
dGhpcy0+Y29ycmVzcG9uZGluZ0VsZW1lbnQoKSkpIHsKKyAgICBpZiAoUmVmUHRyIHN0eWxlRWxl
bWVudCA9IHRoaXMtPmNvcnJlc3BvbmRpbmdFbGVtZW50KCkpIHsKICAgICAgICAgYXV0byBzdHls
ZSA9IHN0eWxlRWxlbWVudC0+cmVzb2x2ZVN0eWxlKCZwYXJlbnRTdHlsZSk7CiAgICAgICAgIFN0
eWxlOjpBZGp1c3Rlcjo6YWRqdXN0U1ZHRWxlbWVudFN0eWxlKCpzdHlsZS5yZW5kZXJTdHlsZSwg
KnRoaXMpOwogICAgICAgICByZXR1cm4gc3R5bGU7CkBAIC02NzYsNyArNjc2LDcgQEAgY29uc3Qg
UmVuZGVyU3R5bGUqIFNWR0VsZW1lbnQ6OmNvbXB1dGVkU3R5bGUoUHNldWRvSWQgcHNldWRvRWxl
bWVudFNwZWNpZmllcikKICAgICAgICAgcmV0dXJuIEVsZW1lbnQ6OmNvbXB1dGVkU3R5bGUocHNl
dWRvRWxlbWVudFNwZWNpZmllcik7CiAKICAgICBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5
bGUgPSBudWxscHRyOwotICAgIGlmIChhdXRvIHBhcmVudCA9IG1ha2VSZWZQdHIocGFyZW50T3JT
aGFkb3dIb3N0RWxlbWVudCgpKSkgeworICAgIGlmIChSZWZQdHIgcGFyZW50ID0gcGFyZW50T3JT
aGFkb3dIb3N0RWxlbWVudCgpKSB7CiAgICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gcGFyZW50
LT5yZW5kZXJlcigpKQogICAgICAgICAgICAgcGFyZW50U3R5bGUgPSAmcmVuZGVyZXItPnN0eWxl
KCk7CiAgICAgfQpAQCAtOTc5LDcgKzk3OSw3IEBAIHZvaWQgU1ZHRWxlbWVudDo6dXBkYXRlUmVs
YXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oYm9vbCBoYXNSZWxhdGl2ZUxlbmd0aHMsIFNWR0VsCiAg
ICAgfQogCiAgICAgaWYgKGlzPFNWR0dyYXBoaWNzRWxlbWVudD4oZWxlbWVudCkpIHsKLSAgICAg
ICAgaWYgKGF1dG8gcGFyZW50ID0gbWFrZVJlZlB0cihwYXJlbnROb2RlKCkpOyBpczxTVkdFbGVt
ZW50PihwYXJlbnQpKQorICAgICAgICBpZiAoUmVmUHRyIHBhcmVudCA9IHBhcmVudE5vZGUoKTsg
aXM8U1ZHRWxlbWVudD4ocGFyZW50KSkKICAgICAgICAgICAgIGRvd25jYXN0PFNWR0VsZW1lbnQ+
KCpwYXJlbnQpLnVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKGhhc1JlbGF0aXZlTGVu
Z3RocywgKnRoaXMpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
RGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXggNzUxYWRhYzEyOGE4YjNmOGY4MDE3OTMw
NzU4MjNiZWVjZmQ5NGJjZS4uMTUyYzk4NWZkOGU5NWFlOTk1N2U2ZTIxZDZiZjJhMTBjNDU0YmRk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudC5jcHAKQEAgLTE1OCw3ICsxNTgsNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlcgogICAg
IGlmICghaW5wdXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gbGlnaHRF
bGVtZW50ID0gbWFrZVJlZlB0cihTVkdGRUxpZ2h0RWxlbWVudDo6ZmluZExpZ2h0RWxlbWVudCh0
aGlzKSk7CisgICAgUmVmUHRyIGxpZ2h0RWxlbWVudCA9IFNWR0ZFTGlnaHRFbGVtZW50OjpmaW5k
TGlnaHRFbGVtZW50KHRoaXMpOwogICAgIGlmICghbGlnaHRFbGVtZW50KQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUlt
YWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3Bw
CmluZGV4IDE4Zjc4MDlmYWUwMjkyNDc0YmZmMDVmYjE0MDE3YzJkZTY2MWQzNDYuLmUxNDY4OGE1
ZWIxNzZmMDJhMTZjMDU1MGYwODExOTVkM2MyN2VjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFSW1hZ2VFbGVtZW50LmNwcApAQCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQgU1ZHRkVJbWFnZUVs
ZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzCiAgICAgaWYgKCFpc0Nvbm5lY3RlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBh
dXRvIHBhcmVudCA9IG1ha2VSZWZQdHIocGFyZW50RWxlbWVudCgpKTsKKyAgICBSZWZQdHIgcGFy
ZW50ID0gcGFyZW50RWxlbWVudCgpOwogCiAgICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC0+aGFz
VGFnTmFtZShTVkdOYW1lczo6ZmlsdGVyVGFnKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAKaW5kZXggM2QxM2QxNmUxMDdmZTQ0Y2YyMGI1
NzlhNWYxNzY5NTJkODU4NmE4My4uMGRhOWMzM2EyZjY3MGUwMWY1NzAyNjVmZTk0NjFlZjRiZWJi
ZjRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCkBAIC0xMjUs
NyArMTI1LDcgQEAgdm9pZCBTVkdGRUxpZ2h0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmkKIHZvaWQgU1ZHRkVMaWdodEVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7
CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7
Ci0gICAgICAgIGF1dG8gcGFyZW50ID0gbWFrZVJlZlB0cihwYXJlbnRFbGVtZW50KCkpOworICAg
ICAgICBSZWZQdHIgcGFyZW50ID0gcGFyZW50RWxlbWVudCgpOwogICAgICAgICBpZiAoIXBhcmVu
dCkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgU1ZHRkVM
aWdodEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQog
CiAgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKQog
ICAgICAgICByZXR1cm47Ci0gICAgYXV0byBwYXJlbnQgPSBtYWtlUmVmUHRyKHBhcmVudE5vZGUo
KSk7CisgICAgUmVmUHRyIHBhcmVudCA9IHBhcmVudE5vZGUoKTsKICAgICBpZiAoIXBhcmVudCkK
ICAgICAgICAgcmV0dXJuOwogICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gcGFyZW50LT5y
ZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdo
dGluZ0VsZW1lbnQuY3BwCmluZGV4IDI2NGQxOTdlZjM2NTZiYmZiODQxYjY3NjA0M2I2MDMxZDFj
ZWNkODEuLjliN2NlNDBhYjk3MTZhZTRmMzM1ZjU0YjI0Y2RhNDU5YTg0MjlhNTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAK
QEAgLTE2Nyw3ICsxNjcsNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZQogICAgIGlmICghaW5w
dXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gbGlnaHRFbGVtZW50ID0g
bWFrZVJlZlB0cihTVkdGRUxpZ2h0RWxlbWVudDo6ZmluZExpZ2h0RWxlbWVudCh0aGlzKSk7Cisg
ICAgUmVmUHRyIGxpZ2h0RWxlbWVudCA9IFNWR0ZFTGlnaHRFbGVtZW50OjpmaW5kTGlnaHRFbGVt
ZW50KHRoaXMpOwogICAgIGlmICghbGlnaHRFbGVtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKaW5kZXggZjJhNmVlMDhkYjdhMGQyZGYzYmQ4
Y2M1Mzc1ZDMxNzk4YjUxMjFlMi4uZmY1MjIzMDk0NjZiMDQwYmVmMDg5ZDE1N2IzODZkZmZiYjA1
YzYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKQEAgLTEyNyw4ICsxMjcsNyBAQCB2b2lkIGlu
dmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQoU1ZHRWxlbWVudCogZWxlbWVudCkKICAgICBp
ZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcGFyZW50ID0gbWFrZVJl
ZlB0cihlbGVtZW50LT5wYXJlbnROb2RlKCkpOwotCisgICAgUmVmUHRyIHBhcmVudCA9IGVsZW1l
bnQtPnBhcmVudE5vZGUoKTsKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwCmluZGV4IGJmNWQ2NzE1NThj
MzhjMGM3NTQyNzIwMDM5YWIzNDAxMjQ2MzJmM2UuLjViMzQxMjZmMTEzNTFhNjdhNGE1NmMwYTBi
OWFlZWNlN2YyNzA0NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFj
ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQu
Y3BwCkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBTVkdGb250RmFjZUVsZW1lbnQ6OnJlYnVpbGRG
b250RmFjZSgpCiAKICAgICAgICAgdW5zaWduZWQgc3JjTGVuZ3RoID0gc3JjTGlzdCA/IHNyY0xp
c3QtPmxlbmd0aCgpIDogMDsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNyY0xl
bmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBpdGVtID0gbWFrZVJlZlB0cihkb3du
Y2FzdDxDU1NGb250RmFjZVNyY1ZhbHVlPihzcmNMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNr
KGkpKSkpCisgICAgICAgICAgICBpZiAoUmVmUHRyIGl0ZW0gPSBkb3duY2FzdDxDU1NGb250RmFj
ZVNyY1ZhbHVlPihzcmNMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKSkKICAgICAgICAg
ICAgICAgICBpdGVtLT5zZXRTVkdGb250RmFjZUVsZW1lbnQodGhpcyk7CiAgICAgICAgIH0KICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VGb3JtYXRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUZvcm1hdEVsZW1lbnQuY3Bw
CmluZGV4IGI2MDc4NTliOGY1Y2M3NmY4NzgyOTIwMDNiZDNkYzRkMTk4MmY3M2IuLjU3MjdmMjhh
OGI3OWQxMjIwN2M5NjNiNWM2YWY0OGRjYTYxMGQ3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGb250RmFjZUZvcm1hdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGb250RmFjZUZvcm1hdEVsZW1lbnQuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHZvaWQg
U1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFu
Z2UmIGNoYW5nZSkKICAgICBpZiAoIXBhcmVudE5vZGUoKSB8fCAhcGFyZW50Tm9kZSgpLT5oYXNU
YWdOYW1lKGZvbnRfZmFjZV91cmlUYWcpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgYXV0
byBhbmNlc3RvciA9IG1ha2VSZWZQdHIocGFyZW50Tm9kZSgpLT5wYXJlbnROb2RlKCkpOworICAg
IFJlZlB0ciBhbmNlc3RvciA9IHBhcmVudE5vZGUoKS0+cGFyZW50Tm9kZSgpOwogICAgIGlmICgh
YW5jZXN0b3IgfHwgIWFuY2VzdG9yLT5oYXNUYWdOYW1lKGZvbnRfZmFjZV9zcmNUYWcpKQogICAg
ICAgICByZXR1cm47CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9u
dEZhY2VVcmlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVs
ZW1lbnQuY3BwCmluZGV4IGU0OWY0NDg3YzRlMmI2M2M1MWUyODgzMjhmNTcyYzk4NWIzYmMxOTEu
LjAzMGE5M2RhODlmYzU5ZDgwNDVkNjdjMGRhNTgyMjI3MjdjOGY1ZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCkBAIC03Nyw5ICs3Nyw5IEBAIHZv
aWQgU1ZHRm9udEZhY2VVcmlFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFu
Z2UmIGNoYW5nZSkKICAgICBpZiAoIXBhcmVudE5vZGUoKSB8fCAhcGFyZW50Tm9kZSgpLT5oYXNU
YWdOYW1lKGZvbnRfZmFjZV9zcmNUYWcpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgYXV0
byBncmFuZHBhcmVudCA9IG1ha2VSZWZQdHIocGFyZW50Tm9kZSgpLT5wYXJlbnROb2RlKCkpOwot
ICAgIGlmIChncmFuZHBhcmVudCAmJiBncmFuZHBhcmVudC0+aGFzVGFnTmFtZShmb250X2ZhY2VU
YWcpKQotICAgICAgICBkb3duY2FzdDxTVkdGb250RmFjZUVsZW1lbnQ+KCpncmFuZHBhcmVudCku
cmVidWlsZEZvbnRGYWNlKCk7CisgICAgUmVmUHRyIGdyYW5kUGFyZW50ID0gcGFyZW50Tm9kZSgp
LT5wYXJlbnROb2RlKCk7CisgICAgaWYgKGdyYW5kUGFyZW50ICYmIGdyYW5kUGFyZW50LT5oYXNU
YWdOYW1lKGZvbnRfZmFjZVRhZykpCisgICAgICAgIGRvd25jYXN0PFNWR0ZvbnRGYWNlRWxlbWVu
dD4oKmdyYW5kUGFyZW50KS5yZWJ1aWxkRm9udEZhY2UoKTsKIH0KIAogTm9kZTo6SW5zZXJ0ZWRJ
bnRvQW5jZXN0b3JSZXN1bHQgU1ZHRm9udEZhY2VVcmlFbGVtZW50OjppbnNlcnRlZEludG9BbmNl
c3RvcihJbnNlcnRpb25UeXBlIGluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9m
SW5zZXJ0ZWRUcmVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25P
YmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxl
bWVudC5jcHAKaW5kZXggM2E1MTRjYjM4NDFjNDI4ZTYyZGUxMmE2NTFiY2Q2MGY1ZTVlZTYzZC4u
YmMwMDY4NDhiZjM2YjY1YmI5NzQyNTMxZWFmMDc3ZmYzNmJiNzI5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCkBAIC0xMTEsNyArMTExLDcg
QEAgYm9vbCBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgLy8gTm90ZSB0aGF0IHdlIGN1cnJlbnRseSBkbyBub3Qg
c3VwcG9ydCBmb3JlaWduT2JqZWN0IGluc3RhbnRpYXRpb24gdmlhIDx1c2U+LCBoZW5jZSBpdCBp
cyBzYWZlCiAgICAgLy8gdG8gdXNlIHBhcmVudEVsZW1lbnQoKSBoZXJlLiBJZiB0aGF0IGNoYW5n
ZXMsIHRoaXMgbWV0aG9kIHNob3VsZCBiZSB1cGRhdGVkIHRvIHVzZQogICAgIC8vIHBhcmVudE9y
U2hhZG93SG9zdEVsZW1lbnQoKSBpbnN0ZWFkLgotICAgIGF1dG8gYW5jZXN0b3IgPSBtYWtlUmVm
UHRyKHBhcmVudEVsZW1lbnQoKSk7CisgICAgUmVmUHRyIGFuY2VzdG9yID0gcGFyZW50RWxlbWVu
dCgpOwogICAgIHdoaWxlIChhbmNlc3RvciAmJiBhbmNlc3Rvci0+aXNTVkdFbGVtZW50KCkpIHsK
ICAgICAgICAgaWYgKGFuY2VzdG9yLT5yZW5kZXJlcigpICYmIGFuY2VzdG9yLT5yZW5kZXJlcigp
LT5pc1NWR0hpZGRlbkNvbnRhaW5lcigpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aENvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0xlbmd0aENvbnRleHQuY3BwCmluZGV4IGU2ODg3N2RmY2M5ZTY3NThk
ZDJiMGQ3NjEwNmFjMzljODYwNzZkMTIuLmZmNmI0ZjAxNTBlYzNhYWNmMTA1MDU2MzYzYTQwOGVh
NDY3YmQ1MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29udGV4dC5jcHAKQEAgLTMw
Miw3ICszMDIsNyBAQCBib29sIFNWR0xlbmd0aENvbnRleHQ6OmRldGVybWluZVZpZXdwb3J0KEZs
b2F0U2l6ZSYgdmlld3BvcnRTaXplKSBjb25zdAogICAgIH0KIAogICAgIC8vIFRha2Ugc2l6ZSBm
cm9tIG5lYXJlc3Qgdmlld3BvcnQgZWxlbWVudC4KLSAgICBhdXRvIHZpZXdwb3J0RWxlbWVudCA9
IG1ha2VSZWZQdHIobV9jb250ZXh0LT52aWV3cG9ydEVsZW1lbnQoKSk7CisgICAgUmVmUHRyIHZp
ZXdwb3J0RWxlbWVudCA9IG1fY29udGV4dC0+dmlld3BvcnRFbGVtZW50KCk7CiAgICAgaWYgKCFp
czxTVkdTVkdFbGVtZW50Pih2aWV3cG9ydEVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAppbmRleCA5MGMxY2ZmNDVkMTQzMjgx
NjIwMTEzNmIxY2U4ZjU5YzViOGQ2NDhmLi40OTdjOWM1NzFhZGM4NDE2NjJhMDMwNmU0OTFhZGUw
OGY0YTYwODM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCkBAIC0xMDcsNyAr
MTA3LDcgQEAgUmVmUHRyPEZyYW1lPiBTVkdTVkdFbGVtZW50OjpmcmFtZUZvckN1cnJlbnRTY2Fs
ZSgpIGNvbnN0CiAgICAgLy8gSWYgdGhlIGRvY3VtZW50IGlzIGVtYmVkZGVkLCB0aGUgc2NhbGlu
ZyBpcyBoYW5kbGVkIGJ5IHRoZSBob3N0IHJlbmRlcmVyLgogICAgIGlmICghaXNDb25uZWN0ZWQo
KSB8fCAhaXNPdXRlcm1vc3RTVkdTVkdFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKGRvY3VtZW50KCkuZnJhbWUoKSk7CisgICAg
UmVmUHRyIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIHJldHVybiBmcmFtZSAmJiBm
cmFtZS0+aXNNYWluRnJhbWUoKSA/IGZyYW1lIDogbnVsbHB0cjsKIH0KIApAQCAtMjczLDcgKzI3
Myw3IEBAIGJvb2wgU1ZHU1ZHRWxlbWVudDo6Y2hlY2tFbmNsb3N1cmUoUmVmPFNWR0VsZW1lbnQ+
JiYgZWxlbWVudCwgU1ZHUmVjdCYgcmVjdCkKIAogdm9pZCBTVkdTVkdFbGVtZW50OjpkZXNlbGVj
dEFsbCgpCiB7Ci0gICAgaWYgKGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKGRvY3VtZW50KCkuZnJh
bWUoKSkpCisgICAgaWYgKFJlZlB0ciBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKSkKICAgICAg
ICAgZnJhbWUtPnNlbGVjdGlvbigpLmNsZWFyKCk7CiB9CiAKQEAgLTM2Niw3ICszNjYsNyBAQCBB
ZmZpbmVUcmFuc2Zvcm0gU1ZHU1ZHRWxlbWVudDo6bG9jYWxDb29yZGluYXRlU3BhY2VUcmFuc2Zv
cm0oU1ZHTG9jYXRhYmxlOjpDVE1TYwogICAgICAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShs
b2NhdGlvbi54KCkgLSB2aWV3Qm94VHJhbnNmb3JtLmUoKSwgbG9jYXRpb24ueSgpIC0gdmlld0Jv
eFRyYW5zZm9ybS5mKCkpOwogCiAgICAgICAgICAgICAvLyBSZXNwZWN0IHNjcm9sbCBvZmZzZXQu
Ci0gICAgICAgICAgICBpZiAoYXV0byB2aWV3ID0gbWFrZVJlZlB0cihkb2N1bWVudCgpLnZpZXco
KSkpIHsKKyAgICAgICAgICAgIGlmIChSZWZQdHIgdmlldyA9IGRvY3VtZW50KCkudmlldygpKSB7
CiAgICAgICAgICAgICAgICAgTGF5b3V0UG9pbnQgc2Nyb2xsUG9zaXRpb24gPSB2aWV3LT5zY3Jv
bGxQb3NpdGlvbigpOwogICAgICAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uLnNjYWxlKHpvb21G
YWN0b3IpOwogICAgICAgICAgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLXNjcm9sbFBvc2l0
aW9uKTsKQEAgLTY4OSw3ICs2ODksNyBAQCBFbGVtZW50KiBTVkdTVkdFbGVtZW50OjpnZXRFbGVt
ZW50QnlJZChjb25zdCBBdG9tU3RyaW5nJiBpZCkKICAgICBpZiAoaWQuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBlbGVtZW50ID0gbWFrZVJlZlB0cih0cmVl
U2NvcGUoKS5nZXRFbGVtZW50QnlJZChpZCkpOworICAgIFJlZlB0ciBlbGVtZW50ID0gdHJlZVNj
b3BlKCkuZ2V0RWxlbWVudEJ5SWQoaWQpOwogICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQtPmlz
RGVzY2VuZGFudE9mKCp0aGlzKSkKICAgICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCk7CiAgICAg
aWYgKHRyZWVTY29wZSgpLmNvbnRhaW5zTXVsdGlwbGVFbGVtZW50c1dpdGhJZChpZCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAKaW5kZXggMjViODJhMjlhNjc0MDE2YTc2
MmVkZDU5Y2I1ODhlYTY5YWQwZTNhZC4uNGZiN2EwODJjYzg1MjQzNjZmODY5NTU0MWYyNjE1NGY3
YWJhYmYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAKQEAgLTU4LDcg
KzU4LDcgQEAgYm9vbCBTVkdTdHlsZUVsZW1lbnQ6OmRpc2FibGVkKCkgY29uc3QKIAogdm9pZCBT
VkdTdHlsZUVsZW1lbnQ6OnNldERpc2FibGVkKGJvb2wgc2V0RGlzYWJsZWQpCiB7Ci0gICAgaWYg
KGF1dG8gc3R5bGVTaGVldCA9IG1ha2VSZWZQdHIoc2hlZXQoKSkpCisgICAgaWYgKFJlZlB0ciBz
dHlsZVNoZWV0ID0gc2hlZXQoKSkKICAgICAgICAgc3R5bGVTaGVldC0+c2V0RGlzYWJsZWQoc2V0
RGlzYWJsZWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAppbmRleCA3
NjlhYTFhMTJkZmVjYjk1ZTg2YzYxODkyMDBjMWQ3ZWI2Mjg2NjYwLi5lMTFhZWI1MTdiNDVhNWQx
NjZkZGQwYTEyZjM5NDhmNWMyZDBhNTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVFJlZkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVu
dC5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIFNWR1RSZWZFbGVtZW50OjpkZXRhY2hUYXJn
ZXQoKQogICAgIFN0cmluZyBlbXB0eUNvbnRlbnQ7CiAKICAgICBBU1NFUlQoc2hhZG93Um9vdCgp
KTsKLSAgICBhdXRvIGNvbnRhaW5lciA9IG1ha2VSZWZQdHIoc2hhZG93Um9vdCgpLT5maXJzdENo
aWxkKCkpOworICAgIFJlZlB0ciBjb250YWluZXIgPSBzaGFkb3dSb290KCktPmZpcnN0Q2hpbGQo
KTsKICAgICBpZiAoY29udGFpbmVyKQogICAgICAgICBjb250YWluZXItPnNldFRleHRDb250ZW50
KGVtcHR5Q29udGVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFu
c2Zvcm1MaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmNwcApp
bmRleCA2Mzc1YjYyMDUzYmMyMjI1NGRlNDFkMDA5MDY1NDlkOTIxMjdiZTY3Li41NTZjZjg1NTQ5
YWQ0MTQ2ZmIwZWY4N2YyZmJlMzJmNmE1Mjk2NDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Ry
YW5zZm9ybUxpc3QuY3BwCkBAIC00NCwxNCArNDQsMTQgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPFNW
R1RyYW5zZm9ybT4+IFNWR1RyYW5zZm9ybUxpc3Q6OmNvbnNvbGlkYXRlKCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICBpZiAobV9pdGVtcy5zaXplKCkgPT0gMSkKLSAgICAgICAgcmV0
dXJuIG1ha2VSZWZQdHIoYXQoMCkuZ2V0KCkpOworICAgICAgICByZXR1cm4gUmVmUHRyIHsgYXQo
MCkucHRyKCkgfTsKIAogICAgIGF1dG8gbmV3SXRlbSA9IFNWR1RyYW5zZm9ybTo6Y3JlYXRlKGNv
bmNhdGVuYXRlKCkpOwogICAgIGNsZWFySXRlbXMoKTsKIAogICAgIGF1dG8gaXRlbSA9IGFwcGVu
ZChXVEZNb3ZlKG5ld0l0ZW0pKTsKICAgICBjb21taXRDaGFuZ2UoKTsKLSAgICByZXR1cm4gbWFr
ZVJlZlB0cihpdGVtLmdldCgpKTsKKyAgICByZXR1cm4gUmVmUHRyIHsgaXRlbS5wdHIoKSB9Owog
fQogCiBBZmZpbmVUcmFuc2Zvcm0gU1ZHVHJhbnNmb3JtTGlzdDo6Y29uY2F0ZW5hdGUoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCmluZGV4IGIyYjAyNjM1YzQwNjdhMTBj
OWZmYzZiNTQ5ZDE5OThjMDNkYTgxZWUuLmQ1ZWI3YmRjMzVmNDc4ZjA3ZjMxZmYxNjliZjJiZTEy
YWQ2MThkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKQEAgLTE0Nyw3ICsx
NDcsNyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnRyYW5zZmVyU2l6ZUF0dHJpYnV0ZXNUb1Rhcmdl
dENsb25lKFNWR0VsZW1lbnQmIHNoYWRvd0VsZW1lbgogICAgIH0gZWxzZSBpZiAoaXM8U1ZHU1ZH
RWxlbWVudD4oc2hhZG93RWxlbWVudCkpIHsKICAgICAgICAgLy8gU3BlYyAoPHVzZT4gb24gPHN2
Zz4pOiBJZiBhdHRyaWJ1dGVzIHdpZHRoIGFuZC9vciBoZWlnaHQgYXJlIHByb3ZpZGVkIG9uIHRo
ZSAndXNlJyBlbGVtZW50LCB0aGVuIHRoZXNlCiAgICAgICAgIC8vIHZhbHVlcyB3aWxsIG92ZXJy
aWRlIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZXMgb24gdGhlICdzdmcnIGluIHRoZSBnZW5l
cmF0ZWQgdHJlZS4KLSAgICAgICAgYXV0byBjb3JyZXNwb25kaW5nRWxlbWVudCA9IG1ha2VSZWZQ
dHIoc2hhZG93RWxlbWVudC5jb3JyZXNwb25kaW5nRWxlbWVudCgpKTsKKyAgICAgICAgUmVmUHRy
IGNvcnJlc3BvbmRpbmdFbGVtZW50ID0gc2hhZG93RWxlbWVudC5jb3JyZXNwb25kaW5nRWxlbWVu
dCgpOwogICAgICAgICBzaGFkb3dFbGVtZW50LnNldEF0dHJpYnV0ZShTVkdOYW1lczo6d2lkdGhB
dHRyLCB3aWR0aCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpID8gQXRvbVN0cmluZyh3aWR0aCgp
LnZhbHVlQXNTdHJpbmcoKSkgOiAoY29ycmVzcG9uZGluZ0VsZW1lbnQgPyBjb3JyZXNwb25kaW5n
RWxlbWVudC0+Z2V0QXR0cmlidXRlKFNWR05hbWVzOjp3aWR0aEF0dHIpIDogbnVsbEF0b20oKSkp
OwogICAgICAgICBzaGFkb3dFbGVtZW50LnNldEF0dHJpYnV0ZShTVkdOYW1lczo6aGVpZ2h0QXR0
ciwgaGVpZ2h0KCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCkgPyBBdG9tU3RyaW5nKGhlaWdodCgp
LnZhbHVlQXNTdHJpbmcoKSkgOiAoY29ycmVzcG9uZGluZ0VsZW1lbnQgPyBjb3JyZXNwb25kaW5n
RWxlbWVudC0+Z2V0QXR0cmlidXRlKFNWR05hbWVzOjpoZWlnaHRBdHRyKSA6IG51bGxBdG9tKCkp
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NN
SUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1l
bnQuY3BwCmluZGV4IDU1NGNkMWM3NThjYTIyY2RiYmVmZjQwYmRmYTc2Y2ExZDNhNTEyZjIuLmNj
NWQ0MmE4YzdmMGVmYjJjNThkZjVmNGI0Mjc1YWY4NThiYWQwNzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCkBAIC0xOTIsNyArMTkyLDcg
QEAgdm9pZCBTVkdTTUlMRWxlbWVudDo6YnVpbGRQZW5kaW5nUmVzb3VyY2UoKQogICAgICAgICB0
YXJnZXQgPSBXVEZNb3ZlKHJlc3VsdC5lbGVtZW50KTsKICAgICAgICAgaWQgPSBXVEZNb3ZlKHJl
c3VsdC5pZGVudGlmaWVyKTsKICAgICB9Ci0gICAgYXV0byBzdmdUYXJnZXQgPSBtYWtlUmVmUHRy
KGlzPFNWR0VsZW1lbnQ+KHRhcmdldCkgJiYgdGFyZ2V0LT5pc0Nvbm5lY3RlZCgpID8gZG93bmNh
c3Q8U1ZHRWxlbWVudD4odGFyZ2V0LmdldCgpKSA6IG51bGxwdHIpOworICAgIFJlZlB0ciBzdmdU
YXJnZXQgPSBpczxTVkdFbGVtZW50Pih0YXJnZXQpICYmIHRhcmdldC0+aXNDb25uZWN0ZWQoKSA/
IGRvd25jYXN0PFNWR0VsZW1lbnQ+KHRhcmdldC5nZXQoKSkgOiBudWxscHRyOwogCiAgICAgaWYg
KHN2Z1RhcmdldCAhPSB0YXJnZXRFbGVtZW50KCkpCiAgICAgICAgIHNldFRhcmdldEVsZW1lbnQo
c3ZnVGFyZ2V0LmdldCgpKTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBOb2RlOjpJbnNlcnRlZEludG9B
bmNlc3RvclJlc3VsdCBTVkdTTUlMRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0
aW9uVAogCiAgICAgdXBkYXRlQXR0cmlidXRlTmFtZSgpOwogCi0gICAgYXV0byBvd25lciA9IG1h
a2VSZWZQdHIob3duZXJTVkdFbGVtZW50KCkpOworICAgIFJlZlB0ciBvd25lciA9IG93bmVyU1ZH
RWxlbWVudCgpOwogICAgIGlmICghb3duZXIpCiAgICAgICAgIHJldHVybiBJbnNlcnRlZEludG9B
bmNlc3RvclJlc3VsdDo6RG9uZTsKIApAQCAtNTQzLDcgKzU0Myw3IEBAIHZvaWQgU1ZHU01JTEVs
ZW1lbnQ6OmNvbm5lY3RDb25kaXRpb25zKCkKICAgICBmb3IgKGF1dG8mIGNvbmRpdGlvbiA6IG1f
Y29uZGl0aW9ucykgewogICAgICAgICBpZiAoY29uZGl0aW9uLm1fdHlwZSA9PSBDb25kaXRpb246
OkV2ZW50QmFzZSkgewogICAgICAgICAgICAgQVNTRVJUKCFjb25kaXRpb24ubV9zeW5jYmFzZSk7
Ci0gICAgICAgICAgICBhdXRvIGV2ZW50QmFzZSA9IG1ha2VSZWZQdHIoZXZlbnRCYXNlRm9yKGNv
bmRpdGlvbikpOworICAgICAgICAgICAgUmVmUHRyIGV2ZW50QmFzZSA9IGV2ZW50QmFzZUZvcihj
b25kaXRpb24pOwogICAgICAgICAgICAgaWYgKCFldmVudEJhc2UpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICBBU1NFUlQoIWNvbmRpdGlvbi5tX2V2ZW50TGlzdGVuZXIp
OwpAQCAtNTc4LDcgKzU3OCw3IEBAIHZvaWQgU1ZHU01JTEVsZW1lbnQ6OmRpc2Nvbm5lY3RDb25k
aXRpb25zKCkKICAgICAgICAgICAgIC8vIG5vIGd1YXJhbnRlZSB0aGF0IGV2ZW50QmFzZUZvcigp
IHdpbGwgYmUgYWJsZSB0byBmaW5kIG91ciBjb25kaXRpb24ncwogICAgICAgICAgICAgLy8gb3Jp
Z2luYWwgZXZlbnRCYXNlLiBTbywgd2UgYWxzbyBoYXZlIHRvIGRpc2Nvbm5lY3Qgb3Vyc2VsdmVz
IGZyb20KICAgICAgICAgICAgIC8vIG91ciBjb25kaXRpb24gZXZlbnQgbGlzdGVuZXIsIGluIGNh
c2UgaXQgbGF0ZXIgZmlyZXMuCi0gICAgICAgICAgICBhdXRvIGV2ZW50QmFzZSA9IG1ha2VSZWZQ
dHIoZXZlbnRCYXNlRm9yKGNvbmRpdGlvbikpOworICAgICAgICAgICAgUmVmUHRyIGV2ZW50QmFz
ZSA9IGV2ZW50QmFzZUZvcihjb25kaXRpb24pOwogICAgICAgICAgICAgaWYgKGV2ZW50QmFzZSkK
ICAgICAgICAgICAgICAgICBldmVudEJhc2UtPnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uZGl0aW9u
Lm1fbmFtZSwgKmNvbmRpdGlvbi5tX2V2ZW50TGlzdGVuZXIsIGZhbHNlKTsKICAgICAgICAgICAg
IGNvbmRpdGlvbi5tX2V2ZW50TGlzdGVuZXItPmRpc2Nvbm5lY3RBbmltYXRpb24oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IGQ2MzkzZDIyYzliZTljNzRi
YmE3NzVhYzVhMjFlNWRjNzVhYzAwNDIuLmM0NzMzZGJiNTE3ZDg0MmQ4NTFhZmRjMzM0ZTZiMGY0
MzFjYjI2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAt
MTM5LDcgKzEzOSw3IEBAIHZvaWQgU1ZHSW1hZ2U6OnNldENvbnRhaW5lclNpemUoY29uc3QgRmxv
YXRTaXplJiBzaXplKQogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGF1dG8gdmlldyA9IG1ha2VSZWZQdHIoZnJhbWVWaWV3KCkpOworICAgIFJlZlB0ciB2aWV3ID0g
ZnJhbWVWaWV3KCk7CiAgICAgdmlldy0+cmVzaXplKHRoaXMtPmNvbnRhaW5lclNpemUoKSk7CiAK
ICAgICByZW5kZXJlci0+c2V0Q29udGFpbmVyU2l6ZShJbnRTaXplKHNpemUpKTsKQEAgLTI4Niw3
ICsyODYsNyBAQCBJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlYwogICAgICAgICByZXR1cm4gZHJhd0Fz
TmF0aXZlSW1hZ2UoY29udGV4dCwgZHN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiAgICAgfQog
Ci0gICAgYXV0byB2aWV3ID0gbWFrZVJlZlB0cihmcmFtZVZpZXcoKSk7CisgICAgUmVmUHRyIHZp
ZXcgPSBmcmFtZVZpZXcoKTsKICAgICBBU1NFUlQodmlldyk7CiAKICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CkBAIC00NTEsNyArNDUxLDcgQEAgYm9v
bCBTVkdJbWFnZTo6aXNBbmltYXRpbmcoKSBjb25zdAogCiB2b2lkIFNWR0ltYWdlOjpyZXBvcnRB
cHByb3hpbWF0ZU1lbW9yeUNvc3QoKSBjb25zdAogewotICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtl
UmVmUHRyKG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSk7CisgICAgUmVmUHRyIGRvY3Vt
ZW50ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpOwogICAgIHNpemVfdCBkZWNvZGVk
SW1hZ2VNZW1vcnlDb3N0ID0gMDsKIAogICAgIGZvciAoUmVmUHRyPE5vZGU+IG5vZGUgPSBkb2N1
bWVudDsgbm9kZTsgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5vZGUpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAppbmRleCBj
NjMyOGNmYjVlMTRkMDc3MWIzMDVmOGJlYTcwZTU2NjE1NTljODIzLi4zODVhZjI5MDg0OGEzZDBi
ODNmMTJhYzk2MTllNmJmOTZjOWYyMzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQg
RkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSA9IGZpbHRlcigpLmFic29sdXRlVHJhbnNmb3JtKCk7
CiAgICAgICAgIGNvbnRleHQuY29uY2F0Q1RNKGFic29sdXRlVHJhbnNmb3JtKTsKIAotICAgICAg
ICBhdXRvIGNvbnRleHROb2RlID0gbWFrZVJlZlB0cihkb3duY2FzdDxTVkdFbGVtZW50PihyZW5k
ZXJlci0+ZWxlbWVudCgpKSk7CisgICAgICAgIFJlZlB0ciBjb250ZXh0Tm9kZSA9IGRvd25jYXN0
PFNWR0VsZW1lbnQ+KHJlbmRlcmVyLT5lbGVtZW50KCkpOwogICAgICAgICBpZiAoY29udGV4dE5v
ZGUtPmhhc1JlbGF0aXZlTGVuZ3RocygpKSB7CiAgICAgICAgICAgICBTVkdMZW5ndGhDb250ZXh0
IGxlbmd0aENvbnRleHQoY29udGV4dE5vZGUuZ2V0KCkpOwogICAgICAgICAgICAgRmxvYXRTaXpl
IHZpZXdwb3J0U2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR1Byb3BlcnR5QW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R1Byb3BlcnR5QW5pbWF0b3IuaAppbmRleCAxN2Y3YzViOTVlMTdkOGJmMzJhYjhhODMwMDZkOGJk
NTZhNjAyYjQwLi44OTFhNDY2OTYwNjQ3NjQ1MDhiMWFkZjUwNWIwYmE1ZjI1MzU5ZjYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFuaW1hdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBbmltYXRv
ci5oCkBAIC03OCw3ICs3OCw3IEBAIHByb3RlY3RlZDoKIAogICAgIFN0cmluZyBjb21wdXRlQ1NT
UHJvcGVydHlWYWx1ZShTVkdFbGVtZW50JiB0YXJnZXRFbGVtZW50LCBDU1NQcm9wZXJ0eUlEIGlk
KSBjb25zdAogICAgIHsKLSAgICAgICAgYXV0byBwcm90ZWN0b3IgPSBtYWtlUmVmUHRyKHRhcmdl
dEVsZW1lbnQpOworICAgICAgICBSZWYgcHJvdGVjdG9yID0gdGFyZ2V0RWxlbWVudDsKIAogICAg
ICAgICAvLyBEb24ndCBpbmNsdWRlIGFueSBwcm9wZXJ0aWVzIHJlc3VsdGluZyBmcm9tIENTUyBU
cmFuc2l0aW9ucy9BbmltYXRpb25zIG9yIFNNSUwgYW5pbWF0aW9ucywgYXMgd2Ugd2FudCB0byBy
ZXRyaWV2ZSB0aGUgImJhc2UgdmFsdWUiLgogICAgICAgICB0YXJnZXRFbGVtZW50LnNldFVzZU92
ZXJyaWRlQ29tcHV0ZWRTdHlsZSh0cnVlKTsKQEAgLTg5LDcgKzg5LDcgQEAgcHJvdGVjdGVkOgog
CiAgICAgU3RyaW5nIGNvbXB1dGVJbmhlcml0ZWRDU1NQcm9wZXJ0eVZhbHVlKFNWR0VsZW1lbnQm
IHRhcmdldEVsZW1lbnQpIGNvbnN0CiAgICAgewotICAgICAgICBhdXRvIHBhcmVudCA9IG1ha2VS
ZWZQdHIodGFyZ2V0RWxlbWVudC5wYXJlbnRFbGVtZW50KCkpOworICAgICAgICBSZWZQdHIgcGFy
ZW50ID0gdGFyZ2V0RWxlbWVudC5wYXJlbnRFbGVtZW50KCk7CiAgICAgICAgIGlmICghcGFyZW50
IHx8ICFwYXJlbnQtPmlzU1ZHRWxlbWVudCgpKQogICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDNm
ZmE4ZTYxOGJjMjU5YjY3MzQyNmE0YTY3YzNjYTUyNTU1NjNiNTEuLmFlYzc2MGU1NGE5ZjZkYmI5
YWEyN2RkMGI3YjQzNzI5OGQ4NThkY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKQEAgLTI1NTksMTMgKzI1NTksMTMgQEAgdm9pZCBJbnRlcm5hbHM6OmhhbmRsZUFjY2VwdGVk
Q2FuZGlkYXRlKGNvbnN0IFN0cmluZyYgY2FuZGlkYXRlLCB1bnNpZ25lZCBsb2NhdGkKIAogdm9p
ZCBJbnRlcm5hbHM6OmNoYW5nZVNlbGVjdGlvbkxpc3RUeXBlKCkKIHsKLSAgICBpZiAoYXV0byBm
cmFtZSA9IG1ha2VSZWZQdHIodGhpcy0+ZnJhbWUoKSkpCisgICAgaWYgKFJlZlB0ciBmcmFtZSA9
IHRoaXMtPmZyYW1lKCkpCiAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jaGFuZ2VTZWxlY3Rpb25M
aXN0VHlwZSgpOwogfQogCiB2b2lkIEludGVybmFsczo6Y2hhbmdlQmFja1RvUmVwbGFjZWRTdHJp
bmcoY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZykKIHsKLSAgICBpZiAoYXV0byBmcmFtZSA9
IG1ha2VSZWZQdHIodGhpcy0+ZnJhbWUoKSkpCisgICAgaWYgKFJlZlB0ciBmcmFtZSA9IHRoaXMt
PmZyYW1lKCkpCiAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jaGFuZ2VCYWNrVG9SZXBsYWNlZFN0
cmluZyhyZXBsYWNlZFN0cmluZyk7CiB9CiAK
</data>
<flag name="commit-queue"
          id="462243"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438763</attachid>
            <date>2021-09-20 18:19:42 -0700</date>
            <delta_ts>2021-09-20 18:38:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230527-20210920181941.patch</filename>
            <type>text/plain</type>
            <size>143268</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzM3YWUwMDY5ZWQ3OWYw
ZTYyMzVkYTQwNTRlYzM0MGVlMzIzYjgyMy4uM2Q1YmViY2NmZTcyYjk4N2JlNGIwOTU0ZTM1ZTMz
YWY0NDk4ZGJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwMyBAQAorMjAyMS0wOS0yMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgcmVtYWluaW5nIHVz
ZXMgb2YgbWFrZVJlZlB0cigpIGluIFdlYkNvcmUvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA1MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHA6CisgICAg
ICAgICogaHRtbC9EaXJlY3RvcnlGaWxlTGlzdENyZWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yOjpzdGFydCk6CisgICAgICAgICogaHRtbC9GVFBE
aXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGVFBEaXJlY3RvcnlEb2N1
bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUpOgorICAgICAgICAqIGh0bWwvRmlsZUlu
cHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjphcHBlbmRGb3Jt
RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpkaXNhYmxlZFN0
YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjphdHRyaWJ1dGVD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmZpbGVzQ2hvc2VuKToK
KyAgICAgICAgKiBodG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRGV0YWlsc0VsZW1lbnQ6OmlzQWN0aXZlU3VtbWFyeSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRGV0YWlsc0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBo
dG1sL0hUTUxEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnQ6Om5h
bWVkSXRlbSk6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRWxlbWVudDo6ZWRpdGFiaWxpdHlGcm9tQ29udGVudEVkaXRhYmxlQXR0cik6Cisg
ICAgICAgIChXZWJDb3JlOjppbWFnZU92ZXJsYXlIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxFbGVtZW50Ojppc0luc2lkZUltYWdlT3ZlcmxheSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RWxlbWVudDo6dXBkYXRlV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdCk6CisgICAgICAgICogaHRt
bC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVycyk6CisgICAgICAgICogaHRtbC9IVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5kRm9ybUFz
c29jaWF0ZWRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uOjpjdXN0b21FbGVtZW50QWZ0ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVudENhY2hlIGNvbnN0KToK
KyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRm9ybUVsZW1lbnQ6On5IVE1MRm9ybUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEZvcm1FbGVtZW50OjpsZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1F
bGVtZW50OjpzdWJtaXRJZlBvc3NpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxl
bWVudDo6dGV4dEZpZWxkVmFsdWVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3Jt
RWxlbWVudDo6ZWZmZWN0aXZlVGFyZ2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxG
b3JtRWxlbWVudDo6ZWxlbWVudEZyb21QYXN0TmFtZXNNYXAgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZvcm1FbGVtZW50Ojpjb3B5QXNzb2NpYXRlZEVsZW1lbnRzVmVjdG9yIGNvbnN0
KToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZyYW1lU2V0RWxlbWVudDo6bmFtZWRJdGVtKToKKyAgICAgICAgKiBodG1sL0hU
TUxIdG1sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSHRtbEVsZW1lbnQ6Omlu
c2VydGVkQnlQYXJzZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpiZXN0Rml0U291cmNlRnJvbVBpY3R1
cmVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmV2YWx1YXRl
RHluYW1pY01lZGlhUXVlcnlEZXBlbmRlbmNpZXMpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBodG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Zmlyc3RFbGVtZW50V2l0aElkSWZMYWJlbGFibGUpOgorICAgICAgICAq
IGh0bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExlZ2Vu
ZEVsZW1lbnQ6OmZvcm0gY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6c2V0Q1NTU3R5bGVTaGVldCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmli
dXRlVVJMcyBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVRleHRUcmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpsYXlvdXRTaXplQ2hhbmdlZCk6Cisg
ICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
aG91bGRCZUV4cG9zZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6OmFw
cGVuZEZvcm1EYXRhKToKKyAgICAgICAgKiBodG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdEdyb3VwRWxlbWVudDo6cmVjYWxjU2VsZWN0T3B0aW9u
cyk6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6YmluZGluZ3NJbnN0YW5jZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6aXNSZXBsYWNlbWVudE9ic2N1cmVkKToKKyAgICAgICAg
KiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6aXNJbWFnZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6d2lsbERldGFjaFJlbmRlcmVycyk6CisgICAgICAgICogaHRt
bC9IVE1MU2xvdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNsb3RFbGVtZW50
OjphdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTbG90RWxlbWVudDo6
YXNzaWduZWROb2RlcyBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MU291cmNlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU291cmNlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUp
OgorICAgICAgICAqIGh0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MU3R5bGVFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMgY29uc3QpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpmaW5kUm93cyk6CisgICAgICAgICogaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6Om1lZGlhRWxlbWVudCBjb25zdCk6CisgICAg
ICAgICogaHRtbC9MaW5rSWNvbkNvbGxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaW5r
SWNvbkNvbGxlY3Rvcjo6aWNvbnNPZlR5cGVzKToKKyAgICAgICAgKiBodG1sL01lZGlhRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEb2N1bWVudFBhcnNlcjo6Y3JlYXRlRG9j
dW1lbnRTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEb2N1bWVudDo6ZGVmYXVs
dEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURvY3VtZW50OjpyZXBsYWNl
TWVkaWFFbGVtZW50VGltZXJGaXJlZCk6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNz
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzRWxlbWVudFJlY3RNb3N0bHlJbk1haW5GcmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjppc0VsZW1lbnRMYXJnZVJlbGF0aXZlVG9NYWluRnJhbWUp
OgorICAgICAgICAqIGh0bWwvUGx1Z2luRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGx1Z2luRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsdWdpbkRvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyk6CisgICAgICAgICog
aHRtbC9TdWJtaXRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VibWl0SW5wdXRU
eXBlOjpoYW5kbGVET01BY3RpdmF0ZUV2ZW50KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQ6OndvdWxkVGFpbnRPcmlnaW4pOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpDYW52YXNTdHlsZSk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiZWdpblF1ZXJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEluZGV4ZWRQYXJhbWV0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmdldFBhcmFtZXRlcik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFBhcmFtZXRlcik6CisgICAgICAgICogaHRtbC9w
YXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZVJlcGFyZW50VGFzayk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlVGFrZUFsbENoaWxkcmVu
QW5kUmVwYXJlbnRUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRl
OjpkaXNwYXRjaERvY3VtZW50RWxlbWVudEF2YWlsYWJsZUlmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpmaW5kRm9zdGVyU2l0ZSk6CisgICAgICAgICog
aHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRv
a2VuUHJlbG9hZFNjYW5uZXI6OlN0YXJ0VGFnU2Nhbm5lcjo6cHJvY2Vzc0F0dHJpYnV0ZSk6Cisg
ICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlhTU0F1ZGl0b3JEZWxlZ2F0ZTo6Z2VuZXJhdGVWaW9sYXRpb25SZXBvcnQpOgorICAg
ICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRs
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudDo6
cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaEZpZWxkUmVzdWx0
c0J1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAqIGh0bWwvc2hh
ZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFBs
YWNlaG9sZGVyRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFBsYWNlaG9sZGVyRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3Rvcik6CisgICAgICAg
ICogaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OnVwZGF0ZUdlbmVyaWNDdWUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5iYW5kR2VuZXJpY1RleHRUcmFjazo6cmVtb3ZlR2VuZXJpY0N1ZSk6CisgICAg
ICAgICogaHRtbC90cmFjay9UZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRy
YWNrOjphZGRDdWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjphZGRSZWdpb24pOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2V0RW11bGF0ZWRNZWRpYSk6CisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6dHJ5TG9hZGluZ1JlZGlyZWN0UmVxdWVzdEZyb21BcHBsaWNhdGlvbkNhY2hlKToKKyAg
ICAgICAgKiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9y
bVN1Ym1pc3Npb246OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkVVJMKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9yVGhpc0ZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzY3JvbGxUb0ZyYWdtZW50V2l0aFBhcmVudEJvdW5kYXJ5
KToKKyAgICAgICAgKiBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6Okhpc3RvcnlDb250cm9sbGVyOjpyZXN0b3JlU2Nyb2xsUG9zaXRp
b25BbmRWaWV3U3RhdGUpOgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNw
cDoKKyAgICAgICAgKiBsb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OlN1YmZyYW1lTG9hZGVyOjpsb2FkT3JSZWRpcmVjdFN1YmZyYW1lKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICogcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250
cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmlubmVyV2lkdGggY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpyZXF1ZXN0SWRsZUNhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVdpbmRvdzo6Y2FuY2VsSWRsZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVdpbmRvdzo6bGFuZ3VhZ2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3c6OmRpc3BhdGNoTG9hZEV2ZW50KToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjp0cnlUb1VwZGF0ZURyb3Bw
ZWRJbWFnZVBsYWNlaG9sZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6
aW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzQXRDYXJldCk6CisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQ29udHJvbGxlcjo6ZmluYWxpemVEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcik6CisgICAg
ICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9kZVRvU2Vs
ZWN0T25Nb3VzZURvd25Gb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmV4cGFuZFNlbGVjdGlv
blRvUmVzcGVjdFNlbGVjdE9uTW91c2VEb3duKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6Y2FuTW91c2VEb3duU3RhcnRTZWxlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OnNjaGVkdWxlU2Nyb2xsRXZlbnQpOgorICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Nyb2xsVG9GcmFnbWVudElu
dGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Nyb2xsVG9Gb2N1c2VkRWxl
bWVudEludGVybmFsKToKKyAgICAgICAgKiBwYWdlL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6c2VsZWN0aW9uUXVh
ZHNEaWRDaGFuZ2UpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyZXBsYWNlUmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJlcGxhY2VSYW5nZXNX
aXRoVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRFZGl0YWJsZVJlZ2lvbkVuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZWRpdGFibGVFbGVtZW50c0luUmVjdCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpkb0FmdGVyVXBkYXRlUmVuZGVyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmRpZEZpbmlzaExvYWRpbmdJbWFnZUZvckVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXBkYXRlRWxlbWVudHNXaXRoVGV4dFJlY29n
bml0aW9uUmVzdWx0cyk6CisgICAgICAgICogcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDb2xvclNhbXBsZXI6OnNhbXBsZVRvcCk6CisgICAgICAgICog
cGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRl
ckxvY2tDb250cm9sbGVyOjplbnF1ZXVlRXZlbnQpOgorICAgICAgICAqIHBhZ2UvVGV4dEluZGlj
YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFu
Z2UpOgorICAgICAgICAqIHBhZ2UvVW5kb01hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VW5kb01hbmFnZXI6OmFkZEl0ZW0pOgorICAgICAgICAqIHBhZ2UvaW9zL0V2ZW50SGFuZGxlcklP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6Zm9jdXNEb2N1bWVudFZpZXcp
OgorICAgICAgICAqIHBhZ2UvaW9zL0ZyYW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6bm9k
ZUlzTW91c2VGb2N1c2FibGUpOgorICAgICAgICAqIHBhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6Zm9jdXNEb2N1bWVudFZpZXcpOgor
ICAgICAgICAqIHBhZ2UvbWFjL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXJNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZU92ZXJsYXlDb250cm9sbGVyOjp1cGRhdGVEYXRhRGV0ZWN0b3JIaWdo
bGlnaHRzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3ZlcmxheUNvbnRyb2xsZXI6OnBsYXRm
b3JtSGFuZGxlTW91c2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJsYXlDb250
cm9sbGVyOjpoYW5kbGVEYXRhRGV0ZWN0b3JBY3Rpb24pOgorICAgICAgICAqIHBhZ2UvbWFjL1Nl
cnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092
ZXJsYXlDb250cm9sbGVyOjpidWlsZFNlbGVjdGlvbkhpZ2hsaWdodCk6CisgICAgICAgICogcGxh
dGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVi
b2FyZEN1c3RvbURhdGE6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNldExvZ2dlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0TG9nZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0TG9nZ2VyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJz
ZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qzo6c2V0TG9nZ2VyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c2V0TG9nZ2VyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjptYWtlV2ViS2l0VHJhY2spOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJFbGVtZW50OjpzZWxlY3Rpb25Qc2V1ZG9TdHlsZSBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVJT1M6OnBhaW50TWV0ZXIpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZUV2ZW50RGlzcGF0
Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNw
YXRjaFNlc3Npb25TdG9yYWdlRXZlbnRzVG9GcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3Rv
cmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHNUb0ZyYW1lcyk6
CisgICAgICAgICogc3R5bGUvU3R5bGVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6U2NvcGU6Om1ha2VSZXNvbHZlclNoYXJpbmdLZXkpOgorICAgICAgICAqIHN2Zy9TVkdBRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFu
ZGxlcik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudEJhc2U6OnN0YXJ0QW5pbWF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50QmFzZTo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1
ZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpoYXNWYWxpZEF0dHJpYnV0ZVR5cGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OnN0YXJ0
QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Ojpj
YWxjdWxhdGVBbmltYXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rp
b25FbGVtZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCk6CisgICAgICAgICogc3ZnL1NWR0RvY3Vt
ZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lv
bnM6OnRha2VFbGVtZW50RnJvbVBlbmRpbmdSZXNvdXJjZXNGb3JSZW1vdmFsTWFwKToKKyAgICAg
ICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojpy
ZW1vdmVFbGVtZW50UmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnNl
dENvcnJlc3BvbmRpbmdFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnJl
c29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojpjb21wdXRl
ZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnVwZGF0ZVJlbGF0aXZlTGVu
Z3Roc0luZm9ybWF0aW9uKToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6
YnVpbGQgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAg
ICAqIHN2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxp
Z2h0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RUxpZ2h0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVj
dWxhckxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVNwZWN1bGFy
TGlnaHRpbmdFbGVtZW50OjpidWlsZCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnZhbGlk
YXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRGYWNlRWxlbWVudDo6cmVidWlsZEZv
bnRGYWNlKToKKyAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KToKKyAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZvbnRGYWNlVXJpRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAg
KiBzdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAqIHN2Zy9T
VkdMZW5ndGhDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aENvbnRleHQ6
OmRldGVybWluZVZpZXdwb3J0IGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpmcmFtZUZvckN1cnJlbnRTY2Fs
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpkZXNlbGVjdEFsbCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50Ojpsb2NhbENvb3JkaW5hdGVTcGFjZVRy
YW5zZm9ybSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpnZXRFbGVt
ZW50QnlJZCk6CisgICAgICAgICogc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdTdHlsZUVsZW1lbnQ6OnNldERpc2FibGVkKToKKyAgICAgICAgKiBzdmcvU1ZH
VFJlZkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFJlZkVsZW1lbnQ6OmRldGFj
aFRhcmdldCk6CisgICAgICAgICogc3ZnL1NWR1RyYW5zZm9ybUxpc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVHJhbnNmb3JtTGlzdDo6Y29uc29saWRhdGUpOgorICAgICAgICAqIHN2Zy9T
VkdVc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnRyYW5z
ZmVyU2l6ZUF0dHJpYnV0ZXNUb1RhcmdldENsb25lIGNvbnN0KToKKyAgICAgICAgKiBzdmcvYW5p
bWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVt
ZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxl
bWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVs
ZW1lbnQ6OmNvbm5lY3RDb25kaXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVt
ZW50OjpkaXNjb25uZWN0Q29uZGl0aW9ucyk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpzZXRDb250YWluZXJTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ltYWdlOjpyZXBvcnRBcHByb3hpbWF0ZU1lbW9yeUNvc3QgY29uc3QpOgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVJ
bWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9T
VkdQcm9wZXJ0eUFuaW1hdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eUFuaW1h
dG9yOjpjb21wdXRlQ1NTUHJvcGVydHlWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQcm9wZXJ0eUFuaW1hdG9yOjpjb21wdXRlSW5oZXJpdGVkQ1NTUHJvcGVydHlWYWx1ZSBjb25z
dCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpjaGFuZ2VTZWxlY3Rpb25MaXN0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OmNoYW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5nKToKKwogMjAyMS0wOS0yMCAgUm9z
cyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCBidWlsZCBmaXggZm9yIFdpbkNhaXJvIHdpdGggRU5BQkxFX0VYUEVSSU1FTlRBTF9GRUFUVVJF
UyBvZmYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50SW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludEltYWdlLmNwcAppbmRleCBlMzAw
NzdmNWFiYTAwN2M5NzRjZDBkNzg5YWYyNTg2NWIwZmY2YTY2Li43ZTczM2IzZWRkZTRkZjljZTIz
ODI5Nzk2ZDNkZDZiZWVlYmI1NmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1
c3RvbVBhaW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRJ
bWFnZS5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjbGVhckVs
ZW1lbnQoKSBvdmVycmlkZSB7IH0KIAotICAgIFJlZlB0cjxDU1NTdHlsZVZhbHVlPiBnZXQoY29u
c3QgU3RyaW5nJiBwcm9wZXJ0eSkgY29uc3QgZmluYWwgeyByZXR1cm4gbWFrZVJlZlB0cihtX21h
cC5nZXQocHJvcGVydHkpKTsgfQorICAgIFJlZlB0cjxDU1NTdHlsZVZhbHVlPiBnZXQoY29uc3Qg
U3RyaW5nJiBwcm9wZXJ0eSkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9tYXAuZ2V0KHByb3BlcnR5
KTsgfQogCiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxDU1NTdHlsZVZhbHVlPj4gbV9tYXA7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EaXJlY3RvcnlGaWxlTGlzdENy
ZWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EaXJlY3RvcnlGaWxlTGlzdENyZWF0b3Iu
Y3BwCmluZGV4IDEwOGEyODA4YTM0OGY0OGI1ZGI2YTY1OTI3ZWFiMzc0YWJkZTBmMDAuLjlkM2Rh
MTg1M2MzYTYzMjBmZWIzMTk3NTE2MmU0MzVhZTkzZmZkZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5jcHAKQEAgLTEwNSw3ICsxMDUsNyBA
QCBEaXJlY3RvcnlGaWxlTGlzdENyZWF0b3I6OkRpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvcihDb21w
bGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpbwogdm9pZCBEaXJlY3RvcnlGaWxlTGlzdENyZWF0b3I6
OnN0YXJ0KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUlu
Zm8+JiBwYXRocykKIHsKICAgICAvLyBSZXNvbHZlIGRpcmVjdG9yaWVzIG9uIGEgYmFja2dyb3Vu
ZCB0aHJlYWQgdG8gYXZvaWQgYmxvY2tpbmcgdGhlIG1haW4gdGhyZWFkLgotICAgIG1fd29ya1F1
ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGRvY3Vt
ZW50ID0gbWFrZVJlZlB0cihkb2N1bWVudCksIHBhdGhzID0gY3Jvc3NUaHJlYWRDb3B5KHBhdGhz
KV0oKSBtdXRhYmxlIHsKKyAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBkb2N1bWVudCA9IFJlZlB0ciB7IGRvY3VtZW50IH0sIHBh
dGhzID0gY3Jvc3NUaHJlYWRDb3B5KHBhdGhzKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBm
aWxlcyA9IGdhdGhlckZpbGVJbmZvcm1hdGlvbihwYXRocyk7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBkb2N1
bWVudCA9IFdURk1vdmUoZG9jdW1lbnQpLCBmaWxlcyA9IGNyb3NzVGhyZWFkQ29weShmaWxlcyld
KCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0
ZDo6ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFuZGxlciwgbnVsbHB0cikpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCmluZGV4IGY5ZDE0MmVkYmI4YzY4Zjhm
N2UyZWNhYjlmMDgxMmMwMDkzNWMyYWIuLjc1MjMwMTdiYTcyOTQwNTYzYjc1ZjQ2NmE2OGVkMWNj
YjNkZWU4YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQu
Y3BwCkBAIC0yOTksNyArMjk5LDcgQEAgYm9vbCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6
bG9hZERvY3VtZW50VGVtcGxhdGUoKQogCiAgICAgYXV0byYgZG9jdW1lbnQgPSAqdGhpcy0+ZG9j
dW1lbnQoKTsKIAotICAgIGF1dG8gZm91bmRFbGVtZW50ID0gbWFrZVJlZlB0cihkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChTdHJpbmcoImZ0cERpcmVjdG9yeVRhYmxlIl9zKSkpOworICAgIFJlZlB0
ciBmb3VuZEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChTdHJpbmdWaWV3IHsgImZ0
cERpcmVjdG9yeVRhYmxlIl9zIH0pOwogICAgIGlmICghZm91bmRFbGVtZW50KQogICAgICAgICBM
T0dfRVJST1IoIlVuYWJsZSB0byBmaW5kIGVsZW1lbnQgYnkgaWQgXCJmdHBEaXJlY3RvcnlUYWJs
ZVwiIGluIHRoZSB0ZW1wbGF0ZSBkb2N1bWVudC4iKTsKICAgICBlbHNlIGlmICghaXM8SFRNTFRh
YmxlRWxlbWVudD4oZm91bmRFbGVtZW50KSkKQEAgLTMxNCw3ICszMTQsNyBAQCBib29sIEZUUERp
cmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSgpCiAKICAgICAvLyBJ
ZiB3ZSBkaWRuJ3QgZmluZCB0aGUgdGFibGUgZWxlbWVudCwgbGV0cyB0cnkgdG8gYXBwZW5kIG91
ciBvd24gdG8gdGhlIGJvZHkuCiAgICAgLy8gSWYgdGhhdCBmYWlscyBmb3Igc29tZSByZWFzb24s
IGNyYW0gaXQgb24gdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQgYXMgYSBsYXN0IGRpdGNoIGVmZm9y
dC4KLSAgICBpZiAoYXV0byBib2R5ID0gbWFrZVJlZlB0cihkb2N1bWVudC5ib2R5T3JGcmFtZXNl
dCgpKSkKKyAgICBpZiAoUmVmUHRyIGJvZHkgPSBkb2N1bWVudC5ib2R5T3JGcmFtZXNldCgpKQog
ICAgICAgICBib2R5LT5hcHBlbmRDaGlsZCgqbV90YWJsZUVsZW1lbnQpOwogICAgIGVsc2UKICAg
ICAgICAgZG9jdW1lbnQuYXBwZW5kQ2hpbGQoKm1fdGFibGVFbGVtZW50KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IGJiYzBmMTIyYjUzZjVmMjMzM2ZiNjY2Y2E1ZWIz
YWIzYWZjM2FkMzkuLmUwZmY1Mzk2M2I1NzBjYjFkZmZkMzA0OTE5Y2RhZjdjNGExMzc0MDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIHZv
aWQgRmlsZUlucHV0VHlwZTo6cmVzdG9yZUZvcm1Db250cm9sU3RhdGUoY29uc3QgRm9ybUNvbnRy
b2xTdGF0ZSYgc3RhdGUpCiBib29sIEZpbGVJbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRhKERPTUZv
cm1EYXRhJiBmb3JtRGF0YSwgYm9vbCBtdWx0aXBhcnQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGVs
ZW1lbnQoKSk7Ci0gICAgYXV0byBmaWxlTGlzdCA9IG1ha2VSZWZQdHIoZWxlbWVudCgpLT5maWxl
cygpKTsKKyAgICBSZWZQdHIgZmlsZUxpc3QgPSBlbGVtZW50KCktPmZpbGVzKCk7CiAgICAgQVNT
RVJUKGZpbGVMaXN0KTsKIAogICAgIGF1dG8gbmFtZSA9IGVsZW1lbnQoKS0+bmFtZSgpOwpAQCAt
MjkxLDcgKzI5MSw3IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6ZGlzYWJsZWRTdGF0ZUNoYW5nZWQo
KQogICAgIGlmICghcm9vdCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGlmIChhdXRvIGJ1
dHRvbiA9IG1ha2VSZWZQdHIoY2hpbGRyZW5PZlR5cGU8VXBsb2FkQnV0dG9uRWxlbWVudD4oKnJv
b3QpLmZpcnN0KCkpKQorICAgIGlmIChSZWZQdHIgYnV0dG9uID0gY2hpbGRyZW5PZlR5cGU8VXBs
b2FkQnV0dG9uRWxlbWVudD4oKnJvb3QpLmZpcnN0KCkpCiAgICAgICAgIGJ1dHRvbi0+c2V0Qm9v
bGVhbkF0dHJpYnV0ZShkaXNhYmxlZEF0dHIsIGVsZW1lbnQoKS0+aXNEaXNhYmxlZEZvcm1Db250
cm9sKCkpOwogfQogCkBAIC0zMDEsNyArMzAxLDcgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjphdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiAgICAgICAgIGlmIChhdXRv
KiBlbGVtZW50ID0gdGhpcy0+ZWxlbWVudCgpKSB7CiAgICAgICAgICAgICBBU1NFUlQoZWxlbWVu
dC0+c2hhZG93Um9vdCgpKTsKICAgICAgICAgICAgIGlmIChhdXRvIHJvb3QgPSBlbGVtZW50LT51
c2VyQWdlbnRTaGFkb3dSb290KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBidXR0b24g
PSBtYWtlUmVmUHRyKGNoaWxkcmVuT2ZUeXBlPFVwbG9hZEJ1dHRvbkVsZW1lbnQ+KCpyb290KS5m
aXJzdCgpKSkKKyAgICAgICAgICAgICAgICBpZiAoUmVmUHRyIGJ1dHRvbiA9IGNoaWxkcmVuT2ZU
eXBlPFVwbG9hZEJ1dHRvbkVsZW1lbnQ+KCpyb290KS5maXJzdCgpKQogICAgICAgICAgICAgICAg
ICAgICBidXR0b24tPnNldFZhbHVlKGVsZW1lbnQtPm11bHRpcGxlKCkgPyBmaWxlQnV0dG9uQ2hv
b3NlTXVsdGlwbGVGaWxlc0xhYmVsKCkgOiBmaWxlQnV0dG9uQ2hvb3NlRmlsZUxhYmVsKCkpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00MzYsNyArNDM2LDcgQEAgdm9pZCBGaWxlSW5w
dXRUeXBlOjpmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHBh
dGhzLCBjb25zdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9kaXJlY3RvcnlGaWxl
TGlzdENyZWF0b3IgPSBEaXJlY3RvcnlGaWxlTGlzdENyZWF0b3I6OmNyZWF0ZShbdGhpcywgd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIGljb24gPSBtYWtlUmVmUHRyKGljb24pXShSZWY8
RmlsZUxpc3Q+JiYgZmlsZUxpc3QpIG11dGFibGUgeworICAgIG1fZGlyZWN0b3J5RmlsZUxpc3RD
cmVhdG9yID0gRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yOjpjcmVhdGUoW3RoaXMsIHdlYWtUaGlz
ID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBpY29uID0gUmVmUHRyIHsgaWNvbiB9XShSZWY8RmlsZUxp
c3Q+JiYgZmlsZUxpc3QpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCmluZGV4IDMwYjM1Nzk0ODRlMTQ1ZDZl
MDA3NmU3ZmVhMDI2ZWE4OGZjZWYyMWUuLjVlNDFiNDkyNDE2YTM5NDBlZDZkZTEzMTJhMzE1MzNl
ZGQ4MTc5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAK
QEAgLTEyMiw3ICsxMjIsNyBAQCBib29sIEhUTUxEZXRhaWxzRWxlbWVudDo6aXNBY3RpdmVTdW1t
YXJ5KGNvbnN0IEhUTUxTdW1tYXJ5RWxlbWVudCYgc3VtbWFyeSkgY29ucwogICAgIGlmIChzdW1t
YXJ5LnBhcmVudE5vZGUoKSAhPSB0aGlzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBh
dXRvIHNsb3QgPSBtYWtlUmVmUHRyKHNoYWRvd1Jvb3QoKS0+ZmluZEFzc2lnbmVkU2xvdChzdW1t
YXJ5KSk7CisgICAgUmVmUHRyIHNsb3QgPSBzaGFkb3dSb290KCktPmZpbmRBc3NpZ25lZFNsb3Qo
c3VtbWFyeSk7CiAgICAgaWYgKCFzbG90KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0
dXJuIHNsb3QgPT0gbV9zdW1tYXJ5U2xvdDsKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIEhUTUxE
ZXRhaWxzRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QgQXRvbVN0cgogICAgICAgICBib29sIG9sZFZhbHVlID0gbV9pc09wZW47CiAgICAgICAg
IG1faXNPcGVuID0gIXZhbHVlLmlzTnVsbCgpOwogICAgICAgICBpZiAob2xkVmFsdWUgIT0gbV9p
c09wZW4pIHsKLSAgICAgICAgICAgIGF1dG8gcm9vdCA9IG1ha2VSZWZQdHIoc2hhZG93Um9vdCgp
KTsKKyAgICAgICAgICAgIFJlZlB0ciByb290ID0gc2hhZG93Um9vdCgpOwogICAgICAgICAgICAg
QVNTRVJUKHJvb3QpOwogICAgICAgICAgICAgaWYgKG1faXNPcGVuKQogICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZENoaWxkKCptX2RlZmF1bHRTbG90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERv
Y3VtZW50LmNwcAppbmRleCAwNzNiMmJjMzllNDBiYTBlZmRkOTY5YjY3NDZmMjU1YWI3ZmNiZDRk
Li40MTYzMzBjYjY0MDc1MDI2MWJmYTY0NTc3NDM0YWQyYjFjZjdkY2QzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRG9jdW1lbnQuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgc3RkOjpvcHRpb25hbDxW
YXJpYW50PFJlZlB0cjxXaW5kb3dQcm94eT4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxD
b2xsZWN0aW8KIAogICAgIGF1dG8mIGVsZW1lbnQgPSAqZG9jdW1lbnROYW1lZEl0ZW0oKm5hbWUu
aW1wbCgpKTsKICAgICBpZiAoVU5MSUtFTFkoaXM8SFRNTElGcmFtZUVsZW1lbnQ+KGVsZW1lbnQp
KSkgewotICAgICAgICBpZiAoYXV0byBkb21XaW5kb3cgPSBtYWtlUmVmUHRyKGRvd25jYXN0PEhU
TUxJRnJhbWVFbGVtZW50PihlbGVtZW50KS5jb250ZW50V2luZG93KCkpKQorICAgICAgICBpZiAo
UmVmUHRyIGRvbVdpbmRvdyA9IGRvd25jYXN0PEhUTUxJRnJhbWVFbGVtZW50PihlbGVtZW50KS5j
b250ZW50V2luZG93KCkpCiAgICAgICAgICAgICByZXR1cm4gVmFyaWFudDxSZWZQdHI8V2luZG93
UHJveHk+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+IHsgV1RGTW92
ZShkb21XaW5kb3cpIH07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmlu
ZGV4IDg5Yjk5ZTRlNjNkNzJmOGE3OWRkYjFhZTM5YmE5Y2IxYWUwNTEzOTMuLjhhZGU0MjBmZGMy
ZGFkZmVmMjcwYWQ3ZDU0ZWM1ZjcyMWVhYWNiMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuY3BwCkBAIC00NTIsNyArNDUyLDcgQEAgTm9kZTo6RWRpdGFiaWxpdHkgSFRNTEVsZW1lbnQ6
OmVkaXRhYmlsaXR5RnJvbUNvbnRlbnRFZGl0YWJsZUF0dHIoY29uc3QgTm9kZSYgbm8KICAgICAg
ICAgfQogICAgIH0KIAotICAgIGF1dG8gY29udGFpbmluZ1NoYWRvd1Jvb3QgPSBtYWtlUmVmUHRy
KG5vZGUuY29udGFpbmluZ1NoYWRvd1Jvb3QoKSk7CisgICAgUmVmUHRyIGNvbnRhaW5pbmdTaGFk
b3dSb290IHsgbm9kZS5jb250YWluaW5nU2hhZG93Um9vdCgpIH07CiAgICAgaWYgKGNvbnRhaW5p
bmdTaGFkb3dSb290ICYmIGNvbnRhaW5pbmdTaGFkb3dSb290LT5tb2RlKCkgPT0gU2hhZG93Um9v
dE1vZGU6OlVzZXJBZ2VudCkKICAgICAgICAgcmV0dXJuIEVkaXRhYmlsaXR5OjpSZWFkT25seTsK
IApAQCAtMTI3NSw3ICsxMjc1LDcgQEAgc3RhdGljIFJlZlB0cjxIVE1MRWxlbWVudD4gaW1hZ2VP
dmVybGF5SG9zdChjb25zdCBOb2RlJiBub2RlKQogICAgIGlmICghaXM8SFRNTEVsZW1lbnQ+KGhv
c3QpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gZWxlbWVudCA9IG1ha2VS
ZWZQdHIoZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCpob3N0KSk7CisgICAgUmVmUHRyIGVsZW1lbnQg
PSBkb3duY2FzdDxIVE1MRWxlbWVudD4oJmhvc3QpOwogICAgIHJldHVybiBlbGVtZW50LT5oYXNJ
bWFnZU92ZXJsYXkoKSA/IGVsZW1lbnQgOiBudWxscHRyOwogfQogCkBAIC0xMjg2LDcgKzEyODYs
NyBAQCBib29sIEhUTUxFbGVtZW50Ojppc0ltYWdlT3ZlcmxheURhdGFEZXRlY3RvclJlc3VsdCgp
IGNvbnN0CiAKIGJvb2wgSFRNTEVsZW1lbnQ6OmlzSW5zaWRlSW1hZ2VPdmVybGF5KGNvbnN0IFNp
bXBsZVJhbmdlJiByYW5nZSkKIHsKLSAgICBhdXRvIGNvbW1vbkFuY2VzdG9yID0gbWFrZVJlZlB0
cihjb21tb25JbmNsdXNpdmVBbmNlc3RvcjxDb21wb3NlZFRyZWU+KHJhbmdlKSk7CisgICAgUmVm
UHRyIGNvbW1vbkFuY2VzdG9yID0gY29tbW9uSW5jbHVzaXZlQW5jZXN0b3I8Q29tcG9zZWRUcmVl
PihyYW5nZSk7CiAgICAgaWYgKCFjb21tb25BbmNlc3RvcikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCkBAIC0xNTg2LDcgKzE1ODYsNyBAQCB2b2lkIEhUTUxFbGVtZW50Ojp1cGRhdGVXaXRoVGV4
dFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYgcgogICAgIH0K
ICNlbmRpZiAvLyBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCiAKLSAgICBpZiAoYXV0byBmcmFtZSA9
IG1ha2VSZWZQdHIoZG9jdW1lbnQoKS5mcmFtZSgpKSkKKyAgICBpZiAoUmVmUHRyIGZyYW1lID0g
ZG9jdW1lbnQoKS5mcmFtZSgpKQogICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuc2NoZWR1
bGVDdXJzb3JVcGRhdGUoKTsKIAogICAgIGlmIChjYWNoZVRleHRSZWNvZ25pdGlvblJlc3VsdHMg
PT0gQ2FjaGVUZXh0UmVjb2duaXRpb25SZXN1bHRzOjpZZXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDczNmY4MWM5NzAwNmEwNTkw
YWJlMjZlODRkMGNlZmYyYjUxMzViMTguLmEyNjYyYTY1MGYyY2Q4ODQ2NjIzZDBjNjEwODc2NzA3
ZWJjYmQzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVt
ZW50LmNwcApAQCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6
ZGlkQXR0YWNoUmVuZGVyZXJzKCkKICAgICAgICAgc2V0QXV0b2ZvY3VzZWQoKTsKIAogICAgICAg
ICBSZWZQdHI8SFRNTEZvcm1Db250cm9sRWxlbWVudD4gZWxlbWVudCA9IHRoaXM7Ci0gICAgICAg
IGF1dG8gZnJhbWVWaWV3ID0gbWFrZVJlZlB0cihkb2N1bWVudCgpLnZpZXcoKSk7CisgICAgICAg
IFJlZlB0ciBmcmFtZVZpZXcgPSBkb2N1bWVudCgpLnZpZXcoKTsKICAgICAgICAgaWYgKGZyYW1l
VmlldyAmJiBmcmFtZVZpZXctPmxheW91dENvbnRleHQoKS5pc0luTGF5b3V0KCkpIHsKICAgICAg
ICAgICAgIGZyYW1lVmlldy0+cXVldWVQb3N0TGF5b3V0Q2FsbGJhY2soW2VsZW1lbnRdIHsKICAg
ICAgICAgICAgICAgICBlbGVtZW50LT5mb2N1cyh7IFNlbGVjdGlvblJlc3RvcmF0aW9uTW9kZTo6
UGxhY2VDYXJldEF0U3RhcnQgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCmluZGV4IGFiNmJkZDQ4ZDEyMjM3YjUyYWViZWM4N2U5
ZWIwZGQxOTcyNTc1OWEuLmUzNWRiMDA5NTJlMTZkNmZiMzU5YzMzYmIxZDZhMzNmNzk2ZDllODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b24uY3BwCkBAIC02OSw3ICs2OSw3IEBAIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8UmFk
aW9Ob2RlTGlzdD4sIFJlZlB0cjxFbGVtZW50Pj4+IEhUTUxGb3JtQ29udHJvbHNDCiBzdGF0aWMg
dW5zaWduZWQgZmluZEZvcm1Bc3NvY2lhdGVkRWxlbWVudChjb25zdCBWZWN0b3I8V2Vha1B0cjxI
VE1MRWxlbWVudD4+JiBlbGVtZW50cywgY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZWxlbWVudHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
YXV0byBjdXJyZW50RWxlbWVudCA9IG1ha2VSZWZQdHIoZWxlbWVudHNbaV0uZ2V0KCkpOworICAg
ICAgICBSZWZQdHIgY3VycmVudEVsZW1lbnQgPSBlbGVtZW50c1tpXS5nZXQoKTsKICAgICAgICAg
QVNTRVJUKGN1cnJlbnRFbGVtZW50KTsKICAgICAgICAgYXV0byogYXNzb2NpYXRlZEVsZW1lbnQg
PSBjdXJyZW50RWxlbWVudC0+YXNGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKTsKICAgICAgICAgQVNT
RVJUKGFzc29jaWF0ZWRFbGVtZW50KTsKQEAgLTkyLDcgKzkyLDcgQEAgSFRNTEVsZW1lbnQqIEhU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpjdXN0b21FbGVtZW50QWZ0ZXIoRWxlbWVudCogY3Vy
cmVudCkgY28KICAgICAgICAgc3RhcnQgPSBmaW5kRm9ybUFzc29jaWF0ZWRFbGVtZW50KGVsZW1l
bnRzLCAqY3VycmVudCkgKyAxOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gc3RhcnQ7IGkgPCBl
bGVtZW50cy5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvIGVsZW1lbnQgPSBtYWtlUmVmUHRy
KGVsZW1lbnRzW2ldLmdldCgpKTsKKyAgICAgICAgUmVmUHRyIGVsZW1lbnQgPSBlbGVtZW50c1tp
XS5nZXQoKTsKICAgICAgICAgQVNTRVJUKGVsZW1lbnQpOwogICAgICAgICBBU1NFUlQoZWxlbWVu
dC0+YXNGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKSk7CiAgICAgICAgIGlmIChlbGVtZW50LT5hc0Zv
cm1Bc3NvY2lhdGVkRWxlbWVudCgpLT5pc0VudW1lcmF0YWJsZSgpKSB7CkBAIC0xMjAsNyArMTIw
LDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50
Q2FjaGUoKSBjb25zdAogCiAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQg
c2NyaXB0RGlzYWxsb3dlZFNjb3BlOwogICAgIGZvciAoYXV0byYgd2Vha0VsZW1lbnQgOiBvd25l
ck5vZGUoKS51bnNhZmVBc3NvY2lhdGVkRWxlbWVudHMoKSkgewotICAgICAgICBhdXRvIGVsZW1l
bnQgPSBtYWtlUmVmUHRyKHdlYWtFbGVtZW50LmdldCgpKTsKKyAgICAgICAgUmVmUHRyIGVsZW1l
bnQgeyB3ZWFrRWxlbWVudC5nZXQoKSB9OwogICAgICAgICBBU1NFUlQoZWxlbWVudCk7CiAgICAg
ICAgIGF1dG8qIGFzc29jaWF0ZWRFbGVtZW50ID0gZWxlbWVudC0+YXNGb3JtQXNzb2NpYXRlZEVs
ZW1lbnQoKTsKICAgICAgICAgQVNTRVJUKGFzc29jaWF0ZWRFbGVtZW50KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCA2NDk0M2ZmMmUxZmUxMzU4MjY1NWQ1NWM0
YjgzNTBkYmVmYjJkNWFiLi44OWRlYzVlODczZTk5NWJmYzJhZWE4ZjZlNzgyYzAxNWYwMTc5ZjVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC05Myw3ICs5Myw3
IEBAIEhUTUxGb3JtRWxlbWVudDo6fkhUTUxGb3JtRWxlbWVudCgpCiAKICAgICBtX2RlZmF1bHRC
dXR0b24gPSBudWxscHRyOwogICAgIGZvciAoYXV0byYgd2Vha0VsZW1lbnQgOiBtX2Fzc29jaWF0
ZWRFbGVtZW50cykgewotICAgICAgICBhdXRvIGVsZW1lbnQgPSBtYWtlUmVmUHRyKHdlYWtFbGVt
ZW50LmdldCgpKTsKKyAgICAgICAgUmVmUHRyIGVsZW1lbnQgeyB3ZWFrRWxlbWVudC5nZXQoKSB9
OwogICAgICAgICBBU1NFUlQoZWxlbWVudCk7CiAgICAgICAgIGF1dG8qIGFzc29jaWF0ZWRFbGVt
ZW50ID0gZWxlbWVudC0+YXNGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKTsKICAgICAgICAgQVNTRVJU
KGFzc29jaWF0ZWRFbGVtZW50KTsKQEAgLTE1OSw3ICsxNTksNyBAQCB1bnNpZ25lZCBIVE1MRm9y
bUVsZW1lbnQ6Omxlbmd0aCgpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gMDsKICAg
ICBmb3IgKGF1dG8mIHdlYWtFbGVtZW50IDogbV9hc3NvY2lhdGVkRWxlbWVudHMpIHsKLSAgICAg
ICAgYXV0byBlbGVtZW50ID0gbWFrZVJlZlB0cih3ZWFrRWxlbWVudC5nZXQoKSk7CisgICAgICAg
IFJlZlB0ciBlbGVtZW50IHsgd2Vha0VsZW1lbnQuZ2V0KCkgfTsKICAgICAgICAgQVNTRVJUKGVs
ZW1lbnQpOwogICAgICAgICBhdXRvKiBhc3NvY2lhdGVkRWxlbWVudCA9IGVsZW1lbnQtPmFzRm9y
bUFzc29jaWF0ZWRFbGVtZW50KCk7CiAgICAgICAgIEFTU0VSVChhc3NvY2lhdGVkRWxlbWVudCk7
CkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnN1Ym1pdElmUG9zc2li
bGUoRXZlbnQqIGV2ZW50LCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBzdWIKIAogICAgIGJvb2wg
c2hvdWxkVmFsaWRhdGUgPSBkb2N1bWVudCgpLnBhZ2UoKSAmJiBkb2N1bWVudCgpLnBhZ2UoKS0+
c2V0dGluZ3MoKS5pbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uRW5hYmxlZCgpICYmICFub1ZhbGlk
YXRlKCk7CiAgICAgaWYgKHNob3VsZFZhbGlkYXRlKSB7Ci0gICAgICAgIGF1dG8gc3VibWl0RWxl
bWVudCA9IG1ha2VSZWZQdHIoc3VibWl0dGVyID8gc3VibWl0dGVyIDogZmluZFN1Ym1pdHRlcihl
dmVudCkpOworICAgICAgICBSZWZQdHIgc3VibWl0RWxlbWVudCA9IHN1Ym1pdHRlciA/IHN1Ym1p
dHRlciA6IGZpbmRTdWJtaXR0ZXIoZXZlbnQpOwogICAgICAgICBpZiAoc3VibWl0RWxlbWVudCAm
JiBzdWJtaXRFbGVtZW50LT5mb3JtTm9WYWxpZGF0ZSgpKQogICAgICAgICAgICAgc2hvdWxkVmFs
aWRhdGUgPSBmYWxzZTsKICAgICB9CkBAIC0zNDEsNyArMzQxLDcgQEAgU3RyaW5nUGFpclZlY3Rv
ciBIVE1MRm9ybUVsZW1lbnQ6OnRleHRGaWVsZFZhbHVlcygpIGNvbnN0CiAgICAgU3RyaW5nUGFp
clZlY3RvciByZXN1bHQ7CiAgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9hc3Nv
Y2lhdGVkRWxlbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIHdlYWtFbGVtZW50IDogbV9h
c3NvY2lhdGVkRWxlbWVudHMpIHsKLSAgICAgICAgYXV0byBlbGVtZW50ID0gbWFrZVJlZlB0cih3
ZWFrRWxlbWVudC5nZXQoKSk7CisgICAgICAgIFJlZlB0ciBlbGVtZW50IHsgd2Vha0VsZW1lbnQu
Z2V0KCkgfTsKICAgICAgICAgaWYgKCFpczxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBhdXRvJiBpbnB1dCA9IGRvd25jYXN0PEhUTUxJ
bnB1dEVsZW1lbnQ+KCplbGVtZW50KTsKQEAgLTcxNiw3ICs3MTYsNyBAQCBTdHJpbmcgSFRNTEZv
cm1FbGVtZW50Ojp0YXJnZXQoKSBjb25zdAogCiBTdHJpbmcgSFRNTEZvcm1FbGVtZW50OjplZmZl
Y3RpdmVUYXJnZXQoY29uc3QgRXZlbnQqIGV2ZW50LCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBv
dmVycmlkZVN1Ym1pdHRlcikgY29uc3QKIHsKLSAgICBpZiAoYXV0byBzdWJtaXR0ZXIgPSBtYWtl
UmVmUHRyKG92ZXJyaWRlU3VibWl0dGVyID8gb3ZlcnJpZGVTdWJtaXR0ZXIgOiBmaW5kU3VibWl0
dGVyKGV2ZW50KSkpIHsKKyAgICBpZiAoUmVmUHRyIHN1Ym1pdHRlciA9IG92ZXJyaWRlU3VibWl0
dGVyID8gb3ZlcnJpZGVTdWJtaXR0ZXIgOiBmaW5kU3VibWl0dGVyKGV2ZW50KSkgewogICAgICAg
ICBhdXRvIHRhcmdldFZhbHVlID0gc3VibWl0dGVyLT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKGZvcm10YXJnZXRBdHRyKTsKICAgICAgICAgaWYgKCF0YXJnZXRWYWx1ZS5pc051bGwo
KSkKICAgICAgICAgICAgIHJldHVybiB0YXJnZXRWYWx1ZTsKQEAgLTgzOCw3ICs4MzgsNyBAQCBS
ZWZQdHI8SFRNTEVsZW1lbnQ+IEhUTUxGb3JtRWxlbWVudDo6ZWxlbWVudEZyb21QYXN0TmFtZXNN
YXAoY29uc3QgQXRvbVN0cmluZyYgcAogICAgIGF1dG8gd2Vha0VsZW1lbnQgPSBtX3Bhc3ROYW1l
c01hcC5nZXQocGFzdE5hbWUpOwogICAgIGlmICghd2Vha0VsZW1lbnQpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIGF1dG8gZWxlbWVudCA9IG1ha2VSZWZQdHIod2Vha0VsZW1lbnQuZ2V0
KCkpOworICAgIFJlZlB0ciBlbGVtZW50IHsgd2Vha0VsZW1lbnQuZ2V0KCkgfTsKICNpZiBBU1NF
UlRfRU5BQkxFRAogICAgIGFzc2VydEl0ZW1DYW5CZUluUGFzdE5hbWVzTWFwKGVsZW1lbnQtPmFz
Rm9ybU5hbWVkSXRlbSgpKTsKICNlbmRpZgpAQCAtOTMwLDcgKzkzMCw3IEBAIGNvbnN0IFZlY3Rv
cjxXZWFrUHRyPEhUTUxFbGVtZW50Pj4mIEhUTUxGb3JtRWxlbWVudDo6dW5zYWZlQXNzb2NpYXRl
ZEVsZW1lbnRzKCkKIFZlY3RvcjxSZWY8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Pj4gSFRNTEZvcm1F
bGVtZW50Ojpjb3B5QXNzb2NpYXRlZEVsZW1lbnRzVmVjdG9yKCkgY29uc3QKIHsKICAgICByZXR1
cm4gV1RGOjptYXAobV9hc3NvY2lhdGVkRWxlbWVudHMsIFtdIChhdXRvJiB3ZWFrRWxlbWVudCkg
ewotICAgICAgICBhdXRvIGVsZW1lbnQgPSBtYWtlUmVmUHRyKHdlYWtFbGVtZW50LmdldCgpKTsK
KyAgICAgICAgUmVmUHRyIGVsZW1lbnQgeyB3ZWFrRWxlbWVudC5nZXQoKSB9OwogICAgICAgICBB
U1NFUlQoZWxlbWVudCk7CiAgICAgICAgIGF1dG8qIGZvcm1Bc3NvY2lhdGVkRWxlbWVudCA9IGVs
ZW1lbnQtPmFzRm9ybUFzc29jaWF0ZWRFbGVtZW50KCk7CiAgICAgICAgIEFTU0VSVChmb3JtQXNz
b2NpYXRlZEVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVTZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVu
dC5jcHAKaW5kZXggZGMzMjczMjgyMmRkOTA3YTc1MDE2YTdlMDE3ZWE1ZjhlNDg1NjRlMS4uNjIz
N2Y1MmVmYTZkZWM5ZmZmYTZjNzg3OTA1ZGUwNTgyMGNkZjQ3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBI
VE1MRnJhbWVTZXRFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlIHJlbW92
YWxUeXBlLCBDb250YWluZXIKIAogV2luZG93UHJveHkqIEhUTUxGcmFtZVNldEVsZW1lbnQ6Om5h
bWVkSXRlbShjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQogewotICAgIGF1dG8gZnJhbWVFbGVtZW50
ID0gbWFrZVJlZlB0cihjaGlsZHJlbigpLT5uYW1lZEl0ZW0obmFtZSkpOworICAgIFJlZlB0ciBm
cmFtZUVsZW1lbnQgPSBjaGlsZHJlbigpLT5uYW1lZEl0ZW0obmFtZSk7CiAgICAgaWYgKCFpczxI
VE1MRnJhbWVFbGVtZW50PihmcmFtZUVsZW1lbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1lbnQuY3BwCmluZGV4IDY1MTc0Yjg3Yzkw
NDkxNWJlOWQ5ODdiMjYyNzM5NmMzNzhiNDM4MzEuLmI3ZWY1ZWZiNTMxOTMzNTkwYzg4YzMzOTJl
MTMyYjc0Nzc1YjNkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEh0bWxF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIdG1sRWxlbWVudC5jcHAK
QEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBIVE1MSHRtbEVsZW1lbnQ6Omluc2VydGVkQnlQYXJzZXIo
KQogICAgIGlmICghZG9jdW1lbnQoKS5mcmFtZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBh
dXRvIGRvY3VtZW50TG9hZGVyID0gbWFrZVJlZlB0cihkb2N1bWVudCgpLmZyYW1lKCktPmxvYWRl
cigpLmRvY3VtZW50TG9hZGVyKCkpOworICAgIFJlZlB0ciBkb2N1bWVudExvYWRlciA9IGRvY3Vt
ZW50KCkuZnJhbWUoKS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIWRvY3Vt
ZW50TG9hZGVyKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUVsZW1lbnQuY3BwCmluZGV4IDM1ZmViNWVlYWU1ZDQ0OTc0MTY1NzcyY2NjOTYwMzQ3NmZmMzI1
MjUuLmM4M2ZkMjlkMGJhY2MzZjIxMDIyZGFhNTg4ZjQ3YmQ5OTdmYWEzOWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQg
SFRNTEltYWdlRWxlbWVudDo6c2V0QmVzdEZpdFVSTEFuZERQUkZyb21JbWFnZUNhbmRpZGF0ZShj
b25zdCBJbWFnZUNhbmRpZGF0CiAKIEltYWdlQ2FuZGlkYXRlIEhUTUxJbWFnZUVsZW1lbnQ6OmJl
c3RGaXRTb3VyY2VGcm9tUGljdHVyZUVsZW1lbnQoKQogewotICAgIGF1dG8gcGljdHVyZSA9IG1h
a2VSZWZQdHIocGljdHVyZUVsZW1lbnQoKSk7CisgICAgUmVmUHRyIHBpY3R1cmUgPSBwaWN0dXJl
RWxlbWVudCgpOwogICAgIGlmICghcGljdHVyZSkKICAgICAgICAgcmV0dXJuIHsgfTsKIApAQCAt
MjA2LDcgKzIwNiw3IEBAIEltYWdlQ2FuZGlkYXRlIEhUTUxJbWFnZUVsZW1lbnQ6OmJlc3RGaXRT
b3VyY2VGcm9tUGljdHVyZUVsZW1lbnQoKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9CiAKLSAgICAgICAgYXV0byBkb2N1bWVudEVsZW1lbnQgPSBtYWtlUmVmUHRyKGRvY3Vt
ZW50KCkuZG9jdW1lbnRFbGVtZW50KCkpOworICAgICAgICBSZWZQdHIgZG9jdW1lbnRFbGVtZW50
ID0gZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKTsKICAgICAgICAgTWVkaWFRdWVyeUV2YWx1
YXRvciBldmFsdWF0b3IgeyBkb2N1bWVudCgpLnByaW50aW5nKCkgPyAicHJpbnQiIDogInNjcmVl
biIsIGRvY3VtZW50KCksIGRvY3VtZW50RWxlbWVudCA/IGRvY3VtZW50RWxlbWVudC0+Y29tcHV0
ZWRTdHlsZSgpIDogbnVsbHB0ciB9OwogICAgICAgICBhdXRvKiBxdWVyaWVzID0gc291cmNlLnBh
cnNlZE1lZGlhQXR0cmlidXRlKGRvY3VtZW50KCkpOwogICAgICAgICBMT0coTWVkaWFRdWVyaWVz
LCAiSFRNTEltYWdlRWxlbWVudCAlcCBiZXN0Rml0U291cmNlRnJvbVBpY3R1cmVFbGVtZW50IGV2
YWx1YXRpbmcgbWVkaWEgcXVlcmllcyIsIHRoaXMpOwpAQCAtMjMwLDcgKzIzMCw3IEBAIEltYWdl
Q2FuZGlkYXRlIEhUTUxJbWFnZUVsZW1lbnQ6OmJlc3RGaXRTb3VyY2VGcm9tUGljdHVyZUVsZW1l
bnQoKQogCiB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmV2YWx1YXRlRHluYW1pY01lZGlhUXVlcnlE
ZXBlbmRlbmNpZXMoKQogewotICAgIGF1dG8gZG9jdW1lbnRFbGVtZW50ID0gbWFrZVJlZlB0cihk
b2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpKTsKKyAgICBSZWZQdHIgZG9jdW1lbnRFbGVtZW50
ID0gZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKTsKICAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9y
IGV2YWx1YXRvciB7IGRvY3VtZW50KCkucHJpbnRpbmcoKSA/ICJwcmludCIgOiAic2NyZWVuIiwg
ZG9jdW1lbnQoKSwgZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50LT5jb21wdXRlZFN0
eWxlKCkgOiBudWxscHRyIH07CiAKICAgICBpZiAoIWV2YWx1YXRvci5ldmFsdWF0ZUZvckNoYW5n
ZXMobV9tZWRpYVF1ZXJ5RHluYW1pY1Jlc3VsdHMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKaW5kZXggYTgwMjUyZTg3ZDM2ZDFlNTQ4MTU0OWE4ZDY1YmRiZTk5OTJi
N2M1YS4uMWI5YjJlMWIyMjFlMGZlM2FhZjZhNWUyMDI5NDU5YjQwMzQzNzIzNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xMjQ3LDcgKzEyNDcsNyBAQCB2
b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQmIGV2ZW50KQog
ICAgICAgICAgICAgZGlzcGF0Y2hGb3JtQ29udHJvbENoYW5nZUV2ZW50KCk7CiAKICAgICAgICAg
Ly8gRm9ybSBtYXkgbmV2ZXIgaGF2ZSBiZWVuIHByZXNlbnQsIG9yIG1heSBoYXZlIGJlZW4gZGVz
dHJveWVkIGJ5IGNvZGUgcmVzcG9uZGluZyB0byB0aGUgY2hhbmdlIGV2ZW50LgotICAgICAgICBp
ZiAoYXV0byBmb3JtRWxlbWVudCA9IG1ha2VSZWZQdHIoZm9ybSgpKSkKKyAgICAgICAgaWYgKFJl
ZlB0ciBmb3JtRWxlbWVudCA9IGZvcm0oKSkKICAgICAgICAgICAgIGZvcm1FbGVtZW50LT5zdWJt
aXRJbXBsaWNpdGx5KGV2ZW50LCBjYW5UcmlnZ2VySW1wbGljaXRTdWJtaXNzaW9uKCkpOwogCiAg
ICAgICAgIGV2ZW50LnNldERlZmF1bHRIYW5kbGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TGFiZWxFbGVtZW50LmNwcAppbmRleCBhZTU4MmIzYzI1ZmJmYjYyN2Q4NDQxNGUwNjMzZjFjZmVh
OTY0NWRjLi4wYmFjMGJmOGViMmM0ZjFiMDk2Yzk3MDk4ZmRjYjBlZTJjY2EyZGM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogc3RhdGljIExhYmVsYWJsZUVsZW1lbnQqIGZpcnN0
RWxlbWVudFdpdGhJZElmTGFiZWxhYmxlKFRyZWVTY29wZSYgdHJlZVNjb3BlLCBjb25zdCBBdG9t
U3RyaW5nJiBpZCkKIHsKLSAgICBhdXRvIGVsZW1lbnQgPSBtYWtlUmVmUHRyKHRyZWVTY29wZS5n
ZXRFbGVtZW50QnlJZChpZCkpOworICAgIFJlZlB0ciBlbGVtZW50ID0gdHJlZVNjb3BlLmdldEVs
ZW1lbnRCeUlkKGlkKTsKICAgICBpZiAoIWlzPExhYmVsYWJsZUVsZW1lbnQ+KGVsZW1lbnQpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTGVnZW5kRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRF
bGVtZW50LmNwcAppbmRleCA2OWIzMDcwNGZhYjczODIwYzEzYWNkYzc2Y2JlYTE4ODRiNWJmMGY3
Li40MWVlMmE5OTA1MWNlNWJlNGMzNWU0NWM2YzZmYzI2MTZkZjUxMTAyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcApAQCAtODUsNyArODUsNyBAQCBIVE1MRm9y
bUVsZW1lbnQqIEhUTUxMZWdlbmRFbGVtZW50Ojpmb3JtKCkgY29uc3QKICAgICAvLyBBY2NvcmRp
bmcgdG8gdGhlIHNwZWNpZmljYXRpb24sIElmIHRoZSBsZWdlbmQgaGFzIGEgZmllbGRzZXQgZWxl
bWVudCBhcwogICAgIC8vIGl0cyBwYXJlbnQsIHRoZW4gdGhlIGZvcm0gYXR0cmlidXRlIG11c3Qg
cmV0dXJuIHRoZSBzYW1lIHZhbHVlIGFzIHRoZQogICAgIC8vIGZvcm0gYXR0cmlidXRlIG9uIHRo
YXQgZmllbGRzZXQgZWxlbWVudC4gT3RoZXJ3aXNlLCBpdCBtdXN0IHJldHVybiBudWxsLgotICAg
IGF1dG8gZmllbGRzZXQgPSBtYWtlUmVmUHRyKHBhcmVudE5vZGUoKSk7CisgICAgUmVmUHRyIGZp
ZWxkc2V0ID0gcGFyZW50Tm9kZSgpOwogICAgIGlmICghaXM8SFRNTEZpZWxkU2V0RWxlbWVudD4o
ZmllbGRzZXQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gZG93bmNhc3Q8
SFRNTEZpZWxkU2V0RWxlbWVudD4oKmZpZWxkc2V0KS5mb3JtKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXggOTg3NzFkODIzMWI2NGNlYjI3NTE5YjdkYjUxOTFi
ZGRlYmNmNzUwYS4uYTA1NGQzZWYyMTQzMzE0YTQxYzkxN2M1OGIwMTY0MDMzZDIxYzE0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApAQCAtNDM3LDcgKzQzNyw3IEBA
IHZvaWQgSFRNTExpbmtFbGVtZW50OjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJl
ZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjCiAgICAgICAgIEFTU0VSVCghbV9zaGVldCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIoZG9jdW1lbnQo
KS5mcmFtZSgpKTsKKyAgICBSZWZQdHIgZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7CiAgICAg
aWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC02MjEsNyArNjIxLDcgQEAgdm9pZCBI
VE1MTGlua0VsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxV
Ukw+JiB1cmxzKSBjb25zdAogICAgIC8vIEFwcGVuZCB0aGUgVVJMIG9mIHRoaXMgbGluayBlbGVt
ZW50LgogICAgIGFkZFN1YnJlc291cmNlVVJMKHVybHMsIGhyZWYoKSk7CiAKLSAgICBpZiAoYXV0
byBzdHlsZVNoZWV0ID0gbWFrZVJlZlB0cih0aGlzLT5zaGVldCgpKSkgeworICAgIGlmIChSZWZQ
dHIgc3R5bGVTaGVldCA9IHRoaXMtPnNoZWV0KCkpIHsKICAgICAgICAgc3R5bGVTaGVldC0+Y29u
dGVudHMoKS50cmF2ZXJzZVN1YnJlc291cmNlcyhbJl0gKGF1dG8mIHJlc291cmNlKSB7CiAgICAg
ICAgICAgICB1cmxzLmFkZChyZXNvdXJjZS51cmwoKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCAxOTk4NjJi
ODA3YWMyMjA3NGIyZjQ1YzJmMTI5N2IxNWI2MmEzODBiLi4wYWE4M2ViYTA4MjAzMDllYjJkNTE5
NmFjYzI2NWE5OTljZTIxOTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKQEAgLTE0NzMsNyArMTQ3Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFJl
c291cmNlKGNvbnN0IFVSTCYgaW5pdGlhbFVSTCwgQ29udGVudFR5cGUmIGNvbnRlbnRUCiAgICAg
fQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICBpZiAoYXV0byBkb2N1bWVu
dExvYWRlciA9IG1ha2VSZWZQdHIoZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpKSB7
CisgICAgaWYgKFJlZlB0ciBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVu
dExvYWRlcigpKSB7CiAgICAgICAgIGlmIChwYWdlLT51c2VyQ29udGVudFByb3ZpZGVyKCkucHJv
Y2Vzc0NvbnRlbnRSdWxlTGlzdHNGb3JMb2FkKCpwYWdlLCB1cmwsIENvbnRlbnRFeHRlbnNpb25z
OjpSZXNvdXJjZVR5cGU6Ok1lZGlhLCAqZG9jdW1lbnRMb2FkZXIpLnN1bW1hcnkuYmxvY2tlZExv
YWQpIHsKICAgICAgICAgICAgIG1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29y
a1N0YXRlOjpGb3JtYXRFcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xODM2LDcgKzE4
MzYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMo
Y29uc3QgTWVkaWFUaW1lJiBtb3ZpZVRpbWUpCiAgICAgICAgIC8vIHNpbXBsZSBldmVudCBuYW1l
ZCBjdWVjaGFuZ2UgYXQgdGhlIHRyYWNrIGVsZW1lbnQgYXMgd2VsbC4KICAgICAgICAgaWYgKGlz
PExvYWRhYmxlVGV4dFRyYWNrPigqYWZmZWN0ZWRUcmFjaykpIHsKICAgICAgICAgICAgIGF1dG8g
ZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jdWVjaGFuZ2VFdmVudCwgRXZlbnQ6
OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKLSAgICAgICAgICAgIGF1
dG8gdHJhY2tFbGVtZW50ID0gbWFrZVJlZlB0cihkb3duY2FzdDxMb2FkYWJsZVRleHRUcmFjaz4o
KmFmZmVjdGVkVHJhY2spLnRyYWNrRWxlbWVudCgpKTsKKyAgICAgICAgICAgIFJlZlB0ciB0cmFj
a0VsZW1lbnQgPSBkb3duY2FzdDxMb2FkYWJsZVRleHRUcmFjaz4oKmFmZmVjdGVkVHJhY2spLnRy
YWNrRWxlbWVudCgpOwogICAgICAgICAgICAgQVNTRVJUKHRyYWNrRWxlbWVudCk7CiAgICAgICAg
ICAgICBzY2hlZHVsZUV2ZW50T24oKnRyYWNrRWxlbWVudCwgV1RGTW92ZShldmVudCkpOwogICAg
ICAgICB9CkBAIC00MjYwLDcgKzQyNjAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92
ZVRleHRUcmFjayhSZWY8VGV4dFRyYWNrPiYmIHRyYWNrLCBib29sIHNjaGVkdWxlRXZlbgogICAg
ICAgICByZXR1cm47CiAKICAgICBUcmFja0Rpc3BsYXlVcGRhdGVTY29wZSBzY29wZSB7ICp0aGlz
IH07Ci0gICAgaWYgKGF1dG8gY3VlcyA9IG1ha2VSZWZQdHIodHJhY2stPmN1ZXMoKSkpCisgICAg
aWYgKFJlZlB0ciBjdWVzID0gdHJhY2stPmN1ZXMoKSkKICAgICAgICAgdGV4dFRyYWNrUmVtb3Zl
Q3Vlcyh0cmFjaywgKmN1ZXMpOwogICAgIHRyYWNrLT5jbGVhckNsaWVudCgqdGhpcyk7CiAgICAg
aWYgKG1fdGV4dFRyYWNrcykKQEAgLTQ2MjIsNyArNDYyMiw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6dXBkYXRlQ2FwdGlvbkNvbnRhaW5lcigpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
bGF5b3V0U2l6ZUNoYW5nZWQoKQogewotICAgIGlmIChhdXRvIGZyYW1lVmlldyA9IG1ha2VSZWZQ
dHIoZG9jdW1lbnQoKS52aWV3KCkpKSB7CisgICAgaWYgKFJlZlB0ciBmcmFtZVZpZXcgPSBkb2N1
bWVudCgpLnZpZXcoKSkgewogICAgICAgICBhdXRvIHRhc2sgPSBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH1dIHsKICAgICAgICAgICAgIGlmIChhdXRvIHJvb3QgPSB1c2VyQWdl
bnRTaGFkb3dSb290KCkpCiAgICAgICAgICAgICAgICAgcm9vdC0+ZGlzcGF0Y2hFdmVudChFdmVu
dDo6Y3JlYXRlKCJyZXNpemUiLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6Tm8pKTsKQEAgLTY4ODEsNyArNjg4MSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
Y3JlYXRlTWVkaWFQbGF5ZXIoKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCiAg
ICAgbWVkaWFTZXNzaW9uKCkuc2V0QWN0aXZlKHRydWUpOwogCiAjaWYgRU5BQkxFKFdFQl9BVURJ
TykKLSAgICBhdXRvIHByb3RlY3RlZEF1ZGlvU291cmNlTm9kZSA9IG1ha2VSZWZQdHIobV9hdWRp
b1NvdXJjZU5vZGUpOworICAgIFJlZlB0ciBwcm90ZWN0ZWRBdWRpb1NvdXJjZU5vZGUgPSBtX2F1
ZGlvU291cmNlTm9kZTsKICAgICBzdGQ6Om9wdGlvbmFsPExvY2tlcjxMb2NrPj4gYXVkaW9Tb3Vy
Y2VOb2RlTG9ja2VyOwogICAgIGlmIChtX2F1ZGlvU291cmNlTm9kZSkKICAgICAgICAgYXVkaW9T
b3VyY2VOb2RlTG9ja2VyLmVtcGxhY2UobV9hdWRpb1NvdXJjZU5vZGUtPnByb2Nlc3NMb2NrKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAppbmRleCBkN2I4ZTRi
YjBjZDhhNTdhY2RmMjhjN2MwM2Y0Y2RlZjQ0ZDY4Y2MzLi43MjFkMmRjOTI2MWViOTRiYWZmYjkx
YzNhMTE5NGFmZGExOWEyZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
YmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVt
ZW50LmNwcApAQCAtNDA0LDcgKzQwNCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRCZUV4
cG9zZWQoY29uc3QgSFRNTE9iamVjdEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgLy8gd2l0aCBubyBj
aGlsZHJlbiBvdGhlciB0aGFuIHBhcmFtIGVsZW1lbnRzLCB1bmtub3duIGVsZW1lbnRzIGFuZCB3
aGl0ZXNwYWNlIGNhbiBiZSBmb3VuZAogICAgIC8vIGJ5IG5hbWUgaW4gYSBkb2N1bWVudCwgYW5k
IG90aGVyIG9iamVjdCBlbGVtZW50cyBjYW5ub3QiLgogCi0gICAgZm9yIChhdXRvIGNoaWxkID0g
bWFrZVJlZlB0cihlbGVtZW50LmZpcnN0Q2hpbGQoKSk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5u
ZXh0U2libGluZygpKSB7CisgICAgZm9yIChSZWZQdHIgY2hpbGQgPSBlbGVtZW50LmZpcnN0Q2hp
bGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYg
KHByZXZlbnRzUGFyZW50T2JqZWN0RnJvbUV4cG9zdXJlKCpjaGlsZCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtNDgwLDcgKzQ4MCw3IEBAIGJvb2wgSFRNTE9iamVjdEVs
ZW1lbnQ6OmFwcGVuZEZvcm1EYXRhKERPTUZvcm1EYXRhJiBmb3JtRGF0YSwgYm9vbCkKIAogICAg
IC8vIFVzZSBQbHVnaW5Mb2FkaW5nUG9saWN5OjpEb05vdExvYWQgaGVyZSBvciBpdCB3b3VsZCBm
aXJlIEpTIGV2ZW50cyBzeW5jaHJvbm91c2x5CiAgICAgLy8gd2hpY2ggd291bGQgbm90IGJlIHNh
ZmUgaGVyZS4KLSAgICBhdXRvIHdpZGdldCA9IG1ha2VSZWZQdHIocGx1Z2luV2lkZ2V0KFBsdWdp
bkxvYWRpbmdQb2xpY3k6OkRvTm90TG9hZCkpOworICAgIFJlZlB0ciB3aWRnZXQgPSBwbHVnaW5X
aWRnZXQoUGx1Z2luTG9hZGluZ1BvbGljeTo6RG9Ob3RMb2FkKTsKICAgICBpZiAoIWlzPFBsdWdp
blZpZXdCYXNlPih3aWRnZXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgU3RyaW5nIHZh
bHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKaW5kZXgg
OTNhNmY0Y2NmNTNlNGIzMGQzZDI5OTVlNGVhZTQzM2YzOGU3OTQxNy4uMTY1ZmE2YzU1OTU2ZmZh
N2U3YjY2N2UyZDBmYWQ5ZmZkODZlMDYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
cHRHcm91cEVsZW1lbnQuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgSFRNTE9wdEdyb3VwRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bVN0CiAKIHZvaWQgSFRNTE9wdEdyb3VwRWxlbWVudDo6cmVjYWxjU2VsZWN0T3B0aW9ucygpCiB7
Ci0gICAgaWYgKGF1dG8gc2VsZWN0RWxlbWVudCA9IG1ha2VSZWZQdHIoYW5jZXN0b3JzT2ZUeXBl
PEhUTUxTZWxlY3RFbGVtZW50PigqdGhpcykuZmlyc3QoKSkpIHsKKyAgICBpZiAoUmVmUHRyIHNl
bGVjdEVsZW1lbnQgPSBhbmNlc3RvcnNPZlR5cGU8SFRNTFNlbGVjdEVsZW1lbnQ+KCp0aGlzKS5m
aXJzdCgpKSB7CiAgICAgICAgIHNlbGVjdEVsZW1lbnQtPnNldFJlY2FsY0xpc3RJdGVtcygpOwog
ICAgICAgICBzZWxlY3RFbGVtZW50LT51cGRhdGVWYWxpZGl0eSgpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKaW5kZXggNWNlY2FlYmZkM2IwYWM5MGE0
MGJmY2RjMjZlOGIzOGMyZjk4N2M5Yy4uOTY1MWQ4NGVhMDJiNWY5N2YyNmI3NzRlMGYzNjg1ZGUy
OTg3NDc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKQEAg
LTEwMyw3ICsxMDMsNyBAQCB2b2lkIEhUTUxQbHVnSW5FbGVtZW50OjpyZXNldEluc3RhbmNlKCkK
IAogSlNDOjpCaW5kaW5nczo6SW5zdGFuY2UqIEhUTUxQbHVnSW5FbGVtZW50OjpiaW5kaW5nc0lu
c3RhbmNlKCkKIHsKLSAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihkb2N1bWVudCgpLmZyYW1l
KCkpOworICAgIFJlZlB0ciBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKTsKICAgICBpZiAoIWZy
YW1lKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTExLDcgKzExMSw3IEBAIEpTQzo6
QmluZGluZ3M6Okluc3RhbmNlKiBIVE1MUGx1Z0luRWxlbWVudDo6YmluZGluZ3NJbnN0YW5jZSgp
CiAgICAgLy8gdGhlIGNhY2hlZCBhbGxvY2F0ZWQgQmluZGluZ3M6Okluc3RhbmNlLiAgTm90IHN1
cHBvcnRpbmcgdGhpcyBlZGdlLWNhc2UgaXMgT0suCiAKICAgICBpZiAoIW1faW5zdGFuY2UpIHsK
LSAgICAgICAgaWYgKGF1dG8gd2lkZ2V0ID0gbWFrZVJlZlB0cihwbHVnaW5XaWRnZXQoKSkpCisg
ICAgICAgIGlmIChSZWZQdHIgd2lkZ2V0ID0gcGx1Z2luV2lkZ2V0KCkpCiAgICAgICAgICAgICBt
X2luc3RhbmNlID0gZnJhbWUtPnNjcmlwdCgpLmNyZWF0ZVNjcmlwdEluc3RhbmNlRm9yV2lkZ2V0
KHdpZGdldC5nZXQoKSk7CiAgICAgfQogICAgIHJldHVybiBtX2luc3RhbmNlLmdldCgpOwpAQCAt
NDM1LDggKzQzNSw4IEBAIGJvb2wgSFRNTFBsdWdJbkVsZW1lbnQ6OnNldFJlcGxhY2VtZW50KFJl
bmRlckVtYmVkZGVkT2JqZWN0OjpQbHVnaW5VbmF2YWlsYWJpbGl0CiAKIGJvb2wgSFRNTFBsdWdJ
bkVsZW1lbnQ6OmlzUmVwbGFjZW1lbnRPYnNjdXJlZCgpCiB7Ci0gICAgYXV0byB0b3BEb2N1bWVu
dCA9IG1ha2VSZWYoZG9jdW1lbnQoKS50b3BEb2N1bWVudCgpKTsKLSAgICBhdXRvIHRvcEZyYW1l
VmlldyA9IG1ha2VSZWZQdHIodG9wRG9jdW1lbnQtPnZpZXcoKSk7CisgICAgUmVmIHRvcERvY3Vt
ZW50ID0gZG9jdW1lbnQoKS50b3BEb2N1bWVudCgpOworICAgIFJlZlB0ciB0b3BGcmFtZVZpZXcg
PSB0b3BEb2N1bWVudC0+dmlldygpOwogICAgIGlmICghdG9wRnJhbWVWaWV3KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJ
bkltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQuY3BwCmluZGV4IDIwOGM4ZDJhMWNkODY5NzI0YjZkZjVkOTU5NGQ5NTliNjgwNWIyODAu
LmJlMWZlYjFiNjFiMGYwNzk0NTIyODFjZmQ1YWI4MTM5Yjk4NjVjNDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtODEsNyArODEsNyBA
QCBib29sIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmlzSW1hZ2VUeXBlKCkKICAgICBpZiAobV9z
ZXJ2aWNlVHlwZS5pc0VtcHR5KCkgJiYgcHJvdG9jb2xJcyhtX3VybCwgImRhdGEiKSkKICAgICAg
ICAgbV9zZXJ2aWNlVHlwZSA9IG1pbWVUeXBlRnJvbURhdGFVUkwobV91cmwpOwogCi0gICAgaWYg
KGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKGRvY3VtZW50KCkuZnJhbWUoKSkpCisgICAgaWYgKFJl
ZlB0ciBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIGZyYW1lLT5s
b2FkZXIoKS5jbGllbnQoKS5vYmplY3RDb250ZW50VHlwZShkb2N1bWVudCgpLmNvbXBsZXRlVVJM
KG1fdXJsKSwgbV9zZXJ2aWNlVHlwZSkgPT0gT2JqZWN0Q29udGVudFR5cGU6OkltYWdlOwogCiAg
ICAgcmV0dXJuIEltYWdlOjpzdXBwb3J0c1R5cGUobV9zZXJ2aWNlVHlwZSk7CkBAIC0xNzksNyAr
MTc5LDcgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRBdHRhY2hSZW5kZXJlcnMo
KQogCiB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OndpbGxEZXRhY2hSZW5kZXJlcnMoKQog
ewotICAgIGF1dG8gd2lkZ2V0ID0gbWFrZVJlZlB0cihwbHVnaW5XaWRnZXQoUGx1Z2luTG9hZGlu
Z1BvbGljeTo6RG9Ob3RMb2FkKSk7CisgICAgUmVmUHRyIHdpZGdldCA9IHBsdWdpbldpZGdldChQ
bHVnaW5Mb2FkaW5nUG9saWN5OjpEb05vdExvYWQpOwogICAgIGlmIChpczxQbHVnaW5WaWV3QmFz
ZT4od2lkZ2V0KSkKICAgICAgICAgZG93bmNhc3Q8UGx1Z2luVmlld0Jhc2U+KCp3aWRnZXQpLndp
bGxEZXRhY2hSZW5kZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTbG90RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxlbWVudC5j
cHAKaW5kZXggMTRlZTBmODljZTZjMmM3NDQ2ZjVhNTJiMzdkZGYxZjQ4N2E2ZmY2MC4uYTJkMTkx
Y2E5MDE4YjU4OGY1NTAyMWU3MDZmMzljYmQ3OTVkZWJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFNsb3RFbGVtZW50LmNwcApAQCAtOTMsMTQgKzkzLDE0IEBAIHZvaWQgSFRNTFNsb3RFbGVt
ZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0
b21TdHJpCiAgICAgSFRNTEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQobmFtZSwgb2xkVmFsdWUs
IG5ld1ZhbHVlLCByZWFzb24pOwogCiAgICAgaWYgKGlzSW5TaGFkb3dUcmVlKCkgJiYgbmFtZSA9
PSBuYW1lQXR0cikgewotICAgICAgICBpZiAoYXV0byBzaGFkb3dSb290ID0gbWFrZVJlZlB0cihj
b250YWluaW5nU2hhZG93Um9vdCgpKSkKKyAgICAgICAgaWYgKFJlZlB0ciBzaGFkb3dSb290ID0g
Y29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKICAgICAgICAgICAgIHNoYWRvd1Jvb3QtPnJlbmFtZVNs
b3RFbGVtZW50KCp0aGlzLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOwogICAgIH0KIH0KIAogY29uc3Qg
VmVjdG9yPFdlYWtQdHI8Tm9kZT4+KiBIVE1MU2xvdEVsZW1lbnQ6OmFzc2lnbmVkTm9kZXMoKSBj
b25zdAogewotICAgIGF1dG8gc2hhZG93Um9vdCA9IG1ha2VSZWZQdHIoY29udGFpbmluZ1NoYWRv
d1Jvb3QoKSk7CisgICAgUmVmUHRyIHNoYWRvd1Jvb3QgPSBjb250YWluaW5nU2hhZG93Um9vdCgp
OwogICAgIGlmICghc2hhZG93Um9vdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAKaW5kZXggNjFhYzJiNWFmYmEwZGYw
MGQxZmRhNGNmYTlhZTNiMTViODQ2ZGFkZi4uYjU3MzkyYjFjNGM5NzdlMGQ4NjMwNDk4MTZmYjky
ZjdkZGM1ZGUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAK
QEAgLTE4MCw3ICsxODAsNyBAQCB2b2lkIEhUTUxTb3VyY2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaQogICAgIGlmIChuYW1l
ID09IHNyY3NldEF0dHIgfHwgbmFtZSA9PSBzaXplc0F0dHIgfHwgbmFtZSA9PSBtZWRpYUF0dHIg
fHwgbmFtZSA9PSB0eXBlQXR0cikgewogICAgICAgICBpZiAobmFtZSA9PSBtZWRpYUF0dHIpCiAg
ICAgICAgICAgICBtX2NhY2hlZFBhcnNlZE1lZGlhQXR0cmlidXRlID0gc3RkOjpudWxsb3B0Owot
ICAgICAgICBhdXRvIHBhcmVudCA9IG1ha2VSZWZQdHIocGFyZW50Tm9kZSgpKTsKKyAgICAgICAg
UmVmUHRyIHBhcmVudCA9IHBhcmVudE5vZGUoKTsKICAgICAgICAgaWYgKG1fc2hvdWxkQ2FsbFNv
dXJjZXNDaGFuZ2VkKQogICAgICAgICAgICAgZG93bmNhc3Q8SFRNTFBpY3R1cmVFbGVtZW50Pigq
cGFyZW50KS5zb3VyY2VzQ2hhbmdlZCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
dHlsZUVsZW1lbnQuY3BwCmluZGV4IDE2NjMwMDFjMGYwODE1OWY3ZTEwYWMzY2E2MDMzNGJiOTBi
MGJhNjguLmFjZTBlNWE3M2M1YTNjNmY4ZDY1MzM5MjdjYTkxNjlmNGEwMTBmYzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZv
aWQgSFRNTFN0eWxlRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNo
U2V0PFVSTD4mIHVybHMpIGNvbnN0CiB7ICAgIAogICAgIEhUTUxFbGVtZW50OjphZGRTdWJyZXNv
dXJjZUF0dHJpYnV0ZVVSTHModXJscyk7CiAKLSAgICBpZiAoYXV0byBzdHlsZVNoZWV0ID0gbWFr
ZVJlZlB0cih0aGlzLT5zaGVldCgpKSkgeworICAgIGlmIChSZWZQdHIgc3R5bGVTaGVldCA9IHRo
aXMtPnNoZWV0KCkpIHsKICAgICAgICAgc3R5bGVTaGVldC0+Y29udGVudHMoKS50cmF2ZXJzZVN1
YnJlc291cmNlcyhbJl0gKGF1dG8mIHJlc291cmNlKSB7CiAgICAgICAgICAgICB1cmxzLmFkZChy
ZXNvdXJjZS51cmwoKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNwcAppbmRleCAzNjA3Yjg3NDBkY2M3YmMwODdj
YTkxMzE0MWMwN2IzYTYxNGY2MWI0Li4yMWYwZTBkZDMzMmE5MTJhYjNkNjc4NDI2ZWI4Y2Y3YzQ4
ZjFiNDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHAK
QEAgLTg4LDcgKzg4LDcgQEAgaW50IEhUTUxUYWJsZVJvd0VsZW1lbnQ6OnJvd0luZGV4KCkgY29u
c3QKIAogc3RhdGljIGlubGluZSBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGZpbmRSb3dzKGNvbnN0
IEhUTUxUYWJsZVJvd0VsZW1lbnQmIHJvdykKIHsKLSAgICBhdXRvIHBhcmVudCA9IG1ha2VSZWZQ
dHIocm93LnBhcmVudE5vZGUoKSk7CisgICAgUmVmUHRyIHBhcmVudCA9IHJvdy5wYXJlbnROb2Rl
KCk7CiAgICAgaWYgKGlzPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PihwYXJlbnQpKQogICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+KCpwYXJlbnQpLnJvd3Mo
KTsKICAgICBpZiAoaXM8SFRNTFRhYmxlRWxlbWVudD4ocGFyZW50KSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCmluZGV4IDFiZjE5YWVjZDcxYzVjNWVhYzY4ZmZhYzZk
MzJiOTg3YTExNTBlMTQuLjBmOWY0M2IwNDhmNGVkNDExMDkyMDFiZjM1M2Q1OGVhYTQ1MjMzNzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcApAQCAtMzA5LDcgKzMw
OSw3IEBAIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRy
YWNrJikKIAogUmVmUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IEhUTUxUcmFja0VsZW1lbnQ6Om1lZGlh
RWxlbWVudCgpIGNvbnN0CiB7Ci0gICAgYXV0byBwYXJlbnQgPSBtYWtlUmVmUHRyKHBhcmVudEVs
ZW1lbnQoKSk7CisgICAgUmVmUHRyIHBhcmVudCA9IHBhcmVudEVsZW1lbnQoKTsKICAgICBpZiAo
IWlzPEhUTUxNZWRpYUVsZW1lbnQ+KHBhcmVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIHJldHVybiBkb3duY2FzdDxIVE1MTWVkaWFFbGVtZW50PihwYXJlbnQuZ2V0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rSWNvbkNvbGxlY3Rvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0xpbmtJY29uQ29sbGVjdG9yLmNwcAppbmRleCA5NzIzYWI1ZTZlNmUx
MTZjNmIxNGQwYTM4YzgwMjZlODQ5NzM0OGEyLi41OTk4ZmFhY2I5ZjU5NWQ5MmJhMjAwNTJlNjBk
NzNlZmE4MDY1YmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xpbmtJY29uQ29s
bGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xpbmtJY29uQ29sbGVjdG9yLmNw
cApAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgaW50IGNvbXBhcmVJY29ucyhjb25zdCBMaW5rSWNv
biYgYSwgY29uc3QgTGlua0ljb24mIGIpCiAKIGF1dG8gTGlua0ljb25Db2xsZWN0b3I6Omljb25z
T2ZUeXBlcyhPcHRpb25TZXQ8TGlua0ljb25UeXBlPiBpY29uVHlwZXMpIC0+IFZlY3RvcjxMaW5r
SWNvbj4KIHsKLSAgICBhdXRvIGhlYWQgPSBtYWtlUmVmUHRyKG1fZG9jdW1lbnQuaGVhZCgpKTsK
KyAgICBSZWZQdHIgaGVhZCA9IG1fZG9jdW1lbnQuaGVhZCgpOwogICAgIGlmICghaGVhZCkKICAg
ICAgICAgcmV0dXJuIHsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKaW5k
ZXggZTllOTAzYWZlYjdlNDg3Y2RiMTI2ZWEyNzI5NzdjNmQ2NmJmZDQzZi4uNjZjNDVmMDBmNThj
ZTg4M2JlMzE0Y2ZmM2NkZTJjYjdlZjZmYzVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9j
dW1lbnQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBNZWRpYURvY3VtZW50UGFyc2VyOjpj
cmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpCiAgICAgdmlkZW9FbGVtZW50LT5zZXRBdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKGNvbnRyb2xzQXR0ciwgZW1wdHlBdG9tKCkpOwogICAgIHZp
ZGVvRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhdXRvcGxheUF0
dHIsIGVtcHR5QXRvbSgpKTsKICAgICB2aWRlb0VsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oc3JjQXR0ciwgZG9jdW1lbnQudXJsKCkuc3RyaW5nKCkpOwotICAgIGlm
IChhdXRvIGxvYWRlciA9IG1ha2VSZWZQdHIoZG9jdW1lbnQubG9hZGVyKCkpKQorICAgIGlmIChS
ZWZQdHIgbG9hZGVyID0gZG9jdW1lbnQubG9hZGVyKCkpCiAgICAgICAgIHZpZGVvRWxlbWVudC0+
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0eXBlQXR0ciwgbG9hZGVyLT5yZXNw
b25zZU1JTUVUeXBlKCkpOwogCiAjaWYgIUVOQUJMRShNT0RFUk5fTUVESUFfQ09OVFJPTFMpCkBA
IC0xODIsNyArMTgyLDcgQEAgdm9pZCBNZWRpYURvY3VtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVy
KEV2ZW50JiBldmVudCkKICAgICAgICAgcmV0dXJuOwogICAgIGF1dG8mIHRhcmdldE5vZGUgPSBk
b3duY2FzdDxOb2RlPigqZXZlbnQudGFyZ2V0KCkpOwogCi0gICAgaWYgKGF1dG8gdmlkZW8gPSBt
YWtlUmVmUHRyKGFuY2VzdG9yVmlkZW9FbGVtZW50KCZ0YXJnZXROb2RlKSkpIHsKKyAgICBpZiAo
UmVmUHRyIHZpZGVvID0gYW5jZXN0b3JWaWRlb0VsZW1lbnQoJnRhcmdldE5vZGUpKSB7CiAgICAg
ICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKICAgICAg
ICAgICAgIGlmICghdmlkZW8tPmNhblBsYXkoKSkgewogICAgICAgICAgICAgICAgIHZpZGVvLT5w
YXVzZSgpOwpAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgTWVkaWFEb2N1bWVudDo6ZGVmYXVsdEV2
ZW50SGFuZGxlcihFdmVudCYgZXZlbnQpCiAgICAgYXV0byYgdGFyZ2V0Q29udGFpbmVyID0gZG93
bmNhc3Q8Q29udGFpbmVyTm9kZT4odGFyZ2V0Tm9kZSk7CiAKICAgICBpZiAoZXZlbnQudHlwZSgp
ID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQgJiYgaXM8S2V5Ym9hcmRFdmVudD4oZXZlbnQp
KSB7Ci0gICAgICAgIGF1dG8gdmlkZW8gPSBtYWtlUmVmUHRyKGRlc2NlbmRhbnRWaWRlb0VsZW1l
bnQodGFyZ2V0Q29udGFpbmVyKSk7CisgICAgICAgIFJlZlB0ciB2aWRlbyA9IGRlc2NlbmRhbnRW
aWRlb0VsZW1lbnQodGFyZ2V0Q29udGFpbmVyKTsKICAgICAgICAgaWYgKCF2aWRlbykKICAgICAg
ICAgICAgIHJldHVybjsKIApAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgTWVkaWFEb2N1bWVudDo6
ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCYgZXZlbnQpCiAKIHZvaWQgTWVkaWFEb2N1bWVudDo6
cmVwbGFjZU1lZGlhRWxlbWVudFRpbWVyRmlyZWQoKQogewotICAgIGF1dG8gaHRtbEJvZHkgPSBt
YWtlUmVmUHRyKGJvZHlPckZyYW1lc2V0KCkpOworICAgIFJlZlB0ciBodG1sQm9keSA9IGJvZHlP
ckZyYW1lc2V0KCk7CiAgICAgaWYgKCFodG1sQm9keSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0y
MzAsNyArMjMwLDcgQEAgdm9pZCBNZWRpYURvY3VtZW50OjpyZXBsYWNlTWVkaWFFbGVtZW50VGlt
ZXJGaXJlZCgpCiAgICAgaHRtbEJvZHktPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24obWFyZ2lud2lkdGhBdHRyLCBBdG9tU3RyaW5nKCIwIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKICAgICBodG1sQm9keS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihtYXJnaW5oZWlnaHRBdHRyLCBBdG9tU3RyaW5nKCIwIiwgQXRvbVN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKIAotICAgIGlmIChhdXRvIHZpZGVvRWxlbWVudCA9IG1ha2VS
ZWZQdHIoZGVzY2VuZGFudFZpZGVvRWxlbWVudCgqaHRtbEJvZHkpKSkgeworICAgIGlmIChSZWZQ
dHIgdmlkZW9FbGVtZW50ID0gZGVzY2VuZGFudFZpZGVvRWxlbWVudCgqaHRtbEJvZHkpKSB7CiAg
ICAgICAgIGF1dG8gZW1iZWRFbGVtZW50ID0gSFRNTEVtYmVkRWxlbWVudDo6Y3JlYXRlKCp0aGlz
KTsKIAogICAgICAgICBlbWJlZEVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24od2lkdGhBdHRyLCBBdG9tU3RyaW5nKCIxMDAlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIE1lZGlhRG9jdW1lbnQ6OnJl
cGxhY2VNZWRpYUVsZW1lbnRUaW1lckZpcmVkKCkKICAgICAgICAgZW1iZWRFbGVtZW50LT5zZXRB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHNyY0F0dHIsIHVybCgpLnN0cmluZygpKTsK
IAogICAgICAgICBBU1NFUlQobG9hZGVyKCkpOwotICAgICAgICBpZiAoYXV0byBsb2FkZXIgPSBt
YWtlUmVmUHRyKHRoaXMtPmxvYWRlcigpKSkKKyAgICAgICAgaWYgKFJlZlB0ciBsb2FkZXIgPSB0
aGlzLT5sb2FkZXIoKSkKICAgICAgICAgICAgIGVtYmVkRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbih0eXBlQXR0ciwgbG9hZGVyLT53cml0ZXIoKS5taW1lVHlwZSgp
KTsKIAogICAgICAgICB2aWRlb0VsZW1lbnQtPnBhcmVudE5vZGUoKS0+cmVwbGFjZUNoaWxkKGVt
YmVkRWxlbWVudCwgKnZpZGVvRWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVs
ZW1lbnRTZXNzaW9uLmNwcAppbmRleCA5ZmUwMjRmMDRiMTUyMDE4ZGE5N2ZmMWE4ZTIwNWNmMDc5
NzM5MzllLi5kZjFkNzc1NDI2MjU3YWUxY2FmNDY4N2YwYjM2ZTVjNTAyNmEzY2VkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKQEAgLTEwMDksNyArMTAw
OSw3IEBAIHN0YXRpYyBib29sIGlzRWxlbWVudFJlY3RNb3N0bHlJbk1haW5GcmFtZShjb25zdCBI
VE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KQogICAgIGlmICghZWxlbWVudC5yZW5kZXJlcigpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIGRvY3VtZW50RnJhbWUgPSBtYWtlUmVm
UHRyKGVsZW1lbnQuZG9jdW1lbnQoKS5mcmFtZSgpKTsKKyAgICBSZWZQdHIgZG9jdW1lbnRGcmFt
ZSA9IGVsZW1lbnQuZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghZG9jdW1lbnRGcmFtZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMDM1LDcgKzEwMzUsNyBAQCBzdGF0aWMgYm9v
bCBpc0VsZW1lbnRMYXJnZVJlbGF0aXZlVG9NYWluRnJhbWUoY29uc3QgSFRNTE1lZGlhRWxlbWVu
dCYgZWxlbWVudCkKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBhdXRvIGRvY3VtZW50RnJhbWUgPSBtYWtlUmVmUHRyKGVsZW1lbnQuZG9jdW1lbnQoKS5m
cmFtZSgpKTsKKyAgICBSZWZQdHIgZG9jdW1lbnRGcmFtZSA9IGVsZW1lbnQuZG9jdW1lbnQoKS5m
cmFtZSgpOwogICAgIGlmICghZG9jdW1lbnRGcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCmluZGV4IGUzYTNkYTZmZjI0NzE5
YmZjOTc1MmRmZTU1M2ExNjM3NjRkZTZhNzYuLjFiOTc4OTc2Yjc3NzkxYzQ1OTVlZjczMmExZWRi
ZmFiMGY0NmFhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCkBAIC0x
MDEsNyArMTAxLDcgQEAgdm9pZCBQbHVnaW5Eb2N1bWVudFBhcnNlcjo6Y3JlYXRlRG9jdW1lbnRT
dHJ1Y3R1cmUoKQogICAgIGVtYmVkRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihzcmNBdHRyLCBkb2N1bWVudC51cmwoKS5zdHJpbmcoKSk7CiAgICAgCiAgICAgQVNT
RVJUKGRvY3VtZW50LmxvYWRlcigpKTsKLSAgICBpZiAoYXV0byBsb2FkZXIgPSBtYWtlUmVmUHRy
KGRvY3VtZW50LmxvYWRlcigpKSkKKyAgICBpZiAoUmVmUHRyIGxvYWRlciA9IGRvY3VtZW50Lmxv
YWRlcigpKQogICAgICAgICBtX2VtYmVkRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbih0eXBlQXR0ciwgbG9hZGVyLT53cml0ZXIoKS5taW1lVHlwZSgpKTsKIAogICAg
IGRvY3VtZW50LnNldFBsdWdpbkVsZW1lbnQoKm1fZW1iZWRFbGVtZW50KTsKQEAgLTExNyw3ICsx
MTcsNyBAQCB2b2lkIFBsdWdpbkRvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyhEb2N1bWVudFdy
aXRlciYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpCiAKICAgICBjcmVhdGVEb2N1bWVudFN0cnVj
dHVyZSgpOwogCi0gICAgYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIoZG9jdW1lbnQoKS0+ZnJhbWUo
KSk7CisgICAgUmVmUHRyIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKTsKICAgICBpZiAoIWZy
YW1lKQogICAgICAgICByZXR1cm47CiAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFBsdWdpbkRv
Y3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QpCiAgICAgZnJhbWUtPnZpZXcoKS0+Zmx1c2hBbnlQZW5kaW5nUG9zdExheW91dFRh
c2tzKCk7CiAKICAgICBpZiAoYXV0byByZW5kZXJlciA9IG1fZW1iZWRFbGVtZW50LT5yZW5kZXJX
aWRnZXQoKSkgewotICAgICAgICBpZiAoYXV0byB3aWRnZXQgPSBtYWtlUmVmUHRyKHJlbmRlcmVy
LT53aWRnZXQoKSkpIHsKKyAgICAgICAgaWYgKFJlZlB0ciB3aWRnZXQgPSByZW5kZXJlci0+d2lk
Z2V0KCkpIHsKICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5yZWRpcmVjdERh
dGFUb1BsdWdpbigqd2lkZ2V0KTsKIAogICAgICAgICAgICAgLy8gSW4gYSBwbHVnaW4gZG9jdW1l
bnQsIHRoZSBtYWluIHJlc291cmNlIGlzIHRoZSBwbHVnaW4uIElmIHdlIGhhdmUgYSBudWxsIHdp
ZGdldCwgdGhhdCBtZWFucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TdWJtaXRJ
bnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TdWJtaXRJbnB1dFR5cGUuY3BwCmlu
ZGV4IDgxMjJkNTRhMmZiNGEwNTE5ZTk4ZDI4YTQ1MzU0NDdlMzk0MWYxZDkuLjk4ZjM1ZmI0YmY2
Yzg5OGFhYTUxYTQyNGIzNTFmZjkwMzkxODcwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvU3VibWl0SW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1N1Ym1p
dElucHV0VHlwZS5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBTdWJtaXRJbnB1dFR5cGU6Omhh
bmRsZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQmIGV2ZW50KQogICAgIHByb3RlY3RlZEVsZW1lbnQt
PmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKICAg
ICBwcm90ZWN0ZWRFbGVtZW50LT5zZXRBY3RpdmF0ZWRTdWJtaXQodHJ1ZSk7Ci0gICAgaWYgKGF1
dG8gY3VycmVudEZvcm0gPSBtYWtlUmVmUHRyKHByb3RlY3RlZEVsZW1lbnQtPmZvcm0oKSkpCisg
ICAgaWYgKFJlZlB0ciBjdXJyZW50Rm9ybSA9IHByb3RlY3RlZEVsZW1lbnQtPmZvcm0oKSkKICAg
ICAgICAgY3VycmVudEZvcm0tPnN1Ym1pdElmUG9zc2libGUoJmV2ZW50LCBlbGVtZW50KCkpOyAv
LyBFdmVudCBoYW5kbGVycyBjYW4gcnVuLgogICAgIHByb3RlY3RlZEVsZW1lbnQtPnNldEFjdGl2
YXRlZFN1Ym1pdChmYWxzZSk7CiAgICAgZXZlbnQuc2V0RGVmYXVsdEhhbmRsZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5j
cHAKaW5kZXggNmMyMzcxN2YwNGVmNTk0YWYzZmVlZTRiOTM1YWE3M2Q1ZDcwOWQ3My4uYjc5ZjZh
MjA4ZDNjYjU4MWY5YWEyZDVjMjViNmJhZWEyMjNmNTY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTExNiw3
ICsxMTYsNyBAQCBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRPcmlnaW4o
Y29uc3QgSFRNTEltYWdlRWxlbWVudCogZWxlbWVudCkKICAgICBpZiAoIWNhY2hlZEltYWdlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIGltYWdlID0gbWFrZVJlZlB0cihjYWNo
ZWRJbWFnZS0+aW1hZ2UoKSk7CisgICAgUmVmUHRyIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdl
KCk7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAKaW5kZXggOTBhMGVjNTdkZDBkNWVlNWZk
YjQ3MGJhOGZlODc2MTgxNzkwYzUwMy4uOGQ3YTZhYTIxNjBjMGVlZmY1YmQ0MzI4ODQ0ZmEyM2E3
YmFjMWZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcApA
QCAtMTAyLDEyICsxMDIsMTIgQEAgQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKGNvbnN0IFNSR0JB
PGZsb2F0PiYgY29sb3JDb21wb25lbnRzKQogfQogCiBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUo
Q2FudmFzR3JhZGllbnQmIGdyYWRpZW50KQotICAgIDogbV9zdHlsZShtYWtlUmVmUHRyKGdyYWRp
ZW50KSkKKyAgICA6IG1fc3R5bGUoJmdyYWRpZW50KQogewogfQogCiBDYW52YXNTdHlsZTo6Q2Fu
dmFzU3R5bGUoQ2FudmFzUGF0dGVybiYgcGF0dGVybikKLSAgICA6IG1fc3R5bGUobWFrZVJlZlB0
cihwYXR0ZXJuKSkKKyAgICA6IG1fc3R5bGUoJnBhdHRlcm4pCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5k
ZXggM2JkMGMxODljOWY3NzczMjZjNTY5MWE3OTA4MjVkNjZkMDg3ZWQ4MC4uNWEzODc5NTdjMjYw
NjYyMmRiNDZmNGJmNjA4OGJlMzMxMDYxYWJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTE5NzYsNyArMTk3
Niw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmVnaW5RdWVyeShHQ0dMZW51bSB0
YXJnZXQsIFdlYkdMUXVlcnkmIHF1ZXJ5KQogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJiZWdpblF1ZXJ5IiwgInF1ZXJ5IG9i
amVjdCBvZiB0YXJnZXQgaXMgYWxyZWFkeSBhY3RpdmUiKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBtX2FjdGl2ZVF1ZXJpZXNbKmFjdGl2ZVF1ZXJ5S2V5XSA9IG1ha2VSZWZQdHIoJnF1
ZXJ5KTsKKyAgICBtX2FjdGl2ZVF1ZXJpZXNbKmFjdGl2ZVF1ZXJ5S2V5XSA9ICZxdWVyeTsKICAg
ICBtX2NvbnRleHQtPmJlZ2luUXVlcnkodGFyZ2V0LCBxdWVyeS5vYmplY3QoKSk7CiAgICAgcXVl
cnkuc2V0VGFyZ2V0KHRhcmdldCk7CiB9CkBAIC0yNTIyLDcgKzI1MjIsNyBAQCBXZWJHTEFueSBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJbmRleGVkUGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHVpbnQgaQogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0R0w6OklOVkFMSURfVkFMVUUsICJnZXRJbmRleGVkUGFyYW1ldGVyIiwgImluZGV4IG91dCBv
ZiByYW5nZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIG1ha2VSZWZQdHIoYnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIFJlZlB0ciB7IGJ1
ZmZlciB9OwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1fRkVF
REJBQ0tfQlVGRkVSX1NJWkU6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VFJBTlNGT1JN
X0ZFRURCQUNLX0JVRkZFUl9TVEFSVDoKQEAgLTI4NjcsMTQgKzI4NjcsMTQgQEAgV2ViR0xBbnkg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
KEdDR0xlbnVtIHRhcmcKIAogICAgIFJlZlB0cjxXZWJHTFNoYXJlZE9iamVjdD4gYXR0YWNobWVu
dE9iamVjdDsKICAgICBpZiAoYXR0YWNobWVudCA9PSBHcmFwaGljc0NvbnRleHRHTDo6REVQVEhf
U1RFTkNJTF9BVFRBQ0hNRU5UKSB7Ci0gICAgICAgIGF0dGFjaG1lbnRPYmplY3QgPSBtYWtlUmVm
UHRyKHRhcmdldEZyYW1lYnVmZmVyLT5nZXRBdHRhY2htZW50T2JqZWN0KEdyYXBoaWNzQ29udGV4
dEdMOjpERVBUSF9BVFRBQ0hNRU5UKSk7Ci0gICAgICAgIGF1dG8gc3RlbmNpbEF0dGFjaG1lbnQg
PSBtYWtlUmVmUHRyKHRhcmdldEZyYW1lYnVmZmVyLT5nZXRBdHRhY2htZW50T2JqZWN0KEdyYXBo
aWNzQ29udGV4dEdMOjpTVEVOQ0lMX0FUVEFDSE1FTlQpKTsKKyAgICAgICAgYXR0YWNobWVudE9i
amVjdCA9IHRhcmdldEZyYW1lYnVmZmVyLT5nZXRBdHRhY2htZW50T2JqZWN0KEdyYXBoaWNzQ29u
dGV4dEdMOjpERVBUSF9BVFRBQ0hNRU5UKTsKKyAgICAgICAgUmVmUHRyIHN0ZW5jaWxBdHRhY2ht
ZW50ID0gdGFyZ2V0RnJhbWVidWZmZXItPmdldEF0dGFjaG1lbnRPYmplY3QoR3JhcGhpY3NDb250
ZXh0R0w6OlNURU5DSUxfQVRUQUNITUVOVCk7CiAgICAgICAgIGlmIChhdHRhY2htZW50T2JqZWN0
ICE9IHN0ZW5jaWxBdHRhY2htZW50KSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgImRpZmZl
cmVudCBvYmplY3RzIGJvdW5kIHRvIERFUFRIX0FUVEFDSE1FTlQgYW5kIFNURU5DSUxfQVRUQUNI
TUVOVCIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICB9IGVs
c2UKLSAgICAgICAgYXR0YWNobWVudE9iamVjdCA9IG1ha2VSZWZQdHIodGFyZ2V0RnJhbWVidWZm
ZXItPmdldEF0dGFjaG1lbnRPYmplY3QoYXR0YWNobWVudCkpOworICAgICAgICBhdHRhY2htZW50
T2JqZWN0ID0gdGFyZ2V0RnJhbWVidWZmZXItPmdldEF0dGFjaG1lbnRPYmplY3QoYXR0YWNobWVu
dCk7CiAKICAgICBpZiAoIWF0dGFjaG1lbnRPYmplY3QpIHsKICAgICAgICAgaWYgKHBuYW1lID09
IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFKQpA
QCAtMjg5Miw4ICsyODkyLDggQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmcKICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSQlVGRkVS
KTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09C
SkVDVF9OQU1FOgogICAgICAgICBpZiAoYXR0YWNobWVudE9iamVjdC0+aXNUZXh0dXJlKCkpCi0g
ICAgICAgICAgICByZXR1cm4gbWFrZVJlZlB0cihyZWludGVycHJldF9jYXN0PFdlYkdMVGV4dHVy
ZSY+KCphdHRhY2htZW50T2JqZWN0KSk7Ci0gICAgICAgIHJldHVybiBtYWtlUmVmUHRyKHJlaW50
ZXJwcmV0X2Nhc3Q8V2ViR0xSZW5kZXJidWZmZXImPigqYXR0YWNobWVudE9iamVjdCkpOworICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8V2ViR0xUZXh0dXJlPihhdHRhY2ht
ZW50T2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8V2ViR0xSZW5k
ZXJidWZmZXI+KGF0dGFjaG1lbnRPYmplY3QpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFOgogICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MQVlFUjoK
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRV
UkVfTEVWRUw6CkBAIC0zMzg5LDcgKzMzODksNyBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpnZXRQYXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUpCiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6VkVSVEVYX0FSUkFZX0JJTkRJTkc6CiAgICAgICAgIGlmIChtX2JvdW5kVmVydGV4
QXJyYXlPYmplY3QtPmlzRGVmYXVsdE9iamVjdCgpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgICAgIHJldHVybiBtYWtlUmVmUHRyKHN0YXRpY19jYXN0PFdlYkdMVmVydGV4QXJy
YXlPYmplY3QmPigqbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0KSk7CisgICAgICAgIHJldHVybiBz
dGF0aWNfcG9pbnRlcl9jYXN0PFdlYkdMVmVydGV4QXJyYXlPYmplY3Q+KG1fYm91bmRWZXJ0ZXhB
cnJheU9iamVjdCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmdldFBhcmFtZXRlcihwbmFtZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNzAz
MThkY2RkNDM0YmM4OTBlMzg2Y2YzNjg4ZjliZjcyNzI3OGM4ZC4uZmE1N2JiNTQwMjNlM2ZmOTk2
MzRiM2E5OTkxOGUwOTNjYWEyZDRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0zMTIsNyArMzEyLDcgQEAgV2Vi
R0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXIoR0NHTGVudW0gdGFyZ2UKICAgICB9CiAjZW5kaWYKIAotICAgIGF1dG8gb2JqZWN0ID0g
bWFrZVJlZlB0cihtX2ZyYW1lYnVmZmVyQmluZGluZy0+Z2V0QXR0YWNobWVudE9iamVjdChhdHRh
Y2htZW50KSk7CisgICAgUmVmUHRyIG9iamVjdCA9IG1fZnJhbWVidWZmZXJCaW5kaW5nLT5nZXRB
dHRhY2htZW50T2JqZWN0KGF0dGFjaG1lbnQpOwogICAgIGlmICghb2JqZWN0KSB7CiAgICAgICAg
IGlmIChwbmFtZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9P
QkpFQ1RfVFlQRSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR3Jh
cGhpY3NDb250ZXh0R0w6Ok5PTkUpOwpAQCAtMzI3LDcgKzMyNyw3IEBAIFdlYkdMQW55IFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKEdDR0xl
bnVtIHRhcmdlCiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FU
VEFDSE1FTlRfT0JKRUNUX1RZUEU6CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFKTsKICAgICAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRToKLSAgICAgICAg
ICAgIHJldHVybiBtYWtlUmVmUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8V2ViR0xUZXh0dXJlJj4oKm9i
amVjdCkpOworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8V2ViR0xUZXh0
dXJlPihvYmplY3QpOwogICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZF
Ul9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUw6CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFOgogICAgICAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElO
R19FWFQ6CkBAIC0zNDIsNyArMzQyLDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2UKICAgICAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1Rf
VFlQRToKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR3JhcGhpY3ND
b250ZXh0R0w6OlJFTkRFUkJVRkZFUik7CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUU6Ci0gICAgICAgICAgICByZXR1cm4g
bWFrZVJlZlB0cihyZWludGVycHJldF9jYXN0PFdlYkdMUmVuZGVyYnVmZmVyJj4oKm9iamVjdCkp
OworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8V2ViR0xSZW5kZXJidWZm
ZXI+KG9iamVjdCk7CiAgICAgICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpGUkFNRUJVRkZFUl9BVFRB
Q0hNRU5UX0NPTE9SX0VOQ09ESU5HX0VYVDogewogICAgICAgICAgICAgaWYgKCFtX2V4dHNSR0Ip
IHsKICAgICAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6
SU5WQUxJRF9FTlVNLCAiZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyIiwgImludmFs
aWQgcGFyYW1ldGVyIG5hbWUgZm9yIHJlbmRlcmJ1ZmZlciBhdHRhY2htZW50Iik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwCmluZGV4IDNhMTY3NmQ3ZDZhNTYwYWZiNTc0M2EzY2RkMThmZTZjYmEzNWFlMDEuLjE0
MGU1YjU5MzJmNmYyNTA1YTE1NWNiYmVmODQ4YTA0MDM1YzY5MDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3Bw
CkBAIC0zMTY3LDcgKzMxNjcsNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRQYXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUpCiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6RElUSEVSOgogICAgICAgICByZXR1cm4gZ2V0Qm9vbGVhblBhcmFtZXRlcihwbmFtZSk7CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORzoK
LSAgICAgICAgcmV0dXJuIG1ha2VSZWZQdHIobV9ib3VuZFZlcnRleEFycmF5T2JqZWN0LT5nZXRF
bGVtZW50QXJyYXlCdWZmZXIoKSk7CisgICAgICAgIHJldHVybiBSZWZQdHIgeyBtX2JvdW5kVmVy
dGV4QXJyYXlPYmplY3QtPmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpIH07CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQklORElORzoKICAgICAgICAgcmV0dXJuIG1fZnJh
bWVidWZmZXJCaW5kaW5nOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZST05UX0ZBQ0U6
CkBAIC0zMzMyLDcgKzMzMzIsNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRQYXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUpCiAgICAgICAgIGlmIChtX29lc1ZlcnRleEFy
cmF5T2JqZWN0KSB7CiAgICAgICAgICAgICBpZiAobV9ib3VuZFZlcnRleEFycmF5T2JqZWN0LT5p
c0RlZmF1bHRPYmplY3QoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAg
ICAgICAgIHJldHVybiBtYWtlUmVmUHRyKHN0YXRpY19jYXN0PFdlYkdMVmVydGV4QXJyYXlPYmpl
Y3RPRVMmPigqbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0KSk7CisgICAgICAgICAgICByZXR1cm4g
c3RhdGljX3BvaW50ZXJfY2FzdDxXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPihtX2JvdW5kVmVy
dGV4QXJyYXlPYmplY3QpOwogICAgICAgICB9CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRQYXJhbWV0ZXIiLCAiaW52YWxpZCBw
YXJhbWV0ZXIgbmFtZSwgT0VTX3ZlcnRleF9hcnJheV9vYmplY3Qgbm90IGVuYWJsZWQiKTsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKaW5kZXggOGYxZmIxYWVmYzk4MjRlY2I2ZTVlZGE3
MmE1MTVmMmIyODBmYTJhOS4uMmM5YzdmZDgzMmEwN2I2OWFkZjgzNDkxM2QzYjVkZjE4NDRiZjg5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlv
blNpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rp
b25TaXRlLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBleGVjdXRl
UmVwYXJlbnRUYXNrKEhUTUxDb25zdHJ1Y3Rpb25TaXRlVGFzayYgdGFzaykKICAgICBBU1NFUlQo
dGFzay5vcGVyYXRpb24gPT0gSFRNTENvbnN0cnVjdGlvblNpdGVUYXNrOjpSZXBhcmVudCk7CiAg
ICAgQVNTRVJUKCF0YXNrLm5leHRDaGlsZCk7CiAKLSAgICBpZiAoYXV0byBwYXJlbnQgPSBtYWtl
UmVmUHRyKHRhc2suY2hpbGQtPnBhcmVudE5vZGUoKSkpCisgICAgaWYgKFJlZlB0ciBwYXJlbnQg
PSB0YXNrLmNoaWxkLT5wYXJlbnROb2RlKCkpCiAgICAgICAgIHBhcmVudC0+cGFyc2VyUmVtb3Zl
Q2hpbGQoKnRhc2suY2hpbGQpOwogCiAgICAgaWYgKHRhc2suY2hpbGQtPnBhcmVudE5vZGUoKSkK
QEAgLTE2MSw3ICsxNjEsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZXhlY3V0ZVRha2VBbGxDaGls
ZHJlbkFuZFJlcGFyZW50VGFzayhIVE1MQ29uc3RydWN0aW9uU2l0ZVRhcwogICAgIEFTU0VSVCh0
YXNrLm9wZXJhdGlvbiA9PSBIVE1MQ29uc3RydWN0aW9uU2l0ZVRhc2s6OlRha2VBbGxDaGlsZHJl
bkFuZFJlcGFyZW50KTsKICAgICBBU1NFUlQoIXRhc2submV4dENoaWxkKTsKIAotICAgIGF1dG8g
ZnVydGhlc3RCbG9jayA9IG1ha2VSZWZQdHIodGFzay5vbGRQYXJlbnQoKSk7CisgICAgUmVmUHRy
IGZ1cnRoZXN0QmxvY2sgPSB0YXNrLm9sZFBhcmVudCgpOwogICAgIHRhc2sucGFyZW50LT50YWtl
QWxsQ2hpbGRyZW5Gcm9tKGZ1cnRoZXN0QmxvY2suZ2V0KCkpOwogCiAgICAgUkVMRUFTRV9BU1NF
UlQoIXRhc2sucGFyZW50LT5wYXJlbnROb2RlKCkpOwpAQCAtMjcxLDcgKzI3MSw3IEBAIHZvaWQg
SFRNTENvbnN0cnVjdGlvblNpdGU6OmRpc3BhdGNoRG9jdW1lbnRFbGVtZW50QXZhaWxhYmxlSWZO
ZWVkZWQoKQogICAgIGlmIChtX2lzUGFyc2luZ0ZyYWdtZW50KQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIobV9kb2N1bWVudC5mcmFtZSgpKSkKKyAg
ICBpZiAoUmVmUHRyIGZyYW1lID0gbV9kb2N1bWVudC5mcmFtZSgpKQogICAgICAgICBmcmFtZS0+
aW5qZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50U3RhcnQp
OwogfQogCkBAIC03NzksNyArNzc5LDcgQEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6Zmlu
ZEZvc3RlclNpdGUoSFRNTENvbnN0cnVjdGlvblNpdGVUYXNrJiB0YXNrKQogCiAgICAgaWYgKGF1
dG8qIGxhc3RUYWJsZUVsZW1lbnRSZWNvcmQgPSBtX29wZW5FbGVtZW50cy50b3Btb3N0KHRhYmxl
VGFnLT5sb2NhbE5hbWUoKSkpIHsKICAgICAgICAgYXV0byYgbGFzdFRhYmxlRWxlbWVudCA9IGxh
c3RUYWJsZUVsZW1lbnRSZWNvcmQtPmVsZW1lbnQoKTsKLSAgICAgICAgYXV0byBwYXJlbnQgPSBt
YWtlUmVmUHRyKGxhc3RUYWJsZUVsZW1lbnQucGFyZW50Tm9kZSgpKTsKKyAgICAgICAgUmVmUHRy
IHBhcmVudCA9IGxhc3RUYWJsZUVsZW1lbnQucGFyZW50Tm9kZSgpOwogICAgICAgICAvLyBXaGVu
IHBhcnNpbmcgSFRNTCBmcmFnbWVudHMsIHdlIHNraXAgc3RlcCA0LjIgKCJMZXQgcm9vdCBiZSBh
IG5ldyBodG1sIGVsZW1lbnQgd2l0aCBubyBhdHRyaWJ1dGVzIikgZm9yIGVmZmljaWVuY3ksCiAg
ICAgICAgIC8vIGFuZCBpbnN0ZWFkIHVzZSB0aGUgRG9jdW1lbnRGcmFnbWVudCBhcyBhIHJvb3Qg
bm9kZS4gU28gd2UgbXVzdCB0cmVhdCB0aGUgcm9vdCBub2RlIChEb2N1bWVudEZyYWdtZW50KSBh
cyBpZiBpdCBpcyBhIGh0bWwgZWxlbWVudCBoZXJlLgogICAgICAgICBib29sIHBhcmVudENhbkJl
Rm9zdGVyUGFyZW50ID0gcGFyZW50ICYmIChwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSB8fCAobV9p
c1BhcnNpbmdGcmFnbWVudCAmJiBwYXJlbnQgPT0gJm1fb3BlbkVsZW1lbnRzLnJvb3ROb2RlKCkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nh
bm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIu
Y3BwCmluZGV4IDk0ODE5ZWNlZTllNzczZTRjNTg1ZDk3NjQ3ZDQ1OGM2MDg1NGUyZWYuLmZhOTlh
NjBkNmEyNzhkZDlkODJmZmJlOWVlMjhhNzcxMzZkMzIwMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcApAQCAtMjM2LDcgKzIzNiw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAobWF0Y2goYXR0cmlidXRlTmFtZSwgbWVkaWFB
dHRyKSAmJiBtX21lZGlhQXR0cmlidXRlLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICAgICAgbV9t
ZWRpYUF0dHJpYnV0ZSA9IGF0dHJpYnV0ZVZhbHVlOwogICAgICAgICAgICAgICAgIGF1dG8gbWVk
aWFTZXQgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUoYXR0cmlidXRlVmFsdWUsIE1lZGlhUXVlcnlQ
YXJzZXJDb250ZXh0KG1fZG9jdW1lbnQpKTsKLSAgICAgICAgICAgICAgICBhdXRvIGRvY3VtZW50
RWxlbWVudCA9IG1ha2VSZWZQdHIobV9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQoKSk7CisgICAg
ICAgICAgICAgICAgUmVmUHRyIGRvY3VtZW50RWxlbWVudCA9IG1fZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50KCk7CiAgICAgICAgICAgICAgICAgTE9HKE1lZGlhUXVlcmllcywgIkhUTUxQcmVsb2Fk
U2Nhbm5lciAlcCBwcm9jZXNzQXR0cmlidXRlIGV2YWx1YXRpbmcgbWVkaWEgcXVlcmllcyIsIHRo
aXMpOwogICAgICAgICAgICAgICAgIG1fbWVkaWFNYXRjaGVkID0gTWVkaWFRdWVyeUV2YWx1YXRv
ciB7IG1fZG9jdW1lbnQucHJpbnRpbmcoKSA/ICJwcmludCIgOiAic2NyZWVuIiwgbV9kb2N1bWVu
dCwgZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50LT5jb21wdXRlZFN0eWxlKCkgOiBu
dWxscHRyIH0uZXZhbHVhdGUobWVkaWFTZXQuZ2V0KCkpOwogICAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHAKaW5kZXgg
YzJlMzA3ZmEwYTNiMTQxODZiMTJhMTA0MDJmZTZjZmFmOTE1MDVhZC4uZjE0MjA0YTFkMDQxYzdi
ZDA3YzA1NGI1ODVhNzliMGExMmNlNDdmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIFJlZjxGb3Jt
RGF0YT4gWFNTQXVkaXRvckRlbGVnYXRlOjpnZW5lcmF0ZVZpb2xhdGlvblJlcG9ydChjb25zdCBY
U1NJbmZvJiB4c3NJbmZvCiAgICAgYXV0byYgZnJhbWVMb2FkZXIgPSBtX2RvY3VtZW50LmZyYW1l
KCktPmxvYWRlcigpOwogICAgIFN0cmluZyBodHRwQm9keTsKICAgICBpZiAoZnJhbWVMb2FkZXIu
ZG9jdW1lbnRMb2FkZXIoKSkgewotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IG1ha2VSZWZQ
dHIoZnJhbWVMb2FkZXIuZG9jdW1lbnRMb2FkZXIoKS0+b3JpZ2luYWxSZXF1ZXN0KCkuaHR0cEJv
ZHkoKSkpCisgICAgICAgIGlmIChSZWZQdHIgZm9ybURhdGEgPSBmcmFtZUxvYWRlci5kb2N1bWVu
dExvYWRlcigpLT5vcmlnaW5hbFJlcXVlc3QoKS5odHRwQm9keSgpKQogICAgICAgICAgICAgaHR0
cEJvZHkgPSBmb3JtRGF0YS0+ZmxhdHRlblRvU3RyaW5nKCk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNw
cAppbmRleCA5MzM0NzIyNmU5NmYyMTk3YzVmNTZlZDcyNjExNDY2OWJiMTBhN2Y3Li40NmM0NzA1
MDg1N2Q0ZjEzZDgyNzg1NmRlMWExYmYyYjA4YTU3OGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTE3
MCw3ICsxNzAsNyBAQCB2b2lkIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6ZGVmYXVsdEV2
ZW50SGFuZGxlcihFdmVudCYgZXZlbnQpCiAgICAgICAgIC8vIGNhdXNlIGV2ZW50cyB0byBiZSBz
ZW50IHRvIHRoZSBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQuIFRvCiAgICAgICAgIC8vIHBy
ZXZlbnQgYW4gaW5maW5pdGUgbG9vcCwgd2UgbXVzdCBjaGVjayBmb3IgdGhpcyBjYXNlIGJlZm9y
ZSBzZW5kaW5nCiAgICAgICAgIC8vIHRoZSBldmVudCB1cCB0aGUgY2hhaW4uCi0gICAgICAgIGlm
IChhdXRvIGhvc3QgPSBtYWtlUmVmUHRyKHNoYWRvd0hvc3QoKSkpCisgICAgICAgIGlmIChSZWZQ
dHIgaG9zdCA9IHNoYWRvd0hvc3QoKSkKICAgICAgICAgICAgIGhvc3QtPmRlZmF1bHRFdmVudEhh
bmRsZXIoZXZlbnQpOwogICAgIH0KICAgICBpZiAoIWV2ZW50LmRlZmF1bHRIYW5kbGVkKCkpCkBA
IC0yNDEsNyArMjQxLDcgQEAgUmVmPFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ+IFNl
YXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ6OmNyZWF0ZShEb2MKIAogc3RkOjpvcHRpb25h
bDxTdHlsZTo6RWxlbWVudFN0eWxlPiBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50Ojpy
ZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBS
ZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKQogewotICAgIGF1dG8gaW5wdXQgPSBtYWtlUmVm
UHRyKGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KHNoYWRvd0hvc3QoKSkpOworICAgIFJlZlB0
ciBpbnB1dCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KHNoYWRvd0hvc3QoKSk7CiAgICAg
aWYgKGlucHV0ICYmIGlucHV0LT5tYXhSZXN1bHRzKCkgPj0gMCkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIApAQCAtMjU2LDcgKzI1Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U3R5bGU6OkVs
ZW1lbnRTdHlsZT4gU2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudDo6cmVzb2x2ZUN1c3Rv
CiB2b2lkIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQmIGV2ZW50KQogewogICAgIC8vIE9uIG1vdXNlZG93biwgYnJpbmcgdXAgYSBtZW51
LCBpZiBuZWVkZWQKLSAgICBhdXRvIGlucHV0ID0gbWFrZVJlZlB0cihkb3duY2FzdDxIVE1MSW5w
dXRFbGVtZW50PihzaGFkb3dIb3N0KCkpKTsKKyAgICBSZWZQdHIgaW5wdXQgPSBkb3duY2FzdDxI
VE1MSW5wdXRFbGVtZW50PihzaGFkb3dIb3N0KCkpOwogICAgIGlmIChpbnB1dCAmJiBldmVudC50
eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50ICYmIGlzPE1vdXNlRXZlbnQ+KGV2
ZW50KSAmJiBkb3duY2FzdDxNb3VzZUV2ZW50PihldmVudCkuYnV0dG9uKCkgPT0gTGVmdEJ1dHRv
bikgewogICAgICAgICBpbnB1dC0+Zm9jdXMoKTsKICAgICAgICAgaW5wdXQtPnNlbGVjdCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dFBsYWNlaG9sZGVyRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVt
ZW50LmNwcAppbmRleCA4NDM5NzU5Zjg1MTM1ZjNkNGYwYTg2NzE2MzhmOTNjZmE1NTk3Y2RhLi4z
M2U1MGYzYzY2ZGEyODhjYzY5NzhlMjdlNzQyYjA4ZWViYTNjYjYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcApAQCAt
NTMsNyArNTMsNyBAQCBUZXh0UGxhY2Vob2xkZXJFbGVtZW50OjpUZXh0UGxhY2Vob2xkZXJFbGVt
ZW50KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgTGF5b3V0UwogYXV0byBUZXh0UGxhY2Vob2xk
ZXJFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlIGluc2VydGlvblR5
cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKSAtPiBJbnNlcnRlZEludG9B
bmNlc3RvclJlc3VsdAogewogICAgIGlmIChpbnNlcnRpb25UeXBlLnRyZWVTY29wZUNoYW5nZWQp
IHsKLSAgICAgICAgaWYgKGF1dG8gc2hhZG93SG9zdCA9IG1ha2VSZWZQdHIocGFyZW50T2ZJbnNl
cnRlZFRyZWUuc2hhZG93SG9zdCgpKTsgaXM8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KHNo
YWRvd0hvc3QpKQorICAgICAgICBpZiAoUmVmUHRyIHNoYWRvd0hvc3QgPSBwYXJlbnRPZkluc2Vy
dGVkVHJlZS5zaGFkb3dIb3N0KCk7IGlzPEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50PihzaGFk
b3dIb3N0KSkKICAgICAgICAgICAgIGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
Pigqc2hhZG93SG9zdCkuc2V0Q2FuU2hvd1BsYWNlaG9sZGVyKGZhbHNlKTsKICAgICB9CiAgICAg
cmV0dXJuIEhUTUxEaXZFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihpbnNlcnRpb25UeXBl
LCBwYXJlbnRPZkluc2VydGVkVHJlZSk7CkBAIC02Miw3ICs2Miw3IEBAIGF1dG8gVGV4dFBsYWNl
aG9sZGVyRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSBpbnNlcnRp
b25UeXBlLCBDCiB2b2lkIFRleHRQbGFjZWhvbGRlckVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0
b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9mUmVt
b3ZlZFRyZWUpCiB7CiAgICAgaWYgKHJlbW92YWxUeXBlLnRyZWVTY29wZUNoYW5nZWQpIHsKLSAg
ICAgICAgaWYgKGF1dG8gc2hhZG93SG9zdCA9IG1ha2VSZWZQdHIob2xkUGFyZW50T2ZSZW1vdmVk
VHJlZS5zaGFkb3dIb3N0KCkpOyBpczxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oc2hhZG93
SG9zdCkpCisgICAgICAgIGlmIChSZWZQdHIgc2hhZG93SG9zdCA9IG9sZFBhcmVudE9mUmVtb3Zl
ZFRyZWUuc2hhZG93SG9zdCgpOyBpczxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oc2hhZG93
SG9zdCkpCiAgICAgICAgICAgICBkb3duY2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4o
KnNoYWRvd0hvc3QpLnNldENhblNob3dQbGFjZWhvbGRlcih0cnVlKTsKICAgICB9CiAgICAgSFRN
TERpdkVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IocmVtb3ZhbFR5cGUsIG9sZFBhcmVudE9m
UmVtb3ZlZFRyZWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJh
bmRHZW5lcmljVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5k
R2VuZXJpY1RleHRUcmFjay5jcHAKaW5kZXggMjM5MWQ1ZWRlNTcyNjAxYWI3OTRkMzI1NWE2ZmU5
ZTE1ZDRiODNkMi4uN2IwNzJhZGE3ZjNhMmQ0NjEwZTAwODA1OGY4MDYyYWI0NGQzNTAyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJh
Y2suY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjph
ZGRHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmIGluYmFuZEN1ZSkKIAogdm9pZCBJbmJhbmRH
ZW5lcmljVGV4dFRyYWNrOjp1cGRhdGVHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmIGluYmFu
ZEN1ZSkKIHsKLSAgICBhdXRvIGN1ZSA9IG1ha2VSZWZQdHIobV9jdWVNYXAuZmluZChpbmJhbmRD
dWUudW5pcXVlSWQoKSkpOworICAgIFJlZlB0ciBjdWUgPSBtX2N1ZU1hcC5maW5kKGluYmFuZEN1
ZS51bmlxdWVJZCgpKTsKICAgICBpZiAoIWN1ZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNTEs
NyArMTUxLDcgQEAgdm9pZCBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjp1cGRhdGVHZW5lcmljQ3Vl
KEluYmFuZEdlbmVyaWNDdWUmIGluYmFuZEN1ZSkKIAogdm9pZCBJbmJhbmRHZW5lcmljVGV4dFRy
YWNrOjpyZW1vdmVHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmIGluYmFuZEN1ZSkKIHsKLSAg
ICBhdXRvIGN1ZSA9IG1ha2VSZWZQdHIobV9jdWVNYXAuZmluZChpbmJhbmRDdWUudW5pcXVlSWQo
KSkpOworICAgIFJlZlB0ciBjdWUgPSBtX2N1ZU1hcC5maW5kKGluYmFuZEN1ZS51bmlxdWVJZCgp
KTsKICAgICBpZiAoY3VlKSB7CiAgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICpjdWUp
OwogICAgICAgICByZW1vdmVDdWUoKmN1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFjay5jcHAKaW5kZXggNWNlMjZlNmFkYTQwNWYwOWYzMWZmYzczODhjYTg4OTgzMGNjOGFjMi4u
Mjg0ZWVkMTg2MzM1ZGI5MDc1NWM2MDhiMDYzZDIzOTI3ODQxNmIwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcApAQCAtMzQ1LDcgKzM0NSw3IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IFRleHRUcmFjazo6YWRkQ3VlKFJlZjxUZXh0VHJhY2tDdWU+JiYgY3VlKQogCiAgICAg
Ly8gVGhlIGFkZEN1ZShjdWUpIG1ldGhvZCBvZiBUZXh0VHJhY2sgb2JqZWN0cywgd2hlbiBpbnZv
a2VkLCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgogCi0gICAgYXV0byBjdWVUcmFjayA9
IG1ha2VSZWZQdHIoY3VlLT50cmFjaygpKTsKKyAgICBSZWZQdHIgY3VlVHJhY2sgPSBjdWUtPnRy
YWNrKCk7CiAgICAgaWYgKGN1ZVRyYWNrID09IHRoaXMpCiAgICAgICAgIHJldHVybiB7IH07CiAK
QEAgLTQ0NSw3ICs0NDUsNyBAQCB2b2lkIFRleHRUcmFjazo6YWRkUmVnaW9uKFJlZjxWVFRSZWdp
b24+JiYgcmVnaW9uKQogCiAgICAgLy8gMS4gSWYgdGhlIGdpdmVuIHJlZ2lvbiBpcyBpbiBhIHRl
eHQgdHJhY2sgbGlzdCBvZiByZWdpb25zLCB0aGVuIHJlbW92ZQogICAgIC8vIHJlZ2lvbiBmcm9t
IHRoYXQgdGV4dCB0cmFjayBsaXN0IG9mIHJlZ2lvbnMuCi0gICAgYXV0byByZWdpb25UcmFjayA9
IG1ha2VSZWZQdHIocmVnaW9uLT50cmFjaygpKTsKKyAgICBSZWZQdHIgcmVnaW9uVHJhY2sgPSBy
ZWdpb24tPnRyYWNrKCk7CiAgICAgaWYgKHJlZ2lvblRyYWNrICYmIHJlZ2lvblRyYWNrICE9IHRo
aXMpCiAgICAgICAgIHJlZ2lvblRyYWNrLT5yZW1vdmVSZWdpb24ocmVnaW9uLmdldCgpKTsKIApA
QCAtNDUzLDcgKzQ1Myw3IEBAIHZvaWQgVGV4dFRyYWNrOjphZGRSZWdpb24oUmVmPFZUVFJlZ2lv
bj4mJiByZWdpb24pCiAgICAgLy8gYSByZWdpb24gd2l0aCB0aGUgc2FtZSBpZGVudGlmaWVyIGFz
IHJlZ2lvbiByZXBsYWNlIHRoZSB2YWx1ZXMgb2YgdGhhdAogICAgIC8vIHJlZ2lvbidzIHdpZHRo
LCBoZWlnaHQsIGFuY2hvciBwb2ludCwgdmlld3BvcnQgYW5jaG9yIHBvaW50IGFuZCBzY3JvbGwK
ICAgICAvLyBhdHRyaWJ1dGVzIHdpdGggdGhvc2Ugb2YgcmVnaW9uLgotICAgIGF1dG8gZXhpc3Rp
bmdSZWdpb24gPSBtYWtlUmVmUHRyKHJlZ2lvbkxpc3QuZ2V0UmVnaW9uQnlJZChyZWdpb24tPmlk
KCkpKTsKKyAgICBSZWZQdHIgZXhpc3RpbmdSZWdpb24gPSByZWdpb25MaXN0LmdldFJlZ2lvbkJ5
SWQocmVnaW9uLT5pZCgpKTsKICAgICBpZiAoZXhpc3RpbmdSZWdpb24pIHsKICAgICAgICAgZXhp
c3RpbmdSZWdpb24tPnVwZGF0ZVBhcmFtZXRlcnNGcm9tUmVnaW9uKHJlZ2lvbik7CiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCA2NDExNzQyNWJhNWM1YjZhNzFkMTkwZGZjOGYxZWVm
YjRmZmM2MzdjLi43NjJkNGNhZGMwMDcwNmRmZjAwZmU0MjFiMmY1ZDNmZjhlYzM4ZmYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwCkBAIC0xMDE3LDcgKzEwMTcsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2
b2lkPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldEVtdWxhdGVkTWVkaWEoY29uc3QgU3RyaW5nJgog
ICAgIC8vIEZJWE1FOiBTY2hlZHVsZSBhIHJlbmRlcmluZyB1cGRhdGUgaW5zdGVhZCBvZiBzeW5j
aHJvbm91c2x5IHVwZGF0aW5nIHRoZSBsYXlvdXQuCiAgICAgbV9pbnNwZWN0ZWRQYWdlLnVwZGF0
ZVN0eWxlQWZ0ZXJDaGFuZ2VJbkVudmlyb25tZW50KCk7CiAKLSAgICBhdXRvIGRvY3VtZW50ID0g
bWFrZVJlZlB0cihtX2luc3BlY3RlZFBhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnQoKSk7CisgICAg
UmVmUHRyIGRvY3VtZW50ID0gbV9pbnNwZWN0ZWRQYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50KCk7
CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIHsgfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggN2Q4YmIzNmJjNGQ3OWRiYTc3NmNhYmI0
YzI1NzU3MTU5N2QzMDkyNy4uNTk2ODEzZmEyZDgwZGU2YjMxODhiNzgwZDFiYzAyZTU0ODMxNDc5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC00MjMsOCAr
NDIzLDggQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE0KICAgICAgICAgcmV0dXJuOwogI2VuZGlm
CiAKLSAgICBpZiAoYXV0byBkb2N1bWVudCA9IG1ha2VSZWZQdHIodGhpcy0+ZG9jdW1lbnQoKSkp
IHsKLSAgICAgICAgaWYgKGF1dG8gZG9tV2luZG93ID0gbWFrZVJlZlB0cihkb2N1bWVudC0+ZG9t
V2luZG93KCkpKSB7CisgICAgaWYgKFJlZlB0ciBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCkp
IHsKKyAgICAgICAgaWYgKFJlZlB0ciBkb21XaW5kb3cgPSBkb2N1bWVudC0+ZG9tV2luZG93KCkp
IHsKICAgICAgICAgICAgIGlmIChkb2N1bWVudC0+c2V0dGluZ3MoKS5wZXJmb3JtYW5jZU5hdmln
YXRpb25UaW1pbmdBUElFbmFibGVkKCkpCiAgICAgICAgICAgICAgICAgZG9tV2luZG93LT5wZXJm
b3JtYW5jZSgpLm5hdmlnYXRpb25GaW5pc2hlZChtZXRyaWNzKTsKICAgICAgICAgfQpAQCAtOTI0
LDcgKzkyNCw3IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6OnRyeUxvYWRpbmdSZWRpcmVjdFJlcXVl
c3RGcm9tQXBwbGljYXRpb25DYWNoZShjb25zdCBSZXNvdXJjCiAgICAgLy8gSWYgdGhlIFJlc291
cmNlTG9hZGVyIGlzIGluZGVlZCBjYW5jZWxsZWQsIGl0IHdvdWxkIG5vcm1hbGx5IHNlbmQgcmVz
b3VyY2UgbG9hZCBjYWxsYmFja3MuCiAgICAgLy8gVGhlcmVmb3JlLCBzZXZlciBvdXIgcmVsYXRp
b25zaGlwIHdpdGggdGhlIG5ldHdvcmsgbG9hZCBidXQgcHJldmVudCB0aGUgUmVzb3VyY2VMb2Fk
ZXIgZnJvbSBzZW5kaW5nIFJlc291cmNlTG9hZE5vdGlmaWVyIGNhbGxiYWNrcy4KIAotICAgIGF1
dG8gcmVzb3VyY2VMb2FkZXIgPSBtYWtlUmVmUHRyKG1haW5SZXNvdXJjZUxvYWRlcigpKTsKKyAg
ICBSZWZQdHIgcmVzb3VyY2VMb2FkZXIgPSBtYWluUmVzb3VyY2VMb2FkZXIoKTsKICAgICBpZiAo
cmVzb3VyY2VMb2FkZXIpIHsKICAgICAgICAgQVNTRVJUKHJlc291cmNlTG9hZGVyLT5zaG91bGRT
ZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkpOwogICAgICAgICByZXNvdXJjZUxvYWRlci0+c2V0
U2VuZENhbGxiYWNrUG9saWN5KFNlbmRDYWxsYmFja1BvbGljeTo6RG9Ob3RTZW5kQ2FsbGJhY2tz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCmluZGV4IDZiZWFmYzEw
ZDIzOWIwNDQ3YjNkMGQzNmJkOTVkNzZmNThjOGJjNGEuLjA5NGE1MWUzOTI2NTJjYmVkYzM2YmE1
MzllNGQ1NWU3NzNlMWEwNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3Jt
U3VibWlzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9u
LmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIFJlZjxGb3JtU3VibWlzc2lvbj4gRm9ybVN1Ym1pc3Np
b246OmNyZWF0ZShIVE1MRm9ybUVsZW1lbnQmIGZvcm0sIEhUTUxGb3JtQ29udHJvCiB7CiAgICAg
YXV0byBjb3BpZWRBdHRyaWJ1dGVzID0gYXR0cmlidXRlczsKIAotICAgIGF1dG8gc3VibWl0dGVy
ID0gbWFrZVJlZlB0cihvdmVycmlkZVN1Ym1pdHRlciA/IG92ZXJyaWRlU3VibWl0dGVyIDogZm9y
bS5maW5kU3VibWl0dGVyKGV2ZW50KSk7CisgICAgUmVmUHRyIHN1Ym1pdHRlciA9IG92ZXJyaWRl
U3VibWl0dGVyID8gb3ZlcnJpZGVTdWJtaXR0ZXIgOiBmb3JtLmZpbmRTdWJtaXR0ZXIoZXZlbnQp
OwogICAgIGlmIChzdWJtaXR0ZXIpIHsKICAgICAgICAgQXRvbVN0cmluZyBhdHRyaWJ1dGVWYWx1
ZTsKICAgICAgICAgaWYgKCEoYXR0cmlidXRlVmFsdWUgPSBzdWJtaXR0ZXItPmF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oZm9ybWFjdGlvbkF0dHIpKS5pc051bGwoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGRlMGJjMDg5ZWJjNzVmMjNhNjQxYmQzZjcy
MTA1MWYzN2JjNWI0YWUuLjRhZDQ1YjZlZDRmNWUwN2JjODA3ZmE2Zjk1Yzk3NjNhMDg5YmZkNjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTM0NCw3ICsxMzQ0LDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChGcmFtZUxvYWRSZXF1ZXN0JiYgZnJhbWVMb2Fk
UmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWYKICAgICBib29sIGlzRm9ybVN1Ym1pc3Npb24gPSBm
b3JtU3RhdGU7CiAKICAgICAvLyBUaGUgc2VhcmNoIGZvciBhIHRhcmdldCBmcmFtZSBpcyBkb25l
IGVhcmxpZXIgaW4gdGhlIGNhc2Ugb2YgZm9ybSBzdWJtaXNzaW9uLgotICAgIGF1dG8gdGFyZ2V0
RnJhbWUgPSBpc0Zvcm1TdWJtaXNzaW9uID8gbnVsbHB0ciA6IG1ha2VSZWZQdHIoZmluZEZyYW1l
Rm9yTmF2aWdhdGlvbihlZmZlY3RpdmVGcmFtZU5hbWUpKTsKKyAgICBhdXRvIHRhcmdldEZyYW1l
ID0gaXNGb3JtU3VibWlzc2lvbiA/IG51bGxwdHIgOiBSZWZQdHIgeyBmaW5kRnJhbWVGb3JOYXZp
Z2F0aW9uKGVmZmVjdGl2ZUZyYW1lTmFtZSkgfTsKICAgICBpZiAodGFyZ2V0RnJhbWUgJiYgdGFy
Z2V0RnJhbWUgIT0gJm1fZnJhbWUpIHsKICAgICAgICAgZnJhbWVMb2FkUmVxdWVzdC5zZXRGcmFt
ZU5hbWUoIl9zZWxmIik7CiAgICAgICAgIHRhcmdldEZyYW1lLT5sb2FkZXIoKS5sb2FkVVJMKFdU
Rk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHJlZmVycmVyLCBuZXdMb2FkVHlwZSwgZXZlbnQsIFdU
Rk1vdmUoZm9ybVN0YXRlKSwgV1RGTW92ZShwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCksIGNvbXBs
ZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKSk7CkBAIC0yMDIwLDcgKzIwMjAsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoKQogICAgICAgICBtX2ZyYW1lLmRv
Y3VtZW50KCkgPyBtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6
ZWRUb0xlbmd0aCgpLnV0ZjgoKS5kYXRhKCkgOiAiIiwKICAgICAgICAgcGRsID8gcGRsLT51cmwo
KS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKS51dGY4KCkuZGF0YSgpIDogIjxubyBw
cm92aXNpb25hbCBEb2N1bWVudExvYWRlcj4iLCBjYWNoZWRQYWdlLmdldCgpKTsKIAotICAgIGlm
IChhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0cihtX2ZyYW1lLmRvY3VtZW50KCkpKSB7CisgICAg
aWYgKFJlZlB0ciBkb2N1bWVudCA9IG1fZnJhbWUuZG9jdW1lbnQoKSkgewogICAgICAgICAvLyBJ
biB0aGUgY2FzZSB3aGVyZSB3ZSdyZSByZXN0b3JpbmcgZnJvbSBhIGNhY2hlZCBwYWdlLCBvdXIg
ZG9jdW1lbnQgd2lsbCBub3QKICAgICAgICAgLy8gYmUgY29ubmVjdGVkIHRvIGl0cyBmcmFtZSB5
ZXQsIHNvIHRoZSBmb2xsb3dpbmcgY2FsbCB3aXRoIGJlIGEgbm8tb3AuIFdlIHdpbGwKICAgICAg
ICAgLy8gYXR0ZW1wdCB0byBjb25maXJtIGFueSBhY3RpdmUgY29tcG9zaXRpb24gb25jZSBhZ2Fp
biBpbiB0aGlzIHNjZW5hcmlvIGFmdGVyIHdlCkBAIC0yMTA1LDcgKzIxMDUsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoKQogICAgIH0gZWxzZQogICAgICAgICBk
aWRPcGVuVVJMKCk7CiAKLSAgICBpZiAoYXV0byBkb2N1bWVudCA9IG1ha2VSZWZQdHIobV9mcmFt
ZS5kb2N1bWVudCgpKSkKKyAgICBpZiAoUmVmUHRyIGRvY3VtZW50ID0gbV9mcmFtZS5kb2N1bWVu
dCgpKQogICAgICAgICBkb2N1bWVudC0+ZWRpdG9yKCkuY29uZmlybU9yQ2FuY2VsQ29tcG9zaXRp
b25BbmROb3RpZnlDbGllbnQoKTsKIAogICAgIExPRyhMb2FkaW5nLCAiV2ViQ29yZUxvYWRpbmcg
JXM6IEZpbmlzaGVkIGNvbW1pdHRpbmcgcHJvdmlzaW9uYWwgbG9hZCB0byBVUkwgJXMiLCBtX2Zy
YW1lLnRyZWUoKS51bmlxdWVOYW1lKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwKQEAgLTI1ODYs
NyArMjU4Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9yVGhpc0Zy
YW1lKCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChhdXRvIGRvbVdp
bmRvdyA9IG1ha2VSZWZQdHIobV9mcmFtZS5kb2N1bWVudCgpID8gbV9mcmFtZS5kb2N1bWVudCgp
LT5kb21XaW5kb3coKSA6IG51bGxwdHIpKQorICAgICAgICBpZiAoUmVmUHRyIGRvbVdpbmRvdyA9
IG1fZnJhbWUuZG9jdW1lbnQoKSA/IG1fZnJhbWUuZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkgOiBu
dWxscHRyKQogICAgICAgICAgICAgZG9tV2luZG93LT5wZXJmb3JtYW5jZSgpLnNjaGVkdWxlTmF2
aWdhdGlvbk9ic2VydmF0aW9uVGFza0lmTmVlZGVkKCk7CiAKICAgICAgICAgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IgPSBtX2RvY3VtZW50TG9hZGVyLT5tYWluRG9jdW1lbnRFcnJvcigpOwpA
QCAtMzI1NSw4ICszMjU1LDggQEAgc3RhdGljIGJvb2wgaXNTYW1lRG9jdW1lbnRSZWxvYWQoYm9v
bCBpc05ld05hdmlnYXRpb24sIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUpCiAKIHZvaWQgRnJhbWVM
b2FkZXI6OnNjcm9sbFRvRnJhZ21lbnRXaXRoUGFyZW50Qm91bmRhcnkoY29uc3QgVVJMJiB1cmws
IGJvb2wgaXNOZXdOYXZpZ2F0aW9uKQogewotICAgIGF1dG8gdmlldyA9IG1ha2VSZWZQdHIobV9m
cmFtZS52aWV3KCkpOwotICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmUHRyKG1fZnJhbWUuZG9j
dW1lbnQoKSk7CisgICAgUmVmUHRyIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKTsKKyAgICBSZWZQdHIg
ZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCk7CiAgICAgaWYgKCF2aWV3IHx8ICFkb2N1bWVu
dCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
SGlzdG9yeUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250
cm9sbGVyLmNwcAppbmRleCAwM2IyNGU4ODgzZDA4ZWZjN2Q4YTFkZjhhZDVlMTUxYmFlYTQ1Nzc2
Li5iM2FjZjA2YjQ5YTgyYjJhNGEwOWMxMzVjMDllZjgwM2VhMDdkZDMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6cmVzdG9yZVNjcm9sbFBvc2l0aW9u
QW5kVmlld1N0YXRlKCkKICAgICBpZiAoIW1fY3VycmVudEl0ZW0pCiAgICAgICAgIHJldHVybjsK
IAotICAgIGF1dG8gdmlldyA9IG1ha2VSZWZQdHIobV9mcmFtZS52aWV3KCkpOworICAgIFJlZlB0
ciB2aWV3ID0gbV9mcmFtZS52aWV3KCk7CiAKICAgICAvLyBGSVhNRTogVGhlcmUgaXMgc29tZSBz
Y3JvbGxpbmcgcmVsYXRlZCB3b3JrIHRoYXQgbmVlZHMgdG8gaGFwcGVuIHdoZW5ldmVyIGEgcGFn
ZSBnb2VzIGludG8gdGhlCiAgICAgLy8gYmFjay9mb3J3YXJkIGNhY2hlIGFuZCBzaW1pbGFyIHdv
cmsgdGhhdCBuZWVkcyB0byBvY2N1ciB3aGVuIGl0IGNvbWVzIG91dC4gVGhpcyBpcyB3aGVyZSB3
ZSBkbyB0aGUgd29yawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRp
b25TY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVs
ZXIuY3BwCmluZGV4IGMxNDIyNjhiNzRiZDc5MmE1ODY1NjdkMjRjMzJlM2E1NzNlNWRkNjcuLmI2
MTZiYTdkZWZlMGI4NTNhODg5ZDY3OWQ1NGQwZjNjMzg4OTFhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgU2NoZWR1bGVkVVJMTmF2aWdhdGlvbihEb2N1bWVudCYgaW5pdGlhdGlu
Z0RvY3VtZW50LCBkb3VibGUgZGVsYXksIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIExvY2tIaXN0b3J5IGxvY2tI
aXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QsIGJvb2wgZHVy
aW5nTG9hZCwgYm9vbCBpc0xvY2F0aW9uQ2hhbmdlKQogICAgICAgICA6IFNjaGVkdWxlZE5hdmln
YXRpb24oZGVsYXksIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBkdXJpbmdMb2Fk
LCBpc0xvY2F0aW9uQ2hhbmdlLCBpbml0aWF0aW5nRG9jdW1lbnQuc2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeVRvUHJvcGFnYXRlKCkpCiAgICAgICAgICwgbV9pbml0aWF0aW5nRG9jdW1lbnQg
eyBtYWtlUmVmKGluaXRpYXRpbmdEb2N1bWVudCkgfQotICAgICAgICAsIG1fc2VjdXJpdHlPcmln
aW57IG1ha2VSZWZQdHIoc2VjdXJpdHlPcmlnaW4pIH0KKyAgICAgICAgLCBtX3NlY3VyaXR5T3Jp
Z2luIHsgc2VjdXJpdHlPcmlnaW4gfQogICAgICAgICAsIG1fdXJsIHsgdXJsIH0KICAgICAgICAg
LCBtX3JlZmVycmVyIHsgcmVmZXJyZXIgfQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
ZnJhbWVMb2FkZXIuY3BwCmluZGV4IDBkOWRjNjYwZDMyODhmNjAzM2I1ZjQ4MGE2ZTdiNzgyNWVh
YjU2N2QuLmMyM2UwNzM1NmM2ODVjODdlMmY4MWI0NDRlNzkyNzdkYzk5MzM5MTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcApAQCAtMjQ1LDcgKzI0NSw3IEBAIEZy
YW1lKiBGcmFtZUxvYWRlcjo6U3ViZnJhbWVMb2FkZXI6OmxvYWRPclJlZGlyZWN0U3ViZnJhbWUo
SFRNTEZyYW1lT3duZXJFbGVtZW50CiAgICAgVVJMIHVwZ3JhZGVkUmVxdWVzdFVSTCA9IHJlcXVl
c3RVUkw7CiAgICAgaW5pdGlhdGluZ0RvY3VtZW50LmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT51
cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVkZWQodXBncmFkZWRSZXF1ZXN0VVJMLCBDb250ZW50
U2VjdXJpdHlQb2xpY3k6Okluc2VjdXJlUmVxdWVzdFR5cGU6OkxvYWQpOwogCi0gICAgUmVmUHRy
PEZyYW1lPiBmcmFtZSA9IG1ha2VSZWZQdHIob3duZXJFbGVtZW50LmNvbnRlbnRGcmFtZSgpKTsK
KyAgICBSZWZQdHIgZnJhbWUgPSBvd25lckVsZW1lbnQuY29udGVudEZyYW1lKCk7CiAgICAgaWYg
KGZyYW1lKQogICAgICAgICBmcmFtZS0+bmF2aWdhdGlvblNjaGVkdWxlcigpLnNjaGVkdWxlTG9j
YXRpb25DaGFuZ2UoaW5pdGlhdGluZ0RvY3VtZW50LCBpbml0aWF0aW5nRG9jdW1lbnQuc2VjdXJp
dHlPcmlnaW4oKSwgdXBncmFkZWRSZXF1ZXN0VVJMLCBtX2ZyYW1lLmxvYWRlcigpLm91dGdvaW5n
UmVmZXJyZXIoKSwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QpOwogICAgIGVsc2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCA0Nzc4NmZm
NmY2MDczMWNjOGZkYWVmNmZjMjc4MDZmNDJmZGY5NjRhLi4yZDM5Y2Q2YjYwODBlMTIwYjA0N2Rj
MzVhMGM0M2ZjMmFiYzE1OGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0
b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCiAKIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRC
dWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBw
aW5nKQogewotICAgIGF1dG8gYnVmZmVyID0gbWFrZVJlZlB0cihieXRlcyk7CisgICAgUmVmUHRy
IGJ1ZmZlciB7ICZieXRlcyB9OwogICAgIHdyYXBwaW5nID0gIWNvbnZlcnRXT0ZGVG9TZm50SWZO
ZWNlc3NhcnkoYnVmZmVyKTsKICAgICByZXR1cm4gYnVmZmVyID8gY3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSgqYnVmZmVyLCBpdGVtSW5Db2xsZWN0aW9uKSA6IG51bGxwdHI7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggMjBjOTE5
ODk1NjAxMGE0NTRjOTVhYjljM2Y3NjM4NzZjOTYxZjcwOC4uZDE3OTkxNzAxOTgxYTgwMTk0YmQy
M2UzMDhmNmUzN2E1YmRiNWU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1l
bnVDb250cm9sbGVyLmNwcApAQCAtNTI3LDcgKzUyNyw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250
cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24s
IGNvCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVHJhbnNsYXRl
OgogI2lmIEhBVkUoVFJBTlNMQVRJT05fVUlfU0VSVklDRVMpCi0gICAgICAgIGlmIChhdXRvIHZp
ZXcgPSBtYWtlUmVmUHRyKGZyYW1lLT52aWV3KCkpKSB7CisgICAgICAgIGlmIChSZWZQdHIgdmll
dyA9IGZyYW1lLT52aWV3KCkpIHsKICAgICAgICAgICAgIG1fY2xpZW50LmhhbmRsZVRyYW5zbGF0
aW9uKHsKICAgICAgICAgICAgICAgICBtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLnNlbGVjdGVk
VGV4dCgpLAogICAgICAgICAgICAgICAgIHZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhlbmNsb3Np
bmdJbnRSZWN0KGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb25Cb3VuZHMoKSkpLApAQCAtODQ0
LDcgKzg0NCw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAgICAg
aWYgKCFtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmlzQ29udGVudEVkaXRhYmxlKCkgJiYgaXM8
SFRNTEZvcm1Db250cm9sRWxlbWVudD4oKm5vZGUpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYK
LSAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihub2RlLT5kb2N1bWVudCgpLmZyYW1lKCkpOwor
ICAgIFJlZlB0ciBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCkuZnJhbWUoKTsKICAgICBpZiAoIWZy
YW1lKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA4
MDM0ZTIxN2M2ODRiODVkZDA4YmNmMjI4ZTc3NzExZTYzYWQwZTBiLi43Njc3MjFlMTA3ODljY2Mx
MmZhNWJlNTVhYmE5ZGIyNTZkOWEwODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBA
IC0xMjg5LDcgKzEyODksNyBAQCBpbnQgRE9NV2luZG93Ojppbm5lcldpZHRoKCkgY29uc3QKICAg
ICAgICAgcmV0dXJuIDA7CiAKICAgICAvLyBGb3JjZSBlbm91Z2ggbGF5b3V0IGluIHRoZSBwYXJl
bnQgZG9jdW1lbnQgdG8gZW5zdXJlIHRoYXQgdGhlIEZyYW1lVmlldyBoYXMgYmVlbiByZXNpemVk
LgotICAgIGlmIChhdXRvIG93bmVyRWxlbWVudCA9IG1ha2VSZWZQdHIoZnJhbWVFbGVtZW50KCkp
KQorICAgIGlmIChSZWZQdHIgb3duZXJFbGVtZW50ID0gZnJhbWVFbGVtZW50KCkpCiAgICAgICAg
IG93bmVyRWxlbWVudC0+ZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZkRpbWVuc2lvbnNPdXRPZkRh
dGUoKm93bmVyRWxlbWVudCwgV2lkdGhEaW1lbnNpb25zQ2hlY2spOwogCiAgICAgUmVmUHRyIGZy
YW1lID0gdGhpcy0+ZnJhbWUoKTsKQEAgLTE4NjksNyArMTg2OSw3IEBAIHZvaWQgRE9NV2luZG93
OjpjYW5jZWxBbmltYXRpb25GcmFtZShpbnQgaWQpCiAKIGludCBET01XaW5kb3c6OnJlcXVlc3RJ
ZGxlQ2FsbGJhY2soUmVmPElkbGVSZXF1ZXN0Q2FsbGJhY2s+JiYgY2FsbGJhY2ssIGNvbnN0IElk
bGVSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJl
ZlB0cih0aGlzLT5kb2N1bWVudCgpKTsKKyAgICBSZWZQdHIgZG9jdW1lbnQgPSB0aGlzLT5kb2N1
bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVy
biBkb2N1bWVudC0+cmVxdWVzdElkbGVDYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSwgU2Vjb25k
czo6ZnJvbU1pbGxpc2Vjb25kcyhvcHRpb25zLnRpbWVvdXQpKTsKQEAgLTE4NzcsNyArMTg3Nyw3
IEBAIGludCBET01XaW5kb3c6OnJlcXVlc3RJZGxlQ2FsbGJhY2soUmVmPElkbGVSZXF1ZXN0Q2Fs
bGJhY2s+JiYgY2FsbGJhY2ssIGNvbnN0IElkCiAKIHZvaWQgRE9NV2luZG93OjpjYW5jZWxJZGxl
Q2FsbGJhY2soaW50IGlkKQogewotICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmUHRyKHRoaXMt
PmRvY3VtZW50KCkpOworICAgIFJlZlB0ciBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CiAg
ICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIHJldHVybiBkb2N1bWVudC0+
Y2FuY2VsSWRsZUNhbGxiYWNrKGlkKTsKQEAgLTIyMzcsNyArMjIzNyw3IEBAIGJvb2wgRE9NV2lu
ZG93OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZl
bnRMaXN0ZW5lciYKIHZvaWQgRE9NV2luZG93OjpsYW5ndWFnZXNDaGFuZ2VkKCkKIHsKICAgICAv
LyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeXN0ZW0tc3RhdGUuaHRt
bCNkb20tbmF2aWdhdG9yLWxhbmd1YWdlcwotICAgIGlmIChhdXRvIGRvY3VtZW50ID0gbWFrZVJl
ZlB0cih0aGlzLT5kb2N1bWVudCgpKSkKKyAgICBpZiAoUmVmUHRyIGRvY3VtZW50ID0gdGhpcy0+
ZG9jdW1lbnQoKSkKICAgICAgICAgZG9jdW1lbnQtPnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudE9u
V2luZG93KFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkubGFuZ3VhZ2VjaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJ
c0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKQEAgLTIyNDYsNyArMjI0Niw3IEBAIHZvaWQgRE9NV2lu
ZG93OjpkaXNwYXRjaExvYWRFdmVudCgpCiAgICAgLy8gSWYgd2UgZGlkIG5vdCBwcm90ZWN0IGl0
LCB0aGUgZG9jdW1lbnQgbG9hZGVyIGFuZCBpdHMgdGltaW5nIHN1Ym9iamVjdCBtaWdodCBnZXQg
ZGVzdHJveWVkCiAgICAgLy8gYXMgYSBzaWRlIGVmZmVjdCBvZiB3aGF0IGV2ZW50IGhhbmRsaW5n
IGNvZGUgZG9lcy4KICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07Ci0gICAgYXV0byBw
cm90ZWN0ZWRMb2FkZXIgPSBtYWtlUmVmUHRyKGZyYW1lKCkgPyBmcmFtZSgpLT5sb2FkZXIoKS5k
b2N1bWVudExvYWRlcigpIDogbnVsbHB0cik7CisgICAgUmVmUHRyIHByb3RlY3RlZExvYWRlciA9
IGZyYW1lKCkgPyBmcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpIDogbnVsbHB0cjsK
ICAgICBib29sIHNob3VsZE1hcmtMb2FkRXZlbnRUaW1lcyA9IHByb3RlY3RlZExvYWRlciAmJiAh
cHJvdGVjdGVkTG9hZGVyLT50aW1pbmcoKS5sb2FkRXZlbnRTdGFydCgpOwogCiAgICAgaWYgKHNo
b3VsZE1hcmtMb2FkRXZlbnRUaW1lcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVy
LmNwcAppbmRleCA0ZmVlODZlYzhhNTIxMDAzOWU1MmQ2OTAwY2Q4YWI4MzU3ZjkyYTYyLi5mNTBh
MWM3ZTNjYjFkMjUzNTllM2MzN2MwYWI3ZDdmNDcxYzRjYWViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RyYWdDb250cm9sbGVyLmNwcApAQCAtMTM4Niw4ICsxMzg2LDggQEAgYm9vbCBEcmFnQ29udHJv
bGxlcjo6dHJ5VG9VcGRhdGVEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoY29uc3QgRHJhZ0RhdGEm
IGRyYWdEYXQKICAgICBBU1NFUlQoIW1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzLmlzRW1wdHko
KSk7CiAgICAgQVNTRVJUKG1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJSYW5nZSk7CiAKLSAgICBh
dXRvIGRvY3VtZW50ID0gbWFrZVJlZihtX2Ryb3BwZWRJbWFnZVBsYWNlaG9sZGVyc1swXS0+ZG9j
dW1lbnQoKSk7Ci0gICAgYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIoZG9jdW1lbnQtPmZyYW1lKCkp
OworICAgIFJlZiBkb2N1bWVudCA9IG1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzWzBdLT5kb2N1
bWVudCgpOworICAgIFJlZlB0ciBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOwogICAgIGlmICgh
ZnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTQyOSwxMSArMTQyOSwxMSBAQCB2
b2lkIERyYWdDb250cm9sbGVyOjppbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnNBdENhcmV0
KGNvbnN0IFZlY3RvcjxJbnRTaXplPgogICAgIGlmIChkcm9wQ2FyZXQuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmUHRyKGRyb3BDYXJldC5k
ZWVwRXF1aXZhbGVudCgpLmRvY3VtZW50KCkpOworICAgIFJlZlB0ciBkb2N1bWVudCA9IGRyb3BD
YXJldC5kZWVwRXF1aXZhbGVudCgpLmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIoZG9jdW1lbnQtPmZy
YW1lKCkpOworICAgIFJlZlB0ciBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOwogICAgIGlmICgh
ZnJhbWUpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTQ5OCw3ICsxNDk4LDcgQEAgdm9pZCBEcmFn
Q29udHJvbGxlcjo6aW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzQXRDYXJldChjb25zdCBW
ZWN0b3I8SW50U2l6ZT4KIAogdm9pZCBEcmFnQ29udHJvbGxlcjo6ZmluYWxpemVEcm9wcGVkSW1h
Z2VQbGFjZWhvbGRlcihIVE1MSW1hZ2VFbGVtZW50JiBwbGFjZWhvbGRlciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb24pCiB7Ci0gICAgcGxhY2Vob2xkZXIuZG9jdW1lbnQo
KS5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6SW50ZXJuYWxBc3luY1Rhc2ssIFtj
b21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKSwgcGxhY2Vob2xkZXIgPSBtYWtlUmVmUHRy
KHBsYWNlaG9sZGVyKV0gKCkgbXV0YWJsZSB7CisgICAgcGxhY2Vob2xkZXIuZG9jdW1lbnQoKS5l
dmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6SW50ZXJuYWxBc3luY1Rhc2ssIFtjb21w
bGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKSwgcGxhY2Vob2xkZXIgPSBSZWYgeyBwbGFjZWhv
bGRlciB9XSAoKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHBsYWNlaG9sZGVyLT5pc0Ryb3BwZWRJ
bWFnZVBsYWNlaG9sZGVyKCkpIHsKICAgICAgICAgICAgIHBsYWNlaG9sZGVyLT5yZW1vdmVBdHRy
aWJ1dGUoSFRNTE5hbWVzOjpoZWlnaHRBdHRyKTsKICAgICAgICAgICAgIHBsYWNlaG9sZGVyLT5y
ZW1vdmVJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA5NWJhZWJhNDE3MjE5ZWJlMzAzMzdj
M2Y2ZWZlODI3MjU1ZWQ5NDZlLi40ZjQ3OWEyZDFlNmVjODQ1Y2NkYjY1NWJiNDQyNzFhMmVmZTM3
NmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC00NDcsNyArNDQ3LDcg
QEAgc3RhdGljIE5vZGUqIG5vZGVUb1NlbGVjdE9uTW91c2VEb3duRm9yTm9kZShOb2RlJiB0YXJn
ZXROb2RlKQogICAgIGlmIChIVE1MRWxlbWVudDo6aXNJbnNpZGVJbWFnZU92ZXJsYXkodGFyZ2V0
Tm9kZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgaWYgKGF1dG8gcm9vdFVzZXJT
ZWxlY3RBbGwgPSBtYWtlUmVmUHRyKFBvc2l0aW9uOjpyb290VXNlclNlbGVjdEFsbEZvck5vZGUo
JnRhcmdldE5vZGUpKSkKKyAgICBpZiAoUmVmUHRyIHJvb3RVc2VyU2VsZWN0QWxsID0gUG9zaXRp
b246OnJvb3RVc2VyU2VsZWN0QWxsRm9yTm9kZSgmdGFyZ2V0Tm9kZSkpCiAgICAgICAgIHJldHVy
biByb290VXNlclNlbGVjdEFsbC5nZXQoKTsKIAogICAgIGlmICh0YXJnZXROb2RlLnNob3VsZFNl
bGVjdE9uTW91c2VEb3duKCkpCkBAIC00NTgsNyArNDU4LDcgQEAgc3RhdGljIE5vZGUqIG5vZGVU
b1NlbGVjdE9uTW91c2VEb3duRm9yTm9kZShOb2RlJiB0YXJnZXROb2RlKQogCiBzdGF0aWMgVmlz
aWJsZVNlbGVjdGlvbiBleHBhbmRTZWxlY3Rpb25Ub1Jlc3BlY3RTZWxlY3RPbk1vdXNlRG93bihO
b2RlJiB0YXJnZXROb2RlLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCiB7Ci0g
ICAgYXV0byBub2RlVG9TZWxlY3QgPSBtYWtlUmVmUHRyKG5vZGVUb1NlbGVjdE9uTW91c2VEb3du
Rm9yTm9kZSh0YXJnZXROb2RlKSk7CisgICAgUmVmUHRyIG5vZGVUb1NlbGVjdCA9IG5vZGVUb1Nl
bGVjdE9uTW91c2VEb3duRm9yTm9kZSh0YXJnZXROb2RlKTsKICAgICBpZiAoIW5vZGVUb1NlbGVj
dCkKICAgICAgICAgcmV0dXJuIHNlbGVjdGlvbjsKIApAQCAtNzA1LDcgKzcwNSw3IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnRTaW5nbGVDbGljayhjb25zdCBNb3Vz
ZUV2ZW50V2l0aEhpdFRlc3RSCiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpjYW5Nb3VzZURvd25TdGFy
dFNlbGVjdChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKIHsKLSAg
ICBhdXRvIG5vZGUgPSBtYWtlUmVmUHRyKGV2ZW50LnRhcmdldE5vZGUoKSk7CisgICAgUmVmUHRy
IG5vZGUgPSBldmVudC50YXJnZXROb2RlKCk7CiAKICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJh
bWUucGFnZSgpKSB7CiAgICAgICAgIGlmICghcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuc2hvdWxk
VXNlTW91c2VFdmVudEZvclNlbGVjdGlvbihldmVudC5ldmVudCgpKSkKQEAgLTExOTMsNyArMTE5
Myw3IEBAIEhpdFRlc3RSZXN1bHQgRXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludChj
b25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIE9wdGlvCiAgICAgaWYgKCFyZXF1ZXN0LnJlYWRPbmx5
KCkpCiAgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlSG92ZXJBY3RpdmVTdGF0ZShy
ZXF1ZXN0LCByZXN1bHQudGFyZ2V0RWxlbWVudCgpKTsKIAotICAgIGF1dG8gaW5uZXJOb2RlID0g
bWFrZVJlZlB0cihyZXN1bHQuaW5uZXJOb2RlKCkpOworICAgIFJlZlB0ciBpbm5lck5vZGUgPSBy
ZXN1bHQuaW5uZXJOb2RlKCk7CiAgICAgaWYgKHJlcXVlc3QuZGlzYWxsb3dzVXNlckFnZW50U2hh
ZG93Q29udGVudCgpCiAgICAgICAgIHx8IChyZXF1ZXN0LmRpc2FsbG93c1VzZXJBZ2VudFNoYWRv
d0NvbnRlbnRFeGNlcHRGb3JJbWFnZU92ZXJsYXlzKCkgJiYgaW5uZXJOb2RlICYmICFIVE1MRWxl
bWVudDo6aXNJbnNpZGVJbWFnZU92ZXJsYXkoKmlubmVyTm9kZSkpKQogICAgICAgICByZXN1bHQu
c2V0VG9Ob25Vc2VyQWdlbnRTaGFkb3dBbmNlc3RvcigpOwpAQCAtNDM5Myw3ICs0MzkzLDcgQEAg
dm9pZCBFdmVudEhhbmRsZXI6OnNjaGVkdWxlU2Nyb2xsRXZlbnQoKQogICAgIHNldEZyYW1lV2Fz
U2Nyb2xsZWRCeVVzZXIoKTsKICAgICBpZiAoIW1fZnJhbWUudmlldygpKQogICAgICAgICByZXR1
cm47Ci0gICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWZQdHIobV9mcmFtZS5kb2N1bWVudCgpKTsK
KyAgICBSZWZQdHIgZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1
bWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIGRvY3VtZW50LT5hZGRQZW5kaW5nU2Nyb2xsRXZl
bnRUYXJnZXQoKmRvY3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA5ZDE1
NjkyZjdkOThkZTI5ZWU4Y2M5OTQ5ZjQ5OTc1NmM0YTI3YTQyLi44OWRkOWRjZjQwN2Y1M2EwYTg3
ZjU5YTY1NWI5MzQ5ZjM1MzRkZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0y
MjMxLDcgKzIyMzEsNyBAQCBib29sIEZyYW1lVmlldzo6c2Nyb2xsVG9GcmFnbWVudEludGVybmFs
KFN0cmluZ1ZpZXcgZnJhZ21lbnRJZGVudGlmaWVyKQogICAgIGF1dG8mIGRvY3VtZW50ID0gKmZy
YW1lKCkuZG9jdW1lbnQoKTsKICAgICBSRUxFQVNFX0FTU0VSVChkb2N1bWVudC5oYXZlU3R5bGVz
aGVldHNMb2FkZWQoKSk7CiAKLSAgICBhdXRvIGFuY2hvckVsZW1lbnQgPSBtYWtlUmVmUHRyKGRv
Y3VtZW50LmZpbmRBbmNob3IoZnJhZ21lbnRJZGVudGlmaWVyKSk7CisgICAgUmVmUHRyIGFuY2hv
ckVsZW1lbnQgPSBkb2N1bWVudC5maW5kQW5jaG9yKGZyYWdtZW50SWRlbnRpZmllcik7CiAKICAg
ICBMT0coU2Nyb2xsaW5nLCAiIGFuY2hvckVsZW1lbnQgaXMgJXAiLCBhbmNob3JFbGVtZW50Lmdl
dCgpKTsKIApAQCAtMjM3OSw3ICsyMzc5LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNjcm9sbFRvRm9j
dXNlZEVsZW1lbnRUaW1lckZpcmVkKCkKIHZvaWQgRnJhbWVWaWV3OjpzY3JvbGxUb0ZvY3VzZWRF
bGVtZW50SW50ZXJuYWwoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fc2hvdWxkU2Nyb2xsVG9G
b2N1c2VkRWxlbWVudCk7Ci0gICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWZQdHIoZnJhbWUoKS5k
b2N1bWVudCgpKTsKKyAgICBSZWZQdHIgZG9jdW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCk7CiAg
ICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMzg4LDcgKzIzODgsNyBA
QCB2b2lkIEZyYW1lVmlldzo6c2Nyb2xsVG9Gb2N1c2VkRWxlbWVudEludGVybmFsKCkKICAgICAg
ICAgcmV0dXJuOyAvLyBVcGRhdGluZyB0aGUgbGF5b3V0IG1heSBoYXZlIHJhbiBzY3JpcHRzLgog
ICAgIG1fc2hvdWxkU2Nyb2xsVG9Gb2N1c2VkRWxlbWVudCA9IGZhbHNlOwogCi0gICAgYXV0byBm
b2N1c2VkRWxlbWVudCA9IG1ha2VSZWZQdHIoZG9jdW1lbnQtPmZvY3VzZWRFbGVtZW50KCkpOwor
ICAgIFJlZlB0ciBmb2N1c2VkRWxlbWVudCA9IGRvY3VtZW50LT5mb2N1c2VkRWxlbWVudCgpOwog
ICAgIGlmICghZm9jdXNlZEVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKICAgICBhdXRvIHVwZGF0
ZVRhcmdldCA9IGZvY3VzZWRFbGVtZW50LT5mb2N1c0FwcGVhcmFuY2VVcGRhdGVUYXJnZXQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW1hZ2VPdmVybGF5Q29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwCmluZGV4
IDc1NDBkZjEwYTY2YTM0OWZiYTk0NzcyZGNhYTM2NzM3NzgxYWI1OTkuLmJiMjM2YTg5MjBiMzkz
M2UwMzJiYjAzYTgzMTk2ZjE2MjM4MmNkYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvSW1hZ2VPdmVybGF5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9J
bWFnZU92ZXJsYXlDb250cm9sbGVyLmNwcApAQCAtNzQsOCArNzQsOCBAQCB2b2lkIEltYWdlT3Zl
cmxheUNvbnRyb2xsZXI6OnNlbGVjdGlvblF1YWRzRGlkQ2hhbmdlKEZyYW1lJiBmcmFtZSwgY29u
c3QgVmVjdG9yPAogICAgICAgICBpZiAoIUhUTUxFbGVtZW50Ojppc0luc2lkZUltYWdlT3Zlcmxh
eSgqc2VsZWN0ZWRSYW5nZSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAg
ICBpZiAoYXV0byBob3N0ID0gbWFrZVJlZlB0cihzZWxlY3RlZFJhbmdlLT5zdGFydENvbnRhaW5l
cigpLnNoYWRvd0hvc3QoKSk7IGlzPEhUTUxFbGVtZW50Pihob3N0KSkKLSAgICAgICAgICAgIHJl
dHVybiBtYWtlUmVmUHRyKGRvd25jYXN0PEhUTUxFbGVtZW50PigqaG9zdCkpOworICAgICAgICBp
ZiAoUmVmUHRyIGhvc3QgPSBzZWxlY3RlZFJhbmdlLT5zdGFydENvbnRhaW5lcigpLnNoYWRvd0hv
c3QoKTsgaXM8SFRNTEVsZW1lbnQ+KGhvc3QpKQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19w
b2ludGVyX2Nhc3Q8SFRNTEVsZW1lbnQ+KGhvc3QpOwogCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0pKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBmOWY4Y2ZhMGQ4YTNlZjRkNTI4MjRj
ZWMzYzg5YmY3NGFlZjIzYTllLi4zNzI0OGU0M2VjNDhiNDhiYmRlNGNmYzIwMTM1ZWQ3ZDA3ZmU4
M2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTg4NywxMSArODg3LDExIEBAIHN0YXRpYyB2b2lk
IHJlcGxhY2VSYW5nZXMoUGFnZSYgcGFnZSwgY29uc3QgVmVjdG9yPEZpbmRSZXBsYWNlbWVudFJh
bmdlPiYgcmFuZ2VzCiAgICAgICAgIGlmIChmaXJzdE5vZGUgPT0gc2Vjb25kTm9kZSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBhdXRvIGZpcnN0RnJhbWUgPSBtYWtlUmVm
UHRyKGZpcnN0Tm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpKTsKKyAgICAgICAgUmVmUHRyIGZpcnN0
RnJhbWUgPSBmaXJzdE5vZGUtPmRvY3VtZW50KCkuZnJhbWUoKTsKICAgICAgICAgaWYgKCFmaXJz
dEZyYW1lKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgYXV0byBzZWNvbmRG
cmFtZSA9IG1ha2VSZWZQdHIoc2Vjb25kTm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpKTsKKyAgICAg
ICAgUmVmUHRyIHNlY29uZEZyYW1lID0gc2Vjb25kTm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOwog
ICAgICAgICBpZiAoIXNlY29uZEZyYW1lKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC05MDQsNyArOTA0LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJhbmdlcyhQYWdlJiBwYWdlLCBj
b25zdCBWZWN0b3I8RmluZFJlcGxhY2VtZW50UmFuZ2U+JiByYW5nZXMKICAgICB9KTsKIAogICAg
IGZvciAoYXV0byYgY29udGFpbmVyIDogY29udGFpbmVyTm9kZXNJbk9yZGVyT2ZSZXBsYWNlbWVu
dCkgewotICAgICAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihjb250YWluZXItPmRvY3VtZW50
KCkuZnJhbWUoKSk7CisgICAgICAgIFJlZlB0ciBmcmFtZSA9IGNvbnRhaW5lci0+ZG9jdW1lbnQo
KS5mcmFtZSgpOwogICAgICAgICBpZiAoIWZyYW1lKQogICAgICAgICAgICAgY29udGludWU7CiAK
QEAgLTkyOSw3ICs5MjksNyBAQCB1aW50MzJfdCBQYWdlOjpyZXBsYWNlUmFuZ2VzV2l0aFRleHQo
Y29uc3QgVmVjdG9yPFNpbXBsZVJhbmdlPiYgcmFuZ2VzVG9SZXBsYWNlLAogICAgIHJlcGxhY2Vt
ZW50UmFuZ2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmFuZ2VzVG9SZXBsYWNlLnNpemUoKSk7
CiAKICAgICBmb3IgKGF1dG8mIHJhbmdlIDogcmFuZ2VzVG9SZXBsYWNlKSB7Ci0gICAgICAgIGF1
dG8gaGlnaGVzdFJvb3QgPSBtYWtlUmVmUHRyKGhpZ2hlc3RFZGl0YWJsZVJvb3QobWFrZURlcHJl
Y2F0ZWRMZWdhY3lQb3NpdGlvbihyYW5nZS5zdGFydCkpKTsKKyAgICAgICAgUmVmUHRyIGhpZ2hl
c3RSb290ID0gaGlnaGVzdEVkaXRhYmxlUm9vdChtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9u
KHJhbmdlLnN0YXJ0KSk7CiAgICAgICAgIGlmICghaGlnaGVzdFJvb3QgfHwgaGlnaGVzdFJvb3Qg
IT0gaGlnaGVzdEVkaXRhYmxlUm9vdChtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKHJhbmdl
LmVuZCkpIHx8ICFoaWdoZXN0Um9vdC0+ZG9jdW1lbnQoKS5mcmFtZSgpKQogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29u
dGVudHMoKmhpZ2hlc3RSb290KTsKQEAgLTk2Niw3ICs5NjYsNyBAQCB2b2lkIFBhZ2U6OnNldEVk
aXRhYmxlUmVnaW9uRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgaWYgKG1faXNFZGl0YWJsZVJl
Z2lvbkVuYWJsZWQgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogICAgIG1faXNFZGl0YWJs
ZVJlZ2lvbkVuYWJsZWQgPSBlbmFibGVkOwotICAgIGF1dG8gZnJhbWVWaWV3ID0gbWFrZVJlZlB0
cihtYWluRnJhbWUoKS52aWV3KCkpOworICAgIFJlZlB0ciBmcmFtZVZpZXcgPSBtYWluRnJhbWUo
KS52aWV3KCk7CiAgICAgaWYgKCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAo
YXV0byogcmVuZGVyVmlldyA9IGZyYW1lVmlldy0+cmVuZGVyVmlldygpKQpAQCAtOTg2LDExICs5
ODYsMTEgQEAgYm9vbCBQYWdlOjpzaG91bGRCdWlsZEVkaXRhYmxlUmVnaW9uKCkgY29uc3QKIAog
VmVjdG9yPFJlZjxFbGVtZW50Pj4gUGFnZTo6ZWRpdGFibGVFbGVtZW50c0luUmVjdChjb25zdCBG
bG9hdFJlY3QmIHNlYXJjaFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMpIGNvbnN0CiB7Ci0gICAg
YXV0byBmcmFtZVZpZXcgPSBtYWtlUmVmUHRyKG1haW5GcmFtZSgpLnZpZXcoKSk7CisgICAgUmVm
UHRyIGZyYW1lVmlldyA9IG1haW5GcmFtZSgpLnZpZXcoKTsKICAgICBpZiAoIWZyYW1lVmlldykK
ICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmUHRyKG1h
aW5GcmFtZSgpLmRvY3VtZW50KCkpOworICAgIFJlZlB0ciBkb2N1bWVudCA9IG1haW5GcmFtZSgp
LmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIHsgfTsKIApA
QCAtMTY2Niw3ICsxNjY2LDcgQEAgdm9pZCBQYWdlOjpkb0FmdGVyVXBkYXRlUmVuZGVyaW5nKCkK
ICAgICAgICAgaWYgKGFwcEhpZ2hsaWdodFN0b3JhZ2UtPmhhc1VucmVzdG9yZWRIaWdobGlnaHRz
KCkgJiYgTW9ub3RvbmljVGltZTo6bm93KCkgLSBhcHBIaWdobGlnaHRTdG9yYWdlLT5sYXN0UmFu
Z2VTZWFyY2hUaW1lKCkgPiAxX3MpIHsKICAgICAgICAgICAgIGFwcEhpZ2hsaWdodFN0b3JhZ2Ut
PnJlc2V0TGFzdFJhbmdlU2VhcmNoVGltZSgpOwogICAgICAgICAgICAgZG9jdW1lbnQuZXZlbnRM
b29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkludGVybmFsQXN5bmNUYXNrLCBbd2Vha0RvY3Vt
ZW50ID0gbWFrZVdlYWtQdHIoZG9jdW1lbnQpXSB7Ci0gICAgICAgICAgICAgICAgYXV0byBkb2N1
bWVudCA9IG1ha2VSZWZQdHIod2Vha0RvY3VtZW50LmdldCgpKTsKKyAgICAgICAgICAgICAgICBS
ZWZQdHIgZG9jdW1lbnQgeyB3ZWFrRG9jdW1lbnQuZ2V0KCkgfTsKICAgICAgICAgICAgICAgICBp
ZiAoIWRvY3VtZW50KQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTI2MjAsNyAr
MjYyMCw3IEBAIHZvaWQgUGFnZTo6c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUo
Q29sb3ImJiB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPCiAgICAgc2NoZWR1bGVSZW5kZXJpbmdV
cGRhdGUoeyB9KTsKIAogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKLSAgICBpZiAoYXV0byBm
cmFtZVZpZXcgPSBtYWtlUmVmUHRyKG1haW5GcmFtZSgpLnZpZXcoKSkpIHsKKyAgICBpZiAoUmVm
UHRyIGZyYW1lVmlldyA9IG1haW5GcmFtZSgpLnZpZXcoKSkgewogICAgICAgICBpZiAoYXV0byog
cmVuZGVyVmlldyA9IGZyYW1lVmlldy0+cmVuZGVyVmlldygpKSB7CiAgICAgICAgICAgICBpZiAo
cmVuZGVyVmlldy0+dXNlc0NvbXBvc2l0aW5nKCkpCiAgICAgICAgICAgICAgICAgcmVuZGVyVmll
dy0+Y29tcG9zaXRvcigpLnVwZGF0ZUxheWVyRm9yT3ZlcmhhbmdBcmVhc0JhY2tncm91bmRDb2xv
cigpOwpAQCAtMzQ5Nyw3ICszNDk3LDcgQEAgdm9pZCBQYWdlOjpjb25maWd1cmVMb2dnaW5nQ2hh
bm5lbChjb25zdCBTdHJpbmcmIGNoYW5uZWxOYW1lLCBXVEZMb2dDaGFubmVsU3RhdGUKIHZvaWQg
UGFnZTo6ZGlkRmluaXNoTG9hZGluZ0ltYWdlRm9yRWxlbWVudChIVE1MSW1hZ2VFbGVtZW50JiBl
bGVtZW50KQogewogICAgIGVsZW1lbnQuZG9jdW1lbnQoKS5ldmVudExvb3AoKS5xdWV1ZVRhc2so
VGFza1NvdXJjZTo6TmV0d29ya2luZywgW2VsZW1lbnQgPSBtYWtlUmVmKGVsZW1lbnQpXSgpIHsK
LSAgICAgICAgYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIoZWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFt
ZSgpKTsKKyAgICAgICAgUmVmUHRyIGZyYW1lID0gZWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgp
OwogICAgICAgICBpZiAoIWZyYW1lKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zNjU1LDcg
KzM2NTUsNyBAQCB2b2lkIFBhZ2U6OnVwZGF0ZUVsZW1lbnRzV2l0aFRleHRSZWNvZ25pdGlvblJl
c3VsdHMoKQogCiAgICAgZm9yIChhdXRvJiBbZWxlbWVudCwgcmVzdWx0XSA6IGVsZW1lbnRzVG9V
cGRhdGUpIHsKICAgICAgICAgZWxlbWVudC0+ZG9jdW1lbnQoKS5ldmVudExvb3AoKS5xdWV1ZVRh
c2soVGFza1NvdXJjZTo6SW50ZXJuYWxBc3luY1Rhc2ssIFtyZXN1bHQgPSBUZXh0UmVjb2duaXRp
b25SZXN1bHQgeyByZXN1bHQgfSwgd2Vha0VsZW1lbnQgPSBtYWtlV2Vha1B0cihlbGVtZW50Lmdl
dCgpKV0gewotICAgICAgICAgICAgYXV0byBlbGVtZW50ID0gbWFrZVJlZlB0cih3ZWFrRWxlbWVu
dC5nZXQoKSk7CisgICAgICAgICAgICBSZWZQdHIgZWxlbWVudCB7IHdlYWtFbGVtZW50LmdldCgp
IH07CiAgICAgICAgICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb2xvclNhbXBsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAppbmRleCBmNTM2MmU3Njli
NGI3MzI5MTI3YjY3NDFiYjI0MzkzOThmMGU4NjE1Li41ZGRkMzFmOWZlMmUzYmIyOGNhNzg1ZTVi
YzcyNjczMzE0YjAyZGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb2xv
clNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5j
cHAKQEAgLTE2OSwxMSArMTY5LDExIEBAIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IFBhZ2VDb2xvclNh
bXBsZXI6OnNhbXBsZVRvcChQYWdlJiBwYWdlKQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKICAg
ICB9CiAKLSAgICBhdXRvIG1haW5Eb2N1bWVudCA9IG1ha2VSZWZQdHIocGFnZS5tYWluRnJhbWUo
KS5kb2N1bWVudCgpKTsKKyAgICBSZWZQdHIgbWFpbkRvY3VtZW50ID0gcGFnZS5tYWluRnJhbWUo
KS5kb2N1bWVudCgpOwogICAgIGlmICghbWFpbkRvY3VtZW50KQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgYXV0byBmcmFtZVZpZXcgPSBtYWtlUmVmUHRyKHBhZ2UubWFpbkZy
YW1lKCkudmlldygpKTsKKyAgICBSZWZQdHIgZnJhbWVWaWV3ID0gcGFnZS5tYWluRnJhbWUoKS52
aWV3KCk7CiAgICAgaWYgKCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmNwcAppbmRl
eCA0NzMxOTA3NDliZDM5NjE2OWExYTYwMzIwYjlkNTI1OTRjNGRhMDczLi4wZmQ5ODI1ZmFjNmU2
Y2I0NmUwZWVlNWIyNjdiMmQ4YmRkNzJmOGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
b2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwCkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBQb2ludGVy
TG9ja0NvbnRyb2xsZXI6OmVucXVldWVFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBFbGVt
ZW50KiBlbGVtZW4KIHZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjplbnF1ZXVlRXZlbnQoY29u
c3QgQXRvbVN0cmluZyYgdHlwZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIC8vIEZJWE1F
OiBTcGVjIGRvZXNuJ3Qgc3BlY2lmeSB3aGljaCB0YXNrIHNvdXJjZSB1c2UuCi0gICAgaWYgKGF1
dG8gcHJvdGVjdGVkRG9jdW1lbnQgPSBtYWtlUmVmUHRyKGRvY3VtZW50KSkKKyAgICBpZiAoUmVm
UHRyIHByb3RlY3RlZERvY3VtZW50ID0gZG9jdW1lbnQpCiAgICAgICAgIHByb3RlY3RlZERvY3Vt
ZW50LT5xdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoVGFza1NvdXJjZTo6VXNlckludGVyYWN0aW9u
LCBFdmVudDo6Y3JlYXRlKHR5cGUsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2Fu
Y2VsYWJsZTo6Tm8pKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0
SW5kaWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5jcHAKaW5k
ZXggODZmMTBkOWI1ZWQzNGJjMGUyMGViYjY5MzJmZjRhZDk0Yjc2NjM0Zi4uZDZmYjczYjY2MWIw
NzFmNzNiNDMyYjUwYzEyZDQ4YTNiYjQ4Njc4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9UZXh0SW5kaWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRp
Y2F0b3IuY3BwCkBAIC02OSwxMSArNjksMTEgQEAgUmVmPFRleHRJbmRpY2F0b3I+IFRleHRJbmRp
Y2F0b3I6OmNyZWF0ZShjb25zdCBUZXh0SW5kaWNhdG9yRGF0YSYgZGF0YSkKIAogUmVmUHRyPFRl
eHRJbmRpY2F0b3I+IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZShjb25zdCBTaW1wbGVS
YW5nZSYgcmFuZ2UsIE9wdGlvblNldDxUZXh0SW5kaWNhdG9yT3B0aW9uPiBvcHRpb25zLCBUZXh0
SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbiBwcmVzZW50YXRpb25UcmFuc2l0aW9uLCBG
bG9hdFNpemUgbWFyZ2luKQogewotICAgIGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKHJhbmdlLnN0
YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKS5mcmFtZSgpKTsKKyAgICBSZWZQdHIgZnJhbWUgPSBy
YW5nZS5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1l
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVm
UHRyKGZyYW1lLT5kb2N1bWVudCgpKTsKKyAgICBSZWZQdHIgZG9jdW1lbnQgPSBmcmFtZS0+ZG9j
dW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9VbmRvTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1VuZG9NYW5hZ2VyLmNwcAppbmRleCBiNmM5NmUwZmE4MjZmOTQ3NDlhNjRi
MDFjYWQxOTc0OTExMjQzMzFjLi4zMzcwMDdkMDZlZGZhYjllOTg1YzdmMmY1ZDc0YWY2NjcyNWI0
NzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VuZG9NYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VuZG9NYW5hZ2VyLmNwcApAQCAtNDksNyArNDksNyBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBVbmRvTWFuYWdlcjo6YWRkSXRlbShSZWY8VW5kb0l0ZW0+JiYgaXRl
bSkKICAgICBpZiAoaXRlbS0+dW5kb01hbmFnZXIoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IEludmFsaWRNb2RpZmljYXRpb25FcnJvciwgIlRoaXMgaXRlbSBoYXMgYWxyZWFkeSBiZWVu
IGFkZGVkIHRvIGFuIFVuZG9NYW5hZ2VyIl9zIH07CiAKLSAgICBhdXRvIGZyYW1lID0gbWFrZVJl
ZlB0cihtX2RvY3VtZW50LmZyYW1lKCkpOworICAgIFJlZlB0ciBmcmFtZSA9IG1fZG9jdW1lbnQu
ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2Vj
dXJpdHlFcnJvciwgIkEgYnJvd3NpbmcgY29udGV4dCBpcyByZXF1aXJlZCB0byBhZGQgYW4gVW5k
b0l0ZW0iX3MgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZlbnRI
YW5kbGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1t
CmluZGV4IGU5N2M4Mzc1OWNkZGM5YWVjYjE5ZDc4ZjhlYWNjNzM5M2JlYjI4ZDIuLjQ0MzJhYTdk
ZGIwNGU1MmZhMTllYTIzMWZhOGNmZDhmNzhhNjc0ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2lvcy9FdmVudEhhbmRsZXJJT1MubW0KQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIEV2ZW50SGFu
ZGxlcjo6Zm9jdXNEb2N1bWVudFZpZXcoKQogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKGF1dG8gZnJhbWVWaWV3ID0gbWFrZVJlZlB0cihtX2ZyYW1lLnZpZXcoKSkp
IHsKKyAgICBpZiAoUmVmUHRyIGZyYW1lVmlldyA9IG1fZnJhbWUudmlldygpKSB7CiAgICAgICAg
IGlmIChOU1ZpZXcgKmRvY3VtZW50VmlldyA9IGZyYW1lVmlldy0+ZG9jdW1lbnRWaWV3KCkpIHsK
ICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLmZvY3VzTlNWaWV3KGRvY3VtZW50Vmlldyk7CiAg
ICAgICAgICAgICAvLyBDaGVjayBwYWdlKCkgYWdhaW4gYmVjYXVzZSBmb2N1c05TVmlldyBjYW4g
Y2F1c2UgcmVlbnRyYW5jeS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0Zy
YW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KaW5kZXggMGEw
MzZhMTQ5ZTNhM2UwN2FmMTkyZWYzZWVlNmViMjA3OTUwMTVhMS4uODY5YjMxMDdjMGNhOTJmZDAy
ZjI0Y2I0ZGM5NjU0MjQ0ODNkM2E2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9p
b3MvRnJhbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0K
QEAgLTM5Nyw3ICszOTcsNyBAQCBzdGF0aWMgYm9vbCBub2RlSXNNb3VzZUZvY3VzYWJsZShOb2Rl
JiBub2RlKQogICAgIGlmIChlbGVtZW50LmlzTW91c2VGb2N1c2FibGUoKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICBpZiAoYXV0byBzaGFkb3dSb290ID0gbWFrZVJlZlB0cihlbGVtZW50
LnNoYWRvd1Jvb3QoKSkpIHsKKyAgICBpZiAoUmVmUHRyIHNoYWRvd1Jvb3QgPSBlbGVtZW50LnNo
YWRvd1Jvb3QoKSkgewogICAgICAgICBpZiAoc2hhZG93Um9vdC0+ZGVsZWdhdGVzRm9jdXMoKSkg
ewogICAgICAgICAgICAgZm9yIChhdXRvJiBub2RlIDogY29tcG9zZWRUcmVlRGVzY2VuZGFudHMo
ZWxlbWVudCkpIHsKICAgICAgICAgICAgICAgICBpZiAoaXM8RWxlbWVudD4obm9kZSkgJiYgZG93
bmNhc3Q8RWxlbWVudD4obm9kZSkuaXNNb3VzZUZvY3VzYWJsZSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCmluZGV4IGYzMTRkY2E5YjUwNTllOTNkMGEwMjk1
M2JiMTFlZjhjMjg2N2VlNjQuLjc0OGJmYjk4OGMxNTdmYjhjNDRmZWYyYjFiZDYyYWEzYjRlMjBk
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KQEAgLTE3
OCw3ICsxNzgsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6Zm9jdXNEb2N1bWVudFZpZXcoKQogICAg
IGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGF1dG8gZnJhbWVWaWV3ID0g
bWFrZVJlZlB0cihtX2ZyYW1lLnZpZXcoKSkpIHsKKyAgICBpZiAoUmVmUHRyIGZyYW1lVmlldyA9
IG1fZnJhbWUudmlldygpKSB7CiAgICAgICAgIGlmIChOU1ZpZXcgKmRvY3VtZW50VmlldyA9IGZy
YW1lVmlldy0+ZG9jdW1lbnRWaWV3KCkpIHsKICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLmZv
Y3VzTlNWaWV3KGRvY3VtZW50Vmlldyk7CiAgICAgICAgICAgICAvLyBDaGVjayBwYWdlKCkgYWdh
aW4gYmVjYXVzZSBmb2N1c05TVmlldyBjYW4gY2F1c2UgcmVlbnRyYW5jeS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXJNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9JbWFnZU92ZXJsYXlDb250cm9sbGVyTWFjLm1tCmluZGV4
IGM5MDQ0OWY1ZGQ0M2QyY2FmYWIyNjU1N2E0MGYwYjYwZmYzNTY0M2QuLjQ4MzNjZGQ1ZTgyYzU4
ZTUxYmIzMWMzYmE2MTA0ZjU2NzU2NGM4ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvbWFjL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvSW1hZ2VPdmVybGF5Q29udHJvbGxlck1hYy5tbQpAQCAtNzAsMTEgKzcwLDExIEBA
IHZvaWQgSW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6dXBkYXRlRGF0YURldGVjdG9ySGlnaGxpZ2h0
cyhjb25zdCBIVE1MRWxlbWVudCYgb3ZlCiAgICAgaWYgKGRhdGFEZXRlY3RvclJlc3VsdEVsZW1l
bnRzV2l0aEhpZ2hsaWdodHMgPT0gZGF0YURldGVjdG9yUmVzdWx0RWxlbWVudHMpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGF1dG8gbWFpbkZyYW1lVmlldyA9IG1ha2VSZWZQdHIobV9wYWdlLT5t
YWluRnJhbWUoKS52aWV3KCkpOworICAgIFJlZlB0ciBtYWluRnJhbWVWaWV3ID0gbV9wYWdlLT5t
YWluRnJhbWUoKS52aWV3KCk7CiAgICAgaWYgKCFtYWluRnJhbWVWaWV3KQogICAgICAgICByZXR1
cm47CiAKLSAgICBhdXRvIGZyYW1lVmlldyA9IG1ha2VSZWZQdHIob3ZlcmxheUhvc3QuZG9jdW1l
bnQoKS52aWV3KCkpOworICAgIFJlZlB0ciBmcmFtZVZpZXcgPSBvdmVybGF5SG9zdC5kb2N1bWVu
dCgpLnZpZXcoKTsKICAgICBpZiAoIWZyYW1lVmlldykKICAgICAgICAgcmV0dXJuOwogCkBAIC05
OCw3ICs5OCw3IEBAIHZvaWQgSW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6dXBkYXRlRGF0YURldGVj
dG9ySGlnaGxpZ2h0cyhjb25zdCBIVE1MRWxlbWVudCYgb3ZlCiAKIGJvb2wgSW1hZ2VPdmVybGF5
Q29udHJvbGxlcjo6cGxhdGZvcm1IYW5kbGVNb3VzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYgZXZlbnQpCiB7Ci0gICAgYXV0byBtYWluRnJhbWVWaWV3ID0gbWFrZVJlZlB0cihtX3Bh
Z2UtPm1haW5GcmFtZSgpLnZpZXcoKSk7CisgICAgUmVmUHRyIG1haW5GcmFtZVZpZXcgPSBtX3Bh
Z2UtPm1haW5GcmFtZSgpLnZpZXcoKTsKICAgICBpZiAoIW1haW5GcmFtZVZpZXcpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIApAQCAtMTE3LDcgKzExNyw3IEBAIGJvb2wgSW1hZ2VPdmVybGF5Q29u
dHJvbGxlcjo6cGxhdGZvcm1IYW5kbGVNb3VzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYKIAogICAgICAgICBtb3VzZUlzT3ZlckFjdGl2ZURhdGFEZXRlY3RvckhpZ2hsaWdodEJ1dHRv
biA9IGlzT3ZlckJ1dHRvbjsKICAgICAgICAgbV9hY3RpdmVEYXRhRGV0ZWN0b3JIaWdobGlnaHQg
PSBoaWdobGlnaHQuY29weVJlZigpOwotICAgICAgICBhY3RpdmVEYXRhRGV0ZWN0b3JFbGVtZW50
ID0gbWFrZVJlZlB0cigqZWxlbWVudCk7CisgICAgICAgIGFjdGl2ZURhdGFEZXRlY3RvckVsZW1l
bnQgPSBlbGVtZW50LmdldCgpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTE0MiwxMSAr
MTQyLDExIEBAIGJvb2wgSW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6aGFuZGxlRGF0YURldGVjdG9y
QWN0aW9uKGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKGVsZW1lbnQu
ZG9jdW1lbnQoKS5mcmFtZSgpKTsKKyAgICBSZWZQdHIgZnJhbWUgPSBlbGVtZW50LmRvY3VtZW50
KCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBhdXRvIGZyYW1lVmlldyA9IG1ha2VSZWZQdHIoZWxlbWVudC5kb2N1bWVudCgpLnZpZXcoKSk7
CisgICAgUmVmUHRyIGZyYW1lVmlldyA9IGVsZW1lbnQuZG9jdW1lbnQoKS52aWV3KCk7CiAgICAg
aWYgKCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0KaW5kZXggZTM3
MGMyMDliZTBiNmNjOWI2ZDAzMjMxYzQ1ODAzN2VhMTVlOTllMC4uZGNmMWFjNjEwM2ZkMmUzODdj
ZjIxM2I4YTc2Njg5YjZlY2Q2YWZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCkBAIC00MDAsNyArNDAwLDcgQEAgdm9p
ZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpidWlsZFNlbGVjdGlvbkhpZ2hsaWdodCgpCiAg
ICAgICAgIGlmICghbWFpbkZyYW1lVmlldykKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICBhdXRvIHZpZXdGb3JSYW5nZSA9IG1ha2VSZWZQdHIoc2VsZWN0aW9uUmFuZ2UtPnN0YXJ0LmRv
Y3VtZW50KCkudmlldygpKTsKKyAgICAgICAgUmVmUHRyIHZpZXdGb3JSYW5nZSA9IHNlbGVjdGlv
blJhbmdlLT5zdGFydC5kb2N1bWVudCgpLnZpZXcoKTsKICAgICAgICAgaWYgKCF2aWV3Rm9yUmFu
Z2UpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAppbmRleCBlYmQ0NTY3MDcyZTAxYzMyMWQyYzc4NDYx
Yzc3MzYwNTk2OGVhNzM5Li5kZTk0MDA2MTlmNTJiYjE3N2YxYTdhYWYxMjc1NTU1YzVlZmE4MTQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEu
Y3BwCkBAIC0yMDksNyArMjA5LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1
c3RvbURhdGE6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogICAgICAgICAg
ICAgY29udGludWU7CiAKICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNo
YXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkpCi0gICAgICAgICAgICByZXR1cm4gbWFr
ZVJlZlB0cihXVEY6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oZW50cnkucGxhdGZvcm1EYXRhKS5n
ZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gV1RGOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KGVu
dHJ5LnBsYXRmb3JtRGF0YSkuY29weVJlZigpOwogCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IDY0
NWUwNjgwODdjYmJlMmEzYWE5MDFmOWU4NmZiODY1OTNmZTRlNGEuLmM2MTEyZTExOTRjN2M5OTBm
ZGMxMTRlODI5Y2ZkYjVjNmFmNzU0YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5
U3RyZWFtaW5nLmNwcApAQCAtMjYwLDcgKzI2MCw3IEBAIENETVByaXZhdGVGYWlyUGxheVN0cmVh
bWluZzo6fkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpID0gZGVmYXVsdDsKICNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKIHZvaWQgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzZXRM
b2dnZXIoTG9nZ2VyJiBsb2dnZXIsIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIpCiB7Ci0gICAg
bV9sb2dnZXIgPSBtYWtlUmVmUHRyKGxvZ2dlcik7CisgICAgbV9sb2dnZXIgPSAmbG9nZ2VyOwog
ICAgIG1fbG9nSWRlbnRpZmllciA9IGxvZ0lkZW50aWZpZXI7CiB9CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVh
bWluZ0FWRk9iakMubW0KaW5kZXggNmI5YmYyMTBhNzE5MjI3N2U4MTk0ZTkwNGQ5NWFjZThkZmU2
MTBlNS4uMDE2MmI1YTU0NTA0NTY4YjkzMWY2ODA3MDM2YTQ1NzZjY2M3MzlkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
SW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakMubW0KQEAgLTIzNCw3ICsyMzQsNyBAQCBDRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMoKSA9
IGRlZgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6c2V0TG9nZ2VyKExvZ2dlciYgbG9nZ2VyLCBjb25zdCB2b2lkKiBs
b2dJZGVudGlmaWVyKQogewotICAgIG1fbG9nZ2VyID0gbWFrZVJlZlB0cihsb2dnZXIpOworICAg
IG1fbG9nZ2VyID0gJmxvZ2dlcjsKICAgICBtX2xvZ0lkZW50aWZpZXIgPSBsb2dJZGVudGlmaWVy
OwogfQogI2VuZGlmCkBAIC02MzMsNyArNjMzLDcgQEAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjp+Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmcK
ICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRMb2dnZXIoTG9nZ2VyJiBsb2dnZXIsIGNvbnN0IHZvaWQq
IGxvZ0lkZW50aWZpZXIpCiB7Ci0gICAgbV9sb2dnZXIgPSBtYWtlUmVmUHRyKGxvZ2dlcik7Cisg
ICAgbV9sb2dnZXIgPSAmbG9nZ2VyOwogICAgIG1fbG9nSWRlbnRpZmllciA9IGxvZ0lkZW50aWZp
ZXI7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IGVhNTk0N2M5Y2IxOTJlZGI5NjUwMTk4NGU1MjBkZTM1
MGM1NDI3MGUuLjdkNTFiZWNlNWNhOTU3OGJjNTY5YzA1Yjk5ZjMzZWY2OWUzMTEzOTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5t
bQpAQCAtMjUzLDcgKzI1Myw3IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6aW52
YWxpZGF0ZSgpCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiB2b2lkIFNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakM6OnNldExvZ2dlcihjb25zdCBMb2dnZXImIGxvZ2dlciwgY29uc3Qgdm9pZCog
bG9nSWRlbnRpZmllcikKIHsKLSAgICBtX2xvZ2dlciA9IG1ha2VSZWZQdHIobG9nZ2VyKTsKKyAg
ICBtX2xvZ2dlciA9ICZsb2dnZXI7CiAgICAgbV9sb2dJZGVudGlmaWVyID0gbG9nSWRlbnRpZmll
cjsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2Vu
ZC5jcHAKaW5kZXggYWQ5ZTFjOWVlZTEyOTJiOTc0NzZmMWI1OGM3YTdmNzlmYjMxN2E5MC4uZWEw
NDlhOTk1MzIxN2M2M2JiZTdkNDEzY2RhN2RhYTk3MjYyMjBmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VC
YWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC04Miw3ICs4Miw3IEBAIFJlZlB0
cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZl
SW1hZ2UoQmFja2luZ1N0b3JlCiAgICAgfQogCiAgICAgY2FzZSBEb250Q29weUJhY2tpbmdTdG9y
ZToKLSAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUobWFrZVJlZlB0cihtX3N1cmZh
Y2UuZ2V0KCkpKTsKKyAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoUmVmUHRyIHsg
bV9zdXJmYWNlLmdldCgpIH0pOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCA4MGE4NzhkODQwNmZjMWM3MDIw
YTAxZjM1OTIzNGM1N2VkNDg0Mjk3Li4wN2EzNWM2NTYyMzJhMDUxNDViZGY1MTk0ZGUxMGI1ZDFm
NjYxMmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtNzA2LDcgKzcw
Niw3IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aW52YWxpZGF0ZSgpCiAKIHZvaWQg
U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYgbG9nZ2VyLCBj
b25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKQogewotICAgIG1fbG9nZ2VyID0gbWFrZVJlZlB0cihs
b2dnZXIpOworICAgIG1fbG9nZ2VyID0gJmxvZ2dlcjsKICAgICBtX2xvZ0lkZW50aWZpZXIgPSBs
b2dJZGVudGlmaWVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCmluZGV4
IDg1MWM2Mjk4M2IxYWY4ZTZmOGM5MjhjOTdlOWVkMjE5OTEyY2RhYjcuLjJjYWI4YjE5ZDE0M2U3
OGJkMjI3ZjIyNGM2NGJlMDUxNzA3YmE3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxp
bmUuY3BwCkBAIC03NTgsMTkgKzc1OCwxOSBAQCBSZWY8V2ViQ29yZTo6VHJhY2tQcml2YXRlQmFz
ZT4gQXBwZW5kUGlwZWxpbmU6Om1ha2VXZWJLaXRUcmFjayhpbnQgdHJhY2tJbmRleCkKICAgICBj
YXNlIFN0cmVhbVR5cGU6OkF1ZGlvOiB7CiAgICAgICAgIGF1dG8gc3BlY2lmaWNUcmFjayA9IEF1
ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUobWFrZVdlYWtQdHIobV9wbGF5ZXJQcml2
YXRlKSwgdHJhY2tJbmRleCwgV1RGTW92ZShwYWQpLCBmYWxzZSk7CiAgICAgICAgIGdzdHJlYW1l
clRyYWNrID0gc3BlY2lmaWNUcmFjay5wdHIoKTsKLSAgICAgICAgdHJhY2sgPSBtYWtlUmVmUHRy
KHN0YXRpY19jYXN0PFRyYWNrUHJpdmF0ZUJhc2UqPihzcGVjaWZpY1RyYWNrLnB0cigpKSk7Cisg
ICAgICAgIHRyYWNrID0gc3RhdGljX2Nhc3Q8VHJhY2tQcml2YXRlQmFzZSo+KHNwZWNpZmljVHJh
Y2sucHRyKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBTdHJlYW1UeXBlOjpW
aWRlbzogewogICAgICAgICBhdXRvIHNwZWNpZmljVHJhY2sgPSBWaWRlb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lcjo6Y3JlYXRlKG1ha2VXZWFrUHRyKG1fcGxheWVyUHJpdmF0ZSksIHRyYWNrSW5kZXgs
IFdURk1vdmUocGFkKSwgZmFsc2UpOwogICAgICAgICBnc3RyZWFtZXJUcmFjayA9IHNwZWNpZmlj
VHJhY2sucHRyKCk7Ci0gICAgICAgIHRyYWNrID0gbWFrZVJlZlB0cihzdGF0aWNfY2FzdDxUcmFj
a1ByaXZhdGVCYXNlKj4oc3BlY2lmaWNUcmFjay5wdHIoKSkpOworICAgICAgICB0cmFjayA9IHN0
YXRpY19jYXN0PFRyYWNrUHJpdmF0ZUJhc2UqPihzcGVjaWZpY1RyYWNrLnB0cigpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgU3RyZWFtVHlwZTo6VGV4dDogewogICAgICAgICBh
dXRvIHNwZWNpZmljVHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVh
dGUodHJhY2tJbmRleCwgV1RGTW92ZShwYWQpLCBmYWxzZSk7CiAgICAgICAgIGdzdHJlYW1lclRy
YWNrID0gc3BlY2lmaWNUcmFjay5wdHIoKTsKLSAgICAgICAgdHJhY2sgPSBtYWtlUmVmUHRyKHN0
YXRpY19jYXN0PFRyYWNrUHJpdmF0ZUJhc2UqPihzcGVjaWZpY1RyYWNrLnB0cigpKSk7CisgICAg
ICAgIHRyYWNrID0gc3RhdGljX2Nhc3Q8VHJhY2tQcml2YXRlQmFzZSo+KHNwZWNpZmljVHJhY2su
cHRyKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVy
YXRvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNw
b25zZUdlbmVyYXRvci5tbQppbmRleCA5YmU1ODY4MmNhYzMzYmJhYWE5ZTE4NmQyYTM0YzQ2NDBi
NDE1YzYyLi43YTc5ZGUwOTNiMDUxNDE3MGQwMzQ4OTNlMTIzYjkwMzdhMWFhNWU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VH
ZW5lcmF0b3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9S
YW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCkBAIC0yNjMsNyArMjYzLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbAogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLSAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBtYWtlUmVmUHRyKG1fZ2VuZXJhdG9yLmdldCgp
KTsKKyAgICAgICAgUmVmUHRyIGdlbmVyYXRvciB7IG1fZ2VuZXJhdG9yLmdldCgpIH07CiAgICAg
ICAgIGlmICghZ2VuZXJhdG9yKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBhdXRvKiBk
YXRhID0gZ2VuZXJhdG9yLT5tX21hcC5nZXQobV91cmxTdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCmluZGV4IGIzYTdjODcxZGMzZDQxN2ZjMTYzOTI0
ZTVlNWRkYjNhYzk3YTM5OWUuLmJkZTE1ZDQ1ZGQ4MWMwMzBjZjc2ZTRlMDdkYzc2NDhiZTY3NzNh
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTE1
NzMsOSArMTU3Myw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVyRWxlbWVu
dDo6c2VsZWN0aW9uUHNldWRvU3R5bGUoKSBjb25zdAogICAgICAgICByZXR1cm4gc2VsZWN0aW9u
U3R5bGU7CiAgICAgfQogCi0gICAgaWYgKGF1dG8gcm9vdCA9IG1ha2VSZWZQdHIoZWxlbWVudCgp
LT5jb250YWluaW5nU2hhZG93Um9vdCgpKSkgeworICAgIGlmIChSZWZQdHIgcm9vdCA9IGVsZW1l
bnQoKS0+Y29udGFpbmluZ1NoYWRvd1Jvb3QoKSkgewogICAgICAgICBpZiAocm9vdC0+bW9kZSgp
ID09IFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdlbnQpIHsKLSAgICAgICAgICAgIGF1dG8gY3VycmVu
dEVsZW1lbnQgPSBtYWtlUmVmUHRyKGVsZW1lbnQoKS0+c2hhZG93SG9zdCgpKTsKKyAgICAgICAg
ICAgIFJlZlB0ciBjdXJyZW50RWxlbWVudCA9IGVsZW1lbnQoKS0+c2hhZG93SG9zdCgpOwogICAg
ICAgICAgICAgLy8gV2hlbiBhbiBlbGVtZW50IGhhcyBkaXNwbGF5OiBjb250ZW50cywgdGhpcyBl
bGVtZW50IGRvZXNuJ3QgaGF2ZSBhIHJlbmRlcmVyCiAgICAgICAgICAgICAvLyBhbmQgaXRzIGNo
aWxkcmVuIHdpbGwgcmVuZGVyIGFzIGNoaWxkcmVuIG9mIHRoZSBwYXJlbnQgZWxlbWVudC4KICAg
ICAgICAgICAgIHdoaWxlIChjdXJyZW50RWxlbWVudCAmJiBjdXJyZW50RWxlbWVudC0+aGFzRGlz
cGxheUNvbnRlbnRzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1Mu
bW0KaW5kZXggYjA0MzA3ZWZmNmM5MjA4ZDIwM2E2NTEwYjY1ZTg3Y2VhMTdjN2ZkZC4uYzkyZDE5
Njk3ZWFkNDIzOTdiZTAzOWUzYmVlMzMwNTRkMmQxZmQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAtMjMwMCw3ICsyMzAwLDcgQEAgYm9vbCBSZW5k
ZXJUaGVtZUlPUzo6cGFpbnRNZXRlcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25z
dCBQYWludEluZm8mIHAKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBhdXRvJiByZW5kZXJN
ZXRlciA9IGRvd25jYXN0PFJlbmRlck1ldGVyPihyZW5kZXJlcik7Ci0gICAgYXV0byBlbGVtZW50
ID0gbWFrZVJlZlB0cihyZW5kZXJNZXRlci5tZXRlckVsZW1lbnQoKSk7CisgICAgUmVmUHRyIGVs
ZW1lbnQgPSByZW5kZXJNZXRlci5tZXRlckVsZW1lbnQoKTsKIAogICAgIGF1dG8mIGNvbnRleHQg
PSBwYWludEluZm8uY29udGV4dCgpOwogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcihjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3Rv
cmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VF
dmVudERpc3BhdGNoZXIuY3BwCmluZGV4IDAxZDc5ZDBiMGQyNTVlYjRlOWU3YjhiZWQzYWU2OTVi
ZjkzZmJhMTMuLmQ1YTMwYmVhYTgzM2M1NzM5YmJhYzhhN2NkZGUwMWUwNzQyYTQwZTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnREaXNwYXRjaGVyLmNwcApA
QCAtODUsNyArODUsNyBAQCB2b2lkIFN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoU2Vz
c2lvblN0b3JhZ2VFdmVudHNUb0ZyYW1lcyhQYWdlJiBwYWdlLCBjbwogICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQocGFnZSwga2V5LCBvbGRW
YWx1ZSwgbmV3VmFsdWUsIFN0b3JhZ2VUeXBlOjpTZXNzaW9uLCBzZWN1cml0eU9yaWdpbi5zZWN1
cml0eU9yaWdpbigpLnB0cigpKTsKIAogICAgIGZvciAoYXV0byYgZnJhbWUgOiBmcmFtZXMpIHsK
LSAgICAgICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWZQdHIoZnJhbWUtPmRvY3VtZW50KCkpOwor
ICAgICAgICBSZWZQdHIgZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKICAgICAgICAgYXV0
byByZXN1bHQgPSBkb2N1bWVudC0+ZG9tV2luZG93KCktPnNlc3Npb25TdG9yYWdlKCk7CiAgICAg
ICAgIGlmICghcmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0
d2cub3JnL211bHRpcGFnZS93ZWJzdG9yYWdlLmh0bWwjdGhlLXN0b3JhZ2UtZXZlbnQ6ZXZlbnQt
c3RvcmFnZQogICAgICAgICAgICAgZG9jdW1lbnQtPnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudE9u
V2luZG93KFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgU3RvcmFnZUV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLnN0b3JhZ2VFdmVudCwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybCwg
cmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKSk7CkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgU3Rv
cmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHNUb0ZyYW1lcyhQ
YWdlR3JvdXAmIHBhZ2VHCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlz
cGF0Y2hET01TdG9yYWdlRXZlbnQocGFnZSwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIFN0b3Jh
Z2VUeXBlOjpMb2NhbCwgc2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKS5wdHIoKSk7CiAK
ICAgICBmb3IgKGF1dG8mIGZyYW1lIDogZnJhbWVzKSB7Ci0gICAgICAgIGF1dG8gZG9jdW1lbnQg
PSBtYWtlUmVmUHRyKGZyYW1lLT5kb2N1bWVudCgpKTsKKyAgICAgICAgUmVmUHRyIGRvY3VtZW50
ID0gZnJhbWUtPmRvY3VtZW50KCk7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gZG9jdW1lbnQtPmRv
bVdpbmRvdygpLT5sb2NhbFN0b3JhZ2UoKTsKICAgICAgICAgaWYgKCFyZXN1bHQuaGFzRXhjZXB0
aW9uKCkpIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dlYnN0b3Jh
Z2UuaHRtbCN0aGUtc3RvcmFnZS1ldmVudDpldmVudC1zdG9yYWdlCiAgICAgICAgICAgICBkb2N1
bWVudC0+cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50T25XaW5kb3coVGFza1NvdXJjZTo6RE9NTWFu
aXB1bGF0aW9uLCBTdG9yYWdlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc3RvcmFnZUV2ZW50
LCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsLCByZXN1bHQucmVsZWFzZVJldHVyblZhbHVl
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKaW5kZXggMTk5NzEzMDMzNDlkNzJm
ZDJlZDk4NjA4YWM5ZTdjMmFjYWVmN2I1Mi4uOWRkODViMjFkZjVhZDEzMTkwNWZjMzhlNDI0M2Jk
NGI3ZDZlZTJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKQEAgLTE0MSw3ICsx
NDEsNyBAQCBhdXRvIFNjb3BlOjptYWtlUmVzb2x2ZXJTaGFyaW5nS2V5KCkgLT4gUmVzb2x2ZXJT
aGFyaW5nS2V5CiB7CiAgICAgY29uc3RleHByIGJvb2wgaXNOb25FbXB0eUhhc2hUYWJsZVZhbHVl
ID0gdHJ1ZTsKICAgICByZXR1cm4gewotICAgICAgICBtX2FjdGl2ZVN0eWxlU2hlZXRzLm1hcChb
Jl0oYXV0byYgc2hlZXQpIHsgcmV0dXJuIG1ha2VSZWZQdHIoc2hlZXQtPmNvbnRlbnRzKCkpOyB9
KSwKKyAgICAgICAgbV9hY3RpdmVTdHlsZVNoZWV0cy5tYXAoWyZdKGF1dG8mIHNoZWV0KSB7IHJl
dHVybiBSZWZQdHIgeyAmc2hlZXQtPmNvbnRlbnRzKCkgfTsgfSksCiAgICAgICAgIGlzRm9yVXNl
ckFnZW50U2hhZG93VHJlZSgpLAogICAgICAgICBpc05vbkVtcHR5SGFzaFRhYmxlVmFsdWUKICAg
ICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAKaW5kZXggNDQ0ZWZkMmEwMTdiYzg3ZDJm
NmEzODQwYTljZWU0Yjc3OTExOWE0OC4uZGFmZjE5ZGJmZGU5YzVkYjNiODM0OTZmNzRhYzIwM2Zj
ZDJlNDg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCkBAIC0xMjQsNyArMTI0LDcg
QEAgdm9pZCBTVkdBRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCYgZXZlbnQpCiAg
ICAgICAgICAgICBTdHJpbmcgdXJsID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2Vz
KGhyZWYoKSk7CiAKICAgICAgICAgICAgIGlmICh1cmxbMF0gPT0gJyMnKSB7Ci0gICAgICAgICAg
ICAgICAgYXV0byB0YXJnZXRFbGVtZW50ID0gbWFrZVJlZlB0cih0cmVlU2NvcGUoKS5nZXRFbGVt
ZW50QnlJZCh1cmwuc3Vic3RyaW5nU2hhcmluZ0ltcGwoMSkpKTsKKyAgICAgICAgICAgICAgICBS
ZWZQdHIgdGFyZ2V0RWxlbWVudCA9IHRyZWVTY29wZSgpLmdldEVsZW1lbnRCeUlkKHVybC5zdWJz
dHJpbmdTaGFyaW5nSW1wbCgxKSk7CiAgICAgICAgICAgICAgICAgaWYgKGlzPFNWR1NNSUxFbGVt
ZW50Pih0YXJnZXRFbGVtZW50KSkgewogICAgICAgICAgICAgICAgICAgICBkb3duY2FzdDxTVkdT
TUlMRWxlbWVudD4oKnRhcmdldEVsZW1lbnQpLmJlZ2luQnlMaW5rQWN0aXZhdGlvbigpOwogICAg
ICAgICAgICAgICAgICAgICBldmVudC5zZXREZWZhdWx0SGFuZGxlZCgpOwpAQCAtMTM3LDcgKzEz
Nyw3IEBAIHZvaWQgU1ZHQUVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQmIGV2ZW50
KQogICAgICAgICAgICAgICAgIHRhcmdldCA9ICJfYmxhbmsiOwogICAgICAgICAgICAgZXZlbnQu
c2V0RGVmYXVsdEhhbmRsZWQoKTsKIAotICAgICAgICAgICAgYXV0byBmcmFtZSA9IG1ha2VSZWZQ
dHIoZG9jdW1lbnQoKS5mcmFtZSgpKTsKKyAgICAgICAgICAgIFJlZlB0ciBmcmFtZSA9IGRvY3Vt
ZW50KCkuZnJhbWUoKTsKICAgICAgICAgICAgIGlmICghZnJhbWUpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKGRvY3Vt
ZW50KCkuY29tcGxldGVVUkwodXJsKSwgdGFyZ2V0LCAmZXZlbnQsIFJlZmVycmVyUG9saWN5OjpF
bXB0eVN0cmluZywgZG9jdW1lbnQoKS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9w
YWdhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1l
bnRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3Bw
CmluZGV4IDY5OWU5YTNlMmMyZWU5ZjVhOTMwNzEyZTMxNzIxZDM0YWRlNWY0ODUuLmY2ZmY5NGIz
YmQ4YzcyZDM4MDRkN2Q1NjIyNDk1OTk2MGQwOTU0MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBTVkdB
bmltYXRlRWxlbWVudEJhc2U6OnN0YXJ0QW5pbWF0aW9uKCkKICAgICBpZiAoIXRhcmdldEVsZW1l
bnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGF1dG8gcHJvdGVjdGVkQW5pbWF0b3Ig
PSBtYWtlUmVmUHRyKHRoaXMtPmFuaW1hdG9yKCkpKQorICAgIGlmIChSZWZQdHIgcHJvdGVjdGVk
QW5pbWF0b3IgPSB0aGlzLT5hbmltYXRvcigpKQogICAgICAgICBwcm90ZWN0ZWRBbmltYXRvci0+
c3RhcnQoKnRhcmdldEVsZW1lbnQoKSk7CiB9CiAKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFNW
R0FuaW1hdGVFbGVtZW50QmFzZTo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwcm9ncmVz
cywgdW5zaWduZWQgcmVwZQogICAgIGlmIChjYWxjTW9kZSgpID09IENhbGNNb2RlOjpEaXNjcmV0
ZSkKICAgICAgICAgcHJvZ3Jlc3MgPSBwcm9ncmVzcyA8IDAuNSA/IDAgOiAxOwogCi0gICAgaWYg
KGF1dG8gcHJvdGVjdGVkQW5pbWF0b3IgPSBtYWtlUmVmUHRyKHRoaXMtPmFuaW1hdG9yKCkpKQor
ICAgIGlmIChSZWZQdHIgcHJvdGVjdGVkQW5pbWF0b3IgPSB0aGlzLT5hbmltYXRvcigpKQogICAg
ICAgICBwcm90ZWN0ZWRBbmltYXRvci0+YW5pbWF0ZSgqdGFyZ2V0RWxlbWVudCgpLCBwcm9ncmVz
cywgcmVwZWF0Q291bnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVN
b3Rpb25FbGVtZW50LmNwcAppbmRleCAzNzdkNzlhMGQzMWUwYWZiNWJjOGQ4MmU0ZmQwZTYxMjZk
Y2QzZDhjLi4xYWNjYzNhZWI5MDM3OTNlZTAxYTUyYTJjNGE5MDU1NzY5MTZmMmY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKQEAgLTU4LDcg
KzU4LDcgQEAgUmVmPFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50PiBTVkdBbmltYXRlTW90aW9uRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUKIAogYm9vbCBTVkdBbmltYXRlTW90aW9u
RWxlbWVudDo6aGFzVmFsaWRBdHRyaWJ1dGVUeXBlKCkgY29uc3QKIHsKLSAgICBhdXRvIHRhcmdl
dEVsZW1lbnQgPSBtYWtlUmVmUHRyKHRoaXMtPnRhcmdldEVsZW1lbnQoKSk7CisgICAgUmVmUHRy
IHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7CiAgICAgaWYgKCF0YXJnZXRF
bGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lk
IFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpzdGFydEFuaW1hdGlvbigpCiB7CiAgICAgaWYgKCFo
YXNWYWxpZEF0dHJpYnV0ZVR5cGUoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gdGFyZ2V0
RWxlbWVudCA9IG1ha2VSZWZQdHIodGhpcy0+dGFyZ2V0RWxlbWVudCgpKTsKKyAgICBSZWZQdHIg
dGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsKICAgICBpZiAoIXRhcmdldEVs
ZW1lbnQpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoQWZmaW5lVHJhbnNmb3JtKiB0cmFuc2Zv
cm0gPSB0YXJnZXRFbGVtZW50LT5zdXBwbGVtZW50YWxUcmFuc2Zvcm0oKSkKQEAgLTIwNiw3ICsy
MDYsNyBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpidWlsZFRyYW5zZm9ybUZvclBy
b2dyZXNzKEFmZmluZVRyYW5zZm9ybSogdHJhbnNmbwogCiB2b2lkIFNWR0FuaW1hdGVNb3Rpb25F
bGVtZW50OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVk
IHJlcGVhdENvdW50KQogewotICAgIGF1dG8gdGFyZ2V0RWxlbWVudCA9IG1ha2VSZWZQdHIodGhp
cy0+dGFyZ2V0RWxlbWVudCgpKTsKKyAgICBSZWZQdHIgdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRh
cmdldEVsZW1lbnQoKTsKICAgICBpZiAoIXRhcmdldEVsZW1lbnQpCiAgICAgICAgIHJldHVybjsK
IApAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNhbGN1
bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQKIHZvaWQgU1ZHQW5p
bWF0ZU1vdGlvbkVsZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KCkKIHsKICAgICAvLyBXZSBh
Y2N1bXVsYXRlIHRvIHRoZSB0YXJnZXQgZWxlbWVudCB0cmFuc2Zvcm0gbGlzdCBzbyB0aGVyZSBp
cyBub3QgbXVjaCB0byBkbyBoZXJlLgotICAgIGF1dG8gdGFyZ2V0RWxlbWVudCA9IG1ha2VSZWZQ
dHIodGhpcy0+dGFyZ2V0RWxlbWVudCgpKTsKKyAgICBSZWZQdHIgdGFyZ2V0RWxlbWVudCA9IHRo
aXMtPnRhcmdldEVsZW1lbnQoKTsKICAgICBpZiAoIXRhcmdldEVsZW1lbnQpCiAgICAgICAgIHJl
dHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5z
aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcApp
bmRleCA1MWI4OGNjMGZlZWVhYjgxMzA1N2U5NWY5NGQ3ZDQxZTA2ZTE4NDYwLi44NjMyZjAyZjRi
ZjZiZDVjMjAxNzVmMzEzNjMzNTYxMzJjYWFmNGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcApAQCAtMjU4LDcgKzI1OCw3IEBAIFJlZlB0cjxFbGVt
ZW50PiBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnRha2VFbGVtZW50RnJvbVBlbmRpbmdSZXNvdXJj
ZXNGb3JSZW1vdmFsCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byYgcmVzb3Vy
Y2VTZXQgPSBpdC0+dmFsdWU7Ci0gICAgYXV0byBmaXJzdEVsZW1lbnQgPSBtYWtlUmVmUHRyKHJl
c291cmNlU2V0LmJlZ2luKCkuZ2V0KCkpOworICAgIFJlZlB0ciBmaXJzdEVsZW1lbnQgPSByZXNv
dXJjZVNldC5iZWdpbigpLmdldCgpOwogICAgIGlmICghZmlyc3RFbGVtZW50KQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IGJhNTQyNjA2
YmIwOWJhNjk4ODczZGJkN2FlMDhhMTNlMjJhYWZkYmYuLjE1Y2FhNDVjZjkzYzVmYjg0Yzc4MTQ5
YjE1Mzk4MmRiNDdiZDE2OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTMzMyw3
ICszMzMsNyBAQCB2b2lkIFNWR0VsZW1lbnQ6OnJlbW92ZUVsZW1lbnRSZWZlcmVuY2UoKQogewog
ICAgIGlmICghbV9zdmdSYXJlRGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChhdXRvIGRl
c3RpbmF0aW9uID0gbWFrZVJlZlB0cihtX3N2Z1JhcmVEYXRhLT5yZWZlcmVuY2VUYXJnZXQoKSkp
CisgICAgaWYgKFJlZlB0ciBkZXN0aW5hdGlvbiA9IG1fc3ZnUmFyZURhdGEtPnJlZmVyZW5jZVRh
cmdldCgpKQogICAgICAgICBkZXN0aW5hdGlvbi0+cmVtb3ZlUmVmZXJlbmNpbmdFbGVtZW50KCp0
aGlzKTsKIH0KIApAQCAtMzc3LDcgKzM3Nyw3IEBAIFJlZlB0cjxTVkdVc2VFbGVtZW50PiBTVkdF
bGVtZW50Ojpjb3JyZXNwb25kaW5nVXNlRWxlbWVudCgpIGNvbnN0CiB2b2lkIFNWR0VsZW1lbnQ6
OnNldENvcnJlc3BvbmRpbmdFbGVtZW50KFNWR0VsZW1lbnQqIGNvcnJlc3BvbmRpbmdFbGVtZW50
KQogewogICAgIGlmIChtX3N2Z1JhcmVEYXRhKSB7Ci0gICAgICAgIGlmIChhdXRvIG9sZENvcnJl
c3BvbmRpbmdFbGVtZW50ID0gbWFrZVJlZlB0cihtX3N2Z1JhcmVEYXRhLT5jb3JyZXNwb25kaW5n
RWxlbWVudCgpKSkKKyAgICAgICAgaWYgKFJlZlB0ciBvbGRDb3JyZXNwb25kaW5nRWxlbWVudCA9
IG1fc3ZnUmFyZURhdGEtPmNvcnJlc3BvbmRpbmdFbGVtZW50KCkpCiAgICAgICAgICAgICBvbGRD
b3JyZXNwb25kaW5nRWxlbWVudC0+bV9zdmdSYXJlRGF0YS0+cmVtb3ZlSW5zdGFuY2UoKnRoaXMp
OwogICAgIH0KICAgICBpZiAobV9zdmdSYXJlRGF0YSB8fCBjb3JyZXNwb25kaW5nRWxlbWVudCkK
QEAgLTY0Myw3ICs2NDMsNyBAQCB2b2lkIFNWR0VsZW1lbnQ6OmFuaW1hdG9yV2lsbEJlRGVsZXRl
ZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQogc3RkOjpvcHRpb25hbDxTdHls
ZTo6RWxlbWVudFN0eWxlPiBTVkdFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVu
ZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSopCiB7CiAgICAgLy8gSWYg
dGhlIGVsZW1lbnQgaXMgaW4gYSA8dXNlPiB0cmVlIHdlIGdldCB0aGUgc3R5bGUgZnJvbSB0aGUg
ZGVmaW5pdGlvbiB0cmVlLgotICAgIGlmIChhdXRvIHN0eWxlRWxlbWVudCA9IG1ha2VSZWZQdHIo
dGhpcy0+Y29ycmVzcG9uZGluZ0VsZW1lbnQoKSkpIHsKKyAgICBpZiAoUmVmUHRyIHN0eWxlRWxl
bWVudCA9IHRoaXMtPmNvcnJlc3BvbmRpbmdFbGVtZW50KCkpIHsKICAgICAgICAgYXV0byBzdHls
ZSA9IHN0eWxlRWxlbWVudC0+cmVzb2x2ZVN0eWxlKCZwYXJlbnRTdHlsZSk7CiAgICAgICAgIFN0
eWxlOjpBZGp1c3Rlcjo6YWRqdXN0U1ZHRWxlbWVudFN0eWxlKCpzdHlsZS5yZW5kZXJTdHlsZSwg
KnRoaXMpOwogICAgICAgICByZXR1cm4gc3R5bGU7CkBAIC02NzYsNyArNjc2LDcgQEAgY29uc3Qg
UmVuZGVyU3R5bGUqIFNWR0VsZW1lbnQ6OmNvbXB1dGVkU3R5bGUoUHNldWRvSWQgcHNldWRvRWxl
bWVudFNwZWNpZmllcikKICAgICAgICAgcmV0dXJuIEVsZW1lbnQ6OmNvbXB1dGVkU3R5bGUocHNl
dWRvRWxlbWVudFNwZWNpZmllcik7CiAKICAgICBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5
bGUgPSBudWxscHRyOwotICAgIGlmIChhdXRvIHBhcmVudCA9IG1ha2VSZWZQdHIocGFyZW50T3JT
aGFkb3dIb3N0RWxlbWVudCgpKSkgeworICAgIGlmIChSZWZQdHIgcGFyZW50ID0gcGFyZW50T3JT
aGFkb3dIb3N0RWxlbWVudCgpKSB7CiAgICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gcGFyZW50
LT5yZW5kZXJlcigpKQogICAgICAgICAgICAgcGFyZW50U3R5bGUgPSAmcmVuZGVyZXItPnN0eWxl
KCk7CiAgICAgfQpAQCAtOTc5LDcgKzk3OSw3IEBAIHZvaWQgU1ZHRWxlbWVudDo6dXBkYXRlUmVs
YXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oYm9vbCBoYXNSZWxhdGl2ZUxlbmd0aHMsIFNWR0VsCiAg
ICAgfQogCiAgICAgaWYgKGlzPFNWR0dyYXBoaWNzRWxlbWVudD4oZWxlbWVudCkpIHsKLSAgICAg
ICAgaWYgKGF1dG8gcGFyZW50ID0gbWFrZVJlZlB0cihwYXJlbnROb2RlKCkpOyBpczxTVkdFbGVt
ZW50PihwYXJlbnQpKQorICAgICAgICBpZiAoUmVmUHRyIHBhcmVudCA9IHBhcmVudE5vZGUoKTsg
aXM8U1ZHRWxlbWVudD4ocGFyZW50KSkKICAgICAgICAgICAgIGRvd25jYXN0PFNWR0VsZW1lbnQ+
KCpwYXJlbnQpLnVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKGhhc1JlbGF0aXZlTGVu
Z3RocywgKnRoaXMpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
RGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXggNzUxYWRhYzEyOGE4YjNmOGY4MDE3OTMw
NzU4MjNiZWVjZmQ5NGJjZS4uMTUyYzk4NWZkOGU5NWFlOTk1N2U2ZTIxZDZiZjJhMTBjNDU0YmRk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudC5jcHAKQEAgLTE1OCw3ICsxNTgsNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlcgogICAg
IGlmICghaW5wdXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gbGlnaHRF
bGVtZW50ID0gbWFrZVJlZlB0cihTVkdGRUxpZ2h0RWxlbWVudDo6ZmluZExpZ2h0RWxlbWVudCh0
aGlzKSk7CisgICAgUmVmUHRyIGxpZ2h0RWxlbWVudCA9IFNWR0ZFTGlnaHRFbGVtZW50OjpmaW5k
TGlnaHRFbGVtZW50KHRoaXMpOwogICAgIGlmICghbGlnaHRFbGVtZW50KQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUlt
YWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3Bw
CmluZGV4IDE4Zjc4MDlmYWUwMjkyNDc0YmZmMDVmYjE0MDE3YzJkZTY2MWQzNDYuLmUxNDY4OGE1
ZWIxNzZmMDJhMTZjMDU1MGYwODExOTVkM2MyN2VjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFSW1hZ2VFbGVtZW50LmNwcApAQCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQgU1ZHRkVJbWFnZUVs
ZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzCiAgICAgaWYgKCFpc0Nvbm5lY3RlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBh
dXRvIHBhcmVudCA9IG1ha2VSZWZQdHIocGFyZW50RWxlbWVudCgpKTsKKyAgICBSZWZQdHIgcGFy
ZW50ID0gcGFyZW50RWxlbWVudCgpOwogCiAgICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC0+aGFz
VGFnTmFtZShTVkdOYW1lczo6ZmlsdGVyVGFnKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAKaW5kZXggM2QxM2QxNmUxMDdmZTQ0Y2YyMGI1
NzlhNWYxNzY5NTJkODU4NmE4My4uMGRhOWMzM2EyZjY3MGUwMWY1NzAyNjVmZTk0NjFlZjRiZWJi
ZjRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCkBAIC0xMjUs
NyArMTI1LDcgQEAgdm9pZCBTVkdGRUxpZ2h0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmkKIHZvaWQgU1ZHRkVMaWdodEVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7
CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7
Ci0gICAgICAgIGF1dG8gcGFyZW50ID0gbWFrZVJlZlB0cihwYXJlbnRFbGVtZW50KCkpOworICAg
ICAgICBSZWZQdHIgcGFyZW50ID0gcGFyZW50RWxlbWVudCgpOwogICAgICAgICBpZiAoIXBhcmVu
dCkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgU1ZHRkVM
aWdodEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQog
CiAgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKQog
ICAgICAgICByZXR1cm47Ci0gICAgYXV0byBwYXJlbnQgPSBtYWtlUmVmUHRyKHBhcmVudE5vZGUo
KSk7CisgICAgUmVmUHRyIHBhcmVudCA9IHBhcmVudE5vZGUoKTsKICAgICBpZiAoIXBhcmVudCkK
ICAgICAgICAgcmV0dXJuOwogICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gcGFyZW50LT5y
ZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdo
dGluZ0VsZW1lbnQuY3BwCmluZGV4IDI2NGQxOTdlZjM2NTZiYmZiODQxYjY3NjA0M2I2MDMxZDFj
ZWNkODEuLjliN2NlNDBhYjk3MTZhZTRmMzM1ZjU0YjI0Y2RhNDU5YTg0MjlhNTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAK
QEAgLTE2Nyw3ICsxNjcsNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZQogICAgIGlmICghaW5w
dXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gbGlnaHRFbGVtZW50ID0g
bWFrZVJlZlB0cihTVkdGRUxpZ2h0RWxlbWVudDo6ZmluZExpZ2h0RWxlbWVudCh0aGlzKSk7Cisg
ICAgUmVmUHRyIGxpZ2h0RWxlbWVudCA9IFNWR0ZFTGlnaHRFbGVtZW50OjpmaW5kTGlnaHRFbGVt
ZW50KHRoaXMpOwogICAgIGlmICghbGlnaHRFbGVtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKaW5kZXggZjJhNmVlMDhkYjdhMGQyZGYzYmQ4
Y2M1Mzc1ZDMxNzk4YjUxMjFlMi4uZmY1MjIzMDk0NjZiMDQwYmVmMDg5ZDE1N2IzODZkZmZiYjA1
YzYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKQEAgLTEyNyw4ICsxMjcsNyBAQCB2b2lkIGlu
dmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQoU1ZHRWxlbWVudCogZWxlbWVudCkKICAgICBp
ZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcGFyZW50ID0gbWFrZVJl
ZlB0cihlbGVtZW50LT5wYXJlbnROb2RlKCkpOwotCisgICAgUmVmUHRyIHBhcmVudCA9IGVsZW1l
bnQtPnBhcmVudE5vZGUoKTsKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwCmluZGV4IGJmNWQ2NzE1NThj
MzhjMGM3NTQyNzIwMDM5YWIzNDAxMjQ2MzJmM2UuLjViMzQxMjZmMTEzNTFhNjdhNGE1NmMwYTBi
OWFlZWNlN2YyNzA0NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFj
ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQu
Y3BwCkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBTVkdGb250RmFjZUVsZW1lbnQ6OnJlYnVpbGRG
b250RmFjZSgpCiAKICAgICAgICAgdW5zaWduZWQgc3JjTGVuZ3RoID0gc3JjTGlzdCA/IHNyY0xp
c3QtPmxlbmd0aCgpIDogMDsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNyY0xl
bmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBpdGVtID0gbWFrZVJlZlB0cihkb3du
Y2FzdDxDU1NGb250RmFjZVNyY1ZhbHVlPihzcmNMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNr
KGkpKSkpCisgICAgICAgICAgICBpZiAoUmVmUHRyIGl0ZW0gPSBkb3duY2FzdDxDU1NGb250RmFj
ZVNyY1ZhbHVlPihzcmNMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKSkKICAgICAgICAg
ICAgICAgICBpdGVtLT5zZXRTVkdGb250RmFjZUVsZW1lbnQodGhpcyk7CiAgICAgICAgIH0KICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VGb3JtYXRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUZvcm1hdEVsZW1lbnQuY3Bw
CmluZGV4IGI2MDc4NTliOGY1Y2M3NmY4NzgyOTIwMDNiZDNkYzRkMTk4MmY3M2IuLjU3MjdmMjhh
OGI3OWQxMjIwN2M5NjNiNWM2YWY0OGRjYTYxMGQ3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGb250RmFjZUZvcm1hdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGb250RmFjZUZvcm1hdEVsZW1lbnQuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHZvaWQg
U1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFu
Z2UmIGNoYW5nZSkKICAgICBpZiAoIXBhcmVudE5vZGUoKSB8fCAhcGFyZW50Tm9kZSgpLT5oYXNU
YWdOYW1lKGZvbnRfZmFjZV91cmlUYWcpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgYXV0
byBhbmNlc3RvciA9IG1ha2VSZWZQdHIocGFyZW50Tm9kZSgpLT5wYXJlbnROb2RlKCkpOworICAg
IFJlZlB0ciBhbmNlc3RvciA9IHBhcmVudE5vZGUoKS0+cGFyZW50Tm9kZSgpOwogICAgIGlmICgh
YW5jZXN0b3IgfHwgIWFuY2VzdG9yLT5oYXNUYWdOYW1lKGZvbnRfZmFjZV9zcmNUYWcpKQogICAg
ICAgICByZXR1cm47CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9u
dEZhY2VVcmlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVs
ZW1lbnQuY3BwCmluZGV4IGU0OWY0NDg3YzRlMmI2M2M1MWUyODgzMjhmNTcyYzk4NWIzYmMxOTEu
LjAzMGE5M2RhODlmYzU5ZDgwNDVkNjdjMGRhNTgyMjI3MjdjOGY1ZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCkBAIC03Nyw5ICs3Nyw5IEBAIHZv
aWQgU1ZHRm9udEZhY2VVcmlFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFu
Z2UmIGNoYW5nZSkKICAgICBpZiAoIXBhcmVudE5vZGUoKSB8fCAhcGFyZW50Tm9kZSgpLT5oYXNU
YWdOYW1lKGZvbnRfZmFjZV9zcmNUYWcpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgYXV0
byBncmFuZHBhcmVudCA9IG1ha2VSZWZQdHIocGFyZW50Tm9kZSgpLT5wYXJlbnROb2RlKCkpOwot
ICAgIGlmIChncmFuZHBhcmVudCAmJiBncmFuZHBhcmVudC0+aGFzVGFnTmFtZShmb250X2ZhY2VU
YWcpKQotICAgICAgICBkb3duY2FzdDxTVkdGb250RmFjZUVsZW1lbnQ+KCpncmFuZHBhcmVudCku
cmVidWlsZEZvbnRGYWNlKCk7CisgICAgUmVmUHRyIGdyYW5kUGFyZW50ID0gcGFyZW50Tm9kZSgp
LT5wYXJlbnROb2RlKCk7CisgICAgaWYgKGdyYW5kUGFyZW50ICYmIGdyYW5kUGFyZW50LT5oYXNU
YWdOYW1lKGZvbnRfZmFjZVRhZykpCisgICAgICAgIGRvd25jYXN0PFNWR0ZvbnRGYWNlRWxlbWVu
dD4oKmdyYW5kUGFyZW50KS5yZWJ1aWxkRm9udEZhY2UoKTsKIH0KIAogTm9kZTo6SW5zZXJ0ZWRJ
bnRvQW5jZXN0b3JSZXN1bHQgU1ZHRm9udEZhY2VVcmlFbGVtZW50OjppbnNlcnRlZEludG9BbmNl
c3RvcihJbnNlcnRpb25UeXBlIGluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9m
SW5zZXJ0ZWRUcmVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25P
YmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxl
bWVudC5jcHAKaW5kZXggM2E1MTRjYjM4NDFjNDI4ZTYyZGUxMmE2NTFiY2Q2MGY1ZTVlZTYzZC4u
YmMwMDY4NDhiZjM2YjY1YmI5NzQyNTMxZWFmMDc3ZmYzNmJiNzI5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCkBAIC0xMTEsNyArMTExLDcg
QEAgYm9vbCBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgLy8gTm90ZSB0aGF0IHdlIGN1cnJlbnRseSBkbyBub3Qg
c3VwcG9ydCBmb3JlaWduT2JqZWN0IGluc3RhbnRpYXRpb24gdmlhIDx1c2U+LCBoZW5jZSBpdCBp
cyBzYWZlCiAgICAgLy8gdG8gdXNlIHBhcmVudEVsZW1lbnQoKSBoZXJlLiBJZiB0aGF0IGNoYW5n
ZXMsIHRoaXMgbWV0aG9kIHNob3VsZCBiZSB1cGRhdGVkIHRvIHVzZQogICAgIC8vIHBhcmVudE9y
U2hhZG93SG9zdEVsZW1lbnQoKSBpbnN0ZWFkLgotICAgIGF1dG8gYW5jZXN0b3IgPSBtYWtlUmVm
UHRyKHBhcmVudEVsZW1lbnQoKSk7CisgICAgUmVmUHRyIGFuY2VzdG9yID0gcGFyZW50RWxlbWVu
dCgpOwogICAgIHdoaWxlIChhbmNlc3RvciAmJiBhbmNlc3Rvci0+aXNTVkdFbGVtZW50KCkpIHsK
ICAgICAgICAgaWYgKGFuY2VzdG9yLT5yZW5kZXJlcigpICYmIGFuY2VzdG9yLT5yZW5kZXJlcigp
LT5pc1NWR0hpZGRlbkNvbnRhaW5lcigpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aENvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0xlbmd0aENvbnRleHQuY3BwCmluZGV4IGU2ODg3N2RmY2M5ZTY3NThk
ZDJiMGQ3NjEwNmFjMzljODYwNzZkMTIuLmZmNmI0ZjAxNTBlYzNhYWNmMTA1MDU2MzYzYTQwOGVh
NDY3YmQ1MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29udGV4dC5jcHAKQEAgLTMw
Miw3ICszMDIsNyBAQCBib29sIFNWR0xlbmd0aENvbnRleHQ6OmRldGVybWluZVZpZXdwb3J0KEZs
b2F0U2l6ZSYgdmlld3BvcnRTaXplKSBjb25zdAogICAgIH0KIAogICAgIC8vIFRha2Ugc2l6ZSBm
cm9tIG5lYXJlc3Qgdmlld3BvcnQgZWxlbWVudC4KLSAgICBhdXRvIHZpZXdwb3J0RWxlbWVudCA9
IG1ha2VSZWZQdHIobV9jb250ZXh0LT52aWV3cG9ydEVsZW1lbnQoKSk7CisgICAgUmVmUHRyIHZp
ZXdwb3J0RWxlbWVudCA9IG1fY29udGV4dC0+dmlld3BvcnRFbGVtZW50KCk7CiAgICAgaWYgKCFp
czxTVkdTVkdFbGVtZW50Pih2aWV3cG9ydEVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAppbmRleCA5MGMxY2ZmNDVkMTQzMjgx
NjIwMTEzNmIxY2U4ZjU5YzViOGQ2NDhmLi40OTdjOWM1NzFhZGM4NDE2NjJhMDMwNmU0OTFhZGUw
OGY0YTYwODM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCkBAIC0xMDcsNyAr
MTA3LDcgQEAgUmVmUHRyPEZyYW1lPiBTVkdTVkdFbGVtZW50OjpmcmFtZUZvckN1cnJlbnRTY2Fs
ZSgpIGNvbnN0CiAgICAgLy8gSWYgdGhlIGRvY3VtZW50IGlzIGVtYmVkZGVkLCB0aGUgc2NhbGlu
ZyBpcyBoYW5kbGVkIGJ5IHRoZSBob3N0IHJlbmRlcmVyLgogICAgIGlmICghaXNDb25uZWN0ZWQo
KSB8fCAhaXNPdXRlcm1vc3RTVkdTVkdFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKGRvY3VtZW50KCkuZnJhbWUoKSk7CisgICAg
UmVmUHRyIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIHJldHVybiBmcmFtZSAmJiBm
cmFtZS0+aXNNYWluRnJhbWUoKSA/IGZyYW1lIDogbnVsbHB0cjsKIH0KIApAQCAtMjczLDcgKzI3
Myw3IEBAIGJvb2wgU1ZHU1ZHRWxlbWVudDo6Y2hlY2tFbmNsb3N1cmUoUmVmPFNWR0VsZW1lbnQ+
JiYgZWxlbWVudCwgU1ZHUmVjdCYgcmVjdCkKIAogdm9pZCBTVkdTVkdFbGVtZW50OjpkZXNlbGVj
dEFsbCgpCiB7Ci0gICAgaWYgKGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKGRvY3VtZW50KCkuZnJh
bWUoKSkpCisgICAgaWYgKFJlZlB0ciBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKSkKICAgICAg
ICAgZnJhbWUtPnNlbGVjdGlvbigpLmNsZWFyKCk7CiB9CiAKQEAgLTM2Niw3ICszNjYsNyBAQCBB
ZmZpbmVUcmFuc2Zvcm0gU1ZHU1ZHRWxlbWVudDo6bG9jYWxDb29yZGluYXRlU3BhY2VUcmFuc2Zv
cm0oU1ZHTG9jYXRhYmxlOjpDVE1TYwogICAgICAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShs
b2NhdGlvbi54KCkgLSB2aWV3Qm94VHJhbnNmb3JtLmUoKSwgbG9jYXRpb24ueSgpIC0gdmlld0Jv
eFRyYW5zZm9ybS5mKCkpOwogCiAgICAgICAgICAgICAvLyBSZXNwZWN0IHNjcm9sbCBvZmZzZXQu
Ci0gICAgICAgICAgICBpZiAoYXV0byB2aWV3ID0gbWFrZVJlZlB0cihkb2N1bWVudCgpLnZpZXco
KSkpIHsKKyAgICAgICAgICAgIGlmIChSZWZQdHIgdmlldyA9IGRvY3VtZW50KCkudmlldygpKSB7
CiAgICAgICAgICAgICAgICAgTGF5b3V0UG9pbnQgc2Nyb2xsUG9zaXRpb24gPSB2aWV3LT5zY3Jv
bGxQb3NpdGlvbigpOwogICAgICAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uLnNjYWxlKHpvb21G
YWN0b3IpOwogICAgICAgICAgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLXNjcm9sbFBvc2l0
aW9uKTsKQEAgLTY4OSw3ICs2ODksNyBAQCBFbGVtZW50KiBTVkdTVkdFbGVtZW50OjpnZXRFbGVt
ZW50QnlJZChjb25zdCBBdG9tU3RyaW5nJiBpZCkKICAgICBpZiAoaWQuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBlbGVtZW50ID0gbWFrZVJlZlB0cih0cmVl
U2NvcGUoKS5nZXRFbGVtZW50QnlJZChpZCkpOworICAgIFJlZlB0ciBlbGVtZW50ID0gdHJlZVNj
b3BlKCkuZ2V0RWxlbWVudEJ5SWQoaWQpOwogICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQtPmlz
RGVzY2VuZGFudE9mKCp0aGlzKSkKICAgICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCk7CiAgICAg
aWYgKHRyZWVTY29wZSgpLmNvbnRhaW5zTXVsdGlwbGVFbGVtZW50c1dpdGhJZChpZCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAKaW5kZXggMjViODJhMjlhNjc0MDE2YTc2
MmVkZDU5Y2I1ODhlYTY5YWQwZTNhZC4uNGZiN2EwODJjYzg1MjQzNjZmODY5NTU0MWYyNjE1NGY3
YWJhYmYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAKQEAgLTU4LDcg
KzU4LDcgQEAgYm9vbCBTVkdTdHlsZUVsZW1lbnQ6OmRpc2FibGVkKCkgY29uc3QKIAogdm9pZCBT
VkdTdHlsZUVsZW1lbnQ6OnNldERpc2FibGVkKGJvb2wgc2V0RGlzYWJsZWQpCiB7Ci0gICAgaWYg
KGF1dG8gc3R5bGVTaGVldCA9IG1ha2VSZWZQdHIoc2hlZXQoKSkpCisgICAgaWYgKFJlZlB0ciBz
dHlsZVNoZWV0ID0gc2hlZXQoKSkKICAgICAgICAgc3R5bGVTaGVldC0+c2V0RGlzYWJsZWQoc2V0
RGlzYWJsZWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAppbmRleCA3
NjlhYTFhMTJkZmVjYjk1ZTg2YzYxODkyMDBjMWQ3ZWI2Mjg2NjYwLi5lMTFhZWI1MTdiNDVhNWQx
NjZkZGQwYTEyZjM5NDhmNWMyZDBhNTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVFJlZkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVu
dC5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIFNWR1RSZWZFbGVtZW50OjpkZXRhY2hUYXJn
ZXQoKQogICAgIFN0cmluZyBlbXB0eUNvbnRlbnQ7CiAKICAgICBBU1NFUlQoc2hhZG93Um9vdCgp
KTsKLSAgICBhdXRvIGNvbnRhaW5lciA9IG1ha2VSZWZQdHIoc2hhZG93Um9vdCgpLT5maXJzdENo
aWxkKCkpOworICAgIFJlZlB0ciBjb250YWluZXIgPSBzaGFkb3dSb290KCktPmZpcnN0Q2hpbGQo
KTsKICAgICBpZiAoY29udGFpbmVyKQogICAgICAgICBjb250YWluZXItPnNldFRleHRDb250ZW50
KGVtcHR5Q29udGVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFu
c2Zvcm1MaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmNwcApp
bmRleCA2Mzc1YjYyMDUzYmMyMjI1NGRlNDFkMDA5MDY1NDlkOTIxMjdiZTY3Li41NTZjZjg1NTQ5
YWQ0MTQ2ZmIwZWY4N2YyZmJlMzJmNmE1Mjk2NDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Ry
YW5zZm9ybUxpc3QuY3BwCkBAIC00NCwxNCArNDQsMTQgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPFNW
R1RyYW5zZm9ybT4+IFNWR1RyYW5zZm9ybUxpc3Q6OmNvbnNvbGlkYXRlKCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICBpZiAobV9pdGVtcy5zaXplKCkgPT0gMSkKLSAgICAgICAgcmV0
dXJuIG1ha2VSZWZQdHIoYXQoMCkuZ2V0KCkpOworICAgICAgICByZXR1cm4gUmVmUHRyIHsgYXQo
MCkucHRyKCkgfTsKIAogICAgIGF1dG8gbmV3SXRlbSA9IFNWR1RyYW5zZm9ybTo6Y3JlYXRlKGNv
bmNhdGVuYXRlKCkpOwogICAgIGNsZWFySXRlbXMoKTsKIAogICAgIGF1dG8gaXRlbSA9IGFwcGVu
ZChXVEZNb3ZlKG5ld0l0ZW0pKTsKICAgICBjb21taXRDaGFuZ2UoKTsKLSAgICByZXR1cm4gbWFr
ZVJlZlB0cihpdGVtLmdldCgpKTsKKyAgICByZXR1cm4gUmVmUHRyIHsgaXRlbS5wdHIoKSB9Owog
fQogCiBBZmZpbmVUcmFuc2Zvcm0gU1ZHVHJhbnNmb3JtTGlzdDo6Y29uY2F0ZW5hdGUoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCmluZGV4IGIyYjAyNjM1YzQwNjdhMTBj
OWZmYzZiNTQ5ZDE5OThjMDNkYTgxZWUuLmQ1ZWI3YmRjMzVmNDc4ZjA3ZjMxZmYxNjliZjJiZTEy
YWQ2MThkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKQEAgLTE0Nyw3ICsx
NDcsNyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnRyYW5zZmVyU2l6ZUF0dHJpYnV0ZXNUb1Rhcmdl
dENsb25lKFNWR0VsZW1lbnQmIHNoYWRvd0VsZW1lbgogICAgIH0gZWxzZSBpZiAoaXM8U1ZHU1ZH
RWxlbWVudD4oc2hhZG93RWxlbWVudCkpIHsKICAgICAgICAgLy8gU3BlYyAoPHVzZT4gb24gPHN2
Zz4pOiBJZiBhdHRyaWJ1dGVzIHdpZHRoIGFuZC9vciBoZWlnaHQgYXJlIHByb3ZpZGVkIG9uIHRo
ZSAndXNlJyBlbGVtZW50LCB0aGVuIHRoZXNlCiAgICAgICAgIC8vIHZhbHVlcyB3aWxsIG92ZXJy
aWRlIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZXMgb24gdGhlICdzdmcnIGluIHRoZSBnZW5l
cmF0ZWQgdHJlZS4KLSAgICAgICAgYXV0byBjb3JyZXNwb25kaW5nRWxlbWVudCA9IG1ha2VSZWZQ
dHIoc2hhZG93RWxlbWVudC5jb3JyZXNwb25kaW5nRWxlbWVudCgpKTsKKyAgICAgICAgUmVmUHRy
IGNvcnJlc3BvbmRpbmdFbGVtZW50ID0gc2hhZG93RWxlbWVudC5jb3JyZXNwb25kaW5nRWxlbWVu
dCgpOwogICAgICAgICBzaGFkb3dFbGVtZW50LnNldEF0dHJpYnV0ZShTVkdOYW1lczo6d2lkdGhB
dHRyLCB3aWR0aCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpID8gQXRvbVN0cmluZyh3aWR0aCgp
LnZhbHVlQXNTdHJpbmcoKSkgOiAoY29ycmVzcG9uZGluZ0VsZW1lbnQgPyBjb3JyZXNwb25kaW5n
RWxlbWVudC0+Z2V0QXR0cmlidXRlKFNWR05hbWVzOjp3aWR0aEF0dHIpIDogbnVsbEF0b20oKSkp
OwogICAgICAgICBzaGFkb3dFbGVtZW50LnNldEF0dHJpYnV0ZShTVkdOYW1lczo6aGVpZ2h0QXR0
ciwgaGVpZ2h0KCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCkgPyBBdG9tU3RyaW5nKGhlaWdodCgp
LnZhbHVlQXNTdHJpbmcoKSkgOiAoY29ycmVzcG9uZGluZ0VsZW1lbnQgPyBjb3JyZXNwb25kaW5n
RWxlbWVudC0+Z2V0QXR0cmlidXRlKFNWR05hbWVzOjpoZWlnaHRBdHRyKSA6IG51bGxBdG9tKCkp
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NN
SUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1l
bnQuY3BwCmluZGV4IDU1NGNkMWM3NThjYTIyY2RiYmVmZjQwYmRmYTc2Y2ExZDNhNTEyZjIuLmNj
NWQ0MmE4YzdmMGVmYjJjNThkZjVmNGI0Mjc1YWY4NThiYWQwNzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCkBAIC0xOTIsNyArMTkyLDcg
QEAgdm9pZCBTVkdTTUlMRWxlbWVudDo6YnVpbGRQZW5kaW5nUmVzb3VyY2UoKQogICAgICAgICB0
YXJnZXQgPSBXVEZNb3ZlKHJlc3VsdC5lbGVtZW50KTsKICAgICAgICAgaWQgPSBXVEZNb3ZlKHJl
c3VsdC5pZGVudGlmaWVyKTsKICAgICB9Ci0gICAgYXV0byBzdmdUYXJnZXQgPSBtYWtlUmVmUHRy
KGlzPFNWR0VsZW1lbnQ+KHRhcmdldCkgJiYgdGFyZ2V0LT5pc0Nvbm5lY3RlZCgpID8gZG93bmNh
c3Q8U1ZHRWxlbWVudD4odGFyZ2V0LmdldCgpKSA6IG51bGxwdHIpOworICAgIFJlZlB0ciBzdmdU
YXJnZXQgPSBpczxTVkdFbGVtZW50Pih0YXJnZXQpICYmIHRhcmdldC0+aXNDb25uZWN0ZWQoKSA/
IGRvd25jYXN0PFNWR0VsZW1lbnQ+KHRhcmdldC5nZXQoKSkgOiBudWxscHRyOwogCiAgICAgaWYg
KHN2Z1RhcmdldCAhPSB0YXJnZXRFbGVtZW50KCkpCiAgICAgICAgIHNldFRhcmdldEVsZW1lbnQo
c3ZnVGFyZ2V0LmdldCgpKTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBOb2RlOjpJbnNlcnRlZEludG9B
bmNlc3RvclJlc3VsdCBTVkdTTUlMRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0
aW9uVAogCiAgICAgdXBkYXRlQXR0cmlidXRlTmFtZSgpOwogCi0gICAgYXV0byBvd25lciA9IG1h
a2VSZWZQdHIob3duZXJTVkdFbGVtZW50KCkpOworICAgIFJlZlB0ciBvd25lciA9IG93bmVyU1ZH
RWxlbWVudCgpOwogICAgIGlmICghb3duZXIpCiAgICAgICAgIHJldHVybiBJbnNlcnRlZEludG9B
bmNlc3RvclJlc3VsdDo6RG9uZTsKIApAQCAtNTQzLDcgKzU0Myw3IEBAIHZvaWQgU1ZHU01JTEVs
ZW1lbnQ6OmNvbm5lY3RDb25kaXRpb25zKCkKICAgICBmb3IgKGF1dG8mIGNvbmRpdGlvbiA6IG1f
Y29uZGl0aW9ucykgewogICAgICAgICBpZiAoY29uZGl0aW9uLm1fdHlwZSA9PSBDb25kaXRpb246
OkV2ZW50QmFzZSkgewogICAgICAgICAgICAgQVNTRVJUKCFjb25kaXRpb24ubV9zeW5jYmFzZSk7
Ci0gICAgICAgICAgICBhdXRvIGV2ZW50QmFzZSA9IG1ha2VSZWZQdHIoZXZlbnRCYXNlRm9yKGNv
bmRpdGlvbikpOworICAgICAgICAgICAgUmVmUHRyIGV2ZW50QmFzZSA9IGV2ZW50QmFzZUZvcihj
b25kaXRpb24pOwogICAgICAgICAgICAgaWYgKCFldmVudEJhc2UpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICBBU1NFUlQoIWNvbmRpdGlvbi5tX2V2ZW50TGlzdGVuZXIp
OwpAQCAtNTc4LDcgKzU3OCw3IEBAIHZvaWQgU1ZHU01JTEVsZW1lbnQ6OmRpc2Nvbm5lY3RDb25k
aXRpb25zKCkKICAgICAgICAgICAgIC8vIG5vIGd1YXJhbnRlZSB0aGF0IGV2ZW50QmFzZUZvcigp
IHdpbGwgYmUgYWJsZSB0byBmaW5kIG91ciBjb25kaXRpb24ncwogICAgICAgICAgICAgLy8gb3Jp
Z2luYWwgZXZlbnRCYXNlLiBTbywgd2UgYWxzbyBoYXZlIHRvIGRpc2Nvbm5lY3Qgb3Vyc2VsdmVz
IGZyb20KICAgICAgICAgICAgIC8vIG91ciBjb25kaXRpb24gZXZlbnQgbGlzdGVuZXIsIGluIGNh
c2UgaXQgbGF0ZXIgZmlyZXMuCi0gICAgICAgICAgICBhdXRvIGV2ZW50QmFzZSA9IG1ha2VSZWZQ
dHIoZXZlbnRCYXNlRm9yKGNvbmRpdGlvbikpOworICAgICAgICAgICAgUmVmUHRyIGV2ZW50QmFz
ZSA9IGV2ZW50QmFzZUZvcihjb25kaXRpb24pOwogICAgICAgICAgICAgaWYgKGV2ZW50QmFzZSkK
ICAgICAgICAgICAgICAgICBldmVudEJhc2UtPnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uZGl0aW9u
Lm1fbmFtZSwgKmNvbmRpdGlvbi5tX2V2ZW50TGlzdGVuZXIsIGZhbHNlKTsKICAgICAgICAgICAg
IGNvbmRpdGlvbi5tX2V2ZW50TGlzdGVuZXItPmRpc2Nvbm5lY3RBbmltYXRpb24oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IGQ2MzkzZDIyYzliZTljNzRi
YmE3NzVhYzVhMjFlNWRjNzVhYzAwNDIuLmM0NzMzZGJiNTE3ZDg0MmQ4NTFhZmRjMzM0ZTZiMGY0
MzFjYjI2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAt
MTM5LDcgKzEzOSw3IEBAIHZvaWQgU1ZHSW1hZ2U6OnNldENvbnRhaW5lclNpemUoY29uc3QgRmxv
YXRTaXplJiBzaXplKQogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGF1dG8gdmlldyA9IG1ha2VSZWZQdHIoZnJhbWVWaWV3KCkpOworICAgIFJlZlB0ciB2aWV3ID0g
ZnJhbWVWaWV3KCk7CiAgICAgdmlldy0+cmVzaXplKHRoaXMtPmNvbnRhaW5lclNpemUoKSk7CiAK
ICAgICByZW5kZXJlci0+c2V0Q29udGFpbmVyU2l6ZShJbnRTaXplKHNpemUpKTsKQEAgLTI4Niw3
ICsyODYsNyBAQCBJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlYwogICAgICAgICByZXR1cm4gZHJhd0Fz
TmF0aXZlSW1hZ2UoY29udGV4dCwgZHN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiAgICAgfQog
Ci0gICAgYXV0byB2aWV3ID0gbWFrZVJlZlB0cihmcmFtZVZpZXcoKSk7CisgICAgUmVmUHRyIHZp
ZXcgPSBmcmFtZVZpZXcoKTsKICAgICBBU1NFUlQodmlldyk7CiAKICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CkBAIC00NTEsNyArNDUxLDcgQEAgYm9v
bCBTVkdJbWFnZTo6aXNBbmltYXRpbmcoKSBjb25zdAogCiB2b2lkIFNWR0ltYWdlOjpyZXBvcnRB
cHByb3hpbWF0ZU1lbW9yeUNvc3QoKSBjb25zdAogewotICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtl
UmVmUHRyKG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSk7CisgICAgUmVmUHRyIGRvY3Vt
ZW50ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpOwogICAgIHNpemVfdCBkZWNvZGVk
SW1hZ2VNZW1vcnlDb3N0ID0gMDsKIAogICAgIGZvciAoUmVmUHRyPE5vZGU+IG5vZGUgPSBkb2N1
bWVudDsgbm9kZTsgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5vZGUpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAppbmRleCBj
NjMyOGNmYjVlMTRkMDc3MWIzMDVmOGJlYTcwZTU2NjE1NTljODIzLi4zODVhZjI5MDg0OGEzZDBi
ODNmMTJhYzk2MTllNmJmOTZjOWYyMzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQg
RkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSA9IGZpbHRlcigpLmFic29sdXRlVHJhbnNmb3JtKCk7
CiAgICAgICAgIGNvbnRleHQuY29uY2F0Q1RNKGFic29sdXRlVHJhbnNmb3JtKTsKIAotICAgICAg
ICBhdXRvIGNvbnRleHROb2RlID0gbWFrZVJlZlB0cihkb3duY2FzdDxTVkdFbGVtZW50PihyZW5k
ZXJlci0+ZWxlbWVudCgpKSk7CisgICAgICAgIFJlZlB0ciBjb250ZXh0Tm9kZSA9IGRvd25jYXN0
PFNWR0VsZW1lbnQ+KHJlbmRlcmVyLT5lbGVtZW50KCkpOwogICAgICAgICBpZiAoY29udGV4dE5v
ZGUtPmhhc1JlbGF0aXZlTGVuZ3RocygpKSB7CiAgICAgICAgICAgICBTVkdMZW5ndGhDb250ZXh0
IGxlbmd0aENvbnRleHQoY29udGV4dE5vZGUuZ2V0KCkpOwogICAgICAgICAgICAgRmxvYXRTaXpl
IHZpZXdwb3J0U2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR1Byb3BlcnR5QW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R1Byb3BlcnR5QW5pbWF0b3IuaAppbmRleCAxN2Y3YzViOTVlMTdkOGJmMzJhYjhhODMwMDZkOGJk
NTZhNjAyYjQwLi44OTFhNDY2OTYwNjQ3NjQ1MDhiMWFkZjUwNWIwYmE1ZjI1MzU5ZjYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFuaW1hdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBbmltYXRv
ci5oCkBAIC03OCw3ICs3OCw3IEBAIHByb3RlY3RlZDoKIAogICAgIFN0cmluZyBjb21wdXRlQ1NT
UHJvcGVydHlWYWx1ZShTVkdFbGVtZW50JiB0YXJnZXRFbGVtZW50LCBDU1NQcm9wZXJ0eUlEIGlk
KSBjb25zdAogICAgIHsKLSAgICAgICAgYXV0byBwcm90ZWN0b3IgPSBtYWtlUmVmUHRyKHRhcmdl
dEVsZW1lbnQpOworICAgICAgICBSZWYgcHJvdGVjdG9yID0gdGFyZ2V0RWxlbWVudDsKIAogICAg
ICAgICAvLyBEb24ndCBpbmNsdWRlIGFueSBwcm9wZXJ0aWVzIHJlc3VsdGluZyBmcm9tIENTUyBU
cmFuc2l0aW9ucy9BbmltYXRpb25zIG9yIFNNSUwgYW5pbWF0aW9ucywgYXMgd2Ugd2FudCB0byBy
ZXRyaWV2ZSB0aGUgImJhc2UgdmFsdWUiLgogICAgICAgICB0YXJnZXRFbGVtZW50LnNldFVzZU92
ZXJyaWRlQ29tcHV0ZWRTdHlsZSh0cnVlKTsKQEAgLTg5LDcgKzg5LDcgQEAgcHJvdGVjdGVkOgog
CiAgICAgU3RyaW5nIGNvbXB1dGVJbmhlcml0ZWRDU1NQcm9wZXJ0eVZhbHVlKFNWR0VsZW1lbnQm
IHRhcmdldEVsZW1lbnQpIGNvbnN0CiAgICAgewotICAgICAgICBhdXRvIHBhcmVudCA9IG1ha2VS
ZWZQdHIodGFyZ2V0RWxlbWVudC5wYXJlbnRFbGVtZW50KCkpOworICAgICAgICBSZWZQdHIgcGFy
ZW50ID0gdGFyZ2V0RWxlbWVudC5wYXJlbnRFbGVtZW50KCk7CiAgICAgICAgIGlmICghcGFyZW50
IHx8ICFwYXJlbnQtPmlzU1ZHRWxlbWVudCgpKQogICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDNm
ZmE4ZTYxOGJjMjU5YjY3MzQyNmE0YTY3YzNjYTUyNTU1NjNiNTEuLmFlYzc2MGU1NGE5ZjZkYmI5
YWEyN2RkMGI3YjQzNzI5OGQ4NThkY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKQEAgLTI1NTksMTMgKzI1NTksMTMgQEAgdm9pZCBJbnRlcm5hbHM6OmhhbmRsZUFjY2VwdGVk
Q2FuZGlkYXRlKGNvbnN0IFN0cmluZyYgY2FuZGlkYXRlLCB1bnNpZ25lZCBsb2NhdGkKIAogdm9p
ZCBJbnRlcm5hbHM6OmNoYW5nZVNlbGVjdGlvbkxpc3RUeXBlKCkKIHsKLSAgICBpZiAoYXV0byBm
cmFtZSA9IG1ha2VSZWZQdHIodGhpcy0+ZnJhbWUoKSkpCisgICAgaWYgKFJlZlB0ciBmcmFtZSA9
IHRoaXMtPmZyYW1lKCkpCiAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jaGFuZ2VTZWxlY3Rpb25M
aXN0VHlwZSgpOwogfQogCiB2b2lkIEludGVybmFsczo6Y2hhbmdlQmFja1RvUmVwbGFjZWRTdHJp
bmcoY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZykKIHsKLSAgICBpZiAoYXV0byBmcmFtZSA9
IG1ha2VSZWZQdHIodGhpcy0+ZnJhbWUoKSkpCisgICAgaWYgKFJlZlB0ciBmcmFtZSA9IHRoaXMt
PmZyYW1lKCkpCiAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jaGFuZ2VCYWNrVG9SZXBsYWNlZFN0
cmluZyhyZXBsYWNlZFN0cmluZyk7CiB9CiAK
</data>
<flag name="commit-queue"
          id="462246"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438766</attachid>
            <date>2021-09-20 18:34:26 -0700</date>
            <delta_ts>2021-09-20 18:38:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230527-20210920183425.patch</filename>
            <type>text/plain</type>
            <size>143390</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzM3YWUwMDY5ZWQ3OWYw
ZTYyMzVkYTQwNTRlYzM0MGVlMzIzYjgyMy4uM2Q1YmViY2NmZTcyYjk4N2JlNGIwOTU0ZTM1ZTMz
YWY0NDk4ZGJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwMyBAQAorMjAyMS0wOS0yMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgcmVtYWluaW5nIHVz
ZXMgb2YgbWFrZVJlZlB0cigpIGluIFdlYkNvcmUvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA1MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHA6CisgICAg
ICAgICogaHRtbC9EaXJlY3RvcnlGaWxlTGlzdENyZWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yOjpzdGFydCk6CisgICAgICAgICogaHRtbC9GVFBE
aXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGVFBEaXJlY3RvcnlEb2N1
bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUpOgorICAgICAgICAqIGh0bWwvRmlsZUlu
cHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjphcHBlbmRGb3Jt
RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpkaXNhYmxlZFN0
YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjphdHRyaWJ1dGVD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmZpbGVzQ2hvc2VuKToK
KyAgICAgICAgKiBodG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRGV0YWlsc0VsZW1lbnQ6OmlzQWN0aXZlU3VtbWFyeSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRGV0YWlsc0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBo
dG1sL0hUTUxEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnQ6Om5h
bWVkSXRlbSk6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRWxlbWVudDo6ZWRpdGFiaWxpdHlGcm9tQ29udGVudEVkaXRhYmxlQXR0cik6Cisg
ICAgICAgIChXZWJDb3JlOjppbWFnZU92ZXJsYXlIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxFbGVtZW50Ojppc0luc2lkZUltYWdlT3ZlcmxheSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RWxlbWVudDo6dXBkYXRlV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdCk6CisgICAgICAgICogaHRt
bC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVycyk6CisgICAgICAgICogaHRtbC9IVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5kRm9ybUFz
c29jaWF0ZWRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uOjpjdXN0b21FbGVtZW50QWZ0ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVudENhY2hlIGNvbnN0KToK
KyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRm9ybUVsZW1lbnQ6On5IVE1MRm9ybUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEZvcm1FbGVtZW50OjpsZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1F
bGVtZW50OjpzdWJtaXRJZlBvc3NpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxl
bWVudDo6dGV4dEZpZWxkVmFsdWVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3Jt
RWxlbWVudDo6ZWZmZWN0aXZlVGFyZ2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxG
b3JtRWxlbWVudDo6ZWxlbWVudEZyb21QYXN0TmFtZXNNYXAgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZvcm1FbGVtZW50Ojpjb3B5QXNzb2NpYXRlZEVsZW1lbnRzVmVjdG9yIGNvbnN0
KToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZyYW1lU2V0RWxlbWVudDo6bmFtZWRJdGVtKToKKyAgICAgICAgKiBodG1sL0hU
TUxIdG1sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSHRtbEVsZW1lbnQ6Omlu
c2VydGVkQnlQYXJzZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpiZXN0Rml0U291cmNlRnJvbVBpY3R1
cmVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmV2YWx1YXRl
RHluYW1pY01lZGlhUXVlcnlEZXBlbmRlbmNpZXMpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBodG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Zmlyc3RFbGVtZW50V2l0aElkSWZMYWJlbGFibGUpOgorICAgICAgICAq
IGh0bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExlZ2Vu
ZEVsZW1lbnQ6OmZvcm0gY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6c2V0Q1NTU3R5bGVTaGVldCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmli
dXRlVVJMcyBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVRleHRUcmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpsYXlvdXRTaXplQ2hhbmdlZCk6Cisg
ICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
aG91bGRCZUV4cG9zZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6OmFw
cGVuZEZvcm1EYXRhKToKKyAgICAgICAgKiBodG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdEdyb3VwRWxlbWVudDo6cmVjYWxjU2VsZWN0T3B0aW9u
cyk6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6YmluZGluZ3NJbnN0YW5jZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6aXNSZXBsYWNlbWVudE9ic2N1cmVkKToKKyAgICAgICAg
KiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6aXNJbWFnZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6d2lsbERldGFjaFJlbmRlcmVycyk6CisgICAgICAgICogaHRt
bC9IVE1MU2xvdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNsb3RFbGVtZW50
OjphdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTbG90RWxlbWVudDo6
YXNzaWduZWROb2RlcyBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MU291cmNlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU291cmNlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUp
OgorICAgICAgICAqIGh0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MU3R5bGVFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMgY29uc3QpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpmaW5kUm93cyk6CisgICAgICAgICogaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6Om1lZGlhRWxlbWVudCBjb25zdCk6CisgICAg
ICAgICogaHRtbC9MaW5rSWNvbkNvbGxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaW5r
SWNvbkNvbGxlY3Rvcjo6aWNvbnNPZlR5cGVzKToKKyAgICAgICAgKiBodG1sL01lZGlhRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEb2N1bWVudFBhcnNlcjo6Y3JlYXRlRG9j
dW1lbnRTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEb2N1bWVudDo6ZGVmYXVs
dEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURvY3VtZW50OjpyZXBsYWNl
TWVkaWFFbGVtZW50VGltZXJGaXJlZCk6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNz
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzRWxlbWVudFJlY3RNb3N0bHlJbk1haW5GcmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjppc0VsZW1lbnRMYXJnZVJlbGF0aXZlVG9NYWluRnJhbWUp
OgorICAgICAgICAqIGh0bWwvUGx1Z2luRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGx1Z2luRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsdWdpbkRvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyk6CisgICAgICAgICog
aHRtbC9TdWJtaXRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VibWl0SW5wdXRU
eXBlOjpoYW5kbGVET01BY3RpdmF0ZUV2ZW50KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQ6OndvdWxkVGFpbnRPcmlnaW4pOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpDYW52YXNTdHlsZSk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiZWdpblF1ZXJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEluZGV4ZWRQYXJhbWV0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmdldFBhcmFtZXRlcik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFBhcmFtZXRlcik6CisgICAgICAgICogaHRtbC9w
YXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZVJlcGFyZW50VGFzayk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlVGFrZUFsbENoaWxkcmVu
QW5kUmVwYXJlbnRUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRl
OjpkaXNwYXRjaERvY3VtZW50RWxlbWVudEF2YWlsYWJsZUlmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpmaW5kRm9zdGVyU2l0ZSk6CisgICAgICAgICog
aHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRv
a2VuUHJlbG9hZFNjYW5uZXI6OlN0YXJ0VGFnU2Nhbm5lcjo6cHJvY2Vzc0F0dHJpYnV0ZSk6Cisg
ICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlhTU0F1ZGl0b3JEZWxlZ2F0ZTo6Z2VuZXJhdGVWaW9sYXRpb25SZXBvcnQpOgorICAg
ICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRs
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudDo6
cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaEZpZWxkUmVzdWx0
c0J1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAqIGh0bWwvc2hh
ZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFBs
YWNlaG9sZGVyRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFBsYWNlaG9sZGVyRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3Rvcik6CisgICAgICAg
ICogaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OnVwZGF0ZUdlbmVyaWNDdWUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5iYW5kR2VuZXJpY1RleHRUcmFjazo6cmVtb3ZlR2VuZXJpY0N1ZSk6CisgICAg
ICAgICogaHRtbC90cmFjay9UZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRy
YWNrOjphZGRDdWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjphZGRSZWdpb24pOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2V0RW11bGF0ZWRNZWRpYSk6CisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6dHJ5TG9hZGluZ1JlZGlyZWN0UmVxdWVzdEZyb21BcHBsaWNhdGlvbkNhY2hlKToKKyAg
ICAgICAgKiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9y
bVN1Ym1pc3Npb246OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkVVJMKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9yVGhpc0ZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzY3JvbGxUb0ZyYWdtZW50V2l0aFBhcmVudEJvdW5kYXJ5
KToKKyAgICAgICAgKiBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6Okhpc3RvcnlDb250cm9sbGVyOjpyZXN0b3JlU2Nyb2xsUG9zaXRp
b25BbmRWaWV3U3RhdGUpOgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNw
cDoKKyAgICAgICAgKiBsb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OlN1YmZyYW1lTG9hZGVyOjpsb2FkT3JSZWRpcmVjdFN1YmZyYW1lKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICogcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250
cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmlubmVyV2lkdGggY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpyZXF1ZXN0SWRsZUNhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVdpbmRvdzo6Y2FuY2VsSWRsZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVdpbmRvdzo6bGFuZ3VhZ2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3c6OmRpc3BhdGNoTG9hZEV2ZW50KToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjp0cnlUb1VwZGF0ZURyb3Bw
ZWRJbWFnZVBsYWNlaG9sZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6
aW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzQXRDYXJldCk6CisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQ29udHJvbGxlcjo6ZmluYWxpemVEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcik6CisgICAg
ICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9kZVRvU2Vs
ZWN0T25Nb3VzZURvd25Gb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmV4cGFuZFNlbGVjdGlv
blRvUmVzcGVjdFNlbGVjdE9uTW91c2VEb3duKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6Y2FuTW91c2VEb3duU3RhcnRTZWxlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OnNjaGVkdWxlU2Nyb2xsRXZlbnQpOgorICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Nyb2xsVG9GcmFnbWVudElu
dGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Nyb2xsVG9Gb2N1c2VkRWxl
bWVudEludGVybmFsKToKKyAgICAgICAgKiBwYWdlL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6c2VsZWN0aW9uUXVh
ZHNEaWRDaGFuZ2UpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyZXBsYWNlUmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJlcGxhY2VSYW5nZXNX
aXRoVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRFZGl0YWJsZVJlZ2lvbkVuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZWRpdGFibGVFbGVtZW50c0luUmVjdCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpkb0FmdGVyVXBkYXRlUmVuZGVyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmRpZEZpbmlzaExvYWRpbmdJbWFnZUZvckVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXBkYXRlRWxlbWVudHNXaXRoVGV4dFJlY29n
bml0aW9uUmVzdWx0cyk6CisgICAgICAgICogcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDb2xvclNhbXBsZXI6OnNhbXBsZVRvcCk6CisgICAgICAgICog
cGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRl
ckxvY2tDb250cm9sbGVyOjplbnF1ZXVlRXZlbnQpOgorICAgICAgICAqIHBhZ2UvVGV4dEluZGlj
YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFu
Z2UpOgorICAgICAgICAqIHBhZ2UvVW5kb01hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VW5kb01hbmFnZXI6OmFkZEl0ZW0pOgorICAgICAgICAqIHBhZ2UvaW9zL0V2ZW50SGFuZGxlcklP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6Zm9jdXNEb2N1bWVudFZpZXcp
OgorICAgICAgICAqIHBhZ2UvaW9zL0ZyYW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6bm9k
ZUlzTW91c2VGb2N1c2FibGUpOgorICAgICAgICAqIHBhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6Zm9jdXNEb2N1bWVudFZpZXcpOgor
ICAgICAgICAqIHBhZ2UvbWFjL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXJNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZU92ZXJsYXlDb250cm9sbGVyOjp1cGRhdGVEYXRhRGV0ZWN0b3JIaWdo
bGlnaHRzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3ZlcmxheUNvbnRyb2xsZXI6OnBsYXRm
b3JtSGFuZGxlTW91c2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJsYXlDb250
cm9sbGVyOjpoYW5kbGVEYXRhRGV0ZWN0b3JBY3Rpb24pOgorICAgICAgICAqIHBhZ2UvbWFjL1Nl
cnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092
ZXJsYXlDb250cm9sbGVyOjpidWlsZFNlbGVjdGlvbkhpZ2hsaWdodCk6CisgICAgICAgICogcGxh
dGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVi
b2FyZEN1c3RvbURhdGE6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNldExvZ2dlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0TG9nZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0TG9nZ2VyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJz
ZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qzo6c2V0TG9nZ2VyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c2V0TG9nZ2VyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjptYWtlV2ViS2l0VHJhY2spOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJFbGVtZW50OjpzZWxlY3Rpb25Qc2V1ZG9TdHlsZSBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVJT1M6OnBhaW50TWV0ZXIpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZUV2ZW50RGlzcGF0
Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNw
YXRjaFNlc3Npb25TdG9yYWdlRXZlbnRzVG9GcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3Rv
cmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHNUb0ZyYW1lcyk6
CisgICAgICAgICogc3R5bGUvU3R5bGVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6U2NvcGU6Om1ha2VSZXNvbHZlclNoYXJpbmdLZXkpOgorICAgICAgICAqIHN2Zy9TVkdBRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFu
ZGxlcik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudEJhc2U6OnN0YXJ0QW5pbWF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50QmFzZTo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1
ZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpoYXNWYWxpZEF0dHJpYnV0ZVR5cGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OnN0YXJ0
QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Ojpj
YWxjdWxhdGVBbmltYXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rp
b25FbGVtZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCk6CisgICAgICAgICogc3ZnL1NWR0RvY3Vt
ZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lv
bnM6OnRha2VFbGVtZW50RnJvbVBlbmRpbmdSZXNvdXJjZXNGb3JSZW1vdmFsTWFwKToKKyAgICAg
ICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojpy
ZW1vdmVFbGVtZW50UmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnNl
dENvcnJlc3BvbmRpbmdFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnJl
c29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojpjb21wdXRl
ZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnVwZGF0ZVJlbGF0aXZlTGVu
Z3Roc0luZm9ybWF0aW9uKToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6
YnVpbGQgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAg
ICAqIHN2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxp
Z2h0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RUxpZ2h0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVj
dWxhckxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVNwZWN1bGFy
TGlnaHRpbmdFbGVtZW50OjpidWlsZCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnZhbGlk
YXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRGYWNlRWxlbWVudDo6cmVidWlsZEZv
bnRGYWNlKToKKyAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KToKKyAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZvbnRGYWNlVXJpRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAg
KiBzdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAqIHN2Zy9T
VkdMZW5ndGhDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aENvbnRleHQ6
OmRldGVybWluZVZpZXdwb3J0IGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpmcmFtZUZvckN1cnJlbnRTY2Fs
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpkZXNlbGVjdEFsbCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50Ojpsb2NhbENvb3JkaW5hdGVTcGFjZVRy
YW5zZm9ybSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpnZXRFbGVt
ZW50QnlJZCk6CisgICAgICAgICogc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdTdHlsZUVsZW1lbnQ6OnNldERpc2FibGVkKToKKyAgICAgICAgKiBzdmcvU1ZH
VFJlZkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFJlZkVsZW1lbnQ6OmRldGFj
aFRhcmdldCk6CisgICAgICAgICogc3ZnL1NWR1RyYW5zZm9ybUxpc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVHJhbnNmb3JtTGlzdDo6Y29uc29saWRhdGUpOgorICAgICAgICAqIHN2Zy9T
VkdVc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnRyYW5z
ZmVyU2l6ZUF0dHJpYnV0ZXNUb1RhcmdldENsb25lIGNvbnN0KToKKyAgICAgICAgKiBzdmcvYW5p
bWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVt
ZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxl
bWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVs
ZW1lbnQ6OmNvbm5lY3RDb25kaXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVt
ZW50OjpkaXNjb25uZWN0Q29uZGl0aW9ucyk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpzZXRDb250YWluZXJTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ltYWdlOjpyZXBvcnRBcHByb3hpbWF0ZU1lbW9yeUNvc3QgY29uc3QpOgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVJ
bWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9T
VkdQcm9wZXJ0eUFuaW1hdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eUFuaW1h
dG9yOjpjb21wdXRlQ1NTUHJvcGVydHlWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQcm9wZXJ0eUFuaW1hdG9yOjpjb21wdXRlSW5oZXJpdGVkQ1NTUHJvcGVydHlWYWx1ZSBjb25z
dCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpjaGFuZ2VTZWxlY3Rpb25MaXN0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OmNoYW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5nKToKKwogMjAyMS0wOS0yMCAgUm9z
cyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCBidWlsZCBmaXggZm9yIFdpbkNhaXJvIHdpdGggRU5BQkxFX0VYUEVSSU1FTlRBTF9GRUFUVVJF
UyBvZmYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50SW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludEltYWdlLmNwcAppbmRleCBlMzAw
NzdmNWFiYTAwN2M5NzRjZDBkNzg5YWYyNTg2NWIwZmY2YTY2Li43ZTczM2IzZWRkZTRkZjljZTIz
ODI5Nzk2ZDNkZDZiZWVlYmI1NmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1
c3RvbVBhaW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRJ
bWFnZS5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjbGVhckVs
ZW1lbnQoKSBvdmVycmlkZSB7IH0KIAotICAgIFJlZlB0cjxDU1NTdHlsZVZhbHVlPiBnZXQoY29u
c3QgU3RyaW5nJiBwcm9wZXJ0eSkgY29uc3QgZmluYWwgeyByZXR1cm4gbWFrZVJlZlB0cihtX21h
cC5nZXQocHJvcGVydHkpKTsgfQorICAgIFJlZlB0cjxDU1NTdHlsZVZhbHVlPiBnZXQoY29uc3Qg
U3RyaW5nJiBwcm9wZXJ0eSkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9tYXAuZ2V0KHByb3BlcnR5
KTsgfQogCiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxDU1NTdHlsZVZhbHVlPj4gbV9tYXA7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EaXJlY3RvcnlGaWxlTGlzdENy
ZWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EaXJlY3RvcnlGaWxlTGlzdENyZWF0b3Iu
Y3BwCmluZGV4IDEwOGEyODA4YTM0OGY0OGI1ZGI2YTY1OTI3ZWFiMzc0YWJkZTBmMDAuLjlkM2Rh
MTg1M2MzYTYzMjBmZWIzMTk3NTE2MmU0MzVhZTkzZmZkZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5jcHAKQEAgLTEwNSw3ICsxMDUsNyBA
QCBEaXJlY3RvcnlGaWxlTGlzdENyZWF0b3I6OkRpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvcihDb21w
bGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpbwogdm9pZCBEaXJlY3RvcnlGaWxlTGlzdENyZWF0b3I6
OnN0YXJ0KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUlu
Zm8+JiBwYXRocykKIHsKICAgICAvLyBSZXNvbHZlIGRpcmVjdG9yaWVzIG9uIGEgYmFja2dyb3Vu
ZCB0aHJlYWQgdG8gYXZvaWQgYmxvY2tpbmcgdGhlIG1haW4gdGhyZWFkLgotICAgIG1fd29ya1F1
ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGRvY3Vt
ZW50ID0gbWFrZVJlZlB0cihkb2N1bWVudCksIHBhdGhzID0gY3Jvc3NUaHJlYWRDb3B5KHBhdGhz
KV0oKSBtdXRhYmxlIHsKKyAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBkb2N1bWVudCA9IFJlZlB0ciB7IGRvY3VtZW50IH0sIHBh
dGhzID0gY3Jvc3NUaHJlYWRDb3B5KHBhdGhzKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBm
aWxlcyA9IGdhdGhlckZpbGVJbmZvcm1hdGlvbihwYXRocyk7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBkb2N1
bWVudCA9IFdURk1vdmUoZG9jdW1lbnQpLCBmaWxlcyA9IGNyb3NzVGhyZWFkQ29weShmaWxlcyld
KCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0
ZDo6ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFuZGxlciwgbnVsbHB0cikpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCmluZGV4IGY5ZDE0MmVkYmI4YzY4Zjhm
N2UyZWNhYjlmMDgxMmMwMDkzNWMyYWIuLjc1MjMwMTdiYTcyOTQwNTYzYjc1ZjQ2NmE2OGVkMWNj
YjNkZWU4YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQu
Y3BwCkBAIC0yOTksNyArMjk5LDcgQEAgYm9vbCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6
bG9hZERvY3VtZW50VGVtcGxhdGUoKQogCiAgICAgYXV0byYgZG9jdW1lbnQgPSAqdGhpcy0+ZG9j
dW1lbnQoKTsKIAotICAgIGF1dG8gZm91bmRFbGVtZW50ID0gbWFrZVJlZlB0cihkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChTdHJpbmcoImZ0cERpcmVjdG9yeVRhYmxlIl9zKSkpOworICAgIFJlZlB0
ciBmb3VuZEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChTdHJpbmdWaWV3IHsgImZ0
cERpcmVjdG9yeVRhYmxlIl9zIH0pOwogICAgIGlmICghZm91bmRFbGVtZW50KQogICAgICAgICBM
T0dfRVJST1IoIlVuYWJsZSB0byBmaW5kIGVsZW1lbnQgYnkgaWQgXCJmdHBEaXJlY3RvcnlUYWJs
ZVwiIGluIHRoZSB0ZW1wbGF0ZSBkb2N1bWVudC4iKTsKICAgICBlbHNlIGlmICghaXM8SFRNTFRh
YmxlRWxlbWVudD4oZm91bmRFbGVtZW50KSkKQEAgLTMxNCw3ICszMTQsNyBAQCBib29sIEZUUERp
cmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSgpCiAKICAgICAvLyBJ
ZiB3ZSBkaWRuJ3QgZmluZCB0aGUgdGFibGUgZWxlbWVudCwgbGV0cyB0cnkgdG8gYXBwZW5kIG91
ciBvd24gdG8gdGhlIGJvZHkuCiAgICAgLy8gSWYgdGhhdCBmYWlscyBmb3Igc29tZSByZWFzb24s
IGNyYW0gaXQgb24gdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQgYXMgYSBsYXN0IGRpdGNoIGVmZm9y
dC4KLSAgICBpZiAoYXV0byBib2R5ID0gbWFrZVJlZlB0cihkb2N1bWVudC5ib2R5T3JGcmFtZXNl
dCgpKSkKKyAgICBpZiAoUmVmUHRyIGJvZHkgPSBkb2N1bWVudC5ib2R5T3JGcmFtZXNldCgpKQog
ICAgICAgICBib2R5LT5hcHBlbmRDaGlsZCgqbV90YWJsZUVsZW1lbnQpOwogICAgIGVsc2UKICAg
ICAgICAgZG9jdW1lbnQuYXBwZW5kQ2hpbGQoKm1fdGFibGVFbGVtZW50KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IGJiYzBmMTIyYjUzZjVmMjMzM2ZiNjY2Y2E1ZWIz
YWIzYWZjM2FkMzkuLmUwZmY1Mzk2M2I1NzBjYjFkZmZkMzA0OTE5Y2RhZjdjNGExMzc0MDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIHZv
aWQgRmlsZUlucHV0VHlwZTo6cmVzdG9yZUZvcm1Db250cm9sU3RhdGUoY29uc3QgRm9ybUNvbnRy
b2xTdGF0ZSYgc3RhdGUpCiBib29sIEZpbGVJbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRhKERPTUZv
cm1EYXRhJiBmb3JtRGF0YSwgYm9vbCBtdWx0aXBhcnQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGVs
ZW1lbnQoKSk7Ci0gICAgYXV0byBmaWxlTGlzdCA9IG1ha2VSZWZQdHIoZWxlbWVudCgpLT5maWxl
cygpKTsKKyAgICBSZWZQdHIgZmlsZUxpc3QgPSBlbGVtZW50KCktPmZpbGVzKCk7CiAgICAgQVNT
RVJUKGZpbGVMaXN0KTsKIAogICAgIGF1dG8gbmFtZSA9IGVsZW1lbnQoKS0+bmFtZSgpOwpAQCAt
MjkxLDcgKzI5MSw3IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6ZGlzYWJsZWRTdGF0ZUNoYW5nZWQo
KQogICAgIGlmICghcm9vdCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGlmIChhdXRvIGJ1
dHRvbiA9IG1ha2VSZWZQdHIoY2hpbGRyZW5PZlR5cGU8VXBsb2FkQnV0dG9uRWxlbWVudD4oKnJv
b3QpLmZpcnN0KCkpKQorICAgIGlmIChSZWZQdHIgYnV0dG9uID0gY2hpbGRyZW5PZlR5cGU8VXBs
b2FkQnV0dG9uRWxlbWVudD4oKnJvb3QpLmZpcnN0KCkpCiAgICAgICAgIGJ1dHRvbi0+c2V0Qm9v
bGVhbkF0dHJpYnV0ZShkaXNhYmxlZEF0dHIsIGVsZW1lbnQoKS0+aXNEaXNhYmxlZEZvcm1Db250
cm9sKCkpOwogfQogCkBAIC0zMDEsNyArMzAxLDcgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjphdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiAgICAgICAgIGlmIChhdXRv
KiBlbGVtZW50ID0gdGhpcy0+ZWxlbWVudCgpKSB7CiAgICAgICAgICAgICBBU1NFUlQoZWxlbWVu
dC0+c2hhZG93Um9vdCgpKTsKICAgICAgICAgICAgIGlmIChhdXRvIHJvb3QgPSBlbGVtZW50LT51
c2VyQWdlbnRTaGFkb3dSb290KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBidXR0b24g
PSBtYWtlUmVmUHRyKGNoaWxkcmVuT2ZUeXBlPFVwbG9hZEJ1dHRvbkVsZW1lbnQ+KCpyb290KS5m
aXJzdCgpKSkKKyAgICAgICAgICAgICAgICBpZiAoUmVmUHRyIGJ1dHRvbiA9IGNoaWxkcmVuT2ZU
eXBlPFVwbG9hZEJ1dHRvbkVsZW1lbnQ+KCpyb290KS5maXJzdCgpKQogICAgICAgICAgICAgICAg
ICAgICBidXR0b24tPnNldFZhbHVlKGVsZW1lbnQtPm11bHRpcGxlKCkgPyBmaWxlQnV0dG9uQ2hv
b3NlTXVsdGlwbGVGaWxlc0xhYmVsKCkgOiBmaWxlQnV0dG9uQ2hvb3NlRmlsZUxhYmVsKCkpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00MzYsNyArNDM2LDcgQEAgdm9pZCBGaWxlSW5w
dXRUeXBlOjpmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHBh
dGhzLCBjb25zdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9kaXJlY3RvcnlGaWxl
TGlzdENyZWF0b3IgPSBEaXJlY3RvcnlGaWxlTGlzdENyZWF0b3I6OmNyZWF0ZShbdGhpcywgd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIGljb24gPSBtYWtlUmVmUHRyKGljb24pXShSZWY8
RmlsZUxpc3Q+JiYgZmlsZUxpc3QpIG11dGFibGUgeworICAgIG1fZGlyZWN0b3J5RmlsZUxpc3RD
cmVhdG9yID0gRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yOjpjcmVhdGUoW3RoaXMsIHdlYWtUaGlz
ID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBpY29uID0gUmVmUHRyIHsgaWNvbiB9XShSZWY8RmlsZUxp
c3Q+JiYgZmlsZUxpc3QpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCmluZGV4IDMwYjM1Nzk0ODRlMTQ1ZDZl
MDA3NmU3ZmVhMDI2ZWE4OGZjZWYyMWUuLjVlNDFiNDkyNDE2YTM5NDBlZDZkZTEzMTJhMzE1MzNl
ZGQ4MTc5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAK
QEAgLTEyMiw3ICsxMjIsNyBAQCBib29sIEhUTUxEZXRhaWxzRWxlbWVudDo6aXNBY3RpdmVTdW1t
YXJ5KGNvbnN0IEhUTUxTdW1tYXJ5RWxlbWVudCYgc3VtbWFyeSkgY29ucwogICAgIGlmIChzdW1t
YXJ5LnBhcmVudE5vZGUoKSAhPSB0aGlzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBh
dXRvIHNsb3QgPSBtYWtlUmVmUHRyKHNoYWRvd1Jvb3QoKS0+ZmluZEFzc2lnbmVkU2xvdChzdW1t
YXJ5KSk7CisgICAgUmVmUHRyIHNsb3QgPSBzaGFkb3dSb290KCktPmZpbmRBc3NpZ25lZFNsb3Qo
c3VtbWFyeSk7CiAgICAgaWYgKCFzbG90KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0
dXJuIHNsb3QgPT0gbV9zdW1tYXJ5U2xvdDsKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIEhUTUxE
ZXRhaWxzRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QgQXRvbVN0cgogICAgICAgICBib29sIG9sZFZhbHVlID0gbV9pc09wZW47CiAgICAgICAg
IG1faXNPcGVuID0gIXZhbHVlLmlzTnVsbCgpOwogICAgICAgICBpZiAob2xkVmFsdWUgIT0gbV9p
c09wZW4pIHsKLSAgICAgICAgICAgIGF1dG8gcm9vdCA9IG1ha2VSZWZQdHIoc2hhZG93Um9vdCgp
KTsKKyAgICAgICAgICAgIFJlZlB0ciByb290ID0gc2hhZG93Um9vdCgpOwogICAgICAgICAgICAg
QVNTRVJUKHJvb3QpOwogICAgICAgICAgICAgaWYgKG1faXNPcGVuKQogICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZENoaWxkKCptX2RlZmF1bHRTbG90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERv
Y3VtZW50LmNwcAppbmRleCAwNzNiMmJjMzllNDBiYTBlZmRkOTY5YjY3NDZmMjU1YWI3ZmNiZDRk
Li40MTYzMzBjYjY0MDc1MDI2MWJmYTY0NTc3NDM0YWQyYjFjZjdkY2QzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRG9jdW1lbnQuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgc3RkOjpvcHRpb25hbDxW
YXJpYW50PFJlZlB0cjxXaW5kb3dQcm94eT4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxD
b2xsZWN0aW8KIAogICAgIGF1dG8mIGVsZW1lbnQgPSAqZG9jdW1lbnROYW1lZEl0ZW0oKm5hbWUu
aW1wbCgpKTsKICAgICBpZiAoVU5MSUtFTFkoaXM8SFRNTElGcmFtZUVsZW1lbnQ+KGVsZW1lbnQp
KSkgewotICAgICAgICBpZiAoYXV0byBkb21XaW5kb3cgPSBtYWtlUmVmUHRyKGRvd25jYXN0PEhU
TUxJRnJhbWVFbGVtZW50PihlbGVtZW50KS5jb250ZW50V2luZG93KCkpKQorICAgICAgICBpZiAo
UmVmUHRyIGRvbVdpbmRvdyA9IGRvd25jYXN0PEhUTUxJRnJhbWVFbGVtZW50PihlbGVtZW50KS5j
b250ZW50V2luZG93KCkpCiAgICAgICAgICAgICByZXR1cm4gVmFyaWFudDxSZWZQdHI8V2luZG93
UHJveHk+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+IHsgV1RGTW92
ZShkb21XaW5kb3cpIH07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmlu
ZGV4IDg5Yjk5ZTRlNjNkNzJmOGE3OWRkYjFhZTM5YmE5Y2IxYWUwNTEzOTMuLjE5OTc0MGI2NDAx
OWFlYTBlM2NmMzE1MWRiYWJhYzg3MWVjMWEwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuY3BwCkBAIC00NTIsNyArNDUyLDcgQEAgTm9kZTo6RWRpdGFiaWxpdHkgSFRNTEVsZW1lbnQ6
OmVkaXRhYmlsaXR5RnJvbUNvbnRlbnRFZGl0YWJsZUF0dHIoY29uc3QgTm9kZSYgbm8KICAgICAg
ICAgfQogICAgIH0KIAotICAgIGF1dG8gY29udGFpbmluZ1NoYWRvd1Jvb3QgPSBtYWtlUmVmUHRy
KG5vZGUuY29udGFpbmluZ1NoYWRvd1Jvb3QoKSk7CisgICAgUmVmUHRyIGNvbnRhaW5pbmdTaGFk
b3dSb290IHsgbm9kZS5jb250YWluaW5nU2hhZG93Um9vdCgpIH07CiAgICAgaWYgKGNvbnRhaW5p
bmdTaGFkb3dSb290ICYmIGNvbnRhaW5pbmdTaGFkb3dSb290LT5tb2RlKCkgPT0gU2hhZG93Um9v
dE1vZGU6OlVzZXJBZ2VudCkKICAgICAgICAgcmV0dXJuIEVkaXRhYmlsaXR5OjpSZWFkT25seTsK
IApAQCAtMTI3NSw4ICsxMjc1LDggQEAgc3RhdGljIFJlZlB0cjxIVE1MRWxlbWVudD4gaW1hZ2VP
dmVybGF5SG9zdChjb25zdCBOb2RlJiBub2RlKQogICAgIGlmICghaXM8SFRNTEVsZW1lbnQ+KGhv
c3QpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gZWxlbWVudCA9IG1ha2VS
ZWZQdHIoZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCpob3N0KSk7Ci0gICAgcmV0dXJuIGVsZW1lbnQt
Pmhhc0ltYWdlT3ZlcmxheSgpID8gZWxlbWVudCA6IG51bGxwdHI7CisgICAgUmVmUHRyIGVsZW1l
bnQgeyAmZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCpob3N0KSB9OworICAgIHJldHVybiBlbGVtZW50
Lmhhc0ltYWdlT3ZlcmxheSgpID8gZWxlbWVudCA6IG51bGxwdHI7CiB9CiAKIGJvb2wgSFRNTEVs
ZW1lbnQ6OmlzSW1hZ2VPdmVybGF5RGF0YURldGVjdG9yUmVzdWx0KCkgY29uc3QKQEAgLTEyODYs
NyArMTI4Niw3IEBAIGJvb2wgSFRNTEVsZW1lbnQ6OmlzSW1hZ2VPdmVybGF5RGF0YURldGVjdG9y
UmVzdWx0KCkgY29uc3QKIAogYm9vbCBIVE1MRWxlbWVudDo6aXNJbnNpZGVJbWFnZU92ZXJsYXko
Y29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogewotICAgIGF1dG8gY29tbW9uQW5jZXN0b3IgPSBt
YWtlUmVmUHRyKGNvbW1vbkluY2x1c2l2ZUFuY2VzdG9yPENvbXBvc2VkVHJlZT4ocmFuZ2UpKTsK
KyAgICBSZWZQdHIgY29tbW9uQW5jZXN0b3IgPSBjb21tb25JbmNsdXNpdmVBbmNlc3RvcjxDb21w
b3NlZFRyZWU+KHJhbmdlKTsKICAgICBpZiAoIWNvbW1vbkFuY2VzdG9yKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKQEAgLTE1ODYsNyArMTU4Niw3IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnVwZGF0
ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgVGV4dFJlY29nbml0aW9uUmVzdWx0JiBy
CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShEQVRBX0RFVEVDVElPTikKIAotICAgIGlmIChhdXRv
IGZyYW1lID0gbWFrZVJlZlB0cihkb2N1bWVudCgpLmZyYW1lKCkpKQorICAgIGlmIChSZWZQdHIg
ZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCkpCiAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIo
KS5zY2hlZHVsZUN1cnNvclVwZGF0ZSgpOwogCiAgICAgaWYgKGNhY2hlVGV4dFJlY29nbml0aW9u
UmVzdWx0cyA9PSBDYWNoZVRleHRSZWNvZ25pdGlvblJlc3VsdHM6OlllcykgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggNzM2ZjgxYzk3
MDA2YTA1OTBhYmUyNmU4NGQwY2VmZjJiNTEzNWIxOC4uYTI2NjJhNjUwZjJjZDg4NDY2MjNkMGM2
MTA4NzY3MDdlYmNiZDMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbEVsZW1lbnQuY3BwCkBAIC0yNTIsNyArMjUyLDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50OjpkaWRBdHRhY2hSZW5kZXJlcnMoKQogICAgICAgICBzZXRBdXRvZm9jdXNlZCgpOwog
CiAgICAgICAgIFJlZlB0cjxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PiBlbGVtZW50ID0gdGhpczsK
LSAgICAgICAgYXV0byBmcmFtZVZpZXcgPSBtYWtlUmVmUHRyKGRvY3VtZW50KCkudmlldygpKTsK
KyAgICAgICAgUmVmUHRyIGZyYW1lVmlldyA9IGRvY3VtZW50KCkudmlldygpOwogICAgICAgICBp
ZiAoZnJhbWVWaWV3ICYmIGZyYW1lVmlldy0+bGF5b3V0Q29udGV4dCgpLmlzSW5MYXlvdXQoKSkg
ewogICAgICAgICAgICAgZnJhbWVWaWV3LT5xdWV1ZVBvc3RMYXlvdXRDYWxsYmFjayhbZWxlbWVu
dF0gewogICAgICAgICAgICAgICAgIGVsZW1lbnQtPmZvY3VzKHsgU2VsZWN0aW9uUmVzdG9yYXRp
b25Nb2RlOjpQbGFjZUNhcmV0QXRTdGFydCB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKaW5kZXggYWI2YmRkNDhkMTIyMzdiNTJh
ZWJlYzg3ZTllYjBkZDE5NzI1NzU5YS4uZTM1ZGIwMDk1MmUxNmQ2ZmIzNTljMzNiYjFkNmEzM2Y3
OTZkOWU4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbi5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgc3RkOjpvcHRpb25hbDxWYXJpYW50PFJl
ZlB0cjxSYWRpb05vZGVMaXN0PiwgUmVmUHRyPEVsZW1lbnQ+Pj4gSFRNTEZvcm1Db250cm9sc0MK
IHN0YXRpYyB1bnNpZ25lZCBmaW5kRm9ybUFzc29jaWF0ZWRFbGVtZW50KGNvbnN0IFZlY3RvcjxX
ZWFrUHRyPEhUTUxFbGVtZW50Pj4mIGVsZW1lbnRzLCBjb25zdCBFbGVtZW50JiBlbGVtZW50KQog
ewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBlbGVtZW50cy5zaXplKCk7ICsraSkgewot
ICAgICAgICBhdXRvIGN1cnJlbnRFbGVtZW50ID0gbWFrZVJlZlB0cihlbGVtZW50c1tpXS5nZXQo
KSk7CisgICAgICAgIFJlZlB0ciBjdXJyZW50RWxlbWVudCA9IGVsZW1lbnRzW2ldLmdldCgpOwog
ICAgICAgICBBU1NFUlQoY3VycmVudEVsZW1lbnQpOwogICAgICAgICBhdXRvKiBhc3NvY2lhdGVk
RWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LT5hc0Zvcm1Bc3NvY2lhdGVkRWxlbWVudCgpOwogICAg
ICAgICBBU1NFUlQoYXNzb2NpYXRlZEVsZW1lbnQpOwpAQCAtOTIsNyArOTIsNyBAQCBIVE1MRWxl
bWVudCogSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OmN1c3RvbUVsZW1lbnRBZnRlcihFbGVt
ZW50KiBjdXJyZW50KSBjbwogICAgICAgICBzdGFydCA9IGZpbmRGb3JtQXNzb2NpYXRlZEVsZW1l
bnQoZWxlbWVudHMsICpjdXJyZW50KSArIDE7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBzdGFy
dDsgaSA8IGVsZW1lbnRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8gZWxlbWVudCA9IG1h
a2VSZWZQdHIoZWxlbWVudHNbaV0uZ2V0KCkpOworICAgICAgICBSZWZQdHIgZWxlbWVudCA9IGVs
ZW1lbnRzW2ldLmdldCgpOwogICAgICAgICBBU1NFUlQoZWxlbWVudCk7CiAgICAgICAgIEFTU0VS
VChlbGVtZW50LT5hc0Zvcm1Bc3NvY2lhdGVkRWxlbWVudCgpKTsKICAgICAgICAgaWYgKGVsZW1l
bnQtPmFzRm9ybUFzc29jaWF0ZWRFbGVtZW50KCktPmlzRW51bWVyYXRhYmxlKCkpIHsKQEAgLTEy
MCw3ICsxMjAsNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjp1cGRhdGVOYW1l
ZEVsZW1lbnRDYWNoZSgpIGNvbnN0CiAKICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFp
blRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CiAgICAgZm9yIChhdXRvJiB3ZWFrRWxlbWVu
dCA6IG93bmVyTm9kZSgpLnVuc2FmZUFzc29jaWF0ZWRFbGVtZW50cygpKSB7Ci0gICAgICAgIGF1
dG8gZWxlbWVudCA9IG1ha2VSZWZQdHIod2Vha0VsZW1lbnQuZ2V0KCkpOworICAgICAgICBSZWZQ
dHIgZWxlbWVudCB7IHdlYWtFbGVtZW50LmdldCgpIH07CiAgICAgICAgIEFTU0VSVChlbGVtZW50
KTsKICAgICAgICAgYXV0byogYXNzb2NpYXRlZEVsZW1lbnQgPSBlbGVtZW50LT5hc0Zvcm1Bc3Nv
Y2lhdGVkRWxlbWVudCgpOwogICAgICAgICBBU1NFUlQoYXNzb2NpYXRlZEVsZW1lbnQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IDY0OTQzZmYyZTFmZTEzNTgy
NjU1ZDU1YzRiODM1MGRiZWZiMmQ1YWIuLjg5ZGVjNWU4NzNlOTk1YmZjMmFlYThmNmU3ODJjMDE1
ZjAxNzlmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKQEAgLTkz
LDcgKzkzLDcgQEAgSFRNTEZvcm1FbGVtZW50Ojp+SFRNTEZvcm1FbGVtZW50KCkKIAogICAgIG1f
ZGVmYXVsdEJ1dHRvbiA9IG51bGxwdHI7CiAgICAgZm9yIChhdXRvJiB3ZWFrRWxlbWVudCA6IG1f
YXNzb2NpYXRlZEVsZW1lbnRzKSB7Ci0gICAgICAgIGF1dG8gZWxlbWVudCA9IG1ha2VSZWZQdHIo
d2Vha0VsZW1lbnQuZ2V0KCkpOworICAgICAgICBSZWZQdHIgZWxlbWVudCB7IHdlYWtFbGVtZW50
LmdldCgpIH07CiAgICAgICAgIEFTU0VSVChlbGVtZW50KTsKICAgICAgICAgYXV0byogYXNzb2Np
YXRlZEVsZW1lbnQgPSBlbGVtZW50LT5hc0Zvcm1Bc3NvY2lhdGVkRWxlbWVudCgpOwogICAgICAg
ICBBU1NFUlQoYXNzb2NpYXRlZEVsZW1lbnQpOwpAQCAtMTU5LDcgKzE1OSw3IEBAIHVuc2lnbmVk
IEhUTUxGb3JtRWxlbWVudDo6bGVuZ3RoKCkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBsZW5ndGgg
PSAwOwogICAgIGZvciAoYXV0byYgd2Vha0VsZW1lbnQgOiBtX2Fzc29jaWF0ZWRFbGVtZW50cykg
ewotICAgICAgICBhdXRvIGVsZW1lbnQgPSBtYWtlUmVmUHRyKHdlYWtFbGVtZW50LmdldCgpKTsK
KyAgICAgICAgUmVmUHRyIGVsZW1lbnQgeyB3ZWFrRWxlbWVudC5nZXQoKSB9OwogICAgICAgICBB
U1NFUlQoZWxlbWVudCk7CiAgICAgICAgIGF1dG8qIGFzc29jaWF0ZWRFbGVtZW50ID0gZWxlbWVu
dC0+YXNGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKTsKICAgICAgICAgQVNTRVJUKGFzc29jaWF0ZWRF
bGVtZW50KTsKQEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6c3VibWl0
SWZQb3NzaWJsZShFdmVudCogZXZlbnQsIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIHN1YgogCiAg
ICAgYm9vbCBzaG91bGRWYWxpZGF0ZSA9IGRvY3VtZW50KCkucGFnZSgpICYmIGRvY3VtZW50KCku
cGFnZSgpLT5zZXR0aW5ncygpLmludGVyYWN0aXZlRm9ybVZhbGlkYXRpb25FbmFibGVkKCkgJiYg
IW5vVmFsaWRhdGUoKTsKICAgICBpZiAoc2hvdWxkVmFsaWRhdGUpIHsKLSAgICAgICAgYXV0byBz
dWJtaXRFbGVtZW50ID0gbWFrZVJlZlB0cihzdWJtaXR0ZXIgPyBzdWJtaXR0ZXIgOiBmaW5kU3Vi
bWl0dGVyKGV2ZW50KSk7CisgICAgICAgIFJlZlB0ciBzdWJtaXRFbGVtZW50ID0gc3VibWl0dGVy
ID8gc3VibWl0dGVyIDogZmluZFN1Ym1pdHRlcihldmVudCk7CiAgICAgICAgIGlmIChzdWJtaXRF
bGVtZW50ICYmIHN1Ym1pdEVsZW1lbnQtPmZvcm1Ob1ZhbGlkYXRlKCkpCiAgICAgICAgICAgICBz
aG91bGRWYWxpZGF0ZSA9IGZhbHNlOwogICAgIH0KQEAgLTM0MSw3ICszNDEsNyBAQCBTdHJpbmdQ
YWlyVmVjdG9yIEhUTUxGb3JtRWxlbWVudDo6dGV4dEZpZWxkVmFsdWVzKCkgY29uc3QKICAgICBT
dHJpbmdQYWlyVmVjdG9yIHJlc3VsdDsKICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShtX2Fzc29jaWF0ZWRFbGVtZW50cy5zaXplKCkpOwogICAgIGZvciAoYXV0byYgd2Vha0VsZW1l
bnQgOiBtX2Fzc29jaWF0ZWRFbGVtZW50cykgewotICAgICAgICBhdXRvIGVsZW1lbnQgPSBtYWtl
UmVmUHRyKHdlYWtFbGVtZW50LmdldCgpKTsKKyAgICAgICAgUmVmUHRyIGVsZW1lbnQgeyB3ZWFr
RWxlbWVudC5nZXQoKSB9OwogICAgICAgICBpZiAoIWlzPEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1l
bnQpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGF1dG8mIGlucHV0ID0gZG93bmNh
c3Q8SFRNTElucHV0RWxlbWVudD4oKmVsZW1lbnQpOwpAQCAtNzE2LDcgKzcxNiw3IEBAIFN0cmlu
ZyBIVE1MRm9ybUVsZW1lbnQ6OnRhcmdldCgpIGNvbnN0CiAKIFN0cmluZyBIVE1MRm9ybUVsZW1l
bnQ6OmVmZmVjdGl2ZVRhcmdldChjb25zdCBFdmVudCogZXZlbnQsIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQqIG92ZXJyaWRlU3VibWl0dGVyKSBjb25zdAogewotICAgIGlmIChhdXRvIHN1Ym1pdHRl
ciA9IG1ha2VSZWZQdHIob3ZlcnJpZGVTdWJtaXR0ZXIgPyBvdmVycmlkZVN1Ym1pdHRlciA6IGZp
bmRTdWJtaXR0ZXIoZXZlbnQpKSkgeworICAgIGlmIChSZWZQdHIgc3VibWl0dGVyID0gb3ZlcnJp
ZGVTdWJtaXR0ZXIgPyBvdmVycmlkZVN1Ym1pdHRlciA6IGZpbmRTdWJtaXR0ZXIoZXZlbnQpKSB7
CiAgICAgICAgIGF1dG8gdGFyZ2V0VmFsdWUgPSBzdWJtaXR0ZXItPmF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oZm9ybXRhcmdldEF0dHIpOwogICAgICAgICBpZiAoIXRhcmdldFZhbHVl
LmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuIHRhcmdldFZhbHVlOwpAQCAtODM4LDcgKzgz
OCw3IEBAIFJlZlB0cjxIVE1MRWxlbWVudD4gSFRNTEZvcm1FbGVtZW50OjplbGVtZW50RnJvbVBh
c3ROYW1lc01hcChjb25zdCBBdG9tU3RyaW5nJiBwCiAgICAgYXV0byB3ZWFrRWxlbWVudCA9IG1f
cGFzdE5hbWVzTWFwLmdldChwYXN0TmFtZSk7CiAgICAgaWYgKCF3ZWFrRWxlbWVudCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBlbGVtZW50ID0gbWFrZVJlZlB0cih3ZWFrRWxl
bWVudC5nZXQoKSk7CisgICAgUmVmUHRyIGVsZW1lbnQgeyB3ZWFrRWxlbWVudC5nZXQoKSB9Owog
I2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYXNzZXJ0SXRlbUNhbkJlSW5QYXN0TmFtZXNNYXAoZWxl
bWVudC0+YXNGb3JtTmFtZWRJdGVtKCkpOwogI2VuZGlmCkBAIC05MzAsNyArOTMwLDcgQEAgY29u
c3QgVmVjdG9yPFdlYWtQdHI8SFRNTEVsZW1lbnQ+PiYgSFRNTEZvcm1FbGVtZW50Ojp1bnNhZmVB
c3NvY2lhdGVkRWxlbWVudHMoKQogVmVjdG9yPFJlZjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQ+PiBI
VE1MRm9ybUVsZW1lbnQ6OmNvcHlBc3NvY2lhdGVkRWxlbWVudHNWZWN0b3IoKSBjb25zdAogewog
ICAgIHJldHVybiBXVEY6Om1hcChtX2Fzc29jaWF0ZWRFbGVtZW50cywgW10gKGF1dG8mIHdlYWtF
bGVtZW50KSB7Ci0gICAgICAgIGF1dG8gZWxlbWVudCA9IG1ha2VSZWZQdHIod2Vha0VsZW1lbnQu
Z2V0KCkpOworICAgICAgICBSZWZQdHIgZWxlbWVudCB7IHdlYWtFbGVtZW50LmdldCgpIH07CiAg
ICAgICAgIEFTU0VSVChlbGVtZW50KTsKICAgICAgICAgYXV0byogZm9ybUFzc29jaWF0ZWRFbGVt
ZW50ID0gZWxlbWVudC0+YXNGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKTsKICAgICAgICAgQVNTRVJU
KGZvcm1Bc3NvY2lhdGVkRWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVT
ZXRFbGVtZW50LmNwcAppbmRleCBkYzMyNzMyODIyZGQ5MDdhNzUwMTZhN2UwMTdlYTVmOGU0ODU2
NGUxLi42MjM3ZjUyZWZhNmRlYzlmZmZhNmM3ODc5MDVkZTA1ODIwY2RmNDc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKQEAgLTIyNSw3ICsyMjUsNyBA
QCB2b2lkIEhUTUxGcmFtZVNldEVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5
cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lcgogCiBXaW5kb3dQcm94eSogSFRNTEZyYW1lU2V0RWxl
bWVudDo6bmFtZWRJdGVtKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCiB7Ci0gICAgYXV0byBmcmFt
ZUVsZW1lbnQgPSBtYWtlUmVmUHRyKGNoaWxkcmVuKCktPm5hbWVkSXRlbShuYW1lKSk7CisgICAg
UmVmUHRyIGZyYW1lRWxlbWVudCA9IGNoaWxkcmVuKCktPm5hbWVkSXRlbShuYW1lKTsKICAgICBp
ZiAoIWlzPEhUTUxGcmFtZUVsZW1lbnQ+KGZyYW1lRWxlbWVudCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIdG1sRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIdG1sRWxlbWVudC5jcHAKaW5kZXggNjUx
NzRiODdjOTA0OTE1YmU5ZDk4N2IyNjI3Mzk2YzM3OGI0MzgzMS4uYjdlZjVlZmI1MzE5MzM1OTBj
ODhjMzM5MmUxMzJiNzQ3NzViM2Q2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSHRtbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEh0bWxFbGVt
ZW50LmNwcApAQCAtNjksNyArNjksNyBAQCB2b2lkIEhUTUxIdG1sRWxlbWVudDo6aW5zZXJ0ZWRC
eVBhcnNlcigpCiAgICAgaWYgKCFkb2N1bWVudCgpLmZyYW1lKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGF1dG8gZG9jdW1lbnRMb2FkZXIgPSBtYWtlUmVmUHRyKGRvY3VtZW50KCkuZnJhbWUo
KS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSk7CisgICAgUmVmUHRyIGRvY3VtZW50TG9hZGVy
ID0gZG9jdW1lbnQoKS5mcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwogICAgIGlm
ICghZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggMzVmZWI1ZWVhZTVkNDQ5NzQxNjU3NzJjY2M5NjAz
NDc2ZmYzMjUyNS4uYzgzZmQyOWQwYmFjYzNmMjEwMjJkYWE1ODhmNDdiZDk5N2ZhYTM5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC0xODIsNyArMTgyLDcg
QEAgdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpzZXRCZXN0Rml0VVJMQW5kRFBSRnJvbUltYWdlQ2Fu
ZGlkYXRlKGNvbnN0IEltYWdlQ2FuZGlkYXQKIAogSW1hZ2VDYW5kaWRhdGUgSFRNTEltYWdlRWxl
bWVudDo6YmVzdEZpdFNvdXJjZUZyb21QaWN0dXJlRWxlbWVudCgpCiB7Ci0gICAgYXV0byBwaWN0
dXJlID0gbWFrZVJlZlB0cihwaWN0dXJlRWxlbWVudCgpKTsKKyAgICBSZWZQdHIgcGljdHVyZSA9
IHBpY3R1cmVFbGVtZW50KCk7CiAgICAgaWYgKCFwaWN0dXJlKQogICAgICAgICByZXR1cm4geyB9
OwogCkBAIC0yMDYsNyArMjA2LDcgQEAgSW1hZ2VDYW5kaWRhdGUgSFRNTEltYWdlRWxlbWVudDo6
YmVzdEZpdFNvdXJjZUZyb21QaWN0dXJlRWxlbWVudCgpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGRvY3VtZW50RWxlbWVudCA9IG1ha2VSZWZQ
dHIoZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKSk7CisgICAgICAgIFJlZlB0ciBkb2N1bWVu
dEVsZW1lbnQgPSBkb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpOwogICAgICAgICBNZWRpYVF1
ZXJ5RXZhbHVhdG9yIGV2YWx1YXRvciB7IGRvY3VtZW50KCkucHJpbnRpbmcoKSA/ICJwcmludCIg
OiAic2NyZWVuIiwgZG9jdW1lbnQoKSwgZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50
LT5jb21wdXRlZFN0eWxlKCkgOiBudWxscHRyIH07CiAgICAgICAgIGF1dG8qIHF1ZXJpZXMgPSBz
b3VyY2UucGFyc2VkTWVkaWFBdHRyaWJ1dGUoZG9jdW1lbnQoKSk7CiAgICAgICAgIExPRyhNZWRp
YVF1ZXJpZXMsICJIVE1MSW1hZ2VFbGVtZW50ICVwIGJlc3RGaXRTb3VyY2VGcm9tUGljdHVyZUVs
ZW1lbnQgZXZhbHVhdGluZyBtZWRpYSBxdWVyaWVzIiwgdGhpcyk7CkBAIC0yMzAsNyArMjMwLDcg
QEAgSW1hZ2VDYW5kaWRhdGUgSFRNTEltYWdlRWxlbWVudDo6YmVzdEZpdFNvdXJjZUZyb21QaWN0
dXJlRWxlbWVudCgpCiAKIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6ZXZhbHVhdGVEeW5hbWljTWVk
aWFRdWVyeURlcGVuZGVuY2llcygpCiB7Ci0gICAgYXV0byBkb2N1bWVudEVsZW1lbnQgPSBtYWtl
UmVmUHRyKGRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCkpOworICAgIFJlZlB0ciBkb2N1bWVu
dEVsZW1lbnQgPSBkb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpOwogICAgIE1lZGlhUXVlcnlF
dmFsdWF0b3IgZXZhbHVhdG9yIHsgZG9jdW1lbnQoKS5wcmludGluZygpID8gInByaW50IiA6ICJz
Y3JlZW4iLCBkb2N1bWVudCgpLCBkb2N1bWVudEVsZW1lbnQgPyBkb2N1bWVudEVsZW1lbnQtPmNv
bXB1dGVkU3R5bGUoKSA6IG51bGxwdHIgfTsKIAogICAgIGlmICghZXZhbHVhdG9yLmV2YWx1YXRl
Rm9yQ2hhbmdlcyhtX21lZGlhUXVlcnlEeW5hbWljUmVzdWx0cykpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCBhODAyNTJlODdkMzZkMWU1NDgxNTQ5YThkNjVi
ZGJlOTk5MmI3YzVhLi4xYjliMmUxYjIyMWUwZmUzYWFmNmE1ZTIwMjk0NTliNDAzNDM3MjM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTEyNDcsNyArMTI0
Nyw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCYg
ZXZlbnQpCiAgICAgICAgICAgICBkaXNwYXRjaEZvcm1Db250cm9sQ2hhbmdlRXZlbnQoKTsKIAog
ICAgICAgICAvLyBGb3JtIG1heSBuZXZlciBoYXZlIGJlZW4gcHJlc2VudCwgb3IgbWF5IGhhdmUg
YmVlbiBkZXN0cm95ZWQgYnkgY29kZSByZXNwb25kaW5nIHRvIHRoZSBjaGFuZ2UgZXZlbnQuCi0g
ICAgICAgIGlmIChhdXRvIGZvcm1FbGVtZW50ID0gbWFrZVJlZlB0cihmb3JtKCkpKQorICAgICAg
ICBpZiAoUmVmUHRyIGZvcm1FbGVtZW50ID0gZm9ybSgpKQogICAgICAgICAgICAgZm9ybUVsZW1l
bnQtPnN1Ym1pdEltcGxpY2l0bHkoZXZlbnQsIGNhblRyaWdnZXJJbXBsaWNpdFN1Ym1pc3Npb24o
KSk7CiAKICAgICAgICAgZXZlbnQuc2V0RGVmYXVsdEhhbmRsZWQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwCmluZGV4IGFlNTgyYjNjMjVmYmZiNjI3ZDg0NDE0ZTA2
MzNmMWNmZWE5NjQ1ZGMuLjBiYWMwYmY4ZWIyYzRmMWIwOTZjOTcwOThmZGNiMGVlMmNjYTJkYzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcApAQCAtNDMsNyArNDMs
NyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdGF0aWMgTGFiZWxhYmxlRWxlbWVu
dCogZmlyc3RFbGVtZW50V2l0aElkSWZMYWJlbGFibGUoVHJlZVNjb3BlJiB0cmVlU2NvcGUsIGNv
bnN0IEF0b21TdHJpbmcmIGlkKQogewotICAgIGF1dG8gZWxlbWVudCA9IG1ha2VSZWZQdHIodHJl
ZVNjb3BlLmdldEVsZW1lbnRCeUlkKGlkKSk7CisgICAgUmVmUHRyIGVsZW1lbnQgPSB0cmVlU2Nv
cGUuZ2V0RWxlbWVudEJ5SWQoaWQpOwogICAgIGlmICghaXM8TGFiZWxhYmxlRWxlbWVudD4oZWxl
bWVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExlZ2VuZEVsZW1lbnQuY3BwCmluZGV4IDY5YjMwNzA0ZmFiNzM4MjBjMTNhY2RjNzZjYmVhMTg4
NGI1YmYwZjcuLjQxZWUyYTk5MDUxY2U1YmU0YzM1ZTQ1YzZjNmZjMjYxNmRmNTExMDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3BwCkBAIC04NSw3ICs4NSw3IEBA
IEhUTUxGb3JtRWxlbWVudCogSFRNTExlZ2VuZEVsZW1lbnQ6OmZvcm0oKSBjb25zdAogICAgIC8v
IEFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbiwgSWYgdGhlIGxlZ2VuZCBoYXMgYSBmaWVs
ZHNldCBlbGVtZW50IGFzCiAgICAgLy8gaXRzIHBhcmVudCwgdGhlbiB0aGUgZm9ybSBhdHRyaWJ1
dGUgbXVzdCByZXR1cm4gdGhlIHNhbWUgdmFsdWUgYXMgdGhlCiAgICAgLy8gZm9ybSBhdHRyaWJ1
dGUgb24gdGhhdCBmaWVsZHNldCBlbGVtZW50LiBPdGhlcndpc2UsIGl0IG11c3QgcmV0dXJuIG51
bGwuCi0gICAgYXV0byBmaWVsZHNldCA9IG1ha2VSZWZQdHIocGFyZW50Tm9kZSgpKTsKKyAgICBS
ZWZQdHIgZmllbGRzZXQgPSBwYXJlbnROb2RlKCk7CiAgICAgaWYgKCFpczxIVE1MRmllbGRTZXRF
bGVtZW50PihmaWVsZHNldCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBk
b3duY2FzdDxIVE1MRmllbGRTZXRFbGVtZW50PigqZmllbGRzZXQpLmZvcm0oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAppbmRleCA5ODc3MWQ4MjMxYjY0Y2ViMjc1MTli
N2RiNTE5MWJkZGViY2Y3NTBhLi5hMDU0ZDNlZjIxNDMzMTRhNDFjOTE3YzU4YjAxNjQwMzNkMjFj
MTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCkBAIC00MzcsNyAr
NDM3LDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnNldENTU1N0eWxlU2hlZXQoY29uc3QgU3Ry
aW5nJiBocmVmLCBjb25zdCBVUkwmIGJhc2VVUkwsIGMKICAgICAgICAgQVNTRVJUKCFtX3NoZWV0
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihk
b2N1bWVudCgpLmZyYW1lKCkpOworICAgIFJlZlB0ciBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUo
KTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKQEAgLTYyMSw3ICs2MjEsNyBA
QCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RI
YXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CiAgICAgLy8gQXBwZW5kIHRoZSBVUkwgb2YgdGhpcyBs
aW5rIGVsZW1lbnQuCiAgICAgYWRkU3VicmVzb3VyY2VVUkwodXJscywgaHJlZigpKTsKIAotICAg
IGlmIChhdXRvIHN0eWxlU2hlZXQgPSBtYWtlUmVmUHRyKHRoaXMtPnNoZWV0KCkpKSB7CisgICAg
aWYgKFJlZlB0ciBzdHlsZVNoZWV0ID0gdGhpcy0+c2hlZXQoKSkgewogICAgICAgICBzdHlsZVNo
ZWV0LT5jb250ZW50cygpLnRyYXZlcnNlU3VicmVzb3VyY2VzKFsmXSAoYXV0byYgcmVzb3VyY2Up
IHsKICAgICAgICAgICAgIHVybHMuYWRkKHJlc291cmNlLnVybCgpKTsKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4
IDE5OTg2MmI4MDdhYzIyMDc0YjJmNDVjMmYxMjk3YjE1YjYyYTM4MGIuLjBhYTgzZWJhMDgyMDMw
OWViMmQ1MTk2YWNjMjY1YTk5OWNlMjE5OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcApAQCAtMTQ3Myw3ICsxNDczLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojpsb2FkUmVzb3VyY2UoY29uc3QgVVJMJiBpbml0aWFsVVJMLCBDb250ZW50VHlwZSYgY29udGVu
dFQKICAgICB9CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAgIGlmIChhdXRv
IGRvY3VtZW50TG9hZGVyID0gbWFrZVJlZlB0cihmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2Fk
ZXIoKSkpIHsKKyAgICBpZiAoUmVmUHRyIGRvY3VtZW50TG9hZGVyID0gZnJhbWUtPmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCkpIHsKICAgICAgICAgaWYgKHBhZ2UtPnVzZXJDb250ZW50UHJvdmlk
ZXIoKS5wcm9jZXNzQ29udGVudFJ1bGVMaXN0c0ZvckxvYWQoKnBhZ2UsIHVybCwgQ29udGVudEV4
dGVuc2lvbnM6OlJlc291cmNlVHlwZTo6TWVkaWEsICpkb2N1bWVudExvYWRlcikuc3VtbWFyeS5i
bG9ja2VkTG9hZCkgewogICAgICAgICAgICAgbWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVy
OjpOZXR3b3JrU3RhdGU6OkZvcm1hdEVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE4
MzYsNyArMTgzNiw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4dFRy
YWNrQ3Vlcyhjb25zdCBNZWRpYVRpbWUmIG1vdmllVGltZSkKICAgICAgICAgLy8gc2ltcGxlIGV2
ZW50IG5hbWVkIGN1ZWNoYW5nZSBhdCB0aGUgdHJhY2sgZWxlbWVudCBhcyB3ZWxsLgogICAgICAg
ICBpZiAoaXM8TG9hZGFibGVUZXh0VHJhY2s+KCphZmZlY3RlZFRyYWNrKSkgewogICAgICAgICAg
ICAgYXV0byBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmN1ZWNoYW5nZUV2ZW50
LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pOwotICAgICAg
ICAgICAgYXV0byB0cmFja0VsZW1lbnQgPSBtYWtlUmVmUHRyKGRvd25jYXN0PExvYWRhYmxlVGV4
dFRyYWNrPigqYWZmZWN0ZWRUcmFjaykudHJhY2tFbGVtZW50KCkpOworICAgICAgICAgICAgUmVm
UHRyIHRyYWNrRWxlbWVudCA9IGRvd25jYXN0PExvYWRhYmxlVGV4dFRyYWNrPigqYWZmZWN0ZWRU
cmFjaykudHJhY2tFbGVtZW50KCk7CiAgICAgICAgICAgICBBU1NFUlQodHJhY2tFbGVtZW50KTsK
ICAgICAgICAgICAgIHNjaGVkdWxlRXZlbnRPbigqdHJhY2tFbGVtZW50LCBXVEZNb3ZlKGV2ZW50
KSk7CiAgICAgICAgIH0KQEAgLTQyNjAsNyArNDI2MCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6cmVtb3ZlVGV4dFRyYWNrKFJlZjxUZXh0VHJhY2s+JiYgdHJhY2ssIGJvb2wgc2NoZWR1bGVF
dmVuCiAgICAgICAgIHJldHVybjsKIAogICAgIFRyYWNrRGlzcGxheVVwZGF0ZVNjb3BlIHNjb3Bl
IHsgKnRoaXMgfTsKLSAgICBpZiAoYXV0byBjdWVzID0gbWFrZVJlZlB0cih0cmFjay0+Y3Vlcygp
KSkKKyAgICBpZiAoUmVmUHRyIGN1ZXMgPSB0cmFjay0+Y3VlcygpKQogICAgICAgICB0ZXh0VHJh
Y2tSZW1vdmVDdWVzKHRyYWNrLCAqY3Vlcyk7CiAgICAgdHJhY2stPmNsZWFyQ2xpZW50KCp0aGlz
KTsKICAgICBpZiAobV90ZXh0VHJhY2tzKQpAQCAtNDYyMiw3ICs0NjIyLDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50Ojp1cGRhdGVDYXB0aW9uQ29udGFpbmVyKCkKIAogdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpsYXlvdXRTaXplQ2hhbmdlZCgpCiB7Ci0gICAgaWYgKGF1dG8gZnJhbWVWaWV3ID0g
bWFrZVJlZlB0cihkb2N1bWVudCgpLnZpZXcoKSkpIHsKKyAgICBpZiAoUmVmUHRyIGZyYW1lVmll
dyA9IGRvY3VtZW50KCkudmlldygpKSB7CiAgICAgICAgIGF1dG8gdGFzayA9IFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gewogICAgICAgICAgICAgaWYgKGF1dG8gcm9vdCA9
IHVzZXJBZ2VudFNoYWRvd1Jvb3QoKSkKICAgICAgICAgICAgICAgICByb290LT5kaXNwYXRjaEV2
ZW50KEV2ZW50OjpjcmVhdGUoInJlc2l6ZSIsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6
SXNDYW5jZWxhYmxlOjpObykpOwpAQCAtNjg4MSw3ICs2ODgxLDcgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpjcmVhdGVNZWRpYVBsYXllcigpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5B
TFlTSVMKICAgICBtZWRpYVNlc3Npb24oKS5zZXRBY3RpdmUodHJ1ZSk7CiAKICNpZiBFTkFCTEUo
V0VCX0FVRElPKQotICAgIGF1dG8gcHJvdGVjdGVkQXVkaW9Tb3VyY2VOb2RlID0gbWFrZVJlZlB0
cihtX2F1ZGlvU291cmNlTm9kZSk7CisgICAgUmVmUHRyIHByb3RlY3RlZEF1ZGlvU291cmNlTm9k
ZSA9IG1fYXVkaW9Tb3VyY2VOb2RlOwogICAgIHN0ZDo6b3B0aW9uYWw8TG9ja2VyPExvY2s+PiBh
dWRpb1NvdXJjZU5vZGVMb2NrZXI7CiAgICAgaWYgKG1fYXVkaW9Tb3VyY2VOb2RlKQogICAgICAg
ICBhdWRpb1NvdXJjZU5vZGVMb2NrZXIuZW1wbGFjZShtX2F1ZGlvU291cmNlTm9kZS0+cHJvY2Vz
c0xvY2soKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4
IGQ3YjhlNGJiMGNkOGE1N2FjZGYyOGM3YzAzZjRjZGVmNDRkNjhjYzMuLjcyMWQyZGM5MjYxZWI5
NGJhZmZiOTFjM2ExMTk0YWZkYTE5YTJkYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9i
amVjdEVsZW1lbnQuY3BwCkBAIC00MDQsNyArNDA0LDcgQEAgc3RhdGljIGlubGluZSBib29sIHNo
b3VsZEJlRXhwb3NlZChjb25zdCBIVE1MT2JqZWN0RWxlbWVudCYgZWxlbWVudCkKICAgICAvLyB3
aXRoIG5vIGNoaWxkcmVuIG90aGVyIHRoYW4gcGFyYW0gZWxlbWVudHMsIHVua25vd24gZWxlbWVu
dHMgYW5kIHdoaXRlc3BhY2UgY2FuIGJlIGZvdW5kCiAgICAgLy8gYnkgbmFtZSBpbiBhIGRvY3Vt
ZW50LCBhbmQgb3RoZXIgb2JqZWN0IGVsZW1lbnRzIGNhbm5vdCIuCiAKLSAgICBmb3IgKGF1dG8g
Y2hpbGQgPSBtYWtlUmVmUHRyKGVsZW1lbnQuZmlyc3RDaGlsZCgpKTsgY2hpbGQ7IGNoaWxkID0g
Y2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICBmb3IgKFJlZlB0ciBjaGlsZCA9IGVsZW1lbnQu
Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAg
ICAgICBpZiAocHJldmVudHNQYXJlbnRPYmplY3RGcm9tRXhwb3N1cmUoKmNoaWxkKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC00ODAsNyArNDgwLDcgQEAgYm9vbCBIVE1M
T2JqZWN0RWxlbWVudDo6YXBwZW5kRm9ybURhdGEoRE9NRm9ybURhdGEmIGZvcm1EYXRhLCBib29s
KQogCiAgICAgLy8gVXNlIFBsdWdpbkxvYWRpbmdQb2xpY3k6OkRvTm90TG9hZCBoZXJlIG9yIGl0
IHdvdWxkIGZpcmUgSlMgZXZlbnRzIHN5bmNocm9ub3VzbHkKICAgICAvLyB3aGljaCB3b3VsZCBu
b3QgYmUgc2FmZSBoZXJlLgotICAgIGF1dG8gd2lkZ2V0ID0gbWFrZVJlZlB0cihwbHVnaW5XaWRn
ZXQoUGx1Z2luTG9hZGluZ1BvbGljeTo6RG9Ob3RMb2FkKSk7CisgICAgUmVmUHRyIHdpZGdldCA9
IHBsdWdpbldpZGdldChQbHVnaW5Mb2FkaW5nUG9saWN5OjpEb05vdExvYWQpOwogICAgIGlmICgh
aXM8UGx1Z2luVmlld0Jhc2U+KHdpZGdldCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBT
dHJpbmcgdmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91
cEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNw
cAppbmRleCA5M2E2ZjRjY2Y1M2U0YjMwZDNkMjk5NWU0ZWFlNDMzZjM4ZTc5NDE3Li4xNjVmYTZj
NTU5NTZmZmE3ZTdiNjY3ZTJkMGZhZDlmZmQ4NmUwNjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBIVE1MT3B0
R3JvdXBFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9tU3QKIAogdm9pZCBIVE1MT3B0R3JvdXBFbGVtZW50OjpyZWNhbGNTZWxlY3RPcHRp
b25zKCkKIHsKLSAgICBpZiAoYXV0byBzZWxlY3RFbGVtZW50ID0gbWFrZVJlZlB0cihhbmNlc3Rv
cnNPZlR5cGU8SFRNTFNlbGVjdEVsZW1lbnQ+KCp0aGlzKS5maXJzdCgpKSkgeworICAgIGlmIChS
ZWZQdHIgc2VsZWN0RWxlbWVudCA9IGFuY2VzdG9yc09mVHlwZTxIVE1MU2VsZWN0RWxlbWVudD4o
KnRoaXMpLmZpcnN0KCkpIHsKICAgICAgICAgc2VsZWN0RWxlbWVudC0+c2V0UmVjYWxjTGlzdEl0
ZW1zKCk7CiAgICAgICAgIHNlbGVjdEVsZW1lbnQtPnVwZGF0ZVZhbGlkaXR5KCk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAppbmRleCA1Y2VjYWViZmQz
YjBhYzkwYTQwYmZjZGMyNmU4YjM4YzJmOTg3YzljLi45NjUxZDg0ZWEwMmI1Zjk3ZjI2Yjc3NGUw
ZjM2ODVkZTI5ODc0NzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50
LmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgSFRNTFBsdWdJbkVsZW1lbnQ6OnJlc2V0SW5z
dGFuY2UoKQogCiBKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZSogSFRNTFBsdWdJbkVsZW1lbnQ6OmJp
bmRpbmdzSW5zdGFuY2UoKQogewotICAgIGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKGRvY3VtZW50
KCkuZnJhbWUoKSk7CisgICAgUmVmUHRyIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpOwogICAg
IGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xMTEsNyArMTExLDcg
QEAgSlNDOjpCaW5kaW5nczo6SW5zdGFuY2UqIEhUTUxQbHVnSW5FbGVtZW50OjpiaW5kaW5nc0lu
c3RhbmNlKCkKICAgICAvLyB0aGUgY2FjaGVkIGFsbG9jYXRlZCBCaW5kaW5nczo6SW5zdGFuY2Uu
ICBOb3Qgc3VwcG9ydGluZyB0aGlzIGVkZ2UtY2FzZSBpcyBPSy4KIAogICAgIGlmICghbV9pbnN0
YW5jZSkgewotICAgICAgICBpZiAoYXV0byB3aWRnZXQgPSBtYWtlUmVmUHRyKHBsdWdpbldpZGdl
dCgpKSkKKyAgICAgICAgaWYgKFJlZlB0ciB3aWRnZXQgPSBwbHVnaW5XaWRnZXQoKSkKICAgICAg
ICAgICAgIG1faW5zdGFuY2UgPSBmcmFtZS0+c2NyaXB0KCkuY3JlYXRlU2NyaXB0SW5zdGFuY2VG
b3JXaWRnZXQod2lkZ2V0LmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJuIG1faW5zdGFuY2UuZ2V0
KCk7CkBAIC00MzUsOCArNDM1LDggQEAgYm9vbCBIVE1MUGx1Z0luRWxlbWVudDo6c2V0UmVwbGFj
ZW1lbnQoUmVuZGVyRW1iZWRkZWRPYmplY3Q6OlBsdWdpblVuYXZhaWxhYmlsaXQKIAogYm9vbCBI
VE1MUGx1Z0luRWxlbWVudDo6aXNSZXBsYWNlbWVudE9ic2N1cmVkKCkKIHsKLSAgICBhdXRvIHRv
cERvY3VtZW50ID0gbWFrZVJlZihkb2N1bWVudCgpLnRvcERvY3VtZW50KCkpOwotICAgIGF1dG8g
dG9wRnJhbWVWaWV3ID0gbWFrZVJlZlB0cih0b3BEb2N1bWVudC0+dmlldygpKTsKKyAgICBSZWYg
dG9wRG9jdW1lbnQgPSBkb2N1bWVudCgpLnRvcERvY3VtZW50KCk7CisgICAgUmVmUHRyIHRvcEZy
YW1lVmlldyA9IHRvcERvY3VtZW50LT52aWV3KCk7CiAgICAgaWYgKCF0b3BGcmFtZVZpZXcpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJ
bkltYWdlRWxlbWVudC5jcHAKaW5kZXggMjA4YzhkMmExY2Q4Njk3MjRiNmRmNWQ5NTk0ZDk1OWI2
ODA1YjI4MC4uYmUxZmViMWI2MWIwZjA3OTQ1MjI4MWNmZDVhYjgxMzliOTg2NWM0MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCkBAIC04MSw3
ICs4MSw3IEBAIGJvb2wgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6aXNJbWFnZVR5cGUoKQogICAg
IGlmIChtX3NlcnZpY2VUeXBlLmlzRW1wdHkoKSAmJiBwcm90b2NvbElzKG1fdXJsLCAiZGF0YSIp
KQogICAgICAgICBtX3NlcnZpY2VUeXBlID0gbWltZVR5cGVGcm9tRGF0YVVSTChtX3VybCk7CiAK
LSAgICBpZiAoYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIoZG9jdW1lbnQoKS5mcmFtZSgpKSkKKyAg
ICBpZiAoUmVmUHRyIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpKQogICAgICAgICByZXR1cm4g
ZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLm9iamVjdENvbnRlbnRUeXBlKGRvY3VtZW50KCkuY29t
cGxldGVVUkwobV91cmwpLCBtX3NlcnZpY2VUeXBlKSA9PSBPYmplY3RDb250ZW50VHlwZTo6SW1h
Z2U7CiAKICAgICByZXR1cm4gSW1hZ2U6OnN1cHBvcnRzVHlwZShtX3NlcnZpY2VUeXBlKTsKQEAg
LTE3OSw3ICsxNzksNyBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRpZEF0dGFjaFJl
bmRlcmVycygpCiAKIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6d2lsbERldGFjaFJlbmRl
cmVycygpCiB7Ci0gICAgYXV0byB3aWRnZXQgPSBtYWtlUmVmUHRyKHBsdWdpbldpZGdldChQbHVn
aW5Mb2FkaW5nUG9saWN5OjpEb05vdExvYWQpKTsKKyAgICBSZWZQdHIgd2lkZ2V0ID0gcGx1Z2lu
V2lkZ2V0KFBsdWdpbkxvYWRpbmdQb2xpY3k6OkRvTm90TG9hZCk7CiAgICAgaWYgKGlzPFBsdWdp
blZpZXdCYXNlPih3aWRnZXQpKQogICAgICAgICBkb3duY2FzdDxQbHVnaW5WaWV3QmFzZT4oKndp
ZGdldCkud2lsbERldGFjaFJlbmRlcmVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFNsb3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNsb3RF
bGVtZW50LmNwcAppbmRleCAxNGVlMGY4OWNlNmMyYzc0NDZmNWE1MmIzN2RkZjFmNDg3YTZmZjYw
Li5hMmQxOTFjYTkwMThiNTg4ZjU1MDIxZTcwNmYzOWNiZDc5NWRlYmUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuY3BwCkBAIC05MywxNCArOTMsMTQgQEAgdm9pZCBIVE1M
U2xvdEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QgQXRvbVN0cmkKICAgICBIVE1MRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChuYW1lLCBv
bGRWYWx1ZSwgbmV3VmFsdWUsIHJlYXNvbik7CiAKICAgICBpZiAoaXNJblNoYWRvd1RyZWUoKSAm
JiBuYW1lID09IG5hbWVBdHRyKSB7Ci0gICAgICAgIGlmIChhdXRvIHNoYWRvd1Jvb3QgPSBtYWtl
UmVmUHRyKGNvbnRhaW5pbmdTaGFkb3dSb290KCkpKQorICAgICAgICBpZiAoUmVmUHRyIHNoYWRv
d1Jvb3QgPSBjb250YWluaW5nU2hhZG93Um9vdCgpKQogICAgICAgICAgICAgc2hhZG93Um9vdC0+
cmVuYW1lU2xvdEVsZW1lbnQoKnRoaXMsIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CiAgICAgfQogfQog
CiBjb25zdCBWZWN0b3I8V2Vha1B0cjxOb2RlPj4qIEhUTUxTbG90RWxlbWVudDo6YXNzaWduZWRO
b2RlcygpIGNvbnN0CiB7Ci0gICAgYXV0byBzaGFkb3dSb290ID0gbWFrZVJlZlB0cihjb250YWlu
aW5nU2hhZG93Um9vdCgpKTsKKyAgICBSZWZQdHIgc2hhZG93Um9vdCA9IGNvbnRhaW5pbmdTaGFk
b3dSb290KCk7CiAgICAgaWYgKCFzaGFkb3dSb290KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcAppbmRleCA2MWFjMmI1
YWZiYTBkZjAwZDFmZGE0Y2ZhOWFlM2IxNWI4NDZkYWRmLi5iNTczOTJiMWM0Yzk3N2UwZDg2MzA0
OTgxNmZiOTJmN2RkYzVkZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
b3VyY2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVt
ZW50LmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgSFRNTFNvdXJjZUVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpCiAgICAg
aWYgKG5hbWUgPT0gc3Jjc2V0QXR0ciB8fCBuYW1lID09IHNpemVzQXR0ciB8fCBuYW1lID09IG1l
ZGlhQXR0ciB8fCBuYW1lID09IHR5cGVBdHRyKSB7CiAgICAgICAgIGlmIChuYW1lID09IG1lZGlh
QXR0cikKICAgICAgICAgICAgIG1fY2FjaGVkUGFyc2VkTWVkaWFBdHRyaWJ1dGUgPSBzdGQ6Om51
bGxvcHQ7Ci0gICAgICAgIGF1dG8gcGFyZW50ID0gbWFrZVJlZlB0cihwYXJlbnROb2RlKCkpOwor
ICAgICAgICBSZWZQdHIgcGFyZW50ID0gcGFyZW50Tm9kZSgpOwogICAgICAgICBpZiAobV9zaG91
bGRDYWxsU291cmNlc0NoYW5nZWQpCiAgICAgICAgICAgICBkb3duY2FzdDxIVE1MUGljdHVyZUVs
ZW1lbnQ+KCpwYXJlbnQpLnNvdXJjZXNDaGFuZ2VkKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKaW5kZXggMTY2MzAwMWMwZjA4MTU5ZjdlMTBhYzNjYTYw
MzM0YmI5MGIwYmE2OC4uYWNlMGU1YTczYzVhM2M2ZjhkNjUzMzkyN2NhOTE2OWY0YTAxMGZjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCkBAIC0xNDcsNyArMTQ3
LDcgQEAgdm9pZCBIVE1MU3R5bGVFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMo
TGlzdEhhc2hTZXQ8VVJMPiYgdXJscykgY29uc3QKIHsgICAgCiAgICAgSFRNTEVsZW1lbnQ6OmFk
ZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyh1cmxzKTsKIAotICAgIGlmIChhdXRvIHN0eWxlU2hl
ZXQgPSBtYWtlUmVmUHRyKHRoaXMtPnNoZWV0KCkpKSB7CisgICAgaWYgKFJlZlB0ciBzdHlsZVNo
ZWV0ID0gdGhpcy0+c2hlZXQoKSkgewogICAgICAgICBzdHlsZVNoZWV0LT5jb250ZW50cygpLnRy
YXZlcnNlU3VicmVzb3VyY2VzKFsmXSAoYXV0byYgcmVzb3VyY2UpIHsKICAgICAgICAgICAgIHVy
bHMuYWRkKHJlc291cmNlLnVybCgpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuY3BwCmluZGV4IDM2MDdiODc0MGRj
YzdiYzA4N2NhOTEzMTQxYzA3YjNhNjE0ZjYxYjQuLjIxZjBlMGRkMzMyYTkxMmFiM2Q2Nzg0MjZl
YjhjZjdjNDhmMWI0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
Um93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dFbGVt
ZW50LmNwcApAQCAtODgsNyArODgsNyBAQCBpbnQgSFRNTFRhYmxlUm93RWxlbWVudDo6cm93SW5k
ZXgoKSBjb25zdAogCiBzdGF0aWMgaW5saW5lIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4gZmluZFJv
d3MoY29uc3QgSFRNTFRhYmxlUm93RWxlbWVudCYgcm93KQogewotICAgIGF1dG8gcGFyZW50ID0g
bWFrZVJlZlB0cihyb3cucGFyZW50Tm9kZSgpKTsKKyAgICBSZWZQdHIgcGFyZW50ID0gcm93LnBh
cmVudE5vZGUoKTsKICAgICBpZiAoaXM8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+KHBhcmVudCkp
CiAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD4oKnBhcmVu
dCkucm93cygpOwogICAgIGlmIChpczxIVE1MVGFibGVFbGVtZW50PihwYXJlbnQpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKaW5kZXggMWJmMTlhZWNkNzFjNWM1ZWFj
NjhmZmFjNmQzMmI5ODdhMTE1MGUxNC4uMGY5ZjQzYjA0OGY0ZWQ0MTEwOTIwMWJmMzUzZDU4ZWFh
NDUyMzM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCkBAIC0z
MDksNyArMzA5LDcgQEAgdm9pZCBIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdl
ZChUZXh0VHJhY2smKQogCiBSZWZQdHI8SFRNTE1lZGlhRWxlbWVudD4gSFRNTFRyYWNrRWxlbWVu
dDo6bWVkaWFFbGVtZW50KCkgY29uc3QKIHsKLSAgICBhdXRvIHBhcmVudCA9IG1ha2VSZWZQdHIo
cGFyZW50RWxlbWVudCgpKTsKKyAgICBSZWZQdHIgcGFyZW50ID0gcGFyZW50RWxlbWVudCgpOwog
ICAgIGlmICghaXM8SFRNTE1lZGlhRWxlbWVudD4ocGFyZW50KSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxNZWRpYUVsZW1lbnQ+KHBhcmVudC5nZXQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xpbmtJY29uQ29sbGVjdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGlua0ljb25Db2xsZWN0b3IuY3BwCmluZGV4IDk3MjNh
YjVlNmU2ZTExNmM2YjE0ZDBhMzhjODAyNmU4NDk3MzQ4YTIuLjU5OThmYWFjYjlmNTk1ZDkyYmEy
MDA1MmU2MGQ3M2VmYTgwNjViYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGlu
a0ljb25Db2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGlua0ljb25Db2xs
ZWN0b3IuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBpbnQgY29tcGFyZUljb25zKGNvbnN0
IExpbmtJY29uJiBhLCBjb25zdCBMaW5rSWNvbiYgYikKIAogYXV0byBMaW5rSWNvbkNvbGxlY3Rv
cjo6aWNvbnNPZlR5cGVzKE9wdGlvblNldDxMaW5rSWNvblR5cGU+IGljb25UeXBlcykgLT4gVmVj
dG9yPExpbmtJY29uPgogewotICAgIGF1dG8gaGVhZCA9IG1ha2VSZWZQdHIobV9kb2N1bWVudC5o
ZWFkKCkpOworICAgIFJlZlB0ciBoZWFkID0gbV9kb2N1bWVudC5oZWFkKCk7CiAgICAgaWYgKCFo
ZWFkKQogICAgICAgICByZXR1cm4geyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50
LmNwcAppbmRleCBlOWU5MDNhZmViN2U0ODdjZGIxMjZlYTI3Mjk3N2M2ZDY2YmZkNDNmLi42NmM0
NWYwMGY1OGNlODgzYmUzMTRjZmYzY2RlMmNiN2VmNmZjNWRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFEb2N1bWVudC5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIE1lZGlhRG9jdW1lbnRQ
YXJzZXI6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCkKICAgICB2aWRlb0VsZW1lbnQtPnNldEF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY29udHJvbHNBdHRyLCBlbXB0eUF0b20oKSk7
CiAgICAgdmlkZW9FbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGF1
dG9wbGF5QXR0ciwgZW1wdHlBdG9tKCkpOwogICAgIHZpZGVvRWxlbWVudC0+c2V0QXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihzcmNBdHRyLCBkb2N1bWVudC51cmwoKS5zdHJpbmcoKSk7
Ci0gICAgaWYgKGF1dG8gbG9hZGVyID0gbWFrZVJlZlB0cihkb2N1bWVudC5sb2FkZXIoKSkpCisg
ICAgaWYgKFJlZlB0ciBsb2FkZXIgPSBkb2N1bWVudC5sb2FkZXIoKSkKICAgICAgICAgdmlkZW9F
bGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHR5cGVBdHRyLCBsb2Fk
ZXItPnJlc3BvbnNlTUlNRVR5cGUoKSk7CiAKICNpZiAhRU5BQkxFKE1PREVSTl9NRURJQV9DT05U
Uk9MUykKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIE1lZGlhRG9jdW1lbnQ6OmRlZmF1bHRFdmVu
dEhhbmRsZXIoRXZlbnQmIGV2ZW50KQogICAgICAgICByZXR1cm47CiAgICAgYXV0byYgdGFyZ2V0
Tm9kZSA9IGRvd25jYXN0PE5vZGU+KCpldmVudC50YXJnZXQoKSk7CiAKLSAgICBpZiAoYXV0byB2
aWRlbyA9IG1ha2VSZWZQdHIoYW5jZXN0b3JWaWRlb0VsZW1lbnQoJnRhcmdldE5vZGUpKSkgewor
ICAgIGlmIChSZWZQdHIgdmlkZW8gPSBhbmNlc3RvclZpZGVvRWxlbWVudCgmdGFyZ2V0Tm9kZSkp
IHsKICAgICAgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkg
ewogICAgICAgICAgICAgaWYgKCF2aWRlby0+Y2FuUGxheSgpKSB7CiAgICAgICAgICAgICAgICAg
dmlkZW8tPnBhdXNlKCk7CkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBNZWRpYURvY3VtZW50Ojpk
ZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50JiBldmVudCkKICAgICBhdXRvJiB0YXJnZXRDb250YWlu
ZXIgPSBkb3duY2FzdDxDb250YWluZXJOb2RlPih0YXJnZXROb2RlKTsKIAogICAgIGlmIChldmVu
dC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCAmJiBpczxLZXlib2FyZEV2ZW50
PihldmVudCkpIHsKLSAgICAgICAgYXV0byB2aWRlbyA9IG1ha2VSZWZQdHIoZGVzY2VuZGFudFZp
ZGVvRWxlbWVudCh0YXJnZXRDb250YWluZXIpKTsKKyAgICAgICAgUmVmUHRyIHZpZGVvID0gZGVz
Y2VuZGFudFZpZGVvRWxlbWVudCh0YXJnZXRDb250YWluZXIpOwogICAgICAgICBpZiAoIXZpZGVv
KQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBNZWRpYURv
Y3VtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50JiBldmVudCkKIAogdm9pZCBNZWRpYURv
Y3VtZW50OjpyZXBsYWNlTWVkaWFFbGVtZW50VGltZXJGaXJlZCgpCiB7Ci0gICAgYXV0byBodG1s
Qm9keSA9IG1ha2VSZWZQdHIoYm9keU9yRnJhbWVzZXQoKSk7CisgICAgUmVmUHRyIGh0bWxCb2R5
ID0gYm9keU9yRnJhbWVzZXQoKTsKICAgICBpZiAoIWh0bWxCb2R5KQogICAgICAgICByZXR1cm47
CiAKQEAgLTIzMCw3ICsyMzAsNyBAQCB2b2lkIE1lZGlhRG9jdW1lbnQ6OnJlcGxhY2VNZWRpYUVs
ZW1lbnRUaW1lckZpcmVkKCkKICAgICBodG1sQm9keS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihtYXJnaW53aWR0aEF0dHIsIEF0b21TdHJpbmcoIjAiLCBBdG9tU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIGh0bWxCb2R5LT5zZXRBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKG1hcmdpbmhlaWdodEF0dHIsIEF0b21TdHJpbmcoIjAiLCBBdG9tU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogCi0gICAgaWYgKGF1dG8gdmlkZW9FbGVtZW50
ID0gbWFrZVJlZlB0cihkZXNjZW5kYW50VmlkZW9FbGVtZW50KCpodG1sQm9keSkpKSB7CisgICAg
aWYgKFJlZlB0ciB2aWRlb0VsZW1lbnQgPSBkZXNjZW5kYW50VmlkZW9FbGVtZW50KCpodG1sQm9k
eSkpIHsKICAgICAgICAgYXV0byBlbWJlZEVsZW1lbnQgPSBIVE1MRW1iZWRFbGVtZW50OjpjcmVh
dGUoKnRoaXMpOwogCiAgICAgICAgIGVtYmVkRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbih3aWR0aEF0dHIsIEF0b21TdHJpbmcoIjEwMCUiLCBBdG9tU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwpAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgTWVkaWFEb2N1
bWVudDo6cmVwbGFjZU1lZGlhRWxlbWVudFRpbWVyRmlyZWQoKQogICAgICAgICBlbWJlZEVsZW1l
bnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc3JjQXR0ciwgdXJsKCkuc3Ry
aW5nKCkpOwogCiAgICAgICAgIEFTU0VSVChsb2FkZXIoKSk7Ci0gICAgICAgIGlmIChhdXRvIGxv
YWRlciA9IG1ha2VSZWZQdHIodGhpcy0+bG9hZGVyKCkpKQorICAgICAgICBpZiAoUmVmUHRyIGxv
YWRlciA9IHRoaXMtPmxvYWRlcigpKQogICAgICAgICAgICAgZW1iZWRFbGVtZW50LT5zZXRBdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHR5cGVBdHRyLCBsb2FkZXItPndyaXRlcigpLm1p
bWVUeXBlKCkpOwogCiAgICAgICAgIHZpZGVvRWxlbWVudC0+cGFyZW50Tm9kZSgpLT5yZXBsYWNl
Q2hpbGQoZW1iZWRFbGVtZW50LCAqdmlkZW9FbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhRWxlbWVudFNlc3Npb24uY3BwCmluZGV4IDlmZTAyNGYwNGIxNTIwMThkYTk3ZmYxYThl
MjA1Y2YwNzk3MzkzOWUuLmRmMWQ3NzU0MjYyNTdhZTFjYWY0Njg3ZjBiMzZlNWM1MDI2YTNjZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcApAQCAtMTAw
OSw3ICsxMDA5LDcgQEAgc3RhdGljIGJvb2wgaXNFbGVtZW50UmVjdE1vc3RseUluTWFpbkZyYW1l
KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpCiAgICAgaWYgKCFlbGVtZW50LnJlbmRl
cmVyKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gZG9jdW1lbnRGcmFtZSA9
IG1ha2VSZWZQdHIoZWxlbWVudC5kb2N1bWVudCgpLmZyYW1lKCkpOworICAgIFJlZlB0ciBkb2N1
bWVudEZyYW1lID0gZWxlbWVudC5kb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYgKCFkb2N1bWVu
dEZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEwMzUsNyArMTAzNSw3IEBAIHN0
YXRpYyBib29sIGlzRWxlbWVudExhcmdlUmVsYXRpdmVUb01haW5GcmFtZShjb25zdCBIVE1MTWVk
aWFFbGVtZW50JiBlbGVtZW50KQogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGF1dG8gZG9jdW1lbnRGcmFtZSA9IG1ha2VSZWZQdHIoZWxlbWVudC5kb2N1
bWVudCgpLmZyYW1lKCkpOworICAgIFJlZlB0ciBkb2N1bWVudEZyYW1lID0gZWxlbWVudC5kb2N1
bWVudCgpLmZyYW1lKCk7CiAgICAgaWYgKCFkb2N1bWVudEZyYW1lKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAKaW5kZXggZTNhM2Rh
NmZmMjQ3MTliZmM5NzUyZGZlNTUzYTE2Mzc2NGRlNmE3Ni4uMWI5Nzg5NzZiNzc3OTFjNDU5NWVm
NzMyYTFlZGJmYWIwZjQ2YWFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVn
aW5Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5j
cHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIFBsdWdpbkRvY3VtZW50UGFyc2VyOjpjcmVhdGVE
b2N1bWVudFN0cnVjdHVyZSgpCiAgICAgZW1iZWRFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKHNyY0F0dHIsIGRvY3VtZW50LnVybCgpLnN0cmluZygpKTsKICAgICAK
ICAgICBBU1NFUlQoZG9jdW1lbnQubG9hZGVyKCkpOwotICAgIGlmIChhdXRvIGxvYWRlciA9IG1h
a2VSZWZQdHIoZG9jdW1lbnQubG9hZGVyKCkpKQorICAgIGlmIChSZWZQdHIgbG9hZGVyID0gZG9j
dW1lbnQubG9hZGVyKCkpCiAgICAgICAgIG1fZW1iZWRFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKHR5cGVBdHRyLCBsb2FkZXItPndyaXRlcigpLm1pbWVUeXBlKCkp
OwogCiAgICAgZG9jdW1lbnQuc2V0UGx1Z2luRWxlbWVudCgqbV9lbWJlZEVsZW1lbnQpOwpAQCAt
MTE3LDcgKzExNyw3IEBAIHZvaWQgUGx1Z2luRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKERv
Y3VtZW50V3JpdGVyJiwgY29uc3QgdWludDhfdCosIHNpemVfdCkKIAogICAgIGNyZWF0ZURvY3Vt
ZW50U3RydWN0dXJlKCk7CiAKLSAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihkb2N1bWVudCgp
LT5mcmFtZSgpKTsKKyAgICBSZWZQdHIgZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpOwogICAg
IGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQg
UGx1Z2luRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyJiwgY29uc3Qg
dWludDhfdCosIHNpemVfdCkKICAgICBmcmFtZS0+dmlldygpLT5mbHVzaEFueVBlbmRpbmdQb3N0
TGF5b3V0VGFza3MoKTsKIAogICAgIGlmIChhdXRvIHJlbmRlcmVyID0gbV9lbWJlZEVsZW1lbnQt
PnJlbmRlcldpZGdldCgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHdpZGdldCA9IG1ha2VSZWZQdHIo
cmVuZGVyZXItPndpZGdldCgpKSkgeworICAgICAgICBpZiAoUmVmUHRyIHdpZGdldCA9IHJlbmRl
cmVyLT53aWRnZXQoKSkgewogICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnJl
ZGlyZWN0RGF0YVRvUGx1Z2luKCp3aWRnZXQpOwogCiAgICAgICAgICAgICAvLyBJbiBhIHBsdWdp
biBkb2N1bWVudCwgdGhlIG1haW4gcmVzb3VyY2UgaXMgdGhlIHBsdWdpbi4gSWYgd2UgaGF2ZSBh
IG51bGwgd2lkZ2V0LCB0aGF0IG1lYW5zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1N1Ym1pdElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1N1Ym1pdElucHV0VHlw
ZS5jcHAKaW5kZXggODEyMmQ1NGEyZmI0YTA1MTllOThkMjhhNDUzNTQ0N2UzOTQxZjFkOS4uOThm
MzVmYjRiZjZjODk4YWFhNTFhNDI0YjM1MWZmOTAzOTE4NzA0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9TdWJtaXRJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvU3VibWl0SW5wdXRUeXBlLmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFN1Ym1pdElucHV0
VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCYgZXZlbnQpCiAgICAgcHJvdGVjdGVk
RWxlbWVudC0+ZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMo
KTsKIAogICAgIHByb3RlY3RlZEVsZW1lbnQtPnNldEFjdGl2YXRlZFN1Ym1pdCh0cnVlKTsKLSAg
ICBpZiAoYXV0byBjdXJyZW50Rm9ybSA9IG1ha2VSZWZQdHIocHJvdGVjdGVkRWxlbWVudC0+Zm9y
bSgpKSkKKyAgICBpZiAoUmVmUHRyIGN1cnJlbnRGb3JtID0gcHJvdGVjdGVkRWxlbWVudC0+Zm9y
bSgpKQogICAgICAgICBjdXJyZW50Rm9ybS0+c3VibWl0SWZQb3NzaWJsZSgmZXZlbnQsIGVsZW1l
bnQoKSk7IC8vIEV2ZW50IGhhbmRsZXJzIGNhbiBydW4uCiAgICAgcHJvdGVjdGVkRWxlbWVudC0+
c2V0QWN0aXZhdGVkU3VibWl0KGZhbHNlKTsKICAgICBldmVudC5zZXREZWZhdWx0SGFuZGxlZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0LmNwcAppbmRleCA2YzIzNzE3ZjA0ZWY1OTRhZjNmZWVlNGI5MzVhYTczZDVkNzA5ZDcz
Li5iNzlmNmEyMDhkM2NiNTgxZjlhYTJkNWMyNWI2YmFlYTIyM2Y1NjdiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcApA
QCAtMTE2LDcgKzExNiw3IEBAIGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6d291bGRUYWlu
dE9yaWdpbihjb25zdCBIVE1MSW1hZ2VFbGVtZW50KiBlbGVtZW50KQogICAgIGlmICghY2FjaGVk
SW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gaW1hZ2UgPSBtYWtlUmVm
UHRyKGNhY2hlZEltYWdlLT5pbWFnZSgpKTsKKyAgICBSZWZQdHIgaW1hZ2UgPSBjYWNoZWRJbWFn
ZS0+aW1hZ2UoKTsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAppbmRleCA5MGEwZWM1N2Rk
MGQ1ZWU1ZmRiNDcwYmE4ZmU4NzYxODE3OTBjNTAzLi44ZDdhNmFhMjE2MGMwZWVmZjViZDQzMjg4
NDRmYTIzYTdiYWMxZmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5
bGUuY3BwCkBAIC0xMDIsMTIgKzEwMiwxMiBAQCBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoY29u
c3QgU1JHQkE8ZmxvYXQ+JiBjb2xvckNvbXBvbmVudHMpCiB9CiAKIENhbnZhc1N0eWxlOjpDYW52
YXNTdHlsZShDYW52YXNHcmFkaWVudCYgZ3JhZGllbnQpCi0gICAgOiBtX3N0eWxlKG1ha2VSZWZQ
dHIoZ3JhZGllbnQpKQorICAgIDogbV9zdHlsZSgmZ3JhZGllbnQpCiB7CiB9CiAKIENhbnZhc1N0
eWxlOjpDYW52YXNTdHlsZShDYW52YXNQYXR0ZXJuJiBwYXR0ZXJuKQotICAgIDogbV9zdHlsZSht
YWtlUmVmUHRyKHBhdHRlcm4pKQorICAgIDogbV9zdHlsZSgmcGF0dGVybikKIHsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0
LmNwcAppbmRleCAzYmQwYzE4OWM5Zjc3NzMyNmM1NjkxYTc5MDgyNWQ2NmQwODdlZDgwLi41YTM4
Nzk1N2MyNjA2NjIyZGI0NmY0YmY2MDg4YmUzMzEwNjFhYmJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTk3
Niw3ICsxOTc2LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiZWdpblF1ZXJ5KEdD
R0xlbnVtIHRhcmdldCwgV2ViR0xRdWVyeSYgcXVlcnkpCiAgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgImJlZ2luUXVlcnkiLCAi
cXVlcnkgb2JqZWN0IG9mIHRhcmdldCBpcyBhbHJlYWR5IGFjdGl2ZSIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIG1fYWN0aXZlUXVlcmllc1sqYWN0aXZlUXVlcnlLZXldID0gbWFrZVJl
ZlB0cigmcXVlcnkpOworICAgIG1fYWN0aXZlUXVlcmllc1sqYWN0aXZlUXVlcnlLZXldID0gJnF1
ZXJ5OwogICAgIG1fY29udGV4dC0+YmVnaW5RdWVyeSh0YXJnZXQsIHF1ZXJ5Lm9iamVjdCgpKTsK
ICAgICBxdWVyeS5zZXRUYXJnZXQodGFyZ2V0KTsKIH0KQEAgLTI1MjIsNyArMjUyMiw3IEBAIFdl
YkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEluZGV4ZWRQYXJhbWV0ZXIoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMdWludCBpCiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgImdldEluZGV4ZWRQYXJhbWV0ZXIiLCAiaW5k
ZXggb3V0IG9mIHJhbmdlIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
fQotICAgICAgICByZXR1cm4gbWFrZVJlZlB0cihidWZmZXIpOworICAgICAgICByZXR1cm4gUmVm
UHRyIHsgYnVmZmVyIH07CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRSQU5T
Rk9STV9GRUVEQkFDS19CVUZGRVJfU0laRToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpU
UkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NUQVJUOgpAQCAtMjg2NywxNCArMjg2NywxNCBAQCBX
ZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQ
YXJhbWV0ZXIoR0NHTGVudW0gdGFyZwogCiAgICAgUmVmUHRyPFdlYkdMU2hhcmVkT2JqZWN0PiBh
dHRhY2htZW50T2JqZWN0OwogICAgIGlmIChhdHRhY2htZW50ID09IEdyYXBoaWNzQ29udGV4dEdM
OjpERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQpIHsKLSAgICAgICAgYXR0YWNobWVudE9iamVjdCA9
IG1ha2VSZWZQdHIodGFyZ2V0RnJhbWVidWZmZXItPmdldEF0dGFjaG1lbnRPYmplY3QoR3JhcGhp
Y3NDb250ZXh0R0w6OkRFUFRIX0FUVEFDSE1FTlQpKTsKLSAgICAgICAgYXV0byBzdGVuY2lsQXR0
YWNobWVudCA9IG1ha2VSZWZQdHIodGFyZ2V0RnJhbWVidWZmZXItPmdldEF0dGFjaG1lbnRPYmpl
Y3QoR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxfQVRUQUNITUVOVCkpOworICAgICAgICBhdHRh
Y2htZW50T2JqZWN0ID0gdGFyZ2V0RnJhbWVidWZmZXItPmdldEF0dGFjaG1lbnRPYmplY3QoR3Jh
cGhpY3NDb250ZXh0R0w6OkRFUFRIX0FUVEFDSE1FTlQpOworICAgICAgICBSZWZQdHIgc3RlbmNp
bEF0dGFjaG1lbnQgPSB0YXJnZXRGcmFtZWJ1ZmZlci0+Z2V0QXR0YWNobWVudE9iamVjdChHcmFw
aGljc0NvbnRleHRHTDo6U1RFTkNJTF9BVFRBQ0hNRU5UKTsKICAgICAgICAgaWYgKGF0dGFjaG1l
bnRPYmplY3QgIT0gc3RlbmNpbEF0dGFjaG1lbnQpIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1l
LCAiZGlmZmVyZW50IG9iamVjdHMgYm91bmQgdG8gREVQVEhfQVRUQUNITUVOVCBhbmQgU1RFTkNJ
TF9BVFRBQ0hNRU5UIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQog
ICAgIH0gZWxzZQotICAgICAgICBhdHRhY2htZW50T2JqZWN0ID0gbWFrZVJlZlB0cih0YXJnZXRG
cmFtZWJ1ZmZlci0+Z2V0QXR0YWNobWVudE9iamVjdChhdHRhY2htZW50KSk7CisgICAgICAgIGF0
dGFjaG1lbnRPYmplY3QgPSB0YXJnZXRGcmFtZWJ1ZmZlci0+Z2V0QXR0YWNobWVudE9iamVjdChh
dHRhY2htZW50KTsKIAogICAgIGlmICghYXR0YWNobWVudE9iamVjdCkgewogICAgICAgICBpZiAo
cG5hbWUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNU
X1RZUEUpCkBAIC0yODkyLDggKzI4OTIsOCBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZwogICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdyYXBoaWNzQ29udGV4dEdMOjpSRU5E
RVJCVUZGRVIpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFD
SE1FTlRfT0JKRUNUX05BTUU6CiAgICAgICAgIGlmIChhdHRhY2htZW50T2JqZWN0LT5pc1RleHR1
cmUoKSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlUmVmUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8V2Vi
R0xUZXh0dXJlJj4oKmF0dGFjaG1lbnRPYmplY3QpKTsKLSAgICAgICAgcmV0dXJuIG1ha2VSZWZQ
dHIocmVpbnRlcnByZXRfY2FzdDxXZWJHTFJlbmRlcmJ1ZmZlciY+KCphdHRhY2htZW50T2JqZWN0
KSk7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxXZWJHTFRleHR1cmU+
KGF0dGFjaG1lbnRPYmplY3QpOworICAgICAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxX
ZWJHTFJlbmRlcmJ1ZmZlcj4oYXR0YWNobWVudE9iamVjdCk7CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0U6CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJF
X0xBWUVSOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1F
TlRfVEVYVFVSRV9MRVZFTDoKQEAgLTMzODksNyArMzM4OSw3IEBAIFdlYkdMQW55IFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpWRVJURVhfQVJSQVlfQklORElORzoKICAgICAgICAgaWYgKG1fYm91
bmRWZXJ0ZXhBcnJheU9iamVjdC0+aXNEZWZhdWx0T2JqZWN0KCkpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIG1ha2VSZWZQdHIoc3RhdGljX2Nhc3Q8V2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdCY+KCptX2JvdW5kVmVydGV4QXJyYXlPYmplY3QpKTsKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdD4obV9ib3Vu
ZFZlcnRleEFycmF5T2JqZWN0KTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UGFyYW1ldGVyKHBuYW1lKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApp
bmRleCA3MDMxOGRjZGQ0MzRiYzg5MGUzODZjZjM2ODhmOWJmNzI3Mjc4YzhkLi5mYTU3YmI1NDAy
M2UzZmY5OTYzNGIzYTk5OTE4ZTA5M2NhYTJkNGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTMxMiw3ICszMTIs
NyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZQogICAgIH0KICNlbmRpZgogCi0gICAgYXV0byBv
YmplY3QgPSBtYWtlUmVmUHRyKG1fZnJhbWVidWZmZXJCaW5kaW5nLT5nZXRBdHRhY2htZW50T2Jq
ZWN0KGF0dGFjaG1lbnQpKTsKKyAgICBSZWZQdHIgb2JqZWN0ID0gbV9mcmFtZWJ1ZmZlckJpbmRp
bmctPmdldEF0dGFjaG1lbnRPYmplY3QoYXR0YWNobWVudCk7CiAgICAgaWYgKCFvYmplY3QpIHsK
ICAgICAgICAgaWYgKHBuYW1lID09IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRB
Q0hNRU5UX09CSkVDVF9UWVBFKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihHcmFwaGljc0NvbnRleHRHTDo6Tk9ORSk7CkBAIC0zMjcsNyArMzI3LDcgQEAgV2ViR0xB
bnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXIoR0NHTGVudW0gdGFyZ2UKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVC
VUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRToKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkUpOwogICAgICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FOgot
ICAgICAgICAgICAgcmV0dXJuIG1ha2VSZWZQdHIocmVpbnRlcnByZXRfY2FzdDxXZWJHTFRleHR1
cmUmPigqb2JqZWN0KSk7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxX
ZWJHTFRleHR1cmU+KG9iamVjdCk7CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZS
QU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTDoKICAgICAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0U6
CiAgICAgICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9S
X0VOQ09ESU5HX0VYVDoKQEAgLTM0Miw3ICszNDIsNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihHQ0dMZW51bSB0YXJn
ZQogICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5U
X09CSkVDVF9UWVBFOgogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihH
cmFwaGljc0NvbnRleHRHTDo6UkVOREVSQlVGRkVSKTsKICAgICAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRToKLSAgICAgICAgICAg
IHJldHVybiBtYWtlUmVmUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8V2ViR0xSZW5kZXJidWZmZXImPigq
b2JqZWN0KSk7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxXZWJHTFJl
bmRlcmJ1ZmZlcj4ob2JqZWN0KTsKICAgICAgICAgY2FzZSBFeHRlbnNpb25zR0w6OkZSQU1FQlVG
RkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkdfRVhUOiB7CiAgICAgICAgICAgICBpZiAoIW1f
ZXh0c1JHQikgewogICAgICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIi
LCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFtZSBmb3IgcmVuZGVyYnVmZmVyIGF0dGFjaG1lbnQiKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5jcHAKaW5kZXggM2ExNjc2ZDdkNmE1NjBhZmI1NzQzYTNjZGQxOGZlNmNiYTM1
YWUwMS4uMTQwZTViNTkzMmY2ZjI1MDVhMTU1Y2JiZWY4NDhhMDQwMzVjNjkwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAKQEAgLTMxNjcsNyArMzE2Nyw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmdldFBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpESVRIRVI6CiAgICAgICAgIHJldHVybiBnZXRCb29sZWFuUGFyYW1ldGVyKHBu
YW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpFTEVNRU5UX0FSUkFZX0JVRkZFUl9C
SU5ESU5HOgotICAgICAgICByZXR1cm4gbWFrZVJlZlB0cihtX2JvdW5kVmVydGV4QXJyYXlPYmpl
Y3QtPmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpKTsKKyAgICAgICAgcmV0dXJuIFJlZlB0ciB7IG1f
Ym91bmRWZXJ0ZXhBcnJheU9iamVjdC0+Z2V0RWxlbWVudEFycmF5QnVmZmVyKCkgfTsKICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9CSU5ESU5HOgogICAgICAgICByZXR1
cm4gbV9mcmFtZWJ1ZmZlckJpbmRpbmc7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJP
TlRfRkFDRToKQEAgLTMzMzIsNyArMzMzMiw3IEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmdldFBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKICAgICAgICAgaWYgKG1fb2Vz
VmVydGV4QXJyYXlPYmplY3QpIHsKICAgICAgICAgICAgIGlmIChtX2JvdW5kVmVydGV4QXJyYXlP
YmplY3QtPmlzRGVmYXVsdE9iamVjdCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgICAgICAgICAgcmV0dXJuIG1ha2VSZWZQdHIoc3RhdGljX2Nhc3Q8V2ViR0xWZXJ0ZXhB
cnJheU9iamVjdE9FUyY+KCptX2JvdW5kVmVydGV4QXJyYXlPYmplY3QpKTsKKyAgICAgICAgICAg
IHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0PFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM+KG1f
Ym91bmRWZXJ0ZXhBcnJheU9iamVjdCk7CiAgICAgICAgIH0KICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFBhcmFtZXRlciIsICJp
bnZhbGlkIHBhcmFtZXRlciBuYW1lLCBPRVNfdmVydGV4X2FycmF5X29iamVjdCBub3QgZW5hYmxl
ZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAppbmRleCA4ZjFmYjFhZWZjOTgyNGVj
YjZlNWVkYTcyYTUxNWYyYjI4MGZhMmE5Li4yYzljN2ZkODMyYTA3YjY5YWRmODM0OTEzZDNiNWRm
MTg0NGJmODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29u
c3RydWN0aW9uU2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENv
bnN0cnVjdGlvblNpdGUuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgc3RhdGljIGlubGluZSB2b2lk
IGV4ZWN1dGVSZXBhcmVudFRhc2soSFRNTENvbnN0cnVjdGlvblNpdGVUYXNrJiB0YXNrKQogICAg
IEFTU0VSVCh0YXNrLm9wZXJhdGlvbiA9PSBIVE1MQ29uc3RydWN0aW9uU2l0ZVRhc2s6OlJlcGFy
ZW50KTsKICAgICBBU1NFUlQoIXRhc2submV4dENoaWxkKTsKIAotICAgIGlmIChhdXRvIHBhcmVu
dCA9IG1ha2VSZWZQdHIodGFzay5jaGlsZC0+cGFyZW50Tm9kZSgpKSkKKyAgICBpZiAoUmVmUHRy
IHBhcmVudCA9IHRhc2suY2hpbGQtPnBhcmVudE5vZGUoKSkKICAgICAgICAgcGFyZW50LT5wYXJz
ZXJSZW1vdmVDaGlsZCgqdGFzay5jaGlsZCk7CiAKICAgICBpZiAodGFzay5jaGlsZC0+cGFyZW50
Tm9kZSgpKQpAQCAtMTYxLDcgKzE2MSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBleGVjdXRlVGFr
ZUFsbENoaWxkcmVuQW5kUmVwYXJlbnRUYXNrKEhUTUxDb25zdHJ1Y3Rpb25TaXRlVGFzCiAgICAg
QVNTRVJUKHRhc2sub3BlcmF0aW9uID09IEhUTUxDb25zdHJ1Y3Rpb25TaXRlVGFzazo6VGFrZUFs
bENoaWxkcmVuQW5kUmVwYXJlbnQpOwogICAgIEFTU0VSVCghdGFzay5uZXh0Q2hpbGQpOwogCi0g
ICAgYXV0byBmdXJ0aGVzdEJsb2NrID0gbWFrZVJlZlB0cih0YXNrLm9sZFBhcmVudCgpKTsKKyAg
ICBSZWZQdHIgZnVydGhlc3RCbG9jayA9IHRhc2sub2xkUGFyZW50KCk7CiAgICAgdGFzay5wYXJl
bnQtPnRha2VBbGxDaGlsZHJlbkZyb20oZnVydGhlc3RCbG9jay5nZXQoKSk7CiAKICAgICBSRUxF
QVNFX0FTU0VSVCghdGFzay5wYXJlbnQtPnBhcmVudE5vZGUoKSk7CkBAIC0yNzEsNyArMjcxLDcg
QEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6ZGlzcGF0Y2hEb2N1bWVudEVsZW1lbnRBdmFp
bGFibGVJZk5lZWRlZCgpCiAgICAgaWYgKG1faXNQYXJzaW5nRnJhZ21lbnQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihtX2RvY3VtZW50LmZyYW1l
KCkpKQorICAgIGlmIChSZWZQdHIgZnJhbWUgPSBtX2RvY3VtZW50LmZyYW1lKCkpCiAgICAgICAg
IGZyYW1lLT5pbmplY3RVc2VyU2NyaXB0cyhVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1l
bnRTdGFydCk7CiB9CiAKQEAgLTc3OSw3ICs3NzksNyBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25T
aXRlOjpmaW5kRm9zdGVyU2l0ZShIVE1MQ29uc3RydWN0aW9uU2l0ZVRhc2smIHRhc2spCiAKICAg
ICBpZiAoYXV0byogbGFzdFRhYmxlRWxlbWVudFJlY29yZCA9IG1fb3BlbkVsZW1lbnRzLnRvcG1v
c3QodGFibGVUYWctPmxvY2FsTmFtZSgpKSkgewogICAgICAgICBhdXRvJiBsYXN0VGFibGVFbGVt
ZW50ID0gbGFzdFRhYmxlRWxlbWVudFJlY29yZC0+ZWxlbWVudCgpOwotICAgICAgICBhdXRvIHBh
cmVudCA9IG1ha2VSZWZQdHIobGFzdFRhYmxlRWxlbWVudC5wYXJlbnROb2RlKCkpOworICAgICAg
ICBSZWZQdHIgcGFyZW50ID0gbGFzdFRhYmxlRWxlbWVudC5wYXJlbnROb2RlKCk7CiAgICAgICAg
IC8vIFdoZW4gcGFyc2luZyBIVE1MIGZyYWdtZW50cywgd2Ugc2tpcCBzdGVwIDQuMiAoIkxldCBy
b290IGJlIGEgbmV3IGh0bWwgZWxlbWVudCB3aXRoIG5vIGF0dHJpYnV0ZXMiKSBmb3IgZWZmaWNp
ZW5jeSwKICAgICAgICAgLy8gYW5kIGluc3RlYWQgdXNlIHRoZSBEb2N1bWVudEZyYWdtZW50IGFz
IGEgcm9vdCBub2RlLiBTbyB3ZSBtdXN0IHRyZWF0IHRoZSByb290IG5vZGUgKERvY3VtZW50RnJh
Z21lbnQpIGFzIGlmIGl0IGlzIGEgaHRtbCBlbGVtZW50IGhlcmUuCiAgICAgICAgIGJvb2wgcGFy
ZW50Q2FuQmVGb3N0ZXJQYXJlbnQgPSBwYXJlbnQgJiYgKHBhcmVudC0+aXNFbGVtZW50Tm9kZSgp
IHx8IChtX2lzUGFyc2luZ0ZyYWdtZW50ICYmIHBhcmVudCA9PSAmbV9vcGVuRWxlbWVudHMucm9v
dE5vZGUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBy
ZWxvYWRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2Fk
U2Nhbm5lci5jcHAKaW5kZXggOTQ4MTllY2VlOWU3NzNlNGM1ODVkOTc2NDdkNDU4YzYwODU0ZTJl
Zi4uZmE5OWE2MGQ2YTI3OGRkOWQ4MmZmYmU5ZWUyOGE3NzEzNmQzMjAxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCkBAIC0yMzYs
NyArMjM2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChtYXRjaChhdHRyaWJ1dGVOYW1l
LCBtZWRpYUF0dHIpICYmIG1fbWVkaWFBdHRyaWJ1dGUuaXNOdWxsKCkpIHsKICAgICAgICAgICAg
ICAgICBtX21lZGlhQXR0cmlidXRlID0gYXR0cmlidXRlVmFsdWU7CiAgICAgICAgICAgICAgICAg
YXV0byBtZWRpYVNldCA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShhdHRyaWJ1dGVWYWx1ZSwgTWVk
aWFRdWVyeVBhcnNlckNvbnRleHQobV9kb2N1bWVudCkpOwotICAgICAgICAgICAgICAgIGF1dG8g
ZG9jdW1lbnRFbGVtZW50ID0gbWFrZVJlZlB0cihtX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudCgp
KTsKKyAgICAgICAgICAgICAgICBSZWZQdHIgZG9jdW1lbnRFbGVtZW50ID0gbV9kb2N1bWVudC5k
b2N1bWVudEVsZW1lbnQoKTsKICAgICAgICAgICAgICAgICBMT0coTWVkaWFRdWVyaWVzLCAiSFRN
TFByZWxvYWRTY2FubmVyICVwIHByb2Nlc3NBdHRyaWJ1dGUgZXZhbHVhdGluZyBtZWRpYSBxdWVy
aWVzIiwgdGhpcyk7CiAgICAgICAgICAgICAgICAgbV9tZWRpYU1hdGNoZWQgPSBNZWRpYVF1ZXJ5
RXZhbHVhdG9yIHsgbV9kb2N1bWVudC5wcmludGluZygpID8gInByaW50IiA6ICJzY3JlZW4iLCBt
X2RvY3VtZW50LCBkb2N1bWVudEVsZW1lbnQgPyBkb2N1bWVudEVsZW1lbnQtPmNvbXB1dGVkU3R5
bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0ZShtZWRpYVNldC5nZXQoKSk7CiAgICAgICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdh
dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNw
cAppbmRleCBjMmUzMDdmYTBhM2IxNDE4NmIxMmExMDQwMmZlNmNmYWY5MTUwNWFkLi5mMTQyMDRh
MWQwNDFjN2JkMDdjMDU0YjU4NWE3OWIwYTEyY2U0N2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAg
UmVmPEZvcm1EYXRhPiBYU1NBdWRpdG9yRGVsZWdhdGU6OmdlbmVyYXRlVmlvbGF0aW9uUmVwb3J0
KGNvbnN0IFhTU0luZm8mIHhzc0luZm8KICAgICBhdXRvJiBmcmFtZUxvYWRlciA9IG1fZG9jdW1l
bnQuZnJhbWUoKS0+bG9hZGVyKCk7CiAgICAgU3RyaW5nIGh0dHBCb2R5OwogICAgIGlmIChmcmFt
ZUxvYWRlci5kb2N1bWVudExvYWRlcigpKSB7Ci0gICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0g
bWFrZVJlZlB0cihmcmFtZUxvYWRlci5kb2N1bWVudExvYWRlcigpLT5vcmlnaW5hbFJlcXVlc3Qo
KS5odHRwQm9keSgpKSkKKyAgICAgICAgaWYgKFJlZlB0ciBmb3JtRGF0YSA9IGZyYW1lTG9hZGVy
LmRvY3VtZW50TG9hZGVyKCktPm9yaWdpbmFsUmVxdWVzdCgpLmh0dHBCb2R5KCkpCiAgICAgICAg
ICAgICBodHRwQm9keSA9IGZvcm1EYXRhLT5mbGF0dGVuVG9TdHJpbmcoKTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxl
bWVudHMuY3BwCmluZGV4IDkzMzQ3MjI2ZTk2ZjIxOTdjNWY1NmVkNzI2MTE0NjY5YmIxMGE3Zjcu
LjQ2YzQ3MDUwODU3ZDRmMTNkODI3ODU2ZGUxYTFiZjJiMDhhNTc4YTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNw
cApAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50Ojpk
ZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50JiBldmVudCkKICAgICAgICAgLy8gY2F1c2UgZXZlbnRz
IHRvIGJlIHNlbnQgdG8gdGhlIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudC4gVG8KICAgICAg
ICAgLy8gcHJldmVudCBhbiBpbmZpbml0ZSBsb29wLCB3ZSBtdXN0IGNoZWNrIGZvciB0aGlzIGNh
c2UgYmVmb3JlIHNlbmRpbmcKICAgICAgICAgLy8gdGhlIGV2ZW50IHVwIHRoZSBjaGFpbi4KLSAg
ICAgICAgaWYgKGF1dG8gaG9zdCA9IG1ha2VSZWZQdHIoc2hhZG93SG9zdCgpKSkKKyAgICAgICAg
aWYgKFJlZlB0ciBob3N0ID0gc2hhZG93SG9zdCgpKQogICAgICAgICAgICAgaG9zdC0+ZGVmYXVs
dEV2ZW50SGFuZGxlcihldmVudCk7CiAgICAgfQogICAgIGlmICghZXZlbnQuZGVmYXVsdEhhbmRs
ZWQoKSkKQEAgLTI0MSw3ICsyNDEsNyBAQCBSZWY8U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxl
bWVudD4gU2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudDo6Y3JlYXRlKERvYwogCiBzdGQ6
Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVs
ZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUs
IGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpCiB7Ci0gICAgYXV0byBpbnB1dCA9
IG1ha2VSZWZQdHIoZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oc2hhZG93SG9zdCgpKSk7Cisg
ICAgUmVmUHRyIGlucHV0ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oc2hhZG93SG9zdCgp
KTsKICAgICBpZiAoaW5wdXQgJiYgaW5wdXQtPm1heFJlc3VsdHMoKSA+PSAwKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0yNTYsNyArMjU2LDcgQEAgc3RkOjpvcHRpb25hbDxT
dHlsZTo6RWxlbWVudFN0eWxlPiBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50OjpyZXNv
bHZlQ3VzdG8KIHZvaWQgU2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2
ZW50SGFuZGxlcihFdmVudCYgZXZlbnQpCiB7CiAgICAgLy8gT24gbW91c2Vkb3duLCBicmluZyB1
cCBhIG1lbnUsIGlmIG5lZWRlZAotICAgIGF1dG8gaW5wdXQgPSBtYWtlUmVmUHRyKGRvd25jYXN0
PEhUTUxJbnB1dEVsZW1lbnQ+KHNoYWRvd0hvc3QoKSkpOworICAgIFJlZlB0ciBpbnB1dCA9IGRv
d25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KHNoYWRvd0hvc3QoKSk7CiAgICAgaWYgKGlucHV0ICYm
IGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQgJiYgaXM8TW91c2VF
dmVudD4oZXZlbnQpICYmIGRvd25jYXN0PE1vdXNlRXZlbnQ+KGV2ZW50KS5idXR0b24oKSA9PSBM
ZWZ0QnV0dG9uKSB7CiAgICAgICAgIGlucHV0LT5mb2N1cygpOwogICAgICAgICBpbnB1dC0+c2Vs
ZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vo
b2xkZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRQbGFjZWhv
bGRlckVsZW1lbnQuY3BwCmluZGV4IDg0Mzk3NTlmODUxMzVmM2Q0ZjBhODY3MTYzOGY5M2NmYTU1
OTdjZGEuLjMzZTUwZjNjNjZkYTI4OGNjNjk3OGUyN2U3NDJiMDhlZWJhM2NiNjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQu
Y3BwCkBAIC01Myw3ICs1Myw3IEBAIFRleHRQbGFjZWhvbGRlckVsZW1lbnQ6OlRleHRQbGFjZWhv
bGRlckVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBMYXlvdXRTCiBhdXRvIFRleHRQ
bGFjZWhvbGRlckVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUgaW5z
ZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpIC0+IEluc2Vy
dGVkSW50b0FuY2VzdG9yUmVzdWx0CiB7CiAgICAgaWYgKGluc2VydGlvblR5cGUudHJlZVNjb3Bl
Q2hhbmdlZCkgewotICAgICAgICBpZiAoYXV0byBzaGFkb3dIb3N0ID0gbWFrZVJlZlB0cihwYXJl
bnRPZkluc2VydGVkVHJlZS5zaGFkb3dIb3N0KCkpOyBpczxIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudD4oc2hhZG93SG9zdCkpCisgICAgICAgIGlmIChSZWZQdHIgc2hhZG93SG9zdCA9IHBhcmVu
dE9mSW5zZXJ0ZWRUcmVlLnNoYWRvd0hvc3QoKTsgaXM8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQ+KHNoYWRvd0hvc3QpKQogICAgICAgICAgICAgZG93bmNhc3Q8SFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQ+KCpzaGFkb3dIb3N0KS5zZXRDYW5TaG93UGxhY2Vob2xkZXIoZmFsc2UpOwogICAg
IH0KICAgICByZXR1cm4gSFRNTERpdkVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKGluc2Vy
dGlvblR5cGUsIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKTsKQEAgLTYyLDcgKzYyLDcgQEAgYXV0byBU
ZXh0UGxhY2Vob2xkZXJFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBl
IGluc2VydGlvblR5cGUsIEMKIHZvaWQgVGV4dFBsYWNlaG9sZGVyRWxlbWVudDo6cmVtb3ZlZEZy
b21BbmNlc3RvcihSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYgb2xkUGFy
ZW50T2ZSZW1vdmVkVHJlZSkKIHsKICAgICBpZiAocmVtb3ZhbFR5cGUudHJlZVNjb3BlQ2hhbmdl
ZCkgewotICAgICAgICBpZiAoYXV0byBzaGFkb3dIb3N0ID0gbWFrZVJlZlB0cihvbGRQYXJlbnRP
ZlJlbW92ZWRUcmVlLnNoYWRvd0hvc3QoKSk7IGlzPEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
PihzaGFkb3dIb3N0KSkKKyAgICAgICAgaWYgKFJlZlB0ciBzaGFkb3dIb3N0ID0gb2xkUGFyZW50
T2ZSZW1vdmVkVHJlZS5zaGFkb3dIb3N0KCk7IGlzPEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
PihzaGFkb3dIb3N0KSkKICAgICAgICAgICAgIGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50Pigqc2hhZG93SG9zdCkuc2V0Q2FuU2hvd1BsYWNlaG9sZGVyKHRydWUpOwogICAgIH0K
ICAgICBIVE1MRGl2RWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihyZW1vdmFsVHlwZSwgb2xk
UGFyZW50T2ZSZW1vdmVkVHJlZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcAppbmRleCAyMzkxZDVlZGU1NzI2MDFhYjc5NGQz
MjU1YTZmZTllMTVkNGI4M2QyLi43YjA3MmFkYTdmM2EyZDQ2MTBlMDA4MDU4ZjgwNjJhYjQ0ZDM1
MDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNU
ZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJp
Y1RleHRUcmFjay5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIEluYmFuZEdlbmVyaWNUZXh0
VHJhY2s6OmFkZEdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYgaW5iYW5kQ3VlKQogCiB2b2lk
IEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OnVwZGF0ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1
ZSYgaW5iYW5kQ3VlKQogewotICAgIGF1dG8gY3VlID0gbWFrZVJlZlB0cihtX2N1ZU1hcC5maW5k
KGluYmFuZEN1ZS51bmlxdWVJZCgpKSk7CisgICAgUmVmUHRyIGN1ZSA9IG1fY3VlTWFwLmZpbmQo
aW5iYW5kQ3VlLnVuaXF1ZUlkKCkpOwogICAgIGlmICghY3VlKQogICAgICAgICByZXR1cm47CiAK
QEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OnVwZGF0ZUdl
bmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYgaW5iYW5kQ3VlKQogCiB2b2lkIEluYmFuZEdlbmVy
aWNUZXh0VHJhY2s6OnJlbW92ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYgaW5iYW5kQ3Vl
KQogewotICAgIGF1dG8gY3VlID0gbWFrZVJlZlB0cihtX2N1ZU1hcC5maW5kKGluYmFuZEN1ZS51
bmlxdWVJZCgpKSk7CisgICAgUmVmUHRyIGN1ZSA9IG1fY3VlTWFwLmZpbmQoaW5iYW5kQ3VlLnVu
aXF1ZUlkKCkpOwogICAgIGlmIChjdWUpIHsKICAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklF
UiwgKmN1ZSk7CiAgICAgICAgIHJlbW92ZUN1ZSgqY3VlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrLmNwcAppbmRleCA1Y2UyNmU2YWRhNDA1ZjA5ZjMxZmZjNzM4OGNhODg5ODMw
Y2M4YWMyLi4yODRlZWQxODYzMzVkYjkwNzU1YzYwOGIwNjNkMjM5Mjc4NDE2YjA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCkBAIC0zNDUsNyArMzQ1LDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gVGV4dFRyYWNrOjphZGRDdWUoUmVmPFRleHRUcmFja0N1ZT4mJiBjdWUp
CiAKICAgICAvLyBUaGUgYWRkQ3VlKGN1ZSkgbWV0aG9kIG9mIFRleHRUcmFjayBvYmplY3RzLCB3
aGVuIGludm9rZWQsIG11c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CiAKLSAgICBhdXRvIGN1
ZVRyYWNrID0gbWFrZVJlZlB0cihjdWUtPnRyYWNrKCkpOworICAgIFJlZlB0ciBjdWVUcmFjayA9
IGN1ZS0+dHJhY2soKTsKICAgICBpZiAoY3VlVHJhY2sgPT0gdGhpcykKICAgICAgICAgcmV0dXJu
IHsgfTsKIApAQCAtNDQ1LDcgKzQ0NSw3IEBAIHZvaWQgVGV4dFRyYWNrOjphZGRSZWdpb24oUmVm
PFZUVFJlZ2lvbj4mJiByZWdpb24pCiAKICAgICAvLyAxLiBJZiB0aGUgZ2l2ZW4gcmVnaW9uIGlz
IGluIGEgdGV4dCB0cmFjayBsaXN0IG9mIHJlZ2lvbnMsIHRoZW4gcmVtb3ZlCiAgICAgLy8gcmVn
aW9uIGZyb20gdGhhdCB0ZXh0IHRyYWNrIGxpc3Qgb2YgcmVnaW9ucy4KLSAgICBhdXRvIHJlZ2lv
blRyYWNrID0gbWFrZVJlZlB0cihyZWdpb24tPnRyYWNrKCkpOworICAgIFJlZlB0ciByZWdpb25U
cmFjayA9IHJlZ2lvbi0+dHJhY2soKTsKICAgICBpZiAocmVnaW9uVHJhY2sgJiYgcmVnaW9uVHJh
Y2sgIT0gdGhpcykKICAgICAgICAgcmVnaW9uVHJhY2stPnJlbW92ZVJlZ2lvbihyZWdpb24uZ2V0
KCkpOwogCkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBUZXh0VHJhY2s6OmFkZFJlZ2lvbihSZWY8
VlRUUmVnaW9uPiYmIHJlZ2lvbikKICAgICAvLyBhIHJlZ2lvbiB3aXRoIHRoZSBzYW1lIGlkZW50
aWZpZXIgYXMgcmVnaW9uIHJlcGxhY2UgdGhlIHZhbHVlcyBvZiB0aGF0CiAgICAgLy8gcmVnaW9u
J3Mgd2lkdGgsIGhlaWdodCwgYW5jaG9yIHBvaW50LCB2aWV3cG9ydCBhbmNob3IgcG9pbnQgYW5k
IHNjcm9sbAogICAgIC8vIGF0dHJpYnV0ZXMgd2l0aCB0aG9zZSBvZiByZWdpb24uCi0gICAgYXV0
byBleGlzdGluZ1JlZ2lvbiA9IG1ha2VSZWZQdHIocmVnaW9uTGlzdC5nZXRSZWdpb25CeUlkKHJl
Z2lvbi0+aWQoKSkpOworICAgIFJlZlB0ciBleGlzdGluZ1JlZ2lvbiA9IHJlZ2lvbkxpc3QuZ2V0
UmVnaW9uQnlJZChyZWdpb24tPmlkKCkpOwogICAgIGlmIChleGlzdGluZ1JlZ2lvbikgewogICAg
ICAgICBleGlzdGluZ1JlZ2lvbi0+dXBkYXRlUGFyYW1ldGVyc0Zyb21SZWdpb24ocmVnaW9uKTsK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDY0MTE3NDI1YmE1YzViNmE3MWQxOTBk
ZmM4ZjFlZWZiNGZmYzYzN2MuLjc2MmQ0Y2FkYzAwNzA2ZGZmMDBmZTQyMWIyZjVkM2ZmOGVjMzhm
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclBhZ2VBZ2VudC5jcHAKQEAgLTEwMTcsNyArMTAxNyw3IEBAIFByb3RvY29sOjpFcnJvclN0
cmluZ09yPHZvaWQ+IEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0RW11bGF0ZWRNZWRpYShjb25zdCBT
dHJpbmcmCiAgICAgLy8gRklYTUU6IFNjaGVkdWxlIGEgcmVuZGVyaW5nIHVwZGF0ZSBpbnN0ZWFk
IG9mIHN5bmNocm9ub3VzbHkgdXBkYXRpbmcgdGhlIGxheW91dC4KICAgICBtX2luc3BlY3RlZFBh
Z2UudXBkYXRlU3R5bGVBZnRlckNoYW5nZUluRW52aXJvbm1lbnQoKTsKIAotICAgIGF1dG8gZG9j
dW1lbnQgPSBtYWtlUmVmUHRyKG1faW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKS5kb2N1bWVudCgp
KTsKKyAgICBSZWZQdHIgZG9jdW1lbnQgPSBtX2luc3BlY3RlZFBhZ2UubWFpbkZyYW1lKCkuZG9j
dW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4geyB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCA3ZDhiYjM2YmM0ZDc5ZGJh
Nzc2Y2FiYjRjMjU3NTcxNTk3ZDMwOTI3Li41OTY4MTNmYTJkODBkZTZiMzE4OGI3ODBkMWJjMDJl
NTQ4MzE0Nzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAg
LTQyMyw4ICs0MjMsOCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTQogICAgICAgICByZXR1cm47
CiAjZW5kaWYKIAotICAgIGlmIChhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0cih0aGlzLT5kb2N1
bWVudCgpKSkgewotICAgICAgICBpZiAoYXV0byBkb21XaW5kb3cgPSBtYWtlUmVmUHRyKGRvY3Vt
ZW50LT5kb21XaW5kb3coKSkpIHsKKyAgICBpZiAoUmVmUHRyIGRvY3VtZW50ID0gdGhpcy0+ZG9j
dW1lbnQoKSkgeworICAgICAgICBpZiAoUmVmUHRyIGRvbVdpbmRvdyA9IGRvY3VtZW50LT5kb21X
aW5kb3coKSkgewogICAgICAgICAgICAgaWYgKGRvY3VtZW50LT5zZXR0aW5ncygpLnBlcmZvcm1h
bmNlTmF2aWdhdGlvblRpbWluZ0FQSUVuYWJsZWQoKSkKICAgICAgICAgICAgICAgICBkb21XaW5k
b3ctPnBlcmZvcm1hbmNlKCkubmF2aWdhdGlvbkZpbmlzaGVkKG1ldHJpY3MpOwogICAgICAgICB9
CkBAIC05MjQsNyArOTI0LDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6dHJ5TG9hZGluZ1JlZGly
ZWN0UmVxdWVzdEZyb21BcHBsaWNhdGlvbkNhY2hlKGNvbnN0IFJlc291cmMKICAgICAvLyBJZiB0
aGUgUmVzb3VyY2VMb2FkZXIgaXMgaW5kZWVkIGNhbmNlbGxlZCwgaXQgd291bGQgbm9ybWFsbHkg
c2VuZCByZXNvdXJjZSBsb2FkIGNhbGxiYWNrcy4KICAgICAvLyBUaGVyZWZvcmUsIHNldmVyIG91
ciByZWxhdGlvbnNoaXAgd2l0aCB0aGUgbmV0d29yayBsb2FkIGJ1dCBwcmV2ZW50IHRoZSBSZXNv
dXJjZUxvYWRlciBmcm9tIHNlbmRpbmcgUmVzb3VyY2VMb2FkTm90aWZpZXIgY2FsbGJhY2tzLgog
Ci0gICAgYXV0byByZXNvdXJjZUxvYWRlciA9IG1ha2VSZWZQdHIobWFpblJlc291cmNlTG9hZGVy
KCkpOworICAgIFJlZlB0ciByZXNvdXJjZUxvYWRlciA9IG1haW5SZXNvdXJjZUxvYWRlcigpOwog
ICAgIGlmIChyZXNvdXJjZUxvYWRlcikgewogICAgICAgICBBU1NFUlQocmVzb3VyY2VMb2FkZXIt
PnNob3VsZFNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSk7CiAgICAgICAgIHJlc291cmNlTG9h
ZGVyLT5zZXRTZW5kQ2FsbGJhY2tQb2xpY3koU2VuZENhbGxiYWNrUG9saWN5OjpEb05vdFNlbmRD
YWxsYmFja3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKaW5kZXgg
NmJlYWZjMTBkMjM5YjA0NDdiM2QwZDM2YmQ5NWQ3NmY1OGM4YmM0YS4uMDk0YTUxZTM5MjY1MmNi
ZWRjMzZiYTUzOWU0ZDU1ZTc3M2UxYTA0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1
Ym1pc3Npb24uY3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgUmVmPEZvcm1TdWJtaXNzaW9uPiBGb3Jt
U3VibWlzc2lvbjo6Y3JlYXRlKEhUTUxGb3JtRWxlbWVudCYgZm9ybSwgSFRNTEZvcm1Db250cm8K
IHsKICAgICBhdXRvIGNvcGllZEF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzOwogCi0gICAgYXV0byBz
dWJtaXR0ZXIgPSBtYWtlUmVmUHRyKG92ZXJyaWRlU3VibWl0dGVyID8gb3ZlcnJpZGVTdWJtaXR0
ZXIgOiBmb3JtLmZpbmRTdWJtaXR0ZXIoZXZlbnQpKTsKKyAgICBSZWZQdHIgc3VibWl0dGVyID0g
b3ZlcnJpZGVTdWJtaXR0ZXIgPyBvdmVycmlkZVN1Ym1pdHRlciA6IGZvcm0uZmluZFN1Ym1pdHRl
cihldmVudCk7CiAgICAgaWYgKHN1Ym1pdHRlcikgewogICAgICAgICBBdG9tU3RyaW5nIGF0dHJp
YnV0ZVZhbHVlOwogICAgICAgICBpZiAoIShhdHRyaWJ1dGVWYWx1ZSA9IHN1Ym1pdHRlci0+YXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihmb3JtYWN0aW9uQXR0cikpLmlzTnVsbCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggZGUwYmMwODllYmM3NWYyM2E2
NDFiZDNmNzIxMDUxZjM3YmM1YjRhZS4uNGFkNDViNmVkNGY1ZTA3YmM4MDdmYTZmOTVjOTc2M2Ew
ODliZmQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0xMzQ0LDcg
KzEzNDQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMKEZyYW1lTG9hZFJlcXVlc3QmJiBm
cmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZgogICAgIGJvb2wgaXNGb3JtU3VibWlz
c2lvbiA9IGZvcm1TdGF0ZTsKIAogICAgIC8vIFRoZSBzZWFyY2ggZm9yIGEgdGFyZ2V0IGZyYW1l
IGlzIGRvbmUgZWFybGllciBpbiB0aGUgY2FzZSBvZiBmb3JtIHN1Ym1pc3Npb24uCi0gICAgYXV0
byB0YXJnZXRGcmFtZSA9IGlzRm9ybVN1Ym1pc3Npb24gPyBudWxscHRyIDogbWFrZVJlZlB0cihm
aW5kRnJhbWVGb3JOYXZpZ2F0aW9uKGVmZmVjdGl2ZUZyYW1lTmFtZSkpOworICAgIGF1dG8gdGFy
Z2V0RnJhbWUgPSBpc0Zvcm1TdWJtaXNzaW9uID8gbnVsbHB0ciA6IFJlZlB0ciB7IGZpbmRGcmFt
ZUZvck5hdmlnYXRpb24oZWZmZWN0aXZlRnJhbWVOYW1lKSB9OwogICAgIGlmICh0YXJnZXRGcmFt
ZSAmJiB0YXJnZXRGcmFtZSAhPSAmbV9mcmFtZSkgewogICAgICAgICBmcmFtZUxvYWRSZXF1ZXN0
LnNldEZyYW1lTmFtZSgiX3NlbGYiKTsKICAgICAgICAgdGFyZ2V0RnJhbWUtPmxvYWRlcigpLmxv
YWRVUkwoV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgcmVmZXJyZXIsIG5ld0xvYWRUeXBlLCBl
dmVudCwgV1RGTW92ZShmb3JtU3RhdGUpLCBXVEZNb3ZlKHByaXZhdGVDbGlja01lYXN1cmVtZW50
KSwgY29tcGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpKTsKQEAgLTIwMjAsNyArMjAyMCw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgICAgIG1f
ZnJhbWUuZG9jdW1lbnQoKSA/IG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nQ2VudGVy
RWxsaXBzaXplZFRvTGVuZ3RoKCkudXRmOCgpLmRhdGEoKSA6ICIiLAogICAgICAgICBwZGwgPyBw
ZGwtPnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLnV0ZjgoKS5kYXRhKCkg
OiAiPG5vIHByb3Zpc2lvbmFsIERvY3VtZW50TG9hZGVyPiIsIGNhY2hlZFBhZ2UuZ2V0KCkpOwog
Ci0gICAgaWYgKGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmUHRyKG1fZnJhbWUuZG9jdW1lbnQoKSkp
IHsKKyAgICBpZiAoUmVmUHRyIGRvY3VtZW50ID0gbV9mcmFtZS5kb2N1bWVudCgpKSB7CiAgICAg
ICAgIC8vIEluIHRoZSBjYXNlIHdoZXJlIHdlJ3JlIHJlc3RvcmluZyBmcm9tIGEgY2FjaGVkIHBh
Z2UsIG91ciBkb2N1bWVudCB3aWxsIG5vdAogICAgICAgICAvLyBiZSBjb25uZWN0ZWQgdG8gaXRz
IGZyYW1lIHlldCwgc28gdGhlIGZvbGxvd2luZyBjYWxsIHdpdGggYmUgYSBuby1vcC4gV2Ugd2ls
bAogICAgICAgICAvLyBhdHRlbXB0IHRvIGNvbmZpcm0gYW55IGFjdGl2ZSBjb21wb3NpdGlvbiBv
bmNlIGFnYWluIGluIHRoaXMgc2NlbmFyaW8gYWZ0ZXIgd2UKQEAgLTIxMDUsNyArMjEwNSw3IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgfSBlbHNlCiAg
ICAgICAgIGRpZE9wZW5VUkwoKTsKIAotICAgIGlmIChhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0
cihtX2ZyYW1lLmRvY3VtZW50KCkpKQorICAgIGlmIChSZWZQdHIgZG9jdW1lbnQgPSBtX2ZyYW1l
LmRvY3VtZW50KCkpCiAgICAgICAgIGRvY3VtZW50LT5lZGl0b3IoKS5jb25maXJtT3JDYW5jZWxD
b21wb3NpdGlvbkFuZE5vdGlmeUNsaWVudCgpOwogCiAgICAgTE9HKExvYWRpbmcsICJXZWJDb3Jl
TG9hZGluZyAlczogRmluaXNoZWQgY29tbWl0dGluZyBwcm92aXNpb25hbCBsb2FkIHRvIFVSTCAl
cyIsIG1fZnJhbWUudHJlZSgpLnVuaXF1ZU5hbWUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLApA
QCAtMjU4Niw3ICsyNTg2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVG
b3JUaGlzRnJhbWUoKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGF1
dG8gZG9tV2luZG93ID0gbWFrZVJlZlB0cihtX2ZyYW1lLmRvY3VtZW50KCkgPyBtX2ZyYW1lLmRv
Y3VtZW50KCktPmRvbVdpbmRvdygpIDogbnVsbHB0cikpCisgICAgICAgIGlmIChSZWZQdHIgZG9t
V2luZG93ID0gbV9mcmFtZS5kb2N1bWVudCgpID8gbV9mcmFtZS5kb2N1bWVudCgpLT5kb21XaW5k
b3coKSA6IG51bGxwdHIpCiAgICAgICAgICAgICBkb21XaW5kb3ctPnBlcmZvcm1hbmNlKCkuc2No
ZWR1bGVOYXZpZ2F0aW9uT2JzZXJ2YXRpb25UYXNrSWZOZWVkZWQoKTsKIAogICAgICAgICBjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvciA9IG1fZG9jdW1lbnRMb2FkZXItPm1haW5Eb2N1bWVudEVy
cm9yKCk7CkBAIC0zMjU1LDggKzMyNTUsOCBAQCBzdGF0aWMgYm9vbCBpc1NhbWVEb2N1bWVudFJl
bG9hZChib29sIGlzTmV3TmF2aWdhdGlvbiwgRnJhbWVMb2FkVHlwZSBsb2FkVHlwZSkKIAogdm9p
ZCBGcmFtZUxvYWRlcjo6c2Nyb2xsVG9GcmFnbWVudFdpdGhQYXJlbnRCb3VuZGFyeShjb25zdCBV
UkwmIHVybCwgYm9vbCBpc05ld05hdmlnYXRpb24pCiB7Ci0gICAgYXV0byB2aWV3ID0gbWFrZVJl
ZlB0cihtX2ZyYW1lLnZpZXcoKSk7Ci0gICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWZQdHIobV9m
cmFtZS5kb2N1bWVudCgpKTsKKyAgICBSZWZQdHIgdmlldyA9IG1fZnJhbWUudmlldygpOworICAg
IFJlZlB0ciBkb2N1bWVudCA9IG1fZnJhbWUuZG9jdW1lbnQoKTsKICAgICBpZiAoIXZpZXcgfHwg
IWRvY3VtZW50KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlz
dG9yeUNvbnRyb2xsZXIuY3BwCmluZGV4IDAzYjI0ZTg4ODNkMDhlZmM3ZDhhMWRmOGFkNWUxNTFi
YWVhNDU3NzYuLmIzYWNmMDZiNDlhODJiMmE0YTA5YzEzNWMwOWVmODAzZWEwN2RkMzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcApAQCAtMTM1LDcgKzEz
NSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6Okhpc3RvcnlDb250cm9sbGVyOjpyZXN0b3JlU2Nyb2xs
UG9zaXRpb25BbmRWaWV3U3RhdGUoKQogICAgIGlmICghbV9jdXJyZW50SXRlbSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYXV0byB2aWV3ID0gbWFrZVJlZlB0cihtX2ZyYW1lLnZpZXcoKSk7Cisg
ICAgUmVmUHRyIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKTsKIAogICAgIC8vIEZJWE1FOiBUaGVyZSBp
cyBzb21lIHNjcm9sbGluZyByZWxhdGVkIHdvcmsgdGhhdCBuZWVkcyB0byBoYXBwZW4gd2hlbmV2
ZXIgYSBwYWdlIGdvZXMgaW50byB0aGUKICAgICAvLyBiYWNrL2ZvcndhcmQgY2FjaGUgYW5kIHNp
bWlsYXIgd29yayB0aGF0IG5lZWRzIHRvIG9jY3VyIHdoZW4gaXQgY29tZXMgb3V0LiBUaGlzIGlz
IHdoZXJlIHdlIGRvIHRoZSB3b3JrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmF2aWdhdGlvblNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlv
blNjaGVkdWxlci5jcHAKaW5kZXggYzE0MjI2OGI3NGJkNzkyYTU4NjU2N2QyNGMzMmUzYTU3M2U1
ZGQ2Ny4uYjYxNmJhN2RlZmUwYjg1M2E4ODlkNjc5ZDU0ZDBmM2MzODg5MWE0YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcApAQCAtMTIxLDcgKzEy
MSw3IEBAIHByb3RlY3RlZDoKICAgICBTY2hlZHVsZWRVUkxOYXZpZ2F0aW9uKERvY3VtZW50JiBp
bml0aWF0aW5nRG9jdW1lbnQsIGRvdWJsZSBkZWxheSwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5
T3JpZ2luLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgTG9ja0hpc3Rv
cnkgbG9ja0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3QgbG9ja0JhY2tGb3J3YXJkTGlzdCwg
Ym9vbCBkdXJpbmdMb2FkLCBib29sIGlzTG9jYXRpb25DaGFuZ2UpCiAgICAgICAgIDogU2NoZWR1
bGVkTmF2aWdhdGlvbihkZWxheSwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIGR1
cmluZ0xvYWQsIGlzTG9jYXRpb25DaGFuZ2UsIGluaXRpYXRpbmdEb2N1bWVudC5zaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUoKSkKICAgICAgICAgLCBtX2luaXRpYXRpbmdE
b2N1bWVudCB7IG1ha2VSZWYoaW5pdGlhdGluZ0RvY3VtZW50KSB9Ci0gICAgICAgICwgbV9zZWN1
cml0eU9yaWdpbnsgbWFrZVJlZlB0cihzZWN1cml0eU9yaWdpbikgfQorICAgICAgICAsIG1fc2Vj
dXJpdHlPcmlnaW4geyBzZWN1cml0eU9yaWdpbiB9CiAgICAgICAgICwgbV91cmwgeyB1cmwgfQog
ICAgICAgICAsIG1fcmVmZXJyZXIgeyByZWZlcnJlciB9CiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJmcmFtZUxvYWRlci5jcHAKaW5kZXggMGQ5ZGM2NjBkMzI4OGY2MDMzYjVmNDgwYTZl
N2I3ODI1ZWFiNTY3ZC4uYzIzZTA3MzU2YzY4NWM4N2UyZjgxYjQ0NGU3OTI3N2RjOTkzMzkxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCkBAIC0yNDUsNyArMjQ1
LDcgQEAgRnJhbWUqIEZyYW1lTG9hZGVyOjpTdWJmcmFtZUxvYWRlcjo6bG9hZE9yUmVkaXJlY3RT
dWJmcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQKICAgICBVUkwgdXBncmFkZWRSZXF1ZXN0VVJM
ID0gcmVxdWVzdFVSTDsKICAgICBpbml0aWF0aW5nRG9jdW1lbnQuY29udGVudFNlY3VyaXR5UG9s
aWN5KCktPnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZCh1cGdyYWRlZFJlcXVlc3RVUkws
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6SW5zZWN1cmVSZXF1ZXN0VHlwZTo6TG9hZCk7CiAKLSAg
ICBSZWZQdHI8RnJhbWU+IGZyYW1lID0gbWFrZVJlZlB0cihvd25lckVsZW1lbnQuY29udGVudEZy
YW1lKCkpOworICAgIFJlZlB0ciBmcmFtZSA9IG93bmVyRWxlbWVudC5jb250ZW50RnJhbWUoKTsK
ICAgICBpZiAoZnJhbWUpCiAgICAgICAgIGZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2No
ZWR1bGVMb2NhdGlvbkNoYW5nZShpbml0aWF0aW5nRG9jdW1lbnQsIGluaXRpYXRpbmdEb2N1bWVu
dC5zZWN1cml0eU9yaWdpbigpLCB1cGdyYWRlZFJlcXVlc3RVUkwsIG1fZnJhbWUubG9hZGVyKCku
b3V0Z29pbmdSZWZlcnJlcigpLCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCk7CiAg
ICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4
IDQ3Nzg2ZmY2ZjYwNzMxY2M4ZmRhZWY2ZmMyNzgwNmY0MmZkZjk2NGEuLjJkMzljZDZiNjA4MGUx
MjBiMDQ3ZGMzNWEwYzQzZmMyYWJjMTU4ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIENhY2hlZEZvbnQ6OmVu
c3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKIAogc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRh
KFNoYXJlZEJ1ZmZlciYgYnl0ZXMsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9v
bCYgd3JhcHBpbmcpCiB7Ci0gICAgYXV0byBidWZmZXIgPSBtYWtlUmVmUHRyKGJ5dGVzKTsKKyAg
ICBSZWZQdHIgYnVmZmVyIHsgJmJ5dGVzIH07CiAgICAgd3JhcHBpbmcgPSAhY29udmVydFdPRkZU
b1NmbnRJZk5lY2Vzc2FyeShidWZmZXIpOwogICAgIHJldHVybiBidWZmZXIgPyBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKCpidWZmZXIsIGl0ZW1JbkNvbGxlY3Rpb24pIDogbnVsbHB0cjsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRl
eCAyMGM5MTk4OTU2MDEwYTQ1NGM5NWFiOWMzZjc2Mzg3NmM5NjFmNzA4Li5kMTc5OTE3MDE5ODFh
ODAxOTRiZDIzZTMwOGY2ZTM3YTViZGI1ZTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC01MjcsNyArNTI3LDcgQEAgdm9pZCBDb250ZXh0
TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51QWN0aW9u
IGFjdGlvbiwgY28KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdU
cmFuc2xhdGU6CiAjaWYgSEFWRShUUkFOU0xBVElPTl9VSV9TRVJWSUNFUykKLSAgICAgICAgaWYg
KGF1dG8gdmlldyA9IG1ha2VSZWZQdHIoZnJhbWUtPnZpZXcoKSkpIHsKKyAgICAgICAgaWYgKFJl
ZlB0ciB2aWV3ID0gZnJhbWUtPnZpZXcoKSkgewogICAgICAgICAgICAgbV9jbGllbnQuaGFuZGxl
VHJhbnNsYXRpb24oewogICAgICAgICAgICAgICAgIG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCku
c2VsZWN0ZWRUZXh0KCksCiAgICAgICAgICAgICAgICAgdmlldy0+Y29udGVudHNUb1Jvb3RWaWV3
KGVuY2xvc2luZ0ludFJlY3QoZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbkJvdW5kcygpKSks
CkBAIC04NDQsNyArODQ0LDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRl
KCkKICAgICBpZiAoIW1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuaXNDb250ZW50RWRpdGFibGUo
KSAmJiBpczxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Pigqbm9kZSkpCiAgICAgICAgIHJldHVybjsK
ICNlbmRpZgotICAgIGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKG5vZGUtPmRvY3VtZW50KCkuZnJh
bWUoKSk7CisgICAgUmVmUHRyIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOwogICAg
IGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
CmluZGV4IDgwMzRlMjE3YzY4NGI4NWRkMDhiY2YyMjhlNzc3MTFlNjNhZDBlMGIuLjc2NzcyMWUx
MDc4OWNjYzEyZmE1YmU1NWFiYTlkYjI1NmQ5YTA4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAKQEAgLTEyODksNyArMTI4OSw3IEBAIGludCBET01XaW5kb3c6OmlubmVyV2lkdGgoKSBj
b25zdAogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vIEZvcmNlIGVub3VnaCBsYXlvdXQgaW4g
dGhlIHBhcmVudCBkb2N1bWVudCB0byBlbnN1cmUgdGhhdCB0aGUgRnJhbWVWaWV3IGhhcyBiZWVu
IHJlc2l6ZWQuCi0gICAgaWYgKGF1dG8gb3duZXJFbGVtZW50ID0gbWFrZVJlZlB0cihmcmFtZUVs
ZW1lbnQoKSkpCisgICAgaWYgKFJlZlB0ciBvd25lckVsZW1lbnQgPSBmcmFtZUVsZW1lbnQoKSkK
ICAgICAgICAgb3duZXJFbGVtZW50LT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dElmRGltZW5zaW9u
c091dE9mRGF0ZSgqb3duZXJFbGVtZW50LCBXaWR0aERpbWVuc2lvbnNDaGVjayk7CiAKICAgICBS
ZWZQdHIgZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwpAQCAtMTg2OSw3ICsxODY5LDcgQEAgdm9pZCBE
T01XaW5kb3c6OmNhbmNlbEFuaW1hdGlvbkZyYW1lKGludCBpZCkKIAogaW50IERPTVdpbmRvdzo6
cmVxdWVzdElkbGVDYWxsYmFjayhSZWY8SWRsZVJlcXVlc3RDYWxsYmFjaz4mJiBjYWxsYmFjaywg
Y29uc3QgSWRsZVJlcXVlc3RPcHRpb25zJiBvcHRpb25zKQogewotICAgIGF1dG8gZG9jdW1lbnQg
PSBtYWtlUmVmUHRyKHRoaXMtPmRvY3VtZW50KCkpOworICAgIFJlZlB0ciBkb2N1bWVudCA9IHRo
aXMtPmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgcmV0dXJuIGRvY3VtZW50LT5yZXF1ZXN0SWRsZUNhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2sp
LCBTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKG9wdGlvbnMudGltZW91dCkpOwpAQCAtMTg3Nyw3
ICsxODc3LDcgQEAgaW50IERPTVdpbmRvdzo6cmVxdWVzdElkbGVDYWxsYmFjayhSZWY8SWRsZVJl
cXVlc3RDYWxsYmFjaz4mJiBjYWxsYmFjaywgY29uc3QgSWQKIAogdm9pZCBET01XaW5kb3c6OmNh
bmNlbElkbGVDYWxsYmFjayhpbnQgaWQpCiB7Ci0gICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWZQ
dHIodGhpcy0+ZG9jdW1lbnQoKSk7CisgICAgUmVmUHRyIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1l
bnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm47CiAgICAgcmV0dXJuIGRv
Y3VtZW50LT5jYW5jZWxJZGxlQ2FsbGJhY2soaWQpOwpAQCAtMjIzNyw3ICsyMjM3LDcgQEAgYm9v
bCBET01XaW5kb3c6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRU
eXBlLCBFdmVudExpc3RlbmVyJgogdm9pZCBET01XaW5kb3c6Omxhbmd1YWdlc0NoYW5nZWQoKQog
ewogICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5c3RlbS1z
dGF0ZS5odG1sI2RvbS1uYXZpZ2F0b3ItbGFuZ3VhZ2VzCi0gICAgaWYgKGF1dG8gZG9jdW1lbnQg
PSBtYWtlUmVmUHRyKHRoaXMtPmRvY3VtZW50KCkpKQorICAgIGlmIChSZWZQdHIgZG9jdW1lbnQg
PSB0aGlzLT5kb2N1bWVudCgpKQogICAgICAgICBkb2N1bWVudC0+cXVldWVUYXNrVG9EaXNwYXRj
aEV2ZW50T25XaW5kb3coVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5sYW5ndWFnZWNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywg
RXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIH0KIApAQCAtMjI0Niw3ICsyMjQ2LDcgQEAgdm9p
ZCBET01XaW5kb3c6OmRpc3BhdGNoTG9hZEV2ZW50KCkKICAgICAvLyBJZiB3ZSBkaWQgbm90IHBy
b3RlY3QgaXQsIHRoZSBkb2N1bWVudCBsb2FkZXIgYW5kIGl0cyB0aW1pbmcgc3Vib2JqZWN0IG1p
Z2h0IGdldCBkZXN0cm95ZWQKICAgICAvLyBhcyBhIHNpZGUgZWZmZWN0IG9mIHdoYXQgZXZlbnQg
aGFuZGxpbmcgY29kZSBkb2VzLgogICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKLSAg
ICBhdXRvIHByb3RlY3RlZExvYWRlciA9IG1ha2VSZWZQdHIoZnJhbWUoKSA/IGZyYW1lKCktPmxv
YWRlcigpLmRvY3VtZW50TG9hZGVyKCkgOiBudWxscHRyKTsKKyAgICBSZWZQdHIgcHJvdGVjdGVk
TG9hZGVyID0gZnJhbWUoKSA/IGZyYW1lKCktPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkgOiBu
dWxscHRyOwogICAgIGJvb2wgc2hvdWxkTWFya0xvYWRFdmVudFRpbWVzID0gcHJvdGVjdGVkTG9h
ZGVyICYmICFwcm90ZWN0ZWRMb2FkZXItPnRpbWluZygpLmxvYWRFdmVudFN0YXJ0KCk7CiAKICAg
ICBpZiAoc2hvdWxkTWFya0xvYWRFdmVudFRpbWVzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwCmluZGV4IDRmZWU4NmVjOGE1MjEwMDM5ZTUyZDY5MDBjZDhhYjgzNTdmOTJh
NjIuLmY1MGExYzdlM2NiMWQyNTM1OWUzYzM3YzBhYjdkN2Y0NzFjNGNhZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0xMzg2LDggKzEzODYsOCBAQCBib29sIERy
YWdDb250cm9sbGVyOjp0cnlUb1VwZGF0ZURyb3BwZWRJbWFnZVBsYWNlaG9sZGVycyhjb25zdCBE
cmFnRGF0YSYgZHJhZ0RhdAogICAgIEFTU0VSVCghbV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMu
aXNFbXB0eSgpKTsKICAgICBBU1NFUlQobV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlclJhbmdlKTsK
IAotICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmKG1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJz
WzBdLT5kb2N1bWVudCgpKTsKLSAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihkb2N1bWVudC0+
ZnJhbWUoKSk7CisgICAgUmVmIGRvY3VtZW50ID0gbV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnNb
MF0tPmRvY3VtZW50KCk7CisgICAgUmVmUHRyIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CiAg
ICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xNDI5LDExICsxNDI5
LDExIEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6Omluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVy
c0F0Q2FyZXQoY29uc3QgVmVjdG9yPEludFNpemU+CiAgICAgaWYgKGRyb3BDYXJldC5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWZQdHIoZHJv
cENhcmV0LmRlZXBFcXVpdmFsZW50KCkuZG9jdW1lbnQoKSk7CisgICAgUmVmUHRyIGRvY3VtZW50
ID0gZHJvcENhcmV0LmRlZXBFcXVpdmFsZW50KCkuZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3Vt
ZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihkb2N1
bWVudC0+ZnJhbWUoKSk7CisgICAgUmVmUHRyIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CiAg
ICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDk4LDcgKzE0OTgsNyBAQCB2
b2lkIERyYWdDb250cm9sbGVyOjppbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnNBdENhcmV0
KGNvbnN0IFZlY3RvcjxJbnRTaXplPgogCiB2b2lkIERyYWdDb250cm9sbGVyOjpmaW5hbGl6ZURy
b3BwZWRJbWFnZVBsYWNlaG9sZGVyKEhUTUxJbWFnZUVsZW1lbnQmIHBsYWNlaG9sZGVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbikKIHsKLSAgICBwbGFjZWhvbGRlci5k
b2N1bWVudCgpLmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpJbnRlcm5hbEFzeW5j
VGFzaywgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pLCBwbGFjZWhvbGRlciA9IG1h
a2VSZWZQdHIocGxhY2Vob2xkZXIpXSAoKSBtdXRhYmxlIHsKKyAgICBwbGFjZWhvbGRlci5kb2N1
bWVudCgpLmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpJbnRlcm5hbEFzeW5jVGFz
aywgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pLCBwbGFjZWhvbGRlciA9IFJlZiB7
IHBsYWNlaG9sZGVyIH1dICgpIG11dGFibGUgewogICAgICAgICBpZiAocGxhY2Vob2xkZXItPmlz
RHJvcHBlZEltYWdlUGxhY2Vob2xkZXIoKSkgewogICAgICAgICAgICAgcGxhY2Vob2xkZXItPnJl
bW92ZUF0dHJpYnV0ZShIVE1MTmFtZXM6OmhlaWdodEF0dHIpOwogICAgICAgICAgICAgcGxhY2Vo
b2xkZXItPnJlbW92ZUlubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDk1YmFlYmE0MTcyMTll
YmUzMDMzN2MzZjZlZmU4MjcyNTVlZDk0NmUuLjRmNDc5YTJkMWU2ZWM4NDVjY2RiNjU1YmI0NDI3
MWEyZWZlMzc2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTQ0Nyw3
ICs0NDcsNyBAQCBzdGF0aWMgTm9kZSogbm9kZVRvU2VsZWN0T25Nb3VzZURvd25Gb3JOb2RlKE5v
ZGUmIHRhcmdldE5vZGUpCiAgICAgaWYgKEhUTUxFbGVtZW50Ojppc0luc2lkZUltYWdlT3Zlcmxh
eSh0YXJnZXROb2RlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoYXV0byBy
b290VXNlclNlbGVjdEFsbCA9IG1ha2VSZWZQdHIoUG9zaXRpb246OnJvb3RVc2VyU2VsZWN0QWxs
Rm9yTm9kZSgmdGFyZ2V0Tm9kZSkpKQorICAgIGlmIChSZWZQdHIgcm9vdFVzZXJTZWxlY3RBbGwg
PSBQb3NpdGlvbjo6cm9vdFVzZXJTZWxlY3RBbGxGb3JOb2RlKCZ0YXJnZXROb2RlKSkKICAgICAg
ICAgcmV0dXJuIHJvb3RVc2VyU2VsZWN0QWxsLmdldCgpOwogCiAgICAgaWYgKHRhcmdldE5vZGUu
c2hvdWxkU2VsZWN0T25Nb3VzZURvd24oKSkKQEAgLTQ1OCw3ICs0NTgsNyBAQCBzdGF0aWMgTm9k
ZSogbm9kZVRvU2VsZWN0T25Nb3VzZURvd25Gb3JOb2RlKE5vZGUmIHRhcmdldE5vZGUpCiAKIHN0
YXRpYyBWaXNpYmxlU2VsZWN0aW9uIGV4cGFuZFNlbGVjdGlvblRvUmVzcGVjdFNlbGVjdE9uTW91
c2VEb3duKE5vZGUmIHRhcmdldE5vZGUsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlv
bikKIHsKLSAgICBhdXRvIG5vZGVUb1NlbGVjdCA9IG1ha2VSZWZQdHIobm9kZVRvU2VsZWN0T25N
b3VzZURvd25Gb3JOb2RlKHRhcmdldE5vZGUpKTsKKyAgICBSZWZQdHIgbm9kZVRvU2VsZWN0ID0g
bm9kZVRvU2VsZWN0T25Nb3VzZURvd25Gb3JOb2RlKHRhcmdldE5vZGUpOwogICAgIGlmICghbm9k
ZVRvU2VsZWN0KQogICAgICAgICByZXR1cm4gc2VsZWN0aW9uOwogCkBAIC03MDUsNyArNzA1LDcg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudFNpbmdsZUNsaWNrKGNv
bnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFIKIAogYm9vbCBFdmVudEhhbmRsZXI6OmNhbk1vdXNl
RG93blN0YXJ0U2VsZWN0KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50
KQogewotICAgIGF1dG8gbm9kZSA9IG1ha2VSZWZQdHIoZXZlbnQudGFyZ2V0Tm9kZSgpKTsKKyAg
ICBSZWZQdHIgbm9kZSA9IGV2ZW50LnRhcmdldE5vZGUoKTsKIAogICAgIGlmIChQYWdlKiBwYWdl
ID0gbV9mcmFtZS5wYWdlKCkpIHsKICAgICAgICAgaWYgKCFwYWdlLT5jaHJvbWUoKS5jbGllbnQo
KS5zaG91bGRVc2VNb3VzZUV2ZW50Rm9yU2VsZWN0aW9uKGV2ZW50LmV2ZW50KCkpKQpAQCAtMTE5
Myw3ICsxMTkzLDcgQEAgSGl0VGVzdFJlc3VsdCBFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRB
dFBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgT3B0aW8KICAgICBpZiAoIXJlcXVlc3Qu
cmVhZE9ubHkoKSkKICAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT51cGRhdGVIb3ZlckFjdGl2
ZVN0YXRlKHJlcXVlc3QsIHJlc3VsdC50YXJnZXRFbGVtZW50KCkpOwogCi0gICAgYXV0byBpbm5l
ck5vZGUgPSBtYWtlUmVmUHRyKHJlc3VsdC5pbm5lck5vZGUoKSk7CisgICAgUmVmUHRyIGlubmVy
Tm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKICAgICBpZiAocmVxdWVzdC5kaXNhbGxvd3NVc2Vy
QWdlbnRTaGFkb3dDb250ZW50KCkKICAgICAgICAgfHwgKHJlcXVlc3QuZGlzYWxsb3dzVXNlckFn
ZW50U2hhZG93Q29udGVudEV4Y2VwdEZvckltYWdlT3ZlcmxheXMoKSAmJiBpbm5lck5vZGUgJiYg
IUhUTUxFbGVtZW50Ojppc0luc2lkZUltYWdlT3ZlcmxheSgqaW5uZXJOb2RlKSkpCiAgICAgICAg
IHJlc3VsdC5zZXRUb05vblVzZXJBZ2VudFNoYWRvd0FuY2VzdG9yKCk7CkBAIC00MzkzLDcgKzQz
OTMsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6c2NoZWR1bGVTY3JvbGxFdmVudCgpCiAgICAgc2V0
RnJhbWVXYXNTY3JvbGxlZEJ5VXNlcigpOwogICAgIGlmICghbV9mcmFtZS52aWV3KCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0cihtX2ZyYW1lLmRvY3Vt
ZW50KCkpOworICAgIFJlZlB0ciBkb2N1bWVudCA9IG1fZnJhbWUuZG9jdW1lbnQoKTsKICAgICBp
ZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm47CiAgICAgZG9jdW1lbnQtPmFkZFBlbmRpbmdT
Y3JvbGxFdmVudFRhcmdldCgqZG9jdW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmlu
ZGV4IDlkMTU2OTJmN2Q5OGRlMjllZThjYzk5NDlmNDk5NzU2YzRhMjdhNDIuLjg5ZGQ5ZGNmNDA3
ZjUzYTBhODdmNTlhNjU1YjkzNDlmMzUzNGRmZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKQEAgLTIyMzEsNyArMjIzMSw3IEBAIGJvb2wgRnJhbWVWaWV3OjpzY3JvbGxUb0ZyYWdtZW50
SW50ZXJuYWwoU3RyaW5nVmlldyBmcmFnbWVudElkZW50aWZpZXIpCiAgICAgYXV0byYgZG9jdW1l
bnQgPSAqZnJhbWUoKS5kb2N1bWVudCgpOwogICAgIFJFTEVBU0VfQVNTRVJUKGRvY3VtZW50Lmhh
dmVTdHlsZXNoZWV0c0xvYWRlZCgpKTsKIAotICAgIGF1dG8gYW5jaG9yRWxlbWVudCA9IG1ha2VS
ZWZQdHIoZG9jdW1lbnQuZmluZEFuY2hvcihmcmFnbWVudElkZW50aWZpZXIpKTsKKyAgICBSZWZQ
dHIgYW5jaG9yRWxlbWVudCA9IGRvY3VtZW50LmZpbmRBbmNob3IoZnJhZ21lbnRJZGVudGlmaWVy
KTsKIAogICAgIExPRyhTY3JvbGxpbmcsICIgYW5jaG9yRWxlbWVudCBpcyAlcCIsIGFuY2hvckVs
ZW1lbnQuZ2V0KCkpOwogCkBAIC0yMzc5LDcgKzIzNzksNyBAQCB2b2lkIEZyYW1lVmlldzo6c2Ny
b2xsVG9Gb2N1c2VkRWxlbWVudFRpbWVyRmlyZWQoKQogdm9pZCBGcmFtZVZpZXc6OnNjcm9sbFRv
Rm9jdXNlZEVsZW1lbnRJbnRlcm5hbCgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9zaG91bGRT
Y3JvbGxUb0ZvY3VzZWRFbGVtZW50KTsKLSAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0cihm
cmFtZSgpLmRvY3VtZW50KCkpOworICAgIFJlZlB0ciBkb2N1bWVudCA9IGZyYW1lKCkuZG9jdW1l
bnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm47CiAKQEAgLTIzODgsNyAr
MjM4OCw3IEBAIHZvaWQgRnJhbWVWaWV3OjpzY3JvbGxUb0ZvY3VzZWRFbGVtZW50SW50ZXJuYWwo
KQogICAgICAgICByZXR1cm47IC8vIFVwZGF0aW5nIHRoZSBsYXlvdXQgbWF5IGhhdmUgcmFuIHNj
cmlwdHMuCiAgICAgbV9zaG91bGRTY3JvbGxUb0ZvY3VzZWRFbGVtZW50ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZvY3VzZWRFbGVtZW50ID0gbWFrZVJlZlB0cihkb2N1bWVudC0+Zm9jdXNlZEVsZW1l
bnQoKSk7CisgICAgUmVmUHRyIGZvY3VzZWRFbGVtZW50ID0gZG9jdW1lbnQtPmZvY3VzZWRFbGVt
ZW50KCk7CiAgICAgaWYgKCFmb2N1c2VkRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIGF1
dG8gdXBkYXRlVGFyZ2V0ID0gZm9jdXNlZEVsZW1lbnQtPmZvY3VzQXBwZWFyYW5jZVVwZGF0ZVRh
cmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbWFnZU92ZXJsYXlDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW1hZ2VPdmVybGF5Q29udHJvbGxlci5j
cHAKaW5kZXggNzU0MGRmMTBhNjZhMzQ5ZmJhOTQ3NzJkY2FhMzY3Mzc3ODFhYjU5OS4uYmIyMzZh
ODkyMGIzOTMzZTAzMmJiMDNhODMxOTZmMTYyMzgyY2RhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9JbWFnZU92ZXJsYXlDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwCkBAIC03NCw4ICs3NCw4IEBAIHZvaWQg
SW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6c2VsZWN0aW9uUXVhZHNEaWRDaGFuZ2UoRnJhbWUmIGZy
YW1lLCBjb25zdCBWZWN0b3I8CiAgICAgICAgIGlmICghSFRNTEVsZW1lbnQ6OmlzSW5zaWRlSW1h
Z2VPdmVybGF5KCpzZWxlY3RlZFJhbmdlKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgICAgIGlmIChhdXRvIGhvc3QgPSBtYWtlUmVmUHRyKHNlbGVjdGVkUmFuZ2UtPnN0YXJ0
Q29udGFpbmVyKCkuc2hhZG93SG9zdCgpKTsgaXM8SFRNTEVsZW1lbnQ+KGhvc3QpKQotICAgICAg
ICAgICAgcmV0dXJuIG1ha2VSZWZQdHIoZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCpob3N0KSk7Cisg
ICAgICAgIGlmIChSZWZQdHIgaG9zdCA9IHNlbGVjdGVkUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCku
c2hhZG93SG9zdCgpOyBpczxIVE1MRWxlbWVudD4oaG9zdCkpCisgICAgICAgICAgICByZXR1cm4g
c3RhdGljX3BvaW50ZXJfY2FzdDxIVE1MRWxlbWVudD4oaG9zdCk7CiAKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfSkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGY5ZjhjZmEwZDhhM2Vm
NGQ1MjgyNGNlYzNjODliZjc0YWVmMjNhOWUuLjM3MjQ4ZTQzZWM0OGI0OGJiZGU0Y2ZjMjAxMzVl
ZDdkMDdmZTgzZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtODg3LDExICs4ODcsMTEgQEAgc3Rh
dGljIHZvaWQgcmVwbGFjZVJhbmdlcyhQYWdlJiBwYWdlLCBjb25zdCBWZWN0b3I8RmluZFJlcGxh
Y2VtZW50UmFuZ2U+JiByYW5nZXMKICAgICAgICAgaWYgKGZpcnN0Tm9kZSA9PSBzZWNvbmROb2Rl
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGF1dG8gZmlyc3RGcmFtZSA9
IG1ha2VSZWZQdHIoZmlyc3ROb2RlLT5kb2N1bWVudCgpLmZyYW1lKCkpOworICAgICAgICBSZWZQ
dHIgZmlyc3RGcmFtZSA9IGZpcnN0Tm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgICAgICBp
ZiAoIWZpcnN0RnJhbWUpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBhdXRv
IHNlY29uZEZyYW1lID0gbWFrZVJlZlB0cihzZWNvbmROb2RlLT5kb2N1bWVudCgpLmZyYW1lKCkp
OworICAgICAgICBSZWZQdHIgc2Vjb25kRnJhbWUgPSBzZWNvbmROb2RlLT5kb2N1bWVudCgpLmZy
YW1lKCk7CiAgICAgICAgIGlmICghc2Vjb25kRnJhbWUpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKQEAgLTkwNCw3ICs5MDQsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmFuZ2VzKFBhZ2Um
IHBhZ2UsIGNvbnN0IFZlY3RvcjxGaW5kUmVwbGFjZW1lbnRSYW5nZT4mIHJhbmdlcwogICAgIH0p
OwogCiAgICAgZm9yIChhdXRvJiBjb250YWluZXIgOiBjb250YWluZXJOb2Rlc0luT3JkZXJPZlJl
cGxhY2VtZW50KSB7Ci0gICAgICAgIGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKGNvbnRhaW5lci0+
ZG9jdW1lbnQoKS5mcmFtZSgpKTsKKyAgICAgICAgUmVmUHRyIGZyYW1lID0gY29udGFpbmVyLT5k
b2N1bWVudCgpLmZyYW1lKCk7CiAgICAgICAgIGlmICghZnJhbWUpCiAgICAgICAgICAgICBjb250
aW51ZTsKIApAQCAtOTI5LDcgKzkyOSw3IEBAIHVpbnQzMl90IFBhZ2U6OnJlcGxhY2VSYW5nZXNX
aXRoVGV4dChjb25zdCBWZWN0b3I8U2ltcGxlUmFuZ2U+JiByYW5nZXNUb1JlcGxhY2UsCiAgICAg
cmVwbGFjZW1lbnRSYW5nZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShyYW5nZXNUb1JlcGxhY2Uu
c2l6ZSgpKTsKIAogICAgIGZvciAoYXV0byYgcmFuZ2UgOiByYW5nZXNUb1JlcGxhY2UpIHsKLSAg
ICAgICAgYXV0byBoaWdoZXN0Um9vdCA9IG1ha2VSZWZQdHIoaGlnaGVzdEVkaXRhYmxlUm9vdCht
YWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKHJhbmdlLnN0YXJ0KSkpOworICAgICAgICBSZWZQ
dHIgaGlnaGVzdFJvb3QgPSBoaWdoZXN0RWRpdGFibGVSb290KG1ha2VEZXByZWNhdGVkTGVnYWN5
UG9zaXRpb24ocmFuZ2Uuc3RhcnQpKTsKICAgICAgICAgaWYgKCFoaWdoZXN0Um9vdCB8fCBoaWdo
ZXN0Um9vdCAhPSBoaWdoZXN0RWRpdGFibGVSb290KG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRp
b24ocmFuZ2UuZW5kKSkgfHwgIWhpZ2hlc3RSb290LT5kb2N1bWVudCgpLmZyYW1lKCkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgYXV0byBzY29wZSA9IG1ha2VSYW5nZVNlbGVjdGlu
Z05vZGVDb250ZW50cygqaGlnaGVzdFJvb3QpOwpAQCAtOTY2LDcgKzk2Niw3IEBAIHZvaWQgUGFn
ZTo6c2V0RWRpdGFibGVSZWdpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBpZiAobV9pc0Vk
aXRhYmxlUmVnaW9uRW5hYmxlZCA9PSBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAgICAgbV9p
c0VkaXRhYmxlUmVnaW9uRW5hYmxlZCA9IGVuYWJsZWQ7Ci0gICAgYXV0byBmcmFtZVZpZXcgPSBt
YWtlUmVmUHRyKG1haW5GcmFtZSgpLnZpZXcoKSk7CisgICAgUmVmUHRyIGZyYW1lVmlldyA9IG1h
aW5GcmFtZSgpLnZpZXcoKTsKICAgICBpZiAoIWZyYW1lVmlldykKICAgICAgICAgcmV0dXJuOwog
ICAgIGlmIChhdXRvKiByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LT5yZW5kZXJWaWV3KCkpCkBAIC05
ODYsMTEgKzk4NiwxMSBAQCBib29sIFBhZ2U6OnNob3VsZEJ1aWxkRWRpdGFibGVSZWdpb24oKSBj
b25zdAogCiBWZWN0b3I8UmVmPEVsZW1lbnQ+PiBQYWdlOjplZGl0YWJsZUVsZW1lbnRzSW5SZWN0
KGNvbnN0IEZsb2F0UmVjdCYgc2VhcmNoUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcykgY29uc3QK
IHsKLSAgICBhdXRvIGZyYW1lVmlldyA9IG1ha2VSZWZQdHIobWFpbkZyYW1lKCkudmlldygpKTsK
KyAgICBSZWZQdHIgZnJhbWVWaWV3ID0gbWFpbkZyYW1lKCkudmlldygpOwogICAgIGlmICghZnJh
bWVWaWV3KQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgYXV0byBkb2N1bWVudCA9IG1ha2VS
ZWZQdHIobWFpbkZyYW1lKCkuZG9jdW1lbnQoKSk7CisgICAgUmVmUHRyIGRvY3VtZW50ID0gbWFp
bkZyYW1lKCkuZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4g
eyB9OwogCkBAIC0xNjY2LDcgKzE2NjYsNyBAQCB2b2lkIFBhZ2U6OmRvQWZ0ZXJVcGRhdGVSZW5k
ZXJpbmcoKQogICAgICAgICBpZiAoYXBwSGlnaGxpZ2h0U3RvcmFnZS0+aGFzVW5yZXN0b3JlZEhp
Z2hsaWdodHMoKSAmJiBNb25vdG9uaWNUaW1lOjpub3coKSAtIGFwcEhpZ2hsaWdodFN0b3JhZ2Ut
Pmxhc3RSYW5nZVNlYXJjaFRpbWUoKSA+IDFfcykgewogICAgICAgICAgICAgYXBwSGlnaGxpZ2h0
U3RvcmFnZS0+cmVzZXRMYXN0UmFuZ2VTZWFyY2hUaW1lKCk7CiAgICAgICAgICAgICBkb2N1bWVu
dC5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6SW50ZXJuYWxBc3luY1Rhc2ssIFt3
ZWFrRG9jdW1lbnQgPSBtYWtlV2Vha1B0cihkb2N1bWVudCldIHsKLSAgICAgICAgICAgICAgICBh
dXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0cih3ZWFrRG9jdW1lbnQuZ2V0KCkpOworICAgICAgICAg
ICAgICAgIFJlZlB0ciBkb2N1bWVudCB7IHdlYWtEb2N1bWVudC5nZXQoKSB9OwogICAgICAgICAg
ICAgICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAt
MjYyMCw3ICsyNjIwLDcgQEAgdm9pZCBQYWdlOjpzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JP
dmVycmlkZShDb2xvciYmIHVuZGVyUGFnZUJhY2tncm91bmRDb2xvck8KICAgICBzY2hlZHVsZVJl
bmRlcmluZ1VwZGF0ZSh7IH0pOwogCiAjaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQotICAgIGlm
IChhdXRvIGZyYW1lVmlldyA9IG1ha2VSZWZQdHIobWFpbkZyYW1lKCkudmlldygpKSkgeworICAg
IGlmIChSZWZQdHIgZnJhbWVWaWV3ID0gbWFpbkZyYW1lKCkudmlldygpKSB7CiAgICAgICAgIGlm
IChhdXRvKiByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LT5yZW5kZXJWaWV3KCkpIHsKICAgICAgICAg
ICAgIGlmIChyZW5kZXJWaWV3LT51c2VzQ29tcG9zaXRpbmcoKSkKICAgICAgICAgICAgICAgICBy
ZW5kZXJWaWV3LT5jb21wb3NpdG9yKCkudXBkYXRlTGF5ZXJGb3JPdmVyaGFuZ0FyZWFzQmFja2dy
b3VuZENvbG9yKCk7CkBAIC0zNDk3LDcgKzM0OTcsNyBAQCB2b2lkIFBhZ2U6OmNvbmZpZ3VyZUxv
Z2dpbmdDaGFubmVsKGNvbnN0IFN0cmluZyYgY2hhbm5lbE5hbWUsIFdURkxvZ0NoYW5uZWxTdGF0
ZQogdm9pZCBQYWdlOjpkaWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JFbGVtZW50KEhUTUxJbWFnZUVs
ZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgZWxlbWVudC5kb2N1bWVudCgpLmV2ZW50TG9vcCgpLnF1
ZXVlVGFzayhUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbZWxlbWVudCA9IG1ha2VSZWYoZWxlbWVu
dCldKCkgewotICAgICAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihlbGVtZW50LT5kb2N1bWVu
dCgpLmZyYW1lKCkpOworICAgICAgICBSZWZQdHIgZnJhbWUgPSBlbGVtZW50LT5kb2N1bWVudCgp
LmZyYW1lKCk7CiAgICAgICAgIGlmICghZnJhbWUpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAg
LTM2NTUsNyArMzY1NSw3IEBAIHZvaWQgUGFnZTo6dXBkYXRlRWxlbWVudHNXaXRoVGV4dFJlY29n
bml0aW9uUmVzdWx0cygpCiAKICAgICBmb3IgKGF1dG8mIFtlbGVtZW50LCByZXN1bHRdIDogZWxl
bWVudHNUb1VwZGF0ZSkgewogICAgICAgICBlbGVtZW50LT5kb2N1bWVudCgpLmV2ZW50TG9vcCgp
LnF1ZXVlVGFzayhUYXNrU291cmNlOjpJbnRlcm5hbEFzeW5jVGFzaywgW3Jlc3VsdCA9IFRleHRS
ZWNvZ25pdGlvblJlc3VsdCB7IHJlc3VsdCB9LCB3ZWFrRWxlbWVudCA9IG1ha2VXZWFrUHRyKGVs
ZW1lbnQuZ2V0KCkpXSB7Ci0gICAgICAgICAgICBhdXRvIGVsZW1lbnQgPSBtYWtlUmVmUHRyKHdl
YWtFbGVtZW50LmdldCgpKTsKKyAgICAgICAgICAgIFJlZlB0ciBlbGVtZW50IHsgd2Vha0VsZW1l
bnQuZ2V0KCkgfTsKICAgICAgICAgICAgIGlmICghZWxlbWVudCkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb2xvclNhbXBsZXIuY3BwCmluZGV4IGY1
MzYyZTc2OWI0YjczMjkxMjdiNjc0MWJiMjQzOTM5OGYwZTg2MTUuLjVkZGQzMWY5ZmUyZTNiYjI4
Y2E3ODVlNWJjNzI2NzMzMTRiMDJkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZUNvbG9yU2FtcGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JT
YW1wbGVyLmNwcApAQCAtMTY5LDExICsxNjksMTEgQEAgc3RkOjpvcHRpb25hbDxDb2xvcj4gUGFn
ZUNvbG9yU2FtcGxlcjo6c2FtcGxlVG9wKFBhZ2UmIHBhZ2UpCiAgICAgICAgIHJldHVybiBDb2xv
cigpOwogICAgIH0KIAotICAgIGF1dG8gbWFpbkRvY3VtZW50ID0gbWFrZVJlZlB0cihwYWdlLm1h
aW5GcmFtZSgpLmRvY3VtZW50KCkpOworICAgIFJlZlB0ciBtYWluRG9jdW1lbnQgPSBwYWdlLm1h
aW5GcmFtZSgpLmRvY3VtZW50KCk7CiAgICAgaWYgKCFtYWluRG9jdW1lbnQpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBhdXRvIGZyYW1lVmlldyA9IG1ha2VSZWZQdHIocGFn
ZS5tYWluRnJhbWUoKS52aWV3KCkpOworICAgIFJlZlB0ciBmcmFtZVZpZXcgPSBwYWdlLm1haW5G
cmFtZSgpLnZpZXcoKTsKICAgICBpZiAoIWZyYW1lVmlldykKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0Nv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIu
Y3BwCmluZGV4IDQ3MzE5MDc0OWJkMzk2MTY5YTFhNjAzMjBiOWQ1MjU5NGM0ZGEwNzMuLjBmZDk4
MjVmYWM2ZTZjYjQ2ZTBlZWU1YjI2N2IyZDhiZGQ3MmY4YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lk
IFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6ZW5xdWV1ZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5
cGUsIEVsZW1lbnQqIGVsZW1lbgogdm9pZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OmVucXVldWVF
dmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAg
Ly8gRklYTUU6IFNwZWMgZG9lc24ndCBzcGVjaWZ5IHdoaWNoIHRhc2sgc291cmNlIHVzZS4KLSAg
ICBpZiAoYXV0byBwcm90ZWN0ZWREb2N1bWVudCA9IG1ha2VSZWZQdHIoZG9jdW1lbnQpKQorICAg
IGlmIChSZWZQdHIgcHJvdGVjdGVkRG9jdW1lbnQgPSBkb2N1bWVudCkKICAgICAgICAgcHJvdGVj
dGVkRG9jdW1lbnQtPnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudChUYXNrU291cmNlOjpVc2VySW50
ZXJhY3Rpb24sIEV2ZW50OjpjcmVhdGUodHlwZSwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVu
dDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1RleHRJbmRpY2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9y
LmNwcAppbmRleCA4NmYxMGQ5YjVlZDM0YmMwZTIwZWJiNjkzMmZmNGFkOTRiNzY2MzRmLi5kNmZi
NzNiNjYxYjA3MWY3M2I0MzJiNTBjMTJkNDhhM2JiNDg2NzhiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
VGV4dEluZGljYXRvci5jcHAKQEAgLTY5LDExICs2OSwxMSBAQCBSZWY8VGV4dEluZGljYXRvcj4g
VGV4dEluZGljYXRvcjo6Y3JlYXRlKGNvbnN0IFRleHRJbmRpY2F0b3JEYXRhJiBkYXRhKQogCiBS
ZWZQdHI8VGV4dEluZGljYXRvcj4gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKGNvbnN0
IFNpbXBsZVJhbmdlJiByYW5nZSwgT3B0aW9uU2V0PFRleHRJbmRpY2F0b3JPcHRpb24+IG9wdGlv
bnMsIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uIHByZXNlbnRhdGlvblRyYW5z
aXRpb24sIEZsb2F0U2l6ZSBtYXJnaW4pCiB7Ci0gICAgYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIo
cmFuZ2Uuc3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLmZyYW1lKCkpOworICAgIFJlZlB0ciBm
cmFtZSA9IHJhbmdlLnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlm
ICghZnJhbWUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBkb2N1bWVudCA9
IG1ha2VSZWZQdHIoZnJhbWUtPmRvY3VtZW50KCkpOworICAgIFJlZlB0ciBkb2N1bWVudCA9IGZy
YW1lLT5kb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VuZG9NYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvVW5kb01hbmFnZXIuY3BwCmluZGV4IGI2Yzk2ZTBmYTgyNmY5
NDc0OWE2NGIwMWNhZDE5NzQ5MTEyNDMzMWMuLjMzNzAwN2QwNmVkZmFiOWU5ODVjN2YyZjVkNzRh
ZjY2NzI1YjQ3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVW5kb01hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVW5kb01hbmFnZXIuY3BwCkBAIC00OSw3ICs0
OSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFVuZG9NYW5hZ2VyOjphZGRJdGVtKFJlZjxVbmRvSXRl
bT4mJiBpdGVtKQogICAgIGlmIChpdGVtLT51bmRvTWFuYWdlcigpKQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yLCAiVGhpcyBpdGVtIGhhcyBhbHJl
YWR5IGJlZW4gYWRkZWQgdG8gYW4gVW5kb01hbmFnZXIiX3MgfTsKIAotICAgIGF1dG8gZnJhbWUg
PSBtYWtlUmVmUHRyKG1fZG9jdW1lbnQuZnJhbWUoKSk7CisgICAgUmVmUHRyIGZyYW1lID0gbV9k
b2N1bWVudC5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBTZWN1cml0eUVycm9yLCAiQSBicm93c2luZyBjb250ZXh0IGlzIHJlcXVpcmVkIHRvIGFk
ZCBhbiBVbmRvSXRlbSJfcyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lv
cy9FdmVudEhhbmRsZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9FdmVudEhhbmRs
ZXJJT1MubW0KaW5kZXggZTk3YzgzNzU5Y2RkYzlhZWNiMTlkNzhmOGVhY2M3MzkzYmViMjhkMi4u
NDQzMmFhN2RkYjA0ZTUyZmExOWVhMjMxZmE4Y2ZkOGY3OGE2NzRkZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbQpAQCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQg
RXZlbnRIYW5kbGVyOjpmb2N1c0RvY3VtZW50VmlldygpCiAgICAgaWYgKCFwYWdlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAoYXV0byBmcmFtZVZpZXcgPSBtYWtlUmVmUHRyKG1fZnJhbWUu
dmlldygpKSkgeworICAgIGlmIChSZWZQdHIgZnJhbWVWaWV3ID0gbV9mcmFtZS52aWV3KCkpIHsK
ICAgICAgICAgaWYgKE5TVmlldyAqZG9jdW1lbnRWaWV3ID0gZnJhbWVWaWV3LT5kb2N1bWVudFZp
ZXcoKSkgewogICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCkuZm9jdXNOU1ZpZXcoZG9jdW1lbnRW
aWV3KTsKICAgICAgICAgICAgIC8vIENoZWNrIHBhZ2UoKSBhZ2FpbiBiZWNhdXNlIGZvY3VzTlNW
aWV3IGNhbiBjYXVzZSByZWVudHJhbmN5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9pb3MvRnJhbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQpp
bmRleCAwYTAzNmExNDllM2EzZTA3YWYxOTJlZjNlZWU2ZWIyMDc5NTAxNWExLi44NjliMzEwN2Mw
Y2E5MmZkMDJmMjRjYjRkYzk2NTQyNDQ4M2QzYTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFt
ZUlPUy5tbQpAQCAtMzk3LDcgKzM5Nyw3IEBAIHN0YXRpYyBib29sIG5vZGVJc01vdXNlRm9jdXNh
YmxlKE5vZGUmIG5vZGUpCiAgICAgaWYgKGVsZW1lbnQuaXNNb3VzZUZvY3VzYWJsZSgpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChhdXRvIHNoYWRvd1Jvb3QgPSBtYWtlUmVmUHRy
KGVsZW1lbnQuc2hhZG93Um9vdCgpKSkgeworICAgIGlmIChSZWZQdHIgc2hhZG93Um9vdCA9IGVs
ZW1lbnQuc2hhZG93Um9vdCgpKSB7CiAgICAgICAgIGlmIChzaGFkb3dSb290LT5kZWxlZ2F0ZXNG
b2N1cygpKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIG5vZGUgOiBjb21wb3NlZFRyZWVEZXNj
ZW5kYW50cyhlbGVtZW50KSkgewogICAgICAgICAgICAgICAgIGlmIChpczxFbGVtZW50Pihub2Rl
KSAmJiBkb3duY2FzdDxFbGVtZW50Pihub2RlKS5pc01vdXNlRm9jdXNhYmxlKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KaW5kZXggZjMxNGRjYTliNTA1OWU5
M2QwYTAyOTUzYmIxMWVmOGMyODY3ZWU2NC4uNzQ4YmZiOTg4YzE1N2ZiOGM0NGZlZjJiMWJkNjJh
YTNiNGUyMGQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5k
bGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5t
bQpAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpmb2N1c0RvY3VtZW50Vmll
dygpCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoYXV0byBmcmFt
ZVZpZXcgPSBtYWtlUmVmUHRyKG1fZnJhbWUudmlldygpKSkgeworICAgIGlmIChSZWZQdHIgZnJh
bWVWaWV3ID0gbV9mcmFtZS52aWV3KCkpIHsKICAgICAgICAgaWYgKE5TVmlldyAqZG9jdW1lbnRW
aWV3ID0gZnJhbWVWaWV3LT5kb2N1bWVudFZpZXcoKSkgewogICAgICAgICAgICAgcGFnZS0+Y2hy
b21lKCkuZm9jdXNOU1ZpZXcoZG9jdW1lbnRWaWV3KTsKICAgICAgICAgICAgIC8vIENoZWNrIHBh
Z2UoKSBhZ2FpbiBiZWNhdXNlIGZvY3VzTlNWaWV3IGNhbiBjYXVzZSByZWVudHJhbmN5LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvSW1hZ2VPdmVybGF5Q29udHJvbGxlck1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXJNYWMu
bW0KaW5kZXggYzkwNDQ5ZjVkZDQzZDJjYWZhYjI2NTU3YTQwZjBiNjBmZjM1NjQzZC4uNDgzM2Nk
ZDVlODJjNThlNTFiYjMxYzNiYTYxMDRmNTY3NTY0Yzg4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9tYWMvSW1hZ2VPdmVybGF5Q29udHJvbGxlck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL21hYy9JbWFnZU92ZXJsYXlDb250cm9sbGVyTWFjLm1tCkBAIC03MCwxMSAr
NzAsMTEgQEAgdm9pZCBJbWFnZU92ZXJsYXlDb250cm9sbGVyOjp1cGRhdGVEYXRhRGV0ZWN0b3JI
aWdobGlnaHRzKGNvbnN0IEhUTUxFbGVtZW50JiBvdmUKICAgICBpZiAoZGF0YURldGVjdG9yUmVz
dWx0RWxlbWVudHNXaXRoSGlnaGxpZ2h0cyA9PSBkYXRhRGV0ZWN0b3JSZXN1bHRFbGVtZW50cykK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBtYWluRnJhbWVWaWV3ID0gbWFrZVJlZlB0ciht
X3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKSk7CisgICAgUmVmUHRyIG1haW5GcmFtZVZpZXcgPSBt
X3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKTsKICAgICBpZiAoIW1haW5GcmFtZVZpZXcpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGF1dG8gZnJhbWVWaWV3ID0gbWFrZVJlZlB0cihvdmVybGF5SG9z
dC5kb2N1bWVudCgpLnZpZXcoKSk7CisgICAgUmVmUHRyIGZyYW1lVmlldyA9IG92ZXJsYXlIb3N0
LmRvY3VtZW50KCkudmlldygpOwogICAgIGlmICghZnJhbWVWaWV3KQogICAgICAgICByZXR1cm47
CiAKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBJbWFnZU92ZXJsYXlDb250cm9sbGVyOjp1cGRhdGVE
YXRhRGV0ZWN0b3JIaWdobGlnaHRzKGNvbnN0IEhUTUxFbGVtZW50JiBvdmUKIAogYm9vbCBJbWFn
ZU92ZXJsYXlDb250cm9sbGVyOjpwbGF0Zm9ybUhhbmRsZU1vdXNlRXZlbnQoY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBldmVudCkKIHsKLSAgICBhdXRvIG1haW5GcmFtZVZpZXcgPSBtYWtlUmVm
UHRyKG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpKTsKKyAgICBSZWZQdHIgbWFpbkZyYW1lVmll
dyA9IG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpOwogICAgIGlmICghbWFpbkZyYW1lVmlldykK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMTcsNyArMTE3LDcgQEAgYm9vbCBJbWFnZU92
ZXJsYXlDb250cm9sbGVyOjpwbGF0Zm9ybUhhbmRsZU1vdXNlRXZlbnQoY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JgogCiAgICAgICAgIG1vdXNlSXNPdmVyQWN0aXZlRGF0YURldGVjdG9ySGlnaGxp
Z2h0QnV0dG9uID0gaXNPdmVyQnV0dG9uOwogICAgICAgICBtX2FjdGl2ZURhdGFEZXRlY3Rvckhp
Z2hsaWdodCA9IGhpZ2hsaWdodC5jb3B5UmVmKCk7Ci0gICAgICAgIGFjdGl2ZURhdGFEZXRlY3Rv
ckVsZW1lbnQgPSBtYWtlUmVmUHRyKCplbGVtZW50KTsKKyAgICAgICAgYWN0aXZlRGF0YURldGVj
dG9yRWxlbWVudCA9IGVsZW1lbnQuZ2V0KCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAt
MTQyLDExICsxNDIsMTEgQEAgYm9vbCBJbWFnZU92ZXJsYXlDb250cm9sbGVyOjpoYW5kbGVEYXRh
RGV0ZWN0b3JBY3Rpb24oY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQKICAgICBpZiAoIW1fcGFn
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIo
ZWxlbWVudC5kb2N1bWVudCgpLmZyYW1lKCkpOworICAgIFJlZlB0ciBmcmFtZSA9IGVsZW1lbnQu
ZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGF1dG8gZnJhbWVWaWV3ID0gbWFrZVJlZlB0cihlbGVtZW50LmRvY3VtZW50KCku
dmlldygpKTsKKyAgICBSZWZQdHIgZnJhbWVWaWV3ID0gZWxlbWVudC5kb2N1bWVudCgpLnZpZXco
KTsKICAgICBpZiAoIWZyYW1lVmlldykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1t
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQpp
bmRleCBlMzcwYzIwOWJlMGI2Y2M5YjZkMDMyMzFjNDU4MDM3ZWExNWU5OWUwLi5kY2YxYWM2MTAz
ZmQyZTM4N2NmMjEzYjhhNzY2ODliNmVjZDZhZmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0KQEAgLTQwMCw3ICs0MDAs
NyBAQCB2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OmJ1aWxkU2VsZWN0aW9uSGlnaGxp
Z2h0KCkKICAgICAgICAgaWYgKCFtYWluRnJhbWVWaWV3KQogICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIGF1dG8gdmlld0ZvclJhbmdlID0gbWFrZVJlZlB0cihzZWxlY3Rpb25SYW5nZS0+
c3RhcnQuZG9jdW1lbnQoKS52aWV3KCkpOworICAgICAgICBSZWZQdHIgdmlld0ZvclJhbmdlID0g
c2VsZWN0aW9uUmFuZ2UtPnN0YXJ0LmRvY3VtZW50KCkudmlldygpOwogICAgICAgICBpZiAoIXZp
ZXdGb3JSYW5nZSkKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCmluZGV4IGViZDQ1NjcwNzJlMDFjMzIx
ZDJjNzg0NjFjNzczNjA1OTY4ZWE3MzkuLmRlOTQwMDYxOWY1MmJiMTc3ZjFhN2FhZjEyNzU1NTVj
NWVmYTgxNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRD
dXN0b21EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3Vz
dG9tRGF0YS5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxSZWY8U2hhcmVkQnVmZmVyPj4oZW50cnkucGxhdGZvcm1EYXRhKSkKLSAgICAgICAgICAgIHJl
dHVybiBtYWtlUmVmUHRyKFdURjo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9y
bURhdGEpLmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBXVEY6OmdldDxSZWY8U2hhcmVkQnVm
ZmVyPj4oZW50cnkucGxhdGZvcm1EYXRhKS5jb3B5UmVmKCk7CiAKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAK
aW5kZXggNjQ1ZTA2ODA4N2NiYmUyYTNhYTkwMWY5ZTg2ZmI4NjU5M2ZlNGU0YS4uYzYxMTJlMTE5
NGM3Yzk5MGZkYzExNGU4MjljZmRiNWM2YWY3NTRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RN
RmFpclBsYXlTdHJlYW1pbmcuY3BwCkBAIC0yNjAsNyArMjYwLDcgQEAgQ0RNUHJpdmF0ZUZhaXJQ
bGF5U3RyZWFtaW5nOjp+Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nKCkgPSBkZWZhdWx0Owog
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogdm9pZCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1p
bmc6OnNldExvZ2dlcihMb2dnZXImIGxvZ2dlciwgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcikK
IHsKLSAgICBtX2xvZ2dlciA9IG1ha2VSZWZQdHIobG9nZ2VyKTsKKyAgICBtX2xvZ2dlciA9ICZs
b2dnZXI7CiAgICAgbV9sb2dJZGVudGlmaWVyID0gbG9nSWRlbnRpZmllcjsKIH0KICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRleCA2YjliZjIxMGE3MTkyMjc3ZTgxOTRlOTA0ZDk1
YWNlOGRmZTYxMGU1Li4wMTYyYjVhNTQ1MDQ1NjhiOTMxZjY4MDcwMzZhNDU3NmNjYzczOWQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtMjM0LDcgKzIzNCw3IEBAIENETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQygpID0gZGVmCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiB2b2lkIENETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRMb2dnZXIoTG9nZ2VyJiBsb2dnZXIsIGNvbnN0
IHZvaWQqIGxvZ0lkZW50aWZpZXIpCiB7Ci0gICAgbV9sb2dnZXIgPSBtYWtlUmVmUHRyKGxvZ2dl
cik7CisgICAgbV9sb2dnZXIgPSAmbG9nZ2VyOwogICAgIG1fbG9nSWRlbnRpZmllciA9IGxvZ0lk
ZW50aWZpZXI7CiB9CiAjZW5kaWYKQEAgLTYzMyw3ICs2MzMsNyBAQCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6On5DRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldExvZ2dlcihMb2dnZXImIGxvZ2dlciwgY29u
c3Qgdm9pZCogbG9nSWRlbnRpZmllcikKIHsKLSAgICBtX2xvZ2dlciA9IG1ha2VSZWZQdHIobG9n
Z2VyKTsKKyAgICBtX2xvZ2dlciA9ICZsb2dnZXI7CiAgICAgbV9sb2dJZGVudGlmaWVyID0gbG9n
SWRlbnRpZmllcjsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KaW5kZXggZWE1OTQ3YzljYjE5MmVkYjk2NTAxOTg0
ZTUyMGRlMzUwYzU0MjcwZS4uN2Q1MWJlY2U1Y2E5NTc4YmM1NjljMDViOTlmMzNlZjY5ZTMxMTM5
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDLm1tCkBAIC0yNTMsNyArMjUzLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDOjppbnZhbGlkYXRlKCkKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIHZvaWQgU291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQzo6c2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYgbG9nZ2VyLCBjb25z
dCB2b2lkKiBsb2dJZGVudGlmaWVyKQogewotICAgIG1fbG9nZ2VyID0gbWFrZVJlZlB0cihsb2dn
ZXIpOworICAgIG1fbG9nZ2VyID0gJmxvZ2dlcjsKICAgICBtX2xvZ0lkZW50aWZpZXIgPSBsb2dJ
ZGVudGlmaWVyOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZh
Y2VCYWNrZW5kLmNwcAppbmRleCBhZDllMWM5ZWVlMTI5MmI5NzQ3NmYxYjU4YzdhN2Y3OWZiMzE3
YTkwLi5lYTA0OWE5OTUzMjE3YzYzYmJlN2Q0MTNjZGE3ZGFhOTcyNjIyMGYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
U3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTgyLDcgKzgyLDcg
QEAgUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNv
cHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmUKICAgICB9CiAKICAgICBjYXNlIERvbnRDb3B5QmFj
a2luZ1N0b3JlOgotICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtYWtlUmVmUHRy
KG1fc3VyZmFjZS5nZXQoKSkpOworICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShS
ZWZQdHIgeyBtX3N1cmZhY2UuZ2V0KCkgfSk7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDgwYTg3OGQ4NDA2
ZmMxYzcwMjBhMDFmMzU5MjM0YzU3ZWQ0ODQyOTcuLjA3YTM1YzY1NjIzMmEwNTE0NWJkZjUxOTRk
ZTEwYjVkMWY2NjEyZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC03
MDYsNyArNzA2LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjppbnZhbGlkYXRlKCkK
IAogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiBs
b2dnZXIsIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIpCiB7Ci0gICAgbV9sb2dnZXIgPSBtYWtl
UmVmUHRyKGxvZ2dlcik7CisgICAgbV9sb2dnZXIgPSAmbG9nZ2VyOwogICAgIG1fbG9nSWRlbnRp
ZmllciA9IGxvZ0lkZW50aWZpZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5j
cHAKaW5kZXggODUxYzYyOTgzYjFhZjhlNmY4YzkyOGM5N2U5ZWQyMTk5MTJjZGFiNy4uMmNhYjhi
MTlkMTQzZTc4YmQyMjdmMjI0YzY0YmUwNTE3MDdiYTcwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBl
bmRQaXBlbGluZS5jcHAKQEAgLTc1OCwxOSArNzU4LDE5IEBAIFJlZjxXZWJDb3JlOjpUcmFja1By
aXZhdGVCYXNlPiBBcHBlbmRQaXBlbGluZTo6bWFrZVdlYktpdFRyYWNrKGludCB0cmFja0luZGV4
KQogICAgIGNhc2UgU3RyZWFtVHlwZTo6QXVkaW86IHsKICAgICAgICAgYXV0byBzcGVjaWZpY1Ry
YWNrID0gQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZShtYWtlV2Vha1B0cihtX3Bs
YXllclByaXZhdGUpLCB0cmFja0luZGV4LCBXVEZNb3ZlKHBhZCksIGZhbHNlKTsKICAgICAgICAg
Z3N0cmVhbWVyVHJhY2sgPSBzcGVjaWZpY1RyYWNrLnB0cigpOwotICAgICAgICB0cmFjayA9IG1h
a2VSZWZQdHIoc3RhdGljX2Nhc3Q8VHJhY2tQcml2YXRlQmFzZSo+KHNwZWNpZmljVHJhY2sucHRy
KCkpKTsKKyAgICAgICAgdHJhY2sgPSBzdGF0aWNfY2FzdDxUcmFja1ByaXZhdGVCYXNlKj4oc3Bl
Y2lmaWNUcmFjay5wdHIoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFN0cmVh
bVR5cGU6OlZpZGVvOiB7CiAgICAgICAgIGF1dG8gc3BlY2lmaWNUcmFjayA9IFZpZGVvVHJhY2tQ
cml2YXRlR1N0cmVhbWVyOjpjcmVhdGUobWFrZVdlYWtQdHIobV9wbGF5ZXJQcml2YXRlKSwgdHJh
Y2tJbmRleCwgV1RGTW92ZShwYWQpLCBmYWxzZSk7CiAgICAgICAgIGdzdHJlYW1lclRyYWNrID0g
c3BlY2lmaWNUcmFjay5wdHIoKTsKLSAgICAgICAgdHJhY2sgPSBtYWtlUmVmUHRyKHN0YXRpY19j
YXN0PFRyYWNrUHJpdmF0ZUJhc2UqPihzcGVjaWZpY1RyYWNrLnB0cigpKSk7CisgICAgICAgIHRy
YWNrID0gc3RhdGljX2Nhc3Q8VHJhY2tQcml2YXRlQmFzZSo+KHNwZWNpZmljVHJhY2sucHRyKCkp
OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBTdHJlYW1UeXBlOjpUZXh0OiB7CiAg
ICAgICAgIGF1dG8gc3BlY2lmaWNUcmFjayA9IEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXI6OmNyZWF0ZSh0cmFja0luZGV4LCBXVEZNb3ZlKHBhZCksIGZhbHNlKTsKICAgICAgICAgZ3N0
cmVhbWVyVHJhY2sgPSBzcGVjaWZpY1RyYWNrLnB0cigpOwotICAgICAgICB0cmFjayA9IG1ha2VS
ZWZQdHIoc3RhdGljX2Nhc3Q8VHJhY2tQcml2YXRlQmFzZSo+KHNwZWNpZmljVHJhY2sucHRyKCkp
KTsKKyAgICAgICAgdHJhY2sgPSBzdGF0aWNfY2FzdDxUcmFja1ByaXZhdGVCYXNlKj4oc3BlY2lm
aWNUcmFjay5wdHIoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0OgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9S
YW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IDliZTU4NjgyY2FjMzNiYmFhYTllMTg2ZDJh
MzRjNDY0MGI0MTVjNjIuLjdhNzlkZTA5M2IwNTE0MTcwZDAzNDg5M2UxMjNiOTAzN2ExYWE1ZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VS
ZXNwb25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTI2Myw3ICsyNjMsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsCiAgICAgewogICAgICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwotICAgICAgICBhdXRvIGdlbmVyYXRvciA9IG1ha2VSZWZQdHIobV9nZW5lcmF0
b3IuZ2V0KCkpOworICAgICAgICBSZWZQdHIgZ2VuZXJhdG9yIHsgbV9nZW5lcmF0b3IuZ2V0KCkg
fTsKICAgICAgICAgaWYgKCFnZW5lcmF0b3IpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IGF1dG8qIGRhdGEgPSBnZW5lcmF0b3ItPm1fbWFwLmdldChtX3VybFN0cmluZyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggYjNhN2M4NzFkYzNkNDE3
ZmMxNjM5MjRlNWU1ZGRiM2FjOTdhMzk5ZS4uYmRlMTVkNDVkZDgxYzAzMGNmNzZlNGUwN2RjNzY0
OGJlNjc3M2EzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNw
cApAQCAtMTU3Myw5ICsxNTczLDkgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5k
ZXJFbGVtZW50OjpzZWxlY3Rpb25Qc2V1ZG9TdHlsZSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBz
ZWxlY3Rpb25TdHlsZTsKICAgICB9CiAKLSAgICBpZiAoYXV0byByb290ID0gbWFrZVJlZlB0cihl
bGVtZW50KCktPmNvbnRhaW5pbmdTaGFkb3dSb290KCkpKSB7CisgICAgaWYgKFJlZlB0ciByb290
ID0gZWxlbWVudCgpLT5jb250YWluaW5nU2hhZG93Um9vdCgpKSB7CiAgICAgICAgIGlmIChyb290
LT5tb2RlKCkgPT0gU2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudCkgewotICAgICAgICAgICAgYXV0
byBjdXJyZW50RWxlbWVudCA9IG1ha2VSZWZQdHIoZWxlbWVudCgpLT5zaGFkb3dIb3N0KCkpOwor
ICAgICAgICAgICAgUmVmUHRyIGN1cnJlbnRFbGVtZW50ID0gZWxlbWVudCgpLT5zaGFkb3dIb3N0
KCk7CiAgICAgICAgICAgICAvLyBXaGVuIGFuIGVsZW1lbnQgaGFzIGRpc3BsYXk6IGNvbnRlbnRz
LCB0aGlzIGVsZW1lbnQgZG9lc24ndCBoYXZlIGEgcmVuZGVyZXIKICAgICAgICAgICAgIC8vIGFu
ZCBpdHMgY2hpbGRyZW4gd2lsbCByZW5kZXIgYXMgY2hpbGRyZW4gb2YgdGhlIHBhcmVudCBlbGVt
ZW50LgogICAgICAgICAgICAgd2hpbGUgKGN1cnJlbnRFbGVtZW50ICYmIGN1cnJlbnRFbGVtZW50
LT5oYXNEaXNwbGF5Q29udGVudHMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUlPUy5tbQppbmRleCBiMDQzMDdlZmY2YzkyMDhkMjAzYTY1MTBiNjVlODdjZWExN2M3ZmRk
Li5jOTJkMTk2OTdlYWQ0MjM5N2JlMDM5ZTNiZWUzMzA1NGQyZDFmZDcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC0yMzAwLDcgKzIzMDAsNyBAQCBi
b29sIFJlbmRlclRoZW1lSU9TOjpwYWludE1ldGVyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVy
ZXIsIGNvbnN0IFBhaW50SW5mbyYgcAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGF1dG8m
IHJlbmRlck1ldGVyID0gZG93bmNhc3Q8UmVuZGVyTWV0ZXI+KHJlbmRlcmVyKTsKLSAgICBhdXRv
IGVsZW1lbnQgPSBtYWtlUmVmUHRyKHJlbmRlck1ldGVyLm1ldGVyRWxlbWVudCgpKTsKKyAgICBS
ZWZQdHIgZWxlbWVudCA9IHJlbmRlck1ldGVyLm1ldGVyRWxlbWVudCgpOwogCiAgICAgYXV0byYg
Y29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlRXZlbnREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAKaW5kZXggMDFkNzlkMGIwZDI1NWViNGU5ZTdiOGJl
ZDNhZTY5NWJmOTNmYmExMy4uZDVhMzBiZWFhODMzYzU3MzliYmFjOGE3Y2RkZTAxZTA3NDJhNDBl
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnREaXNwYXRj
aGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudERpc3BhdGNo
ZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlz
cGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50c1RvRnJhbWVzKFBhZ2UmIHBhZ2UsIGNvCiAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudChwYWdlLCBr
ZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgU3RvcmFnZVR5cGU6OlNlc3Npb24sIHNlY3VyaXR5T3Jp
Z2luLnNlY3VyaXR5T3JpZ2luKCkucHRyKCkpOwogCiAgICAgZm9yIChhdXRvJiBmcmFtZSA6IGZy
YW1lcykgewotICAgICAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0cihmcmFtZS0+ZG9jdW1l
bnQoKSk7CisgICAgICAgIFJlZlB0ciBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOwogICAg
ICAgICBhdXRvIHJlc3VsdCA9IGRvY3VtZW50LT5kb21XaW5kb3coKS0+c2Vzc2lvblN0b3JhZ2Uo
KTsKICAgICAgICAgaWYgKCFyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIC8vIGh0dHBzOi8vaHRtbC5z
cGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dlYnN0b3JhZ2UuaHRtbCN0aGUtc3RvcmFnZS1ldmVu
dDpldmVudC1zdG9yYWdlCiAgICAgICAgICAgICBkb2N1bWVudC0+cXVldWVUYXNrVG9EaXNwYXRj
aEV2ZW50T25XaW5kb3coVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBTdG9yYWdlRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuc3RvcmFnZUV2ZW50LCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1
ZSwgdXJsLCByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkpKTsKQEAgLTk4LDcgKzk4LDcgQEAg
dm9pZCBTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50c1Rv
RnJhbWVzKFBhZ2VHcm91cCYgcGFnZUcKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudChwYWdlLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1
ZSwgU3RvcmFnZVR5cGU6OkxvY2FsLCBzZWN1cml0eU9yaWdpbi5zZWN1cml0eU9yaWdpbigpLnB0
cigpKTsKIAogICAgIGZvciAoYXV0byYgZnJhbWUgOiBmcmFtZXMpIHsKLSAgICAgICAgYXV0byBk
b2N1bWVudCA9IG1ha2VSZWZQdHIoZnJhbWUtPmRvY3VtZW50KCkpOworICAgICAgICBSZWZQdHIg
ZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKICAgICAgICAgYXV0byByZXN1bHQgPSBkb2N1
bWVudC0+ZG9tV2luZG93KCktPmxvY2FsU3RvcmFnZSgpOwogICAgICAgICBpZiAoIXJlc3VsdC5o
YXNFeGNlcHRpb24oKSkgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uv
d2Vic3RvcmFnZS5odG1sI3RoZS1zdG9yYWdlLWV2ZW50OmV2ZW50LXN0b3JhZ2UKICAgICAgICAg
ICAgIGRvY3VtZW50LT5xdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnRPbldpbmRvdyhUYXNrU291cmNl
OjpET01NYW5pcHVsYXRpb24sIFN0b3JhZ2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdG9y
YWdlRXZlbnQsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmwsIHJlc3VsdC5yZWxlYXNlUmV0
dXJuVmFsdWUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29w
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcAppbmRleCAxOTk3MTMw
MzM0OWQ3MmZkMmVkOTg2MDhhYzllN2MyYWNhZWY3YjUyLi45ZGQ4NWIyMWRmNWFkMTMxOTA1ZmMz
OGU0MjQzYmQ0YjdkNmVlMmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZVNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcApAQCAt
MTQxLDcgKzE0MSw3IEBAIGF1dG8gU2NvcGU6Om1ha2VSZXNvbHZlclNoYXJpbmdLZXkoKSAtPiBS
ZXNvbHZlclNoYXJpbmdLZXkKIHsKICAgICBjb25zdGV4cHIgYm9vbCBpc05vbkVtcHR5SGFzaFRh
YmxlVmFsdWUgPSB0cnVlOwogICAgIHJldHVybiB7Ci0gICAgICAgIG1fYWN0aXZlU3R5bGVTaGVl
dHMubWFwKFsmXShhdXRvJiBzaGVldCkgeyByZXR1cm4gbWFrZVJlZlB0cihzaGVldC0+Y29udGVu
dHMoKSk7IH0pLAorICAgICAgICBtX2FjdGl2ZVN0eWxlU2hlZXRzLm1hcChbJl0oYXV0byYgc2hl
ZXQpIHsgcmV0dXJuIFJlZlB0ciB7ICZzaGVldC0+Y29udGVudHMoKSB9OyB9KSwKICAgICAgICAg
aXNGb3JVc2VyQWdlbnRTaGFkb3dUcmVlKCksCiAgICAgICAgIGlzTm9uRW1wdHlIYXNoVGFibGVW
YWx1ZQogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcAppbmRleCA0NDRlZmQyYTAx
N2JjODdkMmY2YTM4NDBhOWNlZTRiNzc5MTE5YTQ4Li5kYWZmMTlkYmZkZTljNWRiM2I4MzQ5NmY3
NGFjMjAzZmNkMmU0ODkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAKQEAgLTEyNCw3
ICsxMjQsNyBAQCB2b2lkIFNWR0FFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50JiBl
dmVudCkKICAgICAgICAgICAgIFN0cmluZyB1cmwgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hU
TUxTcGFjZXMoaHJlZigpKTsKIAogICAgICAgICAgICAgaWYgKHVybFswXSA9PSAnIycpIHsKLSAg
ICAgICAgICAgICAgICBhdXRvIHRhcmdldEVsZW1lbnQgPSBtYWtlUmVmUHRyKHRyZWVTY29wZSgp
LmdldEVsZW1lbnRCeUlkKHVybC5zdWJzdHJpbmdTaGFyaW5nSW1wbCgxKSkpOworICAgICAgICAg
ICAgICAgIFJlZlB0ciB0YXJnZXRFbGVtZW50ID0gdHJlZVNjb3BlKCkuZ2V0RWxlbWVudEJ5SWQo
dXJsLnN1YnN0cmluZ1NoYXJpbmdJbXBsKDEpKTsKICAgICAgICAgICAgICAgICBpZiAoaXM8U1ZH
U01JTEVsZW1lbnQ+KHRhcmdldEVsZW1lbnQpKSB7CiAgICAgICAgICAgICAgICAgICAgIGRvd25j
YXN0PFNWR1NNSUxFbGVtZW50PigqdGFyZ2V0RWxlbWVudCkuYmVnaW5CeUxpbmtBY3RpdmF0aW9u
KCk7CiAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnNldERlZmF1bHRIYW5kbGVkKCk7CkBAIC0x
MzcsNyArMTM3LDcgQEAgdm9pZCBTVkdBRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVu
dCYgZXZlbnQpCiAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gIl9ibGFuayI7CiAgICAgICAgICAg
ICBldmVudC5zZXREZWZhdWx0SGFuZGxlZCgpOwogCi0gICAgICAgICAgICBhdXRvIGZyYW1lID0g
bWFrZVJlZlB0cihkb2N1bWVudCgpLmZyYW1lKCkpOworICAgICAgICAgICAgUmVmUHRyIGZyYW1l
ID0gZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgICAgICAgICAgaWYgKCFmcmFtZSkKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCkuY2hhbmdlTG9jYXRp
b24oZG9jdW1lbnQoKS5jb21wbGV0ZVVSTCh1cmwpLCB0YXJnZXQsICZldmVudCwgUmVmZXJyZXJQ
b2xpY3k6OkVtcHR5U3RyaW5nLCBkb2N1bWVudCgpLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3lUb1Byb3BhZ2F0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlRWxlbWVudEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50
QmFzZS5jcHAKaW5kZXggNjk5ZTlhM2UyYzJlZTlmNWE5MzA3MTJlMzE3MjFkMzRhZGU1ZjQ4NS4u
ZjZmZjk0YjNiZDhjNzJkMzgwNGQ3ZDU2MjI0OTU5OTYwZDA5NTQzNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB2
b2lkIFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6c3RhcnRBbmltYXRpb24oKQogICAgIGlmICghdGFy
Z2V0RWxlbWVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoYXV0byBwcm90ZWN0ZWRB
bmltYXRvciA9IG1ha2VSZWZQdHIodGhpcy0+YW5pbWF0b3IoKSkpCisgICAgaWYgKFJlZlB0ciBw
cm90ZWN0ZWRBbmltYXRvciA9IHRoaXMtPmFuaW1hdG9yKCkpCiAgICAgICAgIHByb3RlY3RlZEFu
aW1hdG9yLT5zdGFydCgqdGFyZ2V0RWxlbWVudCgpKTsKIH0KIApAQCAtMTY3LDcgKzE2Nyw3IEBA
IHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0
IHByb2dyZXNzLCB1bnNpZ25lZCByZXBlCiAgICAgaWYgKGNhbGNNb2RlKCkgPT0gQ2FsY01vZGU6
OkRpc2NyZXRlKQogICAgICAgICBwcm9ncmVzcyA9IHByb2dyZXNzIDwgMC41ID8gMCA6IDE7CiAK
LSAgICBpZiAoYXV0byBwcm90ZWN0ZWRBbmltYXRvciA9IG1ha2VSZWZQdHIodGhpcy0+YW5pbWF0
b3IoKSkpCisgICAgaWYgKFJlZlB0ciBwcm90ZWN0ZWRBbmltYXRvciA9IHRoaXMtPmFuaW1hdG9y
KCkpCiAgICAgICAgIHByb3RlY3RlZEFuaW1hdG9yLT5hbmltYXRlKCp0YXJnZXRFbGVtZW50KCks
IHByb2dyZXNzLCByZXBlYXRDb3VudCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCmluZGV4IDM3N2Q3OWEwZDMxZTBhZmI1YmM4ZDgyZTRm
ZDBlNjEyNmRjZDNkOGMuLjFhY2NjM2FlYjkwMzc5M2VlMDFhNTJhMmM0YTkwNTU3NjkxNmYyZjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcApA
QCAtNTgsNyArNTgsNyBAQCBSZWY8U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ+IFNWR0FuaW1hdGVN
b3Rpb25FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZQogCiBib29sIFNWR0FuaW1h
dGVNb3Rpb25FbGVtZW50OjpoYXNWYWxpZEF0dHJpYnV0ZVR5cGUoKSBjb25zdAogewotICAgIGF1
dG8gdGFyZ2V0RWxlbWVudCA9IG1ha2VSZWZQdHIodGhpcy0+dGFyZ2V0RWxlbWVudCgpKTsKKyAg
ICBSZWZQdHIgdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsKICAgICBpZiAo
IXRhcmdldEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTQyLDcgKzE0Miw3
IEBAIHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OnN0YXJ0QW5pbWF0aW9uKCkKIHsKICAg
ICBpZiAoIWhhc1ZhbGlkQXR0cmlidXRlVHlwZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgYXV0
byB0YXJnZXRFbGVtZW50ID0gbWFrZVJlZlB0cih0aGlzLT50YXJnZXRFbGVtZW50KCkpOworICAg
IFJlZlB0ciB0YXJnZXRFbGVtZW50ID0gdGhpcy0+dGFyZ2V0RWxlbWVudCgpOwogICAgIGlmICgh
dGFyZ2V0RWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChBZmZpbmVUcmFuc2Zvcm0q
IHRyYW5zZm9ybSA9IHRhcmdldEVsZW1lbnQtPnN1cHBsZW1lbnRhbFRyYW5zZm9ybSgpKQpAQCAt
MjA2LDcgKzIwNiw3IEBAIHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmJ1aWxkVHJhbnNm
b3JtRm9yUHJvZ3Jlc3MoQWZmaW5lVHJhbnNmb3JtKiB0cmFuc2ZvCiAKIHZvaWQgU1ZHQW5pbWF0
ZU1vdGlvbkVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwg
dW5zaWduZWQgcmVwZWF0Q291bnQpCiB7Ci0gICAgYXV0byB0YXJnZXRFbGVtZW50ID0gbWFrZVJl
ZlB0cih0aGlzLT50YXJnZXRFbGVtZW50KCkpOworICAgIFJlZlB0ciB0YXJnZXRFbGVtZW50ID0g
dGhpcy0+dGFyZ2V0RWxlbWVudCgpOwogICAgIGlmICghdGFyZ2V0RWxlbWVudCkKICAgICAgICAg
cmV0dXJuOwogCkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBTVkdBbmltYXRlTW90aW9uRWxlbWVu
dDo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZAogdm9p
ZCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6YXBwbHlSZXN1bHRzVG9UYXJnZXQoKQogewogICAg
IC8vIFdlIGFjY3VtdWxhdGUgdG8gdGhlIHRhcmdldCBlbGVtZW50IHRyYW5zZm9ybSBsaXN0IHNv
IHRoZXJlIGlzIG5vdCBtdWNoIHRvIGRvIGhlcmUuCi0gICAgYXV0byB0YXJnZXRFbGVtZW50ID0g
bWFrZVJlZlB0cih0aGlzLT50YXJnZXRFbGVtZW50KCkpOworICAgIFJlZlB0ciB0YXJnZXRFbGVt
ZW50ID0gdGhpcy0+dGFyZ2V0RWxlbWVudCgpOwogICAgIGlmICghdGFyZ2V0RWxlbWVudCkKICAg
ICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1l
bnRFeHRlbnNpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lv
bnMuY3BwCmluZGV4IDUxYjg4Y2MwZmVlZWFiODEzMDU3ZTk1Zjk0ZDdkNDFlMDZlMTg0NjAuLjg2
MzJmMDJmNGJmNmJkNWMyMDE3NWYzMTM2MzM1NjEzMmNhYWY0ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCkBAIC0yNTgsNyArMjU4LDcgQEAgUmVm
UHRyPEVsZW1lbnQ+IFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6dGFrZUVsZW1lbnRGcm9tUGVuZGlu
Z1Jlc291cmNlc0ZvclJlbW92YWwKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRv
JiByZXNvdXJjZVNldCA9IGl0LT52YWx1ZTsKLSAgICBhdXRvIGZpcnN0RWxlbWVudCA9IG1ha2VS
ZWZQdHIocmVzb3VyY2VTZXQuYmVnaW4oKS5nZXQoKSk7CisgICAgUmVmUHRyIGZpcnN0RWxlbWVu
dCA9IHJlc291cmNlU2V0LmJlZ2luKCkuZ2V0KCk7CiAgICAgaWYgKCFmaXJzdEVsZW1lbnQpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXgg
YmE1NDI2MDZiYjA5YmE2OTg4NzNkYmQ3YWUwOGExM2UyMmFhZmRiZi4uMTVjYWE0NWNmOTNjNWZi
ODRjNzgxNDliMTUzOTgyZGI0N2JkMTY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApA
QCAtMzMzLDcgKzMzMyw3IEBAIHZvaWQgU1ZHRWxlbWVudDo6cmVtb3ZlRWxlbWVudFJlZmVyZW5j
ZSgpCiB7CiAgICAgaWYgKCFtX3N2Z1JhcmVEYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgaWYg
KGF1dG8gZGVzdGluYXRpb24gPSBtYWtlUmVmUHRyKG1fc3ZnUmFyZURhdGEtPnJlZmVyZW5jZVRh
cmdldCgpKSkKKyAgICBpZiAoUmVmUHRyIGRlc3RpbmF0aW9uID0gbV9zdmdSYXJlRGF0YS0+cmVm
ZXJlbmNlVGFyZ2V0KCkpCiAgICAgICAgIGRlc3RpbmF0aW9uLT5yZW1vdmVSZWZlcmVuY2luZ0Vs
ZW1lbnQoKnRoaXMpOwogfQogCkBAIC0zNzcsNyArMzc3LDcgQEAgUmVmUHRyPFNWR1VzZUVsZW1l
bnQ+IFNWR0VsZW1lbnQ6OmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KCkgY29uc3QKIHZvaWQgU1ZH
RWxlbWVudDo6c2V0Q29ycmVzcG9uZGluZ0VsZW1lbnQoU1ZHRWxlbWVudCogY29ycmVzcG9uZGlu
Z0VsZW1lbnQpCiB7CiAgICAgaWYgKG1fc3ZnUmFyZURhdGEpIHsKLSAgICAgICAgaWYgKGF1dG8g
b2xkQ29ycmVzcG9uZGluZ0VsZW1lbnQgPSBtYWtlUmVmUHRyKG1fc3ZnUmFyZURhdGEtPmNvcnJl
c3BvbmRpbmdFbGVtZW50KCkpKQorICAgICAgICBpZiAoUmVmUHRyIG9sZENvcnJlc3BvbmRpbmdF
bGVtZW50ID0gbV9zdmdSYXJlRGF0YS0+Y29ycmVzcG9uZGluZ0VsZW1lbnQoKSkKICAgICAgICAg
ICAgIG9sZENvcnJlc3BvbmRpbmdFbGVtZW50LT5tX3N2Z1JhcmVEYXRhLT5yZW1vdmVJbnN0YW5j
ZSgqdGhpcyk7CiAgICAgfQogICAgIGlmIChtX3N2Z1JhcmVEYXRhIHx8IGNvcnJlc3BvbmRpbmdF
bGVtZW50KQpAQCAtNjQzLDcgKzY0Myw3IEBAIHZvaWQgU1ZHRWxlbWVudDo6YW5pbWF0b3JXaWxs
QmVEZWxldGVkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiBzdGQ6Om9wdGlv
bmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IFNWR0VsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShj
b25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKikKIHsKICAg
ICAvLyBJZiB0aGUgZWxlbWVudCBpcyBpbiBhIDx1c2U+IHRyZWUgd2UgZ2V0IHRoZSBzdHlsZSBm
cm9tIHRoZSBkZWZpbml0aW9uIHRyZWUuCi0gICAgaWYgKGF1dG8gc3R5bGVFbGVtZW50ID0gbWFr
ZVJlZlB0cih0aGlzLT5jb3JyZXNwb25kaW5nRWxlbWVudCgpKSkgeworICAgIGlmIChSZWZQdHIg
c3R5bGVFbGVtZW50ID0gdGhpcy0+Y29ycmVzcG9uZGluZ0VsZW1lbnQoKSkgewogICAgICAgICBh
dXRvIHN0eWxlID0gc3R5bGVFbGVtZW50LT5yZXNvbHZlU3R5bGUoJnBhcmVudFN0eWxlKTsKICAg
ICAgICAgU3R5bGU6OkFkanVzdGVyOjphZGp1c3RTVkdFbGVtZW50U3R5bGUoKnN0eWxlLnJlbmRl
clN0eWxlLCAqdGhpcyk7CiAgICAgICAgIHJldHVybiBzdHlsZTsKQEAgLTY3Niw3ICs2NzYsNyBA
QCBjb25zdCBSZW5kZXJTdHlsZSogU1ZHRWxlbWVudDo6Y29tcHV0ZWRTdHlsZShQc2V1ZG9JZCBw
c2V1ZG9FbGVtZW50U3BlY2lmaWVyKQogICAgICAgICByZXR1cm4gRWxlbWVudDo6Y29tcHV0ZWRT
dHlsZShwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKTsKIAogICAgIGNvbnN0IFJlbmRlclN0eWxlKiBw
YXJlbnRTdHlsZSA9IG51bGxwdHI7Ci0gICAgaWYgKGF1dG8gcGFyZW50ID0gbWFrZVJlZlB0cihw
YXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkpKSB7CisgICAgaWYgKFJlZlB0ciBwYXJlbnQgPSBw
YXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkpIHsKICAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIg
PSBwYXJlbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBwYXJlbnRTdHlsZSA9ICZyZW5kZXJl
ci0+c3R5bGUoKTsKICAgICB9CkBAIC05NzksNyArOTc5LDcgQEAgdm9pZCBTVkdFbGVtZW50Ojp1
cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbihib29sIGhhc1JlbGF0aXZlTGVuZ3Rocywg
U1ZHRWwKICAgICB9CiAKICAgICBpZiAoaXM8U1ZHR3JhcGhpY3NFbGVtZW50PihlbGVtZW50KSkg
ewotICAgICAgICBpZiAoYXV0byBwYXJlbnQgPSBtYWtlUmVmUHRyKHBhcmVudE5vZGUoKSk7IGlz
PFNWR0VsZW1lbnQ+KHBhcmVudCkpCisgICAgICAgIGlmIChSZWZQdHIgcGFyZW50ID0gcGFyZW50
Tm9kZSgpOyBpczxTVkdFbGVtZW50PihwYXJlbnQpKQogICAgICAgICAgICAgZG93bmNhc3Q8U1ZH
RWxlbWVudD4oKnBhcmVudCkudXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oaGFzUmVs
YXRpdmVMZW5ndGhzLCAqdGhpcyk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCA3NTFhZGFjMTI4YThiM2Y4
ZjgwMTc5MzA3NTgyM2JlZWNmZDk0YmNlLi4xNTJjOTg1ZmQ4ZTk1YWU5OTU3ZTZlMjFkNmJmMmEx
MGM0NTRiZGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50LmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmls
dGVyCiAgICAgaWYgKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0
byBsaWdodEVsZW1lbnQgPSBtYWtlUmVmUHRyKFNWR0ZFTGlnaHRFbGVtZW50OjpmaW5kTGlnaHRF
bGVtZW50KHRoaXMpKTsKKyAgICBSZWZQdHIgbGlnaHRFbGVtZW50ID0gU1ZHRkVMaWdodEVsZW1l
bnQ6OmZpbmRMaWdodEVsZW1lbnQodGhpcyk7CiAgICAgaWYgKCFsaWdodEVsZW1lbnQpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxl
bWVudC5jcHAKaW5kZXggMThmNzgwOWZhZTAyOTI0NzRiZmYwNWZiMTQwMTdjMmRlNjYxZDM0Ni4u
ZTE0Njg4YTVlYjE3NmYwMmExNmMwNTUwZjA4MTE5NWQzYzI3ZWM0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCkBAIC0xNjIsNyArMTYyLDcgQEAgdm9pZCBTVkdG
RUltYWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MKICAgICBpZiAoIWlzQ29ubmVjdGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGF1dG8gcGFyZW50ID0gbWFrZVJlZlB0cihwYXJlbnRFbGVtZW50KCkpOworICAgIFJl
ZlB0ciBwYXJlbnQgPSBwYXJlbnRFbGVtZW50KCk7CiAKICAgICBpZiAoIXBhcmVudCB8fCAhcGFy
ZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmaWx0ZXJUYWcpKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcAppbmRleCAzZDEzZDE2ZTEwN2Zl
NDRjZjIwYjU3OWE1ZjE3Njk1MmQ4NTg2YTgzLi4wZGE5YzMzYTJmNjcwZTAxZjU3MDI2NWZlOTQ2
MWVmNGJlYmJmNGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAK
QEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIFNWR0ZFTGlnaHRFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaQogdm9pZCBTVkdGRUxp
Z2h0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKIHsKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
TmFtZSkpIHsKLSAgICAgICAgYXV0byBwYXJlbnQgPSBtYWtlUmVmUHRyKHBhcmVudEVsZW1lbnQo
KSk7CisgICAgICAgIFJlZlB0ciBwYXJlbnQgPSBwYXJlbnRFbGVtZW50KCk7CiAgICAgICAgIGlm
ICghcGFyZW50KQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9p
ZCBTVkdGRUxpZ2h0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBj
aGFuZ2UpCiAKICAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291cmNlOjpQ
YXJzZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBhdXRvIHBhcmVudCA9IG1ha2VSZWZQdHIocGFy
ZW50Tm9kZSgpKTsKKyAgICBSZWZQdHIgcGFyZW50ID0gcGFyZW50Tm9kZSgpOwogICAgIGlmICgh
cGFyZW50KQogICAgICAgICByZXR1cm47CiAgICAgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIgPSBw
YXJlbnQtPnJlbmRlcmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVT
cGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVj
dWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXggMjY0ZDE5N2VmMzY1NmJiZmI4NDFiNjc2MDQz
YjYwMzFkMWNlY2Q4MS4uOWI3Y2U0MGFiOTcxNmFlNGYzMzVmNTRiMjRjZGE0NTlhODQyOWE1OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVt
ZW50LmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlCiAgICAg
aWYgKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBsaWdodEVs
ZW1lbnQgPSBtYWtlUmVmUHRyKFNWR0ZFTGlnaHRFbGVtZW50OjpmaW5kTGlnaHRFbGVtZW50KHRo
aXMpKTsKKyAgICBSZWZQdHIgbGlnaHRFbGVtZW50ID0gU1ZHRkVMaWdodEVsZW1lbnQ6OmZpbmRM
aWdodEVsZW1lbnQodGhpcyk7CiAgICAgaWYgKCFsaWdodEVsZW1lbnQpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAppbmRleCBmMmE2ZWUwOGRiN2Ew
ZDJkZjNiZDhjYzUzNzVkMzE3OThiNTEyMWUyLi5mZjUyMjMwOTQ2NmIwNDBiZWYwODlkMTU3YjM4
NmRmZmJiMDVjNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcApAQCAtMTI3LDggKzEyNyw3IEBA
IHZvaWQgaW52YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVudChTVkdFbGVtZW50KiBlbGVtZW50
KQogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBwYXJlbnQg
PSBtYWtlUmVmUHRyKGVsZW1lbnQtPnBhcmVudE5vZGUoKSk7Ci0KKyAgICBSZWZQdHIgcGFyZW50
ID0gZWxlbWVudC0+cGFyZW50Tm9kZSgpOwogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1
cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAKaW5kZXggYmY1
ZDY3MTU1OGMzOGMwYzc1NDI3MjAwMzlhYjM0MDEyNDYzMmYzZS4uNWIzNDEyNmYxMTM1MWE2N2E0
YTU2YzBhMGI5YWVlY2U3ZjI3MDQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZvbnRGYWNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNl
RWxlbWVudC5jcHAKQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIFNWR0ZvbnRGYWNlRWxlbWVudDo6
cmVidWlsZEZvbnRGYWNlKCkKIAogICAgICAgICB1bnNpZ25lZCBzcmNMZW5ndGggPSBzcmNMaXN0
ID8gc3JjTGlzdC0+bGVuZ3RoKCkgOiAwOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgc3JjTGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBtYWtlUmVm
UHRyKGRvd25jYXN0PENTU0ZvbnRGYWNlU3JjVmFsdWU+KHNyY0xpc3QtPml0ZW1XaXRob3V0Qm91
bmRzQ2hlY2soaSkpKSkKKyAgICAgICAgICAgIGlmIChSZWZQdHIgaXRlbSA9IGRvd25jYXN0PENT
U0ZvbnRGYWNlU3JjVmFsdWU+KHNyY0xpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSkpKQog
ICAgICAgICAgICAgICAgIGl0ZW0tPnNldFNWR0ZvbnRGYWNlRWxlbWVudCh0aGlzKTsKICAgICAg
ICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUZv
cm1hdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRm9ybWF0RWxl
bWVudC5jcHAKaW5kZXggYjYwNzg1OWI4ZjVjYzc2Zjg3ODI5MjAwM2JkM2RjNGQxOTgyZjczYi4u
NTcyN2YyOGE4Yjc5ZDEyMjA3Yzk2M2I1YzZhZjQ4ZGNhNjEwZDdjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudC5jcHAKQEAgLTQ4LDcgKzQ4LDcg
QEAgdm9pZCBTVkdGb250RmFjZUZvcm1hdEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBD
aGlsZENoYW5nZSYgY2hhbmdlKQogICAgIGlmICghcGFyZW50Tm9kZSgpIHx8ICFwYXJlbnROb2Rl
KCktPmhhc1RhZ05hbWUoZm9udF9mYWNlX3VyaVRhZykpCiAgICAgICAgIHJldHVybjsKICAgICAK
LSAgICBhdXRvIGFuY2VzdG9yID0gbWFrZVJlZlB0cihwYXJlbnROb2RlKCktPnBhcmVudE5vZGUo
KSk7CisgICAgUmVmUHRyIGFuY2VzdG9yID0gcGFyZW50Tm9kZSgpLT5wYXJlbnROb2RlKCk7CiAg
ICAgaWYgKCFhbmNlc3RvciB8fCAhYW5jZXN0b3ItPmhhc1RhZ05hbWUoZm9udF9mYWNlX3NyY1Rh
ZykpCiAgICAgICAgIHJldHVybjsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRG
YWNlVXJpRWxlbWVudC5jcHAKaW5kZXggZTQ5ZjQ0ODdjNGUyYjYzYzUxZTI4ODMyOGY1NzJjOTg1
YjNiYzE5MS4uMDMwYTkzZGE4OWZjNTlkODA0NWQ2N2MwZGE1ODIyMjcyN2M4ZjVlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHAKQEAgLTc3LDkgKzc3
LDkgQEAgdm9pZCBTVkdGb250RmFjZVVyaUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBD
aGlsZENoYW5nZSYgY2hhbmdlKQogICAgIGlmICghcGFyZW50Tm9kZSgpIHx8ICFwYXJlbnROb2Rl
KCktPmhhc1RhZ05hbWUoZm9udF9mYWNlX3NyY1RhZykpCiAgICAgICAgIHJldHVybjsKICAgICAK
LSAgICBhdXRvIGdyYW5kcGFyZW50ID0gbWFrZVJlZlB0cihwYXJlbnROb2RlKCktPnBhcmVudE5v
ZGUoKSk7Ci0gICAgaWYgKGdyYW5kcGFyZW50ICYmIGdyYW5kcGFyZW50LT5oYXNUYWdOYW1lKGZv
bnRfZmFjZVRhZykpCi0gICAgICAgIGRvd25jYXN0PFNWR0ZvbnRGYWNlRWxlbWVudD4oKmdyYW5k
cGFyZW50KS5yZWJ1aWxkRm9udEZhY2UoKTsKKyAgICBSZWZQdHIgZ3JhbmRQYXJlbnQgPSBwYXJl
bnROb2RlKCktPnBhcmVudE5vZGUoKTsKKyAgICBpZiAoZ3JhbmRQYXJlbnQgJiYgZ3JhbmRQYXJl
bnQtPmhhc1RhZ05hbWUoZm9udF9mYWNlVGFnKSkKKyAgICAgICAgZG93bmNhc3Q8U1ZHRm9udEZh
Y2VFbGVtZW50PigqZ3JhbmRQYXJlbnQpLnJlYnVpbGRGb250RmFjZSgpOwogfQogCiBOb2RlOjpJ
bnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBTVkdGb250RmFjZVVyaUVsZW1lbnQ6Omluc2VydGVk
SW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUgaW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYg
cGFyZW50T2ZJbnNlcnRlZFRyZWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25P
YmplY3RFbGVtZW50LmNwcAppbmRleCAzYTUxNGNiMzg0MWM0MjhlNjJkZTEyYTY1MWJjZDYwZjVl
NWVlNjNkLi5iYzAwNjg0OGJmMzZiNjViYjk3NDI1MzFlYWYwNzdmZjM2YmI3Mjk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAKQEAgLTExMSw3
ICsxMTEsNyBAQCBib29sIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVk
KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKICAgICAvLyBOb3RlIHRoYXQgd2UgY3VycmVudGx5
IGRvIG5vdCBzdXBwb3J0IGZvcmVpZ25PYmplY3QgaW5zdGFudGlhdGlvbiB2aWEgPHVzZT4sIGhl
bmNlIGl0IGlzIHNhZmUKICAgICAvLyB0byB1c2UgcGFyZW50RWxlbWVudCgpIGhlcmUuIElmIHRo
YXQgY2hhbmdlcywgdGhpcyBtZXRob2Qgc2hvdWxkIGJlIHVwZGF0ZWQgdG8gdXNlCiAgICAgLy8g
cGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpIGluc3RlYWQuCi0gICAgYXV0byBhbmNlc3RvciA9
IG1ha2VSZWZQdHIocGFyZW50RWxlbWVudCgpKTsKKyAgICBSZWZQdHIgYW5jZXN0b3IgPSBwYXJl
bnRFbGVtZW50KCk7CiAgICAgd2hpbGUgKGFuY2VzdG9yICYmIGFuY2VzdG9yLT5pc1NWR0VsZW1l
bnQoKSkgewogICAgICAgICBpZiAoYW5jZXN0b3ItPnJlbmRlcmVyKCkgJiYgYW5jZXN0b3ItPnJl
bmRlcmVyKCktPmlzU1ZHSGlkZGVuQ29udGFpbmVyKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29udGV4dC5jcHAKaW5kZXggZTY4ODc3ZGZj
YzllNjc1OGRkMmIwZDc2MTA2YWMzOWM4NjA3NmQxMi4uZmY2YjRmMDE1MGVjM2FhY2YxMDUwNTYz
NjNhNDA4ZWE0NjdiZDUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0
aENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhDb250ZXh0LmNw
cApAQCAtMzAyLDcgKzMwMiw3IEBAIGJvb2wgU1ZHTGVuZ3RoQ29udGV4dDo6ZGV0ZXJtaW5lVmll
d3BvcnQoRmxvYXRTaXplJiB2aWV3cG9ydFNpemUpIGNvbnN0CiAgICAgfQogCiAgICAgLy8gVGFr
ZSBzaXplIGZyb20gbmVhcmVzdCB2aWV3cG9ydCBlbGVtZW50LgotICAgIGF1dG8gdmlld3BvcnRF
bGVtZW50ID0gbWFrZVJlZlB0cihtX2NvbnRleHQtPnZpZXdwb3J0RWxlbWVudCgpKTsKKyAgICBS
ZWZQdHIgdmlld3BvcnRFbGVtZW50ID0gbV9jb250ZXh0LT52aWV3cG9ydEVsZW1lbnQoKTsKICAg
ICBpZiAoIWlzPFNWR1NWR0VsZW1lbnQ+KHZpZXdwb3J0RWxlbWVudCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCmluZGV4IDkwYzFjZmY0
NWQxNDMyODE2MjAxMTM2YjFjZThmNTljNWI4ZDY0OGYuLjQ5N2M5YzU3MWFkYzg0MTY2MmEwMzA2
ZTQ5MWFkZTA4ZjRhNjA4MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKQEAg
LTEwNyw3ICsxMDcsNyBAQCBSZWZQdHI8RnJhbWU+IFNWR1NWR0VsZW1lbnQ6OmZyYW1lRm9yQ3Vy
cmVudFNjYWxlKCkgY29uc3QKICAgICAvLyBJZiB0aGUgZG9jdW1lbnQgaXMgZW1iZWRkZWQsIHRo
ZSBzY2FsaW5nIGlzIGhhbmRsZWQgYnkgdGhlIGhvc3QgcmVuZGVyZXIuCiAgICAgaWYgKCFpc0Nv
bm5lY3RlZCgpIHx8ICFpc091dGVybW9zdFNWR1NWR0VsZW1lbnQoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIoZG9jdW1lbnQoKS5mcmFtZSgp
KTsKKyAgICBSZWZQdHIgZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgcmV0dXJuIGZy
YW1lICYmIGZyYW1lLT5pc01haW5GcmFtZSgpID8gZnJhbWUgOiBudWxscHRyOwogfQogCkBAIC0y
NzMsNyArMjczLDcgQEAgYm9vbCBTVkdTVkdFbGVtZW50OjpjaGVja0VuY2xvc3VyZShSZWY8U1ZH
RWxlbWVudD4mJiBlbGVtZW50LCBTVkdSZWN0JiByZWN0KQogCiB2b2lkIFNWR1NWR0VsZW1lbnQ6
OmRlc2VsZWN0QWxsKCkKIHsKLSAgICBpZiAoYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIoZG9jdW1l
bnQoKS5mcmFtZSgpKSkKKyAgICBpZiAoUmVmUHRyIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgp
KQogICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuY2xlYXIoKTsKIH0KIApAQCAtMzY2LDcgKzM2
Niw3IEBAIEFmZmluZVRyYW5zZm9ybSBTVkdTVkdFbGVtZW50Ojpsb2NhbENvb3JkaW5hdGVTcGFj
ZVRyYW5zZm9ybShTVkdMb2NhdGFibGU6OkNUTVNjCiAgICAgICAgICAgICB0cmFuc2Zvcm0udHJh
bnNsYXRlKGxvY2F0aW9uLngoKSAtIHZpZXdCb3hUcmFuc2Zvcm0uZSgpLCBsb2NhdGlvbi55KCkg
LSB2aWV3Qm94VHJhbnNmb3JtLmYoKSk7CiAKICAgICAgICAgICAgIC8vIFJlc3BlY3Qgc2Nyb2xs
IG9mZnNldC4KLSAgICAgICAgICAgIGlmIChhdXRvIHZpZXcgPSBtYWtlUmVmUHRyKGRvY3VtZW50
KCkudmlldygpKSkgeworICAgICAgICAgICAgaWYgKFJlZlB0ciB2aWV3ID0gZG9jdW1lbnQoKS52
aWV3KCkpIHsKICAgICAgICAgICAgICAgICBMYXlvdXRQb2ludCBzY3JvbGxQb3NpdGlvbiA9IHZp
ZXctPnNjcm9sbFBvc2l0aW9uKCk7CiAgICAgICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb24uc2Nh
bGUoem9vbUZhY3Rvcik7CiAgICAgICAgICAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgtc2Ny
b2xsUG9zaXRpb24pOwpAQCAtNjg5LDcgKzY4OSw3IEBAIEVsZW1lbnQqIFNWR1NWR0VsZW1lbnQ6
OmdldEVsZW1lbnRCeUlkKGNvbnN0IEF0b21TdHJpbmcmIGlkKQogICAgIGlmIChpZC5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGVsZW1lbnQgPSBtYWtlUmVm
UHRyKHRyZWVTY29wZSgpLmdldEVsZW1lbnRCeUlkKGlkKSk7CisgICAgUmVmUHRyIGVsZW1lbnQg
PSB0cmVlU2NvcGUoKS5nZXRFbGVtZW50QnlJZChpZCk7CiAgICAgaWYgKGVsZW1lbnQgJiYgZWxl
bWVudC0+aXNEZXNjZW5kYW50T2YoKnRoaXMpKQogICAgICAgICByZXR1cm4gZWxlbWVudC5nZXQo
KTsKICAgICBpZiAodHJlZVNjb3BlKCkuY29udGFpbnNNdWx0aXBsZUVsZW1lbnRzV2l0aElkKGlk
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcAppbmRleCAyNWI4MmEyOWE2
NzQwMTZhNzYyZWRkNTljYjU4OGVhNjlhZDBlM2FkLi40ZmI3YTA4MmNjODUyNDM2NmY4Njk1NTQx
ZjI2MTU0ZjdhYmFiZjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcApA
QCAtNTgsNyArNTgsNyBAQCBib29sIFNWR1N0eWxlRWxlbWVudDo6ZGlzYWJsZWQoKSBjb25zdAog
CiB2b2lkIFNWR1N0eWxlRWxlbWVudDo6c2V0RGlzYWJsZWQoYm9vbCBzZXREaXNhYmxlZCkKIHsK
LSAgICBpZiAoYXV0byBzdHlsZVNoZWV0ID0gbWFrZVJlZlB0cihzaGVldCgpKSkKKyAgICBpZiAo
UmVmUHRyIHN0eWxlU2hlZXQgPSBzaGVldCgpKQogICAgICAgICBzdHlsZVNoZWV0LT5zZXREaXNh
YmxlZChzZXREaXNhYmxlZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUUmVmRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3Bw
CmluZGV4IDc2OWFhMWExMmRmZWNiOTVlODZjNjE4OTIwMGMxZDdlYjYyODY2NjAuLmUxMWFlYjUx
N2I0NWE1ZDE2NmRkZDBhMTJmMzk0OGY1YzJkMGE1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RS
ZWZFbGVtZW50LmNwcApAQCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgU1ZHVFJlZkVsZW1lbnQ6OmRl
dGFjaFRhcmdldCgpCiAgICAgU3RyaW5nIGVtcHR5Q29udGVudDsKIAogICAgIEFTU0VSVChzaGFk
b3dSb290KCkpOwotICAgIGF1dG8gY29udGFpbmVyID0gbWFrZVJlZlB0cihzaGFkb3dSb290KCkt
PmZpcnN0Q2hpbGQoKSk7CisgICAgUmVmUHRyIGNvbnRhaW5lciA9IHNoYWRvd1Jvb3QoKS0+Zmly
c3RDaGlsZCgpOwogICAgIGlmIChjb250YWluZXIpCiAgICAgICAgIGNvbnRhaW5lci0+c2V0VGV4
dENvbnRlbnQoZW1wdHlDb250ZW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RyYW5zZm9ybUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxp
c3QuY3BwCmluZGV4IDYzNzViNjIwNTNiYzIyMjU0ZGU0MWQwMDkwNjU0OWQ5MjEyN2JlNjcuLjU1
NmNmODU1NDlhZDQxNDZmYjBlZjg3ZjJmYmUzMmY2YTUyOTY0N2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVHJhbnNmb3JtTGlzdC5jcHAKQEAgLTQ0LDE0ICs0NCwxNCBAQCBFeGNlcHRpb25PcjxS
ZWZQdHI8U1ZHVHJhbnNmb3JtPj4gU1ZHVHJhbnNmb3JtTGlzdDo6Y29uc29saWRhdGUoKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmIChtX2l0ZW1zLnNpemUoKSA9PSAxKQotICAg
ICAgICByZXR1cm4gbWFrZVJlZlB0cihhdCgwKS5nZXQoKSk7CisgICAgICAgIHJldHVybiBSZWZQ
dHIgeyBhdCgwKS5wdHIoKSB9OwogCiAgICAgYXV0byBuZXdJdGVtID0gU1ZHVHJhbnNmb3JtOjpj
cmVhdGUoY29uY2F0ZW5hdGUoKSk7CiAgICAgY2xlYXJJdGVtcygpOwogCiAgICAgYXV0byBpdGVt
ID0gYXBwZW5kKFdURk1vdmUobmV3SXRlbSkpOwogICAgIGNvbW1pdENoYW5nZSgpOwotICAgIHJl
dHVybiBtYWtlUmVmUHRyKGl0ZW0uZ2V0KCkpOworICAgIHJldHVybiBSZWZQdHIgeyBpdGVtLnB0
cigpIH07CiB9CiAKIEFmZmluZVRyYW5zZm9ybSBTVkdUcmFuc2Zvcm1MaXN0Ojpjb25jYXRlbmF0
ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKaW5kZXggYjJiMDI2MzVj
NDA2N2ExMGM5ZmZjNmI1NDlkMTk5OGMwM2RhODFlZS4uZDVlYjdiZGMzNWY0NzhmMDdmMzFmZjE2
OWJmMmJlMTJhZDYxOGQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcApAQCAt
MTQ3LDcgKzE0Nyw3IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6dHJhbnNmZXJTaXplQXR0cmlidXRl
c1RvVGFyZ2V0Q2xvbmUoU1ZHRWxlbWVudCYgc2hhZG93RWxlbWVuCiAgICAgfSBlbHNlIGlmIChp
czxTVkdTVkdFbGVtZW50PihzaGFkb3dFbGVtZW50KSkgewogICAgICAgICAvLyBTcGVjICg8dXNl
PiBvbiA8c3ZnPik6IElmIGF0dHJpYnV0ZXMgd2lkdGggYW5kL29yIGhlaWdodCBhcmUgcHJvdmlk
ZWQgb24gdGhlICd1c2UnIGVsZW1lbnQsIHRoZW4gdGhlc2UKICAgICAgICAgLy8gdmFsdWVzIHdp
bGwgb3ZlcnJpZGUgdGhlIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlcyBvbiB0aGUgJ3N2ZycgaW4g
dGhlIGdlbmVyYXRlZCB0cmVlLgotICAgICAgICBhdXRvIGNvcnJlc3BvbmRpbmdFbGVtZW50ID0g
bWFrZVJlZlB0cihzaGFkb3dFbGVtZW50LmNvcnJlc3BvbmRpbmdFbGVtZW50KCkpOworICAgICAg
ICBSZWZQdHIgY29ycmVzcG9uZGluZ0VsZW1lbnQgPSBzaGFkb3dFbGVtZW50LmNvcnJlc3BvbmRp
bmdFbGVtZW50KCk7CiAgICAgICAgIHNoYWRvd0VsZW1lbnQuc2V0QXR0cmlidXRlKFNWR05hbWVz
Ojp3aWR0aEF0dHIsIHdpZHRoKCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCkgPyBBdG9tU3RyaW5n
KHdpZHRoKCkudmFsdWVBc1N0cmluZygpKSA6IChjb3JyZXNwb25kaW5nRWxlbWVudCA/IGNvcnJl
c3BvbmRpbmdFbGVtZW50LT5nZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OndpZHRoQXR0cikgOiBudWxs
QXRvbSgpKSk7CiAgICAgICAgIHNoYWRvd0VsZW1lbnQuc2V0QXR0cmlidXRlKFNWR05hbWVzOjpo
ZWlnaHRBdHRyLCBoZWlnaHQoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSA/IEF0b21TdHJpbmco
aGVpZ2h0KCkudmFsdWVBc1N0cmluZygpKSA6IChjb3JyZXNwb25kaW5nRWxlbWVudCA/IGNvcnJl
c3BvbmRpbmdFbGVtZW50LT5nZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OmhlaWdodEF0dHIpIDogbnVs
bEF0b20oKSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRp
b24vU1ZHU01JTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdT
TUlMRWxlbWVudC5jcHAKaW5kZXggNTU0Y2QxYzc1OGNhMjJjZGJiZWZmNDBiZGZhNzZjYTFkM2E1
MTJmMi4uY2M1ZDQyYThjN2YwZWZiMmM1OGRmNWY0YjQyNzVhZjg1OGJhZDA3MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKQEAgLTE5Miw3
ICsxOTIsNyBAQCB2b2lkIFNWR1NNSUxFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSgpCiAg
ICAgICAgIHRhcmdldCA9IFdURk1vdmUocmVzdWx0LmVsZW1lbnQpOwogICAgICAgICBpZCA9IFdU
Rk1vdmUocmVzdWx0LmlkZW50aWZpZXIpOwogICAgIH0KLSAgICBhdXRvIHN2Z1RhcmdldCA9IG1h
a2VSZWZQdHIoaXM8U1ZHRWxlbWVudD4odGFyZ2V0KSAmJiB0YXJnZXQtPmlzQ29ubmVjdGVkKCkg
PyBkb3duY2FzdDxTVkdFbGVtZW50Pih0YXJnZXQuZ2V0KCkpIDogbnVsbHB0cik7CisgICAgUmVm
UHRyIHN2Z1RhcmdldCA9IGlzPFNWR0VsZW1lbnQ+KHRhcmdldCkgJiYgdGFyZ2V0LT5pc0Nvbm5l
Y3RlZCgpID8gZG93bmNhc3Q8U1ZHRWxlbWVudD4odGFyZ2V0LmdldCgpKSA6IG51bGxwdHI7CiAK
ICAgICBpZiAoc3ZnVGFyZ2V0ICE9IHRhcmdldEVsZW1lbnQoKSkKICAgICAgICAgc2V0VGFyZ2V0
RWxlbWVudChzdmdUYXJnZXQuZ2V0KCkpOwpAQCAtMjY2LDcgKzI2Niw3IEBAIE5vZGU6Okluc2Vy
dGVkSW50b0FuY2VzdG9yUmVzdWx0IFNWR1NNSUxFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rv
cihJbnNlcnRpb25UCiAKICAgICB1cGRhdGVBdHRyaWJ1dGVOYW1lKCk7CiAKLSAgICBhdXRvIG93
bmVyID0gbWFrZVJlZlB0cihvd25lclNWR0VsZW1lbnQoKSk7CisgICAgUmVmUHRyIG93bmVyID0g
b3duZXJTVkdFbGVtZW50KCk7CiAgICAgaWYgKCFvd25lcikKICAgICAgICAgcmV0dXJuIEluc2Vy
dGVkSW50b0FuY2VzdG9yUmVzdWx0OjpEb25lOwogCkBAIC01NDMsNyArNTQzLDcgQEAgdm9pZCBT
VkdTTUlMRWxlbWVudDo6Y29ubmVjdENvbmRpdGlvbnMoKQogICAgIGZvciAoYXV0byYgY29uZGl0
aW9uIDogbV9jb25kaXRpb25zKSB7CiAgICAgICAgIGlmIChjb25kaXRpb24ubV90eXBlID09IENv
bmRpdGlvbjo6RXZlbnRCYXNlKSB7CiAgICAgICAgICAgICBBU1NFUlQoIWNvbmRpdGlvbi5tX3N5
bmNiYXNlKTsKLSAgICAgICAgICAgIGF1dG8gZXZlbnRCYXNlID0gbWFrZVJlZlB0cihldmVudEJh
c2VGb3IoY29uZGl0aW9uKSk7CisgICAgICAgICAgICBSZWZQdHIgZXZlbnRCYXNlID0gZXZlbnRC
YXNlRm9yKGNvbmRpdGlvbik7CiAgICAgICAgICAgICBpZiAoIWV2ZW50QmFzZSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIEFTU0VSVCghY29uZGl0aW9uLm1fZXZlbnRM
aXN0ZW5lcik7CkBAIC01NzgsNyArNTc4LDcgQEAgdm9pZCBTVkdTTUlMRWxlbWVudDo6ZGlzY29u
bmVjdENvbmRpdGlvbnMoKQogICAgICAgICAgICAgLy8gbm8gZ3VhcmFudGVlIHRoYXQgZXZlbnRC
YXNlRm9yKCkgd2lsbCBiZSBhYmxlIHRvIGZpbmQgb3VyIGNvbmRpdGlvbidzCiAgICAgICAgICAg
ICAvLyBvcmlnaW5hbCBldmVudEJhc2UuIFNvLCB3ZSBhbHNvIGhhdmUgdG8gZGlzY29ubmVjdCBv
dXJzZWx2ZXMgZnJvbQogICAgICAgICAgICAgLy8gb3VyIGNvbmRpdGlvbiBldmVudCBsaXN0ZW5l
ciwgaW4gY2FzZSBpdCBsYXRlciBmaXJlcy4KLSAgICAgICAgICAgIGF1dG8gZXZlbnRCYXNlID0g
bWFrZVJlZlB0cihldmVudEJhc2VGb3IoY29uZGl0aW9uKSk7CisgICAgICAgICAgICBSZWZQdHIg
ZXZlbnRCYXNlID0gZXZlbnRCYXNlRm9yKGNvbmRpdGlvbik7CiAgICAgICAgICAgICBpZiAoZXZl
bnRCYXNlKQogICAgICAgICAgICAgICAgIGV2ZW50QmFzZS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihj
b25kaXRpb24ubV9uYW1lLCAqY29uZGl0aW9uLm1fZXZlbnRMaXN0ZW5lciwgZmFsc2UpOwogICAg
ICAgICAgICAgY29uZGl0aW9uLm1fZXZlbnRMaXN0ZW5lci0+ZGlzY29ubmVjdEFuaW1hdGlvbigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggZDYzOTNkMjJj
OWJlOWM3NGJiYTc3NWFjNWEyMWU1ZGM3NWFjMDA0Mi4uYzQ3MzNkYmI1MTdkODQyZDg1MWFmZGMz
MzRlNmIwZjQzMWNiMjZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
Y3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBTVkdJbWFnZTo6c2V0Q29udGFpbmVyU2l6ZShj
b25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgYXV0byB2aWV3ID0gbWFrZVJlZlB0cihmcmFtZVZpZXcoKSk7CisgICAgUmVmUHRy
IHZpZXcgPSBmcmFtZVZpZXcoKTsKICAgICB2aWV3LT5yZXNpemUodGhpcy0+Y29udGFpbmVyU2l6
ZSgpKTsKIAogICAgIHJlbmRlcmVyLT5zZXRDb250YWluZXJTaXplKEludFNpemUoc2l6ZSkpOwpA
QCAtMjg2LDcgKzI4Niw3IEBAIEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjCiAgICAgICAgIHJldHVy
biBkcmF3QXNOYXRpdmVJbWFnZShjb250ZXh0LCBkc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsK
ICAgICB9CiAKLSAgICBhdXRvIHZpZXcgPSBtYWtlUmVmUHRyKGZyYW1lVmlldygpKTsKKyAgICBS
ZWZQdHIgdmlldyA9IGZyYW1lVmlldygpOwogICAgIEFTU0VSVCh2aWV3KTsKIAogICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKQEAgLTQ1MSw3ICs0NTEs
NyBAQCBib29sIFNWR0ltYWdlOjppc0FuaW1hdGluZygpIGNvbnN0CiAKIHZvaWQgU1ZHSW1hZ2U6
OnJlcG9ydEFwcHJveGltYXRlTWVtb3J5Q29zdCgpIGNvbnN0CiB7Ci0gICAgYXV0byBkb2N1bWVu
dCA9IG1ha2VSZWZQdHIobV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKTsKKyAgICBSZWZQ
dHIgZG9jdW1lbnQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCk7CiAgICAgc2l6ZV90
IGRlY29kZWRJbWFnZU1lbW9yeUNvc3QgPSAwOwogCiAgICAgZm9yIChSZWZQdHI8Tm9kZT4gbm9k
ZSA9IGRvY3VtZW50OyBub2RlOyBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dCgqbm9kZSkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3Bw
CmluZGV4IGM2MzI4Y2ZiNWUxNGQwNzcxYjMwNWY4YmVhNzBlNTY2MTU1OWM4MjMuLjM4NWFmMjkw
ODQ4YTNkMGI4M2YxMmFjOTYxOWU2YmY5NmM5ZjIzOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCkBAIC0xMTksNyArMTE5LDcg
QEAgdm9pZCBGRUltYWdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAgICBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtID0gZmlsdGVyKCkuYWJzb2x1dGVUcmFu
c2Zvcm0oKTsKICAgICAgICAgY29udGV4dC5jb25jYXRDVE0oYWJzb2x1dGVUcmFuc2Zvcm0pOwog
Ci0gICAgICAgIGF1dG8gY29udGV4dE5vZGUgPSBtYWtlUmVmUHRyKGRvd25jYXN0PFNWR0VsZW1l
bnQ+KHJlbmRlcmVyLT5lbGVtZW50KCkpKTsKKyAgICAgICAgUmVmUHRyIGNvbnRleHROb2RlID0g
ZG93bmNhc3Q8U1ZHRWxlbWVudD4ocmVuZGVyZXItPmVsZW1lbnQoKSk7CiAgICAgICAgIGlmIChj
b250ZXh0Tm9kZS0+aGFzUmVsYXRpdmVMZW5ndGhzKCkpIHsKICAgICAgICAgICAgIFNWR0xlbmd0
aENvbnRleHQgbGVuZ3RoQ29udGV4dChjb250ZXh0Tm9kZS5nZXQoKSk7CiAgICAgICAgICAgICBG
bG9hdFNpemUgdmlld3BvcnRTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHUHJvcGVydHlBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHUHJvcGVydHlBbmltYXRvci5oCmluZGV4IDE3ZjdjNWI5NWUxN2Q4YmYzMmFiOGE4
MzAwNmQ4YmQ1NmE2MDJiNDAuLjg5MWE0NjY5NjA2NDc2NDUwOGIxYWRmNTA1YjBiYTVmMjUzNTlm
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5
QW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0
eUFuaW1hdG9yLmgKQEAgLTc4LDcgKzc4LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgU3RyaW5nIGNv
bXB1dGVDU1NQcm9wZXJ0eVZhbHVlKFNWR0VsZW1lbnQmIHRhcmdldEVsZW1lbnQsIENTU1Byb3Bl
cnR5SUQgaWQpIGNvbnN0CiAgICAgewotICAgICAgICBhdXRvIHByb3RlY3RvciA9IG1ha2VSZWZQ
dHIodGFyZ2V0RWxlbWVudCk7CisgICAgICAgIFJlZiBwcm90ZWN0b3IgPSB0YXJnZXRFbGVtZW50
OwogCiAgICAgICAgIC8vIERvbid0IGluY2x1ZGUgYW55IHByb3BlcnRpZXMgcmVzdWx0aW5nIGZy
b20gQ1NTIFRyYW5zaXRpb25zL0FuaW1hdGlvbnMgb3IgU01JTCBhbmltYXRpb25zLCBhcyB3ZSB3
YW50IHRvIHJldHJpZXZlIHRoZSAiYmFzZSB2YWx1ZSIuCiAgICAgICAgIHRhcmdldEVsZW1lbnQu
c2V0VXNlT3ZlcnJpZGVDb21wdXRlZFN0eWxlKHRydWUpOwpAQCAtODksNyArODksNyBAQCBwcm90
ZWN0ZWQ6CiAKICAgICBTdHJpbmcgY29tcHV0ZUluaGVyaXRlZENTU1Byb3BlcnR5VmFsdWUoU1ZH
RWxlbWVudCYgdGFyZ2V0RWxlbWVudCkgY29uc3QKICAgICB7Ci0gICAgICAgIGF1dG8gcGFyZW50
ID0gbWFrZVJlZlB0cih0YXJnZXRFbGVtZW50LnBhcmVudEVsZW1lbnQoKSk7CisgICAgICAgIFJl
ZlB0ciBwYXJlbnQgPSB0YXJnZXRFbGVtZW50LnBhcmVudEVsZW1lbnQoKTsKICAgICAgICAgaWYg
KCFwYXJlbnQgfHwgIXBhcmVudC0+aXNTVkdFbGVtZW50KCkpCiAgICAgICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
aW5kZXggM2ZmYThlNjE4YmMyNTliNjczNDI2YTRhNjdjM2NhNTI1NTU2M2I1MS4uYWVjNzYwZTU0
YTlmNmRiYjlhYTI3ZGQwYjdiNDM3Mjk4ZDg1OGRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcApAQCAtMjU1OSwxMyArMjU1OSwxMyBAQCB2b2lkIEludGVybmFsczo6aGFuZGxl
QWNjZXB0ZWRDYW5kaWRhdGUoY29uc3QgU3RyaW5nJiBjYW5kaWRhdGUsIHVuc2lnbmVkIGxvY2F0
aQogCiB2b2lkIEludGVybmFsczo6Y2hhbmdlU2VsZWN0aW9uTGlzdFR5cGUoKQogewotICAgIGlm
IChhdXRvIGZyYW1lID0gbWFrZVJlZlB0cih0aGlzLT5mcmFtZSgpKSkKKyAgICBpZiAoUmVmUHRy
IGZyYW1lID0gdGhpcy0+ZnJhbWUoKSkKICAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNoYW5nZVNl
bGVjdGlvbkxpc3RUeXBlKCk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjpjaGFuZ2VCYWNrVG9SZXBs
YWNlZFN0cmluZyhjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nKQogewotICAgIGlmIChhdXRv
IGZyYW1lID0gbWFrZVJlZlB0cih0aGlzLT5mcmFtZSgpKSkKKyAgICBpZiAoUmVmUHRyIGZyYW1l
ID0gdGhpcy0+ZnJhbWUoKSkKICAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNoYW5nZUJhY2tUb1Jl
cGxhY2VkU3RyaW5nKHJlcGxhY2VkU3RyaW5nKTsKIH0KIAo=
</data>
<flag name="commit-queue"
          id="462247"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438767</attachid>
            <date>2021-09-20 18:37:24 -0700</date>
            <delta_ts>2021-09-20 22:15:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230527-20210920183723.patch</filename>
            <type>text/plain</type>
            <size>143271</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzM3YWUwMDY5ZWQ3OWYw
ZTYyMzVkYTQwNTRlYzM0MGVlMzIzYjgyMy4uM2Q1YmViY2NmZTcyYjk4N2JlNGIwOTU0ZTM1ZTMz
YWY0NDk4ZGJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwMyBAQAorMjAyMS0wOS0yMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgcmVtYWluaW5nIHVz
ZXMgb2YgbWFrZVJlZlB0cigpIGluIFdlYkNvcmUvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA1MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHA6CisgICAg
ICAgICogaHRtbC9EaXJlY3RvcnlGaWxlTGlzdENyZWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yOjpzdGFydCk6CisgICAgICAgICogaHRtbC9GVFBE
aXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGVFBEaXJlY3RvcnlEb2N1
bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUpOgorICAgICAgICAqIGh0bWwvRmlsZUlu
cHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjphcHBlbmRGb3Jt
RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpkaXNhYmxlZFN0
YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjphdHRyaWJ1dGVD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmZpbGVzQ2hvc2VuKToK
KyAgICAgICAgKiBodG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRGV0YWlsc0VsZW1lbnQ6OmlzQWN0aXZlU3VtbWFyeSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRGV0YWlsc0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBo
dG1sL0hUTUxEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnQ6Om5h
bWVkSXRlbSk6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRWxlbWVudDo6ZWRpdGFiaWxpdHlGcm9tQ29udGVudEVkaXRhYmxlQXR0cik6Cisg
ICAgICAgIChXZWJDb3JlOjppbWFnZU92ZXJsYXlIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxFbGVtZW50Ojppc0luc2lkZUltYWdlT3ZlcmxheSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RWxlbWVudDo6dXBkYXRlV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdCk6CisgICAgICAgICogaHRt
bC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVycyk6CisgICAgICAgICogaHRtbC9IVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5kRm9ybUFz
c29jaWF0ZWRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uOjpjdXN0b21FbGVtZW50QWZ0ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVudENhY2hlIGNvbnN0KToK
KyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRm9ybUVsZW1lbnQ6On5IVE1MRm9ybUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEZvcm1FbGVtZW50OjpsZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1F
bGVtZW50OjpzdWJtaXRJZlBvc3NpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxl
bWVudDo6dGV4dEZpZWxkVmFsdWVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3Jt
RWxlbWVudDo6ZWZmZWN0aXZlVGFyZ2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxG
b3JtRWxlbWVudDo6ZWxlbWVudEZyb21QYXN0TmFtZXNNYXAgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZvcm1FbGVtZW50Ojpjb3B5QXNzb2NpYXRlZEVsZW1lbnRzVmVjdG9yIGNvbnN0
KToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZyYW1lU2V0RWxlbWVudDo6bmFtZWRJdGVtKToKKyAgICAgICAgKiBodG1sL0hU
TUxIdG1sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSHRtbEVsZW1lbnQ6Omlu
c2VydGVkQnlQYXJzZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpiZXN0Rml0U291cmNlRnJvbVBpY3R1
cmVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmV2YWx1YXRl
RHluYW1pY01lZGlhUXVlcnlEZXBlbmRlbmNpZXMpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBodG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Zmlyc3RFbGVtZW50V2l0aElkSWZMYWJlbGFibGUpOgorICAgICAgICAq
IGh0bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExlZ2Vu
ZEVsZW1lbnQ6OmZvcm0gY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6c2V0Q1NTU3R5bGVTaGVldCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmli
dXRlVVJMcyBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVRleHRUcmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpsYXlvdXRTaXplQ2hhbmdlZCk6Cisg
ICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
aG91bGRCZUV4cG9zZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6OmFw
cGVuZEZvcm1EYXRhKToKKyAgICAgICAgKiBodG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdEdyb3VwRWxlbWVudDo6cmVjYWxjU2VsZWN0T3B0aW9u
cyk6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6YmluZGluZ3NJbnN0YW5jZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6aXNSZXBsYWNlbWVudE9ic2N1cmVkKToKKyAgICAgICAg
KiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6aXNJbWFnZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6d2lsbERldGFjaFJlbmRlcmVycyk6CisgICAgICAgICogaHRt
bC9IVE1MU2xvdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNsb3RFbGVtZW50
OjphdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTbG90RWxlbWVudDo6
YXNzaWduZWROb2RlcyBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MU291cmNlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU291cmNlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUp
OgorICAgICAgICAqIGh0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MU3R5bGVFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMgY29uc3QpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpmaW5kUm93cyk6CisgICAgICAgICogaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6Om1lZGlhRWxlbWVudCBjb25zdCk6CisgICAg
ICAgICogaHRtbC9MaW5rSWNvbkNvbGxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaW5r
SWNvbkNvbGxlY3Rvcjo6aWNvbnNPZlR5cGVzKToKKyAgICAgICAgKiBodG1sL01lZGlhRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEb2N1bWVudFBhcnNlcjo6Y3JlYXRlRG9j
dW1lbnRTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEb2N1bWVudDo6ZGVmYXVs
dEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURvY3VtZW50OjpyZXBsYWNl
TWVkaWFFbGVtZW50VGltZXJGaXJlZCk6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNz
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzRWxlbWVudFJlY3RNb3N0bHlJbk1haW5GcmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjppc0VsZW1lbnRMYXJnZVJlbGF0aXZlVG9NYWluRnJhbWUp
OgorICAgICAgICAqIGh0bWwvUGx1Z2luRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGx1Z2luRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsdWdpbkRvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyk6CisgICAgICAgICog
aHRtbC9TdWJtaXRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VibWl0SW5wdXRU
eXBlOjpoYW5kbGVET01BY3RpdmF0ZUV2ZW50KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQ6OndvdWxkVGFpbnRPcmlnaW4pOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpDYW52YXNTdHlsZSk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiZWdpblF1ZXJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEluZGV4ZWRQYXJhbWV0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmdldFBhcmFtZXRlcik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFBhcmFtZXRlcik6CisgICAgICAgICogaHRtbC9w
YXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZVJlcGFyZW50VGFzayk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlVGFrZUFsbENoaWxkcmVu
QW5kUmVwYXJlbnRUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRl
OjpkaXNwYXRjaERvY3VtZW50RWxlbWVudEF2YWlsYWJsZUlmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpmaW5kRm9zdGVyU2l0ZSk6CisgICAgICAgICog
aHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRv
a2VuUHJlbG9hZFNjYW5uZXI6OlN0YXJ0VGFnU2Nhbm5lcjo6cHJvY2Vzc0F0dHJpYnV0ZSk6Cisg
ICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlhTU0F1ZGl0b3JEZWxlZ2F0ZTo6Z2VuZXJhdGVWaW9sYXRpb25SZXBvcnQpOgorICAg
ICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRs
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudDo6
cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaEZpZWxkUmVzdWx0
c0J1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAqIGh0bWwvc2hh
ZG93L1RleHRQbGFjZWhvbGRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFBs
YWNlaG9sZGVyRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFBsYWNlaG9sZGVyRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3Rvcik6CisgICAgICAg
ICogaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OnVwZGF0ZUdlbmVyaWNDdWUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5iYW5kR2VuZXJpY1RleHRUcmFjazo6cmVtb3ZlR2VuZXJpY0N1ZSk6CisgICAg
ICAgICogaHRtbC90cmFjay9UZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRy
YWNrOjphZGRDdWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjphZGRSZWdpb24pOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2V0RW11bGF0ZWRNZWRpYSk6CisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6dHJ5TG9hZGluZ1JlZGlyZWN0UmVxdWVzdEZyb21BcHBsaWNhdGlvbkNhY2hlKToKKyAg
ICAgICAgKiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9y
bVN1Ym1pc3Npb246OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkVVJMKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9yVGhpc0ZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzY3JvbGxUb0ZyYWdtZW50V2l0aFBhcmVudEJvdW5kYXJ5
KToKKyAgICAgICAgKiBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6Okhpc3RvcnlDb250cm9sbGVyOjpyZXN0b3JlU2Nyb2xsUG9zaXRp
b25BbmRWaWV3U3RhdGUpOgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNw
cDoKKyAgICAgICAgKiBsb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OlN1YmZyYW1lTG9hZGVyOjpsb2FkT3JSZWRpcmVjdFN1YmZyYW1lKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICogcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250
cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmlubmVyV2lkdGggY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpyZXF1ZXN0SWRsZUNhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVdpbmRvdzo6Y2FuY2VsSWRsZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVdpbmRvdzo6bGFuZ3VhZ2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3c6OmRpc3BhdGNoTG9hZEV2ZW50KToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjp0cnlUb1VwZGF0ZURyb3Bw
ZWRJbWFnZVBsYWNlaG9sZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6
aW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzQXRDYXJldCk6CisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQ29udHJvbGxlcjo6ZmluYWxpemVEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcik6CisgICAg
ICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9kZVRvU2Vs
ZWN0T25Nb3VzZURvd25Gb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmV4cGFuZFNlbGVjdGlv
blRvUmVzcGVjdFNlbGVjdE9uTW91c2VEb3duKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6Y2FuTW91c2VEb3duU3RhcnRTZWxlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OnNjaGVkdWxlU2Nyb2xsRXZlbnQpOgorICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Nyb2xsVG9GcmFnbWVudElu
dGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Nyb2xsVG9Gb2N1c2VkRWxl
bWVudEludGVybmFsKToKKyAgICAgICAgKiBwYWdlL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6c2VsZWN0aW9uUXVh
ZHNEaWRDaGFuZ2UpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyZXBsYWNlUmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJlcGxhY2VSYW5nZXNX
aXRoVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRFZGl0YWJsZVJlZ2lvbkVuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZWRpdGFibGVFbGVtZW50c0luUmVjdCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpkb0FmdGVyVXBkYXRlUmVuZGVyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmRpZEZpbmlzaExvYWRpbmdJbWFnZUZvckVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXBkYXRlRWxlbWVudHNXaXRoVGV4dFJlY29n
bml0aW9uUmVzdWx0cyk6CisgICAgICAgICogcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDb2xvclNhbXBsZXI6OnNhbXBsZVRvcCk6CisgICAgICAgICog
cGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRl
ckxvY2tDb250cm9sbGVyOjplbnF1ZXVlRXZlbnQpOgorICAgICAgICAqIHBhZ2UvVGV4dEluZGlj
YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFu
Z2UpOgorICAgICAgICAqIHBhZ2UvVW5kb01hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VW5kb01hbmFnZXI6OmFkZEl0ZW0pOgorICAgICAgICAqIHBhZ2UvaW9zL0V2ZW50SGFuZGxlcklP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6Zm9jdXNEb2N1bWVudFZpZXcp
OgorICAgICAgICAqIHBhZ2UvaW9zL0ZyYW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6bm9k
ZUlzTW91c2VGb2N1c2FibGUpOgorICAgICAgICAqIHBhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6Zm9jdXNEb2N1bWVudFZpZXcpOgor
ICAgICAgICAqIHBhZ2UvbWFjL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXJNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZU92ZXJsYXlDb250cm9sbGVyOjp1cGRhdGVEYXRhRGV0ZWN0b3JIaWdo
bGlnaHRzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3ZlcmxheUNvbnRyb2xsZXI6OnBsYXRm
b3JtSGFuZGxlTW91c2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJsYXlDb250
cm9sbGVyOjpoYW5kbGVEYXRhRGV0ZWN0b3JBY3Rpb24pOgorICAgICAgICAqIHBhZ2UvbWFjL1Nl
cnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092
ZXJsYXlDb250cm9sbGVyOjpidWlsZFNlbGVjdGlvbkhpZ2hsaWdodCk6CisgICAgICAgICogcGxh
dGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVi
b2FyZEN1c3RvbURhdGE6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNldExvZ2dlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0TG9nZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0TG9nZ2VyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJz
ZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qzo6c2V0TG9nZ2VyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c2V0TG9nZ2VyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjptYWtlV2ViS2l0VHJhY2spOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJFbGVtZW50OjpzZWxlY3Rpb25Qc2V1ZG9TdHlsZSBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVJT1M6OnBhaW50TWV0ZXIpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZUV2ZW50RGlzcGF0
Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNw
YXRjaFNlc3Npb25TdG9yYWdlRXZlbnRzVG9GcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3Rv
cmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHNUb0ZyYW1lcyk6
CisgICAgICAgICogc3R5bGUvU3R5bGVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6U2NvcGU6Om1ha2VSZXNvbHZlclNoYXJpbmdLZXkpOgorICAgICAgICAqIHN2Zy9TVkdBRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFu
ZGxlcik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudEJhc2U6OnN0YXJ0QW5pbWF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50QmFzZTo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1
ZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpoYXNWYWxpZEF0dHJpYnV0ZVR5cGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OnN0YXJ0
QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Ojpj
YWxjdWxhdGVBbmltYXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rp
b25FbGVtZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCk6CisgICAgICAgICogc3ZnL1NWR0RvY3Vt
ZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lv
bnM6OnRha2VFbGVtZW50RnJvbVBlbmRpbmdSZXNvdXJjZXNGb3JSZW1vdmFsTWFwKToKKyAgICAg
ICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojpy
ZW1vdmVFbGVtZW50UmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnNl
dENvcnJlc3BvbmRpbmdFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnJl
c29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojpjb21wdXRl
ZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnVwZGF0ZVJlbGF0aXZlTGVu
Z3Roc0luZm9ybWF0aW9uKToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6
YnVpbGQgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAg
ICAqIHN2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxp
Z2h0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RUxpZ2h0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVj
dWxhckxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVNwZWN1bGFy
TGlnaHRpbmdFbGVtZW50OjpidWlsZCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnZhbGlk
YXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRGYWNlRWxlbWVudDo6cmVidWlsZEZv
bnRGYWNlKToKKyAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KToKKyAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZvbnRGYWNlVXJpRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAg
KiBzdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAqIHN2Zy9T
VkdMZW5ndGhDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aENvbnRleHQ6
OmRldGVybWluZVZpZXdwb3J0IGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpmcmFtZUZvckN1cnJlbnRTY2Fs
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpkZXNlbGVjdEFsbCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50Ojpsb2NhbENvb3JkaW5hdGVTcGFjZVRy
YW5zZm9ybSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpnZXRFbGVt
ZW50QnlJZCk6CisgICAgICAgICogc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdTdHlsZUVsZW1lbnQ6OnNldERpc2FibGVkKToKKyAgICAgICAgKiBzdmcvU1ZH
VFJlZkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFJlZkVsZW1lbnQ6OmRldGFj
aFRhcmdldCk6CisgICAgICAgICogc3ZnL1NWR1RyYW5zZm9ybUxpc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVHJhbnNmb3JtTGlzdDo6Y29uc29saWRhdGUpOgorICAgICAgICAqIHN2Zy9T
VkdVc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnRyYW5z
ZmVyU2l6ZUF0dHJpYnV0ZXNUb1RhcmdldENsb25lIGNvbnN0KToKKyAgICAgICAgKiBzdmcvYW5p
bWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVt
ZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxl
bWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVs
ZW1lbnQ6OmNvbm5lY3RDb25kaXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVt
ZW50OjpkaXNjb25uZWN0Q29uZGl0aW9ucyk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpzZXRDb250YWluZXJTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ltYWdlOjpyZXBvcnRBcHByb3hpbWF0ZU1lbW9yeUNvc3QgY29uc3QpOgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVJ
bWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9T
VkdQcm9wZXJ0eUFuaW1hdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eUFuaW1h
dG9yOjpjb21wdXRlQ1NTUHJvcGVydHlWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQcm9wZXJ0eUFuaW1hdG9yOjpjb21wdXRlSW5oZXJpdGVkQ1NTUHJvcGVydHlWYWx1ZSBjb25z
dCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpjaGFuZ2VTZWxlY3Rpb25MaXN0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OmNoYW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5nKToKKwogMjAyMS0wOS0yMCAgUm9z
cyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCBidWlsZCBmaXggZm9yIFdpbkNhaXJvIHdpdGggRU5BQkxFX0VYUEVSSU1FTlRBTF9GRUFUVVJF
UyBvZmYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50SW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludEltYWdlLmNwcAppbmRleCBlMzAw
NzdmNWFiYTAwN2M5NzRjZDBkNzg5YWYyNTg2NWIwZmY2YTY2Li43ZTczM2IzZWRkZTRkZjljZTIz
ODI5Nzk2ZDNkZDZiZWVlYmI1NmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1
c3RvbVBhaW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRJ
bWFnZS5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjbGVhckVs
ZW1lbnQoKSBvdmVycmlkZSB7IH0KIAotICAgIFJlZlB0cjxDU1NTdHlsZVZhbHVlPiBnZXQoY29u
c3QgU3RyaW5nJiBwcm9wZXJ0eSkgY29uc3QgZmluYWwgeyByZXR1cm4gbWFrZVJlZlB0cihtX21h
cC5nZXQocHJvcGVydHkpKTsgfQorICAgIFJlZlB0cjxDU1NTdHlsZVZhbHVlPiBnZXQoY29uc3Qg
U3RyaW5nJiBwcm9wZXJ0eSkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9tYXAuZ2V0KHByb3BlcnR5
KTsgfQogCiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxDU1NTdHlsZVZhbHVlPj4gbV9tYXA7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EaXJlY3RvcnlGaWxlTGlzdENy
ZWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EaXJlY3RvcnlGaWxlTGlzdENyZWF0b3Iu
Y3BwCmluZGV4IDEwOGEyODA4YTM0OGY0OGI1ZGI2YTY1OTI3ZWFiMzc0YWJkZTBmMDAuLjlkM2Rh
MTg1M2MzYTYzMjBmZWIzMTk3NTE2MmU0MzVhZTkzZmZkZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5jcHAKQEAgLTEwNSw3ICsxMDUsNyBA
QCBEaXJlY3RvcnlGaWxlTGlzdENyZWF0b3I6OkRpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvcihDb21w
bGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpbwogdm9pZCBEaXJlY3RvcnlGaWxlTGlzdENyZWF0b3I6
OnN0YXJ0KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUlu
Zm8+JiBwYXRocykKIHsKICAgICAvLyBSZXNvbHZlIGRpcmVjdG9yaWVzIG9uIGEgYmFja2dyb3Vu
ZCB0aHJlYWQgdG8gYXZvaWQgYmxvY2tpbmcgdGhlIG1haW4gdGhyZWFkLgotICAgIG1fd29ya1F1
ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGRvY3Vt
ZW50ID0gbWFrZVJlZlB0cihkb2N1bWVudCksIHBhdGhzID0gY3Jvc3NUaHJlYWRDb3B5KHBhdGhz
KV0oKSBtdXRhYmxlIHsKKyAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBkb2N1bWVudCA9IFJlZlB0ciB7IGRvY3VtZW50IH0sIHBh
dGhzID0gY3Jvc3NUaHJlYWRDb3B5KHBhdGhzKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBm
aWxlcyA9IGdhdGhlckZpbGVJbmZvcm1hdGlvbihwYXRocyk7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBkb2N1
bWVudCA9IFdURk1vdmUoZG9jdW1lbnQpLCBmaWxlcyA9IGNyb3NzVGhyZWFkQ29weShmaWxlcyld
KCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0
ZDo6ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFuZGxlciwgbnVsbHB0cikpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCmluZGV4IGY5ZDE0MmVkYmI4YzY4Zjhm
N2UyZWNhYjlmMDgxMmMwMDkzNWMyYWIuLjc1MjMwMTdiYTcyOTQwNTYzYjc1ZjQ2NmE2OGVkMWNj
YjNkZWU4YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQu
Y3BwCkBAIC0yOTksNyArMjk5LDcgQEAgYm9vbCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6
bG9hZERvY3VtZW50VGVtcGxhdGUoKQogCiAgICAgYXV0byYgZG9jdW1lbnQgPSAqdGhpcy0+ZG9j
dW1lbnQoKTsKIAotICAgIGF1dG8gZm91bmRFbGVtZW50ID0gbWFrZVJlZlB0cihkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChTdHJpbmcoImZ0cERpcmVjdG9yeVRhYmxlIl9zKSkpOworICAgIFJlZlB0
ciBmb3VuZEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChTdHJpbmdWaWV3IHsgImZ0
cERpcmVjdG9yeVRhYmxlIl9zIH0pOwogICAgIGlmICghZm91bmRFbGVtZW50KQogICAgICAgICBM
T0dfRVJST1IoIlVuYWJsZSB0byBmaW5kIGVsZW1lbnQgYnkgaWQgXCJmdHBEaXJlY3RvcnlUYWJs
ZVwiIGluIHRoZSB0ZW1wbGF0ZSBkb2N1bWVudC4iKTsKICAgICBlbHNlIGlmICghaXM8SFRNTFRh
YmxlRWxlbWVudD4oZm91bmRFbGVtZW50KSkKQEAgLTMxNCw3ICszMTQsNyBAQCBib29sIEZUUERp
cmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSgpCiAKICAgICAvLyBJ
ZiB3ZSBkaWRuJ3QgZmluZCB0aGUgdGFibGUgZWxlbWVudCwgbGV0cyB0cnkgdG8gYXBwZW5kIG91
ciBvd24gdG8gdGhlIGJvZHkuCiAgICAgLy8gSWYgdGhhdCBmYWlscyBmb3Igc29tZSByZWFzb24s
IGNyYW0gaXQgb24gdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQgYXMgYSBsYXN0IGRpdGNoIGVmZm9y
dC4KLSAgICBpZiAoYXV0byBib2R5ID0gbWFrZVJlZlB0cihkb2N1bWVudC5ib2R5T3JGcmFtZXNl
dCgpKSkKKyAgICBpZiAoUmVmUHRyIGJvZHkgPSBkb2N1bWVudC5ib2R5T3JGcmFtZXNldCgpKQog
ICAgICAgICBib2R5LT5hcHBlbmRDaGlsZCgqbV90YWJsZUVsZW1lbnQpOwogICAgIGVsc2UKICAg
ICAgICAgZG9jdW1lbnQuYXBwZW5kQ2hpbGQoKm1fdGFibGVFbGVtZW50KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IGJiYzBmMTIyYjUzZjVmMjMzM2ZiNjY2Y2E1ZWIz
YWIzYWZjM2FkMzkuLmUwZmY1Mzk2M2I1NzBjYjFkZmZkMzA0OTE5Y2RhZjdjNGExMzc0MDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIHZv
aWQgRmlsZUlucHV0VHlwZTo6cmVzdG9yZUZvcm1Db250cm9sU3RhdGUoY29uc3QgRm9ybUNvbnRy
b2xTdGF0ZSYgc3RhdGUpCiBib29sIEZpbGVJbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRhKERPTUZv
cm1EYXRhJiBmb3JtRGF0YSwgYm9vbCBtdWx0aXBhcnQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGVs
ZW1lbnQoKSk7Ci0gICAgYXV0byBmaWxlTGlzdCA9IG1ha2VSZWZQdHIoZWxlbWVudCgpLT5maWxl
cygpKTsKKyAgICBSZWZQdHIgZmlsZUxpc3QgPSBlbGVtZW50KCktPmZpbGVzKCk7CiAgICAgQVNT
RVJUKGZpbGVMaXN0KTsKIAogICAgIGF1dG8gbmFtZSA9IGVsZW1lbnQoKS0+bmFtZSgpOwpAQCAt
MjkxLDcgKzI5MSw3IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6ZGlzYWJsZWRTdGF0ZUNoYW5nZWQo
KQogICAgIGlmICghcm9vdCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGlmIChhdXRvIGJ1
dHRvbiA9IG1ha2VSZWZQdHIoY2hpbGRyZW5PZlR5cGU8VXBsb2FkQnV0dG9uRWxlbWVudD4oKnJv
b3QpLmZpcnN0KCkpKQorICAgIGlmIChSZWZQdHIgYnV0dG9uID0gY2hpbGRyZW5PZlR5cGU8VXBs
b2FkQnV0dG9uRWxlbWVudD4oKnJvb3QpLmZpcnN0KCkpCiAgICAgICAgIGJ1dHRvbi0+c2V0Qm9v
bGVhbkF0dHJpYnV0ZShkaXNhYmxlZEF0dHIsIGVsZW1lbnQoKS0+aXNEaXNhYmxlZEZvcm1Db250
cm9sKCkpOwogfQogCkBAIC0zMDEsNyArMzAxLDcgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjphdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiAgICAgICAgIGlmIChhdXRv
KiBlbGVtZW50ID0gdGhpcy0+ZWxlbWVudCgpKSB7CiAgICAgICAgICAgICBBU1NFUlQoZWxlbWVu
dC0+c2hhZG93Um9vdCgpKTsKICAgICAgICAgICAgIGlmIChhdXRvIHJvb3QgPSBlbGVtZW50LT51
c2VyQWdlbnRTaGFkb3dSb290KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBidXR0b24g
PSBtYWtlUmVmUHRyKGNoaWxkcmVuT2ZUeXBlPFVwbG9hZEJ1dHRvbkVsZW1lbnQ+KCpyb290KS5m
aXJzdCgpKSkKKyAgICAgICAgICAgICAgICBpZiAoUmVmUHRyIGJ1dHRvbiA9IGNoaWxkcmVuT2ZU
eXBlPFVwbG9hZEJ1dHRvbkVsZW1lbnQ+KCpyb290KS5maXJzdCgpKQogICAgICAgICAgICAgICAg
ICAgICBidXR0b24tPnNldFZhbHVlKGVsZW1lbnQtPm11bHRpcGxlKCkgPyBmaWxlQnV0dG9uQ2hv
b3NlTXVsdGlwbGVGaWxlc0xhYmVsKCkgOiBmaWxlQnV0dG9uQ2hvb3NlRmlsZUxhYmVsKCkpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00MzYsNyArNDM2LDcgQEAgdm9pZCBGaWxlSW5w
dXRUeXBlOjpmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHBh
dGhzLCBjb25zdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9kaXJlY3RvcnlGaWxl
TGlzdENyZWF0b3IgPSBEaXJlY3RvcnlGaWxlTGlzdENyZWF0b3I6OmNyZWF0ZShbdGhpcywgd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIGljb24gPSBtYWtlUmVmUHRyKGljb24pXShSZWY8
RmlsZUxpc3Q+JiYgZmlsZUxpc3QpIG11dGFibGUgeworICAgIG1fZGlyZWN0b3J5RmlsZUxpc3RD
cmVhdG9yID0gRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yOjpjcmVhdGUoW3RoaXMsIHdlYWtUaGlz
ID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBpY29uID0gUmVmUHRyIHsgaWNvbiB9XShSZWY8RmlsZUxp
c3Q+JiYgZmlsZUxpc3QpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCmluZGV4IDMwYjM1Nzk0ODRlMTQ1ZDZl
MDA3NmU3ZmVhMDI2ZWE4OGZjZWYyMWUuLjVlNDFiNDkyNDE2YTM5NDBlZDZkZTEzMTJhMzE1MzNl
ZGQ4MTc5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAK
QEAgLTEyMiw3ICsxMjIsNyBAQCBib29sIEhUTUxEZXRhaWxzRWxlbWVudDo6aXNBY3RpdmVTdW1t
YXJ5KGNvbnN0IEhUTUxTdW1tYXJ5RWxlbWVudCYgc3VtbWFyeSkgY29ucwogICAgIGlmIChzdW1t
YXJ5LnBhcmVudE5vZGUoKSAhPSB0aGlzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBh
dXRvIHNsb3QgPSBtYWtlUmVmUHRyKHNoYWRvd1Jvb3QoKS0+ZmluZEFzc2lnbmVkU2xvdChzdW1t
YXJ5KSk7CisgICAgUmVmUHRyIHNsb3QgPSBzaGFkb3dSb290KCktPmZpbmRBc3NpZ25lZFNsb3Qo
c3VtbWFyeSk7CiAgICAgaWYgKCFzbG90KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0
dXJuIHNsb3QgPT0gbV9zdW1tYXJ5U2xvdDsKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIEhUTUxE
ZXRhaWxzRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QgQXRvbVN0cgogICAgICAgICBib29sIG9sZFZhbHVlID0gbV9pc09wZW47CiAgICAgICAg
IG1faXNPcGVuID0gIXZhbHVlLmlzTnVsbCgpOwogICAgICAgICBpZiAob2xkVmFsdWUgIT0gbV9p
c09wZW4pIHsKLSAgICAgICAgICAgIGF1dG8gcm9vdCA9IG1ha2VSZWZQdHIoc2hhZG93Um9vdCgp
KTsKKyAgICAgICAgICAgIFJlZlB0ciByb290ID0gc2hhZG93Um9vdCgpOwogICAgICAgICAgICAg
QVNTRVJUKHJvb3QpOwogICAgICAgICAgICAgaWYgKG1faXNPcGVuKQogICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZENoaWxkKCptX2RlZmF1bHRTbG90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERv
Y3VtZW50LmNwcAppbmRleCAwNzNiMmJjMzllNDBiYTBlZmRkOTY5YjY3NDZmMjU1YWI3ZmNiZDRk
Li40MTYzMzBjYjY0MDc1MDI2MWJmYTY0NTc3NDM0YWQyYjFjZjdkY2QzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRG9jdW1lbnQuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgc3RkOjpvcHRpb25hbDxW
YXJpYW50PFJlZlB0cjxXaW5kb3dQcm94eT4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxD
b2xsZWN0aW8KIAogICAgIGF1dG8mIGVsZW1lbnQgPSAqZG9jdW1lbnROYW1lZEl0ZW0oKm5hbWUu
aW1wbCgpKTsKICAgICBpZiAoVU5MSUtFTFkoaXM8SFRNTElGcmFtZUVsZW1lbnQ+KGVsZW1lbnQp
KSkgewotICAgICAgICBpZiAoYXV0byBkb21XaW5kb3cgPSBtYWtlUmVmUHRyKGRvd25jYXN0PEhU
TUxJRnJhbWVFbGVtZW50PihlbGVtZW50KS5jb250ZW50V2luZG93KCkpKQorICAgICAgICBpZiAo
UmVmUHRyIGRvbVdpbmRvdyA9IGRvd25jYXN0PEhUTUxJRnJhbWVFbGVtZW50PihlbGVtZW50KS5j
b250ZW50V2luZG93KCkpCiAgICAgICAgICAgICByZXR1cm4gVmFyaWFudDxSZWZQdHI8V2luZG93
UHJveHk+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+IHsgV1RGTW92
ZShkb21XaW5kb3cpIH07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmlu
ZGV4IDg5Yjk5ZTRlNjNkNzJmOGE3OWRkYjFhZTM5YmE5Y2IxYWUwNTEzOTMuLjY2ODljYTcxOTRi
NjUwNTllN2Q2ZjU5ZGI1Y2VjYTY2ZjliNGUzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuY3BwCkBAIC00NTIsNyArNDUyLDcgQEAgTm9kZTo6RWRpdGFiaWxpdHkgSFRNTEVsZW1lbnQ6
OmVkaXRhYmlsaXR5RnJvbUNvbnRlbnRFZGl0YWJsZUF0dHIoY29uc3QgTm9kZSYgbm8KICAgICAg
ICAgfQogICAgIH0KIAotICAgIGF1dG8gY29udGFpbmluZ1NoYWRvd1Jvb3QgPSBtYWtlUmVmUHRy
KG5vZGUuY29udGFpbmluZ1NoYWRvd1Jvb3QoKSk7CisgICAgUmVmUHRyIGNvbnRhaW5pbmdTaGFk
b3dSb290IHsgbm9kZS5jb250YWluaW5nU2hhZG93Um9vdCgpIH07CiAgICAgaWYgKGNvbnRhaW5p
bmdTaGFkb3dSb290ICYmIGNvbnRhaW5pbmdTaGFkb3dSb290LT5tb2RlKCkgPT0gU2hhZG93Um9v
dE1vZGU6OlVzZXJBZ2VudCkKICAgICAgICAgcmV0dXJuIEVkaXRhYmlsaXR5OjpSZWFkT25seTsK
IApAQCAtMTI3NSw3ICsxMjc1LDcgQEAgc3RhdGljIFJlZlB0cjxIVE1MRWxlbWVudD4gaW1hZ2VP
dmVybGF5SG9zdChjb25zdCBOb2RlJiBub2RlKQogICAgIGlmICghaXM8SFRNTEVsZW1lbnQ+KGhv
c3QpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gZWxlbWVudCA9IG1ha2VS
ZWZQdHIoZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCpob3N0KSk7CisgICAgUmVmUHRyIGVsZW1lbnQg
eyAmZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCpob3N0KSB9OwogICAgIHJldHVybiBlbGVtZW50LT5o
YXNJbWFnZU92ZXJsYXkoKSA/IGVsZW1lbnQgOiBudWxscHRyOwogfQogCkBAIC0xMjg2LDcgKzEy
ODYsNyBAQCBib29sIEhUTUxFbGVtZW50Ojppc0ltYWdlT3ZlcmxheURhdGFEZXRlY3RvclJlc3Vs
dCgpIGNvbnN0CiAKIGJvb2wgSFRNTEVsZW1lbnQ6OmlzSW5zaWRlSW1hZ2VPdmVybGF5KGNvbnN0
IFNpbXBsZVJhbmdlJiByYW5nZSkKIHsKLSAgICBhdXRvIGNvbW1vbkFuY2VzdG9yID0gbWFrZVJl
ZlB0cihjb21tb25JbmNsdXNpdmVBbmNlc3RvcjxDb21wb3NlZFRyZWU+KHJhbmdlKSk7CisgICAg
UmVmUHRyIGNvbW1vbkFuY2VzdG9yID0gY29tbW9uSW5jbHVzaXZlQW5jZXN0b3I8Q29tcG9zZWRU
cmVlPihyYW5nZSk7CiAgICAgaWYgKCFjb21tb25BbmNlc3RvcikKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCkBAIC0xNTg2LDcgKzE1ODYsNyBAQCB2b2lkIEhUTUxFbGVtZW50Ojp1cGRhdGVXaXRo
VGV4dFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYgcgogICAg
IH0KICNlbmRpZiAvLyBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCiAKLSAgICBpZiAoYXV0byBmcmFt
ZSA9IG1ha2VSZWZQdHIoZG9jdW1lbnQoKS5mcmFtZSgpKSkKKyAgICBpZiAoUmVmUHRyIGZyYW1l
ID0gZG9jdW1lbnQoKS5mcmFtZSgpKQogICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuc2No
ZWR1bGVDdXJzb3JVcGRhdGUoKTsKIAogICAgIGlmIChjYWNoZVRleHRSZWNvZ25pdGlvblJlc3Vs
dHMgPT0gQ2FjaGVUZXh0UmVjb2duaXRpb25SZXN1bHRzOjpZZXMpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDczNmY4MWM5NzAwNmEw
NTkwYWJlMjZlODRkMGNlZmYyYjUxMzViMTguLmEyNjYyYTY1MGYyY2Q4ODQ2NjIzZDBjNjEwODc2
NzA3ZWJjYmQzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250
cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmNwcApAQCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVu
dDo6ZGlkQXR0YWNoUmVuZGVyZXJzKCkKICAgICAgICAgc2V0QXV0b2ZvY3VzZWQoKTsKIAogICAg
ICAgICBSZWZQdHI8SFRNTEZvcm1Db250cm9sRWxlbWVudD4gZWxlbWVudCA9IHRoaXM7Ci0gICAg
ICAgIGF1dG8gZnJhbWVWaWV3ID0gbWFrZVJlZlB0cihkb2N1bWVudCgpLnZpZXcoKSk7CisgICAg
ICAgIFJlZlB0ciBmcmFtZVZpZXcgPSBkb2N1bWVudCgpLnZpZXcoKTsKICAgICAgICAgaWYgKGZy
YW1lVmlldyAmJiBmcmFtZVZpZXctPmxheW91dENvbnRleHQoKS5pc0luTGF5b3V0KCkpIHsKICAg
ICAgICAgICAgIGZyYW1lVmlldy0+cXVldWVQb3N0TGF5b3V0Q2FsbGJhY2soW2VsZW1lbnRdIHsK
ICAgICAgICAgICAgICAgICBlbGVtZW50LT5mb2N1cyh7IFNlbGVjdGlvblJlc3RvcmF0aW9uTW9k
ZTo6UGxhY2VDYXJldEF0U3RhcnQgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCmluZGV4IGFiNmJkZDQ4ZDEyMjM3YjUyYWViZWM4
N2U5ZWIwZGQxOTcyNTc1OWEuLmUzNWRiMDA5NTJlMTZkNmZiMzU5YzMzYmIxZDZhMzNmNzk2ZDll
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb24uY3BwCkBAIC02OSw3ICs2OSw3IEBAIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8
UmFkaW9Ob2RlTGlzdD4sIFJlZlB0cjxFbGVtZW50Pj4+IEhUTUxGb3JtQ29udHJvbHNDCiBzdGF0
aWMgdW5zaWduZWQgZmluZEZvcm1Bc3NvY2lhdGVkRWxlbWVudChjb25zdCBWZWN0b3I8V2Vha1B0
cjxIVE1MRWxlbWVudD4+JiBlbGVtZW50cywgY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZWxlbWVudHMuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgYXV0byBjdXJyZW50RWxlbWVudCA9IG1ha2VSZWZQdHIoZWxlbWVudHNbaV0uZ2V0KCkpOwor
ICAgICAgICBSZWZQdHIgY3VycmVudEVsZW1lbnQgPSBlbGVtZW50c1tpXS5nZXQoKTsKICAgICAg
ICAgQVNTRVJUKGN1cnJlbnRFbGVtZW50KTsKICAgICAgICAgYXV0byogYXNzb2NpYXRlZEVsZW1l
bnQgPSBjdXJyZW50RWxlbWVudC0+YXNGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKTsKICAgICAgICAg
QVNTRVJUKGFzc29jaWF0ZWRFbGVtZW50KTsKQEAgLTkyLDcgKzkyLDcgQEAgSFRNTEVsZW1lbnQq
IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpjdXN0b21FbGVtZW50QWZ0ZXIoRWxlbWVudCog
Y3VycmVudCkgY28KICAgICAgICAgc3RhcnQgPSBmaW5kRm9ybUFzc29jaWF0ZWRFbGVtZW50KGVs
ZW1lbnRzLCAqY3VycmVudCkgKyAxOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gc3RhcnQ7IGkg
PCBlbGVtZW50cy5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvIGVsZW1lbnQgPSBtYWtlUmVm
UHRyKGVsZW1lbnRzW2ldLmdldCgpKTsKKyAgICAgICAgUmVmUHRyIGVsZW1lbnQgPSBlbGVtZW50
c1tpXS5nZXQoKTsKICAgICAgICAgQVNTRVJUKGVsZW1lbnQpOwogICAgICAgICBBU1NFUlQoZWxl
bWVudC0+YXNGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKSk7CiAgICAgICAgIGlmIChlbGVtZW50LT5h
c0Zvcm1Bc3NvY2lhdGVkRWxlbWVudCgpLT5pc0VudW1lcmF0YWJsZSgpKSB7CkBAIC0xMjAsNyAr
MTIwLDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVt
ZW50Q2FjaGUoKSBjb25zdAogCiAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJl
YWQgc2NyaXB0RGlzYWxsb3dlZFNjb3BlOwogICAgIGZvciAoYXV0byYgd2Vha0VsZW1lbnQgOiBv
d25lck5vZGUoKS51bnNhZmVBc3NvY2lhdGVkRWxlbWVudHMoKSkgewotICAgICAgICBhdXRvIGVs
ZW1lbnQgPSBtYWtlUmVmUHRyKHdlYWtFbGVtZW50LmdldCgpKTsKKyAgICAgICAgUmVmUHRyIGVs
ZW1lbnQgeyB3ZWFrRWxlbWVudC5nZXQoKSB9OwogICAgICAgICBBU1NFUlQoZWxlbWVudCk7CiAg
ICAgICAgIGF1dG8qIGFzc29jaWF0ZWRFbGVtZW50ID0gZWxlbWVudC0+YXNGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQoKTsKICAgICAgICAgQVNTRVJUKGFzc29jaWF0ZWRFbGVtZW50KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCA2NDk0M2ZmMmUxZmUxMzU4MjY1NWQ1
NWM0YjgzNTBkYmVmYjJkNWFiLi44OWRlYzVlODczZTk5NWJmYzJhZWE4ZjZlNzgyYzAxNWYwMTc5
ZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC05Myw3ICs5
Myw3IEBAIEhUTUxGb3JtRWxlbWVudDo6fkhUTUxGb3JtRWxlbWVudCgpCiAKICAgICBtX2RlZmF1
bHRCdXR0b24gPSBudWxscHRyOwogICAgIGZvciAoYXV0byYgd2Vha0VsZW1lbnQgOiBtX2Fzc29j
aWF0ZWRFbGVtZW50cykgewotICAgICAgICBhdXRvIGVsZW1lbnQgPSBtYWtlUmVmUHRyKHdlYWtF
bGVtZW50LmdldCgpKTsKKyAgICAgICAgUmVmUHRyIGVsZW1lbnQgeyB3ZWFrRWxlbWVudC5nZXQo
KSB9OwogICAgICAgICBBU1NFUlQoZWxlbWVudCk7CiAgICAgICAgIGF1dG8qIGFzc29jaWF0ZWRF
bGVtZW50ID0gZWxlbWVudC0+YXNGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKTsKICAgICAgICAgQVNT
RVJUKGFzc29jaWF0ZWRFbGVtZW50KTsKQEAgLTE1OSw3ICsxNTksNyBAQCB1bnNpZ25lZCBIVE1M
Rm9ybUVsZW1lbnQ6Omxlbmd0aCgpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gMDsK
ICAgICBmb3IgKGF1dG8mIHdlYWtFbGVtZW50IDogbV9hc3NvY2lhdGVkRWxlbWVudHMpIHsKLSAg
ICAgICAgYXV0byBlbGVtZW50ID0gbWFrZVJlZlB0cih3ZWFrRWxlbWVudC5nZXQoKSk7CisgICAg
ICAgIFJlZlB0ciBlbGVtZW50IHsgd2Vha0VsZW1lbnQuZ2V0KCkgfTsKICAgICAgICAgQVNTRVJU
KGVsZW1lbnQpOwogICAgICAgICBhdXRvKiBhc3NvY2lhdGVkRWxlbWVudCA9IGVsZW1lbnQtPmFz
Rm9ybUFzc29jaWF0ZWRFbGVtZW50KCk7CiAgICAgICAgIEFTU0VSVChhc3NvY2lhdGVkRWxlbWVu
dCk7CkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnN1Ym1pdElmUG9z
c2libGUoRXZlbnQqIGV2ZW50LCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBzdWIKIAogICAgIGJv
b2wgc2hvdWxkVmFsaWRhdGUgPSBkb2N1bWVudCgpLnBhZ2UoKSAmJiBkb2N1bWVudCgpLnBhZ2Uo
KS0+c2V0dGluZ3MoKS5pbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uRW5hYmxlZCgpICYmICFub1Zh
bGlkYXRlKCk7CiAgICAgaWYgKHNob3VsZFZhbGlkYXRlKSB7Ci0gICAgICAgIGF1dG8gc3VibWl0
RWxlbWVudCA9IG1ha2VSZWZQdHIoc3VibWl0dGVyID8gc3VibWl0dGVyIDogZmluZFN1Ym1pdHRl
cihldmVudCkpOworICAgICAgICBSZWZQdHIgc3VibWl0RWxlbWVudCA9IHN1Ym1pdHRlciA/IHN1
Ym1pdHRlciA6IGZpbmRTdWJtaXR0ZXIoZXZlbnQpOwogICAgICAgICBpZiAoc3VibWl0RWxlbWVu
dCAmJiBzdWJtaXRFbGVtZW50LT5mb3JtTm9WYWxpZGF0ZSgpKQogICAgICAgICAgICAgc2hvdWxk
VmFsaWRhdGUgPSBmYWxzZTsKICAgICB9CkBAIC0zNDEsNyArMzQxLDcgQEAgU3RyaW5nUGFpclZl
Y3RvciBIVE1MRm9ybUVsZW1lbnQ6OnRleHRGaWVsZFZhbHVlcygpIGNvbnN0CiAgICAgU3RyaW5n
UGFpclZlY3RvciByZXN1bHQ7CiAgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9h
c3NvY2lhdGVkRWxlbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIHdlYWtFbGVtZW50IDog
bV9hc3NvY2lhdGVkRWxlbWVudHMpIHsKLSAgICAgICAgYXV0byBlbGVtZW50ID0gbWFrZVJlZlB0
cih3ZWFrRWxlbWVudC5nZXQoKSk7CisgICAgICAgIFJlZlB0ciBlbGVtZW50IHsgd2Vha0VsZW1l
bnQuZ2V0KCkgfTsKICAgICAgICAgaWYgKCFpczxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBhdXRvJiBpbnB1dCA9IGRvd25jYXN0PEhU
TUxJbnB1dEVsZW1lbnQ+KCplbGVtZW50KTsKQEAgLTcxNiw3ICs3MTYsNyBAQCBTdHJpbmcgSFRN
TEZvcm1FbGVtZW50Ojp0YXJnZXQoKSBjb25zdAogCiBTdHJpbmcgSFRNTEZvcm1FbGVtZW50Ojpl
ZmZlY3RpdmVUYXJnZXQoY29uc3QgRXZlbnQqIGV2ZW50LCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50
KiBvdmVycmlkZVN1Ym1pdHRlcikgY29uc3QKIHsKLSAgICBpZiAoYXV0byBzdWJtaXR0ZXIgPSBt
YWtlUmVmUHRyKG92ZXJyaWRlU3VibWl0dGVyID8gb3ZlcnJpZGVTdWJtaXR0ZXIgOiBmaW5kU3Vi
bWl0dGVyKGV2ZW50KSkpIHsKKyAgICBpZiAoUmVmUHRyIHN1Ym1pdHRlciA9IG92ZXJyaWRlU3Vi
bWl0dGVyID8gb3ZlcnJpZGVTdWJtaXR0ZXIgOiBmaW5kU3VibWl0dGVyKGV2ZW50KSkgewogICAg
ICAgICBhdXRvIHRhcmdldFZhbHVlID0gc3VibWl0dGVyLT5hdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKGZvcm10YXJnZXRBdHRyKTsKICAgICAgICAgaWYgKCF0YXJnZXRWYWx1ZS5pc051
bGwoKSkKICAgICAgICAgICAgIHJldHVybiB0YXJnZXRWYWx1ZTsKQEAgLTgzOCw3ICs4MzgsNyBA
QCBSZWZQdHI8SFRNTEVsZW1lbnQ+IEhUTUxGb3JtRWxlbWVudDo6ZWxlbWVudEZyb21QYXN0TmFt
ZXNNYXAoY29uc3QgQXRvbVN0cmluZyYgcAogICAgIGF1dG8gd2Vha0VsZW1lbnQgPSBtX3Bhc3RO
YW1lc01hcC5nZXQocGFzdE5hbWUpOwogICAgIGlmICghd2Vha0VsZW1lbnQpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIGF1dG8gZWxlbWVudCA9IG1ha2VSZWZQdHIod2Vha0VsZW1lbnQu
Z2V0KCkpOworICAgIFJlZlB0ciBlbGVtZW50IHsgd2Vha0VsZW1lbnQuZ2V0KCkgfTsKICNpZiBB
U1NFUlRfRU5BQkxFRAogICAgIGFzc2VydEl0ZW1DYW5CZUluUGFzdE5hbWVzTWFwKGVsZW1lbnQt
PmFzRm9ybU5hbWVkSXRlbSgpKTsKICNlbmRpZgpAQCAtOTMwLDcgKzkzMCw3IEBAIGNvbnN0IFZl
Y3RvcjxXZWFrUHRyPEhUTUxFbGVtZW50Pj4mIEhUTUxGb3JtRWxlbWVudDo6dW5zYWZlQXNzb2Np
YXRlZEVsZW1lbnRzKCkKIFZlY3RvcjxSZWY8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Pj4gSFRNTEZv
cm1FbGVtZW50Ojpjb3B5QXNzb2NpYXRlZEVsZW1lbnRzVmVjdG9yKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gV1RGOjptYXAobV9hc3NvY2lhdGVkRWxlbWVudHMsIFtdIChhdXRvJiB3ZWFrRWxlbWVu
dCkgewotICAgICAgICBhdXRvIGVsZW1lbnQgPSBtYWtlUmVmUHRyKHdlYWtFbGVtZW50LmdldCgp
KTsKKyAgICAgICAgUmVmUHRyIGVsZW1lbnQgeyB3ZWFrRWxlbWVudC5nZXQoKSB9OwogICAgICAg
ICBBU1NFUlQoZWxlbWVudCk7CiAgICAgICAgIGF1dG8qIGZvcm1Bc3NvY2lhdGVkRWxlbWVudCA9
IGVsZW1lbnQtPmFzRm9ybUFzc29jaWF0ZWRFbGVtZW50KCk7CiAgICAgICAgIEFTU0VSVChmb3Jt
QXNzb2NpYXRlZEVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVTZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxl
bWVudC5jcHAKaW5kZXggZGMzMjczMjgyMmRkOTA3YTc1MDE2YTdlMDE3ZWE1ZjhlNDg1NjRlMS4u
NjIzN2Y1MmVmYTZkZWM5ZmZmYTZjNzg3OTA1ZGUwNTgyMGNkZjQ3NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCkBAIC0yMjUsNyArMjI1LDcgQEAgdm9p
ZCBIVE1MRnJhbWVTZXRFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlIHJl
bW92YWxUeXBlLCBDb250YWluZXIKIAogV2luZG93UHJveHkqIEhUTUxGcmFtZVNldEVsZW1lbnQ6
Om5hbWVkSXRlbShjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQogewotICAgIGF1dG8gZnJhbWVFbGVt
ZW50ID0gbWFrZVJlZlB0cihjaGlsZHJlbigpLT5uYW1lZEl0ZW0obmFtZSkpOworICAgIFJlZlB0
ciBmcmFtZUVsZW1lbnQgPSBjaGlsZHJlbigpLT5uYW1lZEl0ZW0obmFtZSk7CiAgICAgaWYgKCFp
czxIVE1MRnJhbWVFbGVtZW50PihmcmFtZUVsZW1lbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1lbnQuY3BwCmluZGV4IDY1MTc0Yjg3
YzkwNDkxNWJlOWQ5ODdiMjYyNzM5NmMzNzhiNDM4MzEuLmI3ZWY1ZWZiNTMxOTMzNTkwYzg4YzMz
OTJlMTMyYjc0Nzc1YjNkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEh0
bWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIdG1sRWxlbWVudC5j
cHAKQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBIVE1MSHRtbEVsZW1lbnQ6Omluc2VydGVkQnlQYXJz
ZXIoKQogICAgIGlmICghZG9jdW1lbnQoKS5mcmFtZSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIGRvY3VtZW50TG9hZGVyID0gbWFrZVJlZlB0cihkb2N1bWVudCgpLmZyYW1lKCktPmxv
YWRlcigpLmRvY3VtZW50TG9hZGVyKCkpOworICAgIFJlZlB0ciBkb2N1bWVudExvYWRlciA9IGRv
Y3VtZW50KCkuZnJhbWUoKS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIWRv
Y3VtZW50TG9hZGVyKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bWFnZUVsZW1lbnQuY3BwCmluZGV4IDM1ZmViNWVlYWU1ZDQ0OTc0MTY1NzcyY2NjOTYwMzQ3NmZm
MzI1MjUuLmM4M2ZkMjlkMGJhY2MzZjIxMDIyZGFhNTg4ZjQ3YmQ5OTdmYWEzOWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtMTgyLDcgKzE4Miw3IEBAIHZv
aWQgSFRNTEltYWdlRWxlbWVudDo6c2V0QmVzdEZpdFVSTEFuZERQUkZyb21JbWFnZUNhbmRpZGF0
ZShjb25zdCBJbWFnZUNhbmRpZGF0CiAKIEltYWdlQ2FuZGlkYXRlIEhUTUxJbWFnZUVsZW1lbnQ6
OmJlc3RGaXRTb3VyY2VGcm9tUGljdHVyZUVsZW1lbnQoKQogewotICAgIGF1dG8gcGljdHVyZSA9
IG1ha2VSZWZQdHIocGljdHVyZUVsZW1lbnQoKSk7CisgICAgUmVmUHRyIHBpY3R1cmUgPSBwaWN0
dXJlRWxlbWVudCgpOwogICAgIGlmICghcGljdHVyZSkKICAgICAgICAgcmV0dXJuIHsgfTsKIApA
QCAtMjA2LDcgKzIwNiw3IEBAIEltYWdlQ2FuZGlkYXRlIEhUTUxJbWFnZUVsZW1lbnQ6OmJlc3RG
aXRTb3VyY2VGcm9tUGljdHVyZUVsZW1lbnQoKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICB9CiAKLSAgICAgICAgYXV0byBkb2N1bWVudEVsZW1lbnQgPSBtYWtlUmVmUHRyKGRv
Y3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCkpOworICAgICAgICBSZWZQdHIgZG9jdW1lbnRFbGVt
ZW50ID0gZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKTsKICAgICAgICAgTWVkaWFRdWVyeUV2
YWx1YXRvciBldmFsdWF0b3IgeyBkb2N1bWVudCgpLnByaW50aW5nKCkgPyAicHJpbnQiIDogInNj
cmVlbiIsIGRvY3VtZW50KCksIGRvY3VtZW50RWxlbWVudCA/IGRvY3VtZW50RWxlbWVudC0+Y29t
cHV0ZWRTdHlsZSgpIDogbnVsbHB0ciB9OwogICAgICAgICBhdXRvKiBxdWVyaWVzID0gc291cmNl
LnBhcnNlZE1lZGlhQXR0cmlidXRlKGRvY3VtZW50KCkpOwogICAgICAgICBMT0coTWVkaWFRdWVy
aWVzLCAiSFRNTEltYWdlRWxlbWVudCAlcCBiZXN0Rml0U291cmNlRnJvbVBpY3R1cmVFbGVtZW50
IGV2YWx1YXRpbmcgbWVkaWEgcXVlcmllcyIsIHRoaXMpOwpAQCAtMjMwLDcgKzIzMCw3IEBAIElt
YWdlQ2FuZGlkYXRlIEhUTUxJbWFnZUVsZW1lbnQ6OmJlc3RGaXRTb3VyY2VGcm9tUGljdHVyZUVs
ZW1lbnQoKQogCiB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmV2YWx1YXRlRHluYW1pY01lZGlhUXVl
cnlEZXBlbmRlbmNpZXMoKQogewotICAgIGF1dG8gZG9jdW1lbnRFbGVtZW50ID0gbWFrZVJlZlB0
cihkb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpKTsKKyAgICBSZWZQdHIgZG9jdW1lbnRFbGVt
ZW50ID0gZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKTsKICAgICBNZWRpYVF1ZXJ5RXZhbHVh
dG9yIGV2YWx1YXRvciB7IGRvY3VtZW50KCkucHJpbnRpbmcoKSA/ICJwcmludCIgOiAic2NyZWVu
IiwgZG9jdW1lbnQoKSwgZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50LT5jb21wdXRl
ZFN0eWxlKCkgOiBudWxscHRyIH07CiAKICAgICBpZiAoIWV2YWx1YXRvci5ldmFsdWF0ZUZvckNo
YW5nZXMobV9tZWRpYVF1ZXJ5RHluYW1pY1Jlc3VsdHMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKaW5kZXggYTgwMjUyZTg3ZDM2ZDFlNTQ4MTU0OWE4ZDY1YmRiZTk5
OTJiN2M1YS4uMWI5YjJlMWIyMjFlMGZlM2FhZjZhNWUyMDI5NDU5YjQwMzQzNzIzNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xMjQ3LDcgKzEyNDcsNyBA
QCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQmIGV2ZW50
KQogICAgICAgICAgICAgZGlzcGF0Y2hGb3JtQ29udHJvbENoYW5nZUV2ZW50KCk7CiAKICAgICAg
ICAgLy8gRm9ybSBtYXkgbmV2ZXIgaGF2ZSBiZWVuIHByZXNlbnQsIG9yIG1heSBoYXZlIGJlZW4g
ZGVzdHJveWVkIGJ5IGNvZGUgcmVzcG9uZGluZyB0byB0aGUgY2hhbmdlIGV2ZW50LgotICAgICAg
ICBpZiAoYXV0byBmb3JtRWxlbWVudCA9IG1ha2VSZWZQdHIoZm9ybSgpKSkKKyAgICAgICAgaWYg
KFJlZlB0ciBmb3JtRWxlbWVudCA9IGZvcm0oKSkKICAgICAgICAgICAgIGZvcm1FbGVtZW50LT5z
dWJtaXRJbXBsaWNpdGx5KGV2ZW50LCBjYW5UcmlnZ2VySW1wbGljaXRTdWJtaXNzaW9uKCkpOwog
CiAgICAgICAgIGV2ZW50LnNldERlZmF1bHRIYW5kbGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTGFiZWxFbGVtZW50LmNwcAppbmRleCBhZTU4MmIzYzI1ZmJmYjYyN2Q4NDQxNGUwNjMzZjFj
ZmVhOTY0NWRjLi4wYmFjMGJmOGViMmM0ZjFiMDk2Yzk3MDk4ZmRjYjBlZTJjY2EyZGM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5jcHAKQEAgLTQzLDcgKzQzLDcgQEAg
dXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogc3RhdGljIExhYmVsYWJsZUVsZW1lbnQqIGZp
cnN0RWxlbWVudFdpdGhJZElmTGFiZWxhYmxlKFRyZWVTY29wZSYgdHJlZVNjb3BlLCBjb25zdCBB
dG9tU3RyaW5nJiBpZCkKIHsKLSAgICBhdXRvIGVsZW1lbnQgPSBtYWtlUmVmUHRyKHRyZWVTY29w
ZS5nZXRFbGVtZW50QnlJZChpZCkpOworICAgIFJlZlB0ciBlbGVtZW50ID0gdHJlZVNjb3BlLmdl
dEVsZW1lbnRCeUlkKGlkKTsKICAgICBpZiAoIWlzPExhYmVsYWJsZUVsZW1lbnQ+KGVsZW1lbnQp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGVnZW5kRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMZWdl
bmRFbGVtZW50LmNwcAppbmRleCA2OWIzMDcwNGZhYjczODIwYzEzYWNkYzc2Y2JlYTE4ODRiNWJm
MGY3Li40MWVlMmE5OTA1MWNlNWJlNGMzNWU0NWM2YzZmYzI2MTZkZjUxMTAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcApAQCAtODUsNyArODUsNyBAQCBIVE1M
Rm9ybUVsZW1lbnQqIEhUTUxMZWdlbmRFbGVtZW50Ojpmb3JtKCkgY29uc3QKICAgICAvLyBBY2Nv
cmRpbmcgdG8gdGhlIHNwZWNpZmljYXRpb24sIElmIHRoZSBsZWdlbmQgaGFzIGEgZmllbGRzZXQg
ZWxlbWVudCBhcwogICAgIC8vIGl0cyBwYXJlbnQsIHRoZW4gdGhlIGZvcm0gYXR0cmlidXRlIG11
c3QgcmV0dXJuIHRoZSBzYW1lIHZhbHVlIGFzIHRoZQogICAgIC8vIGZvcm0gYXR0cmlidXRlIG9u
IHRoYXQgZmllbGRzZXQgZWxlbWVudC4gT3RoZXJ3aXNlLCBpdCBtdXN0IHJldHVybiBudWxsLgot
ICAgIGF1dG8gZmllbGRzZXQgPSBtYWtlUmVmUHRyKHBhcmVudE5vZGUoKSk7CisgICAgUmVmUHRy
IGZpZWxkc2V0ID0gcGFyZW50Tm9kZSgpOwogICAgIGlmICghaXM8SFRNTEZpZWxkU2V0RWxlbWVu
dD4oZmllbGRzZXQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gZG93bmNh
c3Q8SFRNTEZpZWxkU2V0RWxlbWVudD4oKmZpZWxkc2V0KS5mb3JtKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXggOTg3NzFkODIzMWI2NGNlYjI3NTE5YjdkYjUx
OTFiZGRlYmNmNzUwYS4uYTA1NGQzZWYyMTQzMzE0YTQxYzkxN2M1OGIwMTY0MDMzZDIxYzE0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApAQCAtNDM3LDcgKzQzNyw3
IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYg
aHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjCiAgICAgICAgIEFTU0VSVCghbV9zaGVldCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIoZG9jdW1l
bnQoKS5mcmFtZSgpKTsKKyAgICBSZWZQdHIgZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7CiAg
ICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC02MjEsNyArNjIxLDcgQEAgdm9p
ZCBIVE1MTGlua0VsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNl
dDxVUkw+JiB1cmxzKSBjb25zdAogICAgIC8vIEFwcGVuZCB0aGUgVVJMIG9mIHRoaXMgbGluayBl
bGVtZW50LgogICAgIGFkZFN1YnJlc291cmNlVVJMKHVybHMsIGhyZWYoKSk7CiAKLSAgICBpZiAo
YXV0byBzdHlsZVNoZWV0ID0gbWFrZVJlZlB0cih0aGlzLT5zaGVldCgpKSkgeworICAgIGlmIChS
ZWZQdHIgc3R5bGVTaGVldCA9IHRoaXMtPnNoZWV0KCkpIHsKICAgICAgICAgc3R5bGVTaGVldC0+
Y29udGVudHMoKS50cmF2ZXJzZVN1YnJlc291cmNlcyhbJl0gKGF1dG8mIHJlc291cmNlKSB7CiAg
ICAgICAgICAgICB1cmxzLmFkZChyZXNvdXJjZS51cmwoKSk7CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCAxOTk4
NjJiODA3YWMyMjA3NGIyZjQ1YzJmMTI5N2IxNWI2MmEzODBiLi4wYWE4M2ViYTA4MjAzMDllYjJk
NTE5NmFjYzI2NWE5OTljZTIxOTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKQEAgLTE0NzMsNyArMTQ3Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9h
ZFJlc291cmNlKGNvbnN0IFVSTCYgaW5pdGlhbFVSTCwgQ29udGVudFR5cGUmIGNvbnRlbnRUCiAg
ICAgfQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICBpZiAoYXV0byBkb2N1
bWVudExvYWRlciA9IG1ha2VSZWZQdHIoZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkp
KSB7CisgICAgaWYgKFJlZlB0ciBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpKSB7CiAgICAgICAgIGlmIChwYWdlLT51c2VyQ29udGVudFByb3ZpZGVyKCku
cHJvY2Vzc0NvbnRlbnRSdWxlTGlzdHNGb3JMb2FkKCpwYWdlLCB1cmwsIENvbnRlbnRFeHRlbnNp
b25zOjpSZXNvdXJjZVR5cGU6Ok1lZGlhLCAqZG9jdW1lbnRMb2FkZXIpLnN1bW1hcnkuYmxvY2tl
ZExvYWQpIHsKICAgICAgICAgICAgIG1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0
d29ya1N0YXRlOjpGb3JtYXRFcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xODM2LDcg
KzE4MzYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1
ZXMoY29uc3QgTWVkaWFUaW1lJiBtb3ZpZVRpbWUpCiAgICAgICAgIC8vIHNpbXBsZSBldmVudCBu
YW1lZCBjdWVjaGFuZ2UgYXQgdGhlIHRyYWNrIGVsZW1lbnQgYXMgd2VsbC4KICAgICAgICAgaWYg
KGlzPExvYWRhYmxlVGV4dFRyYWNrPigqYWZmZWN0ZWRUcmFjaykpIHsKICAgICAgICAgICAgIGF1
dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jdWVjaGFuZ2VFdmVudCwgRXZl
bnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKLSAgICAgICAgICAg
IGF1dG8gdHJhY2tFbGVtZW50ID0gbWFrZVJlZlB0cihkb3duY2FzdDxMb2FkYWJsZVRleHRUcmFj
az4oKmFmZmVjdGVkVHJhY2spLnRyYWNrRWxlbWVudCgpKTsKKyAgICAgICAgICAgIFJlZlB0ciB0
cmFja0VsZW1lbnQgPSBkb3duY2FzdDxMb2FkYWJsZVRleHRUcmFjaz4oKmFmZmVjdGVkVHJhY2sp
LnRyYWNrRWxlbWVudCgpOwogICAgICAgICAgICAgQVNTRVJUKHRyYWNrRWxlbWVudCk7CiAgICAg
ICAgICAgICBzY2hlZHVsZUV2ZW50T24oKnRyYWNrRWxlbWVudCwgV1RGTW92ZShldmVudCkpOwog
ICAgICAgICB9CkBAIC00MjYwLDcgKzQyNjAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJl
bW92ZVRleHRUcmFjayhSZWY8VGV4dFRyYWNrPiYmIHRyYWNrLCBib29sIHNjaGVkdWxlRXZlbgog
ICAgICAgICByZXR1cm47CiAKICAgICBUcmFja0Rpc3BsYXlVcGRhdGVTY29wZSBzY29wZSB7ICp0
aGlzIH07Ci0gICAgaWYgKGF1dG8gY3VlcyA9IG1ha2VSZWZQdHIodHJhY2stPmN1ZXMoKSkpCisg
ICAgaWYgKFJlZlB0ciBjdWVzID0gdHJhY2stPmN1ZXMoKSkKICAgICAgICAgdGV4dFRyYWNrUmVt
b3ZlQ3Vlcyh0cmFjaywgKmN1ZXMpOwogICAgIHRyYWNrLT5jbGVhckNsaWVudCgqdGhpcyk7CiAg
ICAgaWYgKG1fdGV4dFRyYWNrcykKQEAgLTQ2MjIsNyArNDYyMiw3IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6dXBkYXRlQ2FwdGlvbkNvbnRhaW5lcigpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6bGF5b3V0U2l6ZUNoYW5nZWQoKQogewotICAgIGlmIChhdXRvIGZyYW1lVmlldyA9IG1ha2VS
ZWZQdHIoZG9jdW1lbnQoKS52aWV3KCkpKSB7CisgICAgaWYgKFJlZlB0ciBmcmFtZVZpZXcgPSBk
b2N1bWVudCgpLnZpZXcoKSkgewogICAgICAgICBhdXRvIHRhc2sgPSBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH1dIHsKICAgICAgICAgICAgIGlmIChhdXRvIHJvb3QgPSB1c2Vy
QWdlbnRTaGFkb3dSb290KCkpCiAgICAgICAgICAgICAgICAgcm9vdC0+ZGlzcGF0Y2hFdmVudChF
dmVudDo6Y3JlYXRlKCJyZXNpemUiLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2Fu
Y2VsYWJsZTo6Tm8pKTsKQEAgLTY4ODEsNyArNjg4MSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6Y3JlYXRlTWVkaWFQbGF5ZXIoKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lT
CiAgICAgbWVkaWFTZXNzaW9uKCkuc2V0QWN0aXZlKHRydWUpOwogCiAjaWYgRU5BQkxFKFdFQl9B
VURJTykKLSAgICBhdXRvIHByb3RlY3RlZEF1ZGlvU291cmNlTm9kZSA9IG1ha2VSZWZQdHIobV9h
dWRpb1NvdXJjZU5vZGUpOworICAgIFJlZlB0ciBwcm90ZWN0ZWRBdWRpb1NvdXJjZU5vZGUgPSBt
X2F1ZGlvU291cmNlTm9kZTsKICAgICBzdGQ6Om9wdGlvbmFsPExvY2tlcjxMb2NrPj4gYXVkaW9T
b3VyY2VOb2RlTG9ja2VyOwogICAgIGlmIChtX2F1ZGlvU291cmNlTm9kZSkKICAgICAgICAgYXVk
aW9Tb3VyY2VOb2RlTG9ja2VyLmVtcGxhY2UobV9hdWRpb1NvdXJjZU5vZGUtPnByb2Nlc3NMb2Nr
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAppbmRleCBkN2I4
ZTRiYjBjZDhhNTdhY2RmMjhjN2MwM2Y0Y2RlZjQ0ZDY4Y2MzLi43MjFkMmRjOTI2MWViOTRiYWZm
YjkxYzNhMTE5NGFmZGExOWEyZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPYmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RF
bGVtZW50LmNwcApAQCAtNDA0LDcgKzQwNCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRC
ZUV4cG9zZWQoY29uc3QgSFRNTE9iamVjdEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgLy8gd2l0aCBu
byBjaGlsZHJlbiBvdGhlciB0aGFuIHBhcmFtIGVsZW1lbnRzLCB1bmtub3duIGVsZW1lbnRzIGFu
ZCB3aGl0ZXNwYWNlIGNhbiBiZSBmb3VuZAogICAgIC8vIGJ5IG5hbWUgaW4gYSBkb2N1bWVudCwg
YW5kIG90aGVyIG9iamVjdCBlbGVtZW50cyBjYW5ub3QiLgogCi0gICAgZm9yIChhdXRvIGNoaWxk
ID0gbWFrZVJlZlB0cihlbGVtZW50LmZpcnN0Q2hpbGQoKSk7IGNoaWxkOyBjaGlsZCA9IGNoaWxk
LT5uZXh0U2libGluZygpKSB7CisgICAgZm9yIChSZWZQdHIgY2hpbGQgPSBlbGVtZW50LmZpcnN0
Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAg
aWYgKHByZXZlbnRzUGFyZW50T2JqZWN0RnJvbUV4cG9zdXJlKCpjaGlsZCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtNDgwLDcgKzQ4MCw3IEBAIGJvb2wgSFRNTE9iamVj
dEVsZW1lbnQ6OmFwcGVuZEZvcm1EYXRhKERPTUZvcm1EYXRhJiBmb3JtRGF0YSwgYm9vbCkKIAog
ICAgIC8vIFVzZSBQbHVnaW5Mb2FkaW5nUG9saWN5OjpEb05vdExvYWQgaGVyZSBvciBpdCB3b3Vs
ZCBmaXJlIEpTIGV2ZW50cyBzeW5jaHJvbm91c2x5CiAgICAgLy8gd2hpY2ggd291bGQgbm90IGJl
IHNhZmUgaGVyZS4KLSAgICBhdXRvIHdpZGdldCA9IG1ha2VSZWZQdHIocGx1Z2luV2lkZ2V0KFBs
dWdpbkxvYWRpbmdQb2xpY3k6OkRvTm90TG9hZCkpOworICAgIFJlZlB0ciB3aWRnZXQgPSBwbHVn
aW5XaWRnZXQoUGx1Z2luTG9hZGluZ1BvbGljeTo6RG9Ob3RMb2FkKTsKICAgICBpZiAoIWlzPFBs
dWdpblZpZXdCYXNlPih3aWRnZXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgU3RyaW5n
IHZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKaW5k
ZXggOTNhNmY0Y2NmNTNlNGIzMGQzZDI5OTVlNGVhZTQzM2YzOGU3OTQxNy4uMTY1ZmE2YzU1OTU2
ZmZhN2U3YjY2N2UyZDBmYWQ5ZmZkODZlMDYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPcHRHcm91cEVsZW1lbnQuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgSFRNTE9wdEdyb3Vw
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3Qg
QXRvbVN0CiAKIHZvaWQgSFRNTE9wdEdyb3VwRWxlbWVudDo6cmVjYWxjU2VsZWN0T3B0aW9ucygp
CiB7Ci0gICAgaWYgKGF1dG8gc2VsZWN0RWxlbWVudCA9IG1ha2VSZWZQdHIoYW5jZXN0b3JzT2ZU
eXBlPEhUTUxTZWxlY3RFbGVtZW50PigqdGhpcykuZmlyc3QoKSkpIHsKKyAgICBpZiAoUmVmUHRy
IHNlbGVjdEVsZW1lbnQgPSBhbmNlc3RvcnNPZlR5cGU8SFRNTFNlbGVjdEVsZW1lbnQ+KCp0aGlz
KS5maXJzdCgpKSB7CiAgICAgICAgIHNlbGVjdEVsZW1lbnQtPnNldFJlY2FsY0xpc3RJdGVtcygp
OwogICAgICAgICBzZWxlY3RFbGVtZW50LT51cGRhdGVWYWxpZGl0eSgpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKaW5kZXggNWNlY2FlYmZkM2IwYWM5
MGE0MGJmY2RjMjZlOGIzOGMyZjk4N2M5Yy4uOTY1MWQ4NGVhMDJiNWY5N2YyNmI3NzRlMGYzNjg1
ZGUyOTg3NDc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAK
QEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIEhUTUxQbHVnSW5FbGVtZW50OjpyZXNldEluc3RhbmNl
KCkKIAogSlNDOjpCaW5kaW5nczo6SW5zdGFuY2UqIEhUTUxQbHVnSW5FbGVtZW50OjpiaW5kaW5n
c0luc3RhbmNlKCkKIHsKLSAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihkb2N1bWVudCgpLmZy
YW1lKCkpOworICAgIFJlZlB0ciBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKTsKICAgICBpZiAo
IWZyYW1lKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTExLDcgKzExMSw3IEBAIEpT
Qzo6QmluZGluZ3M6Okluc3RhbmNlKiBIVE1MUGx1Z0luRWxlbWVudDo6YmluZGluZ3NJbnN0YW5j
ZSgpCiAgICAgLy8gdGhlIGNhY2hlZCBhbGxvY2F0ZWQgQmluZGluZ3M6Okluc3RhbmNlLiAgTm90
IHN1cHBvcnRpbmcgdGhpcyBlZGdlLWNhc2UgaXMgT0suCiAKICAgICBpZiAoIW1faW5zdGFuY2Up
IHsKLSAgICAgICAgaWYgKGF1dG8gd2lkZ2V0ID0gbWFrZVJlZlB0cihwbHVnaW5XaWRnZXQoKSkp
CisgICAgICAgIGlmIChSZWZQdHIgd2lkZ2V0ID0gcGx1Z2luV2lkZ2V0KCkpCiAgICAgICAgICAg
ICBtX2luc3RhbmNlID0gZnJhbWUtPnNjcmlwdCgpLmNyZWF0ZVNjcmlwdEluc3RhbmNlRm9yV2lk
Z2V0KHdpZGdldC5nZXQoKSk7CiAgICAgfQogICAgIHJldHVybiBtX2luc3RhbmNlLmdldCgpOwpA
QCAtNDM1LDggKzQzNSw4IEBAIGJvb2wgSFRNTFBsdWdJbkVsZW1lbnQ6OnNldFJlcGxhY2VtZW50
KFJlbmRlckVtYmVkZGVkT2JqZWN0OjpQbHVnaW5VbmF2YWlsYWJpbGl0CiAKIGJvb2wgSFRNTFBs
dWdJbkVsZW1lbnQ6OmlzUmVwbGFjZW1lbnRPYnNjdXJlZCgpCiB7Ci0gICAgYXV0byB0b3BEb2N1
bWVudCA9IG1ha2VSZWYoZG9jdW1lbnQoKS50b3BEb2N1bWVudCgpKTsKLSAgICBhdXRvIHRvcEZy
YW1lVmlldyA9IG1ha2VSZWZQdHIodG9wRG9jdW1lbnQtPnZpZXcoKSk7CisgICAgUmVmIHRvcERv
Y3VtZW50ID0gZG9jdW1lbnQoKS50b3BEb2N1bWVudCgpOworICAgIFJlZlB0ciB0b3BGcmFtZVZp
ZXcgPSB0b3BEb2N1bWVudC0+dmlldygpOwogICAgIGlmICghdG9wRnJhbWVWaWV3KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQuY3BwCmluZGV4IDIwOGM4ZDJhMWNkODY5NzI0YjZkZjVkOTU5NGQ5NTliNjgwNWIy
ODAuLmJlMWZlYjFiNjFiMGYwNzk0NTIyODFjZmQ1YWI4MTM5Yjk4NjVjNDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtODEsNyArODEs
NyBAQCBib29sIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmlzSW1hZ2VUeXBlKCkKICAgICBpZiAo
bV9zZXJ2aWNlVHlwZS5pc0VtcHR5KCkgJiYgcHJvdG9jb2xJcyhtX3VybCwgImRhdGEiKSkKICAg
ICAgICAgbV9zZXJ2aWNlVHlwZSA9IG1pbWVUeXBlRnJvbURhdGFVUkwobV91cmwpOwogCi0gICAg
aWYgKGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKGRvY3VtZW50KCkuZnJhbWUoKSkpCisgICAgaWYg
KFJlZlB0ciBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIGZyYW1l
LT5sb2FkZXIoKS5jbGllbnQoKS5vYmplY3RDb250ZW50VHlwZShkb2N1bWVudCgpLmNvbXBsZXRl
VVJMKG1fdXJsKSwgbV9zZXJ2aWNlVHlwZSkgPT0gT2JqZWN0Q29udGVudFR5cGU6OkltYWdlOwog
CiAgICAgcmV0dXJuIEltYWdlOjpzdXBwb3J0c1R5cGUobV9zZXJ2aWNlVHlwZSk7CkBAIC0xNzks
NyArMTc5LDcgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRBdHRhY2hSZW5kZXJl
cnMoKQogCiB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OndpbGxEZXRhY2hSZW5kZXJlcnMo
KQogewotICAgIGF1dG8gd2lkZ2V0ID0gbWFrZVJlZlB0cihwbHVnaW5XaWRnZXQoUGx1Z2luTG9h
ZGluZ1BvbGljeTo6RG9Ob3RMb2FkKSk7CisgICAgUmVmUHRyIHdpZGdldCA9IHBsdWdpbldpZGdl
dChQbHVnaW5Mb2FkaW5nUG9saWN5OjpEb05vdExvYWQpOwogICAgIGlmIChpczxQbHVnaW5WaWV3
QmFzZT4od2lkZ2V0KSkKICAgICAgICAgZG93bmNhc3Q8UGx1Z2luVmlld0Jhc2U+KCp3aWRnZXQp
LndpbGxEZXRhY2hSZW5kZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTbG90RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxlbWVu
dC5jcHAKaW5kZXggMTRlZTBmODljZTZjMmM3NDQ2ZjVhNTJiMzdkZGYxZjQ4N2E2ZmY2MC4uYTJk
MTkxY2E5MDE4YjU4OGY1NTAyMWU3MDZmMzljYmQ3OTVkZWJlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFNsb3RFbGVtZW50LmNwcApAQCAtOTMsMTQgKzkzLDE0IEBAIHZvaWQgSFRNTFNsb3RF
bGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21TdHJpCiAgICAgSFRNTEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQobmFtZSwgb2xkVmFs
dWUsIG5ld1ZhbHVlLCByZWFzb24pOwogCiAgICAgaWYgKGlzSW5TaGFkb3dUcmVlKCkgJiYgbmFt
ZSA9PSBuYW1lQXR0cikgewotICAgICAgICBpZiAoYXV0byBzaGFkb3dSb290ID0gbWFrZVJlZlB0
cihjb250YWluaW5nU2hhZG93Um9vdCgpKSkKKyAgICAgICAgaWYgKFJlZlB0ciBzaGFkb3dSb290
ID0gY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKICAgICAgICAgICAgIHNoYWRvd1Jvb3QtPnJlbmFt
ZVNsb3RFbGVtZW50KCp0aGlzLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOwogICAgIH0KIH0KIAogY29u
c3QgVmVjdG9yPFdlYWtQdHI8Tm9kZT4+KiBIVE1MU2xvdEVsZW1lbnQ6OmFzc2lnbmVkTm9kZXMo
KSBjb25zdAogewotICAgIGF1dG8gc2hhZG93Um9vdCA9IG1ha2VSZWZQdHIoY29udGFpbmluZ1No
YWRvd1Jvb3QoKSk7CisgICAgUmVmUHRyIHNoYWRvd1Jvb3QgPSBjb250YWluaW5nU2hhZG93Um9v
dCgpOwogICAgIGlmICghc2hhZG93Um9vdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAKaW5kZXggNjFhYzJiNWFmYmEw
ZGYwMGQxZmRhNGNmYTlhZTNiMTViODQ2ZGFkZi4uYjU3MzkyYjFjNGM5NzdlMGQ4NjMwNDk4MTZm
YjkyZjdkZGM1ZGUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5j
cHAKQEAgLTE4MCw3ICsxODAsNyBAQCB2b2lkIEhUTUxTb3VyY2VFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaQogICAgIGlmIChu
YW1lID09IHNyY3NldEF0dHIgfHwgbmFtZSA9PSBzaXplc0F0dHIgfHwgbmFtZSA9PSBtZWRpYUF0
dHIgfHwgbmFtZSA9PSB0eXBlQXR0cikgewogICAgICAgICBpZiAobmFtZSA9PSBtZWRpYUF0dHIp
CiAgICAgICAgICAgICBtX2NhY2hlZFBhcnNlZE1lZGlhQXR0cmlidXRlID0gc3RkOjpudWxsb3B0
OwotICAgICAgICBhdXRvIHBhcmVudCA9IG1ha2VSZWZQdHIocGFyZW50Tm9kZSgpKTsKKyAgICAg
ICAgUmVmUHRyIHBhcmVudCA9IHBhcmVudE5vZGUoKTsKICAgICAgICAgaWYgKG1fc2hvdWxkQ2Fs
bFNvdXJjZXNDaGFuZ2VkKQogICAgICAgICAgICAgZG93bmNhc3Q8SFRNTFBpY3R1cmVFbGVtZW50
PigqcGFyZW50KS5zb3VyY2VzQ2hhbmdlZCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTdHlsZUVsZW1lbnQuY3BwCmluZGV4IDE2NjMwMDFjMGYwODE1OWY3ZTEwYWMzY2E2MDMzNGJi
OTBiMGJhNjguLmFjZTBlNWE3M2M1YTNjNmY4ZDY1MzM5MjdjYTkxNjlmNGEwMTBmYzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBA
IHZvaWQgSFRNTFN0eWxlRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RI
YXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CiB7ICAgIAogICAgIEhUTUxFbGVtZW50OjphZGRTdWJy
ZXNvdXJjZUF0dHJpYnV0ZVVSTHModXJscyk7CiAKLSAgICBpZiAoYXV0byBzdHlsZVNoZWV0ID0g
bWFrZVJlZlB0cih0aGlzLT5zaGVldCgpKSkgeworICAgIGlmIChSZWZQdHIgc3R5bGVTaGVldCA9
IHRoaXMtPnNoZWV0KCkpIHsKICAgICAgICAgc3R5bGVTaGVldC0+Y29udGVudHMoKS50cmF2ZXJz
ZVN1YnJlc291cmNlcyhbJl0gKGF1dG8mIHJlc291cmNlKSB7CiAgICAgICAgICAgICB1cmxzLmFk
ZChyZXNvdXJjZS51cmwoKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNwcAppbmRleCAzNjA3Yjg3NDBkY2M3YmMw
ODdjYTkxMzE0MWMwN2IzYTYxNGY2MWI0Li4yMWYwZTBkZDMzMmE5MTJhYjNkNjc4NDI2ZWI4Y2Y3
YzQ4ZjFiNDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5j
cHAKQEAgLTg4LDcgKzg4LDcgQEAgaW50IEhUTUxUYWJsZVJvd0VsZW1lbnQ6OnJvd0luZGV4KCkg
Y29uc3QKIAogc3RhdGljIGlubGluZSBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGZpbmRSb3dzKGNv
bnN0IEhUTUxUYWJsZVJvd0VsZW1lbnQmIHJvdykKIHsKLSAgICBhdXRvIHBhcmVudCA9IG1ha2VS
ZWZQdHIocm93LnBhcmVudE5vZGUoKSk7CisgICAgUmVmUHRyIHBhcmVudCA9IHJvdy5wYXJlbnRO
b2RlKCk7CiAgICAgaWYgKGlzPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PihwYXJlbnQpKQogICAg
ICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+KCpwYXJlbnQpLnJv
d3MoKTsKICAgICBpZiAoaXM8SFRNTFRhYmxlRWxlbWVudD4ocGFyZW50KSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCmluZGV4IDFiZjE5YWVjZDcxYzVjNWVhYzY4ZmZh
YzZkMzJiOTg3YTExNTBlMTQuLjBmOWY0M2IwNDhmNGVkNDExMDkyMDFiZjM1M2Q1OGVhYTQ1MjMz
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcApAQCAtMzA5LDcg
KzMwOSw3IEBAIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4
dFRyYWNrJikKIAogUmVmUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IEhUTUxUcmFja0VsZW1lbnQ6Om1l
ZGlhRWxlbWVudCgpIGNvbnN0CiB7Ci0gICAgYXV0byBwYXJlbnQgPSBtYWtlUmVmUHRyKHBhcmVu
dEVsZW1lbnQoKSk7CisgICAgUmVmUHRyIHBhcmVudCA9IHBhcmVudEVsZW1lbnQoKTsKICAgICBp
ZiAoIWlzPEhUTUxNZWRpYUVsZW1lbnQ+KHBhcmVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIHJldHVybiBkb3duY2FzdDxIVE1MTWVkaWFFbGVtZW50PihwYXJlbnQuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rSWNvbkNvbGxlY3Rvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0xpbmtJY29uQ29sbGVjdG9yLmNwcAppbmRleCA5NzIzYWI1ZTZl
NmUxMTZjNmIxNGQwYTM4YzgwMjZlODQ5NzM0OGEyLi41OTk4ZmFhY2I5ZjU5NWQ5MmJhMjAwNTJl
NjBkNzNlZmE4MDY1YmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xpbmtJY29u
Q29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xpbmtJY29uQ29sbGVjdG9y
LmNwcApAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgaW50IGNvbXBhcmVJY29ucyhjb25zdCBMaW5r
SWNvbiYgYSwgY29uc3QgTGlua0ljb24mIGIpCiAKIGF1dG8gTGlua0ljb25Db2xsZWN0b3I6Omlj
b25zT2ZUeXBlcyhPcHRpb25TZXQ8TGlua0ljb25UeXBlPiBpY29uVHlwZXMpIC0+IFZlY3RvcjxM
aW5rSWNvbj4KIHsKLSAgICBhdXRvIGhlYWQgPSBtYWtlUmVmUHRyKG1fZG9jdW1lbnQuaGVhZCgp
KTsKKyAgICBSZWZQdHIgaGVhZCA9IG1fZG9jdW1lbnQuaGVhZCgpOwogICAgIGlmICghaGVhZCkK
ICAgICAgICAgcmV0dXJuIHsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAK
aW5kZXggZTllOTAzYWZlYjdlNDg3Y2RiMTI2ZWEyNzI5NzdjNmQ2NmJmZDQzZi4uNjZjNDVmMDBm
NThjZTg4M2JlMzE0Y2ZmM2NkZTJjYjdlZjZmYzVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlh
RG9jdW1lbnQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBNZWRpYURvY3VtZW50UGFyc2Vy
OjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpCiAgICAgdmlkZW9FbGVtZW50LT5zZXRBdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNvbnRyb2xzQXR0ciwgZW1wdHlBdG9tKCkpOwogICAg
IHZpZGVvRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhdXRvcGxh
eUF0dHIsIGVtcHR5QXRvbSgpKTsKICAgICB2aWRlb0VsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oc3JjQXR0ciwgZG9jdW1lbnQudXJsKCkuc3RyaW5nKCkpOwotICAg
IGlmIChhdXRvIGxvYWRlciA9IG1ha2VSZWZQdHIoZG9jdW1lbnQubG9hZGVyKCkpKQorICAgIGlm
IChSZWZQdHIgbG9hZGVyID0gZG9jdW1lbnQubG9hZGVyKCkpCiAgICAgICAgIHZpZGVvRWxlbWVu
dC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0eXBlQXR0ciwgbG9hZGVyLT5y
ZXNwb25zZU1JTUVUeXBlKCkpOwogCiAjaWYgIUVOQUJMRShNT0RFUk5fTUVESUFfQ09OVFJPTFMp
CkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBNZWRpYURvY3VtZW50OjpkZWZhdWx0RXZlbnRIYW5k
bGVyKEV2ZW50JiBldmVudCkKICAgICAgICAgcmV0dXJuOwogICAgIGF1dG8mIHRhcmdldE5vZGUg
PSBkb3duY2FzdDxOb2RlPigqZXZlbnQudGFyZ2V0KCkpOwogCi0gICAgaWYgKGF1dG8gdmlkZW8g
PSBtYWtlUmVmUHRyKGFuY2VzdG9yVmlkZW9FbGVtZW50KCZ0YXJnZXROb2RlKSkpIHsKKyAgICBp
ZiAoUmVmUHRyIHZpZGVvID0gYW5jZXN0b3JWaWRlb0VsZW1lbnQoJnRhcmdldE5vZGUpKSB7CiAg
ICAgICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKICAg
ICAgICAgICAgIGlmICghdmlkZW8tPmNhblBsYXkoKSkgewogICAgICAgICAgICAgICAgIHZpZGVv
LT5wYXVzZSgpOwpAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgTWVkaWFEb2N1bWVudDo6ZGVmYXVs
dEV2ZW50SGFuZGxlcihFdmVudCYgZXZlbnQpCiAgICAgYXV0byYgdGFyZ2V0Q29udGFpbmVyID0g
ZG93bmNhc3Q8Q29udGFpbmVyTm9kZT4odGFyZ2V0Tm9kZSk7CiAKICAgICBpZiAoZXZlbnQudHlw
ZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQgJiYgaXM8S2V5Ym9hcmRFdmVudD4oZXZl
bnQpKSB7Ci0gICAgICAgIGF1dG8gdmlkZW8gPSBtYWtlUmVmUHRyKGRlc2NlbmRhbnRWaWRlb0Vs
ZW1lbnQodGFyZ2V0Q29udGFpbmVyKSk7CisgICAgICAgIFJlZlB0ciB2aWRlbyA9IGRlc2NlbmRh
bnRWaWRlb0VsZW1lbnQodGFyZ2V0Q29udGFpbmVyKTsKICAgICAgICAgaWYgKCF2aWRlbykKICAg
ICAgICAgICAgIHJldHVybjsKIApAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgTWVkaWFEb2N1bWVu
dDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCYgZXZlbnQpCiAKIHZvaWQgTWVkaWFEb2N1bWVu
dDo6cmVwbGFjZU1lZGlhRWxlbWVudFRpbWVyRmlyZWQoKQogewotICAgIGF1dG8gaHRtbEJvZHkg
PSBtYWtlUmVmUHRyKGJvZHlPckZyYW1lc2V0KCkpOworICAgIFJlZlB0ciBodG1sQm9keSA9IGJv
ZHlPckZyYW1lc2V0KCk7CiAgICAgaWYgKCFodG1sQm9keSkKICAgICAgICAgcmV0dXJuOwogCkBA
IC0yMzAsNyArMjMwLDcgQEAgdm9pZCBNZWRpYURvY3VtZW50OjpyZXBsYWNlTWVkaWFFbGVtZW50
VGltZXJGaXJlZCgpCiAgICAgaHRtbEJvZHktPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24obWFyZ2lud2lkdGhBdHRyLCBBdG9tU3RyaW5nKCIwIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKICAgICBodG1sQm9keS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihtYXJnaW5oZWlnaHRBdHRyLCBBdG9tU3RyaW5nKCIwIiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIAotICAgIGlmIChhdXRvIHZpZGVvRWxlbWVudCA9IG1h
a2VSZWZQdHIoZGVzY2VuZGFudFZpZGVvRWxlbWVudCgqaHRtbEJvZHkpKSkgeworICAgIGlmIChS
ZWZQdHIgdmlkZW9FbGVtZW50ID0gZGVzY2VuZGFudFZpZGVvRWxlbWVudCgqaHRtbEJvZHkpKSB7
CiAgICAgICAgIGF1dG8gZW1iZWRFbGVtZW50ID0gSFRNTEVtYmVkRWxlbWVudDo6Y3JlYXRlKCp0
aGlzKTsKIAogICAgICAgICBlbWJlZEVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24od2lkdGhBdHRyLCBBdG9tU3RyaW5nKCIxMDAlIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIE1lZGlhRG9jdW1lbnQ6
OnJlcGxhY2VNZWRpYUVsZW1lbnRUaW1lckZpcmVkKCkKICAgICAgICAgZW1iZWRFbGVtZW50LT5z
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHNyY0F0dHIsIHVybCgpLnN0cmluZygp
KTsKIAogICAgICAgICBBU1NFUlQobG9hZGVyKCkpOwotICAgICAgICBpZiAoYXV0byBsb2FkZXIg
PSBtYWtlUmVmUHRyKHRoaXMtPmxvYWRlcigpKSkKKyAgICAgICAgaWYgKFJlZlB0ciBsb2FkZXIg
PSB0aGlzLT5sb2FkZXIoKSkKICAgICAgICAgICAgIGVtYmVkRWxlbWVudC0+c2V0QXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbih0eXBlQXR0ciwgbG9hZGVyLT53cml0ZXIoKS5taW1lVHlw
ZSgpKTsKIAogICAgICAgICB2aWRlb0VsZW1lbnQtPnBhcmVudE5vZGUoKS0+cmVwbGFjZUNoaWxk
KGVtYmVkRWxlbWVudCwgKnZpZGVvRWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YUVsZW1lbnRTZXNzaW9uLmNwcAppbmRleCA5ZmUwMjRmMDRiMTUyMDE4ZGE5N2ZmMWE4ZTIwNWNm
MDc5NzM5MzllLi5kZjFkNzc1NDI2MjU3YWUxY2FmNDY4N2YwYjM2ZTVjNTAyNmEzY2VkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKQEAgLTEwMDksNyAr
MTAwOSw3IEBAIHN0YXRpYyBib29sIGlzRWxlbWVudFJlY3RNb3N0bHlJbk1haW5GcmFtZShjb25z
dCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KQogICAgIGlmICghZWxlbWVudC5yZW5kZXJlcigp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIGRvY3VtZW50RnJhbWUgPSBtYWtl
UmVmUHRyKGVsZW1lbnQuZG9jdW1lbnQoKS5mcmFtZSgpKTsKKyAgICBSZWZQdHIgZG9jdW1lbnRG
cmFtZSA9IGVsZW1lbnQuZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghZG9jdW1lbnRGcmFt
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMDM1LDcgKzEwMzUsNyBAQCBzdGF0aWMg
Ym9vbCBpc0VsZW1lbnRMYXJnZVJlbGF0aXZlVG9NYWluRnJhbWUoY29uc3QgSFRNTE1lZGlhRWxl
bWVudCYgZWxlbWVudCkKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBhdXRvIGRvY3VtZW50RnJhbWUgPSBtYWtlUmVmUHRyKGVsZW1lbnQuZG9jdW1lbnQo
KS5mcmFtZSgpKTsKKyAgICBSZWZQdHIgZG9jdW1lbnRGcmFtZSA9IGVsZW1lbnQuZG9jdW1lbnQo
KS5mcmFtZSgpOwogICAgIGlmICghZG9jdW1lbnRGcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCmluZGV4IGUzYTNkYTZmZjI0
NzE5YmZjOTc1MmRmZTU1M2ExNjM3NjRkZTZhNzYuLjFiOTc4OTc2Yjc3NzkxYzQ1OTVlZjczMmEx
ZWRiZmFiMGY0NmFhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCkBA
IC0xMDEsNyArMTAxLDcgQEAgdm9pZCBQbHVnaW5Eb2N1bWVudFBhcnNlcjo6Y3JlYXRlRG9jdW1l
bnRTdHJ1Y3R1cmUoKQogICAgIGVtYmVkRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihzcmNBdHRyLCBkb2N1bWVudC51cmwoKS5zdHJpbmcoKSk7CiAgICAgCiAgICAg
QVNTRVJUKGRvY3VtZW50LmxvYWRlcigpKTsKLSAgICBpZiAoYXV0byBsb2FkZXIgPSBtYWtlUmVm
UHRyKGRvY3VtZW50LmxvYWRlcigpKSkKKyAgICBpZiAoUmVmUHRyIGxvYWRlciA9IGRvY3VtZW50
LmxvYWRlcigpKQogICAgICAgICBtX2VtYmVkRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbih0eXBlQXR0ciwgbG9hZGVyLT53cml0ZXIoKS5taW1lVHlwZSgpKTsKIAog
ICAgIGRvY3VtZW50LnNldFBsdWdpbkVsZW1lbnQoKm1fZW1iZWRFbGVtZW50KTsKQEAgLTExNyw3
ICsxMTcsNyBAQCB2b2lkIFBsdWdpbkRvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyhEb2N1bWVu
dFdyaXRlciYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpCiAKICAgICBjcmVhdGVEb2N1bWVudFN0
cnVjdHVyZSgpOwogCi0gICAgYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIoZG9jdW1lbnQoKS0+ZnJh
bWUoKSk7CisgICAgUmVmUHRyIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKTsKICAgICBpZiAo
IWZyYW1lKQogICAgICAgICByZXR1cm47CiAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFBsdWdp
bkRvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0IHVpbnQ4
X3QqLCBzaXplX3QpCiAgICAgZnJhbWUtPnZpZXcoKS0+Zmx1c2hBbnlQZW5kaW5nUG9zdExheW91
dFRhc2tzKCk7CiAKICAgICBpZiAoYXV0byByZW5kZXJlciA9IG1fZW1iZWRFbGVtZW50LT5yZW5k
ZXJXaWRnZXQoKSkgewotICAgICAgICBpZiAoYXV0byB3aWRnZXQgPSBtYWtlUmVmUHRyKHJlbmRl
cmVyLT53aWRnZXQoKSkpIHsKKyAgICAgICAgaWYgKFJlZlB0ciB3aWRnZXQgPSByZW5kZXJlci0+
d2lkZ2V0KCkpIHsKICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5yZWRpcmVj
dERhdGFUb1BsdWdpbigqd2lkZ2V0KTsKIAogICAgICAgICAgICAgLy8gSW4gYSBwbHVnaW4gZG9j
dW1lbnQsIHRoZSBtYWluIHJlc291cmNlIGlzIHRoZSBwbHVnaW4uIElmIHdlIGhhdmUgYSBudWxs
IHdpZGdldCwgdGhhdCBtZWFucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TdWJt
aXRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TdWJtaXRJbnB1dFR5cGUuY3Bw
CmluZGV4IDgxMjJkNTRhMmZiNGEwNTE5ZTk4ZDI4YTQ1MzU0NDdlMzk0MWYxZDkuLjk4ZjM1ZmI0
YmY2Yzg5OGFhYTUxYTQyNGIzNTFmZjkwMzkxODcwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvU3VibWl0SW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1N1
Ym1pdElucHV0VHlwZS5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBTdWJtaXRJbnB1dFR5cGU6
OmhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQmIGV2ZW50KQogICAgIHByb3RlY3RlZEVsZW1l
bnQtPmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAK
ICAgICBwcm90ZWN0ZWRFbGVtZW50LT5zZXRBY3RpdmF0ZWRTdWJtaXQodHJ1ZSk7Ci0gICAgaWYg
KGF1dG8gY3VycmVudEZvcm0gPSBtYWtlUmVmUHRyKHByb3RlY3RlZEVsZW1lbnQtPmZvcm0oKSkp
CisgICAgaWYgKFJlZlB0ciBjdXJyZW50Rm9ybSA9IHByb3RlY3RlZEVsZW1lbnQtPmZvcm0oKSkK
ICAgICAgICAgY3VycmVudEZvcm0tPnN1Ym1pdElmUG9zc2libGUoJmV2ZW50LCBlbGVtZW50KCkp
OyAvLyBFdmVudCBoYW5kbGVycyBjYW4gcnVuLgogICAgIHByb3RlY3RlZEVsZW1lbnQtPnNldEFj
dGl2YXRlZFN1Ym1pdChmYWxzZSk7CiAgICAgZXZlbnQuc2V0RGVmYXVsdEhhbmRsZWQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dC5jcHAKaW5kZXggNmMyMzcxN2YwNGVmNTk0YWYzZmVlZTRiOTM1YWE3M2Q1ZDcwOWQ3My4uYjc5
ZjZhMjA4ZDNjYjU4MWY5YWEyZDVjMjViNmJhZWEyMjNmNTY3YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTEx
Niw3ICsxMTYsNyBAQCBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRPcmln
aW4oY29uc3QgSFRNTEltYWdlRWxlbWVudCogZWxlbWVudCkKICAgICBpZiAoIWNhY2hlZEltYWdl
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIGltYWdlID0gbWFrZVJlZlB0cihj
YWNoZWRJbWFnZS0+aW1hZ2UoKSk7CisgICAgUmVmUHRyIGltYWdlID0gY2FjaGVkSW1hZ2UtPmlt
YWdlKCk7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAKaW5kZXggOTBhMGVjNTdkZDBkNWVl
NWZkYjQ3MGJhOGZlODc2MTgxNzkwYzUwMy4uOGQ3YTZhYTIxNjBjMGVlZmY1YmQ0MzI4ODQ0ZmEy
M2E3YmFjMWZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
U3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNw
cApAQCAtMTAyLDEyICsxMDIsMTIgQEAgQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKGNvbnN0IFNS
R0JBPGZsb2F0PiYgY29sb3JDb21wb25lbnRzKQogfQogCiBDYW52YXNTdHlsZTo6Q2FudmFzU3R5
bGUoQ2FudmFzR3JhZGllbnQmIGdyYWRpZW50KQotICAgIDogbV9zdHlsZShtYWtlUmVmUHRyKGdy
YWRpZW50KSkKKyAgICA6IG1fc3R5bGUoJmdyYWRpZW50KQogewogfQogCiBDYW52YXNTdHlsZTo6
Q2FudmFzU3R5bGUoQ2FudmFzUGF0dGVybiYgcGF0dGVybikKLSAgICA6IG1fc3R5bGUobWFrZVJl
ZlB0cihwYXR0ZXJuKSkKKyAgICA6IG1fc3R5bGUoJnBhdHRlcm4pCiB7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAK
aW5kZXggM2JkMGMxODljOWY3NzczMjZjNTY5MWE3OTA4MjVkNjZkMDg3ZWQ4MC4uNWEzODc5NTdj
MjYwNjYyMmRiNDZmNGJmNjA4OGJlMzMxMDYxYWJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTE5NzYsNyAr
MTk3Niw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmVnaW5RdWVyeShHQ0dMZW51
bSB0YXJnZXQsIFdlYkdMUXVlcnkmIHF1ZXJ5KQogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJiZWdpblF1ZXJ5IiwgInF1ZXJ5
IG9iamVjdCBvZiB0YXJnZXQgaXMgYWxyZWFkeSBhY3RpdmUiKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBtX2FjdGl2ZVF1ZXJpZXNbKmFjdGl2ZVF1ZXJ5S2V5XSA9IG1ha2VSZWZQdHIo
JnF1ZXJ5KTsKKyAgICBtX2FjdGl2ZVF1ZXJpZXNbKmFjdGl2ZVF1ZXJ5S2V5XSA9ICZxdWVyeTsK
ICAgICBtX2NvbnRleHQtPmJlZ2luUXVlcnkodGFyZ2V0LCBxdWVyeS5vYmplY3QoKSk7CiAgICAg
cXVlcnkuc2V0VGFyZ2V0KHRhcmdldCk7CiB9CkBAIC0yNTIyLDcgKzI1MjIsNyBAQCBXZWJHTEFu
eSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJbmRleGVkUGFyYW1ldGVyKEdDR0xlbnVtIHRh
cmdldCwgR0NHTHVpbnQgaQogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0R0w6OklOVkFMSURfVkFMVUUsICJnZXRJbmRleGVkUGFyYW1ldGVyIiwgImluZGV4IG91
dCBvZiByYW5nZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIG1ha2VSZWZQdHIoYnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIFJlZlB0ciB7
IGJ1ZmZlciB9OwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpUUkFOU0ZPUk1f
RkVFREJBQ0tfQlVGRkVSX1NJWkU6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VFJBTlNG
T1JNX0ZFRURCQUNLX0JVRkZFUl9TVEFSVDoKQEAgLTI4NjcsMTQgKzI4NjcsMTQgQEAgV2ViR0xB
bnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyKEdDR0xlbnVtIHRhcmcKIAogICAgIFJlZlB0cjxXZWJHTFNoYXJlZE9iamVjdD4gYXR0YWNo
bWVudE9iamVjdDsKICAgICBpZiAoYXR0YWNobWVudCA9PSBHcmFwaGljc0NvbnRleHRHTDo6REVQ
VEhfU1RFTkNJTF9BVFRBQ0hNRU5UKSB7Ci0gICAgICAgIGF0dGFjaG1lbnRPYmplY3QgPSBtYWtl
UmVmUHRyKHRhcmdldEZyYW1lYnVmZmVyLT5nZXRBdHRhY2htZW50T2JqZWN0KEdyYXBoaWNzQ29u
dGV4dEdMOjpERVBUSF9BVFRBQ0hNRU5UKSk7Ci0gICAgICAgIGF1dG8gc3RlbmNpbEF0dGFjaG1l
bnQgPSBtYWtlUmVmUHRyKHRhcmdldEZyYW1lYnVmZmVyLT5nZXRBdHRhY2htZW50T2JqZWN0KEdy
YXBoaWNzQ29udGV4dEdMOjpTVEVOQ0lMX0FUVEFDSE1FTlQpKTsKKyAgICAgICAgYXR0YWNobWVu
dE9iamVjdCA9IHRhcmdldEZyYW1lYnVmZmVyLT5nZXRBdHRhY2htZW50T2JqZWN0KEdyYXBoaWNz
Q29udGV4dEdMOjpERVBUSF9BVFRBQ0hNRU5UKTsKKyAgICAgICAgUmVmUHRyIHN0ZW5jaWxBdHRh
Y2htZW50ID0gdGFyZ2V0RnJhbWVidWZmZXItPmdldEF0dGFjaG1lbnRPYmplY3QoR3JhcGhpY3ND
b250ZXh0R0w6OlNURU5DSUxfQVRUQUNITUVOVCk7CiAgICAgICAgIGlmIChhdHRhY2htZW50T2Jq
ZWN0ICE9IHN0ZW5jaWxBdHRhY2htZW50KSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgImRp
ZmZlcmVudCBvYmplY3RzIGJvdW5kIHRvIERFUFRIX0FUVEFDSE1FTlQgYW5kIFNURU5DSUxfQVRU
QUNITUVOVCIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICB9
IGVsc2UKLSAgICAgICAgYXR0YWNobWVudE9iamVjdCA9IG1ha2VSZWZQdHIodGFyZ2V0RnJhbWVi
dWZmZXItPmdldEF0dGFjaG1lbnRPYmplY3QoYXR0YWNobWVudCkpOworICAgICAgICBhdHRhY2ht
ZW50T2JqZWN0ID0gdGFyZ2V0RnJhbWVidWZmZXItPmdldEF0dGFjaG1lbnRPYmplY3QoYXR0YWNo
bWVudCk7CiAKICAgICBpZiAoIWF0dGFjaG1lbnRPYmplY3QpIHsKICAgICAgICAgaWYgKHBuYW1l
ID09IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBF
KQpAQCAtMjg5Miw4ICsyODkyLDggQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmcKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSQlVG
RkVSKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5U
X09CSkVDVF9OQU1FOgogICAgICAgICBpZiAoYXR0YWNobWVudE9iamVjdC0+aXNUZXh0dXJlKCkp
Ci0gICAgICAgICAgICByZXR1cm4gbWFrZVJlZlB0cihyZWludGVycHJldF9jYXN0PFdlYkdMVGV4
dHVyZSY+KCphdHRhY2htZW50T2JqZWN0KSk7Ci0gICAgICAgIHJldHVybiBtYWtlUmVmUHRyKHJl
aW50ZXJwcmV0X2Nhc3Q8V2ViR0xSZW5kZXJidWZmZXImPigqYXR0YWNobWVudE9iamVjdCkpOwor
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8V2ViR0xUZXh0dXJlPihhdHRh
Y2htZW50T2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8V2ViR0xS
ZW5kZXJidWZmZXI+KGF0dGFjaG1lbnRPYmplY3QpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFOgogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MQVlF
UjoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RF
WFRVUkVfTEVWRUw6CkBAIC0zMzg5LDcgKzMzODksNyBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUpCiAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6VkVSVEVYX0FSUkFZX0JJTkRJTkc6CiAgICAgICAgIGlmIChtX2JvdW5kVmVy
dGV4QXJyYXlPYmplY3QtPmlzRGVmYXVsdE9iamVjdCgpKQogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgICAgIHJldHVybiBtYWtlUmVmUHRyKHN0YXRpY19jYXN0PFdlYkdMVmVydGV4
QXJyYXlPYmplY3QmPigqbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0KSk7CisgICAgICAgIHJldHVy
biBzdGF0aWNfcG9pbnRlcl9jYXN0PFdlYkdMVmVydGV4QXJyYXlPYmplY3Q+KG1fYm91bmRWZXJ0
ZXhBcnJheU9iamVjdCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmdldFBhcmFtZXRlcihwbmFtZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXgg
NzAzMThkY2RkNDM0YmM4OTBlMzg2Y2YzNjg4ZjliZjcyNzI3OGM4ZC4uZmE1N2JiNTQwMjNlM2Zm
OTk2MzRiM2E5OTkxOGUwOTNjYWEyZDRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0zMTIsNyArMzEyLDcgQEAg
V2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQ
YXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2UKICAgICB9CiAjZW5kaWYKIAotICAgIGF1dG8gb2JqZWN0
ID0gbWFrZVJlZlB0cihtX2ZyYW1lYnVmZmVyQmluZGluZy0+Z2V0QXR0YWNobWVudE9iamVjdChh
dHRhY2htZW50KSk7CisgICAgUmVmUHRyIG9iamVjdCA9IG1fZnJhbWVidWZmZXJCaW5kaW5nLT5n
ZXRBdHRhY2htZW50T2JqZWN0KGF0dGFjaG1lbnQpOwogICAgIGlmICghb2JqZWN0KSB7CiAgICAg
ICAgIGlmIChwbmFtZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVO
VF9PQkpFQ1RfVFlQRSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
R3JhcGhpY3NDb250ZXh0R0w6Ok5PTkUpOwpAQCAtMzI3LDcgKzMyNyw3IEBAIFdlYkdMQW55IFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKEdD
R0xlbnVtIHRhcmdlCiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVS
X0FUVEFDSE1FTlRfT0JKRUNUX1RZUEU6CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFKTsKICAgICAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRToKLSAgICAg
ICAgICAgIHJldHVybiBtYWtlUmVmUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8V2ViR0xUZXh0dXJlJj4o
Km9iamVjdCkpOworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8V2ViR0xU
ZXh0dXJlPihvYmplY3QpOwogICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJV
RkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUw6CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFOgogICAg
ICAgICBjYXNlIEV4dGVuc2lvbnNHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNP
RElOR19FWFQ6CkBAIC0zNDIsNyArMzQyLDcgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2UKICAg
ICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpF
Q1RfVFlQRToKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR3JhcGhp
Y3NDb250ZXh0R0w6OlJFTkRFUkJVRkZFUik7CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUU6Ci0gICAgICAgICAgICByZXR1
cm4gbWFrZVJlZlB0cihyZWludGVycHJldF9jYXN0PFdlYkdMUmVuZGVyYnVmZmVyJj4oKm9iamVj
dCkpOworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8V2ViR0xSZW5kZXJi
dWZmZXI+KG9iamVjdCk7CiAgICAgICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpGUkFNRUJVRkZFUl9B
VFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HX0VYVDogewogICAgICAgICAgICAgaWYgKCFtX2V4dHNS
R0IpIHsKICAgICAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRH
TDo6SU5WQUxJRF9FTlVNLCAiZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyIiwgImlu
dmFsaWQgcGFyYW1ldGVyIG5hbWUgZm9yIHJlbmRlcmJ1ZmZlciBhdHRhY2htZW50Iik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuY3BwCmluZGV4IDNhMTY3NmQ3ZDZhNTYwYWZiNTc0M2EzY2RkMThmZTZjYmEzNWFlMDEu
LjE0MGU1YjU5MzJmNmYyNTA1YTE1NWNiYmVmODQ4YTA0MDM1YzY5MDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
Y3BwCkBAIC0zMTY3LDcgKzMxNjcsNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpnZXRQYXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUpCiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6RElUSEVSOgogICAgICAgICByZXR1cm4gZ2V0Qm9vbGVhblBhcmFtZXRlcihwbmFtZSk7
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElO
RzoKLSAgICAgICAgcmV0dXJuIG1ha2VSZWZQdHIobV9ib3VuZFZlcnRleEFycmF5T2JqZWN0LT5n
ZXRFbGVtZW50QXJyYXlCdWZmZXIoKSk7CisgICAgICAgIHJldHVybiBSZWZQdHIgeyBtX2JvdW5k
VmVydGV4QXJyYXlPYmplY3QtPmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpIH07CiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQklORElORzoKICAgICAgICAgcmV0dXJuIG1f
ZnJhbWVidWZmZXJCaW5kaW5nOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZST05UX0ZB
Q0U6CkBAIC0zMzMyLDcgKzMzMzIsNyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpnZXRQYXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUpCiAgICAgICAgIGlmIChtX29lc1ZlcnRl
eEFycmF5T2JqZWN0KSB7CiAgICAgICAgICAgICBpZiAobV9ib3VuZFZlcnRleEFycmF5T2JqZWN0
LT5pc0RlZmF1bHRPYmplY3QoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICAgICAgICAgIHJldHVybiBtYWtlUmVmUHRyKHN0YXRpY19jYXN0PFdlYkdMVmVydGV4QXJyYXlP
YmplY3RPRVMmPigqbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0KSk7CisgICAgICAgICAgICByZXR1
cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPihtX2JvdW5k
VmVydGV4QXJyYXlPYmplY3QpOwogICAgICAgICB9CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRQYXJhbWV0ZXIiLCAiaW52YWxp
ZCBwYXJhbWV0ZXIgbmFtZSwgT0VTX3ZlcnRleF9hcnJheV9vYmplY3Qgbm90IGVuYWJsZWQiKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKaW5kZXggOGYxZmIxYWVmYzk4MjRlY2I2ZTVl
ZGE3MmE1MTVmMmIyODBmYTJhOS4uMmM5YzdmZDgzMmEwN2I2OWFkZjgzNDkxM2QzYjVkZjE4NDRi
Zjg5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVj
dGlvblNpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1
Y3Rpb25TaXRlLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBleGVj
dXRlUmVwYXJlbnRUYXNrKEhUTUxDb25zdHJ1Y3Rpb25TaXRlVGFzayYgdGFzaykKICAgICBBU1NF
UlQodGFzay5vcGVyYXRpb24gPT0gSFRNTENvbnN0cnVjdGlvblNpdGVUYXNrOjpSZXBhcmVudCk7
CiAgICAgQVNTRVJUKCF0YXNrLm5leHRDaGlsZCk7CiAKLSAgICBpZiAoYXV0byBwYXJlbnQgPSBt
YWtlUmVmUHRyKHRhc2suY2hpbGQtPnBhcmVudE5vZGUoKSkpCisgICAgaWYgKFJlZlB0ciBwYXJl
bnQgPSB0YXNrLmNoaWxkLT5wYXJlbnROb2RlKCkpCiAgICAgICAgIHBhcmVudC0+cGFyc2VyUmVt
b3ZlQ2hpbGQoKnRhc2suY2hpbGQpOwogCiAgICAgaWYgKHRhc2suY2hpbGQtPnBhcmVudE5vZGUo
KSkKQEAgLTE2MSw3ICsxNjEsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZXhlY3V0ZVRha2VBbGxD
aGlsZHJlbkFuZFJlcGFyZW50VGFzayhIVE1MQ29uc3RydWN0aW9uU2l0ZVRhcwogICAgIEFTU0VS
VCh0YXNrLm9wZXJhdGlvbiA9PSBIVE1MQ29uc3RydWN0aW9uU2l0ZVRhc2s6OlRha2VBbGxDaGls
ZHJlbkFuZFJlcGFyZW50KTsKICAgICBBU1NFUlQoIXRhc2submV4dENoaWxkKTsKIAotICAgIGF1
dG8gZnVydGhlc3RCbG9jayA9IG1ha2VSZWZQdHIodGFzay5vbGRQYXJlbnQoKSk7CisgICAgUmVm
UHRyIGZ1cnRoZXN0QmxvY2sgPSB0YXNrLm9sZFBhcmVudCgpOwogICAgIHRhc2sucGFyZW50LT50
YWtlQWxsQ2hpbGRyZW5Gcm9tKGZ1cnRoZXN0QmxvY2suZ2V0KCkpOwogCiAgICAgUkVMRUFTRV9B
U1NFUlQoIXRhc2sucGFyZW50LT5wYXJlbnROb2RlKCkpOwpAQCAtMjcxLDcgKzI3MSw3IEBAIHZv
aWQgSFRNTENvbnN0cnVjdGlvblNpdGU6OmRpc3BhdGNoRG9jdW1lbnRFbGVtZW50QXZhaWxhYmxl
SWZOZWVkZWQoKQogICAgIGlmIChtX2lzUGFyc2luZ0ZyYWdtZW50KQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAoYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIobV9kb2N1bWVudC5mcmFtZSgpKSkK
KyAgICBpZiAoUmVmUHRyIGZyYW1lID0gbV9kb2N1bWVudC5mcmFtZSgpKQogICAgICAgICBmcmFt
ZS0+aW5qZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50U3Rh
cnQpOwogfQogCkBAIC03NzksNyArNzc5LDcgQEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6
ZmluZEZvc3RlclNpdGUoSFRNTENvbnN0cnVjdGlvblNpdGVUYXNrJiB0YXNrKQogCiAgICAgaWYg
KGF1dG8qIGxhc3RUYWJsZUVsZW1lbnRSZWNvcmQgPSBtX29wZW5FbGVtZW50cy50b3Btb3N0KHRh
YmxlVGFnLT5sb2NhbE5hbWUoKSkpIHsKICAgICAgICAgYXV0byYgbGFzdFRhYmxlRWxlbWVudCA9
IGxhc3RUYWJsZUVsZW1lbnRSZWNvcmQtPmVsZW1lbnQoKTsKLSAgICAgICAgYXV0byBwYXJlbnQg
PSBtYWtlUmVmUHRyKGxhc3RUYWJsZUVsZW1lbnQucGFyZW50Tm9kZSgpKTsKKyAgICAgICAgUmVm
UHRyIHBhcmVudCA9IGxhc3RUYWJsZUVsZW1lbnQucGFyZW50Tm9kZSgpOwogICAgICAgICAvLyBX
aGVuIHBhcnNpbmcgSFRNTCBmcmFnbWVudHMsIHdlIHNraXAgc3RlcCA0LjIgKCJMZXQgcm9vdCBi
ZSBhIG5ldyBodG1sIGVsZW1lbnQgd2l0aCBubyBhdHRyaWJ1dGVzIikgZm9yIGVmZmljaWVuY3ks
CiAgICAgICAgIC8vIGFuZCBpbnN0ZWFkIHVzZSB0aGUgRG9jdW1lbnRGcmFnbWVudCBhcyBhIHJv
b3Qgbm9kZS4gU28gd2UgbXVzdCB0cmVhdCB0aGUgcm9vdCBub2RlIChEb2N1bWVudEZyYWdtZW50
KSBhcyBpZiBpdCBpcyBhIGh0bWwgZWxlbWVudCBoZXJlLgogICAgICAgICBib29sIHBhcmVudENh
bkJlRm9zdGVyUGFyZW50ID0gcGFyZW50ICYmIChwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSB8fCAo
bV9pc1BhcnNpbmdGcmFnbWVudCAmJiBwYXJlbnQgPT0gJm1fb3BlbkVsZW1lbnRzLnJvb3ROb2Rl
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2Fk
U2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5u
ZXIuY3BwCmluZGV4IDk0ODE5ZWNlZTllNzczZTRjNTg1ZDk3NjQ3ZDQ1OGM2MDg1NGUyZWYuLmZh
OTlhNjBkNmEyNzhkZDlkODJmZmJlOWVlMjhhNzcxMzZkMzIwMTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcApAQCAtMjM2LDcgKzIz
Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAobWF0Y2goYXR0cmlidXRlTmFtZSwgbWVk
aWFBdHRyKSAmJiBtX21lZGlhQXR0cmlidXRlLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICAgICAg
bV9tZWRpYUF0dHJpYnV0ZSA9IGF0dHJpYnV0ZVZhbHVlOwogICAgICAgICAgICAgICAgIGF1dG8g
bWVkaWFTZXQgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUoYXR0cmlidXRlVmFsdWUsIE1lZGlhUXVl
cnlQYXJzZXJDb250ZXh0KG1fZG9jdW1lbnQpKTsKLSAgICAgICAgICAgICAgICBhdXRvIGRvY3Vt
ZW50RWxlbWVudCA9IG1ha2VSZWZQdHIobV9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQoKSk7Cisg
ICAgICAgICAgICAgICAgUmVmUHRyIGRvY3VtZW50RWxlbWVudCA9IG1fZG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50KCk7CiAgICAgICAgICAgICAgICAgTE9HKE1lZGlhUXVlcmllcywgIkhUTUxQcmVs
b2FkU2Nhbm5lciAlcCBwcm9jZXNzQXR0cmlidXRlIGV2YWx1YXRpbmcgbWVkaWEgcXVlcmllcyIs
IHRoaXMpOwogICAgICAgICAgICAgICAgIG1fbWVkaWFNYXRjaGVkID0gTWVkaWFRdWVyeUV2YWx1
YXRvciB7IG1fZG9jdW1lbnQucHJpbnRpbmcoKSA/ICJwcmludCIgOiAic2NyZWVuIiwgbV9kb2N1
bWVudCwgZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50LT5jb21wdXRlZFN0eWxlKCkg
OiBudWxscHRyIH0uZXZhbHVhdGUobWVkaWFTZXQuZ2V0KCkpOwogICAgICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHAKaW5k
ZXggYzJlMzA3ZmEwYTNiMTQxODZiMTJhMTA0MDJmZTZjZmFmOTE1MDVhZC4uZjE0MjA0YTFkMDQx
YzdiZDA3YzA1NGI1ODVhNzliMGExMmNlNDdmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIFJlZjxG
b3JtRGF0YT4gWFNTQXVkaXRvckRlbGVnYXRlOjpnZW5lcmF0ZVZpb2xhdGlvblJlcG9ydChjb25z
dCBYU1NJbmZvJiB4c3NJbmZvCiAgICAgYXV0byYgZnJhbWVMb2FkZXIgPSBtX2RvY3VtZW50LmZy
YW1lKCktPmxvYWRlcigpOwogICAgIFN0cmluZyBodHRwQm9keTsKICAgICBpZiAoZnJhbWVMb2Fk
ZXIuZG9jdW1lbnRMb2FkZXIoKSkgewotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IG1ha2VS
ZWZQdHIoZnJhbWVMb2FkZXIuZG9jdW1lbnRMb2FkZXIoKS0+b3JpZ2luYWxSZXF1ZXN0KCkuaHR0
cEJvZHkoKSkpCisgICAgICAgIGlmIChSZWZQdHIgZm9ybURhdGEgPSBmcmFtZUxvYWRlci5kb2N1
bWVudExvYWRlcigpLT5vcmlnaW5hbFJlcXVlc3QoKS5odHRwQm9keSgpKQogICAgICAgICAgICAg
aHR0cEJvZHkgPSBmb3JtRGF0YS0+ZmxhdHRlblRvU3RyaW5nKCk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRz
LmNwcAppbmRleCA5MzM0NzIyNmU5NmYyMTk3YzVmNTZlZDcyNjExNDY2OWJiMTBhN2Y3Li40NmM0
NzA1MDg1N2Q0ZjEzZDgyNzg1NmRlMWExYmYyYjA4YTU3OGE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAg
LTE3MCw3ICsxNzAsNyBAQCB2b2lkIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6ZGVmYXVs
dEV2ZW50SGFuZGxlcihFdmVudCYgZXZlbnQpCiAgICAgICAgIC8vIGNhdXNlIGV2ZW50cyB0byBi
ZSBzZW50IHRvIHRoZSBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQuIFRvCiAgICAgICAgIC8v
IHByZXZlbnQgYW4gaW5maW5pdGUgbG9vcCwgd2UgbXVzdCBjaGVjayBmb3IgdGhpcyBjYXNlIGJl
Zm9yZSBzZW5kaW5nCiAgICAgICAgIC8vIHRoZSBldmVudCB1cCB0aGUgY2hhaW4uCi0gICAgICAg
IGlmIChhdXRvIGhvc3QgPSBtYWtlUmVmUHRyKHNoYWRvd0hvc3QoKSkpCisgICAgICAgIGlmIChS
ZWZQdHIgaG9zdCA9IHNoYWRvd0hvc3QoKSkKICAgICAgICAgICAgIGhvc3QtPmRlZmF1bHRFdmVu
dEhhbmRsZXIoZXZlbnQpOwogICAgIH0KICAgICBpZiAoIWV2ZW50LmRlZmF1bHRIYW5kbGVkKCkp
CkBAIC0yNDEsNyArMjQxLDcgQEAgUmVmPFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ+
IFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ6OmNyZWF0ZShEb2MKIAogc3RkOjpvcHRp
b25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50
OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25z
dCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKQogewotICAgIGF1dG8gaW5wdXQgPSBtYWtl
UmVmUHRyKGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KHNoYWRvd0hvc3QoKSkpOworICAgIFJl
ZlB0ciBpbnB1dCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KHNoYWRvd0hvc3QoKSk7CiAg
ICAgaWYgKGlucHV0ICYmIGlucHV0LT5tYXhSZXN1bHRzKCkgPj0gMCkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIApAQCAtMjU2LDcgKzI1Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U3R5bGU6
OkVsZW1lbnRTdHlsZT4gU2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudDo6cmVzb2x2ZUN1
c3RvCiB2b2lkIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhh
bmRsZXIoRXZlbnQmIGV2ZW50KQogewogICAgIC8vIE9uIG1vdXNlZG93biwgYnJpbmcgdXAgYSBt
ZW51LCBpZiBuZWVkZWQKLSAgICBhdXRvIGlucHV0ID0gbWFrZVJlZlB0cihkb3duY2FzdDxIVE1M
SW5wdXRFbGVtZW50PihzaGFkb3dIb3N0KCkpKTsKKyAgICBSZWZQdHIgaW5wdXQgPSBkb3duY2Fz
dDxIVE1MSW5wdXRFbGVtZW50PihzaGFkb3dIb3N0KCkpOwogICAgIGlmIChpbnB1dCAmJiBldmVu
dC50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50ICYmIGlzPE1vdXNlRXZlbnQ+
KGV2ZW50KSAmJiBkb3duY2FzdDxNb3VzZUV2ZW50PihldmVudCkuYnV0dG9uKCkgPT0gTGVmdEJ1
dHRvbikgewogICAgICAgICBpbnB1dC0+Zm9jdXMoKTsKICAgICAgICAgaW5wdXQtPnNlbGVjdCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dFBsYWNlaG9sZGVy
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJF
bGVtZW50LmNwcAppbmRleCA4NDM5NzU5Zjg1MTM1ZjNkNGYwYTg2NzE2MzhmOTNjZmE1NTk3Y2Rh
Li4zM2U1MGYzYzY2ZGEyODhjYzY5NzhlMjdlNzQyYjA4ZWViYTNjYjYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0UGxhY2Vob2xkZXJFbGVtZW50LmNwcApA
QCAtNTMsNyArNTMsNyBAQCBUZXh0UGxhY2Vob2xkZXJFbGVtZW50OjpUZXh0UGxhY2Vob2xkZXJF
bGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgTGF5b3V0UwogYXV0byBUZXh0UGxhY2Vo
b2xkZXJFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlIGluc2VydGlv
blR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKSAtPiBJbnNlcnRlZElu
dG9BbmNlc3RvclJlc3VsdAogewogICAgIGlmIChpbnNlcnRpb25UeXBlLnRyZWVTY29wZUNoYW5n
ZWQpIHsKLSAgICAgICAgaWYgKGF1dG8gc2hhZG93SG9zdCA9IG1ha2VSZWZQdHIocGFyZW50T2ZJ
bnNlcnRlZFRyZWUuc2hhZG93SG9zdCgpKTsgaXM8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+
KHNoYWRvd0hvc3QpKQorICAgICAgICBpZiAoUmVmUHRyIHNoYWRvd0hvc3QgPSBwYXJlbnRPZklu
c2VydGVkVHJlZS5zaGFkb3dIb3N0KCk7IGlzPEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Pihz
aGFkb3dIb3N0KSkKICAgICAgICAgICAgIGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50Pigqc2hhZG93SG9zdCkuc2V0Q2FuU2hvd1BsYWNlaG9sZGVyKGZhbHNlKTsKICAgICB9CiAg
ICAgcmV0dXJuIEhUTUxEaXZFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihpbnNlcnRpb25U
eXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7CkBAIC02Miw3ICs2Miw3IEBAIGF1dG8gVGV4dFBs
YWNlaG9sZGVyRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSBpbnNl
cnRpb25UeXBlLCBDCiB2b2lkIFRleHRQbGFjZWhvbGRlckVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5j
ZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9m
UmVtb3ZlZFRyZWUpCiB7CiAgICAgaWYgKHJlbW92YWxUeXBlLnRyZWVTY29wZUNoYW5nZWQpIHsK
LSAgICAgICAgaWYgKGF1dG8gc2hhZG93SG9zdCA9IG1ha2VSZWZQdHIob2xkUGFyZW50T2ZSZW1v
dmVkVHJlZS5zaGFkb3dIb3N0KCkpOyBpczxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oc2hh
ZG93SG9zdCkpCisgICAgICAgIGlmIChSZWZQdHIgc2hhZG93SG9zdCA9IG9sZFBhcmVudE9mUmVt
b3ZlZFRyZWUuc2hhZG93SG9zdCgpOyBpczxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oc2hh
ZG93SG9zdCkpCiAgICAgICAgICAgICBkb3duY2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dD4oKnNoYWRvd0hvc3QpLnNldENhblNob3dQbGFjZWhvbGRlcih0cnVlKTsKICAgICB9CiAgICAg
SFRNTERpdkVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IocmVtb3ZhbFR5cGUsIG9sZFBhcmVu
dE9mUmVtb3ZlZFRyZWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9J
bmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5i
YW5kR2VuZXJpY1RleHRUcmFjay5jcHAKaW5kZXggMjM5MWQ1ZWRlNTcyNjAxYWI3OTRkMzI1NWE2
ZmU5ZTE1ZDRiODNkMi4uN2IwNzJhZGE3ZjNhMmQ0NjEwZTAwODA1OGY4MDYyYWI0NGQzNTAyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRy
YWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0
VHJhY2suY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBJbmJhbmRHZW5lcmljVGV4dFRyYWNr
OjphZGRHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmIGluYmFuZEN1ZSkKIAogdm9pZCBJbmJh
bmRHZW5lcmljVGV4dFRyYWNrOjp1cGRhdGVHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmIGlu
YmFuZEN1ZSkKIHsKLSAgICBhdXRvIGN1ZSA9IG1ha2VSZWZQdHIobV9jdWVNYXAuZmluZChpbmJh
bmRDdWUudW5pcXVlSWQoKSkpOworICAgIFJlZlB0ciBjdWUgPSBtX2N1ZU1hcC5maW5kKGluYmFu
ZEN1ZS51bmlxdWVJZCgpKTsKICAgICBpZiAoIWN1ZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0x
NTEsNyArMTUxLDcgQEAgdm9pZCBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjp1cGRhdGVHZW5lcmlj
Q3VlKEluYmFuZEdlbmVyaWNDdWUmIGluYmFuZEN1ZSkKIAogdm9pZCBJbmJhbmRHZW5lcmljVGV4
dFRyYWNrOjpyZW1vdmVHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmIGluYmFuZEN1ZSkKIHsK
LSAgICBhdXRvIGN1ZSA9IG1ha2VSZWZQdHIobV9jdWVNYXAuZmluZChpbmJhbmRDdWUudW5pcXVl
SWQoKSkpOworICAgIFJlZlB0ciBjdWUgPSBtX2N1ZU1hcC5maW5kKGluYmFuZEN1ZS51bmlxdWVJ
ZCgpKTsKICAgICBpZiAoY3VlKSB7CiAgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICpj
dWUpOwogICAgICAgICByZW1vdmVDdWUoKmN1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFjay5jcHAKaW5kZXggNWNlMjZlNmFkYTQwNWYwOWYzMWZmYzczODhjYTg4OTgzMGNjOGFj
Mi4uMjg0ZWVkMTg2MzM1ZGI5MDc1NWM2MDhiMDYzZDIzOTI3ODQxNmIwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcApAQCAtMzQ1LDcgKzM0NSw3IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IFRleHRUcmFjazo6YWRkQ3VlKFJlZjxUZXh0VHJhY2tDdWU+JiYgY3VlKQogCiAg
ICAgLy8gVGhlIGFkZEN1ZShjdWUpIG1ldGhvZCBvZiBUZXh0VHJhY2sgb2JqZWN0cywgd2hlbiBp
bnZva2VkLCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgogCi0gICAgYXV0byBjdWVUcmFj
ayA9IG1ha2VSZWZQdHIoY3VlLT50cmFjaygpKTsKKyAgICBSZWZQdHIgY3VlVHJhY2sgPSBjdWUt
PnRyYWNrKCk7CiAgICAgaWYgKGN1ZVRyYWNrID09IHRoaXMpCiAgICAgICAgIHJldHVybiB7IH07
CiAKQEAgLTQ0NSw3ICs0NDUsNyBAQCB2b2lkIFRleHRUcmFjazo6YWRkUmVnaW9uKFJlZjxWVFRS
ZWdpb24+JiYgcmVnaW9uKQogCiAgICAgLy8gMS4gSWYgdGhlIGdpdmVuIHJlZ2lvbiBpcyBpbiBh
IHRleHQgdHJhY2sgbGlzdCBvZiByZWdpb25zLCB0aGVuIHJlbW92ZQogICAgIC8vIHJlZ2lvbiBm
cm9tIHRoYXQgdGV4dCB0cmFjayBsaXN0IG9mIHJlZ2lvbnMuCi0gICAgYXV0byByZWdpb25UcmFj
ayA9IG1ha2VSZWZQdHIocmVnaW9uLT50cmFjaygpKTsKKyAgICBSZWZQdHIgcmVnaW9uVHJhY2sg
PSByZWdpb24tPnRyYWNrKCk7CiAgICAgaWYgKHJlZ2lvblRyYWNrICYmIHJlZ2lvblRyYWNrICE9
IHRoaXMpCiAgICAgICAgIHJlZ2lvblRyYWNrLT5yZW1vdmVSZWdpb24ocmVnaW9uLmdldCgpKTsK
IApAQCAtNDUzLDcgKzQ1Myw3IEBAIHZvaWQgVGV4dFRyYWNrOjphZGRSZWdpb24oUmVmPFZUVFJl
Z2lvbj4mJiByZWdpb24pCiAgICAgLy8gYSByZWdpb24gd2l0aCB0aGUgc2FtZSBpZGVudGlmaWVy
IGFzIHJlZ2lvbiByZXBsYWNlIHRoZSB2YWx1ZXMgb2YgdGhhdAogICAgIC8vIHJlZ2lvbidzIHdp
ZHRoLCBoZWlnaHQsIGFuY2hvciBwb2ludCwgdmlld3BvcnQgYW5jaG9yIHBvaW50IGFuZCBzY3Jv
bGwKICAgICAvLyBhdHRyaWJ1dGVzIHdpdGggdGhvc2Ugb2YgcmVnaW9uLgotICAgIGF1dG8gZXhp
c3RpbmdSZWdpb24gPSBtYWtlUmVmUHRyKHJlZ2lvbkxpc3QuZ2V0UmVnaW9uQnlJZChyZWdpb24t
PmlkKCkpKTsKKyAgICBSZWZQdHIgZXhpc3RpbmdSZWdpb24gPSByZWdpb25MaXN0LmdldFJlZ2lv
bkJ5SWQocmVnaW9uLT5pZCgpKTsKICAgICBpZiAoZXhpc3RpbmdSZWdpb24pIHsKICAgICAgICAg
ZXhpc3RpbmdSZWdpb24tPnVwZGF0ZVBhcmFtZXRlcnNGcm9tUmVnaW9uKHJlZ2lvbik7CiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCA2NDExNzQyNWJhNWM1YjZhNzFkMTkwZGZjOGYx
ZWVmYjRmZmM2MzdjLi43NjJkNGNhZGMwMDcwNmRmZjAwZmU0MjFiMmY1ZDNmZjhlYzM4ZmYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQ
YWdlQWdlbnQuY3BwCkBAIC0xMDE3LDcgKzEwMTcsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjx2b2lkPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldEVtdWxhdGVkTWVkaWEoY29uc3QgU3RyaW5n
JgogICAgIC8vIEZJWE1FOiBTY2hlZHVsZSBhIHJlbmRlcmluZyB1cGRhdGUgaW5zdGVhZCBvZiBz
eW5jaHJvbm91c2x5IHVwZGF0aW5nIHRoZSBsYXlvdXQuCiAgICAgbV9pbnNwZWN0ZWRQYWdlLnVw
ZGF0ZVN0eWxlQWZ0ZXJDaGFuZ2VJbkVudmlyb25tZW50KCk7CiAKLSAgICBhdXRvIGRvY3VtZW50
ID0gbWFrZVJlZlB0cihtX2luc3BlY3RlZFBhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnQoKSk7Cisg
ICAgUmVmUHRyIGRvY3VtZW50ID0gbV9pbnNwZWN0ZWRQYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50
KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIHsgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggN2Q4YmIzNmJjNGQ3OWRiYTc3NmNh
YmI0YzI1NzU3MTU5N2QzMDkyNy4uNTk2ODEzZmEyZDgwZGU2YjMxODhiNzgwZDFiYzAyZTU0ODMx
NDc5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC00MjMs
OCArNDIzLDggQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE0KICAgICAgICAgcmV0dXJuOwogI2Vu
ZGlmCiAKLSAgICBpZiAoYXV0byBkb2N1bWVudCA9IG1ha2VSZWZQdHIodGhpcy0+ZG9jdW1lbnQo
KSkpIHsKLSAgICAgICAgaWYgKGF1dG8gZG9tV2luZG93ID0gbWFrZVJlZlB0cihkb2N1bWVudC0+
ZG9tV2luZG93KCkpKSB7CisgICAgaWYgKFJlZlB0ciBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50
KCkpIHsKKyAgICAgICAgaWYgKFJlZlB0ciBkb21XaW5kb3cgPSBkb2N1bWVudC0+ZG9tV2luZG93
KCkpIHsKICAgICAgICAgICAgIGlmIChkb2N1bWVudC0+c2V0dGluZ3MoKS5wZXJmb3JtYW5jZU5h
dmlnYXRpb25UaW1pbmdBUElFbmFibGVkKCkpCiAgICAgICAgICAgICAgICAgZG9tV2luZG93LT5w
ZXJmb3JtYW5jZSgpLm5hdmlnYXRpb25GaW5pc2hlZChtZXRyaWNzKTsKICAgICAgICAgfQpAQCAt
OTI0LDcgKzkyNCw3IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6OnRyeUxvYWRpbmdSZWRpcmVjdFJl
cXVlc3RGcm9tQXBwbGljYXRpb25DYWNoZShjb25zdCBSZXNvdXJjCiAgICAgLy8gSWYgdGhlIFJl
c291cmNlTG9hZGVyIGlzIGluZGVlZCBjYW5jZWxsZWQsIGl0IHdvdWxkIG5vcm1hbGx5IHNlbmQg
cmVzb3VyY2UgbG9hZCBjYWxsYmFja3MuCiAgICAgLy8gVGhlcmVmb3JlLCBzZXZlciBvdXIgcmVs
YXRpb25zaGlwIHdpdGggdGhlIG5ldHdvcmsgbG9hZCBidXQgcHJldmVudCB0aGUgUmVzb3VyY2VM
b2FkZXIgZnJvbSBzZW5kaW5nIFJlc291cmNlTG9hZE5vdGlmaWVyIGNhbGxiYWNrcy4KIAotICAg
IGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBtYWtlUmVmUHRyKG1haW5SZXNvdXJjZUxvYWRlcigpKTsK
KyAgICBSZWZQdHIgcmVzb3VyY2VMb2FkZXIgPSBtYWluUmVzb3VyY2VMb2FkZXIoKTsKICAgICBp
ZiAocmVzb3VyY2VMb2FkZXIpIHsKICAgICAgICAgQVNTRVJUKHJlc291cmNlTG9hZGVyLT5zaG91
bGRTZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkpOwogICAgICAgICByZXNvdXJjZUxvYWRlci0+
c2V0U2VuZENhbGxiYWNrUG9saWN5KFNlbmRDYWxsYmFja1BvbGljeTo6RG9Ob3RTZW5kQ2FsbGJh
Y2tzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCmluZGV4IDZiZWFm
YzEwZDIzOWIwNDQ3YjNkMGQzNmJkOTVkNzZmNThjOGJjNGEuLjA5NGE1MWUzOTI2NTJjYmVkYzM2
YmE1MzllNGQ1NWU3NzNlMWEwNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
b3JtU3VibWlzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNz
aW9uLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIFJlZjxGb3JtU3VibWlzc2lvbj4gRm9ybVN1Ym1p
c3Npb246OmNyZWF0ZShIVE1MRm9ybUVsZW1lbnQmIGZvcm0sIEhUTUxGb3JtQ29udHJvCiB7CiAg
ICAgYXV0byBjb3BpZWRBdHRyaWJ1dGVzID0gYXR0cmlidXRlczsKIAotICAgIGF1dG8gc3VibWl0
dGVyID0gbWFrZVJlZlB0cihvdmVycmlkZVN1Ym1pdHRlciA/IG92ZXJyaWRlU3VibWl0dGVyIDog
Zm9ybS5maW5kU3VibWl0dGVyKGV2ZW50KSk7CisgICAgUmVmUHRyIHN1Ym1pdHRlciA9IG92ZXJy
aWRlU3VibWl0dGVyID8gb3ZlcnJpZGVTdWJtaXR0ZXIgOiBmb3JtLmZpbmRTdWJtaXR0ZXIoZXZl
bnQpOwogICAgIGlmIChzdWJtaXR0ZXIpIHsKICAgICAgICAgQXRvbVN0cmluZyBhdHRyaWJ1dGVW
YWx1ZTsKICAgICAgICAgaWYgKCEoYXR0cmlidXRlVmFsdWUgPSBzdWJtaXR0ZXItPmF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZm9ybWFjdGlvbkF0dHIpKS5pc051bGwoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGRlMGJjMDg5ZWJjNzVmMjNhNjQxYmQz
ZjcyMTA1MWYzN2JjNWI0YWUuLjRhZDQ1YjZlZDRmNWUwN2JjODA3ZmE2Zjk1Yzk3NjNhMDg5YmZk
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTM0NCw3ICsxMzQ0
LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChGcmFtZUxvYWRSZXF1ZXN0JiYgZnJhbWVM
b2FkUmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWYKICAgICBib29sIGlzRm9ybVN1Ym1pc3Npb24g
PSBmb3JtU3RhdGU7CiAKICAgICAvLyBUaGUgc2VhcmNoIGZvciBhIHRhcmdldCBmcmFtZSBpcyBk
b25lIGVhcmxpZXIgaW4gdGhlIGNhc2Ugb2YgZm9ybSBzdWJtaXNzaW9uLgotICAgIGF1dG8gdGFy
Z2V0RnJhbWUgPSBpc0Zvcm1TdWJtaXNzaW9uID8gbnVsbHB0ciA6IG1ha2VSZWZQdHIoZmluZEZy
YW1lRm9yTmF2aWdhdGlvbihlZmZlY3RpdmVGcmFtZU5hbWUpKTsKKyAgICBhdXRvIHRhcmdldEZy
YW1lID0gaXNGb3JtU3VibWlzc2lvbiA/IG51bGxwdHIgOiBSZWZQdHIgeyBmaW5kRnJhbWVGb3JO
YXZpZ2F0aW9uKGVmZmVjdGl2ZUZyYW1lTmFtZSkgfTsKICAgICBpZiAodGFyZ2V0RnJhbWUgJiYg
dGFyZ2V0RnJhbWUgIT0gJm1fZnJhbWUpIHsKICAgICAgICAgZnJhbWVMb2FkUmVxdWVzdC5zZXRG
cmFtZU5hbWUoIl9zZWxmIik7CiAgICAgICAgIHRhcmdldEZyYW1lLT5sb2FkZXIoKS5sb2FkVVJM
KFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHJlZmVycmVyLCBuZXdMb2FkVHlwZSwgZXZlbnQs
IFdURk1vdmUoZm9ybVN0YXRlKSwgV1RGTW92ZShwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCksIGNv
bXBsZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKSk7CkBAIC0yMDIwLDcgKzIwMjAsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoKQogICAgICAgICBtX2ZyYW1l
LmRvY3VtZW50KCkgPyBtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpLnN0cmluZ0NlbnRlckVsbGlw
c2l6ZWRUb0xlbmd0aCgpLnV0ZjgoKS5kYXRhKCkgOiAiIiwKICAgICAgICAgcGRsID8gcGRsLT51
cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKS51dGY4KCkuZGF0YSgpIDogIjxu
byBwcm92aXNpb25hbCBEb2N1bWVudExvYWRlcj4iLCBjYWNoZWRQYWdlLmdldCgpKTsKIAotICAg
IGlmIChhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0cihtX2ZyYW1lLmRvY3VtZW50KCkpKSB7Cisg
ICAgaWYgKFJlZlB0ciBkb2N1bWVudCA9IG1fZnJhbWUuZG9jdW1lbnQoKSkgewogICAgICAgICAv
LyBJbiB0aGUgY2FzZSB3aGVyZSB3ZSdyZSByZXN0b3JpbmcgZnJvbSBhIGNhY2hlZCBwYWdlLCBv
dXIgZG9jdW1lbnQgd2lsbCBub3QKICAgICAgICAgLy8gYmUgY29ubmVjdGVkIHRvIGl0cyBmcmFt
ZSB5ZXQsIHNvIHRoZSBmb2xsb3dpbmcgY2FsbCB3aXRoIGJlIGEgbm8tb3AuIFdlIHdpbGwKICAg
ICAgICAgLy8gYXR0ZW1wdCB0byBjb25maXJtIGFueSBhY3RpdmUgY29tcG9zaXRpb24gb25jZSBh
Z2FpbiBpbiB0aGlzIHNjZW5hcmlvIGFmdGVyIHdlCkBAIC0yMTA1LDcgKzIxMDUsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoKQogICAgIH0gZWxzZQogICAgICAg
ICBkaWRPcGVuVVJMKCk7CiAKLSAgICBpZiAoYXV0byBkb2N1bWVudCA9IG1ha2VSZWZQdHIobV9m
cmFtZS5kb2N1bWVudCgpKSkKKyAgICBpZiAoUmVmUHRyIGRvY3VtZW50ID0gbV9mcmFtZS5kb2N1
bWVudCgpKQogICAgICAgICBkb2N1bWVudC0+ZWRpdG9yKCkuY29uZmlybU9yQ2FuY2VsQ29tcG9z
aXRpb25BbmROb3RpZnlDbGllbnQoKTsKIAogICAgIExPRyhMb2FkaW5nLCAiV2ViQ29yZUxvYWRp
bmcgJXM6IEZpbmlzaGVkIGNvbW1pdHRpbmcgcHJvdmlzaW9uYWwgbG9hZCB0byBVUkwgJXMiLCBt
X2ZyYW1lLnRyZWUoKS51bmlxdWVOYW1lKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwKQEAgLTI1
ODYsNyArMjU4Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9yVGhp
c0ZyYW1lKCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChhdXRvIGRv
bVdpbmRvdyA9IG1ha2VSZWZQdHIobV9mcmFtZS5kb2N1bWVudCgpID8gbV9mcmFtZS5kb2N1bWVu
dCgpLT5kb21XaW5kb3coKSA6IG51bGxwdHIpKQorICAgICAgICBpZiAoUmVmUHRyIGRvbVdpbmRv
dyA9IG1fZnJhbWUuZG9jdW1lbnQoKSA/IG1fZnJhbWUuZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkg
OiBudWxscHRyKQogICAgICAgICAgICAgZG9tV2luZG93LT5wZXJmb3JtYW5jZSgpLnNjaGVkdWxl
TmF2aWdhdGlvbk9ic2VydmF0aW9uVGFza0lmTmVlZGVkKCk7CiAKICAgICAgICAgY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IgPSBtX2RvY3VtZW50TG9hZGVyLT5tYWluRG9jdW1lbnRFcnJvcigp
OwpAQCAtMzI1NSw4ICszMjU1LDggQEAgc3RhdGljIGJvb2wgaXNTYW1lRG9jdW1lbnRSZWxvYWQo
Ym9vbCBpc05ld05hdmlnYXRpb24sIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUpCiAKIHZvaWQgRnJh
bWVMb2FkZXI6OnNjcm9sbFRvRnJhZ21lbnRXaXRoUGFyZW50Qm91bmRhcnkoY29uc3QgVVJMJiB1
cmwsIGJvb2wgaXNOZXdOYXZpZ2F0aW9uKQogewotICAgIGF1dG8gdmlldyA9IG1ha2VSZWZQdHIo
bV9mcmFtZS52aWV3KCkpOwotICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmUHRyKG1fZnJhbWUu
ZG9jdW1lbnQoKSk7CisgICAgUmVmUHRyIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKTsKKyAgICBSZWZQ
dHIgZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCk7CiAgICAgaWYgKCF2aWV3IHx8ICFkb2N1
bWVudCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlD
b250cm9sbGVyLmNwcAppbmRleCAwM2IyNGU4ODgzZDA4ZWZjN2Q4YTFkZjhhZDVlMTUxYmFlYTQ1
Nzc2Li5iM2FjZjA2YjQ5YTgyYjJhNGEwOWMxMzVjMDllZjgwM2VhMDdkZDMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKQEAgLTEzNSw3ICsxMzUsNyBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6cmVzdG9yZVNjcm9sbFBvc2l0
aW9uQW5kVmlld1N0YXRlKCkKICAgICBpZiAoIW1fY3VycmVudEl0ZW0pCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGF1dG8gdmlldyA9IG1ha2VSZWZQdHIobV9mcmFtZS52aWV3KCkpOworICAgIFJl
ZlB0ciB2aWV3ID0gbV9mcmFtZS52aWV3KCk7CiAKICAgICAvLyBGSVhNRTogVGhlcmUgaXMgc29t
ZSBzY3JvbGxpbmcgcmVsYXRlZCB3b3JrIHRoYXQgbmVlZHMgdG8gaGFwcGVuIHdoZW5ldmVyIGEg
cGFnZSBnb2VzIGludG8gdGhlCiAgICAgLy8gYmFjay9mb3J3YXJkIGNhY2hlIGFuZCBzaW1pbGFy
IHdvcmsgdGhhdCBuZWVkcyB0byBvY2N1ciB3aGVuIGl0IGNvbWVzIG91dC4gVGhpcyBpcyB3aGVy
ZSB3ZSBkbyB0aGUgd29yawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmln
YXRpb25TY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hl
ZHVsZXIuY3BwCmluZGV4IGMxNDIyNjhiNzRiZDc5MmE1ODY1NjdkMjRjMzJlM2E1NzNlNWRkNjcu
LmI2MTZiYTdkZWZlMGI4NTNhODg5ZDY3OWQ1NGQwZjNjMzg4OTFhNGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKQEAgLTEyMSw3ICsxMjEsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgU2NoZWR1bGVkVVJMTmF2aWdhdGlvbihEb2N1bWVudCYgaW5pdGlh
dGluZ0RvY3VtZW50LCBkb3VibGUgZGVsYXksIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdp
biwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIExvY2tIaXN0b3J5IGxv
Y2tIaXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QsIGJvb2wg
ZHVyaW5nTG9hZCwgYm9vbCBpc0xvY2F0aW9uQ2hhbmdlKQogICAgICAgICA6IFNjaGVkdWxlZE5h
dmlnYXRpb24oZGVsYXksIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBkdXJpbmdM
b2FkLCBpc0xvY2F0aW9uQ2hhbmdlLCBpbml0aWF0aW5nRG9jdW1lbnQuc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCkpCiAgICAgICAgICwgbV9pbml0aWF0aW5nRG9jdW1l
bnQgeyBtYWtlUmVmKGluaXRpYXRpbmdEb2N1bWVudCkgfQotICAgICAgICAsIG1fc2VjdXJpdHlP
cmlnaW57IG1ha2VSZWZQdHIoc2VjdXJpdHlPcmlnaW4pIH0KKyAgICAgICAgLCBtX3NlY3VyaXR5
T3JpZ2luIHsgc2VjdXJpdHlPcmlnaW4gfQogICAgICAgICAsIG1fdXJsIHsgdXJsIH0KICAgICAg
ICAgLCBtX3JlZmVycmVyIHsgcmVmZXJyZXIgfQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3ViZnJhbWVMb2FkZXIuY3BwCmluZGV4IDBkOWRjNjYwZDMyODhmNjAzM2I1ZjQ4MGE2ZTdiNzgy
NWVhYjU2N2QuLmMyM2UwNzM1NmM2ODVjODdlMmY4MWI0NDRlNzkyNzdkYzk5MzM5MTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcApAQCAtMjQ1LDcgKzI0NSw3IEBA
IEZyYW1lKiBGcmFtZUxvYWRlcjo6U3ViZnJhbWVMb2FkZXI6OmxvYWRPclJlZGlyZWN0U3ViZnJh
bWUoSFRNTEZyYW1lT3duZXJFbGVtZW50CiAgICAgVVJMIHVwZ3JhZGVkUmVxdWVzdFVSTCA9IHJl
cXVlc3RVUkw7CiAgICAgaW5pdGlhdGluZ0RvY3VtZW50LmNvbnRlbnRTZWN1cml0eVBvbGljeSgp
LT51cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVkZWQodXBncmFkZWRSZXF1ZXN0VVJMLCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6Okluc2VjdXJlUmVxdWVzdFR5cGU6OkxvYWQpOwogCi0gICAgUmVm
UHRyPEZyYW1lPiBmcmFtZSA9IG1ha2VSZWZQdHIob3duZXJFbGVtZW50LmNvbnRlbnRGcmFtZSgp
KTsKKyAgICBSZWZQdHIgZnJhbWUgPSBvd25lckVsZW1lbnQuY29udGVudEZyYW1lKCk7CiAgICAg
aWYgKGZyYW1lKQogICAgICAgICBmcmFtZS0+bmF2aWdhdGlvblNjaGVkdWxlcigpLnNjaGVkdWxl
TG9jYXRpb25DaGFuZ2UoaW5pdGlhdGluZ0RvY3VtZW50LCBpbml0aWF0aW5nRG9jdW1lbnQuc2Vj
dXJpdHlPcmlnaW4oKSwgdXBncmFkZWRSZXF1ZXN0VVJMLCBtX2ZyYW1lLmxvYWRlcigpLm91dGdv
aW5nUmVmZXJyZXIoKSwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QpOwogICAgIGVs
c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCA0Nzc4
NmZmNmY2MDczMWNjOGZkYWVmNmZjMjc4MDZmNDJmZGY5NjRhLi4yZDM5Y2Q2YjYwODBlMTIwYjA0
N2RjMzVhMGM0M2ZjMmFiYzE1OGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBDYWNoZWRGb250OjplbnN1cmVD
dXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCiAKIHN0ZDo6dW5pcXVlX3B0cjxGb250
Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShTaGFy
ZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdy
YXBwaW5nKQogewotICAgIGF1dG8gYnVmZmVyID0gbWFrZVJlZlB0cihieXRlcyk7CisgICAgUmVm
UHRyIGJ1ZmZlciB7ICZieXRlcyB9OwogICAgIHdyYXBwaW5nID0gIWNvbnZlcnRXT0ZGVG9TZm50
SWZOZWNlc3NhcnkoYnVmZmVyKTsKICAgICByZXR1cm4gYnVmZmVyID8gY3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YSgqYnVmZmVyLCBpdGVtSW5Db2xsZWN0aW9uKSA6IG51bGxwdHI7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggMjBj
OTE5ODk1NjAxMGE0NTRjOTVhYjljM2Y3NjM4NzZjOTYxZjcwOC4uZDE3OTkxNzAxOTgxYTgwMTk0
YmQyM2UzMDhmNmUzN2E1YmRiNWU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4
dE1lbnVDb250cm9sbGVyLmNwcApAQCAtNTI3LDcgKzUyNyw3IEBAIHZvaWQgQ29udGV4dE1lbnVD
b250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUFjdGlvbiBhY3Rp
b24sIGNvCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVHJhbnNs
YXRlOgogI2lmIEhBVkUoVFJBTlNMQVRJT05fVUlfU0VSVklDRVMpCi0gICAgICAgIGlmIChhdXRv
IHZpZXcgPSBtYWtlUmVmUHRyKGZyYW1lLT52aWV3KCkpKSB7CisgICAgICAgIGlmIChSZWZQdHIg
dmlldyA9IGZyYW1lLT52aWV3KCkpIHsKICAgICAgICAgICAgIG1fY2xpZW50LmhhbmRsZVRyYW5z
bGF0aW9uKHsKICAgICAgICAgICAgICAgICBtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLnNlbGVj
dGVkVGV4dCgpLAogICAgICAgICAgICAgICAgIHZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhlbmNs
b3NpbmdJbnRSZWN0KGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb25Cb3VuZHMoKSkpLApAQCAt
ODQ0LDcgKzg0NCw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAg
ICAgaWYgKCFtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmlzQ29udGVudEVkaXRhYmxlKCkgJiYg
aXM8SFRNTEZvcm1Db250cm9sRWxlbWVudD4oKm5vZGUpKQogICAgICAgICByZXR1cm47CiAjZW5k
aWYKLSAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihub2RlLT5kb2N1bWVudCgpLmZyYW1lKCkp
OworICAgIFJlZlB0ciBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCkuZnJhbWUoKTsKICAgICBpZiAo
IWZyYW1lKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRl
eCA4MDM0ZTIxN2M2ODRiODVkZDA4YmNmMjI4ZTc3NzExZTYzYWQwZTBiLi43Njc3MjFlMTA3ODlj
Y2MxMmZhNWJlNTVhYmE5ZGIyNTZkOWEwODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
CkBAIC0xMjg5LDcgKzEyODksNyBAQCBpbnQgRE9NV2luZG93Ojppbm5lcldpZHRoKCkgY29uc3QK
ICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvLyBGb3JjZSBlbm91Z2ggbGF5b3V0IGluIHRoZSBw
YXJlbnQgZG9jdW1lbnQgdG8gZW5zdXJlIHRoYXQgdGhlIEZyYW1lVmlldyBoYXMgYmVlbiByZXNp
emVkLgotICAgIGlmIChhdXRvIG93bmVyRWxlbWVudCA9IG1ha2VSZWZQdHIoZnJhbWVFbGVtZW50
KCkpKQorICAgIGlmIChSZWZQdHIgb3duZXJFbGVtZW50ID0gZnJhbWVFbGVtZW50KCkpCiAgICAg
ICAgIG93bmVyRWxlbWVudC0+ZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZkRpbWVuc2lvbnNPdXRP
ZkRhdGUoKm93bmVyRWxlbWVudCwgV2lkdGhEaW1lbnNpb25zQ2hlY2spOwogCiAgICAgUmVmUHRy
IGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKQEAgLTE4NjksNyArMTg2OSw3IEBAIHZvaWQgRE9NV2lu
ZG93OjpjYW5jZWxBbmltYXRpb25GcmFtZShpbnQgaWQpCiAKIGludCBET01XaW5kb3c6OnJlcXVl
c3RJZGxlQ2FsbGJhY2soUmVmPElkbGVSZXF1ZXN0Q2FsbGJhY2s+JiYgY2FsbGJhY2ssIGNvbnN0
IElkbGVSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBhdXRvIGRvY3VtZW50ID0gbWFr
ZVJlZlB0cih0aGlzLT5kb2N1bWVudCgpKTsKKyAgICBSZWZQdHIgZG9jdW1lbnQgPSB0aGlzLT5k
b2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJl
dHVybiBkb2N1bWVudC0+cmVxdWVzdElkbGVDYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSwgU2Vj
b25kczo6ZnJvbU1pbGxpc2Vjb25kcyhvcHRpb25zLnRpbWVvdXQpKTsKQEAgLTE4NzcsNyArMTg3
Nyw3IEBAIGludCBET01XaW5kb3c6OnJlcXVlc3RJZGxlQ2FsbGJhY2soUmVmPElkbGVSZXF1ZXN0
Q2FsbGJhY2s+JiYgY2FsbGJhY2ssIGNvbnN0IElkCiAKIHZvaWQgRE9NV2luZG93OjpjYW5jZWxJ
ZGxlQ2FsbGJhY2soaW50IGlkKQogewotICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmUHRyKHRo
aXMtPmRvY3VtZW50KCkpOworICAgIFJlZlB0ciBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7
CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIHJldHVybiBkb2N1bWVu
dC0+Y2FuY2VsSWRsZUNhbGxiYWNrKGlkKTsKQEAgLTIyMzcsNyArMjIzNyw3IEBAIGJvb2wgRE9N
V2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwg
RXZlbnRMaXN0ZW5lciYKIHZvaWQgRE9NV2luZG93OjpsYW5ndWFnZXNDaGFuZ2VkKCkKIHsKICAg
ICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeXN0ZW0tc3RhdGUu
aHRtbCNkb20tbmF2aWdhdG9yLWxhbmd1YWdlcwotICAgIGlmIChhdXRvIGRvY3VtZW50ID0gbWFr
ZVJlZlB0cih0aGlzLT5kb2N1bWVudCgpKSkKKyAgICBpZiAoUmVmUHRyIGRvY3VtZW50ID0gdGhp
cy0+ZG9jdW1lbnQoKSkKICAgICAgICAgZG9jdW1lbnQtPnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVu
dE9uV2luZG93KFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkubGFuZ3VhZ2VjaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50
OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKQEAgLTIyNDYsNyArMjI0Niw3IEBAIHZvaWQgRE9N
V2luZG93OjpkaXNwYXRjaExvYWRFdmVudCgpCiAgICAgLy8gSWYgd2UgZGlkIG5vdCBwcm90ZWN0
IGl0LCB0aGUgZG9jdW1lbnQgbG9hZGVyIGFuZCBpdHMgdGltaW5nIHN1Ym9iamVjdCBtaWdodCBn
ZXQgZGVzdHJveWVkCiAgICAgLy8gYXMgYSBzaWRlIGVmZmVjdCBvZiB3aGF0IGV2ZW50IGhhbmRs
aW5nIGNvZGUgZG9lcy4KICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07Ci0gICAgYXV0
byBwcm90ZWN0ZWRMb2FkZXIgPSBtYWtlUmVmUHRyKGZyYW1lKCkgPyBmcmFtZSgpLT5sb2FkZXIo
KS5kb2N1bWVudExvYWRlcigpIDogbnVsbHB0cik7CisgICAgUmVmUHRyIHByb3RlY3RlZExvYWRl
ciA9IGZyYW1lKCkgPyBmcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpIDogbnVsbHB0
cjsKICAgICBib29sIHNob3VsZE1hcmtMb2FkRXZlbnRUaW1lcyA9IHByb3RlY3RlZExvYWRlciAm
JiAhcHJvdGVjdGVkTG9hZGVyLT50aW1pbmcoKS5sb2FkRXZlbnRTdGFydCgpOwogCiAgICAgaWYg
KHNob3VsZE1hcmtMb2FkRXZlbnRUaW1lcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9s
bGVyLmNwcAppbmRleCA0ZmVlODZlYzhhNTIxMDAzOWU1MmQ2OTAwY2Q4YWI4MzU3ZjkyYTYyLi5m
NTBhMWM3ZTNjYjFkMjUzNTllM2MzN2MwYWI3ZDdmNDcxYzRjYWViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtMTM4Niw4ICsxMzg2LDggQEAgYm9vbCBEcmFnQ29u
dHJvbGxlcjo6dHJ5VG9VcGRhdGVEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoY29uc3QgRHJhZ0Rh
dGEmIGRyYWdEYXQKICAgICBBU1NFUlQoIW1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzLmlzRW1w
dHkoKSk7CiAgICAgQVNTRVJUKG1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJSYW5nZSk7CiAKLSAg
ICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZihtX2Ryb3BwZWRJbWFnZVBsYWNlaG9sZGVyc1swXS0+
ZG9jdW1lbnQoKSk7Ci0gICAgYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIoZG9jdW1lbnQtPmZyYW1l
KCkpOworICAgIFJlZiBkb2N1bWVudCA9IG1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzWzBdLT5k
b2N1bWVudCgpOworICAgIFJlZlB0ciBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOwogICAgIGlm
ICghZnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTQyOSwxMSArMTQyOSwxMSBA
QCB2b2lkIERyYWdDb250cm9sbGVyOjppbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnNBdENh
cmV0KGNvbnN0IFZlY3RvcjxJbnRTaXplPgogICAgIGlmIChkcm9wQ2FyZXQuaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmUHRyKGRyb3BDYXJl
dC5kZWVwRXF1aXZhbGVudCgpLmRvY3VtZW50KCkpOworICAgIFJlZlB0ciBkb2N1bWVudCA9IGRy
b3BDYXJldC5kZWVwRXF1aXZhbGVudCgpLmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIoZG9jdW1lbnQt
PmZyYW1lKCkpOworICAgIFJlZlB0ciBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOwogICAgIGlm
ICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTQ5OCw3ICsxNDk4LDcgQEAgdm9pZCBE
cmFnQ29udHJvbGxlcjo6aW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzQXRDYXJldChjb25z
dCBWZWN0b3I8SW50U2l6ZT4KIAogdm9pZCBEcmFnQ29udHJvbGxlcjo6ZmluYWxpemVEcm9wcGVk
SW1hZ2VQbGFjZWhvbGRlcihIVE1MSW1hZ2VFbGVtZW50JiBwbGFjZWhvbGRlciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb24pCiB7Ci0gICAgcGxhY2Vob2xkZXIuZG9jdW1l
bnQoKS5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6SW50ZXJuYWxBc3luY1Rhc2ss
IFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKSwgcGxhY2Vob2xkZXIgPSBtYWtlUmVm
UHRyKHBsYWNlaG9sZGVyKV0gKCkgbXV0YWJsZSB7CisgICAgcGxhY2Vob2xkZXIuZG9jdW1lbnQo
KS5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6SW50ZXJuYWxBc3luY1Rhc2ssIFtj
b21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKSwgcGxhY2Vob2xkZXIgPSBSZWYgeyBwbGFj
ZWhvbGRlciB9XSAoKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHBsYWNlaG9sZGVyLT5pc0Ryb3Bw
ZWRJbWFnZVBsYWNlaG9sZGVyKCkpIHsKICAgICAgICAgICAgIHBsYWNlaG9sZGVyLT5yZW1vdmVB
dHRyaWJ1dGUoSFRNTE5hbWVzOjpoZWlnaHRBdHRyKTsKICAgICAgICAgICAgIHBsYWNlaG9sZGVy
LT5yZW1vdmVJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA5NWJhZWJhNDE3MjE5ZWJlMzAz
MzdjM2Y2ZWZlODI3MjU1ZWQ5NDZlLi40ZjQ3OWEyZDFlNmVjODQ1Y2NkYjY1NWJiNDQyNzFhMmVm
ZTM3NmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC00NDcsNyArNDQ3
LDcgQEAgc3RhdGljIE5vZGUqIG5vZGVUb1NlbGVjdE9uTW91c2VEb3duRm9yTm9kZShOb2RlJiB0
YXJnZXROb2RlKQogICAgIGlmIChIVE1MRWxlbWVudDo6aXNJbnNpZGVJbWFnZU92ZXJsYXkodGFy
Z2V0Tm9kZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgaWYgKGF1dG8gcm9vdFVz
ZXJTZWxlY3RBbGwgPSBtYWtlUmVmUHRyKFBvc2l0aW9uOjpyb290VXNlclNlbGVjdEFsbEZvck5v
ZGUoJnRhcmdldE5vZGUpKSkKKyAgICBpZiAoUmVmUHRyIHJvb3RVc2VyU2VsZWN0QWxsID0gUG9z
aXRpb246OnJvb3RVc2VyU2VsZWN0QWxsRm9yTm9kZSgmdGFyZ2V0Tm9kZSkpCiAgICAgICAgIHJl
dHVybiByb290VXNlclNlbGVjdEFsbC5nZXQoKTsKIAogICAgIGlmICh0YXJnZXROb2RlLnNob3Vs
ZFNlbGVjdE9uTW91c2VEb3duKCkpCkBAIC00NTgsNyArNDU4LDcgQEAgc3RhdGljIE5vZGUqIG5v
ZGVUb1NlbGVjdE9uTW91c2VEb3duRm9yTm9kZShOb2RlJiB0YXJnZXROb2RlKQogCiBzdGF0aWMg
VmlzaWJsZVNlbGVjdGlvbiBleHBhbmRTZWxlY3Rpb25Ub1Jlc3BlY3RTZWxlY3RPbk1vdXNlRG93
bihOb2RlJiB0YXJnZXROb2RlLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCiB7
Ci0gICAgYXV0byBub2RlVG9TZWxlY3QgPSBtYWtlUmVmUHRyKG5vZGVUb1NlbGVjdE9uTW91c2VE
b3duRm9yTm9kZSh0YXJnZXROb2RlKSk7CisgICAgUmVmUHRyIG5vZGVUb1NlbGVjdCA9IG5vZGVU
b1NlbGVjdE9uTW91c2VEb3duRm9yTm9kZSh0YXJnZXROb2RlKTsKICAgICBpZiAoIW5vZGVUb1Nl
bGVjdCkKICAgICAgICAgcmV0dXJuIHNlbGVjdGlvbjsKIApAQCAtNzA1LDcgKzcwNSw3IEBAIGJv
b2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnRTaW5nbGVDbGljayhjb25zdCBN
b3VzZUV2ZW50V2l0aEhpdFRlc3RSCiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpjYW5Nb3VzZURvd25T
dGFydFNlbGVjdChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKIHsK
LSAgICBhdXRvIG5vZGUgPSBtYWtlUmVmUHRyKGV2ZW50LnRhcmdldE5vZGUoKSk7CisgICAgUmVm
UHRyIG5vZGUgPSBldmVudC50YXJnZXROb2RlKCk7CiAKICAgICBpZiAoUGFnZSogcGFnZSA9IG1f
ZnJhbWUucGFnZSgpKSB7CiAgICAgICAgIGlmICghcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuc2hv
dWxkVXNlTW91c2VFdmVudEZvclNlbGVjdGlvbihldmVudC5ldmVudCgpKSkKQEAgLTExOTMsNyAr
MTE5Myw3IEBAIEhpdFRlc3RSZXN1bHQgRXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2lu
dChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIE9wdGlvCiAgICAgaWYgKCFyZXF1ZXN0LnJlYWRP
bmx5KCkpCiAgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlSG92ZXJBY3RpdmVTdGF0
ZShyZXF1ZXN0LCByZXN1bHQudGFyZ2V0RWxlbWVudCgpKTsKIAotICAgIGF1dG8gaW5uZXJOb2Rl
ID0gbWFrZVJlZlB0cihyZXN1bHQuaW5uZXJOb2RlKCkpOworICAgIFJlZlB0ciBpbm5lck5vZGUg
PSByZXN1bHQuaW5uZXJOb2RlKCk7CiAgICAgaWYgKHJlcXVlc3QuZGlzYWxsb3dzVXNlckFnZW50
U2hhZG93Q29udGVudCgpCiAgICAgICAgIHx8IChyZXF1ZXN0LmRpc2FsbG93c1VzZXJBZ2VudFNo
YWRvd0NvbnRlbnRFeGNlcHRGb3JJbWFnZU92ZXJsYXlzKCkgJiYgaW5uZXJOb2RlICYmICFIVE1M
RWxlbWVudDo6aXNJbnNpZGVJbWFnZU92ZXJsYXkoKmlubmVyTm9kZSkpKQogICAgICAgICByZXN1
bHQuc2V0VG9Ob25Vc2VyQWdlbnRTaGFkb3dBbmNlc3RvcigpOwpAQCAtNDM5Myw3ICs0MzkzLDcg
QEAgdm9pZCBFdmVudEhhbmRsZXI6OnNjaGVkdWxlU2Nyb2xsRXZlbnQoKQogICAgIHNldEZyYW1l
V2FzU2Nyb2xsZWRCeVVzZXIoKTsKICAgICBpZiAoIW1fZnJhbWUudmlldygpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWZQdHIobV9mcmFtZS5kb2N1bWVudCgp
KTsKKyAgICBSZWZQdHIgZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCk7CiAgICAgaWYgKCFk
b2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIGRvY3VtZW50LT5hZGRQZW5kaW5nU2Nyb2xs
RXZlbnRUYXJnZXQoKmRvY3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA5
ZDE1NjkyZjdkOThkZTI5ZWU4Y2M5OTQ5ZjQ5OTc1NmM0YTI3YTQyLi44OWRkOWRjZjQwN2Y1M2Ew
YTg3ZjU5YTY1NWI5MzQ5ZjM1MzRkZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBA
IC0yMjMxLDcgKzIyMzEsNyBAQCBib29sIEZyYW1lVmlldzo6c2Nyb2xsVG9GcmFnbWVudEludGVy
bmFsKFN0cmluZ1ZpZXcgZnJhZ21lbnRJZGVudGlmaWVyKQogICAgIGF1dG8mIGRvY3VtZW50ID0g
KmZyYW1lKCkuZG9jdW1lbnQoKTsKICAgICBSRUxFQVNFX0FTU0VSVChkb2N1bWVudC5oYXZlU3R5
bGVzaGVldHNMb2FkZWQoKSk7CiAKLSAgICBhdXRvIGFuY2hvckVsZW1lbnQgPSBtYWtlUmVmUHRy
KGRvY3VtZW50LmZpbmRBbmNob3IoZnJhZ21lbnRJZGVudGlmaWVyKSk7CisgICAgUmVmUHRyIGFu
Y2hvckVsZW1lbnQgPSBkb2N1bWVudC5maW5kQW5jaG9yKGZyYWdtZW50SWRlbnRpZmllcik7CiAK
ICAgICBMT0coU2Nyb2xsaW5nLCAiIGFuY2hvckVsZW1lbnQgaXMgJXAiLCBhbmNob3JFbGVtZW50
LmdldCgpKTsKIApAQCAtMjM3OSw3ICsyMzc5LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNjcm9sbFRv
Rm9jdXNlZEVsZW1lbnRUaW1lckZpcmVkKCkKIHZvaWQgRnJhbWVWaWV3OjpzY3JvbGxUb0ZvY3Vz
ZWRFbGVtZW50SW50ZXJuYWwoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fc2hvdWxkU2Nyb2xs
VG9Gb2N1c2VkRWxlbWVudCk7Ci0gICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWZQdHIoZnJhbWUo
KS5kb2N1bWVudCgpKTsKKyAgICBSZWZQdHIgZG9jdW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCk7
CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMzg4LDcgKzIzODgs
NyBAQCB2b2lkIEZyYW1lVmlldzo6c2Nyb2xsVG9Gb2N1c2VkRWxlbWVudEludGVybmFsKCkKICAg
ICAgICAgcmV0dXJuOyAvLyBVcGRhdGluZyB0aGUgbGF5b3V0IG1heSBoYXZlIHJhbiBzY3JpcHRz
LgogICAgIG1fc2hvdWxkU2Nyb2xsVG9Gb2N1c2VkRWxlbWVudCA9IGZhbHNlOwogCi0gICAgYXV0
byBmb2N1c2VkRWxlbWVudCA9IG1ha2VSZWZQdHIoZG9jdW1lbnQtPmZvY3VzZWRFbGVtZW50KCkp
OworICAgIFJlZlB0ciBmb2N1c2VkRWxlbWVudCA9IGRvY3VtZW50LT5mb2N1c2VkRWxlbWVudCgp
OwogICAgIGlmICghZm9jdXNlZEVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKICAgICBhdXRvIHVw
ZGF0ZVRhcmdldCA9IGZvY3VzZWRFbGVtZW50LT5mb2N1c0FwcGVhcmFuY2VVcGRhdGVUYXJnZXQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW1hZ2VPdmVybGF5Q29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwCmlu
ZGV4IDc1NDBkZjEwYTY2YTM0OWZiYTk0NzcyZGNhYTM2NzM3NzgxYWI1OTkuLmJiMjM2YTg5MjBi
MzkzM2UwMzJiYjAzYTgzMTk2ZjE2MjM4MmNkYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvSW1hZ2VPdmVybGF5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9JbWFnZU92ZXJsYXlDb250cm9sbGVyLmNwcApAQCAtNzQsOCArNzQsOCBAQCB2b2lkIEltYWdl
T3ZlcmxheUNvbnRyb2xsZXI6OnNlbGVjdGlvblF1YWRzRGlkQ2hhbmdlKEZyYW1lJiBmcmFtZSwg
Y29uc3QgVmVjdG9yPAogICAgICAgICBpZiAoIUhUTUxFbGVtZW50Ojppc0luc2lkZUltYWdlT3Zl
cmxheSgqc2VsZWN0ZWRSYW5nZSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
ICAgICBpZiAoYXV0byBob3N0ID0gbWFrZVJlZlB0cihzZWxlY3RlZFJhbmdlLT5zdGFydENvbnRh
aW5lcigpLnNoYWRvd0hvc3QoKSk7IGlzPEhUTUxFbGVtZW50Pihob3N0KSkKLSAgICAgICAgICAg
IHJldHVybiBtYWtlUmVmUHRyKGRvd25jYXN0PEhUTUxFbGVtZW50PigqaG9zdCkpOworICAgICAg
ICBpZiAoUmVmUHRyIGhvc3QgPSBzZWxlY3RlZFJhbmdlLT5zdGFydENvbnRhaW5lcigpLnNoYWRv
d0hvc3QoKTsgaXM8SFRNTEVsZW1lbnQ+KGhvc3QpKQorICAgICAgICAgICAgcmV0dXJuIHN0YXRp
Y19wb2ludGVyX2Nhc3Q8SFRNTEVsZW1lbnQ+KGhvc3QpOwogCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0pKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBmOWY4Y2ZhMGQ4YTNlZjRkNTI4
MjRjZWMzYzg5YmY3NGFlZjIzYTllLi4zNzI0OGU0M2VjNDhiNDhiYmRlNGNmYzIwMTM1ZWQ3ZDA3
ZmU4M2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTg4NywxMSArODg3LDExIEBAIHN0YXRpYyB2
b2lkIHJlcGxhY2VSYW5nZXMoUGFnZSYgcGFnZSwgY29uc3QgVmVjdG9yPEZpbmRSZXBsYWNlbWVu
dFJhbmdlPiYgcmFuZ2VzCiAgICAgICAgIGlmIChmaXJzdE5vZGUgPT0gc2Vjb25kTm9kZSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBhdXRvIGZpcnN0RnJhbWUgPSBtYWtl
UmVmUHRyKGZpcnN0Tm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpKTsKKyAgICAgICAgUmVmUHRyIGZp
cnN0RnJhbWUgPSBmaXJzdE5vZGUtPmRvY3VtZW50KCkuZnJhbWUoKTsKICAgICAgICAgaWYgKCFm
aXJzdEZyYW1lKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgYXV0byBzZWNv
bmRGcmFtZSA9IG1ha2VSZWZQdHIoc2Vjb25kTm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpKTsKKyAg
ICAgICAgUmVmUHRyIHNlY29uZEZyYW1lID0gc2Vjb25kTm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgp
OwogICAgICAgICBpZiAoIXNlY29uZEZyYW1lKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CkBAIC05MDQsNyArOTA0LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJhbmdlcyhQYWdlJiBwYWdl
LCBjb25zdCBWZWN0b3I8RmluZFJlcGxhY2VtZW50UmFuZ2U+JiByYW5nZXMKICAgICB9KTsKIAog
ICAgIGZvciAoYXV0byYgY29udGFpbmVyIDogY29udGFpbmVyTm9kZXNJbk9yZGVyT2ZSZXBsYWNl
bWVudCkgewotICAgICAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihjb250YWluZXItPmRvY3Vt
ZW50KCkuZnJhbWUoKSk7CisgICAgICAgIFJlZlB0ciBmcmFtZSA9IGNvbnRhaW5lci0+ZG9jdW1l
bnQoKS5mcmFtZSgpOwogICAgICAgICBpZiAoIWZyYW1lKQogICAgICAgICAgICAgY29udGludWU7
CiAKQEAgLTkyOSw3ICs5MjksNyBAQCB1aW50MzJfdCBQYWdlOjpyZXBsYWNlUmFuZ2VzV2l0aFRl
eHQoY29uc3QgVmVjdG9yPFNpbXBsZVJhbmdlPiYgcmFuZ2VzVG9SZXBsYWNlLAogICAgIHJlcGxh
Y2VtZW50UmFuZ2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmFuZ2VzVG9SZXBsYWNlLnNpemUo
KSk7CiAKICAgICBmb3IgKGF1dG8mIHJhbmdlIDogcmFuZ2VzVG9SZXBsYWNlKSB7Ci0gICAgICAg
IGF1dG8gaGlnaGVzdFJvb3QgPSBtYWtlUmVmUHRyKGhpZ2hlc3RFZGl0YWJsZVJvb3QobWFrZURl
cHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihyYW5nZS5zdGFydCkpKTsKKyAgICAgICAgUmVmUHRyIGhp
Z2hlc3RSb290ID0gaGlnaGVzdEVkaXRhYmxlUm9vdChtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0
aW9uKHJhbmdlLnN0YXJ0KSk7CiAgICAgICAgIGlmICghaGlnaGVzdFJvb3QgfHwgaGlnaGVzdFJv
b3QgIT0gaGlnaGVzdEVkaXRhYmxlUm9vdChtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKHJh
bmdlLmVuZCkpIHx8ICFoaWdoZXN0Um9vdC0+ZG9jdW1lbnQoKS5mcmFtZSgpKQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2Rl
Q29udGVudHMoKmhpZ2hlc3RSb290KTsKQEAgLTk2Niw3ICs5NjYsNyBAQCB2b2lkIFBhZ2U6OnNl
dEVkaXRhYmxlUmVnaW9uRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgaWYgKG1faXNFZGl0YWJs
ZVJlZ2lvbkVuYWJsZWQgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogICAgIG1faXNFZGl0
YWJsZVJlZ2lvbkVuYWJsZWQgPSBlbmFibGVkOwotICAgIGF1dG8gZnJhbWVWaWV3ID0gbWFrZVJl
ZlB0cihtYWluRnJhbWUoKS52aWV3KCkpOworICAgIFJlZlB0ciBmcmFtZVZpZXcgPSBtYWluRnJh
bWUoKS52aWV3KCk7CiAgICAgaWYgKCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybjsKICAgICBp
ZiAoYXV0byogcmVuZGVyVmlldyA9IGZyYW1lVmlldy0+cmVuZGVyVmlldygpKQpAQCAtOTg2LDEx
ICs5ODYsMTEgQEAgYm9vbCBQYWdlOjpzaG91bGRCdWlsZEVkaXRhYmxlUmVnaW9uKCkgY29uc3QK
IAogVmVjdG9yPFJlZjxFbGVtZW50Pj4gUGFnZTo6ZWRpdGFibGVFbGVtZW50c0luUmVjdChjb25z
dCBGbG9hdFJlY3QmIHNlYXJjaFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMpIGNvbnN0CiB7Ci0g
ICAgYXV0byBmcmFtZVZpZXcgPSBtYWtlUmVmUHRyKG1haW5GcmFtZSgpLnZpZXcoKSk7CisgICAg
UmVmUHRyIGZyYW1lVmlldyA9IG1haW5GcmFtZSgpLnZpZXcoKTsKICAgICBpZiAoIWZyYW1lVmll
dykKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmUHRy
KG1haW5GcmFtZSgpLmRvY3VtZW50KCkpOworICAgIFJlZlB0ciBkb2N1bWVudCA9IG1haW5GcmFt
ZSgpLmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIHsgfTsK
IApAQCAtMTY2Niw3ICsxNjY2LDcgQEAgdm9pZCBQYWdlOjpkb0FmdGVyVXBkYXRlUmVuZGVyaW5n
KCkKICAgICAgICAgaWYgKGFwcEhpZ2hsaWdodFN0b3JhZ2UtPmhhc1VucmVzdG9yZWRIaWdobGln
aHRzKCkgJiYgTW9ub3RvbmljVGltZTo6bm93KCkgLSBhcHBIaWdobGlnaHRTdG9yYWdlLT5sYXN0
UmFuZ2VTZWFyY2hUaW1lKCkgPiAxX3MpIHsKICAgICAgICAgICAgIGFwcEhpZ2hsaWdodFN0b3Jh
Z2UtPnJlc2V0TGFzdFJhbmdlU2VhcmNoVGltZSgpOwogICAgICAgICAgICAgZG9jdW1lbnQuZXZl
bnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkludGVybmFsQXN5bmNUYXNrLCBbd2Vha0Rv
Y3VtZW50ID0gbWFrZVdlYWtQdHIoZG9jdW1lbnQpXSB7Ci0gICAgICAgICAgICAgICAgYXV0byBk
b2N1bWVudCA9IG1ha2VSZWZQdHIod2Vha0RvY3VtZW50LmdldCgpKTsKKyAgICAgICAgICAgICAg
ICBSZWZQdHIgZG9jdW1lbnQgeyB3ZWFrRG9jdW1lbnQuZ2V0KCkgfTsKICAgICAgICAgICAgICAg
ICBpZiAoIWRvY3VtZW50KQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTI2MjAs
NyArMjYyMCw3IEBAIHZvaWQgUGFnZTo6c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJp
ZGUoQ29sb3ImJiB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPCiAgICAgc2NoZWR1bGVSZW5kZXJp
bmdVcGRhdGUoeyB9KTsKIAogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKLSAgICBpZiAoYXV0
byBmcmFtZVZpZXcgPSBtYWtlUmVmUHRyKG1haW5GcmFtZSgpLnZpZXcoKSkpIHsKKyAgICBpZiAo
UmVmUHRyIGZyYW1lVmlldyA9IG1haW5GcmFtZSgpLnZpZXcoKSkgewogICAgICAgICBpZiAoYXV0
byogcmVuZGVyVmlldyA9IGZyYW1lVmlldy0+cmVuZGVyVmlldygpKSB7CiAgICAgICAgICAgICBp
ZiAocmVuZGVyVmlldy0+dXNlc0NvbXBvc2l0aW5nKCkpCiAgICAgICAgICAgICAgICAgcmVuZGVy
Vmlldy0+Y29tcG9zaXRvcigpLnVwZGF0ZUxheWVyRm9yT3ZlcmhhbmdBcmVhc0JhY2tncm91bmRD
b2xvcigpOwpAQCAtMzQ5Nyw3ICszNDk3LDcgQEAgdm9pZCBQYWdlOjpjb25maWd1cmVMb2dnaW5n
Q2hhbm5lbChjb25zdCBTdHJpbmcmIGNoYW5uZWxOYW1lLCBXVEZMb2dDaGFubmVsU3RhdGUKIHZv
aWQgUGFnZTo6ZGlkRmluaXNoTG9hZGluZ0ltYWdlRm9yRWxlbWVudChIVE1MSW1hZ2VFbGVtZW50
JiBlbGVtZW50KQogewogICAgIGVsZW1lbnQuZG9jdW1lbnQoKS5ldmVudExvb3AoKS5xdWV1ZVRh
c2soVGFza1NvdXJjZTo6TmV0d29ya2luZywgW2VsZW1lbnQgPSBtYWtlUmVmKGVsZW1lbnQpXSgp
IHsKLSAgICAgICAgYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIoZWxlbWVudC0+ZG9jdW1lbnQoKS5m
cmFtZSgpKTsKKyAgICAgICAgUmVmUHRyIGZyYW1lID0gZWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFt
ZSgpOwogICAgICAgICBpZiAoIWZyYW1lKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zNjU1
LDcgKzM2NTUsNyBAQCB2b2lkIFBhZ2U6OnVwZGF0ZUVsZW1lbnRzV2l0aFRleHRSZWNvZ25pdGlv
blJlc3VsdHMoKQogCiAgICAgZm9yIChhdXRvJiBbZWxlbWVudCwgcmVzdWx0XSA6IGVsZW1lbnRz
VG9VcGRhdGUpIHsKICAgICAgICAgZWxlbWVudC0+ZG9jdW1lbnQoKS5ldmVudExvb3AoKS5xdWV1
ZVRhc2soVGFza1NvdXJjZTo6SW50ZXJuYWxBc3luY1Rhc2ssIFtyZXN1bHQgPSBUZXh0UmVjb2du
aXRpb25SZXN1bHQgeyByZXN1bHQgfSwgd2Vha0VsZW1lbnQgPSBtYWtlV2Vha1B0cihlbGVtZW50
LmdldCgpKV0gewotICAgICAgICAgICAgYXV0byBlbGVtZW50ID0gbWFrZVJlZlB0cih3ZWFrRWxl
bWVudC5nZXQoKSk7CisgICAgICAgICAgICBSZWZQdHIgZWxlbWVudCB7IHdlYWtFbGVtZW50Lmdl
dCgpIH07CiAgICAgICAgICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb2xvclNhbXBsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAppbmRleCBmNTM2MmU3
NjliNGI3MzI5MTI3YjY3NDFiYjI0MzkzOThmMGU4NjE1Li41ZGRkMzFmOWZlMmUzYmIyOGNhNzg1
ZTViYzcyNjczMzE0YjAyZGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VD
b2xvclNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxl
ci5jcHAKQEAgLTE2OSwxMSArMTY5LDExIEBAIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IFBhZ2VDb2xv
clNhbXBsZXI6OnNhbXBsZVRvcChQYWdlJiBwYWdlKQogICAgICAgICByZXR1cm4gQ29sb3IoKTsK
ICAgICB9CiAKLSAgICBhdXRvIG1haW5Eb2N1bWVudCA9IG1ha2VSZWZQdHIocGFnZS5tYWluRnJh
bWUoKS5kb2N1bWVudCgpKTsKKyAgICBSZWZQdHIgbWFpbkRvY3VtZW50ID0gcGFnZS5tYWluRnJh
bWUoKS5kb2N1bWVudCgpOwogICAgIGlmICghbWFpbkRvY3VtZW50KQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgYXV0byBmcmFtZVZpZXcgPSBtYWtlUmVmUHRyKHBhZ2UubWFp
bkZyYW1lKCkudmlldygpKTsKKyAgICBSZWZQdHIgZnJhbWVWaWV3ID0gcGFnZS5tYWluRnJhbWUo
KS52aWV3KCk7CiAgICAgaWYgKCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmNwcApp
bmRleCA0NzMxOTA3NDliZDM5NjE2OWExYTYwMzIwYjlkNTI1OTRjNGRhMDczLi4wZmQ5ODI1ZmFj
NmU2Y2I0NmUwZWVlNWIyNjdiMmQ4YmRkNzJmOGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwCkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBQb2lu
dGVyTG9ja0NvbnRyb2xsZXI6OmVucXVldWVFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBF
bGVtZW50KiBlbGVtZW4KIHZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjplbnF1ZXVlRXZlbnQo
Y29uc3QgQXRvbVN0cmluZyYgdHlwZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIC8vIEZJ
WE1FOiBTcGVjIGRvZXNuJ3Qgc3BlY2lmeSB3aGljaCB0YXNrIHNvdXJjZSB1c2UuCi0gICAgaWYg
KGF1dG8gcHJvdGVjdGVkRG9jdW1lbnQgPSBtYWtlUmVmUHRyKGRvY3VtZW50KSkKKyAgICBpZiAo
UmVmUHRyIHByb3RlY3RlZERvY3VtZW50ID0gZG9jdW1lbnQpCiAgICAgICAgIHByb3RlY3RlZERv
Y3VtZW50LT5xdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoVGFza1NvdXJjZTo6VXNlckludGVyYWN0
aW9uLCBFdmVudDo6Y3JlYXRlKHR5cGUsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6Tm8pKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9U
ZXh0SW5kaWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5jcHAK
aW5kZXggODZmMTBkOWI1ZWQzNGJjMGUyMGViYjY5MzJmZjRhZDk0Yjc2NjM0Zi4uZDZmYjczYjY2
MWIwNzFmNzNiNDMyYjUwYzEyZDQ4YTNiYjQ4Njc4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJ
bmRpY2F0b3IuY3BwCkBAIC02OSwxMSArNjksMTEgQEAgUmVmPFRleHRJbmRpY2F0b3I+IFRleHRJ
bmRpY2F0b3I6OmNyZWF0ZShjb25zdCBUZXh0SW5kaWNhdG9yRGF0YSYgZGF0YSkKIAogUmVmUHRy
PFRleHRJbmRpY2F0b3I+IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZShjb25zdCBTaW1w
bGVSYW5nZSYgcmFuZ2UsIE9wdGlvblNldDxUZXh0SW5kaWNhdG9yT3B0aW9uPiBvcHRpb25zLCBU
ZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbiBwcmVzZW50YXRpb25UcmFuc2l0aW9u
LCBGbG9hdFNpemUgbWFyZ2luKQogewotICAgIGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKHJhbmdl
LnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKS5mcmFtZSgpKTsKKyAgICBSZWZQdHIgZnJhbWUg
PSByYW5nZS5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCkuZnJhbWUoKTsKICAgICBpZiAoIWZy
YW1lKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtl
UmVmUHRyKGZyYW1lLT5kb2N1bWVudCgpKTsKKyAgICBSZWZQdHIgZG9jdW1lbnQgPSBmcmFtZS0+
ZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9VbmRvTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1VuZG9NYW5hZ2VyLmNwcAppbmRleCBiNmM5NmUwZmE4MjZmOTQ3NDlh
NjRiMDFjYWQxOTc0OTExMjQzMzFjLi4zMzcwMDdkMDZlZGZhYjllOTg1YzdmMmY1ZDc0YWY2Njcy
NWI0NzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VuZG9NYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VuZG9NYW5hZ2VyLmNwcApAQCAtNDksNyArNDksNyBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBVbmRvTWFuYWdlcjo6YWRkSXRlbShSZWY8VW5kb0l0ZW0+JiYg
aXRlbSkKICAgICBpZiAoaXRlbS0+dW5kb01hbmFnZXIoKSkKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IEludmFsaWRNb2RpZmljYXRpb25FcnJvciwgIlRoaXMgaXRlbSBoYXMgYWxyZWFkeSBi
ZWVuIGFkZGVkIHRvIGFuIFVuZG9NYW5hZ2VyIl9zIH07CiAKLSAgICBhdXRvIGZyYW1lID0gbWFr
ZVJlZlB0cihtX2RvY3VtZW50LmZyYW1lKCkpOworICAgIFJlZlB0ciBmcmFtZSA9IG1fZG9jdW1l
bnQuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
U2VjdXJpdHlFcnJvciwgIkEgYnJvd3NpbmcgY29udGV4dCBpcyByZXF1aXJlZCB0byBhZGQgYW4g
VW5kb0l0ZW0iX3MgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZl
bnRIYW5kbGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9T
Lm1tCmluZGV4IGU5N2M4Mzc1OWNkZGM5YWVjYjE5ZDc4ZjhlYWNjNzM5M2JlYjI4ZDIuLjQ0MzJh
YTdkZGIwNGU1MmZhMTllYTIzMWZhOGNmZDhmNzhhNjc0ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW0KQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIEV2ZW50
SGFuZGxlcjo6Zm9jdXNEb2N1bWVudFZpZXcoKQogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKGF1dG8gZnJhbWVWaWV3ID0gbWFrZVJlZlB0cihtX2ZyYW1lLnZpZXco
KSkpIHsKKyAgICBpZiAoUmVmUHRyIGZyYW1lVmlldyA9IG1fZnJhbWUudmlldygpKSB7CiAgICAg
ICAgIGlmIChOU1ZpZXcgKmRvY3VtZW50VmlldyA9IGZyYW1lVmlldy0+ZG9jdW1lbnRWaWV3KCkp
IHsKICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLmZvY3VzTlNWaWV3KGRvY3VtZW50Vmlldyk7
CiAgICAgICAgICAgICAvLyBDaGVjayBwYWdlKCkgYWdhaW4gYmVjYXVzZSBmb2N1c05TVmlldyBj
YW4gY2F1c2UgcmVlbnRyYW5jeS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9z
L0ZyYW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KaW5kZXgg
MGEwMzZhMTQ5ZTNhM2UwN2FmMTkyZWYzZWVlNmViMjA3OTUwMTVhMS4uODY5YjMxMDdjMGNhOTJm
ZDAyZjI0Y2I0ZGM5NjU0MjQ0ODNkM2E2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9pb3MvRnJhbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1Mu
bW0KQEAgLTM5Nyw3ICszOTcsNyBAQCBzdGF0aWMgYm9vbCBub2RlSXNNb3VzZUZvY3VzYWJsZShO
b2RlJiBub2RlKQogICAgIGlmIChlbGVtZW50LmlzTW91c2VGb2N1c2FibGUoKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICBpZiAoYXV0byBzaGFkb3dSb290ID0gbWFrZVJlZlB0cihlbGVt
ZW50LnNoYWRvd1Jvb3QoKSkpIHsKKyAgICBpZiAoUmVmUHRyIHNoYWRvd1Jvb3QgPSBlbGVtZW50
LnNoYWRvd1Jvb3QoKSkgewogICAgICAgICBpZiAoc2hhZG93Um9vdC0+ZGVsZWdhdGVzRm9jdXMo
KSkgewogICAgICAgICAgICAgZm9yIChhdXRvJiBub2RlIDogY29tcG9zZWRUcmVlRGVzY2VuZGFu
dHMoZWxlbWVudCkpIHsKICAgICAgICAgICAgICAgICBpZiAoaXM8RWxlbWVudD4obm9kZSkgJiYg
ZG93bmNhc3Q8RWxlbWVudD4obm9kZSkuaXNNb3VzZUZvY3VzYWJsZSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCmluZGV4IGYzMTRkY2E5YjUwNTllOTNkMGEw
Mjk1M2JiMTFlZjhjMjg2N2VlNjQuLjc0OGJmYjk4OGMxNTdmYjhjNDRmZWYyYjFiZDYyYWEzYjRl
MjBkNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KQEAg
LTE3OCw3ICsxNzgsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6Zm9jdXNEb2N1bWVudFZpZXcoKQog
ICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGF1dG8gZnJhbWVWaWV3
ID0gbWFrZVJlZlB0cihtX2ZyYW1lLnZpZXcoKSkpIHsKKyAgICBpZiAoUmVmUHRyIGZyYW1lVmll
dyA9IG1fZnJhbWUudmlldygpKSB7CiAgICAgICAgIGlmIChOU1ZpZXcgKmRvY3VtZW50VmlldyA9
IGZyYW1lVmlldy0+ZG9jdW1lbnRWaWV3KCkpIHsKICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgp
LmZvY3VzTlNWaWV3KGRvY3VtZW50Vmlldyk7CiAgICAgICAgICAgICAvLyBDaGVjayBwYWdlKCkg
YWdhaW4gYmVjYXVzZSBmb2N1c05TVmlldyBjYW4gY2F1c2UgcmVlbnRyYW5jeS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXJNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9JbWFnZU92ZXJsYXlDb250cm9sbGVyTWFjLm1tCmlu
ZGV4IGM5MDQ0OWY1ZGQ0M2QyY2FmYWIyNjU1N2E0MGYwYjYwZmYzNTY0M2QuLjQ4MzNjZGQ1ZTgy
YzU4ZTUxYmIzMWMzYmE2MTA0ZjU2NzU2NGM4ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvbWFjL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9tYWMvSW1hZ2VPdmVybGF5Q29udHJvbGxlck1hYy5tbQpAQCAtNzAsMTEgKzcwLDEx
IEBAIHZvaWQgSW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6dXBkYXRlRGF0YURldGVjdG9ySGlnaGxp
Z2h0cyhjb25zdCBIVE1MRWxlbWVudCYgb3ZlCiAgICAgaWYgKGRhdGFEZXRlY3RvclJlc3VsdEVs
ZW1lbnRzV2l0aEhpZ2hsaWdodHMgPT0gZGF0YURldGVjdG9yUmVzdWx0RWxlbWVudHMpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGF1dG8gbWFpbkZyYW1lVmlldyA9IG1ha2VSZWZQdHIobV9wYWdl
LT5tYWluRnJhbWUoKS52aWV3KCkpOworICAgIFJlZlB0ciBtYWluRnJhbWVWaWV3ID0gbV9wYWdl
LT5tYWluRnJhbWUoKS52aWV3KCk7CiAgICAgaWYgKCFtYWluRnJhbWVWaWV3KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBhdXRvIGZyYW1lVmlldyA9IG1ha2VSZWZQdHIob3ZlcmxheUhvc3QuZG9j
dW1lbnQoKS52aWV3KCkpOworICAgIFJlZlB0ciBmcmFtZVZpZXcgPSBvdmVybGF5SG9zdC5kb2N1
bWVudCgpLnZpZXcoKTsKICAgICBpZiAoIWZyYW1lVmlldykKICAgICAgICAgcmV0dXJuOwogCkBA
IC05OCw3ICs5OCw3IEBAIHZvaWQgSW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6dXBkYXRlRGF0YURl
dGVjdG9ySGlnaGxpZ2h0cyhjb25zdCBIVE1MRWxlbWVudCYgb3ZlCiAKIGJvb2wgSW1hZ2VPdmVy
bGF5Q29udHJvbGxlcjo6cGxhdGZvcm1IYW5kbGVNb3VzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgZXZlbnQpCiB7Ci0gICAgYXV0byBtYWluRnJhbWVWaWV3ID0gbWFrZVJlZlB0ciht
X3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKSk7CisgICAgUmVmUHRyIG1haW5GcmFtZVZpZXcgPSBt
X3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKTsKICAgICBpZiAoIW1haW5GcmFtZVZpZXcpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTE3LDcgKzExNyw3IEBAIGJvb2wgSW1hZ2VPdmVybGF5
Q29udHJvbGxlcjo6cGxhdGZvcm1IYW5kbGVNb3VzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYKIAogICAgICAgICBtb3VzZUlzT3ZlckFjdGl2ZURhdGFEZXRlY3RvckhpZ2hsaWdodEJ1
dHRvbiA9IGlzT3ZlckJ1dHRvbjsKICAgICAgICAgbV9hY3RpdmVEYXRhRGV0ZWN0b3JIaWdobGln
aHQgPSBoaWdobGlnaHQuY29weVJlZigpOwotICAgICAgICBhY3RpdmVEYXRhRGV0ZWN0b3JFbGVt
ZW50ID0gbWFrZVJlZlB0cigqZWxlbWVudCk7CisgICAgICAgIGFjdGl2ZURhdGFEZXRlY3RvckVs
ZW1lbnQgPSBlbGVtZW50LmdldCgpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTE0Miwx
MSArMTQyLDExIEBAIGJvb2wgSW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6aGFuZGxlRGF0YURldGVj
dG9yQWN0aW9uKGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50CiAgICAgaWYgKCFtX3BhZ2UpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKGVsZW1l
bnQuZG9jdW1lbnQoKS5mcmFtZSgpKTsKKyAgICBSZWZQdHIgZnJhbWUgPSBlbGVtZW50LmRvY3Vt
ZW50KCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBhdXRvIGZyYW1lVmlldyA9IG1ha2VSZWZQdHIoZWxlbWVudC5kb2N1bWVudCgpLnZpZXco
KSk7CisgICAgUmVmUHRyIGZyYW1lVmlldyA9IGVsZW1lbnQuZG9jdW1lbnQoKS52aWV3KCk7CiAg
ICAgaWYgKCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0KaW5kZXgg
ZTM3MGMyMDliZTBiNmNjOWI2ZDAzMjMxYzQ1ODAzN2VhMTVlOTllMC4uZGNmMWFjNjEwM2ZkMmUz
ODdjZjIxM2I4YTc2Njg5YjZlY2Q2YWZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCkBAIC00MDAsNyArNDAwLDcgQEAg
dm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpidWlsZFNlbGVjdGlvbkhpZ2hsaWdodCgp
CiAgICAgICAgIGlmICghbWFpbkZyYW1lVmlldykKICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICBhdXRvIHZpZXdGb3JSYW5nZSA9IG1ha2VSZWZQdHIoc2VsZWN0aW9uUmFuZ2UtPnN0YXJ0
LmRvY3VtZW50KCkudmlldygpKTsKKyAgICAgICAgUmVmUHRyIHZpZXdGb3JSYW5nZSA9IHNlbGVj
dGlvblJhbmdlLT5zdGFydC5kb2N1bWVudCgpLnZpZXcoKTsKICAgICAgICAgaWYgKCF2aWV3Rm9y
UmFuZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAppbmRleCBlYmQ0NTY3MDcyZTAxYzMyMWQyYzc4
NDYxYzc3MzYwNTk2OGVhNzM5Li5kZTk0MDA2MTlmNTJiYjE3N2YxYTdhYWYxMjc1NTU1YzVlZmE4
MTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9t
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVm
PFNoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkpCi0gICAgICAgICAgICByZXR1cm4g
bWFrZVJlZlB0cihXVEY6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oZW50cnkucGxhdGZvcm1EYXRh
KS5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gV1RGOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+
KGVudHJ5LnBsYXRmb3JtRGF0YSkuY29weVJlZigpOwogCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCmluZGV4
IDY0NWUwNjgwODdjYmJlMmEzYWE5MDFmOWU4NmZiODY1OTNmZTRlNGEuLmM2MTEyZTExOTRjN2M5
OTBmZGMxMTRlODI5Y2ZkYjVjNmFmNzU0YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQ
bGF5U3RyZWFtaW5nLmNwcApAQCAtMjYwLDcgKzI2MCw3IEBAIENETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZzo6fkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpID0gZGVmYXVsdDsKICNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKIHZvaWQgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpz
ZXRMb2dnZXIoTG9nZ2VyJiBsb2dnZXIsIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIpCiB7Ci0g
ICAgbV9sb2dnZXIgPSBtYWtlUmVmUHRyKGxvZ2dlcik7CisgICAgbV9sb2dnZXIgPSAmbG9nZ2Vy
OwogICAgIG1fbG9nSWRlbnRpZmllciA9IGxvZ0lkZW50aWZpZXI7CiB9CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakMubW0KaW5kZXggNmI5YmYyMTBhNzE5MjI3N2U4MTk0ZTkwNGQ5NWFjZThk
ZmU2MTBlNS4uMDE2MmI1YTU0NTA0NTY4YjkzMWY2ODA3MDM2YTQ1NzZjY2M3MzlkMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakMubW0KQEAgLTIzNCw3ICsyMzQsNyBAQCBDRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMo
KSA9IGRlZgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogdm9pZCBDRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0TG9nZ2VyKExvZ2dlciYgbG9nZ2VyLCBjb25zdCB2b2lk
KiBsb2dJZGVudGlmaWVyKQogewotICAgIG1fbG9nZ2VyID0gbWFrZVJlZlB0cihsb2dnZXIpOwor
ICAgIG1fbG9nZ2VyID0gJmxvZ2dlcjsKICAgICBtX2xvZ0lkZW50aWZpZXIgPSBsb2dJZGVudGlm
aWVyOwogfQogI2VuZGlmCkBAIC02MzMsNyArNjMzLDcgQEAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjp+Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmcKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRMb2dnZXIoTG9nZ2VyJiBsb2dnZXIsIGNvbnN0IHZv
aWQqIGxvZ0lkZW50aWZpZXIpCiB7Ci0gICAgbV9sb2dnZXIgPSBtYWtlUmVmUHRyKGxvZ2dlcik7
CisgICAgbV9sb2dnZXIgPSAmbG9nZ2VyOwogICAgIG1fbG9nSWRlbnRpZmllciA9IGxvZ0lkZW50
aWZpZXI7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IGVhNTk0N2M5Y2IxOTJlZGI5NjUwMTk4NGU1MjBk
ZTM1MGM1NDI3MGUuLjdkNTFiZWNlNWNhOTU3OGJjNTY5YzA1Yjk5ZjMzZWY2OWUzMTEzOTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qy5tbQpAQCAtMjUzLDcgKzI1Myw3IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6
aW52YWxpZGF0ZSgpCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiB2b2lkIFNvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakM6OnNldExvZ2dlcihjb25zdCBMb2dnZXImIGxvZ2dlciwgY29uc3Qgdm9p
ZCogbG9nSWRlbnRpZmllcikKIHsKLSAgICBtX2xvZ2dlciA9IG1ha2VSZWZQdHIobG9nZ2VyKTsK
KyAgICBtX2xvZ2dlciA9ICZsb2dnZXI7CiAgICAgbV9sb2dJZGVudGlmaWVyID0gbG9nSWRlbnRp
ZmllcjsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFj
a2VuZC5jcHAKaW5kZXggYWQ5ZTFjOWVlZTEyOTJiOTc0NzZmMWI1OGM3YTdmNzlmYjMxN2E5MC4u
ZWEwNDlhOTk1MzIxN2M2M2JiZTdkNDEzY2RhN2RhYTk3MjYyMjBmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZh
Y2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC04Miw3ICs4Miw3IEBAIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0
aXZlSW1hZ2UoQmFja2luZ1N0b3JlCiAgICAgfQogCiAgICAgY2FzZSBEb250Q29weUJhY2tpbmdT
dG9yZToKLSAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUobWFrZVJlZlB0cihtX3N1
cmZhY2UuZ2V0KCkpKTsKKyAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoUmVmUHRy
IHsgbV9zdXJmYWNlLmdldCgpIH0pOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCA4MGE4NzhkODQwNmZjMWM3
MDIwYTAxZjM1OTIzNGM1N2VkNDg0Mjk3Li4wN2EzNWM2NTYyMzJhMDUxNDViZGY1MTk0ZGUxMGI1
ZDFmNjYxMmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtNzA2LDcg
KzcwNiw3IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aW52YWxpZGF0ZSgpCiAKIHZv
aWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYgbG9nZ2Vy
LCBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKQogewotICAgIG1fbG9nZ2VyID0gbWFrZVJlZlB0
cihsb2dnZXIpOworICAgIG1fbG9nZ2VyID0gJmxvZ2dlcjsKICAgICBtX2xvZ0lkZW50aWZpZXIg
PSBsb2dJZGVudGlmaWVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCmlu
ZGV4IDg1MWM2Mjk4M2IxYWY4ZTZmOGM5MjhjOTdlOWVkMjE5OTEyY2RhYjcuLjJjYWI4YjE5ZDE0
M2U3OGJkMjI3ZjIyNGM2NGJlMDUxNzA3YmE3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlw
ZWxpbmUuY3BwCkBAIC03NTgsMTkgKzc1OCwxOSBAQCBSZWY8V2ViQ29yZTo6VHJhY2tQcml2YXRl
QmFzZT4gQXBwZW5kUGlwZWxpbmU6Om1ha2VXZWJLaXRUcmFjayhpbnQgdHJhY2tJbmRleCkKICAg
ICBjYXNlIFN0cmVhbVR5cGU6OkF1ZGlvOiB7CiAgICAgICAgIGF1dG8gc3BlY2lmaWNUcmFjayA9
IEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUobWFrZVdlYWtQdHIobV9wbGF5ZXJQ
cml2YXRlKSwgdHJhY2tJbmRleCwgV1RGTW92ZShwYWQpLCBmYWxzZSk7CiAgICAgICAgIGdzdHJl
YW1lclRyYWNrID0gc3BlY2lmaWNUcmFjay5wdHIoKTsKLSAgICAgICAgdHJhY2sgPSBtYWtlUmVm
UHRyKHN0YXRpY19jYXN0PFRyYWNrUHJpdmF0ZUJhc2UqPihzcGVjaWZpY1RyYWNrLnB0cigpKSk7
CisgICAgICAgIHRyYWNrID0gc3RhdGljX2Nhc3Q8VHJhY2tQcml2YXRlQmFzZSo+KHNwZWNpZmlj
VHJhY2sucHRyKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBTdHJlYW1UeXBl
OjpWaWRlbzogewogICAgICAgICBhdXRvIHNwZWNpZmljVHJhY2sgPSBWaWRlb1RyYWNrUHJpdmF0
ZUdTdHJlYW1lcjo6Y3JlYXRlKG1ha2VXZWFrUHRyKG1fcGxheWVyUHJpdmF0ZSksIHRyYWNrSW5k
ZXgsIFdURk1vdmUocGFkKSwgZmFsc2UpOwogICAgICAgICBnc3RyZWFtZXJUcmFjayA9IHNwZWNp
ZmljVHJhY2sucHRyKCk7Ci0gICAgICAgIHRyYWNrID0gbWFrZVJlZlB0cihzdGF0aWNfY2FzdDxU
cmFja1ByaXZhdGVCYXNlKj4oc3BlY2lmaWNUcmFjay5wdHIoKSkpOworICAgICAgICB0cmFjayA9
IHN0YXRpY19jYXN0PFRyYWNrUHJpdmF0ZUJhc2UqPihzcGVjaWZpY1RyYWNrLnB0cigpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgU3RyZWFtVHlwZTo6VGV4dDogewogICAgICAg
ICBhdXRvIHNwZWNpZmljVHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpj
cmVhdGUodHJhY2tJbmRleCwgV1RGTW92ZShwYWQpLCBmYWxzZSk7CiAgICAgICAgIGdzdHJlYW1l
clRyYWNrID0gc3BlY2lmaWNUcmFjay5wdHIoKTsKLSAgICAgICAgdHJhY2sgPSBtYWtlUmVmUHRy
KHN0YXRpY19jYXN0PFRyYWNrUHJpdmF0ZUJhc2UqPihzcGVjaWZpY1RyYWNrLnB0cigpKSk7Cisg
ICAgICAgIHRyYWNrID0gc3RhdGljX2Nhc3Q8VHJhY2tQcml2YXRlQmFzZSo+KHNwZWNpZmljVHJh
Y2sucHRyKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VS
ZXNwb25zZUdlbmVyYXRvci5tbQppbmRleCA5YmU1ODY4MmNhYzMzYmJhYWE5ZTE4NmQyYTM0YzQ2
NDBiNDE1YzYyLi43YTc5ZGUwOTNiMDUxNDE3MGQwMzQ4OTNlMTIzYjkwMzdhMWFhNWU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9u
c2VHZW5lcmF0b3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCkBAIC0yNjMsNyArMjYzLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBmaW5hbAogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKLSAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBtYWtlUmVmUHRyKG1fZ2VuZXJhdG9yLmdl
dCgpKTsKKyAgICAgICAgUmVmUHRyIGdlbmVyYXRvciB7IG1fZ2VuZXJhdG9yLmdldCgpIH07CiAg
ICAgICAgIGlmICghZ2VuZXJhdG9yKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBhdXRv
KiBkYXRhID0gZ2VuZXJhdG9yLT5tX21hcC5nZXQobV91cmxTdHJpbmcpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCmluZGV4IGIzYTdjODcxZGMzZDQxN2ZjMTYz
OTI0ZTVlNWRkYjNhYzk3YTM5OWUuLmJkZTE1ZDQ1ZGQ4MWMwMzBjZjc2ZTRlMDdkYzc2NDhiZTY3
NzNhMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAg
LTE1NzMsOSArMTU3Myw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVyRWxl
bWVudDo6c2VsZWN0aW9uUHNldWRvU3R5bGUoKSBjb25zdAogICAgICAgICByZXR1cm4gc2VsZWN0
aW9uU3R5bGU7CiAgICAgfQogCi0gICAgaWYgKGF1dG8gcm9vdCA9IG1ha2VSZWZQdHIoZWxlbWVu
dCgpLT5jb250YWluaW5nU2hhZG93Um9vdCgpKSkgeworICAgIGlmIChSZWZQdHIgcm9vdCA9IGVs
ZW1lbnQoKS0+Y29udGFpbmluZ1NoYWRvd1Jvb3QoKSkgewogICAgICAgICBpZiAocm9vdC0+bW9k
ZSgpID09IFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdlbnQpIHsKLSAgICAgICAgICAgIGF1dG8gY3Vy
cmVudEVsZW1lbnQgPSBtYWtlUmVmUHRyKGVsZW1lbnQoKS0+c2hhZG93SG9zdCgpKTsKKyAgICAg
ICAgICAgIFJlZlB0ciBjdXJyZW50RWxlbWVudCA9IGVsZW1lbnQoKS0+c2hhZG93SG9zdCgpOwog
ICAgICAgICAgICAgLy8gV2hlbiBhbiBlbGVtZW50IGhhcyBkaXNwbGF5OiBjb250ZW50cywgdGhp
cyBlbGVtZW50IGRvZXNuJ3QgaGF2ZSBhIHJlbmRlcmVyCiAgICAgICAgICAgICAvLyBhbmQgaXRz
IGNoaWxkcmVuIHdpbGwgcmVuZGVyIGFzIGNoaWxkcmVuIG9mIHRoZSBwYXJlbnQgZWxlbWVudC4K
ICAgICAgICAgICAgIHdoaWxlIChjdXJyZW50RWxlbWVudCAmJiBjdXJyZW50RWxlbWVudC0+aGFz
RGlzcGxheUNvbnRlbnRzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJ
T1MubW0KaW5kZXggYjA0MzA3ZWZmNmM5MjA4ZDIwM2E2NTEwYjY1ZTg3Y2VhMTdjN2ZkZC4uYzky
ZDE5Njk3ZWFkNDIzOTdiZTAzOWUzYmVlMzMwNTRkMmQxZmQ3MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAtMjMwMCw3ICsyMzAwLDcgQEAgYm9vbCBS
ZW5kZXJUaGVtZUlPUzo6cGFpbnRNZXRlcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBj
b25zdCBQYWludEluZm8mIHAKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBhdXRvJiByZW5k
ZXJNZXRlciA9IGRvd25jYXN0PFJlbmRlck1ldGVyPihyZW5kZXJlcik7Ci0gICAgYXV0byBlbGVt
ZW50ID0gbWFrZVJlZlB0cihyZW5kZXJNZXRlci5tZXRlckVsZW1lbnQoKSk7CisgICAgUmVmUHRy
IGVsZW1lbnQgPSByZW5kZXJNZXRlci5tZXRlckVsZW1lbnQoKTsKIAogICAgIGF1dG8mIGNvbnRl
eHQgPSBwYWludEluZm8uY29udGV4dCgpOwogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2VFdmVudERpc3BhdGNoZXIuY3BwCmluZGV4IDAxZDc5ZDBiMGQyNTVlYjRlOWU3YjhiZWQzYWU2
OTViZjkzZmJhMTMuLmQ1YTMwYmVhYTgzM2M1NzM5YmJhYzhhN2NkZGUwMWUwNzQyYTQwZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnREaXNwYXRjaGVyLmNw
cApAQCAtODUsNyArODUsNyBAQCB2b2lkIFN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNo
U2Vzc2lvblN0b3JhZ2VFdmVudHNUb0ZyYW1lcyhQYWdlJiBwYWdlLCBjbwogICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQocGFnZSwga2V5LCBv
bGRWYWx1ZSwgbmV3VmFsdWUsIFN0b3JhZ2VUeXBlOjpTZXNzaW9uLCBzZWN1cml0eU9yaWdpbi5z
ZWN1cml0eU9yaWdpbigpLnB0cigpKTsKIAogICAgIGZvciAoYXV0byYgZnJhbWUgOiBmcmFtZXMp
IHsKLSAgICAgICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWZQdHIoZnJhbWUtPmRvY3VtZW50KCkp
OworICAgICAgICBSZWZQdHIgZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKICAgICAgICAg
YXV0byByZXN1bHQgPSBkb2N1bWVudC0+ZG9tV2luZG93KCktPnNlc3Npb25TdG9yYWdlKCk7CiAg
ICAgICAgIGlmICghcmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSAvLyBodHRwczovL2h0bWwuc3BlYy53
aGF0d2cub3JnL211bHRpcGFnZS93ZWJzdG9yYWdlLmh0bWwjdGhlLXN0b3JhZ2UtZXZlbnQ6ZXZl
bnQtc3RvcmFnZQogICAgICAgICAgICAgZG9jdW1lbnQtPnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVu
dE9uV2luZG93KFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgU3RvcmFnZUV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLnN0b3JhZ2VFdmVudCwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVy
bCwgcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKSk7CkBAIC05OCw3ICs5OCw3IEBAIHZvaWQg
U3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHNUb0ZyYW1l
cyhQYWdlR3JvdXAmIHBhZ2VHCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
RGlzcGF0Y2hET01TdG9yYWdlRXZlbnQocGFnZSwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIFN0
b3JhZ2VUeXBlOjpMb2NhbCwgc2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKS5wdHIoKSk7
CiAKICAgICBmb3IgKGF1dG8mIGZyYW1lIDogZnJhbWVzKSB7Ci0gICAgICAgIGF1dG8gZG9jdW1l
bnQgPSBtYWtlUmVmUHRyKGZyYW1lLT5kb2N1bWVudCgpKTsKKyAgICAgICAgUmVmUHRyIGRvY3Vt
ZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gZG9jdW1lbnQt
PmRvbVdpbmRvdygpLT5sb2NhbFN0b3JhZ2UoKTsKICAgICAgICAgaWYgKCFyZXN1bHQuaGFzRXhj
ZXB0aW9uKCkpIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dlYnN0
b3JhZ2UuaHRtbCN0aGUtc3RvcmFnZS1ldmVudDpldmVudC1zdG9yYWdlCiAgICAgICAgICAgICBk
b2N1bWVudC0+cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50T25XaW5kb3coVGFza1NvdXJjZTo6RE9N
TWFuaXB1bGF0aW9uLCBTdG9yYWdlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc3RvcmFnZUV2
ZW50LCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsLCByZXN1bHQucmVsZWFzZVJldHVyblZh
bHVlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKaW5kZXggMTk5NzEzMDMzNDlk
NzJmZDJlZDk4NjA4YWM5ZTdjMmFjYWVmN2I1Mi4uOWRkODViMjFkZjVhZDEzMTkwNWZjMzhlNDI0
M2JkNGI3ZDZlZTJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29w
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKQEAgLTE0MSw3
ICsxNDEsNyBAQCBhdXRvIFNjb3BlOjptYWtlUmVzb2x2ZXJTaGFyaW5nS2V5KCkgLT4gUmVzb2x2
ZXJTaGFyaW5nS2V5CiB7CiAgICAgY29uc3RleHByIGJvb2wgaXNOb25FbXB0eUhhc2hUYWJsZVZh
bHVlID0gdHJ1ZTsKICAgICByZXR1cm4gewotICAgICAgICBtX2FjdGl2ZVN0eWxlU2hlZXRzLm1h
cChbJl0oYXV0byYgc2hlZXQpIHsgcmV0dXJuIG1ha2VSZWZQdHIoc2hlZXQtPmNvbnRlbnRzKCkp
OyB9KSwKKyAgICAgICAgbV9hY3RpdmVTdHlsZVNoZWV0cy5tYXAoWyZdKGF1dG8mIHNoZWV0KSB7
IHJldHVybiBSZWZQdHIgeyAmc2hlZXQtPmNvbnRlbnRzKCkgfTsgfSksCiAgICAgICAgIGlzRm9y
VXNlckFnZW50U2hhZG93VHJlZSgpLAogICAgICAgICBpc05vbkVtcHR5SGFzaFRhYmxlVmFsdWUK
ICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAKaW5kZXggNDQ0ZWZkMmEwMTdiYzg3
ZDJmNmEzODQwYTljZWU0Yjc3OTExOWE0OC4uZGFmZjE5ZGJmZGU5YzVkYjNiODM0OTZmNzRhYzIw
M2ZjZDJlNDg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCkBAIC0xMjQsNyArMTI0
LDcgQEAgdm9pZCBTVkdBRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCYgZXZlbnQp
CiAgICAgICAgICAgICBTdHJpbmcgdXJsID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3Bh
Y2VzKGhyZWYoKSk7CiAKICAgICAgICAgICAgIGlmICh1cmxbMF0gPT0gJyMnKSB7Ci0gICAgICAg
ICAgICAgICAgYXV0byB0YXJnZXRFbGVtZW50ID0gbWFrZVJlZlB0cih0cmVlU2NvcGUoKS5nZXRF
bGVtZW50QnlJZCh1cmwuc3Vic3RyaW5nU2hhcmluZ0ltcGwoMSkpKTsKKyAgICAgICAgICAgICAg
ICBSZWZQdHIgdGFyZ2V0RWxlbWVudCA9IHRyZWVTY29wZSgpLmdldEVsZW1lbnRCeUlkKHVybC5z
dWJzdHJpbmdTaGFyaW5nSW1wbCgxKSk7CiAgICAgICAgICAgICAgICAgaWYgKGlzPFNWR1NNSUxF
bGVtZW50Pih0YXJnZXRFbGVtZW50KSkgewogICAgICAgICAgICAgICAgICAgICBkb3duY2FzdDxT
VkdTTUlMRWxlbWVudD4oKnRhcmdldEVsZW1lbnQpLmJlZ2luQnlMaW5rQWN0aXZhdGlvbigpOwog
ICAgICAgICAgICAgICAgICAgICBldmVudC5zZXREZWZhdWx0SGFuZGxlZCgpOwpAQCAtMTM3LDcg
KzEzNyw3IEBAIHZvaWQgU1ZHQUVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQmIGV2
ZW50KQogICAgICAgICAgICAgICAgIHRhcmdldCA9ICJfYmxhbmsiOwogICAgICAgICAgICAgZXZl
bnQuc2V0RGVmYXVsdEhhbmRsZWQoKTsKIAotICAgICAgICAgICAgYXV0byBmcmFtZSA9IG1ha2VS
ZWZQdHIoZG9jdW1lbnQoKS5mcmFtZSgpKTsKKyAgICAgICAgICAgIFJlZlB0ciBmcmFtZSA9IGRv
Y3VtZW50KCkuZnJhbWUoKTsKICAgICAgICAgICAgIGlmICghZnJhbWUpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKGRv
Y3VtZW50KCkuY29tcGxldGVVUkwodXJsKSwgdGFyZ2V0LCAmZXZlbnQsIFJlZmVycmVyUG9saWN5
OjpFbXB0eVN0cmluZywgZG9jdW1lbnQoKS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Q
cm9wYWdhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVs
ZW1lbnRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2Uu
Y3BwCmluZGV4IDY5OWU5YTNlMmMyZWU5ZjVhOTMwNzEyZTMxNzIxZDM0YWRlNWY0ODUuLmY2ZmY5
NGIzYmQ4YzcyZDM4MDRkN2Q1NjIyNDk1OTk2MGQwOTU0MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBT
VkdBbmltYXRlRWxlbWVudEJhc2U6OnN0YXJ0QW5pbWF0aW9uKCkKICAgICBpZiAoIXRhcmdldEVs
ZW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGF1dG8gcHJvdGVjdGVkQW5pbWF0
b3IgPSBtYWtlUmVmUHRyKHRoaXMtPmFuaW1hdG9yKCkpKQorICAgIGlmIChSZWZQdHIgcHJvdGVj
dGVkQW5pbWF0b3IgPSB0aGlzLT5hbmltYXRvcigpKQogICAgICAgICBwcm90ZWN0ZWRBbmltYXRv
ci0+c3RhcnQoKnRhcmdldEVsZW1lbnQoKSk7CiB9CiAKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lk
IFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwcm9n
cmVzcywgdW5zaWduZWQgcmVwZQogICAgIGlmIChjYWxjTW9kZSgpID09IENhbGNNb2RlOjpEaXNj
cmV0ZSkKICAgICAgICAgcHJvZ3Jlc3MgPSBwcm9ncmVzcyA8IDAuNSA/IDAgOiAxOwogCi0gICAg
aWYgKGF1dG8gcHJvdGVjdGVkQW5pbWF0b3IgPSBtYWtlUmVmUHRyKHRoaXMtPmFuaW1hdG9yKCkp
KQorICAgIGlmIChSZWZQdHIgcHJvdGVjdGVkQW5pbWF0b3IgPSB0aGlzLT5hbmltYXRvcigpKQog
ICAgICAgICBwcm90ZWN0ZWRBbmltYXRvci0+YW5pbWF0ZSgqdGFyZ2V0RWxlbWVudCgpLCBwcm9n
cmVzcywgcmVwZWF0Q291bnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVNb3Rpb25FbGVtZW50LmNwcAppbmRleCAzNzdkNzlhMGQzMWUwYWZiNWJjOGQ4MmU0ZmQwZTYx
MjZkY2QzZDhjLi4xYWNjYzNhZWI5MDM3OTNlZTAxYTUyYTJjNGE5MDU1NzY5MTZmMmY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKQEAgLTU4
LDcgKzU4LDcgQEAgUmVmPFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50PiBTVkdBbmltYXRlTW90aW9u
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUKIAogYm9vbCBTVkdBbmltYXRlTW90
aW9uRWxlbWVudDo6aGFzVmFsaWRBdHRyaWJ1dGVUeXBlKCkgY29uc3QKIHsKLSAgICBhdXRvIHRh
cmdldEVsZW1lbnQgPSBtYWtlUmVmUHRyKHRoaXMtPnRhcmdldEVsZW1lbnQoKSk7CisgICAgUmVm
UHRyIHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7CiAgICAgaWYgKCF0YXJn
ZXRFbGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE0Miw3ICsxNDIsNyBAQCB2
b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpzdGFydEFuaW1hdGlvbigpCiB7CiAgICAgaWYg
KCFoYXNWYWxpZEF0dHJpYnV0ZVR5cGUoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gdGFy
Z2V0RWxlbWVudCA9IG1ha2VSZWZQdHIodGhpcy0+dGFyZ2V0RWxlbWVudCgpKTsKKyAgICBSZWZQ
dHIgdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsKICAgICBpZiAoIXRhcmdl
dEVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoQWZmaW5lVHJhbnNmb3JtKiB0cmFu
c2Zvcm0gPSB0YXJnZXRFbGVtZW50LT5zdXBwbGVtZW50YWxUcmFuc2Zvcm0oKSkKQEAgLTIwNiw3
ICsyMDYsNyBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpidWlsZFRyYW5zZm9ybUZv
clByb2dyZXNzKEFmZmluZVRyYW5zZm9ybSogdHJhbnNmbwogCiB2b2lkIFNWR0FuaW1hdGVNb3Rp
b25FbGVtZW50OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2ln
bmVkIHJlcGVhdENvdW50KQogewotICAgIGF1dG8gdGFyZ2V0RWxlbWVudCA9IG1ha2VSZWZQdHIo
dGhpcy0+dGFyZ2V0RWxlbWVudCgpKTsKKyAgICBSZWZQdHIgdGFyZ2V0RWxlbWVudCA9IHRoaXMt
PnRhcmdldEVsZW1lbnQoKTsKICAgICBpZiAoIXRhcmdldEVsZW1lbnQpCiAgICAgICAgIHJldHVy
bjsKIApAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNh
bGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQKIHZvaWQgU1ZH
QW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KCkKIHsKICAgICAvLyBX
ZSBhY2N1bXVsYXRlIHRvIHRoZSB0YXJnZXQgZWxlbWVudCB0cmFuc2Zvcm0gbGlzdCBzbyB0aGVy
ZSBpcyBub3QgbXVjaCB0byBkbyBoZXJlLgotICAgIGF1dG8gdGFyZ2V0RWxlbWVudCA9IG1ha2VS
ZWZQdHIodGhpcy0+dGFyZ2V0RWxlbWVudCgpKTsKKyAgICBSZWZQdHIgdGFyZ2V0RWxlbWVudCA9
IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsKICAgICBpZiAoIXRhcmdldEVsZW1lbnQpCiAgICAgICAg
IHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0
ZW5zaW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNw
cAppbmRleCA1MWI4OGNjMGZlZWVhYjgxMzA1N2U5NWY5NGQ3ZDQxZTA2ZTE4NDYwLi44NjMyZjAy
ZjRiZjZiZDVjMjAxNzVmMzEzNjMzNTYxMzJjYWFmNGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcApAQCAtMjU4LDcgKzI1OCw3IEBAIFJlZlB0cjxF
bGVtZW50PiBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnRha2VFbGVtZW50RnJvbVBlbmRpbmdSZXNv
dXJjZXNGb3JSZW1vdmFsCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byYgcmVz
b3VyY2VTZXQgPSBpdC0+dmFsdWU7Ci0gICAgYXV0byBmaXJzdEVsZW1lbnQgPSBtYWtlUmVmUHRy
KHJlc291cmNlU2V0LmJlZ2luKCkuZ2V0KCkpOworICAgIFJlZlB0ciBmaXJzdEVsZW1lbnQgPSBy
ZXNvdXJjZVNldC5iZWdpbigpLmdldCgpOwogICAgIGlmICghZmlyc3RFbGVtZW50KQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IGJhNTQy
NjA2YmIwOWJhNjk4ODczZGJkN2FlMDhhMTNlMjJhYWZkYmYuLjE1Y2FhNDVjZjkzYzVmYjg0Yzc4
MTQ5YjE1Mzk4MmRiNDdiZDE2OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTMz
Myw3ICszMzMsNyBAQCB2b2lkIFNWR0VsZW1lbnQ6OnJlbW92ZUVsZW1lbnRSZWZlcmVuY2UoKQog
ewogICAgIGlmICghbV9zdmdSYXJlRGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChhdXRv
IGRlc3RpbmF0aW9uID0gbWFrZVJlZlB0cihtX3N2Z1JhcmVEYXRhLT5yZWZlcmVuY2VUYXJnZXQo
KSkpCisgICAgaWYgKFJlZlB0ciBkZXN0aW5hdGlvbiA9IG1fc3ZnUmFyZURhdGEtPnJlZmVyZW5j
ZVRhcmdldCgpKQogICAgICAgICBkZXN0aW5hdGlvbi0+cmVtb3ZlUmVmZXJlbmNpbmdFbGVtZW50
KCp0aGlzKTsKIH0KIApAQCAtMzc3LDcgKzM3Nyw3IEBAIFJlZlB0cjxTVkdVc2VFbGVtZW50PiBT
VkdFbGVtZW50Ojpjb3JyZXNwb25kaW5nVXNlRWxlbWVudCgpIGNvbnN0CiB2b2lkIFNWR0VsZW1l
bnQ6OnNldENvcnJlc3BvbmRpbmdFbGVtZW50KFNWR0VsZW1lbnQqIGNvcnJlc3BvbmRpbmdFbGVt
ZW50KQogewogICAgIGlmIChtX3N2Z1JhcmVEYXRhKSB7Ci0gICAgICAgIGlmIChhdXRvIG9sZENv
cnJlc3BvbmRpbmdFbGVtZW50ID0gbWFrZVJlZlB0cihtX3N2Z1JhcmVEYXRhLT5jb3JyZXNwb25k
aW5nRWxlbWVudCgpKSkKKyAgICAgICAgaWYgKFJlZlB0ciBvbGRDb3JyZXNwb25kaW5nRWxlbWVu
dCA9IG1fc3ZnUmFyZURhdGEtPmNvcnJlc3BvbmRpbmdFbGVtZW50KCkpCiAgICAgICAgICAgICBv
bGRDb3JyZXNwb25kaW5nRWxlbWVudC0+bV9zdmdSYXJlRGF0YS0+cmVtb3ZlSW5zdGFuY2UoKnRo
aXMpOwogICAgIH0KICAgICBpZiAobV9zdmdSYXJlRGF0YSB8fCBjb3JyZXNwb25kaW5nRWxlbWVu
dCkKQEAgLTY0Myw3ICs2NDMsNyBAQCB2b2lkIFNWR0VsZW1lbnQ6OmFuaW1hdG9yV2lsbEJlRGVs
ZXRlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQogc3RkOjpvcHRpb25hbDxT
dHlsZTo6RWxlbWVudFN0eWxlPiBTVkdFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3Qg
UmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSopCiB7CiAgICAgLy8g
SWYgdGhlIGVsZW1lbnQgaXMgaW4gYSA8dXNlPiB0cmVlIHdlIGdldCB0aGUgc3R5bGUgZnJvbSB0
aGUgZGVmaW5pdGlvbiB0cmVlLgotICAgIGlmIChhdXRvIHN0eWxlRWxlbWVudCA9IG1ha2VSZWZQ
dHIodGhpcy0+Y29ycmVzcG9uZGluZ0VsZW1lbnQoKSkpIHsKKyAgICBpZiAoUmVmUHRyIHN0eWxl
RWxlbWVudCA9IHRoaXMtPmNvcnJlc3BvbmRpbmdFbGVtZW50KCkpIHsKICAgICAgICAgYXV0byBz
dHlsZSA9IHN0eWxlRWxlbWVudC0+cmVzb2x2ZVN0eWxlKCZwYXJlbnRTdHlsZSk7CiAgICAgICAg
IFN0eWxlOjpBZGp1c3Rlcjo6YWRqdXN0U1ZHRWxlbWVudFN0eWxlKCpzdHlsZS5yZW5kZXJTdHls
ZSwgKnRoaXMpOwogICAgICAgICByZXR1cm4gc3R5bGU7CkBAIC02NzYsNyArNjc2LDcgQEAgY29u
c3QgUmVuZGVyU3R5bGUqIFNWR0VsZW1lbnQ6OmNvbXB1dGVkU3R5bGUoUHNldWRvSWQgcHNldWRv
RWxlbWVudFNwZWNpZmllcikKICAgICAgICAgcmV0dXJuIEVsZW1lbnQ6OmNvbXB1dGVkU3R5bGUo
cHNldWRvRWxlbWVudFNwZWNpZmllcik7CiAKICAgICBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50
U3R5bGUgPSBudWxscHRyOwotICAgIGlmIChhdXRvIHBhcmVudCA9IG1ha2VSZWZQdHIocGFyZW50
T3JTaGFkb3dIb3N0RWxlbWVudCgpKSkgeworICAgIGlmIChSZWZQdHIgcGFyZW50ID0gcGFyZW50
T3JTaGFkb3dIb3N0RWxlbWVudCgpKSB7CiAgICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gcGFy
ZW50LT5yZW5kZXJlcigpKQogICAgICAgICAgICAgcGFyZW50U3R5bGUgPSAmcmVuZGVyZXItPnN0
eWxlKCk7CiAgICAgfQpAQCAtOTc5LDcgKzk3OSw3IEBAIHZvaWQgU1ZHRWxlbWVudDo6dXBkYXRl
UmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oYm9vbCBoYXNSZWxhdGl2ZUxlbmd0aHMsIFNWR0Vs
CiAgICAgfQogCiAgICAgaWYgKGlzPFNWR0dyYXBoaWNzRWxlbWVudD4oZWxlbWVudCkpIHsKLSAg
ICAgICAgaWYgKGF1dG8gcGFyZW50ID0gbWFrZVJlZlB0cihwYXJlbnROb2RlKCkpOyBpczxTVkdF
bGVtZW50PihwYXJlbnQpKQorICAgICAgICBpZiAoUmVmUHRyIHBhcmVudCA9IHBhcmVudE5vZGUo
KTsgaXM8U1ZHRWxlbWVudD4ocGFyZW50KSkKICAgICAgICAgICAgIGRvd25jYXN0PFNWR0VsZW1l
bnQ+KCpwYXJlbnQpLnVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKGhhc1JlbGF0aXZl
TGVuZ3RocywgKnRoaXMpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXggNzUxYWRhYzEyOGE4YjNmOGY4MDE3
OTMwNzU4MjNiZWVjZmQ5NGJjZS4uMTUyYzk4NWZkOGU5NWFlOTk1N2U2ZTIxZDZiZjJhMTBjNDU0
YmRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudC5jcHAKQEAgLTE1OCw3ICsxNTgsNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdG
RURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlcgog
ICAgIGlmICghaW5wdXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gbGln
aHRFbGVtZW50ID0gbWFrZVJlZlB0cihTVkdGRUxpZ2h0RWxlbWVudDo6ZmluZExpZ2h0RWxlbWVu
dCh0aGlzKSk7CisgICAgUmVmUHRyIGxpZ2h0RWxlbWVudCA9IFNWR0ZFTGlnaHRFbGVtZW50Ojpm
aW5kTGlnaHRFbGVtZW50KHRoaXMpOwogICAgIGlmICghbGlnaHRFbGVtZW50KQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQu
Y3BwCmluZGV4IDE4Zjc4MDlmYWUwMjkyNDc0YmZmMDVmYjE0MDE3YzJkZTY2MWQzNDYuLmUxNDY4
OGE1ZWIxNzZmMDJhMTZjMDU1MGYwODExOTVkM2MyN2VjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFSW1hZ2VFbGVtZW50LmNwcApAQCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQgU1ZHRkVJbWFn
ZUVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzCiAgICAgaWYgKCFpc0Nvbm5lY3RlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIHBhcmVudCA9IG1ha2VSZWZQdHIocGFyZW50RWxlbWVudCgpKTsKKyAgICBSZWZQdHIg
cGFyZW50ID0gcGFyZW50RWxlbWVudCgpOwogCiAgICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC0+
aGFzVGFnTmFtZShTVkdOYW1lczo6ZmlsdGVyVGFnKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAKaW5kZXggM2QxM2QxNmUxMDdmZTQ0Y2Yy
MGI1NzlhNWYxNzY5NTJkODU4NmE4My4uMGRhOWMzM2EyZjY3MGUwMWY1NzAyNjVmZTk0NjFlZjRi
ZWJiZjRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCkBAIC0x
MjUsNyArMTI1LDcgQEAgdm9pZCBTVkdGRUxpZ2h0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmkKIHZvaWQgU1ZHRkVMaWdodEVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUp
CiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7Ci0gICAgICAgIGF1dG8gcGFyZW50ID0gbWFrZVJlZlB0cihwYXJlbnRFbGVtZW50KCkpOwor
ICAgICAgICBSZWZQdHIgcGFyZW50ID0gcGFyZW50RWxlbWVudCgpOwogICAgICAgICBpZiAoIXBh
cmVudCkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgU1ZH
RkVMaWdodEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdl
KQogCiAgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2Vy
KQogICAgICAgICByZXR1cm47Ci0gICAgYXV0byBwYXJlbnQgPSBtYWtlUmVmUHRyKHBhcmVudE5v
ZGUoKSk7CisgICAgUmVmUHRyIHBhcmVudCA9IHBhcmVudE5vZGUoKTsKICAgICBpZiAoIXBhcmVu
dCkKICAgICAgICAgcmV0dXJuOwogICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gcGFyZW50
LT5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3Vs
YXJMaWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQuY3BwCmluZGV4IDI2NGQxOTdlZjM2NTZiYmZiODQxYjY3NjA0M2I2MDMx
ZDFjZWNkODEuLjliN2NlNDBhYjk3MTZhZTRmMzM1ZjU0YjI0Y2RhNDU5YTg0MjlhNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5j
cHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVNwZWN1bGFy
TGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZQogICAgIGlmICgh
aW5wdXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gbGlnaHRFbGVtZW50
ID0gbWFrZVJlZlB0cihTVkdGRUxpZ2h0RWxlbWVudDo6ZmluZExpZ2h0RWxlbWVudCh0aGlzKSk7
CisgICAgUmVmUHRyIGxpZ2h0RWxlbWVudCA9IFNWR0ZFTGlnaHRFbGVtZW50OjpmaW5kTGlnaHRF
bGVtZW50KHRoaXMpOwogICAgIGlmICghbGlnaHRFbGVtZW50KQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKaW5kZXggZjJhNmVlMDhkYjdhMGQyZGYz
YmQ4Y2M1Mzc1ZDMxNzk4YjUxMjFlMi4uZmY1MjIzMDk0NjZiMDQwYmVmMDg5ZDE1N2IzODZkZmZi
YjA1YzYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKQEAgLTEyNyw4ICsxMjcsNyBAQCB2b2lk
IGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQoU1ZHRWxlbWVudCogZWxlbWVudCkKICAg
ICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcGFyZW50ID0gbWFr
ZVJlZlB0cihlbGVtZW50LT5wYXJlbnROb2RlKCkpOwotCisgICAgUmVmUHRyIHBhcmVudCA9IGVs
ZW1lbnQtPnBhcmVudE5vZGUoKTsKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwCmluZGV4IGJmNWQ2NzE1
NThjMzhjMGM3NTQyNzIwMDM5YWIzNDAxMjQ2MzJmM2UuLjViMzQxMjZmMTEzNTFhNjdhNGE1NmMw
YTBiOWFlZWNlN2YyNzA0NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250
RmFjZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1l
bnQuY3BwCkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBTVkdGb250RmFjZUVsZW1lbnQ6OnJlYnVp
bGRGb250RmFjZSgpCiAKICAgICAgICAgdW5zaWduZWQgc3JjTGVuZ3RoID0gc3JjTGlzdCA/IHNy
Y0xpc3QtPmxlbmd0aCgpIDogMDsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNy
Y0xlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBpdGVtID0gbWFrZVJlZlB0cihk
b3duY2FzdDxDU1NGb250RmFjZVNyY1ZhbHVlPihzcmNMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0No
ZWNrKGkpKSkpCisgICAgICAgICAgICBpZiAoUmVmUHRyIGl0ZW0gPSBkb3duY2FzdDxDU1NGb250
RmFjZVNyY1ZhbHVlPihzcmNMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKSkKICAgICAg
ICAgICAgICAgICBpdGVtLT5zZXRTVkdGb250RmFjZUVsZW1lbnQodGhpcyk7CiAgICAgICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VGb3JtYXRF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUZvcm1hdEVsZW1lbnQu
Y3BwCmluZGV4IGI2MDc4NTliOGY1Y2M3NmY4NzgyOTIwMDNiZDNkYzRkMTk4MmY3M2IuLjU3Mjdm
MjhhOGI3OWQxMjIwN2M5NjNiNWM2YWY0OGRjYTYxMGQ3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGb250RmFjZUZvcm1hdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGb250RmFjZUZvcm1hdEVsZW1lbnQuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHZv
aWQgU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRD
aGFuZ2UmIGNoYW5nZSkKICAgICBpZiAoIXBhcmVudE5vZGUoKSB8fCAhcGFyZW50Tm9kZSgpLT5o
YXNUYWdOYW1lKGZvbnRfZmFjZV91cmlUYWcpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAg
YXV0byBhbmNlc3RvciA9IG1ha2VSZWZQdHIocGFyZW50Tm9kZSgpLT5wYXJlbnROb2RlKCkpOwor
ICAgIFJlZlB0ciBhbmNlc3RvciA9IHBhcmVudE5vZGUoKS0+cGFyZW50Tm9kZSgpOwogICAgIGlm
ICghYW5jZXN0b3IgfHwgIWFuY2VzdG9yLT5oYXNUYWdOYW1lKGZvbnRfZmFjZV9zcmNUYWcpKQog
ICAgICAgICByZXR1cm47CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Rm9udEZhY2VVcmlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVy
aUVsZW1lbnQuY3BwCmluZGV4IGU0OWY0NDg3YzRlMmI2M2M1MWUyODgzMjhmNTcyYzk4NWIzYmMx
OTEuLjAzMGE5M2RhODlmYzU5ZDgwNDVkNjdjMGRhNTgyMjI3MjdjOGY1ZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCkBAIC03Nyw5ICs3Nyw5IEBA
IHZvaWQgU1ZHRm9udEZhY2VVcmlFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRD
aGFuZ2UmIGNoYW5nZSkKICAgICBpZiAoIXBhcmVudE5vZGUoKSB8fCAhcGFyZW50Tm9kZSgpLT5o
YXNUYWdOYW1lKGZvbnRfZmFjZV9zcmNUYWcpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAg
YXV0byBncmFuZHBhcmVudCA9IG1ha2VSZWZQdHIocGFyZW50Tm9kZSgpLT5wYXJlbnROb2RlKCkp
OwotICAgIGlmIChncmFuZHBhcmVudCAmJiBncmFuZHBhcmVudC0+aGFzVGFnTmFtZShmb250X2Zh
Y2VUYWcpKQotICAgICAgICBkb3duY2FzdDxTVkdGb250RmFjZUVsZW1lbnQ+KCpncmFuZHBhcmVu
dCkucmVidWlsZEZvbnRGYWNlKCk7CisgICAgUmVmUHRyIGdyYW5kUGFyZW50ID0gcGFyZW50Tm9k
ZSgpLT5wYXJlbnROb2RlKCk7CisgICAgaWYgKGdyYW5kUGFyZW50ICYmIGdyYW5kUGFyZW50LT5o
YXNUYWdOYW1lKGZvbnRfZmFjZVRhZykpCisgICAgICAgIGRvd25jYXN0PFNWR0ZvbnRGYWNlRWxl
bWVudD4oKmdyYW5kUGFyZW50KS5yZWJ1aWxkRm9udEZhY2UoKTsKIH0KIAogTm9kZTo6SW5zZXJ0
ZWRJbnRvQW5jZXN0b3JSZXN1bHQgU1ZHRm9udEZhY2VVcmlFbGVtZW50OjppbnNlcnRlZEludG9B
bmNlc3RvcihJbnNlcnRpb25UeXBlIGluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVu
dE9mSW5zZXJ0ZWRUcmVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVp
Z25PYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0
RWxlbWVudC5jcHAKaW5kZXggM2E1MTRjYjM4NDFjNDI4ZTYyZGUxMmE2NTFiY2Q2MGY1ZTVlZTYz
ZC4uYmMwMDY4NDhiZjM2YjY1YmI5NzQyNTMxZWFmMDc3ZmYzNmJiNzI5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCkBAIC0xMTEsNyArMTEx
LDcgQEAgYm9vbCBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgLy8gTm90ZSB0aGF0IHdlIGN1cnJlbnRseSBkbyBu
b3Qgc3VwcG9ydCBmb3JlaWduT2JqZWN0IGluc3RhbnRpYXRpb24gdmlhIDx1c2U+LCBoZW5jZSBp
dCBpcyBzYWZlCiAgICAgLy8gdG8gdXNlIHBhcmVudEVsZW1lbnQoKSBoZXJlLiBJZiB0aGF0IGNo
YW5nZXMsIHRoaXMgbWV0aG9kIHNob3VsZCBiZSB1cGRhdGVkIHRvIHVzZQogICAgIC8vIHBhcmVu
dE9yU2hhZG93SG9zdEVsZW1lbnQoKSBpbnN0ZWFkLgotICAgIGF1dG8gYW5jZXN0b3IgPSBtYWtl
UmVmUHRyKHBhcmVudEVsZW1lbnQoKSk7CisgICAgUmVmUHRyIGFuY2VzdG9yID0gcGFyZW50RWxl
bWVudCgpOwogICAgIHdoaWxlIChhbmNlc3RvciAmJiBhbmNlc3Rvci0+aXNTVkdFbGVtZW50KCkp
IHsKICAgICAgICAgaWYgKGFuY2VzdG9yLT5yZW5kZXJlcigpICYmIGFuY2VzdG9yLT5yZW5kZXJl
cigpLT5pc1NWR0hpZGRlbkNvbnRhaW5lcigpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aENvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aENvbnRleHQuY3BwCmluZGV4IGU2ODg3N2RmY2M5ZTY3
NThkZDJiMGQ3NjEwNmFjMzljODYwNzZkMTIuLmZmNmI0ZjAxNTBlYzNhYWNmMTA1MDU2MzYzYTQw
OGVhNDY3YmQ1MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29udGV4dC5jcHAKQEAg
LTMwMiw3ICszMDIsNyBAQCBib29sIFNWR0xlbmd0aENvbnRleHQ6OmRldGVybWluZVZpZXdwb3J0
KEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplKSBjb25zdAogICAgIH0KIAogICAgIC8vIFRha2Ugc2l6
ZSBmcm9tIG5lYXJlc3Qgdmlld3BvcnQgZWxlbWVudC4KLSAgICBhdXRvIHZpZXdwb3J0RWxlbWVu
dCA9IG1ha2VSZWZQdHIobV9jb250ZXh0LT52aWV3cG9ydEVsZW1lbnQoKSk7CisgICAgUmVmUHRy
IHZpZXdwb3J0RWxlbWVudCA9IG1fY29udGV4dC0+dmlld3BvcnRFbGVtZW50KCk7CiAgICAgaWYg
KCFpczxTVkdTVkdFbGVtZW50Pih2aWV3cG9ydEVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAppbmRleCA5MGMxY2ZmNDVkMTQz
MjgxNjIwMTEzNmIxY2U4ZjU5YzViOGQ2NDhmLi40OTdjOWM1NzFhZGM4NDE2NjJhMDMwNmU0OTFh
ZGUwOGY0YTYwODM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCkBAIC0xMDcs
NyArMTA3LDcgQEAgUmVmUHRyPEZyYW1lPiBTVkdTVkdFbGVtZW50OjpmcmFtZUZvckN1cnJlbnRT
Y2FsZSgpIGNvbnN0CiAgICAgLy8gSWYgdGhlIGRvY3VtZW50IGlzIGVtYmVkZGVkLCB0aGUgc2Nh
bGluZyBpcyBoYW5kbGVkIGJ5IHRoZSBob3N0IHJlbmRlcmVyLgogICAgIGlmICghaXNDb25uZWN0
ZWQoKSB8fCAhaXNPdXRlcm1vc3RTVkdTVkdFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKGRvY3VtZW50KCkuZnJhbWUoKSk7Cisg
ICAgUmVmUHRyIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIHJldHVybiBmcmFtZSAm
JiBmcmFtZS0+aXNNYWluRnJhbWUoKSA/IGZyYW1lIDogbnVsbHB0cjsKIH0KIApAQCAtMjczLDcg
KzI3Myw3IEBAIGJvb2wgU1ZHU1ZHRWxlbWVudDo6Y2hlY2tFbmNsb3N1cmUoUmVmPFNWR0VsZW1l
bnQ+JiYgZWxlbWVudCwgU1ZHUmVjdCYgcmVjdCkKIAogdm9pZCBTVkdTVkdFbGVtZW50OjpkZXNl
bGVjdEFsbCgpCiB7Ci0gICAgaWYgKGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKGRvY3VtZW50KCku
ZnJhbWUoKSkpCisgICAgaWYgKFJlZlB0ciBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKSkKICAg
ICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLmNsZWFyKCk7CiB9CiAKQEAgLTM2Niw3ICszNjYsNyBA
QCBBZmZpbmVUcmFuc2Zvcm0gU1ZHU1ZHRWxlbWVudDo6bG9jYWxDb29yZGluYXRlU3BhY2VUcmFu
c2Zvcm0oU1ZHTG9jYXRhYmxlOjpDVE1TYwogICAgICAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0
ZShsb2NhdGlvbi54KCkgLSB2aWV3Qm94VHJhbnNmb3JtLmUoKSwgbG9jYXRpb24ueSgpIC0gdmll
d0JveFRyYW5zZm9ybS5mKCkpOwogCiAgICAgICAgICAgICAvLyBSZXNwZWN0IHNjcm9sbCBvZmZz
ZXQuCi0gICAgICAgICAgICBpZiAoYXV0byB2aWV3ID0gbWFrZVJlZlB0cihkb2N1bWVudCgpLnZp
ZXcoKSkpIHsKKyAgICAgICAgICAgIGlmIChSZWZQdHIgdmlldyA9IGRvY3VtZW50KCkudmlldygp
KSB7CiAgICAgICAgICAgICAgICAgTGF5b3V0UG9pbnQgc2Nyb2xsUG9zaXRpb24gPSB2aWV3LT5z
Y3JvbGxQb3NpdGlvbigpOwogICAgICAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uLnNjYWxlKHpv
b21GYWN0b3IpOwogICAgICAgICAgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLXNjcm9sbFBv
c2l0aW9uKTsKQEAgLTY4OSw3ICs2ODksNyBAQCBFbGVtZW50KiBTVkdTVkdFbGVtZW50OjpnZXRF
bGVtZW50QnlJZChjb25zdCBBdG9tU3RyaW5nJiBpZCkKICAgICBpZiAoaWQuaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBlbGVtZW50ID0gbWFrZVJlZlB0cih0
cmVlU2NvcGUoKS5nZXRFbGVtZW50QnlJZChpZCkpOworICAgIFJlZlB0ciBlbGVtZW50ID0gdHJl
ZVNjb3BlKCkuZ2V0RWxlbWVudEJ5SWQoaWQpOwogICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQt
PmlzRGVzY2VuZGFudE9mKCp0aGlzKSkKICAgICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCk7CiAg
ICAgaWYgKHRyZWVTY29wZSgpLmNvbnRhaW5zTXVsdGlwbGVFbGVtZW50c1dpdGhJZChpZCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAKaW5kZXggMjViODJhMjlhNjc0MDE2
YTc2MmVkZDU5Y2I1ODhlYTY5YWQwZTNhZC4uNGZiN2EwODJjYzg1MjQzNjZmODY5NTU0MWYyNjE1
NGY3YWJhYmYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAKQEAgLTU4
LDcgKzU4LDcgQEAgYm9vbCBTVkdTdHlsZUVsZW1lbnQ6OmRpc2FibGVkKCkgY29uc3QKIAogdm9p
ZCBTVkdTdHlsZUVsZW1lbnQ6OnNldERpc2FibGVkKGJvb2wgc2V0RGlzYWJsZWQpCiB7Ci0gICAg
aWYgKGF1dG8gc3R5bGVTaGVldCA9IG1ha2VSZWZQdHIoc2hlZXQoKSkpCisgICAgaWYgKFJlZlB0
ciBzdHlsZVNoZWV0ID0gc2hlZXQoKSkKICAgICAgICAgc3R5bGVTaGVldC0+c2V0RGlzYWJsZWQo
c2V0RGlzYWJsZWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJl
ZkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAppbmRl
eCA3NjlhYTFhMTJkZmVjYjk1ZTg2YzYxODkyMDBjMWQ3ZWI2Mjg2NjYwLi5lMTFhZWI1MTdiNDVh
NWQxNjZkZGQwYTEyZjM5NDhmNWMyZDBhNTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVFJlZkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxl
bWVudC5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIFNWR1RSZWZFbGVtZW50OjpkZXRhY2hU
YXJnZXQoKQogICAgIFN0cmluZyBlbXB0eUNvbnRlbnQ7CiAKICAgICBBU1NFUlQoc2hhZG93Um9v
dCgpKTsKLSAgICBhdXRvIGNvbnRhaW5lciA9IG1ha2VSZWZQdHIoc2hhZG93Um9vdCgpLT5maXJz
dENoaWxkKCkpOworICAgIFJlZlB0ciBjb250YWluZXIgPSBzaGFkb3dSb290KCktPmZpcnN0Q2hp
bGQoKTsKICAgICBpZiAoY29udGFpbmVyKQogICAgICAgICBjb250YWluZXItPnNldFRleHRDb250
ZW50KGVtcHR5Q29udGVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
cmFuc2Zvcm1MaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmNw
cAppbmRleCA2Mzc1YjYyMDUzYmMyMjI1NGRlNDFkMDA5MDY1NDlkOTIxMjdiZTY3Li41NTZjZjg1
NTQ5YWQ0MTQ2ZmIwZWY4N2YyZmJlMzJmNmE1Mjk2NDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RyYW5zZm9ybUxpc3QuY3BwCkBAIC00NCwxNCArNDQsMTQgQEAgRXhjZXB0aW9uT3I8UmVmUHRy
PFNWR1RyYW5zZm9ybT4+IFNWR1RyYW5zZm9ybUxpc3Q6OmNvbnNvbGlkYXRlKCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAobV9pdGVtcy5zaXplKCkgPT0gMSkKLSAgICAgICAg
cmV0dXJuIG1ha2VSZWZQdHIoYXQoMCkuZ2V0KCkpOworICAgICAgICByZXR1cm4gUmVmUHRyIHsg
YXQoMCkucHRyKCkgfTsKIAogICAgIGF1dG8gbmV3SXRlbSA9IFNWR1RyYW5zZm9ybTo6Y3JlYXRl
KGNvbmNhdGVuYXRlKCkpOwogICAgIGNsZWFySXRlbXMoKTsKIAogICAgIGF1dG8gaXRlbSA9IGFw
cGVuZChXVEZNb3ZlKG5ld0l0ZW0pKTsKICAgICBjb21taXRDaGFuZ2UoKTsKLSAgICByZXR1cm4g
bWFrZVJlZlB0cihpdGVtLmdldCgpKTsKKyAgICByZXR1cm4gUmVmUHRyIHsgaXRlbS5wdHIoKSB9
OwogfQogCiBBZmZpbmVUcmFuc2Zvcm0gU1ZHVHJhbnNmb3JtTGlzdDo6Y29uY2F0ZW5hdGUoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCmluZGV4IGIyYjAyNjM1YzQwNjdh
MTBjOWZmYzZiNTQ5ZDE5OThjMDNkYTgxZWUuLmQ1ZWI3YmRjMzVmNDc4ZjA3ZjMxZmYxNjliZjJi
ZTEyYWQ2MThkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKQEAgLTE0Nyw3
ICsxNDcsNyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnRyYW5zZmVyU2l6ZUF0dHJpYnV0ZXNUb1Rh
cmdldENsb25lKFNWR0VsZW1lbnQmIHNoYWRvd0VsZW1lbgogICAgIH0gZWxzZSBpZiAoaXM8U1ZH
U1ZHRWxlbWVudD4oc2hhZG93RWxlbWVudCkpIHsKICAgICAgICAgLy8gU3BlYyAoPHVzZT4gb24g
PHN2Zz4pOiBJZiBhdHRyaWJ1dGVzIHdpZHRoIGFuZC9vciBoZWlnaHQgYXJlIHByb3ZpZGVkIG9u
IHRoZSAndXNlJyBlbGVtZW50LCB0aGVuIHRoZXNlCiAgICAgICAgIC8vIHZhbHVlcyB3aWxsIG92
ZXJyaWRlIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZXMgb24gdGhlICdzdmcnIGluIHRoZSBn
ZW5lcmF0ZWQgdHJlZS4KLSAgICAgICAgYXV0byBjb3JyZXNwb25kaW5nRWxlbWVudCA9IG1ha2VS
ZWZQdHIoc2hhZG93RWxlbWVudC5jb3JyZXNwb25kaW5nRWxlbWVudCgpKTsKKyAgICAgICAgUmVm
UHRyIGNvcnJlc3BvbmRpbmdFbGVtZW50ID0gc2hhZG93RWxlbWVudC5jb3JyZXNwb25kaW5nRWxl
bWVudCgpOwogICAgICAgICBzaGFkb3dFbGVtZW50LnNldEF0dHJpYnV0ZShTVkdOYW1lczo6d2lk
dGhBdHRyLCB3aWR0aCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpID8gQXRvbVN0cmluZyh3aWR0
aCgpLnZhbHVlQXNTdHJpbmcoKSkgOiAoY29ycmVzcG9uZGluZ0VsZW1lbnQgPyBjb3JyZXNwb25k
aW5nRWxlbWVudC0+Z2V0QXR0cmlidXRlKFNWR05hbWVzOjp3aWR0aEF0dHIpIDogbnVsbEF0b20o
KSkpOwogICAgICAgICBzaGFkb3dFbGVtZW50LnNldEF0dHJpYnV0ZShTVkdOYW1lczo6aGVpZ2h0
QXR0ciwgaGVpZ2h0KCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCkgPyBBdG9tU3RyaW5nKGhlaWdo
dCgpLnZhbHVlQXNTdHJpbmcoKSkgOiAoY29ycmVzcG9uZGluZ0VsZW1lbnQgPyBjb3JyZXNwb25k
aW5nRWxlbWVudC0+Z2V0QXR0cmlidXRlKFNWR05hbWVzOjpoZWlnaHRBdHRyKSA6IG51bGxBdG9t
KCkpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NW
R1NNSUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVs
ZW1lbnQuY3BwCmluZGV4IDU1NGNkMWM3NThjYTIyY2RiYmVmZjQwYmRmYTc2Y2ExZDNhNTEyZjIu
LmNjNWQ0MmE4YzdmMGVmYjJjNThkZjVmNGI0Mjc1YWY4NThiYWQwNzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCkBAIC0xOTIsNyArMTky
LDcgQEAgdm9pZCBTVkdTTUlMRWxlbWVudDo6YnVpbGRQZW5kaW5nUmVzb3VyY2UoKQogICAgICAg
ICB0YXJnZXQgPSBXVEZNb3ZlKHJlc3VsdC5lbGVtZW50KTsKICAgICAgICAgaWQgPSBXVEZNb3Zl
KHJlc3VsdC5pZGVudGlmaWVyKTsKICAgICB9Ci0gICAgYXV0byBzdmdUYXJnZXQgPSBtYWtlUmVm
UHRyKGlzPFNWR0VsZW1lbnQ+KHRhcmdldCkgJiYgdGFyZ2V0LT5pc0Nvbm5lY3RlZCgpID8gZG93
bmNhc3Q8U1ZHRWxlbWVudD4odGFyZ2V0LmdldCgpKSA6IG51bGxwdHIpOworICAgIFJlZlB0ciBz
dmdUYXJnZXQgPSBpczxTVkdFbGVtZW50Pih0YXJnZXQpICYmIHRhcmdldC0+aXNDb25uZWN0ZWQo
KSA/IGRvd25jYXN0PFNWR0VsZW1lbnQ+KHRhcmdldC5nZXQoKSkgOiBudWxscHRyOwogCiAgICAg
aWYgKHN2Z1RhcmdldCAhPSB0YXJnZXRFbGVtZW50KCkpCiAgICAgICAgIHNldFRhcmdldEVsZW1l
bnQoc3ZnVGFyZ2V0LmdldCgpKTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBOb2RlOjpJbnNlcnRlZElu
dG9BbmNlc3RvclJlc3VsdCBTVkdTTUlMRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5z
ZXJ0aW9uVAogCiAgICAgdXBkYXRlQXR0cmlidXRlTmFtZSgpOwogCi0gICAgYXV0byBvd25lciA9
IG1ha2VSZWZQdHIob3duZXJTVkdFbGVtZW50KCkpOworICAgIFJlZlB0ciBvd25lciA9IG93bmVy
U1ZHRWxlbWVudCgpOwogICAgIGlmICghb3duZXIpCiAgICAgICAgIHJldHVybiBJbnNlcnRlZElu
dG9BbmNlc3RvclJlc3VsdDo6RG9uZTsKIApAQCAtNTQzLDcgKzU0Myw3IEBAIHZvaWQgU1ZHU01J
TEVsZW1lbnQ6OmNvbm5lY3RDb25kaXRpb25zKCkKICAgICBmb3IgKGF1dG8mIGNvbmRpdGlvbiA6
IG1fY29uZGl0aW9ucykgewogICAgICAgICBpZiAoY29uZGl0aW9uLm1fdHlwZSA9PSBDb25kaXRp
b246OkV2ZW50QmFzZSkgewogICAgICAgICAgICAgQVNTRVJUKCFjb25kaXRpb24ubV9zeW5jYmFz
ZSk7Ci0gICAgICAgICAgICBhdXRvIGV2ZW50QmFzZSA9IG1ha2VSZWZQdHIoZXZlbnRCYXNlRm9y
KGNvbmRpdGlvbikpOworICAgICAgICAgICAgUmVmUHRyIGV2ZW50QmFzZSA9IGV2ZW50QmFzZUZv
cihjb25kaXRpb24pOwogICAgICAgICAgICAgaWYgKCFldmVudEJhc2UpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICBBU1NFUlQoIWNvbmRpdGlvbi5tX2V2ZW50TGlzdGVu
ZXIpOwpAQCAtNTc4LDcgKzU3OCw3IEBAIHZvaWQgU1ZHU01JTEVsZW1lbnQ6OmRpc2Nvbm5lY3RD
b25kaXRpb25zKCkKICAgICAgICAgICAgIC8vIG5vIGd1YXJhbnRlZSB0aGF0IGV2ZW50QmFzZUZv
cigpIHdpbGwgYmUgYWJsZSB0byBmaW5kIG91ciBjb25kaXRpb24ncwogICAgICAgICAgICAgLy8g
b3JpZ2luYWwgZXZlbnRCYXNlLiBTbywgd2UgYWxzbyBoYXZlIHRvIGRpc2Nvbm5lY3Qgb3Vyc2Vs
dmVzIGZyb20KICAgICAgICAgICAgIC8vIG91ciBjb25kaXRpb24gZXZlbnQgbGlzdGVuZXIsIGlu
IGNhc2UgaXQgbGF0ZXIgZmlyZXMuCi0gICAgICAgICAgICBhdXRvIGV2ZW50QmFzZSA9IG1ha2VS
ZWZQdHIoZXZlbnRCYXNlRm9yKGNvbmRpdGlvbikpOworICAgICAgICAgICAgUmVmUHRyIGV2ZW50
QmFzZSA9IGV2ZW50QmFzZUZvcihjb25kaXRpb24pOwogICAgICAgICAgICAgaWYgKGV2ZW50QmFz
ZSkKICAgICAgICAgICAgICAgICBldmVudEJhc2UtPnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uZGl0
aW9uLm1fbmFtZSwgKmNvbmRpdGlvbi5tX2V2ZW50TGlzdGVuZXIsIGZhbHNlKTsKICAgICAgICAg
ICAgIGNvbmRpdGlvbi5tX2V2ZW50TGlzdGVuZXItPmRpc2Nvbm5lY3RBbmltYXRpb24oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IGQ2MzkzZDIyYzliZTlj
NzRiYmE3NzVhYzVhMjFlNWRjNzVhYzAwNDIuLmM0NzMzZGJiNTE3ZDg0MmQ4NTFhZmRjMzM0ZTZi
MGY0MzFjYjI2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApA
QCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgU1ZHSW1hZ2U6OnNldENvbnRhaW5lclNpemUoY29uc3Qg
RmxvYXRTaXplJiBzaXplKQogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGF1dG8gdmlldyA9IG1ha2VSZWZQdHIoZnJhbWVWaWV3KCkpOworICAgIFJlZlB0ciB2aWV3
ID0gZnJhbWVWaWV3KCk7CiAgICAgdmlldy0+cmVzaXplKHRoaXMtPmNvbnRhaW5lclNpemUoKSk7
CiAKICAgICByZW5kZXJlci0+c2V0Q29udGFpbmVyU2l6ZShJbnRTaXplKHNpemUpKTsKQEAgLTI4
Niw3ICsyODYsNyBAQCBJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlYwogICAgICAgICByZXR1cm4gZHJh
d0FzTmF0aXZlSW1hZ2UoY29udGV4dCwgZHN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiAgICAg
fQogCi0gICAgYXV0byB2aWV3ID0gbWFrZVJlZlB0cihmcmFtZVZpZXcoKSk7CisgICAgUmVmUHRy
IHZpZXcgPSBmcmFtZVZpZXcoKTsKICAgICBBU1NFUlQodmlldyk7CiAKICAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CkBAIC00NTEsNyArNDUxLDcgQEAg
Ym9vbCBTVkdJbWFnZTo6aXNBbmltYXRpbmcoKSBjb25zdAogCiB2b2lkIFNWR0ltYWdlOjpyZXBv
cnRBcHByb3hpbWF0ZU1lbW9yeUNvc3QoKSBjb25zdAogewotICAgIGF1dG8gZG9jdW1lbnQgPSBt
YWtlUmVmUHRyKG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSk7CisgICAgUmVmUHRyIGRv
Y3VtZW50ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpOwogICAgIHNpemVfdCBkZWNv
ZGVkSW1hZ2VNZW1vcnlDb3N0ID0gMDsKIAogICAgIGZvciAoUmVmUHRyPE5vZGU+IG5vZGUgPSBk
b2N1bWVudDsgbm9kZTsgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5vZGUpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAppbmRl
eCBjNjMyOGNmYjVlMTRkMDc3MWIzMDVmOGJlYTcwZTU2NjE1NTljODIzLi4zODVhZjI5MDg0OGEz
ZDBiODNmMTJhYzk2MTllNmJmOTZjOWYyMzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZv
aWQgRkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSA9IGZpbHRlcigpLmFic29sdXRlVHJhbnNmb3Jt
KCk7CiAgICAgICAgIGNvbnRleHQuY29uY2F0Q1RNKGFic29sdXRlVHJhbnNmb3JtKTsKIAotICAg
ICAgICBhdXRvIGNvbnRleHROb2RlID0gbWFrZVJlZlB0cihkb3duY2FzdDxTVkdFbGVtZW50Pihy
ZW5kZXJlci0+ZWxlbWVudCgpKSk7CisgICAgICAgIFJlZlB0ciBjb250ZXh0Tm9kZSA9IGRvd25j
YXN0PFNWR0VsZW1lbnQ+KHJlbmRlcmVyLT5lbGVtZW50KCkpOwogICAgICAgICBpZiAoY29udGV4
dE5vZGUtPmhhc1JlbGF0aXZlTGVuZ3RocygpKSB7CiAgICAgICAgICAgICBTVkdMZW5ndGhDb250
ZXh0IGxlbmd0aENvbnRleHQoY29udGV4dE5vZGUuZ2V0KCkpOwogICAgICAgICAgICAgRmxvYXRT
aXplIHZpZXdwb3J0U2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR1Byb3BlcnR5QW5pbWF0b3IuaAppbmRleCAxN2Y3YzViOTVlMTdkOGJmMzJhYjhhODMwMDZk
OGJkNTZhNjAyYjQwLi44OTFhNDY2OTYwNjQ3NjQ1MDhiMWFkZjUwNWIwYmE1ZjI1MzU5ZjYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFuaW1h
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBbmlt
YXRvci5oCkBAIC03OCw3ICs3OCw3IEBAIHByb3RlY3RlZDoKIAogICAgIFN0cmluZyBjb21wdXRl
Q1NTUHJvcGVydHlWYWx1ZShTVkdFbGVtZW50JiB0YXJnZXRFbGVtZW50LCBDU1NQcm9wZXJ0eUlE
IGlkKSBjb25zdAogICAgIHsKLSAgICAgICAgYXV0byBwcm90ZWN0b3IgPSBtYWtlUmVmUHRyKHRh
cmdldEVsZW1lbnQpOworICAgICAgICBSZWYgcHJvdGVjdG9yID0gdGFyZ2V0RWxlbWVudDsKIAog
ICAgICAgICAvLyBEb24ndCBpbmNsdWRlIGFueSBwcm9wZXJ0aWVzIHJlc3VsdGluZyBmcm9tIENT
UyBUcmFuc2l0aW9ucy9BbmltYXRpb25zIG9yIFNNSUwgYW5pbWF0aW9ucywgYXMgd2Ugd2FudCB0
byByZXRyaWV2ZSB0aGUgImJhc2UgdmFsdWUiLgogICAgICAgICB0YXJnZXRFbGVtZW50LnNldFVz
ZU92ZXJyaWRlQ29tcHV0ZWRTdHlsZSh0cnVlKTsKQEAgLTg5LDcgKzg5LDcgQEAgcHJvdGVjdGVk
OgogCiAgICAgU3RyaW5nIGNvbXB1dGVJbmhlcml0ZWRDU1NQcm9wZXJ0eVZhbHVlKFNWR0VsZW1l
bnQmIHRhcmdldEVsZW1lbnQpIGNvbnN0CiAgICAgewotICAgICAgICBhdXRvIHBhcmVudCA9IG1h
a2VSZWZQdHIodGFyZ2V0RWxlbWVudC5wYXJlbnRFbGVtZW50KCkpOworICAgICAgICBSZWZQdHIg
cGFyZW50ID0gdGFyZ2V0RWxlbWVudC5wYXJlbnRFbGVtZW50KCk7CiAgICAgICAgIGlmICghcGFy
ZW50IHx8ICFwYXJlbnQtPmlzU1ZHRWxlbWVudCgpKQogICAgICAgICAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4
IDNmZmE4ZTYxOGJjMjU5YjY3MzQyNmE0YTY3YzNjYTUyNTU1NjNiNTEuLmFlYzc2MGU1NGE5ZjZk
YmI5YWEyN2RkMGI3YjQzNzI5OGQ4NThkY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKQEAgLTI1NTksMTMgKzI1NTksMTMgQEAgdm9pZCBJbnRlcm5hbHM6OmhhbmRsZUFjY2Vw
dGVkQ2FuZGlkYXRlKGNvbnN0IFN0cmluZyYgY2FuZGlkYXRlLCB1bnNpZ25lZCBsb2NhdGkKIAog
dm9pZCBJbnRlcm5hbHM6OmNoYW5nZVNlbGVjdGlvbkxpc3RUeXBlKCkKIHsKLSAgICBpZiAoYXV0
byBmcmFtZSA9IG1ha2VSZWZQdHIodGhpcy0+ZnJhbWUoKSkpCisgICAgaWYgKFJlZlB0ciBmcmFt
ZSA9IHRoaXMtPmZyYW1lKCkpCiAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jaGFuZ2VTZWxlY3Rp
b25MaXN0VHlwZSgpOwogfQogCiB2b2lkIEludGVybmFsczo6Y2hhbmdlQmFja1RvUmVwbGFjZWRT
dHJpbmcoY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZykKIHsKLSAgICBpZiAoYXV0byBmcmFt
ZSA9IG1ha2VSZWZQdHIodGhpcy0+ZnJhbWUoKSkpCisgICAgaWYgKFJlZlB0ciBmcmFtZSA9IHRo
aXMtPmZyYW1lKCkpCiAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jaGFuZ2VCYWNrVG9SZXBsYWNl
ZFN0cmluZyhyZXBsYWNlZFN0cmluZyk7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>