<?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>226690</bug_id>
          
          <creation_ts>2021-06-05 17:20:13 -0700</creation_ts>
          <short_desc>[ANGLE] Support importing external MTLTextures</short_desc>
          <delta_ts>2021-06-22 13:33:36 -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>New Bugs</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="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>kbr</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1767166</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-06-05 17:20:13 -0700</bug_when>
    <thetext>[ANGLE] Support importing external MTLTextures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767167</commentid>
    <comment_count>1</comment_count>
      <attachid>430665</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-06-05 17:22:12 -0700</bug_when>
    <thetext>Created attachment 430665
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767168</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-06-05 17:23:05 -0700</bug_when>
    <thetext>Note that there are important steps to take when updating ANGLE. See https://trac.webkit.org/wiki/UpdatingANGLE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767169</commentid>
    <comment_count>3</comment_count>
      <attachid>430665</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-06-05 17:23:25 -0700</bug_when>
    <thetext>Comment on attachment 430665
Patch

Merging https://chromium-review.googlesource.com/c/angle/angle/+/2820178

Not for review yet. Just seeing if it doesn&apos;t break anything. I haven&apos;t checked that it works.

Note that the test app in the patch only supports reading from MTLTextures, whereas I want to use them as a write target on a framebuffer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767170</commentid>
    <comment_count>4</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-06-05 17:25:36 -0700</bug_when>
    <thetext>rdar://73009209</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771551</commentid>
    <comment_count>5</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-06-21 17:47:02 -0700</bug_when>
    <thetext>This is ready for review now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771758</commentid>
    <comment_count>6</comment_count>
      <attachid>430665</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-06-22 12:50:37 -0700</bug_when>
    <thetext>Comment on attachment 430665
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771773</commentid>
    <comment_count>7</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-06-22 13:33:36 -0700</bug_when>
    <thetext>Committed r279143 (239052@main): &lt;https://commits.webkit.org/239052@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430665</attachid>
            <date>2021-06-05 17:22:12 -0700</date>
            <delta_ts>2021-06-22 12:50:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226690-20210606102210.patch</filename>
            <type>text/plain</type>
            <size>64828</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggNTQ5ZDAxOTFkYjcwNDgwZDgyM2FhNzg3OGVlZmJhMzIwZTE2MjhiMy4uMjY2ZTJhYzI4NjA1
MGVmNGEyNDg3NTAwMWQwZjA1MTYyZTNkYjNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDkwIEBACisyMDIxLTA2LTA1ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxl
LmNvbT4KKworICAgICAgICBbQU5HTEVdIFN1cHBvcnQgaW1wb3J0aW5nIGV4dGVybmFsIE1UTFRl
eHR1cmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjY2OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
dXBwb3J0IE1UTFRleHR1cmVzIGFzIEdMIHRleHR1cmVzLgorICAgICAgICBNZXJnZSBodHRwczov
L2Nocm9taXVtLXJldmlldy5nb29nbGVzb3VyY2UuY29tL2MvYW5nbGUvYW5nbGUvKy8yODIwMTc4
CisKKyAgICAgICAgKiBBTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGV4dGVuc2lvbnMvRUdMX0FOR0xFX21ldGFsX3RleHR1cmVfY2xpZW50X2J1ZmZlci50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGluY2x1ZGUvRUdML2VnbGV4dF9hbmdsZS5oOgorICAgICAgICAqIHNy
Yy9jb21tb24vdXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKGVnbDo6SXNFeHRlcm5hbEltYWdlVGFy
Z2V0KToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvQ2Fwcy5jcHA6CisgICAgICAgIChlZ2w6OkRp
c3BsYXlFeHRlbnNpb25zOjpnZXRTdHJpbmdzIGNvbnN0KToKKyAgICAgICAgKiBzcmMvbGliQU5H
TEUvQ2Fwcy5oOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9CVUlMRC5n
bjoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvRGlzcGxheU10bC5oOgor
ICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9EaXNwbGF5TXRsLm1tOgorICAg
ICAgICAocng6OkRpc3BsYXlNdGw6OmNyZWF0ZUltYWdlKToKKyAgICAgICAgKHJ4OjpEaXNwbGF5
TXRsOjpjcmVhdGVFeHRlcm5hbEltYWdlU2libGluZyk6CisgICAgICAgIChyeDo6RGlzcGxheU10
bDo6Z2VuZXJhdGVFeHRlbnNpb25zIGNvbnN0KToKKyAgICAgICAgKHJ4OjpEaXNwbGF5TXRsOjp2
YWxpZGF0ZUltYWdlQ2xpZW50QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKHJ4OjpEaXNwbGF5TXRs
Ojppbml0aWFsaXplRXh0ZW5zaW9ucyBjb25zdCk6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL21ldGFsL0ltYWdlTXRsLmg6IEFkZGVkLgorICAgICAgICAocng6OlRleHR1cmVJbWFn
ZVNpYmxpbmdNdGw6OmdldFRleHR1cmUgY29uc3QpOgorICAgICAgICAocng6OlRleHR1cmVJbWFn
ZVNpYmxpbmdNdGw6OmdldEZvcm1hdE10bCBjb25zdCk6CisgICAgICAgIChyeDo6SW1hZ2VNdGw6
OmdldFRleHR1cmUgY29uc3QpOgorICAgICAgICAocng6OkltYWdlTXRsOjpnZXRJbWFnZVRleHR1
cmVUeXBlIGNvbnN0KToKKyAgICAgICAgKHJ4OjpJbWFnZU10bDo6Z2V0SW1hZ2VMZXZlbCBjb25z
dCk6CisgICAgICAgIChyeDo6SW1hZ2VNdGw6OmdldEltYWdlTGF5ZXIgY29uc3QpOgorICAgICAg
ICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9JbWFnZU10bC5tbTogQWRkZWQuCisgICAg
ICAgIChyeDo6VGV4dHVyZUltYWdlU2libGluZ010bDo6VGV4dHVyZUltYWdlU2libGluZ010bCk6
CisgICAgICAgIChyeDo6VGV4dHVyZUltYWdlU2libGluZ010bDo6flRleHR1cmVJbWFnZVNpYmxp
bmdNdGwpOgorICAgICAgICAocng6OlRleHR1cmVJbWFnZVNpYmxpbmdNdGw6OlZhbGlkYXRlQ2xp
ZW50QnVmZmVyKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlSW1hZ2VTaWJsaW5nTXRsOjppbml0aWFs
aXplKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlSW1hZ2VTaWJsaW5nTXRsOjppbml0SW1wbCk6Cisg
ICAgICAgIChyeDo6VGV4dHVyZUltYWdlU2libGluZ010bDo6b25EZXN0cm95KToKKyAgICAgICAg
KHJ4OjpUZXh0dXJlSW1hZ2VTaWJsaW5nTXRsOjpnZXRGb3JtYXQgY29uc3QpOgorICAgICAgICAo
cng6OlRleHR1cmVJbWFnZVNpYmxpbmdNdGw6OmlzUmVuZGVyYWJsZSBjb25zdCk6CisgICAgICAg
IChyeDo6VGV4dHVyZUltYWdlU2libGluZ010bDo6aXNUZXh0dXJhYmxlIGNvbnN0KToKKyAgICAg
ICAgKHJ4OjpUZXh0dXJlSW1hZ2VTaWJsaW5nTXRsOjpnZXRTaXplIGNvbnN0KToKKyAgICAgICAg
KHJ4OjpUZXh0dXJlSW1hZ2VTaWJsaW5nTXRsOjpnZXRTYW1wbGVzIGNvbnN0KToKKyAgICAgICAg
KHJ4OjpJbWFnZU10bDo6SW1hZ2VNdGwpOgorICAgICAgICAocng6OkltYWdlTXRsOjp+SW1hZ2VN
dGwpOgorICAgICAgICAocng6OkltYWdlTXRsOjpvbkRlc3Ryb3kpOgorICAgICAgICAocng6Oklt
YWdlTXRsOjppbml0aWFsaXplKToKKyAgICAgICAgKHJ4OjpJbWFnZU10bDo6b3JwaGFuKToKKyAg
ICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvUmVuZGVyQnVmZmVyTXRsLm1tOgor
ICAgICAgICAocng6OlJlbmRlcmJ1ZmZlck10bDo6c2V0U3RvcmFnZUVHTEltYWdlVGFyZ2V0KToK
KyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvVGV4dHVyZU10bC5tbToKKyAg
ICAgICAgKHJ4OjpUZXh0dXJlTXRsOjpzZXRFR0xJbWFnZVRhcmdldCk6CisgICAgICAgICogc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL2dlbl9tdGxfZm9ybWF0X3RhYmxlLnB5OgorICAgICAg
ICAoZ2VuX2ltYWdlX21hcF9zd2l0Y2hfbWFjX2Nhc2UuZ2VuX2Zvcm1hdF9hc3NpZ25fY29kZSk6
CisgICAgICAgIChnZW5faW1hZ2VfbXRsX3RvX2FuZ2xlX3N3aXRjaF9zdHJpbmcpOgorICAgICAg
ICAobWFpbik6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9jb21t
b24uaDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2Zvcm1hdF90
YWJsZV9hdXRvZ2VuLm1tOgorICAgICAgICAocng6Om10bDo6Rm9ybWF0OjpNZXRhbFRvQW5nbGVG
b3JtYXRJRCk6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9mb3Jt
YXRfdXRpbHMuaDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVHTC5jcHA6Cisg
ICAgICAgIChlZ2w6OlZhbGlkYXRlQ3JlYXRlSW1hZ2UpOgorICAgICAgICAqIHNyYy90ZXN0cy9C
VUlMRC5nbjoKKyAgICAgICAgKiBzcmMvdGVzdHMvZ2xfdGVzdHMvSW1hZ2VUZXN0LmNwcDoKKyAg
ICAgICAgKGFuZ2xlOjpURVNUX1ApOgorICAgICAgICAqIHNyYy90ZXN0cy9nbF90ZXN0cy9JbWFn
ZVRlc3RNZXRhbC5tbTogQWRkZWQuCisgICAgICAgIChhbmdsZTo6U2NvcGVNZXRhbFRleHR1cmVS
ZWY6OlNjb3BlTWV0YWxUZXh0dXJlUmVmKToKKyAgICAgICAgKGFuZ2xlOjpTY29wZU1ldGFsVGV4
dHVyZVJlZjo6flNjb3BlTWV0YWxUZXh0dXJlUmVmKToKKyAgICAgICAgKGFuZ2xlOjpTY29wZU1l
dGFsVGV4dHVyZVJlZjo6Z2V0IGNvbnN0KToKKyAgICAgICAgKGFuZ2xlOjpTY29wZU1ldGFsVGV4
dHVyZVJlZjo6b3BlcmF0b3IgaWQ8TVRMVGV4dHVyZT4gY29uc3QpOgorICAgICAgICAoYW5nbGU6
OlNjb3BlTWV0YWxUZXh0dXJlUmVmOjpvcGVyYXRvcj0pOgorICAgICAgICAoYW5nbGU6OlNjb3Bl
TWV0YWxUZXh0dXJlUmVmOjpyZWxlYXNlKToKKyAgICAgICAgKGFuZ2xlOjpDcmVhdGVNZXRhbFRl
eHR1cmUyRCk6CisgICAgICAgIChhbmdsZTo6SW1hZ2VUZXN0TWV0YWw6OkltYWdlVGVzdE1ldGFs
KToKKyAgICAgICAgKGFuZ2xlOjpJbWFnZVRlc3RNZXRhbDo6Z2V0TXRsRGV2aWNlKToKKyAgICAg
ICAgKGFuZ2xlOjpJbWFnZVRlc3RNZXRhbDo6Y3JlYXRlTXRsVGV4dHVyZTJEKToKKyAgICAgICAg
KGFuZ2xlOjpJbWFnZVRlc3RNZXRhbDo6dmVyaWZ5UmVzdWx0c1RleHR1cmUpOgorICAgICAgICAo
YW5nbGU6OkltYWdlVGVzdE1ldGFsOjp2ZXJpZnlSZXN1bHRzMkQpOgorICAgICAgICAoYW5nbGU6
OkltYWdlVGVzdE1ldGFsOjpyZWludGVycHJldEhlbHBlcik6CisgICAgICAgIChhbmdsZTo6SW1h
Z2VUZXN0TWV0YWw6Omhhc0ltYWdlTmF0aXZlTWV0YWxUZXh0dXJlRXh0IGNvbnN0KToKKyAgICAg
ICAgKGFuZ2xlOjpJbWFnZVRlc3RNZXRhbDo6aGFzT0VTRXh0IGNvbnN0KToKKyAgICAgICAgKGFu
Z2xlOjpJbWFnZVRlc3RNZXRhbDo6aGFzQmFzZUV4dCBjb25zdCk6CisgICAgICAgIChhbmdsZTo6
SW1hZ2VUZXN0TWV0YWw6OnNvdXJjZU1ldGFsVGFyZ2V0MkRfaGVscGVyKToKKyAgICAgICAgKGFu
Z2xlOjpURVNUX1ApOgorCiAyMDIxLTA2LTAyICBLeWxlIFBpZGRpbmd0b24gIDxrcGlkZGluZ3Rv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkICdtaXgnIG92ZXJyaWRlIHdpdGggYm9vbC12ZWN0
b3JzIHRvIE1TTCB0cmFuc2xhdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvQU5HTEUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2YzFhMzBjMGMyMDY4Njhl
ZTlhNzY3M2IxNDBkM2U3MGVmY2IwMjU4Li5lZDlmYmJhOWI0ZDliNDAxNTI0MTUxMmUzNGEyYmQ3
ZTkyMzA4OGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xF
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxLDYgKzIxLDcgQEAKIC8qIEVuZCBQQlhB
Z2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlv
biAqLworCQkzMTU0QTg0NzI2NkM0QUZGMDBCRjMzQjcgLyogSW1hZ2VNdGwubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTU0QTg0NTI2NkM0QUZFMDBC
RjMzQjcgLyogSW1hZ2VNdGwubW0gKi87IH07CiAJCTMxQ0QwMDAwMjQ5MTg0QjUwMDQ4NkYyNyAv
KiBXaW5kb3dTdXJmYWNlQ0dMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMzFCNjE4MTIzMEI3NDdFMDAxNjEwRDcgLyogV2luZG93U3VyZmFjZUNHTC5o
ICovOyB9OwogCQkzMUNEMDAwMTI0OTE4NEI1MDA0ODZGMjcgLyogRGV2aWNlQ0dMLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTMxQTBBMjIzNEVFRUQ0
MDBDODQ3ODQgLyogRGV2aWNlQ0dMLmggKi87IH07CiAJCTMxQ0QwMDAyMjQ5MTg0QjUwMDQ4NkYy
NyAvKiBJT1N1cmZhY2VTdXJmYWNlQ0dMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1Q0NENTk3MTIyODRGQTgyMDAxOEYyRDggLyogSU9TdXJmYWNlU3Vy
ZmFjZUNHTC5oICovOyB9OwpAQCAtOTU2LDYgKzk1Nyw4IEBACiAJCTMxM0JDRTUzMjM2MTEzMzkw
MEZDMzlFNSAvKiBEaXNwbGF5RUFHTC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IERpc3BsYXlFQUdMLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
MTUzQUNGRTIzOTA3MUQ5MDBENTFERDggLyogV2ViS2l0VGFyZ2V0Q29uZGl0aW9uYWxzLnhjY29u
ZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFdlYktpdFRhcmdldENvbmRpdGlv
bmFscy54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE1M0FDRkYyMzkw
NzFEOTAwRDUxREQ4IC8qIFZlcnNpb24ueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmln
OyBwYXRoID0gVmVyc2lvbi54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MzE1NEE4NDUyNjZDNEFGRTAwQkYzM0I3IC8qIEltYWdlTXRsLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW1hZ2VNdGwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTMxNTRBODQ2MjY2QzRBRkYwMEJGMzNCNyAvKiBJbWFnZU10bC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZU10bC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzMTVFQkQzRTFGQ0U0M0JEMDBBQzdBODkgLyogdW5pZm9ybV90eXBlX2luZm9f
YXV0b2dlbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSB1bmlmb3Jt
X3R5cGVfaW5mb19hdXRvZ2VuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE1
RUJENDAxRkNFNDQyNjAwQUM3QTg5IC8qIFRyYW5zbGF0b3JWdWxrYW4uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHJhbnNsYXRvclZ1bGthbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNUVCRDQzMUZDRTQ0MjcwMEFDN0E4OSAvKiBVdGlsc0hM
U0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXRpbHNITFNMLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5OTAsNiArMjk5Myw4IEBACiAJCQkJ
RkY4MUZFODIyNTgxOEQ2ODAwODk0RTI0IC8qIERpc3BsYXlNdGxfYXBpLmggKi8sCiAJCQkJRkY4
MUZFQkMyNTgxOEQ2ODAwODk0RTI0IC8qIEZyYW1lQnVmZmVyTXRsLmggKi8sCiAJCQkJRkY4MUZF
QzkyNTgxOEQ2ODAwODk0RTI0IC8qIEZyYW1lQnVmZmVyTXRsLm1tICovLAorCQkJCTMxNTRBODQ2
MjY2QzRBRkYwMEJGMzNCNyAvKiBJbWFnZU10bC5oICovLAorCQkJCTMxNTRBODQ1MjY2QzRBRkUw
MEJGMzNCNyAvKiBJbWFnZU10bC5tbSAqLywKIAkJCQlGRjgxRkVBNTI1ODE4RDY4MDA4OTRFMjQg
LyogSU9TdXJmYWNlU3VyZmFjZU10bC5oICovLAogCQkJCUZGODFGRTlFMjU4MThENjgwMDg5NEUy
NCAvKiBJT1N1cmZhY2VTdXJmYWNlTXRsLm1tICovLAogCQkJCUZGODFGRUMxMjU4MThENjgwMDg5
NEUyNCAvKiBtdGxfYnVmZmVyX3Bvb2wuaCAqLywKQEAgLTM3ODIsNiArMzc4Nyw3IEBACiAJCQkJ
REY4M0UyOTMyNjM5RkQ4MzAwMDgyNUVGIC8qIEltYWdlRnVuY3Rpb25ITFNMLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCURGODNFMzRCMjYzOUZFOTIwMDA4MjVFRiAvKiBJbWFnZUdMLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCURGODNFMzIxMjYzOUZFMTgwMDA4MjVFRiAvKiBJbWFnZUluZGV4LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTMxNTRBODQ3MjY2QzRBRkYwMEJGMzNCNyAvKiBJbWFnZU10
bC5tbSBpbiBTb3VyY2VzICovLAogCQkJCURGODNFMkM2MjYzOUZEODQwMDA4MjVFRiAvKiBJbW11
dGFibGVTdHJpbmdfYXV0b2dlbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlERjgzRTI5OTI2MzlG
RDgzMDAwODI1RUYgLyogSW1tdXRhYmxlU3RyaW5nQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlERjgzRTMxQjI2MzlGRTE3MDAwODI1RUYgLyogSW5kZXhSYW5nZUNhY2hlLmNwcCBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9u
cy9FR0xfQU5HTEVfbWV0YWxfdGV4dHVyZV9jbGllbnRfYnVmZmVyLnR4dCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvRUdMX0FOR0xFX21ldGFsX3RleHR1cmVfY2xpZW50X2J1
ZmZlci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjMzYjQ5M2I5OGE3OGM2YTA2NzM3ZjNlMDZjMzYxYzU4ZmE0
ODZjMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lv
bnMvRUdMX0FOR0xFX21ldGFsX3RleHR1cmVfY2xpZW50X2J1ZmZlci50eHQKQEAgLTAsMCArMSw4
MiBAQAorTmFtZQorCisgICAgQU5HTEVfbWV0YWxfdGV4dHVyZV9jbGllbnRfYnVmZmVyCisKK05h
bWUgU3RyaW5ncworCisgICAgRUdMX0FOR0xFX21ldGFsX3RleHR1cmVfY2xpZW50X2J1ZmZlcgor
CitDb250cmlidXRvcnMKKworICAgIExlIEhvYW5nIFF1eWVuCisKK0NvbnRhY3RzCisKKyAgICBK
YW1pZSBNYWRpbGwsIEdvb2dsZSAoam1hZGlsbCAnYXQnIGdvb2dsZSAnZG90JyBjb20pCisgICAg
TGUgSG9hbmcgUXV5ZW4gKGxlaG9hbmdxICdhdCcgZ21haWwuY29tKQorCitTdGF0dXMKKworICAg
IERyYWZ0CisKK1ZlcnNpb24KKyAgICBWZXJzaW9uIDEsIEp1bCAxOSwgMjAyMAorCitOdW1iZXIK
KworICAgIEVHTCBFeHRlbnNpb24gIz8/CisKK0RlcGVuZGVuY2llcworCisgICAgVGhpcyBleHRl
bnNpb24gaXMgd3JpdHRlbiBhZ2FpbnN0IHRoZSB3b3JkaW5nIG9mIHRoZSBFR0wgMS40CisgICAg
U3BlY2lmaWNhdGlvbi4KKworT3ZlcnZpZXcKKworICAgIFRoaXMgZXh0ZW5zaW9uIGFsbG93cyBj
cmVhdGluZyBFR0wgaW1hZ2VzIGZyb20gZXh0ZXJuYWwgbWV0YWwgdGV4dHVyZSBvYmplY3RzLgor
CitOZXcgVHlwZXMKKworICAgIE5vbmUKKworTmV3IFByb2NlZHVyZXMgYW5kIEZ1bmN0aW9ucwor
CisgICAgTm9uZQorCitOZXcgVG9rZW5zCisKKyAgICBBY2NlcHRlZCBpbiB0aGUgPHRhcmdldD4g
cGFyYW1ldGVyIG9mIGVnbENyZWF0ZUltYWdlS0hSOgorCisgICAgICAgIEVHTF9NRVRBTF9URVhU
VVJFX0FOR0xFICAgICAgICAgICAgICAgMHgzNEE3CisKK0FkZGl0aW9ucyB0byBDaGFwdGVyIDIg
b2YgdGhlIEVHTCAxLjIgU3BlY2lmaWNhdGlvbiAoRUdMIE9wZXJhdGlvbikKKworICAgIEFkZCB0
byBzZWN0aW9uIDIuNS4xICJFR0xJbWFnZSBTcGVjaWZpY2F0aW9uIiAoYXMgZGVmaW5lZCBieSB0
aGUKKyAgICBFR0xfS0hSX2ltYWdlX2Jhc2Ugc3BlY2lmaWNhdGlvbiksIGluIHRoZSBkZXNjcmlw
dGlvbiBvZgorICAgIGVnbENyZWF0ZUltYWdlS0hSOgorCisgICAiVmFsdWVzIGFjY2VwdGVkIGZv
ciA8dGFyZ2V0PiBhcmUgbGlzdGVkIGluIFRhYmxlIGFhYSwgYmVsb3cuCisKKyAgICAgICstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKworICAgICAgfCAgPHRhcmdldD4gICAgICAgICAgICAgICAgICB8ICBOb3RlcyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICArLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsK
KyAgICAgIHwgIEVHTF9NRVRBTF9URVhUVVJFX0FOR0xFICAgfCAgVXNlZCBmb3IgTWV0YWwgdGV4
dHVyZSBvYmplY3RzICAgICAgICAgfAorICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgVGFi
bGUgYWFhLiAgTGVnYWwgdmFsdWVzIGZvciBlZ2xDcmVhdGVJbWFnZUtIUiA8dGFyZ2V0PiBwYXJh
bWV0ZXIKKworICAgIC4uLgorCisgICAgSWYgPHRhcmdldD4gaXMgRUdMX01FVEFMX1RFWFRVUkVf
QU5HTEUsIDxkcHk+IG11c3QgYmUgYSB2YWxpZCBkaXNwbGF5LCA8Y3R4PgorICAgIG11c3QgYmUg
RUdMX05PX0NPTlRFWFQsIDxidWZmZXI+IG11c3QgYmUgYSBwb2ludGVyIHRvIGEgdmFsaWQgTVRM
VGV4dHVyZQorICAgIG9iamVjdCAoY2FzdCBpbnRvIHRoZSB0eXBlIEVHTENsaWVudEJ1ZmZlciks
IGFuZCBhdHRyaWJ1dGVzIGFyZSBpZ25vcmVkLgorICAgIFRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9m
IHRoZSBwYnVmZmVyIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSB3aWR0aCBhbmQgaGVpZ2h0CisgICAg
b2YgPGJ1ZmZlcj4uIgorCisgICAgSWYgdGhlIEVHTF9BTkdMRV9kZXZpY2VfbWV0YWwgZXh0ZW5z
aW9uIGlzIHByZXNlbnQsIHRoZSBwcm92aWRlZCBNZXRhbCB0ZXh0dXJlCisgICAgb2JqZWN0IG11
c3QgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgdGhlIHNhbWUgTWV0YWwgZGV2aWNlIHF1ZXJpZWQgZnJv
bSB0aGUKKyAgICBkaXNwbGF5LiBJZiB0aGVzZSByZXF1aXJlbWVudHMgYXJlIG5vdCBtZXQsIGFu
IEVHTF9CQURfUEFSQU1FVEVSIGVycm9yIGlzCisgICAgZ2VuZXJhdGVkLiIKKworUmV2aXNpb24g
SGlzdG9yeQorCisgICAgVmVyc2lvbiAxLCAyMDIwLzE5LzA3IC0gRmlyc3QgZHJhZnQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvRUdML2VnbGV4dF9hbmdsZS5o
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9FR0wvZWdsZXh0X2FuZ2xlLmgKaW5k
ZXggYzU2MjEzYjcyMGRjNzJkMjk5NTc5MDFjYWQ1OGZiODcyNmNlYWY2Yi4uNDZmZjNhZDk1NDYz
YWIxMDg5MTc2YmM2MDE0ODI4YjdiZTI4ZDAzOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvaW5jbHVkZS9FR0wvZWdsZXh0X2FuZ2xlLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvaW5jbHVkZS9FR0wvZWdsZXh0X2FuZ2xlLmgKQEAgLTIyNiw2ICsyMjYsMTEgQEAg
RUdMQVBJIEVHTGludCBFR0xBUElFTlRSWSBlZ2xQcm9ncmFtQ2FjaGVSZXNpemVBTkdMRShFR0xE
aXNwbGF5IGRweSwgRUdMaW50IGxpbWkKICNkZWZpbmUgRUdMX0JJTkRfVE9fVEVYVFVSRV9UQVJH
RVRfQU5HTEUgMHgzNDhECiAjZW5kaWYgLyogRUdMX0FOR0xFX2lvc3VyZmFjZV9jbGllbnRfYnVm
ZmVyICovCiAKKyNpZm5kZWYgQU5HTEVfbWV0YWxfdGV4dHVyZV9jbGllbnRfYnVmZmVyCisjZGVm
aW5lIEFOR0xFX21ldGFsX3RleHR1cmVfY2xpZW50X2J1ZmZlciAxCisjZGVmaW5lIEVHTF9NRVRB
TF9URVhUVVJFX0FOR0xFIDB4MzRBNworI2VuZGlmIC8qIEFOR0xFX21ldGFsX3RleHR1cmVfY2xp
ZW50X2J1ZmZlciAqLworCiAjaWZuZGVmIEVHTF9BTkdMRV9jcmVhdGVfY29udGV4dF9leHRlbnNp
b25zX2VuYWJsZWQKICNkZWZpbmUgRUdMX0FOR0xFX2NyZWF0ZV9jb250ZXh0X2V4dGVuc2lvbnNf
ZW5hYmxlZCAxCiAjZGVmaW5lIEVHTF9FWFRFTlNJT05TX0VOQUJMRURfQU5HTEUgMHgzNDVGCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3V0aWxpdGllcy5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3V0aWxpdGllcy5jcHAKaW5k
ZXggYjFmNWNkYmRjMDU2YWU0ZjA2Mzk5YWU5NjJlMmIwMGIxN2NhMTYyNy4uMTg2NmZiZDliMTgw
NzlhMzMxYjQ3MjlhZDEyYzg3OTM4ODUzZDFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbW1vbi91dGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21tb24vdXRpbGl0aWVzLmNwcApAQCAtMTIxOSw2ICsxMjE5LDcgQEAgYm9v
bCBJc0V4dGVybmFsSW1hZ2VUYXJnZXQoRUdMZW51bSB0YXJnZXQpCiAgICAgICAgIGNhc2UgRUdM
X05BVElWRV9CVUZGRVJfQU5EUk9JRDoKICAgICAgICAgY2FzZSBFR0xfRDNEMTFfVEVYVFVSRV9B
TkdMRToKICAgICAgICAgY2FzZSBFR0xfTElOVVhfRE1BX0JVRl9FWFQ6CisgICAgICAgIGNhc2Ug
RUdMX01FVEFMX1RFWFRVUkVfQU5HTEU6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
ICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL0NhcHMuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Nh
cHMuY3BwCmluZGV4IDdmMjc2YzQ5NWM3NzkwYWM1NWJmOTIxODljYWE0OTJkNzI3ODdlN2EuLmNj
ZTJmMGNiYWJlZTM1NTk0N2RkODE5YjMwNzhhMjI0ZWIyZDI3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9DYXBzLmNwcAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ2Fwcy5jcHAKQEAgLTE0MTcsNiArMTQxNyw3IEBA
IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBEaXNwbGF5RXh0ZW5zaW9uczo6Z2V0U3RyaW5ncygp
IGNvbnN0CiAgICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xfQU5HTEVfcHJvZ3JhbV9jYWNo
ZV9jb250cm9sIiwgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtQ2FjaGVDb250cm9sLCAgICAg
ICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CiAgICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5n
KCJFR0xfQU5HTEVfcm9idXN0X3Jlc291cmNlX2luaXRpYWxpemF0aW9uIiwgICAgICAgICAgICBy
b2J1c3RSZXNvdXJjZUluaXRpYWxpemF0aW9uLCAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CiAg
ICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xfQU5HTEVfaW9zdXJmYWNlX2NsaWVudF9idWZm
ZXIiLCAgICAgICAgICAgICAgICAgICBpb3N1cmZhY2VDbGllbnRCdWZmZXIsICAgICAgICAgICAg
ICAmZXh0ZW5zaW9uU3RyaW5ncyk7CisgICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xfQU5H
TEVfbWV0YWxfdGV4dHVyZV9jbGllbnRfYnVmZmVyIiwgICAgICAgICAgICAgICBtdGxUZXh0dXJl
Q2xpZW50QnVmZmVyLCAgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CiAgICAgSW5zZXJ0
RXh0ZW5zaW9uU3RyaW5nKCJFR0xfQU5HTEVfY3JlYXRlX2NvbnRleHRfZXh0ZW5zaW9uc19lbmFi
bGVkIiwgICAgICAgICBjcmVhdGVDb250ZXh0RXh0ZW5zaW9uc0VuYWJsZWQsICAgICAmZXh0ZW5z
aW9uU3RyaW5ncyk7CiAgICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xfQU5EUk9JRF9wcmVz
ZW50YXRpb25fdGltZSIsICAgICAgICAgICAgICAgICAgICAgICBwcmVzZW50YXRpb25UaW1lLCAg
ICAgICAgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CiAgICAgSW5zZXJ0RXh0ZW5zaW9u
U3RyaW5nKCJFR0xfQU5EUk9JRF9ibG9iX2NhY2hlIiwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBibG9iQ2FjaGUsICAgICAgICAgICAgICAgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5n
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ2Fw
cy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NhcHMuaAppbmRleCBm
ZTRjNGM2OGQ1ZTE0MTkyNzE4OWNlMTU2ZTE3NGI3Nzg2MzRhZjBhLi4wOGEwYjNjYTQ0NzE3NWFh
ZmE2NGY0OWQ3NzE0ZWUxOGNhMzIxZmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvQ2Fwcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9DYXBzLmgKQEAgLTEwNzYsNiArMTA3Niw5IEBAIHN0cnVjdCBEaXNwbGF5RXh0
ZW5zaW9ucwogICAgIC8vIEVHTF9BTkdMRV9pb3N1cmZhY2VfY2xpZW50X2J1ZmZlcgogICAgIGJv
b2wgaW9zdXJmYWNlQ2xpZW50QnVmZmVyID0gZmFsc2U7CiAKKyAgICAvLyBFR0xfQU5HTEVfbWV0
YWxfdGV4dHVyZV9jbGllbnRfYnVmZmVyCisgICAgYm9vbCBtdGxUZXh0dXJlQ2xpZW50QnVmZmVy
ID0gZmFsc2U7CisKICAgICAvLyBFR0xfQU5HTEVfY3JlYXRlX2NvbnRleHRfZXh0ZW5zaW9uc19l
bmFibGVkCiAgICAgYm9vbCBjcmVhdGVDb250ZXh0RXh0ZW5zaW9uc0VuYWJsZWQgPSBmYWxzZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL21ldGFsL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL21ldGFsL0JVSUxELmduCmluZGV4IDBkNTBkODFjZGZlNjhlNDdlOTNiNTMwZTU1
MWI3ZGZlOTQ2MjFlZWYuLmRmNWQ2YWI2NzJiYjJmNzE3NDJmYzRlNDdkNWYxNzJmOTUwZmEyOWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9tZXRhbC9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvbWV0YWwvQlVJTEQuZ24KQEAgLTIzLDYgKzIzLDggQEAgX21ldGFsX2JhY2tl
bmRfc291cmNlcyA9IFsKICAgIkZyYW1lQnVmZmVyTXRsLm1tIiwKICAgIklPU3VyZmFjZVN1cmZh
Y2VNdGwuaCIsCiAgICJJT1N1cmZhY2VTdXJmYWNlTXRsLm1tIiwKKyAgIkltYWdlTXRsLmgiLAor
ICAiSW1hZ2VNdGwubW0iLAogICAiUHJvZ3JhbU10bC5oIiwKICAgIlByb2dyYW1NdGwubW0iLAog
ICAiUXVlcnlNdGwuaCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvRGlzcGxheU10bC5oIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0Rpc3BsYXlNdGwuaAppbmRleCAwNzgz
MzgxYzJmNWJkOGM1MTdmZWM1N2VlY2Y1OTg2MmYzMzBkYWI1Li5lMTI4MjdhMDBhZTc0Y2UzZjRh
MDg0YWE1NWQ4Mjg4YTY3ZTY0ZjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvRGlzcGxheU10bC5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9EaXNwbGF5TXRsLmgK
QEAgLTg2LDYgKzg2LDEwIEBAIGNsYXNzIERpc3BsYXlNdGwgOiBwdWJsaWMgRGlzcGxheUltcGwK
IAogICAgIFNoYXJlR3JvdXBJbXBsICpjcmVhdGVTaGFyZUdyb3VwKCkgb3ZlcnJpZGU7CiAKKyAg
ICBFeHRlcm5hbEltYWdlU2libGluZ0ltcGwgKmNyZWF0ZUV4dGVybmFsSW1hZ2VTaWJsaW5nKGNv
bnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZm
ZXIgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOwog
ICAgIGdsOjpWZXJzaW9uIGdldE1heFN1cHBvcnRlZEVTVmVyc2lvbigpIGNvbnN0IG92ZXJyaWRl
OwogICAgIGdsOjpWZXJzaW9uIGdldE1heENvbmZvcm1hbnRFU1ZlcnNpb24oKSBjb25zdCBvdmVy
cmlkZTsKIApAQCAtMTAwLDYgKzEwNCwxMSBAQCBjbGFzcyBEaXNwbGF5TXRsIDogcHVibGljIERp
c3BsYXlJbXBsCiAKICAgICBib29sIGlzVmFsaWROYXRpdmVXaW5kb3coRUdMTmF0aXZlV2luZG93
VHlwZSB3aW5kb3cpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgZWdsOjpFcnJvciB2YWxpZGF0ZUlt
YWdlQ2xpZW50QnVmZmVyKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIGNsaWVudEJ1ZmZl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpB
dHRyaWJ1dGVNYXAgJmF0dHJpYnMpIGNvbnN0IG92ZXJyaWRlOworCiAgICAgZWdsOjpDb25maWdT
ZXQgZ2VuZXJhdGVDb25maWdzKCkgb3ZlcnJpZGU7CiAKICAgICBzdGQ6OnN0cmluZyBnZXRSZW5k
ZXJlckRlc2NyaXB0aW9uKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvRGlzcGxheU10bC5tbSBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9EaXNwbGF5TXRsLm1t
CmluZGV4IDMwNTJhZmM2MDEzMGY5NDVlNTc0ZWE0MTYyMjM1NDYzMzQwM2Q2ZDYuLjQ4YjcwMjhm
MzYxZjc0NTZkZWI1MTM4MTViZDhhY2I0NWFkMWRhNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9EaXNwbGF5TXRsLm1tCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9E
aXNwbGF5TXRsLm1tCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZ2xzbGFuZ193cmFwcGVyX3V0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
bWV0YWwvQ29udGV4dE10bC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0lP
U3VyZmFjZVN1cmZhY2VNdGwuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9tZXRhbC9J
bWFnZU10bC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1N1cmZhY2VNdGwu
aCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9tZXRhbC9TeW5jTXRsLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2NvbW1vbi5oIgpAQCAtMzQ3LDggKzM0OCw3
IEBAIEltYWdlSW1wbCAqRGlzcGxheU10bDo6Y3JlYXRlSW1hZ2UoY29uc3QgZWdsOjpJbWFnZVN0
YXRlICZzdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMZW51bSB0
YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0
cmlidXRlTWFwICZhdHRyaWJzKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gbmV3IEltYWdlTXRsKHN0YXRlLCBjb250ZXh0KTsKIH0KIAog
cng6OkNvbnRleHRJbXBsICpEaXNwbGF5TXRsOjpjcmVhdGVDb250ZXh0KGNvbnN0IGdsOjpTdGF0
ZSAmc3RhdGUsCkBAIC0zNjgsNiArMzY4LDIyIEBAIFN0cmVhbVByb2R1Y2VySW1wbCAqRGlzcGxh
eU10bDo6Y3JlYXRlU3RyZWFtUHJvZHVjZXJEM0RUZXh0dXJlKAogICAgIHJldHVybiBudWxscHRy
OwogfQogCitFeHRlcm5hbEltYWdlU2libGluZ0ltcGwgKkRpc3BsYXlNdGw6OmNyZWF0ZUV4dGVy
bmFsSW1hZ2VTaWJsaW5nKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xl
bnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIGJ1ZmZlciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCit7CisgICAgc3dpdGNoICh0YXJnZXQpCisg
ICAgeworICAgICAgICBjYXNlIEVHTF9NRVRBTF9URVhUVVJFX0FOR0xFOgorICAgICAgICAgICAg
cmV0dXJuIG5ldyBUZXh0dXJlSW1hZ2VTaWJsaW5nTXRsKGJ1ZmZlcik7CisKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICB9Cit9CisKIGdsOjpWZXJzaW9uIERpc3BsYXlNdGw6OmdldE1heFN1cHBvcnRl
ZEVTVmVyc2lvbigpIGNvbnN0CiB7CiAgICAgLy8gTk9URShocWxlKTogU3VwcG9ydHMgR0xFUyAz
LjAgb24gaU9TIEdQVSBGYW1pbHkgNCsgZm9yIG5vdy4KQEAgLTQxOCw2ICs0MzQsNyBAQCB2b2lk
IERpc3BsYXlNdGw6OmdlbmVyYXRlRXh0ZW5zaW9ucyhlZ2w6OkRpc3BsYXlFeHRlbnNpb25zICpv
dXRFeHRlbnNpb25zKSBjb25zdAogICAgIG91dEV4dGVuc2lvbnMtPnN1cmZhY2VsZXNzQ29udGV4
dCAgICAgICAgICAgPSB0cnVlOwogICAgIG91dEV4dGVuc2lvbnMtPmRpc3BsYXlUZXh0dXJlU2hh
cmVHcm91cCAgICAgPSB0cnVlOwogICAgIG91dEV4dGVuc2lvbnMtPmRpc3BsYXlTZW1hcGhvcmVT
aGFyZUdyb3VwICAgPSB0cnVlOworICAgIG91dEV4dGVuc2lvbnMtPm10bFRleHR1cmVDbGllbnRC
dWZmZXIgICAgICAgPSB0cnVlOwogCiAgICAgaWYgKG1GZWF0dXJlcy5oYXNFdmVudHMuZW5hYmxl
ZCkKICAgICB7CkBAIC00MzEsNiArNDQ4LDEwIEBAIHZvaWQgRGlzcGxheU10bDo6Z2VuZXJhdGVF
eHRlbnNpb25zKGVnbDo6RGlzcGxheUV4dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMpIGNvbnN0CiAg
ICAgLy8gdGhpcyBleHRlbnNpb24gKGFuZ2xlYnVnLmNvbS80OTI5KQogICAgIG91dEV4dGVuc2lv
bnMtPnJvYnVzdFJlc291cmNlSW5pdGlhbGl6YXRpb24gPSB0cnVlOwogICAgIG91dEV4dGVuc2lv
bnMtPnBvd2VyUHJlZmVyZW5jZSA9IHRydWU7CisKKyAgICAvLyBFR0xfS0hSX2ltYWdlCisgICAg
b3V0RXh0ZW5zaW9ucy0+aW1hZ2UgICAgID0gdHJ1ZTsKKyAgICBvdXRFeHRlbnNpb25zLT5pbWFn
ZUJhc2UgPSB0cnVlOwogfQogCiB2b2lkIERpc3BsYXlNdGw6OmdlbmVyYXRlQ2FwcyhlZ2w6OkNh
cHMgKm91dENhcHMpIGNvbnN0IHt9CkBAIC01NTksNiArNTgwLDI2IEBAIHN0ZDo6c3RyaW5nIERp
c3BsYXlNdGw6OmdldFJlbmRlcmVyRGVzY3JpcHRpb24oKSBjb25zdAogICAgIH0KIH0KIAorZWds
OjpFcnJvciBEaXNwbGF5TXRsOjp2YWxpZGF0ZUltYWdlQ2xpZW50QnVmZmVyKGNvbnN0IGdsOjpD
b250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEVHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBjbGllbnRCdWZmZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRy
aWJ1dGVNYXAgJmF0dHJpYnMpIGNvbnN0Cit7CisgICAgc3dpdGNoICh0YXJnZXQpCisgICAgewor
ICAgICAgICBjYXNlIEVHTF9NRVRBTF9URVhUVVJFX0FOR0xFOgorICAgICAgICAgICAgaWYgKCFU
ZXh0dXJlSW1hZ2VTaWJsaW5nTXRsOjpWYWxpZGF0ZUNsaWVudEJ1ZmZlcih0aGlzLCBjbGllbnRC
dWZmZXIpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBlZ2w6OkVnbEJh
ZEF0dHJpYnV0ZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJu
IGVnbDo6RWdsQmFkQXR0cmlidXRlKCk7CisgICAgfQorICAgIHJldHVybiBlZ2w6Ok5vRXJyb3Io
KTsKK30KKwogZ2w6OkNhcHMgRGlzcGxheU10bDo6Z2V0TmF0aXZlQ2FwcygpIGNvbnN0CiB7CiAg
ICAgZW5zdXJlQ2Fwc0luaXRpYWxpemVkKCk7CkBAIC03ODksNyArODMwLDcgQEAgdm9pZCBEaXNw
bGF5TXRsOjppbml0aWFsaXplRXh0ZW5zaW9ucygpIGNvbnN0CiAgICAgLy8gRW5hYmxlIEVYVF9i
bGVuZF9taW5tYXgKICAgICBtTmF0aXZlRXh0ZW5zaW9ucy5ibGVuZE1pbk1heCA9IHRydWU7CiAK
LSAgICBtTmF0aXZlRXh0ZW5zaW9ucy5lZ2xJbWFnZU9FUyAgICAgICAgID0gZmFsc2U7CisgICAg
bU5hdGl2ZUV4dGVuc2lvbnMuZWdsSW1hZ2VPRVMgICAgICAgICA9IHRydWU7CiAgICAgbU5hdGl2
ZUV4dGVuc2lvbnMuZWdsSW1hZ2VFeHRlcm5hbE9FUyA9IGZhbHNlOwogICAgIC8vIE5PVEUoaHFs
ZSk6IFN1cHBvcnQgR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbF9lc3NsMy4KICAgICBtTmF0aXZl
RXh0ZW5zaW9ucy5lZ2xJbWFnZUV4dGVybmFsRXNzbDNPRVMgPSBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9JbWFn
ZU10bC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21l
dGFsL0ltYWdlTXRsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQxM2U4ZTkwMTY3ZWQwNzFmZDQwMzNmZTcwM2Y4
ODRjNjYwMGMyNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9JbWFnZU10bC5oCkBAIC0wLDAgKzEsODAgQEAKKy8v
CisvLyBDb3B5cmlnaHQgMjAyMSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKy8vCisvLyBJbWFnZU10bC5oOgorLy8gICAgRGVmaW5lcyB0aGUgY2xhc3MgaW50ZXJmYWNl
IGZvciBJbWFnZU10bCwgaW1wbGVtZW50aW5nIEltYWdlSW1wbC4KKy8vCisKKyNpZm5kZWYgTElC
QU5HTEVfUkVOREVSRVJfTUVUQUxfSU1BR0VNVExfSAorI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJF
Ul9NRVRBTF9JTUFHRU1UTF9ICisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9JbWFnZUlt
cGwuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfcmVzb3VyY2VzLmgi
CisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBEaXNwbGF5TXRsOworCitjbGFzcyBUZXh0dXJl
SW1hZ2VTaWJsaW5nTXRsIDogcHVibGljIEV4dGVybmFsSW1hZ2VTaWJsaW5nSW1wbAoreworICBw
dWJsaWM6CisgICAgVGV4dHVyZUltYWdlU2libGluZ010bChFR0xDbGllbnRCdWZmZXIgYnVmZmVy
KTsKKyAgICB+VGV4dHVyZUltYWdlU2libGluZ010bCgpIG92ZXJyaWRlOworCisgICAgc3RhdGlj
IGJvb2wgVmFsaWRhdGVDbGllbnRCdWZmZXIoY29uc3QgRGlzcGxheU10bCAqZGlzcGxheSwgRUdM
Q2xpZW50QnVmZmVyIGJ1ZmZlcik7CisKKyAgICBlZ2w6OkVycm9yIGluaXRpYWxpemUoY29uc3Qg
ZWdsOjpEaXNwbGF5ICpkaXNwbGF5KSBvdmVycmlkZTsKKyAgICB2b2lkIG9uRGVzdHJveShjb25z
dCBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpIG92ZXJyaWRlOworCisgICAgLy8gRXh0ZXJuYWxJbWFn
ZVNpYmxpbmdJbXBsIGludGVyZmFjZQorICAgIGdsOjpGb3JtYXQgZ2V0Rm9ybWF0KCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgYm9vbCBpc1JlbmRlcmFibGUoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRl
eHQpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNUZXh0dXJhYmxlKGNvbnN0IGdsOjpDb250
ZXh0ICpjb250ZXh0KSBjb25zdCBvdmVycmlkZTsKKyAgICBnbDo6RXh0ZW50cyBnZXRTaXplKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgc2l6ZV90IGdldFNhbXBsZXMoKSBjb25zdCBvdmVycmlkZTsK
KworICAgIGNvbnN0IG10bDo6VGV4dHVyZVJlZiAmZ2V0VGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1OYXRpdmVUZXh0dXJlOyB9CisgICAgY29uc3QgbXRsOjpGb3JtYXQgJmdldEZvcm1hdE10bCgp
IGNvbnN0IHsgcmV0dXJuIG1Gb3JtYXQ7IH0KKworICBwcml2YXRlOgorICAgIGFuZ2xlOjpSZXN1
bHQgaW5pdEltcGwoRGlzcGxheU10bCAqZGlzcGxheSk7CisKKyAgICBFR0xDbGllbnRCdWZmZXIg
bUJ1ZmZlcjsKKyAgICBnbDo6Rm9ybWF0IG1HTEZvcm1hdDsKKyAgICBtdGw6OkZvcm1hdCBtRm9y
bWF0OworCisgICAgYm9vbCBtUmVuZGVyYWJsZSAgPSBmYWxzZTsKKyAgICBib29sIG1UZXh0dXJl
YWJsZSA9IGZhbHNlOworCisgICAgbXRsOjpUZXh0dXJlUmVmIG1OYXRpdmVUZXh0dXJlOworfTsK
KworY2xhc3MgSW1hZ2VNdGwgOiBwdWJsaWMgSW1hZ2VJbXBsCit7CisgIHB1YmxpYzoKKyAgICBJ
bWFnZU10bChjb25zdCBlZ2w6OkltYWdlU3RhdGUgJnN0YXRlLCBjb25zdCBnbDo6Q29udGV4dCAq
Y29udGV4dCk7CisgICAgfkltYWdlTXRsKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBvbkRlc3Ryb3ko
Y29uc3QgZWdsOjpEaXNwbGF5ICpkaXNwbGF5KSBvdmVycmlkZTsKKworICAgIGVnbDo6RXJyb3Ig
aW5pdGlhbGl6ZShjb25zdCBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpIG92ZXJyaWRlOworCisgICAg
YW5nbGU6OlJlc3VsdCBvcnBoYW4oY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsIGVnbDo6SW1h
Z2VTaWJsaW5nICpzaWJsaW5nKSBvdmVycmlkZTsKKworICAgIGNvbnN0IG10bDo6VGV4dHVyZVJl
ZiAmZ2V0VGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1OYXRpdmVUZXh0dXJlOyB9CisgICAgZ2w6
OlRleHR1cmVUeXBlIGdldEltYWdlVGV4dHVyZVR5cGUoKSBjb25zdCB7IHJldHVybiBtSW1hZ2VU
ZXh0dXJlVHlwZTsgfQorICAgIHVpbnQzMl90IGdldEltYWdlTGV2ZWwoKSBjb25zdCB7IHJldHVy
biBtSW1hZ2VMZXZlbDsgfQorICAgIHVpbnQzMl90IGdldEltYWdlTGF5ZXIoKSBjb25zdCB7IHJl
dHVybiBtSW1hZ2VMYXllcjsgfQorCisgIHByaXZhdGU6CisgICAgZ2w6OlRleHR1cmVUeXBlIG1J
bWFnZVRleHR1cmVUeXBlOworICAgIHVpbnQzMl90IG1JbWFnZUxldmVsID0gMDsKKyAgICB1aW50
MzJfdCBtSW1hZ2VMYXllciA9IDA7CisKKyAgICBtdGw6OlRleHR1cmVSZWYgbU5hdGl2ZVRleHR1
cmU7Cit9OworfSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAvKiBMSUJBTkdMRV9SRU5ERVJF
Ul9NRVRBTF9JTUFHRU1UTF9IICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvSW1hZ2VNdGwubW0gYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvSW1hZ2VNdGwubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTljNzI5ZDhmMDQ5NWI3YWZkMzEwZWIwODMxYjQ2Y2YzZGNlY2U4MAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9t
ZXRhbC9JbWFnZU10bC5tbQpAQCAtMCwwICsxLDE2OCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDIx
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIEltYWdlTXRs
LmNwcDoKKy8vICAgIEltcGxlbWVudHMgdGhlIGNsYXNzIG1ldGhvZHMgZm9yIEltYWdlTXRsLgor
Ly8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0ltYWdlTXRsLmgiCisKKyNp
bmNsdWRlICJjb21tb24vZGVidWcuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9Db250ZXh0LmgiCisj
aW5jbHVkZSAibGliQU5HTEUvRGlzcGxheS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L21ldGFsL0NvbnRleHRNdGwuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9tZXRhbC9E
aXNwbGF5TXRsLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvUmVuZGVyQnVm
ZmVyTXRsLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvVGV4dHVyZU10bC5o
IgorCituYW1lc3BhY2UgcngKK3sKKworLy8gVGV4dHVyZUltYWdlU2libGluZ010bCBpbXBsZW1l
bnRhdGlvbgorVGV4dHVyZUltYWdlU2libGluZ010bDo6VGV4dHVyZUltYWdlU2libGluZ010bChF
R0xDbGllbnRCdWZmZXIgYnVmZmVyKQorICAgIDogbUJ1ZmZlcihidWZmZXIpLCBtR0xGb3JtYXQo
R0xfTk9ORSkKK3t9CisKK1RleHR1cmVJbWFnZVNpYmxpbmdNdGw6On5UZXh0dXJlSW1hZ2VTaWJs
aW5nTXRsKCkge30KKworLy8gU3RhdGljCitib29sIFRleHR1cmVJbWFnZVNpYmxpbmdNdGw6OlZh
bGlkYXRlQ2xpZW50QnVmZmVyKGNvbnN0IERpc3BsYXlNdGwgKmRpc3BsYXksIEVHTENsaWVudEJ1
ZmZlciBidWZmZXIpCit7CisgICAgaWQ8TVRMVGV4dHVyZT4gdGV4dHVyZSA9IChfX2JyaWRnZSBp
ZDxNVExUZXh0dXJlPikoYnVmZmVyKTsKKyAgICBpZiAoIXRleHR1cmUgfHwgdGV4dHVyZS5kZXZp
Y2UgIT0gZGlzcGxheS0+Z2V0TWV0YWxEZXZpY2UoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICBpZiAodGV4dHVyZS50ZXh0dXJlVHlwZSAhPSBNVExUZXh0dXJl
VHlwZTJEICYmIHRleHR1cmUudGV4dHVyZVR5cGUgIT0gTVRMVGV4dHVyZVR5cGVDdWJlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGFuZ2xlOjpGb3JtYXRJRCBh
bmdsZUZvcm1hdElkID0gbXRsOjpGb3JtYXQ6Ok1ldGFsVG9BbmdsZUZvcm1hdElEKHRleHR1cmUu
cGl4ZWxGb3JtYXQpOworICAgIGNvbnN0IG10bDo6Rm9ybWF0ICZmb3JtYXQgICAgID0gZGlzcGxh
eS0+Z2V0UGl4ZWxGb3JtYXQoYW5nbGVGb3JtYXRJZCk7CisgICAgaWYgKCFmb3JtYXQudmFsaWQo
KSkKKyAgICB7CisgICAgICAgIEVSUigpIDw8ICJVbnJlY29nbml6ZWQgZm9ybWF0IjsKKyAgICAg
ICAgLy8gTm90IHN1cHBvcnRlZAorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2VnbDo6RXJyb3IgVGV4dHVyZUltYWdlU2libGluZ010bDo6aW5p
dGlhbGl6ZShjb25zdCBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpCit7CisgICAgRGlzcGxheU10bCAq
ZGlzcGxheU10bCA9IG10bDo6R2V0SW1wbChkaXNwbGF5KTsKKyAgICBpZiAoaW5pdEltcGwoZGlz
cGxheU10bCkgIT0gYW5nbGU6OlJlc3VsdDo6Q29udGludWUpCisgICAgeworICAgICAgICByZXR1
cm4gZWdsOjpFZ2xCYWRQYXJhbWV0ZXIoKTsKKyAgICB9CisKKyAgICByZXR1cm4gZWdsOjpOb0Vy
cm9yKCk7Cit9CisKK2FuZ2xlOjpSZXN1bHQgVGV4dHVyZUltYWdlU2libGluZ010bDo6aW5pdElt
cGwoRGlzcGxheU10bCAqZGlzcGxheU10bCkKK3sKKyAgICBtTmF0aXZlVGV4dHVyZSA9IG10bDo6
VGV4dHVyZTo6TWFrZUZyb21NZXRhbCgoX19icmlkZ2UgaWQ8TVRMVGV4dHVyZT4pKG1CdWZmZXIp
KTsKKworICAgIGFuZ2xlOjpGb3JtYXRJRCBhbmdsZUZvcm1hdElkID0KKyAgICAgICAgbXRsOjpG
b3JtYXQ6Ok1ldGFsVG9BbmdsZUZvcm1hdElEKG1OYXRpdmVUZXh0dXJlLT5waXhlbEZvcm1hdCgp
KTsKKyAgICBtRm9ybWF0ID0gZGlzcGxheU10bC0+Z2V0UGl4ZWxGb3JtYXQoYW5nbGVGb3JtYXRJ
ZCk7CisKKyAgICBtR0xGb3JtYXQgPSBnbDo6Rm9ybWF0KG1Gb3JtYXQuaW50ZW5kZWRBbmdsZUZv
cm1hdCgpLmdsSW50ZXJuYWxGb3JtYXQpOworCisgICAgbVJlbmRlcmFibGUgPSBtRm9ybWF0Lmdl
dENhcHMoKS5kZXB0aFJlbmRlcmFibGUgfHwgbUZvcm1hdC5nZXRDYXBzKCkuY29sb3JSZW5kZXJh
YmxlOworCisgICAgbVRleHR1cmVhYmxlID0gbUZvcm1hdC5nZXRDYXBzKCkuZmlsdGVyYWJsZSB8
fCBtRm9ybWF0Lmhhc0RlcHRoT3JTdGVuY2lsQml0cygpOworCisgICAgcmV0dXJuIGFuZ2xlOjpS
ZXN1bHQ6OkNvbnRpbnVlOworfQorCit2b2lkIFRleHR1cmVJbWFnZVNpYmxpbmdNdGw6Om9uRGVz
dHJveShjb25zdCBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpCit7CisgICAgbU5hdGl2ZVRleHR1cmUg
PSBudWxscHRyOworfQorCitnbDo6Rm9ybWF0IFRleHR1cmVJbWFnZVNpYmxpbmdNdGw6OmdldEZv
cm1hdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1HTEZvcm1hdDsKK30KKworYm9vbCBUZXh0dXJl
SW1hZ2VTaWJsaW5nTXRsOjppc1JlbmRlcmFibGUoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1SZW5kZXJhYmxlOworfQorCitib29sIFRleHR1cmVJbWFn
ZVNpYmxpbmdNdGw6OmlzVGV4dHVyYWJsZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbVRleHR1cmVhYmxlOworfQorCitnbDo6RXh0ZW50cyBUZXh0dXJl
SW1hZ2VTaWJsaW5nTXRsOjpnZXRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbU5hdGl2ZVRl
eHR1cmUgPyBtTmF0aXZlVGV4dHVyZS0+c2l6ZUF0MCgpIDogZ2w6OkV4dGVudHMoMCwgMCwgMCk7
Cit9CisKK3NpemVfdCBUZXh0dXJlSW1hZ2VTaWJsaW5nTXRsOjpnZXRTYW1wbGVzKCkgY29uc3QK
K3sKKyAgICB1aW50MzJfdCBzYW1wbGVzID0gbU5hdGl2ZVRleHR1cmUgPyBtTmF0aXZlVGV4dHVy
ZS0+c2FtcGxlcygpIDogMDsKKyAgICByZXR1cm4gc2FtcGxlcyA+IDEgPyBzYW1wbGVzIDogMDsK
K30KKworLy8gSW1hZ2VNdGwgaW1wbGVtZW50YXRpb24KK0ltYWdlTXRsOjpJbWFnZU10bChjb25z
dCBlZ2w6OkltYWdlU3RhdGUgJnN0YXRlLCBjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkgOiBJ
bWFnZUltcGwoc3RhdGUpIHt9CisKK0ltYWdlTXRsOjp+SW1hZ2VNdGwoKSB7fQorCit2b2lkIElt
YWdlTXRsOjpvbkRlc3Ryb3koY29uc3QgZWdsOjpEaXNwbGF5ICpkaXNwbGF5KQoreworICAgIG1O
YXRpdmVUZXh0dXJlID0gbnVsbHB0cjsKK30KKworZWdsOjpFcnJvciBJbWFnZU10bDo6aW5pdGlh
bGl6ZShjb25zdCBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpCit7CisgICAgaWYgKG1TdGF0ZS50YXJn
ZXQgPT0gRUdMX01FVEFMX1RFWFRVUkVfQU5HTEUpCisgICAgeworICAgICAgICBjb25zdCBUZXh0
dXJlSW1hZ2VTaWJsaW5nTXRsICpleHRlcm5hbEltYWdlU2libGluZyA9CisgICAgICAgICAgICBH
ZXRJbXBsQXM8VGV4dHVyZUltYWdlU2libGluZ010bD4oR2V0QXM8ZWdsOjpFeHRlcm5hbEltYWdl
U2libGluZz4obVN0YXRlLnNvdXJjZSkpOworCisgICAgICAgIG1OYXRpdmVUZXh0dXJlID0gZXh0
ZXJuYWxJbWFnZVNpYmxpbmctPmdldFRleHR1cmUoKTsKKworICAgICAgICBzd2l0Y2ggKG1OYXRp
dmVUZXh0dXJlLT50ZXh0dXJlVHlwZSgpKQorICAgICAgICB7CisgICAgICAgICAgICBjYXNlIE1U
TFRleHR1cmVUeXBlMkQ6CisgICAgICAgICAgICAgICAgbUltYWdlVGV4dHVyZVR5cGUgPSBnbDo6
VGV4dHVyZVR5cGU6Ol8yRDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgTVRMVGV4dHVyZVR5cGVDdWJlOgorICAgICAgICAgICAgICAgIG1JbWFnZVRleHR1cmVUeXBl
ID0gZ2w6OlRleHR1cmVUeXBlOjpDdWJlTWFwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAg
ICB9CisKKyAgICAgICAgbUltYWdlTGV2ZWwgPSAwOworICAgICAgICBtSW1hZ2VMYXllciA9IDA7
CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAg
IHJldHVybiBlZ2w6OkVnbEJhZEFjY2VzcygpOworICAgIH0KKworICAgIHJldHVybiBlZ2w6Ok5v
RXJyb3IoKTsKK30KKworYW5nbGU6OlJlc3VsdCBJbWFnZU10bDo6b3JwaGFuKGNvbnN0IGdsOjpD
b250ZXh0ICpjb250ZXh0LCBlZ2w6OkltYWdlU2libGluZyAqc2libGluZykKK3sKKyAgICBpZiAo
c2libGluZyA9PSBtU3RhdGUuc291cmNlKQorICAgIHsKKyAgICAgICAgbU5hdGl2ZVRleHR1cmUg
PSBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsK
K30KKworfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvUmVuZGVyQnVmZmVyTXRsLm1tIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1JlbmRlckJ1
ZmZlck10bC5tbQppbmRleCBiZTkyYTFiYzZhNTNiNDAzNDc5Yzk0YjY2MGE1YjdkNjNhNjgxMTdk
Li5hZDU0MzIzNDc2MzNlYTM2YjE5NDgzZDFlMGJlMDMxY2ZhYTA0ZDBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvUmVuZGVy
QnVmZmVyTXRsLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9tZXRhbC9SZW5kZXJCdWZmZXJNdGwubW0KQEAgLTEwLDYgKzEwLDcgQEAKICNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9tZXRhbC9SZW5kZXJCdWZmZXJNdGwuaCIKIAogI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0NvbnRleHRNdGwuaCIKKyNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9tZXRhbC9JbWFnZU10bC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL21ldGFsL210bF9mb3JtYXRfdXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9tZXRhbC9tdGxfdXRpbHMuaCIKIApAQCAtMTc1LDkgKzE3NiwyMCBAQCBhbmdsZTo6UmVzdWx0
IFJlbmRlcmJ1ZmZlck10bDo6c2V0U3RvcmFnZU11bHRpc2FtcGxlKGNvbnN0IGdsOjpDb250ZXh0
ICpjb250ZXh0LAogYW5nbGU6OlJlc3VsdCBSZW5kZXJidWZmZXJNdGw6OnNldFN0b3JhZ2VFR0xJ
bWFnZVRhcmdldChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpJbWFnZSAqaW1hZ2Up
CiB7Ci0gICAgLy8gTk9URShocWxlKTogU3VwcG9ydCBFR0xpbWFnZQotICAgIFVOSU1QTEVNRU5U
RUQoKTsKLSAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6U3RvcDsKKyAgICByZWxlYXNlVGV4dHVy
ZSgpOworCisgICAgQ29udGV4dE10bCAqY29udGV4dE10bCA9IG10bDo6R2V0SW1wbChjb250ZXh0
KTsKKworICAgIEltYWdlTXRsICppbWFnZU10bCA9IG10bDo6R2V0SW1wbChpbWFnZSk7CisgICAg
bVRleHR1cmUgICAgICAgICAgID0gaW1hZ2VNdGwtPmdldFRleHR1cmUoKTsKKworICAgIGNvbnN0
IGFuZ2xlOjpGb3JtYXRJRCBhbmdsZUZvcm1hdElkID0KKyAgICAgICAgYW5nbGU6OkZvcm1hdDo6
SW50ZXJuYWxGb3JtYXRUb0lEKGltYWdlLT5nZXRGb3JtYXQoKS5pbmZvLT5zaXplZEludGVybmFs
Rm9ybWF0KTsKKyAgICBtRm9ybWF0ID0gY29udGV4dE10bC0+Z2V0UGl4ZWxGb3JtYXQoYW5nbGVG
b3JtYXRJZCk7CisKKyAgICBtUmVuZGVyVGFyZ2V0LnNldChtVGV4dHVyZSwgbXRsOjprWmVyb05h
dGl2ZU1pcExldmVsLCAwLCBtRm9ybWF0KTsKKworICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpD
b250aW51ZTsKIH0KIAogYW5nbGU6OlJlc3VsdCBSZW5kZXJidWZmZXJNdGw6OmdldEF0dGFjaG1l
bnRSZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvVGV4dHVy
ZU10bC5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9t
ZXRhbC9UZXh0dXJlTXRsLm1tCmluZGV4IDQ5MmEyODc3NzY5MGVmMTZjMGZiOWI0NTE0NDc2NjFk
ZjA4YzRjNDMuLjY3NzlmYTNmMDQ5NWIyYTU4MmJmNmU5NzRmNzU5MzMwNjgwZTE1MWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRh
bC9UZXh0dXJlTXRsLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9tZXRhbC9UZXh0dXJlTXRsLm1tCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvQ29udGV4dE10bC5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL21ldGFsL0Rpc3BsYXlNdGwuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9tZXRhbC9GcmFtZUJ1ZmZlck10bC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L21ldGFsL0ltYWdlTXRsLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvU2Ft
cGxlck10bC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1N1cmZhY2VNdGwu
aCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfY29tbW9uLmgiCkBAIC0x
MjM0LDkgKzEyMzUsMzIgQEAgYW5nbGU6OlJlc3VsdCBUZXh0dXJlTXRsOjpzZXRFR0xJbWFnZVRh
cmdldChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2w6OlRleHR1cmVUeXBlIHR5cGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6SW1hZ2UgKmltYWdlKQogewotICAg
IFVOSU1QTEVNRU5URUQoKTsKKyAgICByZWxlYXNlVGV4dHVyZSh0cnVlKTsKIAotICAgIHJldHVy
biBhbmdsZTo6UmVzdWx0OjpTdG9wOworICAgIENvbnRleHRNdGwgKmNvbnRleHRNdGwgPSBtdGw6
OkdldEltcGwoY29udGV4dCk7CisKKyAgICBJbWFnZU10bCAqaW1hZ2VNdGwgPSBtdGw6OkdldElt
cGwoaW1hZ2UpOworICAgIGlmICh0eXBlICE9IGltYWdlTXRsLT5nZXRJbWFnZVRleHR1cmVUeXBl
KCkpCisgICAgeworICAgICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6U3RvcDsKKyAgICB9CisK
KyAgICBtTmF0aXZlVGV4dHVyZSA9IGltYWdlTXRsLT5nZXRUZXh0dXJlKCk7CisKKyAgICBjb25z
dCBhbmdsZTo6Rm9ybWF0SUQgYW5nbGVGb3JtYXRJZCA9CisgICAgICAgIGFuZ2xlOjpGb3JtYXQ6
OkludGVybmFsRm9ybWF0VG9JRChpbWFnZS0+Z2V0Rm9ybWF0KCkuaW5mby0+c2l6ZWRJbnRlcm5h
bEZvcm1hdCk7CisgICAgbUZvcm1hdCA9IGNvbnRleHRNdGwtPmdldFBpeGVsRm9ybWF0KGFuZ2xl
Rm9ybWF0SWQpOworCisgICAgbVNsaWNlcyA9IG1OYXRpdmVUZXh0dXJlLT5jdWJlRmFjZXNPckFy
cmF5TGVuZ3RoKCk7CisKKyAgICBnbDo6RXh0ZW50cyBzaXplID0gbU5hdGl2ZVRleHR1cmUtPnNp
emVBdDAoKTsKKyAgICBtSXNQb3cyICAgICAgICAgID0gZ2w6OmlzUG93MihzaXplLndpZHRoKSAm
JiBnbDo6aXNQb3cyKHNpemUuaGVpZ2h0KSAmJiBnbDo6aXNQb3cyKHNpemUuZGVwdGgpOworICAg
IEFOR0xFX1RSWShlbnN1cmVTYW1wbGVyU3RhdGVDcmVhdGVkKGNvbnRleHQpKTsKKworICAgIC8v
IFRlbGwgY29udGV4dCB0byByZWJpbmQgdGV4dHVyZXMKKyAgICBjb250ZXh0TXRsLT5pbnZhbGlk
YXRlQ3VycmVudFRleHR1cmVzKCk7CisKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGlu
dWU7CiB9CiAKIGFuZ2xlOjpSZXN1bHQgVGV4dHVyZU10bDo6c2V0SW1hZ2VFeHRlcm5hbChjb25z
dCBnbDo6Q29udGV4dCAqY29udGV4dCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9nZW5fbXRsX2Zvcm1hdF90YWJsZS5weSBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9nZW5f
bXRsX2Zvcm1hdF90YWJsZS5weQppbmRleCA5NGFiYWUxMmM3NDNkMDQxOGI4YTQzOTFmZTc3N2Ux
ZmEyYTBiYjEyLi43ZmM3NzJlYjRkNGM3ODUyYmMwMTRjNzM2ZDA2MjRhZWM2YmRiNjUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0
YWwvZ2VuX210bF9mb3JtYXRfdGFibGUucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL2dlbl9tdGxfZm9ybWF0X3RhYmxlLnB5CkBAIC00
Niw2ICs0NiwxNSBAQCBuYW1lc3BhY2UgcngKIG5hbWVzcGFjZSBtdGwKIHt7CiAKK2FuZ2xlOjpG
b3JtYXRJRCBGb3JtYXQ6Ok1ldGFsVG9BbmdsZUZvcm1hdElEKE1UTFBpeGVsRm9ybWF0IGZvcm1h
dE10bCkKK3t7CisgICAgLy8gQWN0dWFsIGNvbnZlcnNpb24KKyAgICBzd2l0Y2ggKGZvcm1hdE10
bCkKKyAgICB7ewore210bF9waXhlbF9mb3JtYXRfc3dpdGNofQorICAgIH19Cit9fQorCiB2b2lk
IEZvcm1hdDo6aW5pdChjb25zdCBEaXNwbGF5TXRsICpkaXNwbGF5LCBhbmdsZTo6Rm9ybWF0SUQg
aW50ZW5kZWRGb3JtYXRJZF8pCiB7ewogICAgIHRoaXMtPmludGVuZGVkRm9ybWF0SWQgPSBpbnRl
bmRlZEZvcm1hdElkXzsKQEAgLTE1NCw2ICsxNjMsMTAgQEAgY2FzZV9pbWFnZV9mb3JtYXRfdGVt
cGxhdGUyID0gIiIiICAgICAgICBjYXNlIGFuZ2xlOjpGb3JtYXRJRDo6e2FuZ2xlX2Zvcm1hdH06
CiAKICIiIgogCitjYXNlX2ltYWdlX210bF90b19hbmdsZV90ZW1wbGF0ZSA9ICIiIiAgICAgICAg
Y2FzZSB7bXRsX2Zvcm1hdH06CisgICAgICAgICAgICByZXR1cm4gYW5nbGU6OkZvcm1hdElEOjp7
YW5nbGVfZm9ybWF0fTsKKyIiIgorCiBjYXNlX3ZlcnRleF9mb3JtYXRfdGVtcGxhdGUxID0gIiIi
ICAgICAgICBjYXNlIGFuZ2xlOjpGb3JtYXRJRDo6e2FuZ2xlX2Zvcm1hdH06CiAgICAgICAgICAg
ICB0aGlzLT5tZXRhbEZvcm1hdCA9IHttdGxfZm9ybWF0fTsKICAgICAgICAgICAgIHRoaXMtPmFj
dHVhbEZvcm1hdElkID0gYW5nbGU6OkZvcm1hdElEOjp7YWN0dWFsX2FuZ2xlX2Zvcm1hdH07CkBA
IC0zMDQsNiArMzE3LDggQEAgZGVmIGdlbl9pbWFnZV9tYXBfc3dpdGNoX21hY19jYXNlKGFuZ2xl
X2Zvcm1hdCwgYWN0dWFsX2FuZ2xlX2Zvcm1hdF9pbmZvLCBhbmdsZV8KICAgICAgICAgICAgICMg
VGhpcyBmb3JtYXQgcmVxdWlyZXMgZmFsbGJhY2sgd2hlbiBkZXB0aDI0U3RlbmNpbDhQaXhlbEZv
cm1hdFN1cHBvcnRlZCBmbGFnIGlzIGZhbHNlLgogICAgICAgICAgICAgIyBGYWxsYmFjayBmb3Jt
YXQ6CiAgICAgICAgICAgICBhY3R1YWxfYW5nbGVfZm9ybWF0X2ZhbGxiYWNrID0gbWFjX2ZhbGxi
YWNrc1thY3R1YWxfYW5nbGVfZm9ybWF0XQorICAgICAgICAgICAgZmFsbGJhY2tfY29uZGl0aW9u
ID0gIm1ldGFsRGV2aWNlLmRlcHRoMjRTdGVuY2lsOFBpeGVsRm9ybWF0U3VwcG9ydGVkICYmIFwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFkaXNwbGF5LT5nZXRGZWF0dXJlcygp
LmZvcmNlRDI0UzhBc1Vuc3VwcG9ydGVkLmVuYWJsZWQiCiAgICAgICAgICAgICAjIHJldHVybiBp
ZiBlbHNlIGJsb2NrOgogICAgICAgICAgICAgcmV0dXJuIGltYWdlX2Zvcm1hdF9hc3NpZ25fdGVt
cGxhdGUyLmZvcm1hdCgKICAgICAgICAgICAgICAgICBhY3R1YWxfYW5nbGVfZm9ybWF0PWFjdHVh
bF9hbmdsZV9mb3JtYXQsCkBAIC00MzMsNiArNDQ4LDQwIEBAIGRlZiBnZW5faW1hZ2VfbWFwX3N3
aXRjaF9zdHJpbmcoaW1hZ2VfdGFibGUsIGFuZ2xlX3RvX2dsKToKICAgICByZXR1cm4gc3dpdGNo
X2RhdGEKIAogCitkZWYgZ2VuX2ltYWdlX210bF90b19hbmdsZV9zd2l0Y2hfc3RyaW5nKGltYWdl
X3RhYmxlKToKKyAgICBhbmdsZV90b19tdGwgPSBpbWFnZV90YWJsZVsibWFwIl0KKyAgICBtYWNf
c3BlY2lmaWNfbWFwID0gaW1hZ2VfdGFibGVbIm1hcF9tYWMiXQorICAgIGlvc19zcGVjaWZpY19t
YXAgPSBpbWFnZV90YWJsZVsibWFwX2lvcyJdCisKKyAgICBzd2l0Y2hfZGF0YSA9ICcnCisKKyAg
ICAjIENvbW1vbiBjYXNlCisgICAgZm9yIGFuZ2xlX2Zvcm1hdCBpbiBzb3J0ZWQoYW5nbGVfdG9f
bXRsLmtleXMoKSk6CisgICAgICAgIHN3aXRjaF9kYXRhICs9IGNhc2VfaW1hZ2VfbXRsX3RvX2Fu
Z2xlX3RlbXBsYXRlLmZvcm1hdCgKKyAgICAgICAgICAgIG10bF9mb3JtYXQ9YW5nbGVfdG9fbXRs
W2FuZ2xlX2Zvcm1hdF0sIGFuZ2xlX2Zvcm1hdD1hbmdsZV9mb3JtYXQpCisKKyAgICAjIE1hYyBz
cGVjaWZpYworICAgIHN3aXRjaF9kYXRhICs9ICIjaWYgVEFSR0VUX09TX09TWCB8fCBUQVJHRVRf
T1NfTUFDQ0FUQUxZU1RcbiIKKyAgICBmb3IgYW5nbGVfZm9ybWF0IGluIHNvcnRlZChtYWNfc3Bl
Y2lmaWNfbWFwLmtleXMoKSk6CisgICAgICAgIHN3aXRjaF9kYXRhICs9IGNhc2VfaW1hZ2VfbXRs
X3RvX2FuZ2xlX3RlbXBsYXRlLmZvcm1hdCgKKyAgICAgICAgICAgIG10bF9mb3JtYXQ9bWFjX3Nw
ZWNpZmljX21hcFthbmdsZV9mb3JtYXRdLCBhbmdsZV9mb3JtYXQ9YW5nbGVfZm9ybWF0KQorICAg
IHN3aXRjaF9kYXRhICs9ICIjZW5kaWYgIC8vIFRBUkdFVF9PU19PU1ggfHwgVEFSR0VUX09TX01B
Q0NBVEFMWVNUXG4iCisKKyAgICAjIGlPUyArIG1hY09TIDExLjArIHNwZWNpZmljCisgICAgc3dp
dGNoX2RhdGEgKz0gIiNpZiBUQVJHRVRfT1NfSU9TIHx8IFRBUkdFVF9PU19UViB8fCAoVEFSR0VU
X09TX09TWCAmJiAoX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEID49IDEwMTYwMCkpXG4i
CisgICAgZm9yIGFuZ2xlX2Zvcm1hdCBpbiBzb3J0ZWQoaW9zX3NwZWNpZmljX21hcC5rZXlzKCkp
OgorICAgICAgICAjIEVUQzFfUjhHOEI4X1VOT1JNX0JMT0NLIGlzIGEgZHVwbGljYXRlZCBvZiBF
VEMyX1I4RzhCOF9VTk9STV9CTE9DSworICAgICAgICBpZiBhbmdsZV9mb3JtYXQgPT0gJ0VUQzFf
UjhHOEI4X1VOT1JNX0JMT0NLJzoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHN3aXRj
aF9kYXRhICs9IGNhc2VfaW1hZ2VfbXRsX3RvX2FuZ2xlX3RlbXBsYXRlLmZvcm1hdCgKKyAgICAg
ICAgICAgIG10bF9mb3JtYXQ9aW9zX3NwZWNpZmljX21hcFthbmdsZV9mb3JtYXRdLCBhbmdsZV9m
b3JtYXQ9YW5nbGVfZm9ybWF0KQorICAgIHN3aXRjaF9kYXRhICs9ICIjZW5kaWYgIC8vIFRBUkdF
VF9PU19JT1MgfHwgVEFSR0VUX09TX1RWIHx8IG1hYyAxMS4wK1xuIgorCisgICAgc3dpdGNoX2Rh
dGEgKz0gIiAgICAgICAgZGVmYXVsdDpcbiIKKyAgICBzd2l0Y2hfZGF0YSArPSAiICAgICAgICAg
ICAgcmV0dXJuIGFuZ2xlOjpGb3JtYXRJRDo6Tk9ORTtcbiIKKyAgICByZXR1cm4gc3dpdGNoX2Rh
dGEKKworCiBkZWYgZ2VuX3ZlcnRleF9tYXBfc3dpdGNoX2Nhc2UoYW5nbGVfZm10LCBhY3R1YWxf
YW5nbGVfZm10LCBhbmdsZV90b19tdGxfbWFwLCBvdmVycmlkZV9wYWNrZWRfbWFwKToKICAgICBt
dGxfZm9ybWF0ID0gYW5nbGVfdG9fbXRsX21hcFthY3R1YWxfYW5nbGVfZm10XQogICAgIGNvcHlf
ZnVuY3Rpb24sIGRlZmF1bHRfYWxwaGEsIHNhbWVfZ2xfdHlwZSA9IGdldF92ZXJ0ZXhfY29weV9m
dW5jdGlvbl9hbmRfZGVmYXVsdF9hbHBoYSgKQEAgLTU1NSw2ICs2MDQsNyBAQCBkZWYgbWFpbigp
OgogICAgIG1hcF92ZXJ0ZXggPSBtYXBfanNvblsidmVydGV4Il0KIAogICAgIGltYWdlX3N3aXRj
aF9kYXRhID0gZ2VuX2ltYWdlX21hcF9zd2l0Y2hfc3RyaW5nKG1hcF9pbWFnZSwgYW5nbGVfdG9f
Z2wpCisgICAgaW1hZ2VfbXRsX3RvX2FuZ2xlX3N3aXRjaF9kYXRhID0gZ2VuX2ltYWdlX210bF90
b19hbmdsZV9zd2l0Y2hfc3RyaW5nKG1hcF9pbWFnZSkKIAogICAgIHZlcnRleF9zd2l0Y2hfZGF0
YSA9IGdlbl92ZXJ0ZXhfbWFwX3N3aXRjaF9zdHJpbmcobWFwX3ZlcnRleCkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210
bF9jb21tb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9tZXRhbC9tdGxfY29tbW9uLmgKaW5kZXggODU3YjYyNmMzNjczNzY1ZDljMzE1YWI3ODEzNGM0
YjQyM2Y3YmM3My4uZDU3MWRlMzc1YmZkNDk5OTljY2Y0NDg3OGE0ZmVjOWJlYWFiYjgxNyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21l
dGFsL210bF9jb21tb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvbWV0YWwvbXRsX2NvbW1vbi5oCkBAIC0xMDgsNiArMTA4LDcgQEAgY2xhc3Mg
RGlzcGxheU10bDsKIGNsYXNzIENvbnRleHRNdGw7CiBjbGFzcyBGcmFtZWJ1ZmZlck10bDsKIGNs
YXNzIEJ1ZmZlck10bDsKK2NsYXNzIEltYWdlTXRsOwogY2xhc3MgVmVydGV4QXJyYXlNdGw7CiBj
bGFzcyBUZXh0dXJlTXRsOwogY2xhc3MgUHJvZ3JhbU10bDsKQEAgLTE3MCw2ICsxNzEsMTMgQEAg
c3RydWN0IEltcGxUeXBlSGVscGVyPGVnbDo6RGlzcGxheT4KIHsKICAgICB1c2luZyBJbXBsVHlw
ZSA9IERpc3BsYXlNdGw7CiB9OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IEltcGxUeXBlSGVscGVy
PGVnbDo6SW1hZ2U+Cit7CisgICAgdXNpbmcgSW1wbFR5cGUgPSBJbWFnZU10bDsKK307CisKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogdXNpbmcgR2V0SW1wbFR5cGUgPSB0eXBlbmFtZSBJbXBsVHlw
ZUhlbHBlcjxUPjo6SW1wbFR5cGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfZm9ybWF0X3RhYmxlX2F1dG9nZW4u
bW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwv
bXRsX2Zvcm1hdF90YWJsZV9hdXRvZ2VuLm1tCmluZGV4IGVlMjQyODkwM2FmNzNhMjNlNWQxYmZi
MTZiOGIyNDJiNjhkMDFlNjQuLjQ2NzQyODE3YWU5ZDU0Y2ZiOTkyMmEzZWJkMWQ4MWJlNGYyYzZl
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9tZXRhbC9tdGxfZm9ybWF0X3RhYmxlX2F1dG9nZW4ubW0KKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9mb3JtYXRfdGFibGVf
YXV0b2dlbi5tbQpAQCAtMjYsNiArMjYsMjQ4IEBAIG5hbWVzcGFjZSByeAogbmFtZXNwYWNlIG10
bAogewogCithbmdsZTo6Rm9ybWF0SUQgRm9ybWF0OjpNZXRhbFRvQW5nbGVGb3JtYXRJRChNVExQ
aXhlbEZvcm1hdCBmb3JtYXRNdGwpCit7CisgICAgLy8gQWN0dWFsIGNvbnZlcnNpb24KKyAgICBz
d2l0Y2ggKGZvcm1hdE10bCkKKyAgICB7CisgICAgICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRBOFVu
b3JtOgorICAgICAgICAgICAgcmV0dXJuIGFuZ2xlOjpGb3JtYXRJRDo6QThfVU5PUk07CisgICAg
ICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRCR1IxMEEyVW5vcm06CisgICAgICAgICAgICByZXR1cm4g
YW5nbGU6OkZvcm1hdElEOjpCMTBHMTBSMTBBMl9VTk9STTsKKyAgICAgICAgY2FzZSBNVExQaXhl
bEZvcm1hdEJHUkE4VW5vcm06CisgICAgICAgICAgICByZXR1cm4gYW5nbGU6OkZvcm1hdElEOjpC
OEc4UjhBOF9VTk9STTsKKyAgICAgICAgY2FzZSBNVExQaXhlbEZvcm1hdEJHUkE4VW5vcm1fc1JH
QjoKKyAgICAgICAgICAgIHJldHVybiBhbmdsZTo6Rm9ybWF0SUQ6OkI4RzhSOEE4X1VOT1JNX1NS
R0I7CisgICAgICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXREZXB0aDMyRmxvYXQ6CisgICAgICAgICAg
ICByZXR1cm4gYW5nbGU6OkZvcm1hdElEOjpEMzJfRkxPQVQ7CisgICAgICAgIGNhc2UgTVRMUGl4
ZWxGb3JtYXREZXB0aDMyRmxvYXRfU3RlbmNpbDg6CisgICAgICAgICAgICByZXR1cm4gYW5nbGU6
OkZvcm1hdElEOjpEMzJfRkxPQVRfUzhYMjRfVUlOVDsKKyAgICAgICAgY2FzZSBNVExQaXhlbEZv
cm1hdEludmFsaWQ6CisgICAgICAgICAgICByZXR1cm4gYW5nbGU6OkZvcm1hdElEOjpOT05FOwor
ICAgICAgICBjYXNlIE1UTFBpeGVsRm9ybWF0UkdCMTBBMlVpbnQ6CisgICAgICAgICAgICByZXR1
cm4gYW5nbGU6OkZvcm1hdElEOjpSMTBHMTBCMTBBMl9VSU5UOworICAgICAgICBjYXNlIE1UTFBp
eGVsRm9ybWF0UkdCMTBBMlVub3JtOgorICAgICAgICAgICAgcmV0dXJuIGFuZ2xlOjpGb3JtYXRJ
RDo6UjEwRzEwQjEwQTJfVU5PUk07CisgICAgICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRSRzExQjEw
RmxvYXQ6CisgICAgICAgICAgICByZXR1cm4gYW5nbGU6OkZvcm1hdElEOjpSMTFHMTFCMTBfRkxP
QVQ7CisgICAgICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRSR0JBMTZGbG9hdDoKKyAgICAgICAgICAg
IHJldHVybiBhbmdsZTo6Rm9ybWF0SUQ6OlIxNkcxNkIxNkExNl9GTE9BVDsKKyAgICAgICAgY2Fz
ZSBNVExQaXhlbEZvcm1hdFJHQkExNlNpbnQ6CisgICAgICAgICAgICByZXR1cm4gYW5nbGU6OkZv
cm1hdElEOjpSMTZHMTZCMTZBMTZfU0lOVDsKKyAgICAgICAgY2FzZSBNVExQaXhlbEZvcm1hdFJH
QkExNlNub3JtOgorICAgICAgICAgICAgcmV0dXJuIGFuZ2xlOjpGb3JtYXRJRDo6UjE2RzE2QjE2
QTE2X1NOT1JNOworICAgICAgICBjYXNlIE1UTFBpeGVsRm9ybWF0UkdCQTE2VWludDoKKyAgICAg
ICAgICAgIHJldHVybiBhbmdsZTo6Rm9ybWF0SUQ6OlIxNkcxNkIxNkExNl9VSU5UOworICAgICAg
ICBjYXNlIE1UTFBpeGVsRm9ybWF0UkdCQTE2VW5vcm06CisgICAgICAgICAgICByZXR1cm4gYW5n
bGU6OkZvcm1hdElEOjpSMTZHMTZCMTZBMTZfVU5PUk07CisgICAgICAgIGNhc2UgTVRMUGl4ZWxG
b3JtYXRSRzE2RmxvYXQ6CisgICAgICAgICAgICByZXR1cm4gYW5nbGU6OkZvcm1hdElEOjpSMTZH
MTZfRkxPQVQ7CisgICAgICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRSRzE2U2ludDoKKyAgICAgICAg
ICAgIHJldHVybiBhbmdsZTo6Rm9ybWF0SUQ6OlIxNkcxNl9TSU5UOworICAgICAgICBjYXNlIE1U
TFBpeGVsRm9ybWF0UkcxNlNub3JtOgorICAgICAgICAgICAgcmV0dXJuIGFuZ2xlOjpGb3JtYXRJ
RDo6UjE2RzE2X1NOT1JNOworICAgICAgICBjYXNlIE1UTFBpeGVsRm9ybWF0UkcxNlVpbnQ6Cisg
ICAgICAgICAgICByZXR1cm4gYW5nbGU6OkZvcm1hdElEOjpSMTZHMTZfVUlOVDsKKyAgICAgICAg
Y2FzZSBNVExQaXhlbEZvcm1hdFJHMTZVbm9ybToKKyAgICAgICAgICAgIHJldHVybiBhbmdsZTo6
Rm9ybWF0SUQ6OlIxNkcxNl9VTk9STTsKKyAgICAgICAgY2FzZSBNVExQaXhlbEZvcm1hdFIxNkZs
b2F0OgorICAgICAgICAgICAgcmV0dXJuIGFuZ2xlOjpGb3JtYXRJRDo6UjE2X0ZMT0FUOworICAg
ICAgICBjYXNlIE1UTFBpeGVsRm9ybWF0UjE2U2ludDoKKyAgICAgICAgICAgIHJldHVybiBhbmds
ZTo6Rm9ybWF0SUQ6OlIxNl9TSU5UOworICAgICAgICBjYXNlIE1UTFBpeGVsRm9ybWF0UjE2U25v
cm06CisgICAgICAgICAgICByZXR1cm4gYW5nbGU6OkZvcm1hdElEOjpSMTZfU05PUk07CisgICAg
ICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRSMTZVaW50OgorICAgICAgICAgICAgcmV0dXJuIGFuZ2xl
OjpGb3JtYXRJRDo6UjE2X1VJTlQ7CisgICAgICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRSMTZVbm9y
bToKKyAgICAgICAgICAgIHJldHVybiBhbmdsZTo6Rm9ybWF0SUQ6OlIxNl9VTk9STTsKKyAgICAg
ICAgY2FzZSBNVExQaXhlbEZvcm1hdFJHQkEzMkZsb2F0OgorICAgICAgICAgICAgcmV0dXJuIGFu
Z2xlOjpGb3JtYXRJRDo6UjMyRzMyQjMyQTMyX0ZMT0FUOworICAgICAgICBjYXNlIE1UTFBpeGVs
Rm9ybWF0UkdCQTMyU2ludDoKKyAgICAgICAgICAgIHJldHVybiBhbmdsZTo6Rm9ybWF0SUQ6OlIz
MkczMkIzMkEzMl9TSU5UOworICAgICAgICBjYXNlIE1UTFBpeGVsRm9ybWF0UkdCQTMyVWludDoK
KyAgICAgICAgICAgIHJldHVybiBhbmdsZTo6Rm9ybWF0SUQ6OlIzMkczMkIzMkEzMl9VSU5UOwor
ICAgICAgICBjYXNlIE1UTFBpeGVsRm9ybWF0UkczMkZsb2F0OgorICAgICAgICAgICAgcmV0dXJu
IGFuZ2xlOjpGb3JtYXRJRDo6UjMyRzMyX0ZMT0FUOworICAgICAgICBjYXNlIE1UTFBpeGVsRm9y
bWF0UkczMlNpbnQ6CisgICAgICAgICAgICByZXR1cm4gYW5nbGU6OkZvcm1hdElEOjpSMzJHMzJf
U0lOVDsKKyAgICAgICAgY2FzZSBNVExQaXhlbEZvcm1hdFJHMzJVaW50OgorICAgICAgICAgICAg
cmV0dXJuIGFuZ2xlOjpGb3JtYXRJRDo6UjMyRzMyX1VJTlQ7CisgICAgICAgIGNhc2UgTVRMUGl4
ZWxGb3JtYXRSMzJGbG9hdDoKKyAgICAgICAgICAgIHJldHVybiBhbmdsZTo6Rm9ybWF0SUQ6OlIz
Ml9GTE9BVDsKKyAgICAgICAgY2FzZSBNVExQaXhlbEZvcm1hdFIzMlNpbnQ6CisgICAgICAgICAg
ICByZXR1cm4gYW5nbGU6OkZvcm1hdElEOjpSMzJfU0lOVDsKKyAgICAgICAgY2FzZSBNVExQaXhl
bEZvcm1hdFIzMlVpbnQ6CisgICAgICAgICAgICByZXR1cm4gYW5nbGU6OkZvcm1hdElEOjpSMzJf
VUlOVDsKKyAgICAgICAgY2FzZSBNVExQaXhlbEZvcm1hdFJHQkE4U2ludDoKKyAgICAgICAgICAg
IHJldHVybiBhbmdsZTo6Rm9ybWF0SUQ6OlI4RzhCOEE4X1NJTlQ7CisgICAgICAgIGNhc2UgTVRM
UGl4ZWxGb3JtYXRSR0JBOFNub3JtOgorICAgICAgICAgICAgcmV0dXJuIGFuZ2xlOjpGb3JtYXRJ
RDo6UjhHOEI4QThfU05PUk07CisgICAgICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRSR0JBOFVpbnQ6
CisgICAgICAgICAgICByZXR1cm4gYW5nbGU6OkZvcm1hdElEOjpSOEc4QjhBOF9VSU5UOworICAg
ICAgICBjYXNlIE1UTFBpeGVsRm9ybWF0UkdCQThVbm9ybToKKyAgICAgICAgICAgIHJldHVybiBh
bmdsZTo6Rm9ybWF0SUQ6OlI4RzhCOEE4X1VOT1JNOworICAgICAgICBjYXNlIE1UTFBpeGVsRm9y
bWF0UkdCQThVbm9ybV9zUkdCOgorICAgICAgICAgICAgcmV0dXJuIGFuZ2xlOjpGb3JtYXRJRDo6
UjhHOEI4QThfVU5PUk1fU1JHQjsKKyAgICAgICAgY2FzZSBNVExQaXhlbEZvcm1hdFJHOFNpbnQ6
CisgICAgICAgICAgICByZXR1cm4gYW5nbGU6OkZvcm1hdElEOjpSOEc4X1NJTlQ7CisgICAgICAg
IGNhc2UgTVRMUGl4ZWxGb3JtYXRSRzhTbm9ybToKKyAgICAgICAgICAgIHJldHVybiBhbmdsZTo6
Rm9ybWF0SUQ6OlI4RzhfU05PUk07CisgICAgICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRSRzhVaW50
OgorICAgICAgICAgICAgcmV0dXJuIGFuZ2xlOjpGb3JtYXRJRDo6UjhHOF9VSU5UOworICAgICAg
ICBjYXNlIE1UTFBpeGVsRm9ybWF0Ukc4VW5vcm06CisgICAgICAgICAgICByZXR1cm4gYW5nbGU6
OkZvcm1hdElEOjpSOEc4X1VOT1JNOworICAgICAgICBjYXNlIE1UTFBpeGVsRm9ybWF0UjhTaW50
OgorICAgICAgICAgICAgcmV0dXJuIGFuZ2xlOjpGb3JtYXRJRDo6UjhfU0lOVDsKKyAgICAgICAg
Y2FzZSBNVExQaXhlbEZvcm1hdFI4U25vcm06CisgICAgICAgICAgICByZXR1cm4gYW5nbGU6OkZv
cm1hdElEOjpSOF9TTk9STTsKKyAgICAgICAgY2FzZSBNVExQaXhlbEZvcm1hdFI4VWludDoKKyAg
ICAgICAgICAgIHJldHVybiBhbmdsZTo6Rm9ybWF0SUQ6OlI4X1VJTlQ7CisgICAgICAgIGNhc2Ug
TVRMUGl4ZWxGb3JtYXRSOFVub3JtOgorICAgICAgICAgICAgcmV0dXJuIGFuZ2xlOjpGb3JtYXRJ
RDo6UjhfVU5PUk07CisgICAgICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRSR0I5RTVGbG9hdDoKKyAg
ICAgICAgICAgIHJldHVybiBhbmdsZTo6Rm9ybWF0SUQ6OlI5RzlCOUU1X1NIQVJFREVYUDsKKyAg
ICAgICAgY2FzZSBNVExQaXhlbEZvcm1hdFN0ZW5jaWw4OgorICAgICAgICAgICAgcmV0dXJuIGFu
Z2xlOjpGb3JtYXRJRDo6UzhfVUlOVDsKKyNpZiBUQVJHRVRfT1NfT1NYIHx8IFRBUkdFVF9PU19N
QUNDQVRBTFlTVAorICAgICAgICBjYXNlIE1UTFBpeGVsRm9ybWF0QkMxX1JHQkE6CisgICAgICAg
ICAgICByZXR1cm4gYW5nbGU6OkZvcm1hdElEOjpCQzFfUkdCQV9VTk9STV9CTE9DSzsKKyAgICAg
ICAgY2FzZSBNVExQaXhlbEZvcm1hdEJDMV9SR0JBX3NSR0I6CisgICAgICAgICAgICByZXR1cm4g
YW5nbGU6OkZvcm1hdElEOjpCQzFfUkdCQV9VTk9STV9TUkdCX0JMT0NLOworICAgICAgICBjYXNl
IE1UTFBpeGVsRm9ybWF0QkMyX1JHQkE6CisgICAgICAgICAgICByZXR1cm4gYW5nbGU6OkZvcm1h
dElEOjpCQzJfUkdCQV9VTk9STV9CTE9DSzsKKyAgICAgICAgY2FzZSBNVExQaXhlbEZvcm1hdEJD
Ml9SR0JBX3NSR0I6CisgICAgICAgICAgICByZXR1cm4gYW5nbGU6OkZvcm1hdElEOjpCQzJfUkdC
QV9VTk9STV9TUkdCX0JMT0NLOworICAgICAgICBjYXNlIE1UTFBpeGVsRm9ybWF0QkMzX1JHQkE6
CisgICAgICAgICAgICByZXR1cm4gYW5nbGU6OkZvcm1hdElEOjpCQzNfUkdCQV9VTk9STV9CTE9D
SzsKKyAgICAgICAgY2FzZSBNVExQaXhlbEZvcm1hdEJDM19SR0JBX3NSR0I6CisgICAgICAgICAg
ICByZXR1cm4gYW5nbGU6OkZvcm1hdElEOjpCQzNfUkdCQV9VTk9STV9TUkdCX0JMT0NLOworICAg
ICAgICBjYXNlIE1UTFBpeGVsRm9ybWF0QkM0X1JTbm9ybToKKyAgICAgICAgICAgIHJldHVybiBh
bmdsZTo6Rm9ybWF0SUQ6OkJDNF9SRURfU05PUk1fQkxPQ0s7CisgICAgICAgIGNhc2UgTVRMUGl4
ZWxGb3JtYXRCQzRfUlVub3JtOgorICAgICAgICAgICAgcmV0dXJuIGFuZ2xlOjpGb3JtYXRJRDo6
QkM0X1JFRF9VTk9STV9CTE9DSzsKKyAgICAgICAgY2FzZSBNVExQaXhlbEZvcm1hdEJDNV9SR1Nu
b3JtOgorICAgICAgICAgICAgcmV0dXJuIGFuZ2xlOjpGb3JtYXRJRDo6QkM1X1JHX1NOT1JNX0JM
T0NLOworICAgICAgICBjYXNlIE1UTFBpeGVsRm9ybWF0QkM1X1JHVW5vcm06CisgICAgICAgICAg
ICByZXR1cm4gYW5nbGU6OkZvcm1hdElEOjpCQzVfUkdfVU5PUk1fQkxPQ0s7CisgICAgICAgIGNh
c2UgTVRMUGl4ZWxGb3JtYXRCQzdfUkdCQVVub3JtOgorICAgICAgICAgICAgcmV0dXJuIGFuZ2xl
OjpGb3JtYXRJRDo6QlBUQ19SR0JBX1VOT1JNX0JMT0NLOworICAgICAgICBjYXNlIE1UTFBpeGVs
Rm9ybWF0QkM2SF9SR0JGbG9hdDoKKyAgICAgICAgICAgIHJldHVybiBhbmdsZTo6Rm9ybWF0SUQ6
OkJQVENfUkdCX1NJR05FRF9GTE9BVF9CTE9DSzsKKyAgICAgICAgY2FzZSBNVExQaXhlbEZvcm1h
dEJDNkhfUkdCVWZsb2F0OgorICAgICAgICAgICAgcmV0dXJuIGFuZ2xlOjpGb3JtYXRJRDo6QlBU
Q19SR0JfVU5TSUdORURfRkxPQVRfQkxPQ0s7CisgICAgICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRC
QzdfUkdCQVVub3JtX3NSR0I6CisgICAgICAgICAgICByZXR1cm4gYW5nbGU6OkZvcm1hdElEOjpC
UFRDX1NSR0JfQUxQSEFfVU5PUk1fQkxPQ0s7CisgICAgICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRE
ZXB0aDE2VW5vcm06CisgICAgICAgICAgICByZXR1cm4gYW5nbGU6OkZvcm1hdElEOjpEMTZfVU5P
Uk07CisgICAgICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXREZXB0aDI0VW5vcm1fU3RlbmNpbDg6Cisg
ICAgICAgICAgICByZXR1cm4gYW5nbGU6OkZvcm1hdElEOjpEMjRfVU5PUk1fUzhfVUlOVDsKKyNl
bmRpZiAgLy8gVEFSR0VUX09TX09TWCB8fCBUQVJHRVRfT1NfTUFDQ0FUQUxZU1QKKyNpZiBUQVJH
RVRfT1NfSU9TIHx8IFRBUkdFVF9PU19UViB8fCAoVEFSR0VUX09TX09TWCAmJiAoX19NQUNfT1Nf
WF9WRVJTSU9OX01BWF9BTExPV0VEID49IDEwMTYwMCkpCisgICAgICAgIGNhc2UgTVRMUGl4ZWxG
b3JtYXRBU1RDXzEweDEwX3NSR0I6CisgICAgICAgICAgICByZXR1cm4gYW5nbGU6OkZvcm1hdElE
OjpBU1RDXzEweDEwX1NSR0JfQkxPQ0s7CisgICAgICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRBU1RD
XzEweDEwX0xEUjoKKyAgICAgICAgICAgIHJldHVybiBhbmdsZTo6Rm9ybWF0SUQ6OkFTVENfMTB4
MTBfVU5PUk1fQkxPQ0s7CisgICAgICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRBU1RDXzEweDVfc1JH
QjoKKyAgICAgICAgICAgIHJldHVybiBhbmdsZTo6Rm9ybWF0SUQ6OkFTVENfMTB4NV9TUkdCX0JM
T0NLOworICAgICAgICBjYXNlIE1UTFBpeGVsRm9ybWF0QVNUQ18xMHg1X0xEUjoKKyAgICAgICAg
ICAgIHJldHVybiBhbmdsZTo6Rm9ybWF0SUQ6OkFTVENfMTB4NV9VTk9STV9CTE9DSzsKKyAgICAg
ICAgY2FzZSBNVExQaXhlbEZvcm1hdEFTVENfMTB4Nl9zUkdCOgorICAgICAgICAgICAgcmV0dXJu
IGFuZ2xlOjpGb3JtYXRJRDo6QVNUQ18xMHg2X1NSR0JfQkxPQ0s7CisgICAgICAgIGNhc2UgTVRM
UGl4ZWxGb3JtYXRBU1RDXzEweDZfTERSOgorICAgICAgICAgICAgcmV0dXJuIGFuZ2xlOjpGb3Jt
YXRJRDo6QVNUQ18xMHg2X1VOT1JNX0JMT0NLOworICAgICAgICBjYXNlIE1UTFBpeGVsRm9ybWF0
QVNUQ18xMHg4X3NSR0I6CisgICAgICAgICAgICByZXR1cm4gYW5nbGU6OkZvcm1hdElEOjpBU1RD
XzEweDhfU1JHQl9CTE9DSzsKKyAgICAgICAgY2FzZSBNVExQaXhlbEZvcm1hdEFTVENfMTB4OF9M
RFI6CisgICAgICAgICAgICByZXR1cm4gYW5nbGU6OkZvcm1hdElEOjpBU1RDXzEweDhfVU5PUk1f
QkxPQ0s7CisgICAgICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRBU1RDXzEyeDEwX3NSR0I6CisgICAg
ICAgICAgICByZXR1cm4gYW5nbGU6OkZvcm1hdElEOjpBU1RDXzEyeDEwX1NSR0JfQkxPQ0s7Cisg
ICAgICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRBU1RDXzEyeDEwX0xEUjoKKyAgICAgICAgICAgIHJl
dHVybiBhbmdsZTo6Rm9ybWF0SUQ6OkFTVENfMTJ4MTBfVU5PUk1fQkxPQ0s7CisgICAgICAgIGNh
c2UgTVRMUGl4ZWxGb3JtYXRBU1RDXzEyeDEyX3NSR0I6CisgICAgICAgICAgICByZXR1cm4gYW5n
bGU6OkZvcm1hdElEOjpBU1RDXzEyeDEyX1NSR0JfQkxPQ0s7CisgICAgICAgIGNhc2UgTVRMUGl4
ZWxGb3JtYXRBU1RDXzEyeDEyX0xEUjoKKyAgICAgICAgICAgIHJldHVybiBhbmdsZTo6Rm9ybWF0
SUQ6OkFTVENfMTJ4MTJfVU5PUk1fQkxPQ0s7CisgICAgICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRB
U1RDXzR4NF9zUkdCOgorICAgICAgICAgICAgcmV0dXJuIGFuZ2xlOjpGb3JtYXRJRDo6QVNUQ180
eDRfU1JHQl9CTE9DSzsKKyAgICAgICAgY2FzZSBNVExQaXhlbEZvcm1hdEFTVENfNHg0X0xEUjoK
KyAgICAgICAgICAgIHJldHVybiBhbmdsZTo6Rm9ybWF0SUQ6OkFTVENfNHg0X1VOT1JNX0JMT0NL
OworICAgICAgICBjYXNlIE1UTFBpeGVsRm9ybWF0QVNUQ181eDRfc1JHQjoKKyAgICAgICAgICAg
IHJldHVybiBhbmdsZTo6Rm9ybWF0SUQ6OkFTVENfNXg0X1NSR0JfQkxPQ0s7CisgICAgICAgIGNh
c2UgTVRMUGl4ZWxGb3JtYXRBU1RDXzV4NF9MRFI6CisgICAgICAgICAgICByZXR1cm4gYW5nbGU6
OkZvcm1hdElEOjpBU1RDXzV4NF9VTk9STV9CTE9DSzsKKyAgICAgICAgY2FzZSBNVExQaXhlbEZv
cm1hdEFTVENfNXg1X3NSR0I6CisgICAgICAgICAgICByZXR1cm4gYW5nbGU6OkZvcm1hdElEOjpB
U1RDXzV4NV9TUkdCX0JMT0NLOworICAgICAgICBjYXNlIE1UTFBpeGVsRm9ybWF0QVNUQ181eDVf
TERSOgorICAgICAgICAgICAgcmV0dXJuIGFuZ2xlOjpGb3JtYXRJRDo6QVNUQ181eDVfVU5PUk1f
QkxPQ0s7CisgICAgICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRBU1RDXzZ4NV9zUkdCOgorICAgICAg
ICAgICAgcmV0dXJuIGFuZ2xlOjpGb3JtYXRJRDo6QVNUQ182eDVfU1JHQl9CTE9DSzsKKyAgICAg
ICAgY2FzZSBNVExQaXhlbEZvcm1hdEFTVENfNng1X0xEUjoKKyAgICAgICAgICAgIHJldHVybiBh
bmdsZTo6Rm9ybWF0SUQ6OkFTVENfNng1X1VOT1JNX0JMT0NLOworICAgICAgICBjYXNlIE1UTFBp
eGVsRm9ybWF0QVNUQ182eDZfc1JHQjoKKyAgICAgICAgICAgIHJldHVybiBhbmdsZTo6Rm9ybWF0
SUQ6OkFTVENfNng2X1NSR0JfQkxPQ0s7CisgICAgICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRBU1RD
XzZ4Nl9MRFI6CisgICAgICAgICAgICByZXR1cm4gYW5nbGU6OkZvcm1hdElEOjpBU1RDXzZ4Nl9V
Tk9STV9CTE9DSzsKKyAgICAgICAgY2FzZSBNVExQaXhlbEZvcm1hdEFTVENfOHg1X3NSR0I6Cisg
ICAgICAgICAgICByZXR1cm4gYW5nbGU6OkZvcm1hdElEOjpBU1RDXzh4NV9TUkdCX0JMT0NLOwor
ICAgICAgICBjYXNlIE1UTFBpeGVsRm9ybWF0QVNUQ184eDVfTERSOgorICAgICAgICAgICAgcmV0
dXJuIGFuZ2xlOjpGb3JtYXRJRDo6QVNUQ184eDVfVU5PUk1fQkxPQ0s7CisgICAgICAgIGNhc2Ug
TVRMUGl4ZWxGb3JtYXRBU1RDXzh4Nl9zUkdCOgorICAgICAgICAgICAgcmV0dXJuIGFuZ2xlOjpG
b3JtYXRJRDo6QVNUQ184eDZfU1JHQl9CTE9DSzsKKyAgICAgICAgY2FzZSBNVExQaXhlbEZvcm1h
dEFTVENfOHg2X0xEUjoKKyAgICAgICAgICAgIHJldHVybiBhbmdsZTo6Rm9ybWF0SUQ6OkFTVENf
OHg2X1VOT1JNX0JMT0NLOworICAgICAgICBjYXNlIE1UTFBpeGVsRm9ybWF0QVNUQ184eDhfc1JH
QjoKKyAgICAgICAgICAgIHJldHVybiBhbmdsZTo6Rm9ybWF0SUQ6OkFTVENfOHg4X1NSR0JfQkxP
Q0s7CisgICAgICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRBU1RDXzh4OF9MRFI6CisgICAgICAgICAg
ICByZXR1cm4gYW5nbGU6OkZvcm1hdElEOjpBU1RDXzh4OF9VTk9STV9CTE9DSzsKKyAgICAgICAg
Y2FzZSBNVExQaXhlbEZvcm1hdEVBQ19SRzExU25vcm06CisgICAgICAgICAgICByZXR1cm4gYW5n
bGU6OkZvcm1hdElEOjpFQUNfUjExRzExX1NOT1JNX0JMT0NLOworICAgICAgICBjYXNlIE1UTFBp
eGVsRm9ybWF0RUFDX1JHMTFVbm9ybToKKyAgICAgICAgICAgIHJldHVybiBhbmdsZTo6Rm9ybWF0
SUQ6OkVBQ19SMTFHMTFfVU5PUk1fQkxPQ0s7CisgICAgICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRF
QUNfUjExU25vcm06CisgICAgICAgICAgICByZXR1cm4gYW5nbGU6OkZvcm1hdElEOjpFQUNfUjEx
X1NOT1JNX0JMT0NLOworICAgICAgICBjYXNlIE1UTFBpeGVsRm9ybWF0RUFDX1IxMVVub3JtOgor
ICAgICAgICAgICAgcmV0dXJuIGFuZ2xlOjpGb3JtYXRJRDo6RUFDX1IxMV9VTk9STV9CTE9DSzsK
KyAgICAgICAgY2FzZSBNVExQaXhlbEZvcm1hdEVUQzJfUkdCOEExX3NSR0I6CisgICAgICAgICAg
ICByZXR1cm4gYW5nbGU6OkZvcm1hdElEOjpFVEMyX1I4RzhCOEExX1NSR0JfQkxPQ0s7CisgICAg
ICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRFVEMyX1JHQjhBMToKKyAgICAgICAgICAgIHJldHVybiBh
bmdsZTo6Rm9ybWF0SUQ6OkVUQzJfUjhHOEI4QTFfVU5PUk1fQkxPQ0s7CisgICAgICAgIGNhc2Ug
TVRMUGl4ZWxGb3JtYXRFQUNfUkdCQThfc1JHQjoKKyAgICAgICAgICAgIHJldHVybiBhbmdsZTo6
Rm9ybWF0SUQ6OkVUQzJfUjhHOEI4QThfU1JHQl9CTE9DSzsKKyAgICAgICAgY2FzZSBNVExQaXhl
bEZvcm1hdEVBQ19SR0JBODoKKyAgICAgICAgICAgIHJldHVybiBhbmdsZTo6Rm9ybWF0SUQ6OkVU
QzJfUjhHOEI4QThfVU5PUk1fQkxPQ0s7CisgICAgICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRFVEMy
X1JHQjhfc1JHQjoKKyAgICAgICAgICAgIHJldHVybiBhbmdsZTo6Rm9ybWF0SUQ6OkVUQzJfUjhH
OEI4X1NSR0JfQkxPQ0s7CisgICAgICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRFVEMyX1JHQjg6Cisg
ICAgICAgICAgICByZXR1cm4gYW5nbGU6OkZvcm1hdElEOjpFVEMyX1I4RzhCOF9VTk9STV9CTE9D
SzsKKyAgICAgICAgY2FzZSBNVExQaXhlbEZvcm1hdFBWUlRDX1JHQkFfMkJQUDoKKyAgICAgICAg
ICAgIHJldHVybiBhbmdsZTo6Rm9ybWF0SUQ6OlBWUlRDMV9SR0JBXzJCUFBfVU5PUk1fQkxPQ0s7
CisgICAgICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRQVlJUQ19SR0JBXzJCUFBfc1JHQjoKKyAgICAg
ICAgICAgIHJldHVybiBhbmdsZTo6Rm9ybWF0SUQ6OlBWUlRDMV9SR0JBXzJCUFBfVU5PUk1fU1JH
Ql9CTE9DSzsKKyAgICAgICAgY2FzZSBNVExQaXhlbEZvcm1hdFBWUlRDX1JHQkFfNEJQUDoKKyAg
ICAgICAgICAgIHJldHVybiBhbmdsZTo6Rm9ybWF0SUQ6OlBWUlRDMV9SR0JBXzRCUFBfVU5PUk1f
QkxPQ0s7CisgICAgICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRQVlJUQ19SR0JBXzRCUFBfc1JHQjoK
KyAgICAgICAgICAgIHJldHVybiBhbmdsZTo6Rm9ybWF0SUQ6OlBWUlRDMV9SR0JBXzRCUFBfVU5P
Uk1fU1JHQl9CTE9DSzsKKyAgICAgICAgY2FzZSBNVExQaXhlbEZvcm1hdFBWUlRDX1JHQl8yQlBQ
OgorICAgICAgICAgICAgcmV0dXJuIGFuZ2xlOjpGb3JtYXRJRDo6UFZSVEMxX1JHQl8yQlBQX1VO
T1JNX0JMT0NLOworICAgICAgICBjYXNlIE1UTFBpeGVsRm9ybWF0UFZSVENfUkdCXzJCUFBfc1JH
QjoKKyAgICAgICAgICAgIHJldHVybiBhbmdsZTo6Rm9ybWF0SUQ6OlBWUlRDMV9SR0JfMkJQUF9V
Tk9STV9TUkdCX0JMT0NLOworICAgICAgICBjYXNlIE1UTFBpeGVsRm9ybWF0UFZSVENfUkdCXzRC
UFA6CisgICAgICAgICAgICByZXR1cm4gYW5nbGU6OkZvcm1hdElEOjpQVlJUQzFfUkdCXzRCUFBf
VU5PUk1fQkxPQ0s7CisgICAgICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRQVlJUQ19SR0JfNEJQUF9z
UkdCOgorICAgICAgICAgICAgcmV0dXJuIGFuZ2xlOjpGb3JtYXRJRDo6UFZSVEMxX1JHQl80QlBQ
X1VOT1JNX1NSR0JfQkxPQ0s7CisgICAgICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRBQkdSNFVub3Jt
OgorICAgICAgICAgICAgcmV0dXJuIGFuZ2xlOjpGb3JtYXRJRDo6UjRHNEI0QTRfVU5PUk07Cisg
ICAgICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRBMUJHUjVVbm9ybToKKyAgICAgICAgICAgIHJldHVy
biBhbmdsZTo6Rm9ybWF0SUQ6OlI1RzVCNUExX1VOT1JNOworICAgICAgICBjYXNlIE1UTFBpeGVs
Rm9ybWF0QjVHNlI1VW5vcm06CisgICAgICAgICAgICByZXR1cm4gYW5nbGU6OkZvcm1hdElEOjpS
NUc2QjVfVU5PUk07CisjZW5kaWYgIC8vIFRBUkdFVF9PU19JT1MgfHwgVEFSR0VUX09TX1RWIHx8
IG1hYyAxMS4wKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGFuZ2xlOjpG
b3JtYXRJRDo6Tk9ORTsKKyAgICB9Cit9CisKIHZvaWQgRm9ybWF0Ojppbml0KGNvbnN0IERpc3Bs
YXlNdGwgKmRpc3BsYXksIGFuZ2xlOjpGb3JtYXRJRCBpbnRlbmRlZEZvcm1hdElkXykKIHsKICAg
ICB0aGlzLT5pbnRlbmRlZEZvcm1hdElkID0gaW50ZW5kZWRGb3JtYXRJZF87CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRs
X2Zvcm1hdF91dGlscy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL21ldGFsL210bF9mb3JtYXRfdXRpbHMuaAppbmRleCBkYTc3MTUzMDI4Yjk5YzEwZDY0
M2ZkY2IxZTVhMTY3YWY2NWMwZWJmLi5kZTI1YmJkOTE5ODNhYzFmZGVhNTQyZDQwZjFjZDM4NTg4
MDRkNzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvbWV0YWwvbXRsX2Zvcm1hdF91dGlscy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfZm9ybWF0X3V0aWxzLmgKQEAg
LTY5LDYgKzY5LDggQEAgc3RydWN0IEZvcm1hdCA6IHB1YmxpYyBGb3JtYXRCYXNlCiB7CiAgICAg
Rm9ybWF0KCkgPSBkZWZhdWx0OwogCisgICAgc3RhdGljIGFuZ2xlOjpGb3JtYXRJRCBNZXRhbFRv
QW5nbGVGb3JtYXRJRChNVExQaXhlbEZvcm1hdCBmb3JtYXRNdGwpOworCiAgICAgY29uc3QgZ2w6
OkludGVybmFsRm9ybWF0ICZpbnRlbmRlZEludGVybmFsRm9ybWF0KCkgY29uc3Q7CiAgICAgY29u
c3QgZ2w6OkludGVybmFsRm9ybWF0ICZhY3R1YWxJbnRlcm5hbEZvcm1hdCgpIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlv
bkVHTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlv
bkVHTC5jcHAKaW5kZXggMTBlOTY3YjA4NWY1YzJhMzA1MzVkMGUwZjM0ZTlmMjZmOWEzOGRkZS4u
NmU1NzYxZjdlODNmNzA0NjI3NTg3NzdjZjYxYmZiYjg4MDIwMDdhZiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FR0wuY3BwCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRUdMLmNwcApA
QCAtMjcyNyw2ICsyNzI3LDIwIEBAIEVycm9yIFZhbGlkYXRlQ3JlYXRlSW1hZ2UoY29uc3QgRGlz
cGxheSAqZGlzcGxheSwKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCisgICAg
ICAgIGNhc2UgRUdMX01FVEFMX1RFWFRVUkVfQU5HTEU6CisgICAgICAgICAgICBpZiAoIWRpc3Bs
YXlFeHRlbnNpb25zLm10bFRleHR1cmVDbGllbnRCdWZmZXIpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIEVnbEJhZFBhcmFtZXRlcigpIDw8ICJFR0xfQU5HTEVfbWV0YWxf
dGV4dHVyZV9jbGllbnRfYnVmZmVyIG5vdCBzdXBwb3J0ZWQuIjsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKGNvbnRleHQgIT0gbnVsbHB0cikKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gRWdsQmFkQ29udGV4dCgpIDw8ICJjdHggbXVzdCBiZSBFR0xfTk9f
Q09OVEVYVC4iOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBBTkdMRV9UUlkoZGlzcGxh
eS0+dmFsaWRhdGVJbWFnZUNsaWVudEJ1ZmZlcihjb250ZXh0LCB0YXJnZXQsIGJ1ZmZlciwgYXR0
cmlidXRlcykpOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIHJldHVybiBFZ2xCYWRQYXJhbWV0ZXIoKQogICAgICAgICAgICAgICAgICAgIDw8ICJp
bnZhbGlkIHRhcmdldDogMHgiIDw8IHN0ZDo6aGV4IDw8IHN0ZDo6dXBwZXJjYXNlIDw8IHRhcmdl
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9CVUlMRC5n
biBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9CVUlMRC5nbgppbmRleCBjZDVm
MDk1ZTlmODBkMGRmZDViYzYzN2UwNmRiN2MwYTYzOWM5ZWM0Li5mMGQ4NjM0ZWQ1NmQwOGVhNTQy
YzRlM2RjNjQxMjM2ZjMyZmE1MjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL0JVSUxELmduCkBAIC0xNTUsNiArMTU1LDE0IEBAIGlmIChpc193aW4gfHwgaXNfbGludXgg
fHwgaXNfY2hyb21lb3MgfHwgaXNfbWFjIHx8IGlzX2FuZHJvaWQgfHwgaXNfZnVjaHNpYSkgewog
ICAgICAgICAiQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrIiwKICAgICAgICAgIklPU3VyZmFjZS5m
cmFtZXdvcmsiLAogICAgICAgXQorICAgICAgbGRmbGFncyA9IFsKKyAgICAgICAgIi13ZWFrX2Zy
YW1ld29yayIsCisgICAgICAgICJNZXRhbCIsCisgICAgICBdCisgICAgICBjZmxhZ3Nfb2JqY2Mg
PSBbCisgICAgICAgICItV25vLW51bGxhYmlsaXR5LWNvbXBsZXRlbmVzcyIsCisgICAgICAgICIt
V25vLXVuZ3VhcmRlZC1hdmFpbGFiaWxpdHkiLAorICAgICAgXQogICAgIH0KICAgICBpZiAoaXNf
d2luKSB7CiAgICAgICBzb3VyY2VzICs9IGFuZ2xlX2VuZDJlbmRfdGVzdHNfd2luX3NvdXJjZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9J
bWFnZVRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3Rz
L0ltYWdlVGVzdC5jcHAKaW5kZXggNjJiOTdlOGFiMDc3NWQzZTI2ZWU5ZGIyODRkZTFlNjE1Nzc3
YTNiNy4uOGRjNmQ3ZjQ1MmFlZTJiNzhkZjE4NDdkYmFjNjU3MWU3YjcxNTllNSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0ltYWdlVGVzdC5j
cHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0ltYWdl
VGVzdC5jcHAKQEAgLTg4OCw2ICs4ODgsMjIgQEAgVEVTVF9QKEltYWdlVGVzdCwgQU5HTEVFeHRl
bnNpb25BdmFpbGFiaWxpdHkpCiAgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoaGFzRXh0ZXJuYWxF
U1NMM0V4dCgpKTsKICAgICAgICAgfQogICAgIH0KKyAgICBlbHNlIGlmIChJc01ldGFsKCkpCisg
ICAgeworICAgICAgICAvLyBodHRwOi8vYW5nbGVidWcuY29tLzU4MTQKKyAgICAgICAgLy8gaHR0
cDovL2FuZ2xlYnVnLmNvbS81ODQxICh3cm9uZyBkZXRlY3Rpb24gb2YgSXNNZXRhbCgpIG9uIG1h
Y09TIDExKQorICAgICAgICBBTkdMRV9TS0lQX1RFU1RfSUYoSXNBUk02NCgpKTsKKworICAgICAg
ICAvLyBOT1RFKGhxbGUpOiBNZXRhbCBjdXJyZW50bHkgZG9lc24ndCBpbXBsZW1lbnQgYW55IGlt
YWdlIGV4dGVuc2lvbnMgYmVzaWRlcworICAgICAgICAvLyBFR0xfQU5HTEVfbWV0YWxfdGV4dHVy
ZV9jbGllbnRfYnVmZmVyCisgICAgICAgIEVYUEVDVF9UUlVFKGhhc09FU0V4dCgpKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoaGFzQmFzZUV4dCgpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGhhc0V4
dGVybmFsRXh0KCkpOworICAgICAgICBFWFBFQ1RfRkFMU0UoaGFzRXh0ZXJuYWxFU1NMM0V4dCgp
KTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGhhczJEVGV4dHVyZUV4dCgpKTsKKyAgICAgICAgRVhQ
RUNUX0ZBTFNFKGhhczNEVGV4dHVyZUV4dCgpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGhhc1Jl
bmRlcmJ1ZmZlckV4dCgpKTsKKyAgICB9CiAgICAgZWxzZQogICAgIHsKICAgICAgICAgRVhQRUNU
X0ZBTFNFKGhhc09FU0V4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9nbF90ZXN0cy9JbWFnZVRlc3RNZXRhbC5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9JbWFnZVRlc3RNZXRhbC5tbQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
NDcyZDY5MjYyODgzZTQyNzQ5Yjk3ZDMzNzYxZmFlNWE2MjJjNmE0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0ltYWdlVGVzdE1l
dGFsLm1tCkBAIC0wLDAgKzEsMzYwIEBACisvLworLy8gQ29weXJpZ2h0IDIwMjEgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gSW1hZ2VUZXN0TWV0YWw6Cisv
LyAgIFRlc3RzIHRoZSBjb3JyZWN0bmVzcyBvZiBlZ2xJbWFnZSB3aXRoIG5hdGl2ZSBNZXRhbCB0
ZXh0dXJlIGV4dGVuc2lvbnMuCisvLworCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3Qu
aCIKKworI2luY2x1ZGUgImNvbW1vbi9tYXRodXRpbC5oIgorI2luY2x1ZGUgInRlc3RfdXRpbHMv
Z2xfcmFpaS5oIgorI2luY2x1ZGUgInV0aWwvRUdMV2luZG93LmgiCisKKyNpbmNsdWRlIDxDb3Jl
Rm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPE1ldGFsL01ldGFsLmg+CisK
K25hbWVzcGFjZSBhbmdsZQoreworbmFtZXNwYWNlCit7Citjb25zdGV4cHIgY2hhciBrT0VTRXh0
W10gICAgICAgICAgICAgICAgICAgICAgPSAiR0xfT0VTX0VHTF9pbWFnZSI7Citjb25zdGV4cHIg
Y2hhciBrQmFzZUV4dFtdICAgICAgICAgICAgICAgICAgICAgPSAiRUdMX0tIUl9pbWFnZV9iYXNl
IjsKK2NvbnN0ZXhwciBjaGFyIGtEZXZpY2VNdGxFeHRbXSAgICAgICAgICAgICAgICA9ICJFR0xf
QU5HTEVfZGV2aWNlX21ldGFsIjsKK2NvbnN0ZXhwciBjaGFyIGtFR0xNdGxJbWFnZU5hdGl2ZVRl
eHR1cmVFeHRbXSA9ICJFR0xfQU5HTEVfbWV0YWxfdGV4dHVyZV9jbGllbnRfYnVmZmVyIjsKK2Nv
bnN0ZXhwciBFR0xpbnQga0RlZmF1bHRBdHRyaWJzW10gICAgICAgICAgICA9IHsKKyAgICBFR0xf
Tk9ORSwKK307Cit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK2NsYXNzIFNjb3BlTWV0YWxU
ZXh0dXJlUmVmIDogYW5nbGU6Ok5vbkNvcHlhYmxlCit7CisgIHB1YmxpYzoKKyAgICBleHBsaWNp
dCBTY29wZU1ldGFsVGV4dHVyZVJlZihpZDxNVExUZXh0dXJlPiBzdXJmYWNlKSA6IG1TdXJmYWNl
KHN1cmZhY2UpIHt9CisKKyAgICB+U2NvcGVNZXRhbFRleHR1cmVSZWYoKQorICAgIHsKKyAgICAg
ICAgaWYgKG1TdXJmYWNlKQorICAgICAgICB7CisgICAgICAgICAgICByZWxlYXNlKCk7CisgICAg
ICAgICAgICBtU3VyZmFjZSA9IG51bGxwdHI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZDxN
VExUZXh0dXJlPiBnZXQoKSBjb25zdCB7IHJldHVybiBtU3VyZmFjZTsgfQorCisgICAgLy8gYXV0
byBjYXN0IHRvIE1UTFRleHR1cmUKKyAgICBvcGVyYXRvciBpZDxNVExUZXh0dXJlPigpIGNvbnN0
IHsgcmV0dXJuIG1TdXJmYWNlOyB9CisgICAgU2NvcGVNZXRhbFRleHR1cmVSZWYoY29uc3QgU2Nv
cGVNZXRhbFRleHR1cmVSZWYgJm90aGVyKQorICAgIHsKKyAgICAgICAgaWYgKG1TdXJmYWNlKQor
ICAgICAgICB7CisgICAgICAgICAgICByZWxlYXNlKCk7CisgICAgICAgIH0KKyAgICAgICAgbVN1
cmZhY2UgPSBvdGhlci5tU3VyZmFjZTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBTY29wZU1ldGFs
VGV4dHVyZVJlZihTY29wZU1ldGFsVGV4dHVyZVJlZiAmJm90aGVyKQorICAgIHsKKyAgICAgICAg
aWYgKG1TdXJmYWNlKQorICAgICAgICB7CisgICAgICAgICAgICByZWxlYXNlKCk7CisgICAgICAg
IH0KKyAgICAgICAgbVN1cmZhY2UgICAgICAgPSBvdGhlci5tU3VyZmFjZTsKKyAgICAgICAgb3Ro
ZXIubVN1cmZhY2UgPSBuaWw7CisgICAgfQorCisgICAgU2NvcGVNZXRhbFRleHR1cmVSZWYgJm9w
ZXJhdG9yPShTY29wZU1ldGFsVGV4dHVyZVJlZiAmJm90aGVyKQorICAgIHsKKyAgICAgICAgaWYg
KG1TdXJmYWNlKQorICAgICAgICB7CisgICAgICAgICAgICByZWxlYXNlKCk7CisgICAgICAgIH0K
KyAgICAgICAgbVN1cmZhY2UgICAgICAgPSBvdGhlci5tU3VyZmFjZTsKKyAgICAgICAgb3RoZXIu
bVN1cmZhY2UgPSBuaWw7CisKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIFNj
b3BlTWV0YWxUZXh0dXJlUmVmICZvcGVyYXRvcj0oY29uc3QgU2NvcGVNZXRhbFRleHR1cmVSZWYg
Jm90aGVyKQorICAgIHsKKyAgICAgICAgaWYgKG1TdXJmYWNlKQorICAgICAgICB7CisgICAgICAg
ICAgICByZWxlYXNlKCk7CisgICAgICAgIH0KKyAgICAgICAgbVN1cmZhY2UgPSBvdGhlci5tU3Vy
ZmFjZTsKKworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgIHByaXZhdGU6CisgICAg
dm9pZCByZWxlYXNlKCkKKyAgICB7CisjaWYgIV9faGFzX2ZlYXR1cmUob2JqY19hcmMpCisgICAg
ICAgIFttU3VyZmFjZSByZWxlYXNlXTsKKyNlbmRpZgorICAgIH0KKworICAgIGlkPE1UTFRleHR1
cmU+IG1TdXJmYWNlID0gbmlsOworfTsKKworU2NvcGVNZXRhbFRleHR1cmVSZWYgQ3JlYXRlTWV0
YWxUZXh0dXJlMkQoaWQ8TVRMRGV2aWNlPiBkZXZpY2VNdGwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTVRMUGl4ZWxGb3JtYXQgZm9ybWF0KQoreworICAgIEBhdXRvcmVs
ZWFzZXBvb2wKKyAgICB7CisgICAgICAgIE1UTFRleHR1cmVEZXNjcmlwdG9yICpkZXNjID0gW01U
TFRleHR1cmVEZXNjcmlwdG9yIHRleHR1cmUyRERlc2NyaXB0b3JXaXRoUGl4ZWxGb3JtYXQ6Zm9y
bWF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6d2lkdGgKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDp3aWR0aAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWlwbWFwcGVkOk5PXTsKKyAgICAgICAgZGVzYy51c2FnZSAgICAgICAgICAgICAgICAg
PSBNVExUZXh0dXJlVXNhZ2VTaGFkZXJSZWFkIHwgTVRMVGV4dHVyZVVzYWdlUmVuZGVyVGFyZ2V0
OworCisgICAgICAgIGlkPE1UTFRleHR1cmU+IHRleHR1cmUgPSBbZGV2aWNlTXRsIG5ld1RleHR1
cmVXaXRoRGVzY3JpcHRvcjpkZXNjXTsKKworICAgICAgICBTY29wZU1ldGFsVGV4dHVyZVJlZiBy
ZSh0ZXh0dXJlKTsKKyAgICAgICAgcmV0dXJuIHJlOworICAgIH0KK30KKworY2xhc3MgSW1hZ2VU
ZXN0TWV0YWwgOiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBJbWFnZVRl
c3RNZXRhbCgpCisgICAgeworICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOworICAgICAgICBz
ZXRXaW5kb3dIZWlnaHQoMTI4KTsKKyAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKKyAgICAg
ICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsK
KyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOworICAgICAgICBzZXRDb25maWdEZXB0aEJp
dHMoMjQpOworICAgIH0KKworICAgIHZvaWQgdGVzdFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIGNvbnN0ZXhwciBjaGFyIGtWU1tdID0gInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXR0cmlidXRlIHZlYzQgcG9zaXRpb247
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhcnlpbmcgdmVjMiB0ZXhjb29y
ZDtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGdsX1Bv
c2l0aW9uID0gcG9zaXRpb247XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAg
ICB0ZXhjb29yZCA9IChwb3NpdGlvbi54eSAqIDAuNSkgKyAwLjU7XG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIiAgICB0ZXhjb29yZC55ID0gMS4wIC0gdGV4Y29vcmQueTtcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifVxuIjsKKworICAgICAgICBjb25zdGV4
cHIgY2hhciBrVGV4dHVyZUZTW10gPSAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQgdGV4O1xu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFyeWluZyB2ZWMyIHRl
eGNvb3JkO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh0ZXgs
IHRleGNvb3JkKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1c
biI7CisKKyAgICAgICAgbVRleHR1cmVQcm9ncmFtID0gQ29tcGlsZVByb2dyYW0oa1ZTLCBrVGV4
dHVyZUZTKTsKKyAgICAgICAgaWYgKG1UZXh0dXJlUHJvZ3JhbSA9PSAwKQorICAgICAgICB7Cisg
ICAgICAgICAgICBGQUlMKCkgPDwgInNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQuIjsKKyAgICAg
ICAgfQorCisgICAgICAgIG1UZXh0dXJlVW5pZm9ybUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9j
YXRpb24obVRleHR1cmVQcm9ncmFtLCAidGV4Iik7CisKKyAgICAgICAgQVNTRVJUX0dMX05PX0VS
Uk9SKCk7CisgICAgfQorCisgICAgdm9pZCB0ZXN0VGVhckRvd24oKSBvdmVycmlkZSB7IGdsRGVs
ZXRlUHJvZ3JhbShtVGV4dHVyZVByb2dyYW0pOyB9CisKKyAgICBpZDxNVExEZXZpY2U+IGdldE10
bERldmljZSgpCisgICAgeworICAgICAgICBFR0xBdHRyaWIgYW5nbGVEZXZpY2UgPSAwOworICAg
ICAgICBFR0xBdHRyaWIgZGV2aWNlICAgICAgPSAwOworICAgICAgICBFWFBFQ1RfRUdMX1RSVUUo
CisgICAgICAgICAgICBlZ2xRdWVyeURpc3BsYXlBdHRyaWJFWFQoZ2V0RUdMV2luZG93KCktPmdl
dERpc3BsYXkoKSwgRUdMX0RFVklDRV9FWFQsICZhbmdsZURldmljZSkpOworCisgICAgICAgIEVY
UEVDVF9FR0xfVFJVRShlZ2xRdWVyeURldmljZUF0dHJpYkVYVChyZWludGVycHJldF9jYXN0PEVH
TERldmljZUVYVD4oYW5nbGVEZXZpY2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRUdMX01FVEFMX0RFVklDRV9BTkdMRSwgJmRldmljZSkpOworCisg
ICAgICAgIHJldHVybiAoX19icmlkZ2UgaWQ8TVRMRGV2aWNlPilyZWludGVycHJldF9jYXN0PHZv
aWQgKj4oZGV2aWNlKTsKKyAgICB9CisKKyAgICBTY29wZU1ldGFsVGV4dHVyZVJlZiBjcmVhdGVN
dGxUZXh0dXJlMkQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBNVExQaXhlbEZvcm1hdCBmb3JtYXQp
CisgICAgeworICAgICAgICBpZDxNVExEZXZpY2U+IGRldmljZSA9IGdldE10bERldmljZSgpOwor
CisgICAgICAgIHJldHVybiBDcmVhdGVNZXRhbFRleHR1cmUyRChkZXZpY2UsIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCk7CisgICAgfQorCisgICAgdm9pZCBzb3VyY2VNZXRhbFRhcmdldDJEX2hlbHBl
cihHTHVieXRlIGRhdGFbNF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBFR0xpbnQgKmF0dHJpYnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBFR0xJbWFnZUtIUiAqaW1hZ2VPdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgKnRleHR1cmVPdXQpOworCisgICAgdm9pZCB2ZXJpZnlSZXN1bHRzVGV4dHVy
ZShHTHVpbnQgdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWJ5dGUg
ZGF0YVs0XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0ZXh0dXJlVGFy
Z2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdGV4dHVyZVVuaWZvcm0pCisgICAgewor
ICAgICAgICAvLyBEcmF3IGEgcXVhZCB3aXRoIHRoZSB0YXJnZXQgdGV4dHVyZQorICAgICAgICBn
bFVzZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgICAgIGdsQmluZFRleHR1cmUodGV4dHVyZVRhcmdl
dCwgdGV4dHVyZSk7CisgICAgICAgIGdsVW5pZm9ybTFpKHRleHR1cmVVbmlmb3JtLCAwKTsKKwor
ICAgICAgICBkcmF3UXVhZChwcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKworICAgICAgICAv
LyBFeHBlY3QgdGhhdCB0aGUgcmVuZGVyZWQgcXVhZCBoYXMgdGhlIHNhbWUgY29sb3IgYXMgdGhl
IHNvdXJjZSB0ZXh0dXJlCisgICAgICAgIEVYUEVDVF9QSVhFTF9ORUFSKDAsIDAsIGRhdGFbMF0s
IGRhdGFbMV0sIGRhdGFbMl0sIGRhdGFbM10sIDEuMCk7CisgICAgfQorCisgICAgdm9pZCB2ZXJp
ZnlSZXN1bHRzMkQoR0x1aW50IHRleHR1cmUsIEdMdWJ5dGUgZGF0YVs0XSkKKyAgICB7CisgICAg
ICAgIHZlcmlmeVJlc3VsdHNUZXh0dXJlKHRleHR1cmUsIGRhdGEsIEdMX1RFWFRVUkVfMkQsIG1U
ZXh0dXJlUHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVRleHR1cmVVbmlm
b3JtTG9jYXRpb24pOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBkZXN0VHlwZSwg
dHlwZW5hbWUgc291cmNldHlwZT4KKyAgICBkZXN0VHlwZSByZWludGVycHJldEhlbHBlcihzb3Vy
Y2V0eXBlIHNvdXJjZSkKKyAgICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRlc3RU
eXBlKSA9PSBzaXplb2Yoc2l6ZV90KSwKKyAgICAgICAgICAgICAgICAgICAgICAiZGVzdFR5cGUg
c2hvdWxkIGJlIHRoZSBzYW1lIHNpemUgYXMgYSBzaXplX3QiKTsKKyAgICAgICAgc2l6ZV90IHNv
dXJjZVNpemVUID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihzb3VyY2UpOworICAgICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxkZXN0VHlwZT4oc291cmNlU2l6ZVQpOworICAgIH0KKworICAgIGJv
b2wgaGFzSW1hZ2VOYXRpdmVNZXRhbFRleHR1cmVFeHQoKSBjb25zdAorICAgIHsKKyAgICAgICAg
aWYgKCFJc01ldGFsKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorICAgICAgICBFR0xBdHRyaWIgYW5nbGVEZXZpY2UgPSAwOworICAgICAgICBlZ2xR
dWVyeURpc3BsYXlBdHRyaWJFWFQoZ2V0RUdMV2luZG93KCktPmdldERpc3BsYXkoKSwgRUdMX0RF
VklDRV9FWFQsICZhbmdsZURldmljZSk7CisgICAgICAgIGlmICghYW5nbGVEZXZpY2UpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBhdXRv
IGV4dGVuc2lvblN0cmluZyA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIgKj4oCisgICAgICAgICAg
ICBlZ2xRdWVyeURldmljZVN0cmluZ0VYVChyZWludGVycHJldF9jYXN0PEVHTERldmljZUVYVD4o
YW5nbGVEZXZpY2UpLCBFR0xfRVhURU5TSU9OUykpOworICAgICAgICBpZiAoc3Ryc3RyKGV4dGVu
c2lvblN0cmluZywga0RldmljZU10bEV4dCkgPT0gbnVsbHB0cikKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBJc0VHTERpc3Bs
YXlFeHRlbnNpb25FbmFibGVkKGdldEVHTFdpbmRvdygpLT5nZXREaXNwbGF5KCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtFR0xNdGxJbWFnZU5hdGl2ZVRl
eHR1cmVFeHQpOworICAgIH0KKworICAgIGJvb2wgaGFzT0VTRXh0KCkgY29uc3QgeyByZXR1cm4g
SXNHTEV4dGVuc2lvbkVuYWJsZWQoa09FU0V4dCk7IH0KKworICAgIGJvb2wgaGFzQmFzZUV4dCgp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gSXNFR0xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxl
ZChnZXRFR0xXaW5kb3coKS0+Z2V0RGlzcGxheSgpLCBrQmFzZUV4dCk7CisgICAgfQorCisgICAg
R0x1aW50IG1UZXh0dXJlUHJvZ3JhbTsKKyAgICBHTGludCBtVGV4dHVyZVVuaWZvcm1Mb2NhdGlv
bjsKK307CisKK3ZvaWQgSW1hZ2VUZXN0TWV0YWw6OnNvdXJjZU1ldGFsVGFyZ2V0MkRfaGVscGVy
KEdMdWJ5dGUgZGF0YVs0XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEVHTGludCAqYXR0cmlicywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEVHTEltYWdlS0hSICppbWFnZU91dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqdGV4dHVyZU91
dCkKK3sKKyAgICBFR0xXaW5kb3cgKndpbmRvdyA9IGdldEVHTFdpbmRvdygpOworCisgICAgLy8g
Q3JlYXRlIE1UTFRleHR1cmUKKyAgICBTY29wZU1ldGFsVGV4dHVyZVJlZiB0ZXh0dXJlTXRsID0g
Y3JlYXRlTXRsVGV4dHVyZTJEKDEsIDEsIE1UTFBpeGVsRm9ybWF0UkdCQThVbm9ybSk7CisKKyAg
ICAvLyBDcmVhdGUgaW1hZ2UKKyAgICBFR0xJbWFnZUtIUiBpbWFnZSA9CisgICAgICAgIGVnbENy
ZWF0ZUltYWdlS0hSKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCBFR0xfTk9fQ09OVEVYVCwgRUdMX01F
VEFMX1RFWFRVUkVfQU5HTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8RUdMQ2xpZW50QnVmZmVyPih0ZXh0dXJlTXRsLmdldCgpKSwgYXR0cmlicyk7CisgICAg
QVNTRVJUX0VHTF9TVUNDRVNTKCk7CisKKyAgICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0aGUgTVRM
VGV4dHVyZQorICAgIFt0ZXh0dXJlTXRsLmdldCgpIHJlcGxhY2VSZWdpb246TVRMUmVnaW9uTWFr
ZTJEKDAsIDAsIDEsIDEpCisgICAgICAgICAgICAgICAgICAgICAgICBtaXBtYXBMZXZlbDowCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGljZTowCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdpdGhCeXRlczpkYXRhCisgICAgICAgICAgICAgICAgICAgICAgICBieXRlc1BlclJv
dzo0CisgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNQZXJJbWFnZTowXTsKKworICAgIC8vIENy
ZWF0ZSBhIHRleHR1cmUgdGFyZ2V0IHRvIGJpbmQgdGhlIGVnbCBpbWFnZQorICAgIEdMdWludCB0
YXJnZXQ7CisgICAgZ2xHZW5UZXh0dXJlcygxLCAmdGFyZ2V0KTsKKyAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfMkQsIHRhcmdldCk7CisgICAgZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9F
UyhHTF9URVhUVVJFXzJELCBpbWFnZSk7CisKKyAgICAqaW1hZ2VPdXQgICA9IGltYWdlOworICAg
ICp0ZXh0dXJlT3V0ID0gdGFyZ2V0OworfQorCisvLyBUZXN0aW5nIHNvdXJjZSBtZXRhbCBFR0wg
aW1hZ2UsIHRhcmdldCAyRCB0ZXh0dXJlCitURVNUX1AoSW1hZ2VUZXN0TWV0YWwsIFNvdXJjZU1l
dGFsVGFyZ2V0MkQpCit7CisgICAgQU5HTEVfU0tJUF9URVNUX0lGKCFoYXNPRVNFeHQoKSB8fCAh
aGFzQmFzZUV4dCgpKTsKKyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoIWhhc0ltYWdlTmF0aXZlTWV0
YWxUZXh0dXJlRXh0KCkpOworCisgICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3co
KTsKKworICAgIC8vIENyZWF0ZSB0aGUgSW1hZ2UKKyAgICBFR0xJbWFnZUtIUiBpbWFnZTsKKyAg
ICBHTHVpbnQgdGV4VGFyZ2V0OworICAgIEdMdWJ5dGUgZGF0YVs0XSA9IHs3LCA1MSwgMTk3LCAy
MzF9OworICAgIHNvdXJjZU1ldGFsVGFyZ2V0MkRfaGVscGVyKGRhdGEsIGtEZWZhdWx0QXR0cmli
cywgJmltYWdlLCAmdGV4VGFyZ2V0KTsKKworICAgIC8vIFVzZSB0ZXh0dXJlIHRhcmdldCBib3Vu
ZCB0byBlZ2wgaW1hZ2UgYXMgc291cmNlIGFuZCByZW5kZXIgdG8gZnJhbWVidWZmZXIKKyAgICAv
LyBWZXJpZnkgdGhhdCBkYXRhIGluIGZyYW1lYnVmZmVyIG1hdGNoZXMgdGhhdCBpbiB0aGUgZWds
IGltYWdlCisgICAgdmVyaWZ5UmVzdWx0czJEKHRleFRhcmdldCwgZGF0YSk7CisKKyAgICAvLyBD
bGVhbiB1cAorICAgIGVnbERlc3Ryb3lJbWFnZUtIUih3aW5kb3ctPmdldERpc3BsYXkoKSwgaW1h
Z2UpOworICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRleFRhcmdldCk7Cit9CisKKy8vIENyZWF0
ZSBzb3VyY2UgbWV0YWwgRUdMIGltYWdlLCB0YXJnZXQgMkQgdGV4dHVyZSwgdGhlbiB0cmlnZ2Vy
IHRleHR1cmUgcmVzcGVjaWZpY2F0aW9uLgorVEVTVF9QKEltYWdlVGVzdE1ldGFsLCBTb3VyY2VN
ZXRhbDJEVGFyZ2V0VGV4dHVyZVJlc3BlY2lmeVNpemUpCit7CisgICAgQU5HTEVfU0tJUF9URVNU
X0lGKCFoYXNPRVNFeHQoKSB8fCAhaGFzQmFzZUV4dCgpKTsKKyAgICBBTkdMRV9TS0lQX1RFU1Rf
SUYoIWhhc0ltYWdlTmF0aXZlTWV0YWxUZXh0dXJlRXh0KCkpOworCisgICAgRUdMV2luZG93ICp3
aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKKworICAgIC8vIENyZWF0ZSB0aGUgSW1hZ2UKKyAgICBF
R0xJbWFnZUtIUiBpbWFnZTsKKyAgICBHTHVpbnQgdGV4VGFyZ2V0OworICAgIEdMdWJ5dGUgZGF0
YVs0XSA9IHs3LCA1MSwgMTk3LCAyMzF9OworICAgIHNvdXJjZU1ldGFsVGFyZ2V0MkRfaGVscGVy
KGRhdGEsIGtEZWZhdWx0QXR0cmlicywgJmltYWdlLCAmdGV4VGFyZ2V0KTsKKworICAgIC8vIFVz
ZSB0ZXh0dXJlIHRhcmdldCBib3VuZCB0byBlZ2wgaW1hZ2UgYXMgc291cmNlIGFuZCByZW5kZXIg
dG8gZnJhbWVidWZmZXIKKyAgICAvLyBWZXJpZnkgdGhhdCBkYXRhIGluIGZyYW1lYnVmZmVyIG1h
dGNoZXMgdGhhdCBpbiB0aGUgZWdsIGltYWdlCisgICAgdmVyaWZ5UmVzdWx0czJEKHRleFRhcmdl
dCwgZGF0YSk7CisKKyAgICAvLyBSZXNwZWNpZnkgdGV4dHVyZSBzaXplIGFuZCB2ZXJpZnkgcmVz
dWx0cworICAgIHN0ZDo6YXJyYXk8R0x1Ynl0ZSwgMTY+IHJlZmVyZW5jZUNvbG9yOworICAgIHJl
ZmVyZW5jZUNvbG9yLmZpbGwoMTI3KTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQs
IHRleFRhcmdldCk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEs
IDIsIDIsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgIHJl
ZmVyZW5jZUNvbG9yLmRhdGEoKSk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDEs
IEdMX1JHQkEsIDEsIDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAg
ICAgICAgIHJlZmVyZW5jZUNvbG9yLmRhdGEoKSk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
CisKKyAgICAvLyBFeHBlY3QgdGhhdCB0aGUgdGFyZ2V0IHRleHR1cmUgaGFzIHRoZSByZWZlcmVu
Y2UgY29sb3IgdmFsdWVzCisgICAgdmVyaWZ5UmVzdWx0czJEKHRleFRhcmdldCwgcmVmZXJlbmNl
Q29sb3IuZGF0YSgpKTsKKworICAgIC8vIENsZWFuIHVwCisgICAgZWdsRGVzdHJveUltYWdlS0hS
KHdpbmRvdy0+Z2V0RGlzcGxheSgpLCBpbWFnZSk7CisgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAm
dGV4VGFyZ2V0KTsKK30KKworLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRp
b25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNl
CisvLyB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCitBTkdMRV9JTlNUQU5USUFURV9URVNU
KEltYWdlVGVzdE1ldGFsLCBFUzJfTUVUQUwoKSwgRVMzX01FVEFMKCkpOworCitHVEVTVF9BTExP
V19VTklOU1RBTlRJQVRFRF9QQVJBTUVURVJJWkVEX1RFU1QoSW1hZ2VUZXN0TWV0YWwpOworfSAg
Ly8gbmFtZXNwYWNlIGFuZ2xlCg==
</data>
<flag name="review"
          id="453828"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>