<?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>167418</bug_id>
          
          <creation_ts>2017-01-25 06:33:35 -0800</creation_ts>
          <short_desc>[css-grid] Move Grid class out of RenderGrid</short_desc>
          <delta_ts>2017-01-27 08:29:55 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sergio Villar Senin">svillar</reporter>
          <assigned_to name="Sergio Villar Senin">svillar</assigned_to>
          <cc>achristensen</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jfernandez</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rego</cc>
    
    <cc>wenson_hsieh</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1269803</commentid>
    <comment_count>0</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2017-01-25 06:33:35 -0800</bug_when>
    <thetext>[css-grid] Move Grid class out of RenderGrid</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270632</commentid>
    <comment_count>1</comment_count>
      <attachid>299931</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2017-01-27 07:02:58 -0800</bug_when>
    <thetext>Created attachment 299931
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270646</commentid>
    <comment_count>2</comment_count>
      <attachid>299931</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-01-27 08:23:44 -0800</bug_when>
    <thetext>Comment on attachment 299931
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270649</commentid>
    <comment_count>3</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2017-01-27 08:29:55 -0800</bug_when>
    <thetext>Committed r211283: &lt;http://trac.webkit.org/changeset/211283&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299931</attachid>
            <date>2017-01-27 07:02:58 -0800</date>
            <delta_ts>2017-01-27 08:23:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167418-20170127160052.patch</filename>
            <type>text/plain</type>
            <size>36437</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExMjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2U2NWVkM2UwMzIxYWI2
NTc5MWE2MTE1NjQ5ZDE0NTdlYzYzOGI4YS4uZDhlNDU2ZjFkYzQ1NjlkZWRhMjhjYzQwOTQ1YjU2
MzJkZmI4ZDhjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE3LTAxLTI1ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtjc3MtZ3Jp
ZF0gTW92ZSBHcmlkIGNsYXNzIG91dCBvZiBSZW5kZXJHcmlkCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjc0MTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgUmVuZGVyR3JpZCBzaG91bGQgYmUgYWJs
ZSB0byB1c2UgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBvZgorICAgICAgICB0aGUgR3JpZCBj
bGFzcy4gVGhlIGxhdHRlciBpcyBiaWcgZW5vdWdoIHRvIGJlIGluIGl0cyBvd24gZmlsZS4gVGhh
dAorICAgICAgICB3b3VsZCBoZWxwIG9uIHRoZSBlZmZvcnQgb2YgbW92aW5nIHRoZSBncmlkIHRy
YWNrIHNpemluZyBhbGdvcml0aG0KKyAgICAgICAgb3V0IG9mIFJlbmRlckdyaWQgdG9vLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cyByZXF1aXJlZCBhcyB3ZSdyZSBqdXN0IG1vdmluZyBjb2RlLgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogcmVuZGVyaW5nL0dyaWQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyaWQ6OkdyaWQpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JpZDo6bnVtVHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWQ6OmVuc3VyZUdyaWRT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWQ6Omluc2VydCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmlkOjpzZXRTbWFsbGVzdFRyYWNrc1N0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWQ6
OnNtYWxsZXN0VHJhY2tTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkOjpncmlkSXRlbUFy
ZWEpOgorICAgICAgICAoV2ViQ29yZTo6R3JpZDo6c2V0R3JpZEl0ZW1BcmVhKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyaWQ6OnNldEF1dG9SZXBlYXRUcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6
R3JpZDo6YXV0b1JlcGVhdFRyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkOjpzZXRBdXRv
UmVwZWF0RW1wdHlDb2x1bW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWQ6OnNldEF1dG9SZXBl
YXRFbXB0eVJvd3MpOgorICAgICAgICAoV2ViQ29yZTo6R3JpZDo6aGFzQXV0b1JlcGVhdEVtcHR5
VHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWQ6OmlzRW1wdHlBdXRvUmVwZWF0VHJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6R3JpZDo6YXV0b1JlcGVhdEVtcHR5VHJhY2tzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyaWQ6OmdyaWRJdGVtU3Bhbik6CisgICAgICAgIChXZWJDb3JlOjpHcmlk
OjpzZXROZWVkc0l0ZW1zUGxhY2VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRJdGVyYXRv
cjo6R3JpZEl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRJdGVyYXRvcjo6bmV4dEdy
aWRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRJdGVyYXRvcjo6aXNFbXB0eUFyZWFFbm91
Z2gpOgorICAgICAgICAoV2ViQ29yZTo6R3JpZEl0ZXJhdG9yOjpuZXh0RW1wdHlHcmlkQXJlYSk6
CisgICAgICAgICogcmVuZGVyaW5nL0dyaWQuaDogQWRkZWQuCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZUVt
cHR5VHJhY2tzRm9yQXV0b1JlcGVhdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpH
cmlkOjpudW1UcmFja3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6
R3JpZDo6ZW5zdXJlR3JpZFNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
R3JpZDo6R3JpZDo6aW5zZXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdy
aWQ6OkdyaWQ6OnNldFNtYWxsZXN0VHJhY2tzU3RhcnQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyR3JpZDo6R3JpZDo6c21hbGxlc3RUcmFja1N0YXJ0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OkdyaWQ6OmdyaWRJdGVtQXJlYSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpHcmlkOjpzZXRHcmlkSXRlbUFyZWEpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6R3JpZDo6c2V0QXV0b1JlcGVh
dFRyYWNrcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpHcmlkOjph
dXRvUmVwZWF0VHJhY2tzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6
OkdyaWQ6OnNldEF1dG9SZXBlYXRFbXB0eUNvbHVtbnMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyR3JpZDo6R3JpZDo6c2V0QXV0b1JlcGVhdEVtcHR5Um93cyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpHcmlkOjpoYXNBdXRvUmVwZWF0RW1wdHlU
cmFja3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6R3JpZDo6aXNF
bXB0eUF1dG9SZXBlYXRUcmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJH
cmlkOjpHcmlkOjphdXRvUmVwZWF0RW1wdHlUcmFja3MpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyR3JpZDo6R3JpZDo6Z3JpZEl0ZW1TcGFuKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckdyaWQ6OkdyaWQ6OnNldE5lZWRzSXRlbXNQbGFjZW1lbnQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6R3JpZEl0ZXJhdG9yOjpHcmlkSXRl
cmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6R3JpZEl0ZXJh
dG9yOjpuZXh0R3JpZEl0ZW0pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3Jp
ZDo6R3JpZEl0ZXJhdG9yOjppc0VtcHR5QXJlYUVub3VnaCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJHcmlkOjpHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKTogRGVs
ZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5oOgorCiAyMDE3LTAxLTI2ICBB
bnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgW01vZGVybiBNZWRp
YSBDb250cm9sc10gSGlkaW5nIGNvbnRyb2xzLCBjaGFuZ2luZyB0aGVpciB3aWR0aCBhbmQgc2hv
d2luZyB0aGVtIGFnYWluIHNob3dzIGFuIGluY29ycmVjdCBsYXlvdXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKaW5kZXggOTRjN2M1Zjk4YjZiZjM3YzE2ODY1ZDAxMjAxNmI4Yjk2ZjY0MTJmMS4uZjk4OWZk
MWVhMWNjMmQ2YWViNzhlYjg1YTQwMGE3ZjNiZTgyMTJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
QEAgLTIzNjEsNiArMjM2MSw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICByZW5kZXJpbmcv
Rml4ZWRUYWJsZUxheW91dC5jcHAKICAgICByZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcAog
ICAgIHJlbmRlcmluZy9GbG93VGhyZWFkQ29udHJvbGxlci5jcHAKKyAgICByZW5kZXJpbmcvR3Jp
ZC5jcHAKICAgICByZW5kZXJpbmcvSGl0VGVzdExvY2F0aW9uLmNwcAogICAgIHJlbmRlcmluZy9I
aXRUZXN0UmVzdWx0LmNwcAogICAgIHJlbmRlcmluZy9IaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggY2MyNzc5ZWUwMGM0ODNhYmQzZDZmZTcyYjc2ZTAyNDRlMDVhNWE1Mi4uNDBmMDZj
OGQ4MTQ2MDkzNTVjZDljZmI2NjlkNGQ5ZTkxNTQ3MzBiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjA5Nyw2ICs2MDk3LDgg
QEAKIAkJRTEwQjlCNkQwQjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNvbHZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTBCOUI2
QjBCNzQ3NTk5MDAzRUQ4OTAgLyogTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmNwcCAqLzsgfTsKIAkJ
RTExMDAzMzAxQzlBQzNERTAwNDEyREQwIC8qIENTU0dyaWRBdXRvUmVwZWF0VmFsdWUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTExMDAzMkUxQzlB
QzNERTAwNDEyREQwIC8qIENTU0dyaWRBdXRvUmVwZWF0VmFsdWUuY3BwICovOyB9OwogCQlFMTEw
MDMzMTFDOUFDM0RFMDA0MTJERDAgLyogQ1NTR3JpZEF1dG9SZXBlYXRWYWx1ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTExMDAzMkYxQzlBQzNERTAw
NDEyREQwIC8qIENTU0dyaWRBdXRvUmVwZWF0VmFsdWUuaCAqLzsgfTsKKwkJRTExMkY0NzExRTNB
ODYxMjAwRDZDREZEIC8qIEdyaWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTExMkY0NzAxRTNBODVGMjAwRDZDREZEIC8qIEdyaWQuY3BwICovOyB9
OworCQlFMTEyRjQ3MjFFM0E4NjE2MDBENkNERkQgLyogR3JpZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTExMkY0NkYxRTNBODVEODAwRDZDREZEIC8q
IEdyaWQuaCAqLzsgfTsKIAkJRTExQUYxNTExMUI5QTFBMzAwODA1MTAzIC8qIEN1cnNvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTFBRjE1MDEx
QjlBMUEzMDA4MDUxMDMgLyogQ3Vyc29yLmNwcCAqLzsgfTsKIAkJRTExQzlEOUIwRUIzNjgxMjAw
RTQwOURCIC8qIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMUM5RDlBMEVCMzY4MTIwMEU0MDlEQiAvKiBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRTExQzlEQjAwRUIzNjk5NTAwRTQwOURCIC8qIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTExQzlEQUYwRUIzNjk5NTAwRTQwOURCIC8qIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3Bw
ICovOyB9OwpAQCAtMTQxMjEsNiArMTQxMjMsOCBAQAogCQlFMTBCOUI2QjBCNzQ3NTk5MDAzRUQ4
OTAgLyogTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE5hdGl2ZVhQYXRoTlNSZXNvbHZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUxMTAwMzJFMUM5QUMzREUwMDQxMkREMCAvKiBDU1NHcmlkQXV0b1JlcGVh
dFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU0dyaWRB
dXRvUmVwZWF0VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTEwMDMy
RjFDOUFDM0RFMDA0MTJERDAgLyogQ1NTR3JpZEF1dG9SZXBlYXRWYWx1ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NHcmlkQXV0b1JlcGVhdFZhbHVlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxMTJGNDZGMUUzQTg1RDgwMEQ2Q0RGRCAvKiBHcmlkLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyaWQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTExMkY0NzAxRTNBODVGMjAwRDZDREZEIC8qIEdyaWQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JpZC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUxMUFGMTUwMTFCOUExQTMwMDgwNTEwMyAvKiBDdXJzb3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3Vyc29yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTExQzlEOUEwRUIzNjgxMjAwRTQwOURCIC8qIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTFDOURB
RjBFQjM2OTk1MDBFNDA5REIgLyogU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzNzc4LDYgKzIzNzgyLDggQEAKIAkJCQlE
NzJGNkQ3NzE1MzE1OUEzMDAxRUU0NEUgLyogRmxvd1RocmVhZENvbnRyb2xsZXIuY3BwICovLAog
CQkJCUQ3MkY2RDc4MTUzMTU5QTMwMDFFRTQ0RSAvKiBGbG93VGhyZWFkQ29udHJvbGxlci5oICov
LAogCQkJCTkzNUM0Nzc0MDlBQzREOEQwMEE2QUFCNCAvKiBHYXBSZWN0cy5oICovLAorCQkJCUUx
MTJGNDcwMUUzQTg1RjIwMEQ2Q0RGRCAvKiBHcmlkLmNwcCAqLywKKwkJCQlFMTEyRjQ2RjFFM0E4
NUQ4MDBENkNERkQgLyogR3JpZC5oICovLAogCQkJCTQ5NjlCMEYwMTNEMEIzM0YwMERGMzUyMSAv
KiBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUuY3BwICovLAogCQkJCTQ5NjlCMEYxMTNEMEIzM0Yw
MERGMzUyMSAvKiBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUuaCAqLywKIAkJCQkyRDgyODdGNDE2
RTRBMDM4MDA4NkJEMDAgLyogSGl0VGVzdExvY2F0aW9uLmNwcCAqLywKQEAgLTI1ODI3LDYgKzI1
ODMzLDcgQEAKIAkJCQlDRUMzMzdBRjFBNDYwODZEMDA5Qjg1MjMgLyogR3JhcGhpY3NTZXJ2aWNl
c1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJBMDE1QUIwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdy
YXBoaWNzVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTc3QTE3QTdCMTJGMjg5MEIwMDRFMDJG
NiAvKiBHcmFwaGljc1R5cGVzM0QuaCBpbiBIZWFkZXJzICovLAorCQkJCUUxMTJGNDcyMUUzQTg2
MTYwMEQ2Q0RGRCAvKiBHcmlkLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDNFMjUxQzE4MDQ2QjA2
MDBFMjdGNTYgLyogR3JpZEFyZWEuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERUY0RkQ3MTdFODVD
OEYwMEFFRTI0QiAvKiBHcmlkTGVuZ3RoLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTI3MDVDMzE2
NTZCRDY1MDBDMkUyN0MgLyogR3JpZFBvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTI5NjE1
LDYgKzI5NjIyLDcgQEAKIAkJCQk0OTlCM0VENjEyOENEMzE0MDBFNzI2QzIgLyogR3JhcGhpY3NM
YXllckNBLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQTI0RDc5MTYyREY5MTkwMEEzRjRDMCAv
KiBHcmFwaGljc0xheWVyVXBkYXRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkEwMTVBQTBB
RjZDRDUzMDA2QkNFMEUgLyogR3JhcGhpY3NUeXBlcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlF
MTEyRjQ3MTFFM0E4NjEyMDBENkNERkQgLyogR3JpZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlD
REY3NDgzRTE4RkVCQ0VDMDAwNkVDQzAgLyogR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUY1NUIzREJGMTI1MUYxMkQwMDNFRjI2OSAvKiBIaWRkZW5JbnB1dFR5
cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE1QkUxOUIxRDU0RjZDMTAwREQ3QzY4IC8qIEhJ
REdhbWVwYWQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjU2YjU4ZDgxMTUxZDU3YjY4OThkZDI1OWI5MmU1ODU3NDM4YTQ0NQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcApAQCAtMCwwICsx
LDI0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2FsaWEgUy5MLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiR3JpZC5oIgorCisjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKKworI2luY2x1
ZGUgIkdyaWRBcmVhLmgiCisjaW5jbHVkZSAiUmVuZGVyR3JpZC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0dyaWQ6OkdyaWQoUmVuZGVyR3JpZCYgZ3JpZCkKKyAgICA6IG1fb3JkZXJJdGVy
YXRvcihncmlkKQoreworfQorCit1bnNpZ25lZCBHcmlkOjpudW1UcmFja3MoR3JpZFRyYWNrU2l6
aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKK3sKKyAgICBpZiAoZGlyZWN0aW9uID09IEZv
clJvd3MpCisgICAgICAgIHJldHVybiBtX2dyaWQuc2l6ZSgpOworICAgIHJldHVybiBtX2dyaWQu
c2l6ZSgpID8gbV9ncmlkWzBdLnNpemUoKSA6IDA7Cit9CisKK3ZvaWQgR3JpZDo6ZW5zdXJlR3Jp
ZFNpemUodW5zaWduZWQgbWF4aW11bVJvd1NpemUsIHVuc2lnbmVkIG1heGltdW1Db2x1bW5TaXpl
KQoreworICAgIGNvbnN0IHNpemVfdCBvbGRDb2x1bW5TaXplID0gbnVtVHJhY2tzKEZvckNvbHVt
bnMpOworICAgIGNvbnN0IHNpemVfdCBvbGRSb3dTaXplID0gbnVtVHJhY2tzKEZvclJvd3MpOwor
ICAgIGlmIChtYXhpbXVtUm93U2l6ZSA+IG9sZFJvd1NpemUpIHsKKyAgICAgICAgbV9ncmlkLmdy
b3cobWF4aW11bVJvd1NpemUpOworICAgICAgICBmb3IgKHNpemVfdCByb3cgPSBvbGRSb3dTaXpl
OyByb3cgPCBtYXhpbXVtUm93U2l6ZTsgKytyb3cpCisgICAgICAgICAgICBtX2dyaWRbcm93XS5n
cm93KG9sZENvbHVtblNpemUpOworICAgIH0KKworICAgIGlmIChtYXhpbXVtQ29sdW1uU2l6ZSA+
IG9sZENvbHVtblNpemUpIHsKKyAgICAgICAgZm9yIChzaXplX3Qgcm93ID0gMDsgcm93IDwgbnVt
VHJhY2tzKEZvclJvd3MpOyArK3JvdykKKyAgICAgICAgICAgIG1fZ3JpZFtyb3ddLmdyb3cobWF4
aW11bUNvbHVtblNpemUpOworICAgIH0KK30KKwordm9pZCBHcmlkOjppbnNlcnQoUmVuZGVyQm94
JiBjaGlsZCwgY29uc3QgR3JpZEFyZWEmIGFyZWEpCit7CisgICAgQVNTRVJUKGFyZWEucm93cy5p
c1RyYW5zbGF0ZWREZWZpbml0ZSgpICYmIGFyZWEuY29sdW1ucy5pc1RyYW5zbGF0ZWREZWZpbml0
ZSgpKTsKKyAgICBlbnN1cmVHcmlkU2l6ZShhcmVhLnJvd3MuZW5kTGluZSgpLCBhcmVhLmNvbHVt
bnMuZW5kTGluZSgpKTsKKworICAgIGZvciAoY29uc3QgYXV0byYgcm93IDogYXJlYS5yb3dzKSB7
CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgY29sdW1uIDogYXJlYS5jb2x1bW5zKQorICAgICAg
ICAgICAgbV9ncmlkW3Jvd11bY29sdW1uXS5hcHBlbmQoJmNoaWxkKTsKKyAgICB9CisKKyAgICBz
ZXRHcmlkSXRlbUFyZWEoY2hpbGQsIGFyZWEpOworfQorCit2b2lkIEdyaWQ6OnNldFNtYWxsZXN0
VHJhY2tzU3RhcnQoaW50IHJvd1N0YXJ0LCBpbnQgY29sdW1uU3RhcnQpCit7CisgICAgbV9zbWFs
bGVzdFJvd1N0YXJ0ID0gcm93U3RhcnQ7CisgICAgbV9zbWFsbGVzdENvbHVtblN0YXJ0ID0gY29s
dW1uU3RhcnQ7Cit9CisKK2ludCBHcmlkOjpzbWFsbGVzdFRyYWNrU3RhcnQoR3JpZFRyYWNrU2l6
aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKK3sKKyAgICByZXR1cm4gZGlyZWN0aW9uID09
IEZvclJvd3MgPyBtX3NtYWxsZXN0Um93U3RhcnQgOiBtX3NtYWxsZXN0Q29sdW1uU3RhcnQ7Cit9
CisKK0dyaWRBcmVhIEdyaWQ6OmdyaWRJdGVtQXJlYShjb25zdCBSZW5kZXJCb3gmIGl0ZW0pIGNv
bnN0Cit7CisgICAgQVNTRVJUKG1fZ3JpZEl0ZW1BcmVhLmNvbnRhaW5zKCZpdGVtKSk7CisgICAg
cmV0dXJuIG1fZ3JpZEl0ZW1BcmVhLmdldCgmaXRlbSk7Cit9CisKK3ZvaWQgR3JpZDo6c2V0R3Jp
ZEl0ZW1BcmVhKGNvbnN0IFJlbmRlckJveCYgaXRlbSwgR3JpZEFyZWEgYXJlYSkKK3sKKyAgICBt
X2dyaWRJdGVtQXJlYS5zZXQoJml0ZW0sIGFyZWEpOworfQorCit2b2lkIEdyaWQ6OnNldEF1dG9S
ZXBlYXRUcmFja3ModW5zaWduZWQgYXV0b1JlcGVhdFJvd3MsIHVuc2lnbmVkIGF1dG9SZXBlYXRD
b2x1bW5zKQoreworICAgIG1fYXV0b1JlcGVhdFJvd3MgPSBhdXRvUmVwZWF0Um93czsKKyAgICBt
X2F1dG9SZXBlYXRDb2x1bW5zID0gIGF1dG9SZXBlYXRDb2x1bW5zOworfQorCit1bnNpZ25lZCBH
cmlkOjphdXRvUmVwZWF0VHJhY2tzKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24p
IGNvbnN0Cit7CisgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBGb3JSb3dzID8gbV9hdXRvUmVwZWF0
Um93cyA6IG1fYXV0b1JlcGVhdENvbHVtbnM7Cit9CisKK3ZvaWQgR3JpZDo6c2V0QXV0b1JlcGVh
dEVtcHR5Q29sdW1ucyhzdGQ6OnVuaXF1ZV9wdHI8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+IGF1dG9S
ZXBlYXRFbXB0eUNvbHVtbnMpCit7CisgICAgbV9hdXRvUmVwZWF0RW1wdHlDb2x1bW5zID0gV1RG
TW92ZShhdXRvUmVwZWF0RW1wdHlDb2x1bW5zKTsKK30KKwordm9pZCBHcmlkOjpzZXRBdXRvUmVw
ZWF0RW1wdHlSb3dzKHN0ZDo6dW5pcXVlX3B0cjxPcmRlcmVkVHJhY2tJbmRleFNldD4gYXV0b1Jl
cGVhdEVtcHR5Um93cykKK3sKKyAgICBtX2F1dG9SZXBlYXRFbXB0eVJvd3MgPSBXVEZNb3ZlKGF1
dG9SZXBlYXRFbXB0eVJvd3MpOworfQorCitib29sIEdyaWQ6Omhhc0F1dG9SZXBlYXRFbXB0eVRy
YWNrcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAoreworICAgIHJl
dHVybiBkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/ICEhbV9hdXRvUmVwZWF0RW1wdHlDb2x1bW5z
IDogISFtX2F1dG9SZXBlYXRFbXB0eVJvd3M7Cit9CisKK2Jvb2wgR3JpZDo6aXNFbXB0eUF1dG9S
ZXBlYXRUcmFjayhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCB1bnNpZ25lZCBs
aW5lKSBjb25zdAoreworICAgIEFTU0VSVChoYXNBdXRvUmVwZWF0RW1wdHlUcmFja3MoZGlyZWN0
aW9uKSk7CisgICAgcmV0dXJuIGF1dG9SZXBlYXRFbXB0eVRyYWNrcyhkaXJlY3Rpb24pLT5jb250
YWlucyhsaW5lKTsKK30KKworT3JkZXJlZFRyYWNrSW5kZXhTZXQqIEdyaWQ6OmF1dG9SZXBlYXRF
bXB0eVRyYWNrcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAorewor
ICAgIEFTU0VSVChoYXNBdXRvUmVwZWF0RW1wdHlUcmFja3MoZGlyZWN0aW9uKSk7CisgICAgcmV0
dXJuIGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gbV9hdXRvUmVwZWF0RW1wdHlDb2x1bW5zLmdl
dCgpIDogbV9hdXRvUmVwZWF0RW1wdHlSb3dzLmdldCgpOworfQorCitHcmlkU3BhbiBHcmlkOjpn
cmlkSXRlbVNwYW4oY29uc3QgUmVuZGVyQm94JiBncmlkSXRlbSwgR3JpZFRyYWNrU2l6aW5nRGly
ZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKK3sKKyAgICBHcmlkQXJlYSBhcmVhID0gZ3JpZEl0ZW1B
cmVhKGdyaWRJdGVtKTsKKyAgICByZXR1cm4gZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBhcmVh
LmNvbHVtbnMgOiBhcmVhLnJvd3M7Cit9CisKK3ZvaWQgR3JpZDo6c2V0TmVlZHNJdGVtc1BsYWNl
bWVudChib29sIG5lZWRzSXRlbXNQbGFjZW1lbnQpCit7CisgICAgbV9uZWVkc0l0ZW1zUGxhY2Vt
ZW50ID0gbmVlZHNJdGVtc1BsYWNlbWVudDsKKworICAgIGlmICghbmVlZHNJdGVtc1BsYWNlbWVu
dCkgeworICAgICAgICBtX2dyaWQuc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIG1fZ3JpZC5yZXNpemUoMCk7CisgICAgbV9ncmlkSXRlbUFyZWEuY2xlYXIoKTsK
KyAgICBtX2hhc0FueU9ydGhvZ29uYWxHcmlkSXRlbSA9IGZhbHNlOworICAgIG1fc21hbGxlc3RS
b3dTdGFydCA9IDA7CisgICAgbV9zbWFsbGVzdENvbHVtblN0YXJ0ID0gMDsKKyAgICBtX2F1dG9S
ZXBlYXRFbXB0eUNvbHVtbnMgPSBudWxscHRyOworICAgIG1fYXV0b1JlcGVhdEVtcHR5Um93cyA9
IG51bGxwdHI7CisgICAgbV9hdXRvUmVwZWF0Q29sdW1ucyA9IDA7CisgICAgbV9hdXRvUmVwZWF0
Um93cyA9IDA7Cit9CisKK0dyaWRJdGVyYXRvcjo6R3JpZEl0ZXJhdG9yKGNvbnN0IEdyaWQmIGdy
aWQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIHVuc2lnbmVkIGZpeGVkVHJh
Y2tJbmRleCwgdW5zaWduZWQgdmFyeWluZ1RyYWNrSW5kZXgpCisgICAgOiBtX2dyaWQoZ3JpZC5t
X2dyaWQpCisgICAgLCBtX2RpcmVjdGlvbihkaXJlY3Rpb24pCisgICAgLCBtX3Jvd0luZGV4KChk
aXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyB2YXJ5aW5nVHJhY2tJbmRleCA6IGZpeGVkVHJhY2tJ
bmRleCkKKyAgICAsIG1fY29sdW1uSW5kZXgoKGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IGZp
eGVkVHJhY2tJbmRleCA6IHZhcnlpbmdUcmFja0luZGV4KQorICAgICwgbV9jaGlsZEluZGV4KDAp
Cit7CisgICAgQVNTRVJUKCFtX2dyaWQuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoIW1fZ3JpZFsw
XS5pc0VtcHR5KCkpOworICAgIEFTU0VSVChtX3Jvd0luZGV4IDwgbV9ncmlkLnNpemUoKSk7Cisg
ICAgQVNTRVJUKG1fY29sdW1uSW5kZXggPCBtX2dyaWRbMF0uc2l6ZSgpKTsKK30KKworUmVuZGVy
Qm94KiBHcmlkSXRlcmF0b3I6Om5leHRHcmlkSXRlbSgpCit7CisgICAgQVNTRVJUKCFtX2dyaWQu
aXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoIW1fZ3JpZFswXS5pc0VtcHR5KCkpOworCisgICAgdW5z
aWduZWQmIHZhcnlpbmdUcmFja0luZGV4ID0gKG1fZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8g
bV9yb3dJbmRleCA6IG1fY29sdW1uSW5kZXg7CisgICAgY29uc3QgdW5zaWduZWQgZW5kT2ZWYXJ5
aW5nVHJhY2tJbmRleCA9IChtX2RpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IG1fZ3JpZC5zaXpl
KCkgOiBtX2dyaWRbMF0uc2l6ZSgpOworICAgIGZvciAoOyB2YXJ5aW5nVHJhY2tJbmRleCA8IGVu
ZE9mVmFyeWluZ1RyYWNrSW5kZXg7ICsrdmFyeWluZ1RyYWNrSW5kZXgpIHsKKyAgICAgICAgY29u
c3QgYXV0byYgY2hpbGRyZW4gPSBtX2dyaWRbbV9yb3dJbmRleF1bbV9jb2x1bW5JbmRleF07Cisg
ICAgICAgIGlmIChtX2NoaWxkSW5kZXggPCBjaGlsZHJlbi5zaXplKCkpCisgICAgICAgICAgICBy
ZXR1cm4gY2hpbGRyZW5bbV9jaGlsZEluZGV4KytdOworCisgICAgICAgIG1fY2hpbGRJbmRleCA9
IDA7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitib29sIEdyaWRJdGVyYXRvcjo6aXNFbXB0
eUFyZWFFbm91Z2godW5zaWduZWQgcm93U3BhbiwgdW5zaWduZWQgY29sdW1uU3BhbikgY29uc3QK
K3sKKyAgICBBU1NFUlQoIW1fZ3JpZC5pc0VtcHR5KCkpOworICAgIEFTU0VSVCghbV9ncmlkWzBd
LmlzRW1wdHkoKSk7CisKKyAgICAvLyBJZ25vcmUgY2VsbHMgb3V0c2lkZSBjdXJyZW50IGdyaWQg
YXMgd2Ugd2lsbCBncm93IGl0IGxhdGVyIGlmIG5lZWRlZC4KKyAgICB1bnNpZ25lZCBtYXhSb3dz
ID0gc3RkOjptaW48dW5zaWduZWQ+KG1fcm93SW5kZXggKyByb3dTcGFuLCBtX2dyaWQuc2l6ZSgp
KTsKKyAgICB1bnNpZ25lZCBtYXhDb2x1bW5zID0gc3RkOjptaW48dW5zaWduZWQ+KG1fY29sdW1u
SW5kZXggKyBjb2x1bW5TcGFuLCBtX2dyaWRbMF0uc2l6ZSgpKTsKKworICAgIC8vIFRoaXMgYWRk
cyBhIE8oTl4yKSBiZWhhdmlvciB0aGF0IHNob3VsZG4ndCBiZSBhIGJpZyBkZWFsIGFzIHdlIGV4
cGVjdCBzcGFubmluZyBhcmVhcyB0byBiZSBzbWFsbC4KKyAgICBmb3IgKHVuc2lnbmVkIHJvdyA9
IG1fcm93SW5kZXg7IHJvdyA8IG1heFJvd3M7ICsrcm93KSB7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgY29sdW1uID0gbV9jb2x1bW5JbmRleDsgY29sdW1uIDwgbWF4Q29sdW1uczsgKytjb2x1bW4p
IHsKKyAgICAgICAgICAgIGF1dG8mIGNoaWxkcmVuID0gbV9ncmlkW3Jvd11bY29sdW1uXTsKKyAg
ICAgICAgICAgIGlmICghY2hpbGRyZW4uaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitzdGQ6
OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IEdyaWRJdGVyYXRvcjo6bmV4dEVtcHR5R3JpZEFyZWEodW5z
aWduZWQgZml4ZWRUcmFja1NwYW4sIHVuc2lnbmVkIHZhcnlpbmdUcmFja1NwYW4pCit7CisgICAg
QVNTRVJUKCFtX2dyaWQuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoIW1fZ3JpZFswXS5pc0VtcHR5
KCkpOworICAgIEFTU0VSVChmaXhlZFRyYWNrU3BhbiA+PSAxKTsKKyAgICBBU1NFUlQodmFyeWlu
Z1RyYWNrU3BhbiA+PSAxKTsKKworICAgIGlmIChtX2dyaWQuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIHVuc2lnbmVkIHJvd1NwYW4gPSAobV9kaXJlY3Rpb24gPT0g
Rm9yQ29sdW1ucykgPyB2YXJ5aW5nVHJhY2tTcGFuIDogZml4ZWRUcmFja1NwYW47CisgICAgdW5z
aWduZWQgY29sdW1uU3BhbiA9IChtX2RpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IGZpeGVkVHJh
Y2tTcGFuIDogdmFyeWluZ1RyYWNrU3BhbjsKKworICAgIHVuc2lnbmVkJiB2YXJ5aW5nVHJhY2tJ
bmRleCA9IChtX2RpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IG1fcm93SW5kZXggOiBtX2NvbHVt
bkluZGV4OworICAgIGNvbnN0IHVuc2lnbmVkIGVuZE9mVmFyeWluZ1RyYWNrSW5kZXggPSAobV9k
aXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBtX2dyaWQuc2l6ZSgpIDogbV9ncmlkWzBdLnNpemUo
KTsKKyAgICBmb3IgKDsgdmFyeWluZ1RyYWNrSW5kZXggPCBlbmRPZlZhcnlpbmdUcmFja0luZGV4
OyArK3ZhcnlpbmdUcmFja0luZGV4KSB7CisgICAgICAgIGlmIChpc0VtcHR5QXJlYUVub3VnaChy
b3dTcGFuLCBjb2x1bW5TcGFuKSkgeworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdyaWRB
cmVhPiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyaWRBcmVhPihHcmlkU3Bhbjo6dHJhbnNs
YXRlZERlZmluaXRlR3JpZFNwYW4obV9yb3dJbmRleCwgbV9yb3dJbmRleCArIHJvd1NwYW4pLCBH
cmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4obV9jb2x1bW5JbmRleCwgbV9jb2x1
bW5JbmRleCArIGNvbHVtblNwYW4pKTsKKyAgICAgICAgICAgIC8vIEFkdmFuY2UgdGhlIGl0ZXJh
dG9yIHRvIGF2b2lkIGFuIGluZmluaXRlIGxvb3Agd2hlcmUgd2Ugd291bGQgcmV0dXJuIHRoZSBz
YW1lIGdyaWQgYXJlYSBvdmVyIGFuZCBvdmVyLgorICAgICAgICAgICAgKyt2YXJ5aW5nVHJhY2tJ
bmRleDsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICB9CisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAv
KiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKSAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0dyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTNjOGE4YjRhNjA0ODQzNDA0NTAxMjg0ZGQ5ODllOGIzOTMxNjM0ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmgKQEAgLTAsMCArMSwxMzMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
Q1NTX0dSSURfTEFZT1VUKQorCisjaW5jbHVkZSAiR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmgiCisj
aW5jbHVkZSAiT3JkZXJJdGVyYXRvci5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5j
bHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordHlwZWRl
ZiBWZWN0b3I8UmVuZGVyQm94KiwgMT4gR3JpZENlbGw7Cit0eXBlZGVmIFZlY3RvcjxWZWN0b3I8
R3JpZENlbGw+PiBHcmlkQXNNYXRyaXg7Cit0eXBlZGVmIExpc3RIYXNoU2V0PHNpemVfdD4gT3Jk
ZXJlZFRyYWNrSW5kZXhTZXQ7CisKK2NsYXNzIEdyaWRBcmVhOworY2xhc3MgR3JpZFBvc2l0aW9u
c1Jlc29sdmVyOworY2xhc3MgUmVuZGVyR3JpZDsKKworY2xhc3MgR3JpZCBmaW5hbCB7CitwdWJs
aWM6CisgICAgZXhwbGljaXQgR3JpZChSZW5kZXJHcmlkJik7CisKKyAgICB1bnNpZ25lZCBudW1U
cmFja3MoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKKworICAgIHZvaWQgZW5zdXJl
R3JpZFNpemUodW5zaWduZWQgbWF4aW11bVJvd1NpemUsIHVuc2lnbmVkIG1heGltdW1Db2x1bW5T
aXplKTsKKyAgICB2b2lkIGluc2VydChSZW5kZXJCb3gmLCBjb25zdCBHcmlkQXJlYSYpOworCisg
ICAgLy8gTm90ZSB0aGF0IGVhY2ggaW4gZmxvdyBjaGlsZCBvZiBhIGdyaWQgY29udGFpbmVyIGJl
Y29tZXMgYSBncmlkIGl0ZW0uIFRoaXMgbWVhbnMgdGhhdAorICAgIC8vIHRoaXMgbWV0aG9kIHdp
bGwgcmV0dXJuIGZhbHNlIGZvciBhIGdyaWQgY29udGFpbmVyIHdpdGggb25seSBvdXQgb2YgZmxv
dyBjaGlsZHJlbi4KKyAgICBib29sIGhhc0dyaWRJdGVtcygpIGNvbnN0IHsgcmV0dXJuICFtX2dy
aWRJdGVtQXJlYS5pc0VtcHR5KCk7IH0KKworICAgIC8vIEZJWE1FOiBtb3ZlIHRoaXMgdG8gU2l6
aW5nRGF0YSBvbmNlIHBsYWNlSXRlbXNPbkdyaWQoKSB0YWtlcyBpdCBhcyBhcmd1bWVudC4KKyAg
ICBib29sIGhhc0FueU9ydGhvZ29uYWxHcmlkSXRlbSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzQW55
T3J0aG9nb25hbEdyaWRJdGVtOyB9CisgICAgdm9pZCBzZXRIYXNBbnlPcnRob2dvbmFsR3JpZEl0
ZW0oYm9vbCBoYXNBbnlPcnRob2dvbmFsR3JpZEl0ZW0pIHsgbV9oYXNBbnlPcnRob2dvbmFsR3Jp
ZEl0ZW0gPSBoYXNBbnlPcnRob2dvbmFsR3JpZEl0ZW07IH0KKworICAgIEdyaWRBcmVhIGdyaWRJ
dGVtQXJlYShjb25zdCBSZW5kZXJCb3gmIGl0ZW0pIGNvbnN0OworICAgIHZvaWQgc2V0R3JpZEl0
ZW1BcmVhKGNvbnN0IFJlbmRlckJveCYgaXRlbSwgR3JpZEFyZWEpOworCisgICAgR3JpZFNwYW4g
Z3JpZEl0ZW1TcGFuKGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikg
Y29uc3Q7CisKKyAgICBjb25zdCBHcmlkQ2VsbCYgY2VsbCh1bnNpZ25lZCByb3csIHVuc2lnbmVk
IGNvbHVtbikgY29uc3QgeyByZXR1cm4gbV9ncmlkW3Jvd11bY29sdW1uXTsgfQorCisgICAgaW50
IHNtYWxsZXN0VHJhY2tTdGFydChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OworICAg
IHZvaWQgc2V0U21hbGxlc3RUcmFja3NTdGFydChpbnQgcm93U3RhcnQsIGludCBjb2x1bW5TdGFy
dCk7CisKKyAgICB1bnNpZ25lZCBhdXRvUmVwZWF0VHJhY2tzKEdyaWRUcmFja1NpemluZ0RpcmVj
dGlvbikgY29uc3Q7CisgICAgdm9pZCBzZXRBdXRvUmVwZWF0VHJhY2tzKHVuc2lnbmVkIGF1dG9S
ZXBlYXRSb3dzLCB1bnNpZ25lZCBhdXRvUmVwZWF0Q29sdW1ucyk7CisKKyAgICB2b2lkIHNldEF1
dG9SZXBlYXRFbXB0eUNvbHVtbnMoc3RkOjp1bmlxdWVfcHRyPE9yZGVyZWRUcmFja0luZGV4U2V0
Pik7CisgICAgdm9pZCBzZXRBdXRvUmVwZWF0RW1wdHlSb3dzKHN0ZDo6dW5pcXVlX3B0cjxPcmRl
cmVkVHJhY2tJbmRleFNldD4pOworCisgICAgdW5zaWduZWQgYXV0b1JlcGVhdEVtcHR5VHJhY2tz
Q291bnQoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKKyAgICBib29sIGhhc0F1dG9S
ZXBlYXRFbXB0eVRyYWNrcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OworICAgIGJv
b2wgaXNFbXB0eUF1dG9SZXBlYXRUcmFjayhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIHVuc2ln
bmVkKSBjb25zdDsKKworICAgIE9yZGVyZWRUcmFja0luZGV4U2V0KiBhdXRvUmVwZWF0RW1wdHlU
cmFja3MoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKKworICAgIE9yZGVySXRlcmF0
b3ImIG9yZGVySXRlcmF0b3IoKSB7IHJldHVybiBtX29yZGVySXRlcmF0b3I7IH0KKworICAgIHZv
aWQgc2V0TmVlZHNJdGVtc1BsYWNlbWVudChib29sKTsKKyAgICBib29sIG5lZWRzSXRlbXNQbGFj
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX25lZWRzSXRlbXNQbGFjZW1lbnQ7IH07CisKK3ByaXZh
dGU6CisgICAgZnJpZW5kIGNsYXNzIEdyaWRJdGVyYXRvcjsKKworICAgIE9yZGVySXRlcmF0b3Ig
bV9vcmRlckl0ZXJhdG9yOworCisgICAgaW50IG1fc21hbGxlc3RDb2x1bW5TdGFydCB7IDAgfTsK
KyAgICBpbnQgbV9zbWFsbGVzdFJvd1N0YXJ0IHsgMCB9OworCisgICAgdW5zaWduZWQgbV9hdXRv
UmVwZWF0Q29sdW1ucyB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX2F1dG9SZXBlYXRSb3dzIHsgMCB9
OworCisgICAgYm9vbCBtX2hhc0FueU9ydGhvZ29uYWxHcmlkSXRlbSB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX25lZWRzSXRlbXNQbGFjZW1lbnQgeyB0cnVlIH07CisKKyAgICBHcmlkQXNNYXRyaXgg
bV9ncmlkOworCisgICAgSGFzaE1hcDxjb25zdCBSZW5kZXJCb3gqLCBHcmlkQXJlYT4gbV9ncmlk
SXRlbUFyZWE7CisgICAgSGFzaE1hcDxjb25zdCBSZW5kZXJCb3gqLCBzaXplX3Q+IG1fZ3JpZEl0
ZW1zSW5kZXhlc01hcDsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxPcmRlcmVkVHJhY2tJbmRleFNl
dD4gbV9hdXRvUmVwZWF0RW1wdHlDb2x1bW5zOworICAgIHN0ZDo6dW5pcXVlX3B0cjxPcmRlcmVk
VHJhY2tJbmRleFNldD4gbV9hdXRvUmVwZWF0RW1wdHlSb3dzOworfTsKKworY2xhc3MgR3JpZEl0
ZXJhdG9yIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHcmlkSXRlcmF0b3IpOworcHVibGlj
OgorICAgIC8vIHxkaXJlY3Rpb258IGlzIHRoZSBkaXJlY3Rpb24gdGhhdCBpcyBmaXhlZCB0byB8
Zml4ZWRUcmFja0luZGV4fCBzbyBlLmcKKyAgICAvLyBHcmlkSXRlcmF0b3IobV9ncmlkLCBGb3JD
b2x1bW5zLCAxKSB3aWxsIHdhbGsgb3ZlciB0aGUgcm93cyBvZiB0aGUgMm5kIGNvbHVtbi4KKyAg
ICBHcmlkSXRlcmF0b3IoY29uc3QgR3JpZCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgdW5z
aWduZWQgZml4ZWRUcmFja0luZGV4LCB1bnNpZ25lZCB2YXJ5aW5nVHJhY2tJbmRleCA9IDApOwor
CisgICAgUmVuZGVyQm94KiBuZXh0R3JpZEl0ZW0oKTsKKyAgICBib29sIGlzRW1wdHlBcmVhRW5v
dWdoKHVuc2lnbmVkIHJvd1NwYW4sIHVuc2lnbmVkIGNvbHVtblNwYW4pIGNvbnN0OworICAgIHN0
ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gbmV4dEVtcHR5R3JpZEFyZWEodW5zaWduZWQgZml4ZWRU
cmFja1NwYW4sIHVuc2lnbmVkIHZhcnlpbmdUcmFja1NwYW4pOworCitwcml2YXRlOgorICAgIGNv
bnN0IEdyaWRBc01hdHJpeCYgbV9ncmlkOworICAgIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBt
X2RpcmVjdGlvbjsKKyAgICB1bnNpZ25lZCBtX3Jvd0luZGV4OworICAgIHVuc2lnbmVkIG1fY29s
dW1uSW5kZXg7CisgICAgdW5zaWduZWQgbV9jaGlsZEluZGV4OworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgIC8qIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpICovCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKaW5kZXggNDcwMGU4ZjQyYWM0OTBiMzIx
YWMxNjdhMGQ0NGM1YTM5ZjE0Y2JmNy4uY2Y4Yjk1YWEwZGI5YmQ0ODViY2RiYWMzNGQ1YTQzZjg2
MzNjNzZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtNDYs
MTI4ICs0Niw2IEBAIGVudW0gVHJhY2tTaXplUmVzdHJpY3Rpb24gewogICAgIEZvcmJpZEluZmlu
aXR5LAogfTsKIAotdW5zaWduZWQgUmVuZGVyR3JpZDo6R3JpZDo6bnVtVHJhY2tzKEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0Ci17Ci0gICAgaWYgKGRpcmVjdGlvbiA9
PSBGb3JSb3dzKQotICAgICAgICByZXR1cm4gbV9ncmlkLnNpemUoKTsKLSAgICByZXR1cm4gbV9n
cmlkLnNpemUoKSA/IG1fZ3JpZFswXS5zaXplKCkgOiAwOwotfQotCi12b2lkIFJlbmRlckdyaWQ6
OkdyaWQ6OmVuc3VyZUdyaWRTaXplKHVuc2lnbmVkIG1heGltdW1Sb3dTaXplLCB1bnNpZ25lZCBt
YXhpbXVtQ29sdW1uU2l6ZSkKLXsKLSAgICBjb25zdCBzaXplX3Qgb2xkQ29sdW1uU2l6ZSA9IG51
bVRyYWNrcyhGb3JDb2x1bW5zKTsKLSAgICBjb25zdCBzaXplX3Qgb2xkUm93U2l6ZSA9IG51bVRy
YWNrcyhGb3JSb3dzKTsKLSAgICBpZiAobWF4aW11bVJvd1NpemUgPiBvbGRSb3dTaXplKSB7Ci0g
ICAgICAgIG1fZ3JpZC5ncm93KG1heGltdW1Sb3dTaXplKTsKLSAgICAgICAgZm9yIChzaXplX3Qg
cm93ID0gb2xkUm93U2l6ZTsgcm93IDwgbWF4aW11bVJvd1NpemU7ICsrcm93KQotICAgICAgICAg
ICAgbV9ncmlkW3Jvd10uZ3JvdyhvbGRDb2x1bW5TaXplKTsKLSAgICB9Ci0KLSAgICBpZiAobWF4
aW11bUNvbHVtblNpemUgPiBvbGRDb2x1bW5TaXplKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IHJv
dyA9IDA7IHJvdyA8IG51bVRyYWNrcyhGb3JSb3dzKTsgKytyb3cpCi0gICAgICAgICAgICBtX2dy
aWRbcm93XS5ncm93KG1heGltdW1Db2x1bW5TaXplKTsKLSAgICB9Ci19Ci0KLXZvaWQgUmVuZGVy
R3JpZDo6R3JpZDo6aW5zZXJ0KFJlbmRlckJveCYgY2hpbGQsIGNvbnN0IEdyaWRBcmVhJiBhcmVh
KQotewotICAgIEFTU0VSVChhcmVhLnJvd3MuaXNUcmFuc2xhdGVkRGVmaW5pdGUoKSAmJiBhcmVh
LmNvbHVtbnMuaXNUcmFuc2xhdGVkRGVmaW5pdGUoKSk7Ci0gICAgZW5zdXJlR3JpZFNpemUoYXJl
YS5yb3dzLmVuZExpbmUoKSwgYXJlYS5jb2x1bW5zLmVuZExpbmUoKSk7Ci0KLSAgICBmb3IgKGNv
bnN0IGF1dG8mIHJvdyA6IGFyZWEucm93cykgewotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNv
bHVtbiA6IGFyZWEuY29sdW1ucykKLSAgICAgICAgICAgIG1fZ3JpZFtyb3ddW2NvbHVtbl0uYXBw
ZW5kKCZjaGlsZCk7Ci0gICAgfQotCi0gICAgc2V0R3JpZEl0ZW1BcmVhKGNoaWxkLCBhcmVhKTsK
LX0KLQotdm9pZCBSZW5kZXJHcmlkOjpHcmlkOjpzZXRTbWFsbGVzdFRyYWNrc1N0YXJ0KGludCBy
b3dTdGFydCwgaW50IGNvbHVtblN0YXJ0KQotewotICAgIG1fc21hbGxlc3RSb3dTdGFydCA9IHJv
d1N0YXJ0OwotICAgIG1fc21hbGxlc3RDb2x1bW5TdGFydCA9IGNvbHVtblN0YXJ0OwotfQotCi1p
bnQgUmVuZGVyR3JpZDo6R3JpZDo6c21hbGxlc3RUcmFja1N0YXJ0KEdyaWRUcmFja1NpemluZ0Rp
cmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBGb3JS
b3dzID8gbV9zbWFsbGVzdFJvd1N0YXJ0IDogbV9zbWFsbGVzdENvbHVtblN0YXJ0OwotfQotCi1H
cmlkQXJlYSBSZW5kZXJHcmlkOjpHcmlkOjpncmlkSXRlbUFyZWEoY29uc3QgUmVuZGVyQm94JiBp
dGVtKSBjb25zdAotewotICAgIEFTU0VSVChtX2dyaWRJdGVtQXJlYS5jb250YWlucygmaXRlbSkp
OwotICAgIHJldHVybiBtX2dyaWRJdGVtQXJlYS5nZXQoJml0ZW0pOwotfQotCi12b2lkIFJlbmRl
ckdyaWQ6OkdyaWQ6OnNldEdyaWRJdGVtQXJlYShjb25zdCBSZW5kZXJCb3gmIGl0ZW0sIEdyaWRB
cmVhIGFyZWEpCi17Ci0gICAgbV9ncmlkSXRlbUFyZWEuc2V0KCZpdGVtLCBhcmVhKTsKLX0KLQot
dm9pZCBSZW5kZXJHcmlkOjpHcmlkOjpzZXRBdXRvUmVwZWF0VHJhY2tzKHVuc2lnbmVkIGF1dG9S
ZXBlYXRSb3dzLCB1bnNpZ25lZCBhdXRvUmVwZWF0Q29sdW1ucykKLXsKLSAgICBtX2F1dG9SZXBl
YXRSb3dzID0gYXV0b1JlcGVhdFJvd3M7Ci0gICAgbV9hdXRvUmVwZWF0Q29sdW1ucyA9ICBhdXRv
UmVwZWF0Q29sdW1uczsKLX0KLQotdW5zaWduZWQgUmVuZGVyR3JpZDo6R3JpZDo6YXV0b1JlcGVh
dFRyYWNrcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAotewotICAg
IHJldHVybiBkaXJlY3Rpb24gPT0gRm9yUm93cyA/IG1fYXV0b1JlcGVhdFJvd3MgOiBtX2F1dG9S
ZXBlYXRDb2x1bW5zOwotfQotCi12b2lkIFJlbmRlckdyaWQ6OkdyaWQ6OnNldEF1dG9SZXBlYXRF
bXB0eUNvbHVtbnMoc3RkOjp1bmlxdWVfcHRyPE9yZGVyZWRUcmFja0luZGV4U2V0PiBhdXRvUmVw
ZWF0RW1wdHlDb2x1bW5zKQotewotICAgIG1fYXV0b1JlcGVhdEVtcHR5Q29sdW1ucyA9IFdURk1v
dmUoYXV0b1JlcGVhdEVtcHR5Q29sdW1ucyk7Ci19Ci0KLXZvaWQgUmVuZGVyR3JpZDo6R3JpZDo6
c2V0QXV0b1JlcGVhdEVtcHR5Um93cyhzdGQ6OnVuaXF1ZV9wdHI8T3JkZXJlZFRyYWNrSW5kZXhT
ZXQ+IGF1dG9SZXBlYXRFbXB0eVJvd3MpCi17Ci0gICAgbV9hdXRvUmVwZWF0RW1wdHlSb3dzID0g
V1RGTW92ZShhdXRvUmVwZWF0RW1wdHlSb3dzKTsKLX0KLQotYm9vbCBSZW5kZXJHcmlkOjpHcmlk
OjpoYXNBdXRvUmVwZWF0RW1wdHlUcmFja3MoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVj
dGlvbikgY29uc3QKLXsKLSAgICByZXR1cm4gZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyAhIW1f
YXV0b1JlcGVhdEVtcHR5Q29sdW1ucyA6ICEhbV9hdXRvUmVwZWF0RW1wdHlSb3dzOwotfQotCi1i
b29sIFJlbmRlckdyaWQ6OkdyaWQ6OmlzRW1wdHlBdXRvUmVwZWF0VHJhY2soR3JpZFRyYWNrU2l6
aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgdW5zaWduZWQgbGluZSkgY29uc3QKLXsKLSAgICBBU1NF
UlQoaGFzQXV0b1JlcGVhdEVtcHR5VHJhY2tzKGRpcmVjdGlvbikpOwotICAgIHJldHVybiBhdXRv
UmVwZWF0RW1wdHlUcmFja3MoZGlyZWN0aW9uKS0+Y29udGFpbnMobGluZSk7Ci19Ci0KLVJlbmRl
ckdyaWQ6Ok9yZGVyZWRUcmFja0luZGV4U2V0KiBSZW5kZXJHcmlkOjpHcmlkOjphdXRvUmVwZWF0
RW1wdHlUcmFja3MoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKLXsK
LSAgICBBU1NFUlQoaGFzQXV0b1JlcGVhdEVtcHR5VHJhY2tzKGRpcmVjdGlvbikpOwotICAgIHJl
dHVybiBkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IG1fYXV0b1JlcGVhdEVtcHR5Q29sdW1ucy5n
ZXQoKSA6IG1fYXV0b1JlcGVhdEVtcHR5Um93cy5nZXQoKTsKLX0KLQotR3JpZFNwYW4gUmVuZGVy
R3JpZDo6R3JpZDo6Z3JpZEl0ZW1TcGFuKGNvbnN0IFJlbmRlckJveCYgZ3JpZEl0ZW0sIEdyaWRU
cmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0Ci17Ci0gICAgR3JpZEFyZWEgYXJl
YSA9IGdyaWRJdGVtQXJlYShncmlkSXRlbSk7Ci0gICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBGb3JD
b2x1bW5zID8gYXJlYS5jb2x1bW5zIDogYXJlYS5yb3dzOwotfQotCi12b2lkIFJlbmRlckdyaWQ6
OkdyaWQ6OnNldE5lZWRzSXRlbXNQbGFjZW1lbnQoYm9vbCBuZWVkc0l0ZW1zUGxhY2VtZW50KQot
ewotICAgIG1fbmVlZHNJdGVtc1BsYWNlbWVudCA9IG5lZWRzSXRlbXNQbGFjZW1lbnQ7Ci0KLSAg
ICBpZiAoIW5lZWRzSXRlbXNQbGFjZW1lbnQpIHsKLSAgICAgICAgbV9ncmlkLnNocmlua1RvRml0
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX2dyaWQucmVzaXplKDApOwotICAg
IG1fZ3JpZEl0ZW1BcmVhLmNsZWFyKCk7Ci0gICAgbV9oYXNBbnlPcnRob2dvbmFsR3JpZEl0ZW0g
PSBmYWxzZTsKLSAgICBtX3NtYWxsZXN0Um93U3RhcnQgPSAwOwotICAgIG1fc21hbGxlc3RDb2x1
bW5TdGFydCA9IDA7Ci0gICAgbV9hdXRvUmVwZWF0RW1wdHlDb2x1bW5zID0gbnVsbHB0cjsKLSAg
ICBtX2F1dG9SZXBlYXRFbXB0eVJvd3MgPSBudWxscHRyOwotICAgIG1fYXV0b1JlcGVhdENvbHVt
bnMgPSAwOwotICAgIG1fYXV0b1JlcGVhdFJvd3MgPSAwOwotfQotCiBjbGFzcyBHcmlkVHJhY2sg
ewogcHVibGljOgogICAgIEdyaWRUcmFjaygpIHt9CkBAIC0yNjYsOTYgKzE0NCw2IEBAIHB1Ymxp
YzoKICAgICBMYXlvdXRVbml0IGRpc3RyaWJ1dGlvbk9mZnNldDsKIH07CiAKLWNsYXNzIFJlbmRl
ckdyaWQ6OkdyaWRJdGVyYXRvciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR3JpZEl0ZXJh
dG9yKTsKLXB1YmxpYzoKLSAgICAvLyB8ZGlyZWN0aW9ufCBpcyB0aGUgZGlyZWN0aW9uIHRoYXQg
aXMgZml4ZWQgdG8gfGZpeGVkVHJhY2tJbmRleHwgc28gZS5nCi0gICAgLy8gR3JpZEl0ZXJhdG9y
KG1fZ3JpZCwgRm9yQ29sdW1ucywgMSkgd2lsbCB3YWxrIG92ZXIgdGhlIHJvd3Mgb2YgdGhlIDJu
ZCBjb2x1bW4uCi0gICAgR3JpZEl0ZXJhdG9yKGNvbnN0IEdyaWQmIGdyaWQsIEdyaWRUcmFja1Np
emluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIHVuc2lnbmVkIGZpeGVkVHJhY2tJbmRleCwgdW5zaWdu
ZWQgdmFyeWluZ1RyYWNrSW5kZXggPSAwKQotICAgICAgICA6IG1fZ3JpZChncmlkLm1fZ3JpZCkK
LSAgICAgICAgLCBtX2RpcmVjdGlvbihkaXJlY3Rpb24pCi0gICAgICAgICwgbV9yb3dJbmRleCgo
ZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gdmFyeWluZ1RyYWNrSW5kZXggOiBmaXhlZFRyYWNr
SW5kZXgpCi0gICAgICAgICwgbV9jb2x1bW5JbmRleCgoZGlyZWN0aW9uID09IEZvckNvbHVtbnMp
ID8gZml4ZWRUcmFja0luZGV4IDogdmFyeWluZ1RyYWNrSW5kZXgpCi0gICAgICAgICwgbV9jaGls
ZEluZGV4KDApCi0gICAgewotICAgICAgICBBU1NFUlQoIW1fZ3JpZC5pc0VtcHR5KCkpOwotICAg
ICAgICBBU1NFUlQoIW1fZ3JpZFswXS5pc0VtcHR5KCkpOwotICAgICAgICBBU1NFUlQobV9yb3dJ
bmRleCA8IG1fZ3JpZC5zaXplKCkpOwotICAgICAgICBBU1NFUlQobV9jb2x1bW5JbmRleCA8IG1f
Z3JpZFswXS5zaXplKCkpOwotICAgIH0KLQotICAgIFJlbmRlckJveCogbmV4dEdyaWRJdGVtKCkK
LSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9ncmlkLmlzRW1wdHkoKSk7Ci0gICAgICAgIEFTU0VS
VCghbV9ncmlkWzBdLmlzRW1wdHkoKSk7Ci0KLSAgICAgICAgdW5zaWduZWQmIHZhcnlpbmdUcmFj
a0luZGV4ID0gKG1fZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gbV9yb3dJbmRleCA6IG1fY29s
dW1uSW5kZXg7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGVuZE9mVmFyeWluZ1RyYWNrSW5kZXgg
PSAobV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBtX2dyaWQuc2l6ZSgpIDogbV9ncmlkWzBd
LnNpemUoKTsKLSAgICAgICAgZm9yICg7IHZhcnlpbmdUcmFja0luZGV4IDwgZW5kT2ZWYXJ5aW5n
VHJhY2tJbmRleDsgKyt2YXJ5aW5nVHJhY2tJbmRleCkgewotICAgICAgICAgICAgY29uc3QgYXV0
byYgY2hpbGRyZW4gPSBtX2dyaWRbbV9yb3dJbmRleF1bbV9jb2x1bW5JbmRleF07Ci0gICAgICAg
ICAgICBpZiAobV9jaGlsZEluZGV4IDwgY2hpbGRyZW4uc2l6ZSgpKQotICAgICAgICAgICAgICAg
IHJldHVybiBjaGlsZHJlblttX2NoaWxkSW5kZXgrK107Ci0KLSAgICAgICAgICAgIG1fY2hpbGRJ
bmRleCA9IDA7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgYm9v
bCBpc0VtcHR5QXJlYUVub3VnaCh1bnNpZ25lZCByb3dTcGFuLCB1bnNpZ25lZCBjb2x1bW5TcGFu
KSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2dyaWQuaXNFbXB0eSgpKTsKLSAgICAg
ICAgQVNTRVJUKCFtX2dyaWRbMF0uaXNFbXB0eSgpKTsKLQotICAgICAgICAvLyBJZ25vcmUgY2Vs
bHMgb3V0c2lkZSBjdXJyZW50IGdyaWQgYXMgd2Ugd2lsbCBncm93IGl0IGxhdGVyIGlmIG5lZWRl
ZC4KLSAgICAgICAgdW5zaWduZWQgbWF4Um93cyA9IHN0ZDo6bWluPHVuc2lnbmVkPihtX3Jvd0lu
ZGV4ICsgcm93U3BhbiwgbV9ncmlkLnNpemUoKSk7Ci0gICAgICAgIHVuc2lnbmVkIG1heENvbHVt
bnMgPSBzdGQ6Om1pbjx1bnNpZ25lZD4obV9jb2x1bW5JbmRleCArIGNvbHVtblNwYW4sIG1fZ3Jp
ZFswXS5zaXplKCkpOwotCi0gICAgICAgIC8vIFRoaXMgYWRkcyBhIE8oTl4yKSBiZWhhdmlvciB0
aGF0IHNob3VsZG4ndCBiZSBhIGJpZyBkZWFsIGFzIHdlIGV4cGVjdCBzcGFubmluZyBhcmVhcyB0
byBiZSBzbWFsbC4KLSAgICAgICAgZm9yICh1bnNpZ25lZCByb3cgPSBtX3Jvd0luZGV4OyByb3cg
PCBtYXhSb3dzOyArK3JvdykgewotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBjb2x1bW4gPSBt
X2NvbHVtbkluZGV4OyBjb2x1bW4gPCBtYXhDb2x1bW5zOyArK2NvbHVtbikgewotICAgICAgICAg
ICAgICAgIGF1dG8mIGNoaWxkcmVuID0gbV9ncmlkW3Jvd11bY29sdW1uXTsKLSAgICAgICAgICAg
ICAgICBpZiAoIWNoaWxkcmVuLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotCi0gICAgc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVhPiBuZXh0RW1wdHlHcmlkQXJl
YSh1bnNpZ25lZCBmaXhlZFRyYWNrU3BhbiwgdW5zaWduZWQgdmFyeWluZ1RyYWNrU3BhbikKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVCghbV9ncmlkLmlzRW1wdHkoKSk7Ci0gICAgICAgIEFTU0VSVCgh
bV9ncmlkWzBdLmlzRW1wdHkoKSk7Ci0gICAgICAgIEFTU0VSVChmaXhlZFRyYWNrU3BhbiA+PSAx
KTsKLSAgICAgICAgQVNTRVJUKHZhcnlpbmdUcmFja1NwYW4gPj0gMSk7Ci0KLSAgICAgICAgaWYg
KG1fZ3JpZC5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgICAg
ICB1bnNpZ25lZCByb3dTcGFuID0gKG1fZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gdmFyeWlu
Z1RyYWNrU3BhbiA6IGZpeGVkVHJhY2tTcGFuOwotICAgICAgICB1bnNpZ25lZCBjb2x1bW5TcGFu
ID0gKG1fZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gZml4ZWRUcmFja1NwYW4gOiB2YXJ5aW5n
VHJhY2tTcGFuOwotCi0gICAgICAgIHVuc2lnbmVkJiB2YXJ5aW5nVHJhY2tJbmRleCA9IChtX2Rp
cmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IG1fcm93SW5kZXggOiBtX2NvbHVtbkluZGV4OwotICAg
ICAgICBjb25zdCB1bnNpZ25lZCBlbmRPZlZhcnlpbmdUcmFja0luZGV4ID0gKG1fZGlyZWN0aW9u
ID09IEZvckNvbHVtbnMpID8gbV9ncmlkLnNpemUoKSA6IG1fZ3JpZFswXS5zaXplKCk7Ci0gICAg
ICAgIGZvciAoOyB2YXJ5aW5nVHJhY2tJbmRleCA8IGVuZE9mVmFyeWluZ1RyYWNrSW5kZXg7ICsr
dmFyeWluZ1RyYWNrSW5kZXgpIHsKLSAgICAgICAgICAgIGlmIChpc0VtcHR5QXJlYUVub3VnaChy
b3dTcGFuLCBjb2x1bW5TcGFuKSkgewotICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxH
cmlkQXJlYT4gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmlkQXJlYT4oR3JpZFNwYW46OnRy
YW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fcm93SW5kZXgsIG1fcm93SW5kZXggKyByb3dTcGFu
KSwgR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fY29sdW1uSW5kZXgsIG1f
Y29sdW1uSW5kZXggKyBjb2x1bW5TcGFuKSk7Ci0gICAgICAgICAgICAgICAgLy8gQWR2YW5jZSB0
aGUgaXRlcmF0b3IgdG8gYXZvaWQgYW4gaW5maW5pdGUgbG9vcCB3aGVyZSB3ZSB3b3VsZCByZXR1
cm4gdGhlIHNhbWUgZ3JpZCBhcmVhIG92ZXIgYW5kIG92ZXIuCi0gICAgICAgICAgICAgICAgKyt2
YXJ5aW5nVHJhY2tJbmRleDsKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICBjb25zdCBHcmlkQXNNYXRyaXgmIG1fZ3JpZDsKLSAgICBHcmlkVHJhY2tTaXpp
bmdEaXJlY3Rpb24gbV9kaXJlY3Rpb247Ci0gICAgdW5zaWduZWQgbV9yb3dJbmRleDsKLSAgICB1
bnNpZ25lZCBtX2NvbHVtbkluZGV4OwotICAgIHVuc2lnbmVkIG1fY2hpbGRJbmRleDsKLX07Ci0K
IGNsYXNzIFJlbmRlckdyaWQ6OkdyaWRTaXppbmdEYXRhIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShHcmlkU2l6aW5nRGF0YSk7CiBwdWJsaWM6CkBAIC0xNzI1LDcgKzE1MTMsNyBAQCB1bnNp
Z25lZCBSZW5kZXJHcmlkOjpjb21wdXRlQXV0b1JlcGVhdFRyYWNrc0NvdW50KEdyaWRUcmFja1Np
emluZ0RpcmVjdGlvbiBkaXJlYwogfQogCiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJHcmlkOjpP
cmRlcmVkVHJhY2tJbmRleFNldD4gUmVuZGVyR3JpZDo6Y29tcHV0ZUVtcHR5VHJhY2tzRm9yQXV0
b1JlcGVhdChHcmlkJiBncmlkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKSBj
b25zdAorc3RkOjp1bmlxdWVfcHRyPE9yZGVyZWRUcmFja0luZGV4U2V0PiBSZW5kZXJHcmlkOjpj
b21wdXRlRW1wdHlUcmFja3NGb3JBdXRvUmVwZWF0KEdyaWQmIGdyaWQsIEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CiB7CiAgICAgYm9vbCBpc1Jvd0F4aXMgPSBkaXJl
Y3Rpb24gPT0gRm9yQ29sdW1uczsKICAgICBpZiAoKGlzUm93QXhpcyAmJiBzdHlsZSgpLmdyaWRB
dXRvUmVwZWF0Q29sdW1uc1R5cGUoKSAhPSBBdXRvRml0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHcmlkLmgKaW5kZXggNGJmYjA4MjE2ZjRiNTRhNjRjMGFhNDRjOWMyMDcxMTY4NTc3Zjky
MC4uNTU5Yzc4MDE3NmJkYzYzNWE0ODYxMzcyNWJlZDMyNjJiMDcxNGUyZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCkBAIC0yOCw4ICsyOCw3IEBACiAKICNpZiBFTkFCTEUo
Q1NTX0dSSURfTEFZT1VUKQogCi0jaW5jbHVkZSAiR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmgiCi0j
aW5jbHVkZSAiT3JkZXJJdGVyYXRvci5oIgorI2luY2x1ZGUgIkdyaWQuaCIKICNpbmNsdWRlICJS
ZW5kZXJCbG9jay5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04Niw4ICs4NSw2IEBAIHBy
aXZhdGU6CiAKICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVJbnRyaW5zaWNM
b2dpY2FsQ29udGVudEhlaWdodFVzaW5nKExlbmd0aCBsb2dpY2FsSGVpZ2h0TGVuZ3RoLCBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQsIExheW91dFVuaXQg
Ym9yZGVyQW5kUGFkZGluZykgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBjbGFzcyBHcmlkOwotICAg
IGNsYXNzIEdyaWRJdGVyYXRvcjsKICAgICBjbGFzcyBHcmlkU2l6aW5nRGF0YTsKICAgICBlbnVt
IFNpemluZ09wZXJhdGlvbiB7IFRyYWNrU2l6aW5nLCBJbnRyaW5zaWNTaXplQ29tcHV0YXRpb24g
fTsKICAgICB2b2lkIGNvbXB1dGVVc2VkQnJlYWR0aE9mR3JpZFRyYWNrcyhHcmlkVHJhY2tTaXpp
bmdEaXJlY3Rpb24sIEdyaWRTaXppbmdEYXRhJiwgTGF5b3V0VW5pdCYgYmFzZVNpemVzV2l0aG91
dE1heGltaXphdGlvbiwgTGF5b3V0VW5pdCYgZ3Jvd3RoTGltaXRzV2l0aG91dE1heGltaXphdGlv
bikgY29uc3Q7CkBAIC05OCw3ICs5NSw2IEBAIHByaXZhdGU6CiAKICAgICB1bnNpZ25lZCBjb21w
dXRlQXV0b1JlcGVhdFRyYWNrc0NvdW50KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgU2l6aW5n
T3BlcmF0aW9uKSBjb25zdDsKIAotICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8c2l6ZV90PiBPcmRl
cmVkVHJhY2tJbmRleFNldDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8T3JkZXJlZFRyYWNrSW5kZXhT
ZXQ+IGNvbXB1dGVFbXB0eVRyYWNrc0ZvckF1dG9SZXBlYXQoR3JpZCYsIEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbikgY29uc3Q7CiAKICAgICB2b2lkIHBsYWNlSXRlbXNPbkdyaWQoR3JpZCYsIFNp
emluZ09wZXJhdGlvbikgY29uc3Q7CkBAIC0yMDMsNzQgKzE5OSw2IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBpc09ydGhvZ29uYWxDaGlsZChjb25zdCBSZW5kZXJCb3gmKSBjb25zdDsKICAgICBHcmlk
VHJhY2tTaXppbmdEaXJlY3Rpb24gZmxvd0F3YXJlRGlyZWN0aW9uRm9yQ2hpbGQoY29uc3QgUmVu
ZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKIAotICAgIHR5cGVkZWYg
VmVjdG9yPFJlbmRlckJveCosIDE+IEdyaWRDZWxsOwotICAgIHR5cGVkZWYgVmVjdG9yPFZlY3Rv
cjxHcmlkQ2VsbD4+IEdyaWRBc01hdHJpeDsKLSAgICBjbGFzcyBHcmlkIGZpbmFsIHsKLSAgICBw
dWJsaWM6Ci0gICAgICAgIEdyaWQoUmVuZGVyR3JpZCYgZ3JpZCkgOiBtX29yZGVySXRlcmF0b3Io
Z3JpZCkgeyB9Ci0KLSAgICAgICAgdW5zaWduZWQgbnVtVHJhY2tzKEdyaWRUcmFja1NpemluZ0Rp
cmVjdGlvbikgY29uc3Q7Ci0KLSAgICAgICAgdm9pZCBlbnN1cmVHcmlkU2l6ZSh1bnNpZ25lZCBt
YXhpbXVtUm93U2l6ZSwgdW5zaWduZWQgbWF4aW11bUNvbHVtblNpemUpOwotICAgICAgICB2b2lk
IGluc2VydChSZW5kZXJCb3gmLCBjb25zdCBHcmlkQXJlYSYpOwotCi0gICAgICAgIC8vIE5vdGUg
dGhhdCBlYWNoIGluIGZsb3cgY2hpbGQgb2YgYSBncmlkIGNvbnRhaW5lciBiZWNvbWVzIGEgZ3Jp
ZCBpdGVtLiBUaGlzIG1lYW5zIHRoYXQKLSAgICAgICAgLy8gdGhpcyBtZXRob2Qgd2lsbCByZXR1
cm4gZmFsc2UgZm9yIGEgZ3JpZCBjb250YWluZXIgd2l0aCBvbmx5IG91dCBvZiBmbG93IGNoaWxk
cmVuLgotICAgICAgICBib29sIGhhc0dyaWRJdGVtcygpIGNvbnN0IHsgcmV0dXJuICFtX2dyaWRJ
dGVtQXJlYS5pc0VtcHR5KCk7IH0KLQotICAgICAgICAvLyBGSVhNRTogbW92ZSB0aGlzIHRvIFNp
emluZ0RhdGEgb25jZSBwbGFjZUl0ZW1zT25HcmlkKCkgdGFrZXMgaXQgYXMgYXJndW1lbnQuCi0g
ICAgICAgIGJvb2wgaGFzQW55T3J0aG9nb25hbEdyaWRJdGVtKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNBbnlPcnRob2dvbmFsR3JpZEl0ZW07IH0KLSAgICAgICAgdm9pZCBzZXRIYXNBbnlPcnRob2dv
bmFsR3JpZEl0ZW0oYm9vbCBoYXNBbnlPcnRob2dvbmFsR3JpZEl0ZW0pIHsgbV9oYXNBbnlPcnRo
b2dvbmFsR3JpZEl0ZW0gPSBoYXNBbnlPcnRob2dvbmFsR3JpZEl0ZW07IH0KLQotICAgICAgICBH
cmlkQXJlYSBncmlkSXRlbUFyZWEoY29uc3QgUmVuZGVyQm94JiBpdGVtKSBjb25zdDsKLSAgICAg
ICAgdm9pZCBzZXRHcmlkSXRlbUFyZWEoY29uc3QgUmVuZGVyQm94JiBpdGVtLCBHcmlkQXJlYSk7
Ci0KLSAgICAgICAgR3JpZFNwYW4gZ3JpZEl0ZW1TcGFuKGNvbnN0IFJlbmRlckJveCYsIEdyaWRU
cmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7Ci0KLSAgICAgICAgY29uc3QgR3JpZENlbGwmIGNl
bGwodW5zaWduZWQgcm93LCB1bnNpZ25lZCBjb2x1bW4pIGNvbnN0IHsgcmV0dXJuIG1fZ3JpZFty
b3ddW2NvbHVtbl07IH0KLQotICAgICAgICBpbnQgc21hbGxlc3RUcmFja1N0YXJ0KEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbikgY29uc3Q7Ci0gICAgICAgIHZvaWQgc2V0U21hbGxlc3RUcmFja3NT
dGFydChpbnQgcm93U3RhcnQsIGludCBjb2x1bW5TdGFydCk7Ci0KLSAgICAgICAgdW5zaWduZWQg
YXV0b1JlcGVhdFRyYWNrcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OwotICAgICAg
ICB2b2lkIHNldEF1dG9SZXBlYXRUcmFja3ModW5zaWduZWQgYXV0b1JlcGVhdFJvd3MsIHVuc2ln
bmVkIGF1dG9SZXBlYXRDb2x1bW5zKTsKLQotICAgICAgICB2b2lkIHNldEF1dG9SZXBlYXRFbXB0
eUNvbHVtbnMoc3RkOjp1bmlxdWVfcHRyPE9yZGVyZWRUcmFja0luZGV4U2V0Pik7Ci0gICAgICAg
IHZvaWQgc2V0QXV0b1JlcGVhdEVtcHR5Um93cyhzdGQ6OnVuaXF1ZV9wdHI8T3JkZXJlZFRyYWNr
SW5kZXhTZXQ+KTsKLQotICAgICAgICB1bnNpZ25lZCBhdXRvUmVwZWF0RW1wdHlUcmFja3NDb3Vu
dChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OwotICAgICAgICBib29sIGhhc0F1dG9S
ZXBlYXRFbXB0eVRyYWNrcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OwotICAgICAg
ICBib29sIGlzRW1wdHlBdXRvUmVwZWF0VHJhY2soR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCB1
bnNpZ25lZCkgY29uc3Q7Ci0KLSAgICAgICAgT3JkZXJlZFRyYWNrSW5kZXhTZXQqIGF1dG9SZXBl
YXRFbXB0eVRyYWNrcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OwotCi0gICAgICAg
IE9yZGVySXRlcmF0b3ImIG9yZGVySXRlcmF0b3IoKSB7IHJldHVybiBtX29yZGVySXRlcmF0b3I7
IH0KLQotICAgICAgICB2b2lkIHNldE5lZWRzSXRlbXNQbGFjZW1lbnQoYm9vbCk7Ci0gICAgICAg
IGJvb2wgbmVlZHNJdGVtc1BsYWNlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNJdGVtc1Bs
YWNlbWVudDsgfTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBHcmlkSXRl
cmF0b3I7Ci0KLSAgICAgICAgT3JkZXJJdGVyYXRvciBtX29yZGVySXRlcmF0b3I7Ci0KLSAgICAg
ICAgaW50IG1fc21hbGxlc3RDb2x1bW5TdGFydCB7IDAgfTsKLSAgICAgICAgaW50IG1fc21hbGxl
c3RSb3dTdGFydCB7IDAgfTsKLQotICAgICAgICB1bnNpZ25lZCBtX2F1dG9SZXBlYXRDb2x1bW5z
IHsgMCB9OwotICAgICAgICB1bnNpZ25lZCBtX2F1dG9SZXBlYXRSb3dzIHsgMCB9OwotCi0gICAg
ICAgIGJvb2wgbV9oYXNBbnlPcnRob2dvbmFsR3JpZEl0ZW0geyBmYWxzZSB9OwotICAgICAgICBi
b29sIG1fbmVlZHNJdGVtc1BsYWNlbWVudCB7IHRydWUgfTsKLQotICAgICAgICBHcmlkQXNNYXRy
aXggbV9ncmlkOwotCi0gICAgICAgIEhhc2hNYXA8Y29uc3QgUmVuZGVyQm94KiwgR3JpZEFyZWE+
IG1fZ3JpZEl0ZW1BcmVhOwotICAgICAgICBIYXNoTWFwPGNvbnN0IFJlbmRlckJveCosIHNpemVf
dD4gbV9ncmlkSXRlbXNJbmRleGVzTWFwOwotCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxPcmRl
cmVkVHJhY2tJbmRleFNldD4gbV9hdXRvUmVwZWF0RW1wdHlDb2x1bW5zOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+IG1fYXV0b1JlcGVhdEVtcHR5Um93czsK
LSAgICB9OwogICAgIEdyaWQgbV9ncmlkOwogCiAgICAgVmVjdG9yPExheW91dFVuaXQ+IG1fY29s
dW1uUG9zaXRpb25zOwo=
</data>
<flag name="review"
          id="321851"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>