<?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>161129</bug_id>
          
          <creation_ts>2016-08-24 00:12:57 -0700</creation_ts>
          <short_desc>[JSC] Make FRound work with any type</short_desc>
          <delta_ts>2016-08-24 18:23:37 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1222610</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-08-24 00:12:57 -0700</bug_when>
    <thetext>[JSC] Make FRound work with any type</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222611</commentid>
    <comment_count>1</comment_count>
      <attachid>286840</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-08-24 00:20:35 -0700</bug_when>
    <thetext>Created attachment 286840
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222612</commentid>
    <comment_count>2</comment_count>
      <attachid>286841</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-08-24 00:21:48 -0700</bug_when>
    <thetext>Created attachment 286841
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222847</commentid>
    <comment_count>3</comment_count>
      <attachid>286841</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-08-24 15:28:17 -0700</bug_when>
    <thetext>Comment on attachment 286841
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222923</commentid>
    <comment_count>4</comment_count>
      <attachid>286841</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-24 18:23:33 -0700</bug_when>
    <thetext>Comment on attachment 286841
Patch

Clearing flags on attachment: 286841

Committed r204947: &lt;http://trac.webkit.org/changeset/204947&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222924</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-24 18:23:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286840</attachid>
            <date>2016-08-24 00:20:35 -0700</date>
            <delta_ts>2016-08-24 00:21:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161129-20160824001835.patch</filename>
            <type>text/plain</type>
            <size>21622</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0ODg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
MTc1Y2RiODljOGQyMGU1MzFhNWJkZjkxMTZmZWFiZDgyZmUyNzEwLi40YWJkYWE5N2U0OTU4OGVj
MWRhNzgyNmJlM2QyYTM4OWM4YThkOTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAxNi0wOC0yNCAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgW0pTQ10gTWFrZSBGUm91bmQgd29yayB3aXRoIGFueSB0eXBlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjExMjkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXRoLmZyb3Vu
ZCgpIGRvZXMgbm90aGluZyB3aXRoIGFyZ3VtZW50cyBwYXN0IHRoZSBmaXJzdCBvbmUKKyAgICAg
ICAgKGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW1hdGguZnJvdW5kKS4KKyAg
ICAgICAgV2UgY2FuIHVuaWZ5IEFyaXRoRlJvdW5kIHdpdGggdGhlIG90aGVyIHNpbmdsZS1pbnB1
dCBpbnRyaW5zaWNzLgorCisgICAgICAgIEV2ZXJ5dGhpbmcgZWxzZSBpcyBzYW1lIG9sZDogaWYg
dGhlIGlucHV0IHR5cGUgaXMgbm90IGEgbnVtYmVyLAorICAgICAgICBiZSBwZXNzaW1pc3RpYyBh
Ym91dCBldmVyeXRoaW5nIGFuZCBkbyBhIEMgY2FsbC4KKworICAgICAgICAqIGRmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICog
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRml4
dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToK
KyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9u
cy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlQXJpdGhGUm91bmQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
KToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRoRlJvdW5kKToKKwogMjAxNi0wOC0yMyAg
U2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBJdCBzaG91bGQgYmUg
ZWFzeSB0byBydW4gRVM2U2FtcGxlQmVuY2ggZnJvbSB0aGUganNjIHNoZWxsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmgKaW5kZXggMmQ1MDUxOGFjODExNGI1ODkxNzY1NTBhNDNlYWMxMjQ5NTRmMTVjNy4uMzI5
N2UzNzdmYzg5NGZlYjEyMWQ2NThlMzgzNmI2ZjNiN2Q1MGY3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aApAQCAtOTc0LDcgKzk3NCwxMCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAg
ICAgc2V0Q29uc3RhbnQobm9kZSwganNEb3VibGVOdW1iZXIoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNo
aWxkLmFzTnVtYmVyKCkpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAg
ICBmb3JOb2RlKG5vZGUpLnNldFR5cGUodHlwZU9mRG91YmxlUm91bmRpbmcoZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkubV90eXBlKSk7CisgICAgICAgIFNwZWN1bGF0ZWRUeXBlIGZyb3VuZFR5cGUg
PSBTcGVjRnVsbE51bWJlcjsKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9
PSBEb3VibGVSZXBVc2UpCisgICAgICAgICAgICBmcm91bmRUeXBlID0gdHlwZU9mRG91YmxlVW5h
cnlPcChmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpOworICAgICAgICBmb3JOb2RlKG5v
ZGUpLnNldFR5cGUoZnJvdW5kVHlwZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmlu
ZGV4IDc4NDUwYWQ5MTM3Nzc5YzU2MDlkZTFmOTZlMjJjNmZlYTFkNzkwMjMuLjJjY2E1NWQ0NDcx
NTI1OTQ4Y2YyNWVmMWNhNTYzMzU5ZWI1MmM5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yMTQwLDQxICsyMTQwLDQwIEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBpbnQg
cmVzdWx0T3BlcmFuZCwgSW50cmluCiAgICAgY2FzZSBNYXhJbnRyaW5zaWM6CiAgICAgICAgIHJl
dHVybiBoYW5kbGVNaW5NYXgocmVzdWx0T3BlcmFuZCwgQXJpdGhNYXgsIHJlZ2lzdGVyT2Zmc2V0
LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgaW5zZXJ0Q2hlY2tzKTsKIAotICAgIGNhc2Ug
U3FydEludHJpbnNpYzoKICAgICBjYXNlIENvc0ludHJpbnNpYzoKKyAgICBjYXNlIEZSb3VuZElu
dHJpbnNpYzoKKyAgICBjYXNlIExvZ0ludHJpbnNpYzoKICAgICBjYXNlIFNpbkludHJpbnNpYzoK
LSAgICBjYXNlIExvZ0ludHJpbnNpYzogeworICAgIGNhc2UgU3FydEludHJpbnNpYzogewogICAg
ICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPT0gMSkgewogICAgICAgICAgICAg
aW5zZXJ0Q2hlY2tzKCk7CiAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9w
ZXJhbmQpLCBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhtX2NvbnN0YW50TmFOKSkpOwog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgCisKKyAgICAgICAg
Tm9kZVR5cGUgbm9kZVR5cGUgPSBVbnJlYWNoYWJsZTsKICAgICAgICAgc3dpdGNoIChpbnRyaW5z
aWMpIHsKLSAgICAgICAgY2FzZSBTcXJ0SW50cmluc2ljOgotICAgICAgICAgICAgaW5zZXJ0Q2hl
Y2tzKCk7Ci0gICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBh
ZGRUb0dyYXBoKEFyaXRoU3FydCwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJl
Z2lzdGVyT2Zmc2V0KSkpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAg
CiAgICAgICAgIGNhc2UgQ29zSW50cmluc2ljOgotICAgICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7
Ci0gICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBhZGRUb0dy
YXBoKEFyaXRoQ29zLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJP
ZmZzZXQpKSkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAKLSAgICAg
ICAgY2FzZSBTaW5JbnRyaW5zaWM6Ci0gICAgICAgICAgICBpbnNlcnRDaGVja3MoKTsKLSAgICAg
ICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGFkZFRvR3JhcGgoQXJp
dGhTaW4sIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkp
KSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQorICAgICAgICAgICAgbm9kZVR5cGUgPSBB
cml0aENvczsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZSb3VuZEludHJpbnNp
YzoKKyAgICAgICAgICAgIG5vZGVUeXBlID0gQXJpdGhGUm91bmQ7CisgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBMb2dJbnRyaW5zaWM6Ci0gICAgICAgICAgICBpbnNlcnRDaGVja3Mo
KTsKLSAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGFkZFRv
R3JhcGgoQXJpdGhMb2csIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rl
ck9mZnNldCkpKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIAorICAg
ICAgICAgICAgbm9kZVR5cGUgPSBBcml0aExvZzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFNpbkludHJpbnNpYzoKKyAgICAgICAgICAgIG5vZGVUeXBlID0gQXJpdGhTaW47Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTcXJ0SW50cmluc2ljOgorICAgICAgICAg
ICAgbm9kZVR5cGUgPSBBcml0aFNxcnQ7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KKyAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7Cisg
ICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGFkZFRvR3JhcGgobm9k
ZVR5cGUsIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkp
KSk7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGNhc2UgUG93SW50cmluc2lj
OiB7CkBAIC0yNDc2LDE1ICsyNDc1LDYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50
cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIGludCByZXN1bHRPcGVyYW5kLCBJbnRyaW4KICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIEZSb3VuZEludHJpbnNp
YzogewotICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gMikKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7Ci0gICAgICAgIFZp
cnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVn
aXN0ZXJPZmZzZXQpOwotICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQp
LCBhZGRUb0dyYXBoKEFyaXRoRlJvdW5kLCBnZXQob3BlcmFuZCkpKTsKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotICAgICAgICAKICAgICBjYXNlIERGR1RydWVJbnRyaW5zaWM6IHsKICAg
ICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0
T3BlcmFuZCksIGpzQ29uc3RhbnQoanNCb29sZWFuKHRydWUpKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDU5NjQ3NTNlZDA4NjU0MzdhZmZmNWNiNTBj
YTk1YTUyNTAzY2ViOWUuLmMxY2Y5N2I5YjA3ZDlhM2U0MGVlZmVkNTZkMTM4ZTljYTJhZDFlMjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xNTQsNyAr
MTU0LDYgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3Qg
UmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIEFyaXRoTWluOgogICAg
IGNhc2UgQXJpdGhNYXg6CiAgICAgY2FzZSBBcml0aFBvdzoKLSAgICBjYXNlIEFyaXRoRlJvdW5k
OgogICAgIGNhc2UgR2V0U2NvcGU6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBHZXRH
bG9iYWxPYmplY3Q6CkBAIC0xODcsNiArMTg2LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSBBcml0aENvczoKKyAgICBjYXNlIEFyaXRoRlJv
dW5kOgogICAgIGNhc2UgQXJpdGhMb2c6CiAgICAgY2FzZSBBcml0aFNpbjoKICAgICBjYXNlIEFy
aXRoU3FydDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmlu
ZGV4IGRkYTJmNTk2ODk0MzE3YWU3ZDI3ODI0NDBhZjkyOGViMTIxYTU4ZmIuLjIzZjFhN2E1NWNj
ODVlNmRjNTU0ZWYzNjMwZTdjYzNmOTUyZGQ5ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMzg3LDYgKzM4Nyw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIH0KIAogICAgICAgICBjYXNlIEFyaXRoQ29zOgorICAgICAgICBjYXNlIEFyaXRoRlJvdW5k
OgogICAgICAgICBjYXNlIEFyaXRoTG9nOgogICAgICAgICBjYXNlIEFyaXRoU2luOgogICAgICAg
ICBjYXNlIEFyaXRoU3FydDogewpAQCAtMzk3LDExICszOTgsNiBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4oY2hpbGQxKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQXJpdGhGUm91bmQ6IHsKLSAgICAgICAgICAgIGZp
eERvdWJsZU9yQm9vbGVhbkVkZ2Uobm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgbm9kZS0+
c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIExvZ2ljYWxOb3Q6IHsKICAgICAgICAgICAg
IGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQm9vbGVhbigpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggNzMzYzM4NDJmMDVmYjJlZTA5NDY5
NWZlMzczNTA5NTcyMzRkOWJiNC4uMDg0YTM3ZWRlN2ZjZGNiMzY4MzM2YTVkMmI1ZWIwMzA3OTkx
OWE0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMTUyLDcg
KzE1Miw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhBcml0
aEFicywgTm9kZVJlc3VsdE51bWJlciB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhB
cml0aE1pbiwgTm9kZVJlc3VsdE51bWJlcikgXAogICAgIG1hY3JvKEFyaXRoTWF4LCBOb2RlUmVz
dWx0TnVtYmVyKSBcCi0gICAgbWFjcm8oQXJpdGhGUm91bmQsIE5vZGVSZXN1bHROdW1iZXIpIFwK
KyAgICBtYWNybyhBcml0aEZSb3VuZCwgTm9kZVJlc3VsdERvdWJsZSkgXAogICAgIG1hY3JvKEFy
aXRoUG93LCBOb2RlUmVzdWx0RG91YmxlKSBcCiAgICAgbWFjcm8oQXJpdGhSYW5kb20sIE5vZGVS
ZXN1bHREb3VibGUgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQXJpdGhSb3VuZCwg
Tm9kZVJlc3VsdE51bWJlcikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAKaW5kZXggMDMzNDUxYjY3ZmRhMDI1ODRhNjdjMjA1OTVhOThkZTc3M2ZjYWNlYy4u
ZDIzZGM0NTM3MmUxYjFiZWNiNzliOTZhMjhkYmM3OGE1NWY4NDJmOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0zMzQsNiArMzM0LDE4IEBAIGRv
dWJsZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoQ29zKEV4ZWNTdGF0ZSogZXhlYywgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wCiAgICAgcmV0dXJuIGNvcyhhKTsKIH0KIAorZG91YmxlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhGUm91bmQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AxKQoreworICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworCisgICAgSlNWYWx1ZSBvcDEg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7CisgICAgZG91YmxlIGEgPSBvcDEudG9OdW1i
ZXIoZXhlYyk7CisgICAgaWYgKFVOTElLRUxZKHZtLT5leGNlcHRpb24oKSkpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
ZmxvYXQ+KGEpOworfQorCiBkb3VibGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aExvZyhF
eGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpCiB7CiAgICAgVk0qIHZt
ID0gJmV4ZWMtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5o
CmluZGV4IGYyMTkzNTdkYWIxYzA5ODI1MTBkMmY1YTA3NjcxY2EzMTQwZDdiZjMuLmYwMTE3YThk
ZjkxMTA2MGEwMzNhZDEwOTg0MGY4NmEyM2ExZTAzMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5oCkBAIC01NCw2ICs1NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRVUlNoaWZ0KEV4ZWNTdGF0ZSosIEVuY29kZWRK
U1ZhbHVlCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkTm90
TnVtYmVyKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVmFsdWVEaXYoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikgV1RGX0lOVEVSTkFMOwogZG91YmxlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQXJpdGhDb3MoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMSkgV1RGX0lOVEVSTkFMOworZG91YmxlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJp
dGhGUm91bmQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkgV1RGX0lOVEVS
TkFMOwogZG91YmxlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhMb2coRXhlY1N0YXRlKiwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkgV1RGX0lOVEVSTkFMOwogZG91YmxlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQXJpdGhTaW4oRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSkgV1RGX0lOVEVSTkFMOwogZG91YmxlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhT
cXJ0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpIFdURl9JTlRFUk5BTDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5k
ZXggM2NkY2U3NzkxMGY4NmViYWZhNzVjMmVhODExOWVmYzMyODJkNTM5Ni4uYzIyZGY3YmUzZjI2
MzNjZTJkOTMwNTU1MDk1ZWIyZWE1Y2JlZTk1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTQ1NTEsNiArNDU1MSwyNiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhEaXYoTm9kZSogbm9kZSkKICAgICB9CiB9CiAK
K3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aEZSb3VuZChOb2RlKiBub2RlKQorewor
ICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gRG91YmxlUmVwVXNlKSB7CisgICAg
ICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEpOworICAgICAgICBtX2ppdC5jb252
ZXJ0RG91YmxlVG9GbG9hdChvcDEuZnByKCksIHJlc3VsdC5mcHIoKSk7CisgICAgICAgIG1faml0
LmNvbnZlcnRGbG9hdFRvRG91YmxlKHJlc3VsdC5mcHIoKSwgcmVzdWx0LmZwcigpKTsKKyAgICAg
ICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBKU1ZhbHVlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEpTVmFsdWVSZWdzIG9wMVJlZ3MgPSBvcDEuanNWYWx1ZVJlZ3MoKTsKKyAgICBmbHVzaFJlZ2lz
dGVycygpOworICAgIEZQUlJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25Bcml0aEZSb3VuZCwgcmVzdWx0LmZwcigpLCBvcDFSZWdzKTsKKyAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOworICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOwor
fQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhNb2QoTm9kZSogbm9kZSkKIHsK
ICAgICBzd2l0Y2ggKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDgyN2I0ZTdiMWYxNDBmOTkwYzg5
YWQ0NWZiMTM3ZDA3OWE4NzE1YTYuLjE1ZWJkYmE2NjlhYjUyNWFlMGMyMmUyMzA1NDJmZTA5MDE0
YjQ0NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgKQEAgLTI0NzQsNiArMjQ3NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVBcml0aE5l
Z2F0ZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQXJpdGhNdWwoTm9kZSopOwogICAgIHZvaWQg
Y29tcGlsZUFyaXRoRGl2KE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVBcml0aEZSb3VuZChOb2Rl
Kik7CiAgICAgdm9pZCBjb21waWxlQXJpdGhNb2QoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUFy
aXRoUG93KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVBcml0aFJvdW5kaW5nKE5vZGUqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCmluZGV4IDIzODFmNTI0YWFjZjU5NDFiNmQzMWRhYmJkMjAyNmUwY2I3YmRmM2EuLmFhYmRi
NmViYzgwNzEwZGRlYTQ3MzI1NjZjN2ViY2RlMjVhMDlhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMjM2Nywx
NiArMjM2Nyw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgY29tcGlsZUFyaXRoU3FydChub2RlKTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNl
IEFyaXRoRlJvdW5kOiB7Ci0gICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEp
OwotICAgICAgICAKLSAgICAgICAgbV9qaXQuY29udmVydERvdWJsZVRvRmxvYXQob3AxLmZwcigp
LCByZXN1bHQuZnByKCkpOwotICAgICAgICBtX2ppdC5jb252ZXJ0RmxvYXRUb0RvdWJsZShyZXN1
bHQuZnByKCksIHJlc3VsdC5mcHIoKSk7Ci0gICAgICAgIAotICAgICAgICBkb3VibGVSZXN1bHQo
cmVzdWx0LmZwcigpLCBub2RlKTsKKyAgICBjYXNlIEFyaXRoRlJvdW5kOgorICAgICAgICBjb21w
aWxlQXJpdGhGUm91bmQobm9kZSk7CiAgICAgICAgIGJyZWFrOwotICAgIH0KIAogICAgIGNhc2Ug
QXJpdGhSYW5kb206CiAgICAgICAgIGNvbXBpbGVBcml0aFJhbmRvbShub2RlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGJj
NjgxZGZiNzNlZGQwNzc1ZGMzY2UyY2JlYmM0MmQyYWE5ZGE3OGEuLjBkNGQxYzFmMWI3N2VkYzFl
NDIyOGFiNDM2YjE2M2Q4YTdmZTJlNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMjQ5MSwxNiArMjQ5MSw5IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUFyaXRo
U3FydChub2RlKTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIEFyaXRoRlJvdW5kOiB7Ci0g
ICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEpOwotICAgICAgICAKLSAgICAg
ICAgbV9qaXQuY29udmVydERvdWJsZVRvRmxvYXQob3AxLmZwcigpLCByZXN1bHQuZnByKCkpOwot
ICAgICAgICBtX2ppdC5jb252ZXJ0RmxvYXRUb0RvdWJsZShyZXN1bHQuZnByKCksIHJlc3VsdC5m
cHIoKSk7Ci0gICAgICAgIAotICAgICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBub2Rl
KTsKKyAgICBjYXNlIEFyaXRoRlJvdW5kOgorICAgICAgICBjb21waWxlQXJpdGhGUm91bmQobm9k
ZSk7CiAgICAgICAgIGJyZWFrOwotICAgIH0KIAogICAgIGNhc2UgQXJpdGhSYW5kb206CiAgICAg
ICAgIGNvbXBpbGVBcml0aFJhbmRvbShub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBiNjkyYjhmNzBlMjZiZDcwOTQxZTg1M2E0MWMx
MmU3YTk4ZGUwMzM2Li5lOGZmZjM1YTBmNjRjYjc2ODRkYzI3ZTExZGJjNjU5MmQ3YjJmZThkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0y
MzE1LDcgKzIzMTUsMTMgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGNvbXBpbGVBcml0aEZS
b3VuZCgpCiAgICAgewotICAgICAgICBzZXREb3VibGUobV9vdXQuZnJvdW5kKGxvd0RvdWJsZSht
X25vZGUtPmNoaWxkMSgpKSkpOworICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkgPT0gRG91YmxlUmVwVXNlKSB7CisgICAgICAgICAgICBzZXREb3VibGUobV9vdXQuZnJvdW5k
KGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIExWYWx1ZSBhcmd1bWVudCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoRG91YmxlLCBtX291dC5vcGVy
YXRpb24ob3BlcmF0aW9uQXJpdGhGUm91bmQpLCBtX2NhbGxGcmFtZSwgYXJndW1lbnQpOworICAg
ICAgICBzZXREb3VibGUocmVzdWx0KTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlQXJp
dGhOZWdhdGUoKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5n
ZUxvZwppbmRleCAxODcwOWZiZTcxYWNmNTA4ZjEzOGEzODUwMzQxYWI1OTkwODVjYmE5Li5kMzNj
M2I3NTRjNTg4Y2QxZTVlZmE4Y2RjZTk0M2EzNmRiNTlhMzhjIDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE2
LTA4LTI0ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBbSlNDXSBNYWtlIEZSb3VuZCB3b3JrIHdpdGggYW55IHR5cGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTEyOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2FyaXRoLWZyb3VuZC1vbi12
YXJpb3VzLXR5cGVzLmpzOiBBZGRlZC4KKwogMjAxNi0wOC0yMyAgQmVuamFtaW4gUG91bGFpbiAg
PGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0pTQ10gTWFrZSBBcml0aExvZyB3b3Jr
cyB3aXRoIGFueSB0eXBlCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hcml0aC1mcm91bmQt
b24tdmFyaW91cy10eXBlcy5qcyBiL0pTVGVzdHMvc3RyZXNzL2FyaXRoLWZyb3VuZC1vbi12YXJp
b3VzLXR5cGVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4MzNhOGRiOWQwYTc1MWM0YjBkZmYyZWE4YzFiN2Ix
NWE1MDFmZTgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hcml0aC1mcm91bmQt
b24tdmFyaW91cy10eXBlcy5qcwpAQCAtMCwwICsxLDE5MCBAQAorInVzZSBzdHJpY3QiOworCits
ZXQgZnJvdW5kT2ZQaSA9IE1hdGguZnJvdW5kKE1hdGguUEkpOworbGV0IGZyb3VuZE9mRSA9IE1h
dGguZnJvdW5kKE1hdGguRSk7CisKK2xldCB2YWxpZElucHV0VGVzdENhc2VzID0gWworICAgIC8v
IGlucHV0IGFzIHN0cmluZywgZXhwZWN0ZWQgcmVzdWx0IGFzIHN0cmluZy4KKyAgICBbInVuZGVm
aW5lZCIsICJOYU4iXSwKKyAgICBbIm51bGwiLCAiMCJdLAorICAgIFsiMCIsICIwIl0sCisgICAg
WyItMC4iLCAiLTAiXSwKKyAgICBbIjEuIiwgIjEiXSwKKyAgICBbIk1hdGguUEkiLCAiIiArIGZy
b3VuZE9mUGldLAorICAgIFsiTWF0aC5FIiwgIiIgKyBmcm91bmRPZkVdLAorICAgIFsiSW5maW5p
dHkiLCAiSW5maW5pdHkiXSwKKyAgICBbIi1JbmZpbml0eSIsICItSW5maW5pdHkiXSwKKyAgICBb
Ik5hTiIsICJOYU4iXSwKKyAgICBbIlwiV2ViS2l0XCIiLCAiTmFOIl0sCisgICAgWyJcIiIgKyBN
YXRoLlBJICsgIlwiIiwgIiIgKyBmcm91bmRPZlBpXSwKKyAgICBbInsgdmFsdWVPZjogKCkgPT4g
eyByZXR1cm4gTWF0aC5FOyB9IH0iLCAiIiArIGZyb3VuZE9mRV0sCisgICAgWyJ7IHZhbHVlT2Y6
ICgpID0+IHsgcmV0dXJuIDE7IH0gfSIsICIxIl0sCisgICAgWyJ7IHZhbHVlT2Y6ICgpID0+IHsg
cmV0dXJuIE1hdGguUEk7IH0gfSIsICIiICsgZnJvdW5kT2ZQaV0sCitdOworCitsZXQgdmFsaWRJ
bnB1dFR5cGVkVGVzdENhc2VzID0gdmFsaWRJbnB1dFRlc3RDYXNlcy5tYXAoKGVsZW1lbnQpID0+
IHsgcmV0dXJuIFtldmFsKCIoIiArIGVsZW1lbnRbMF0gKyAiKSIpLCBldmFsKGVsZW1lbnRbMV0p
XSB9KTsKKworZnVuY3Rpb24gaXNJZGVudGljYWwocmVzdWx0LCBleHBlY3RlZCkKK3sKKyAgICBp
ZiAoZXhwZWN0ZWQgPT09IGV4cGVjdGVkKSB7CisgICAgICAgIGlmIChyZXN1bHQgIT09IGV4cGVj
dGVkKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIWV4cGVjdGVkICYm
IDEgLyBleHBlY3RlZCA9PT0gLUluZmluaXR5ICYmIDEgLyByZXN1bHQgIT09IC1JbmZpbml0eSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisgICAgcmV0dXJuIHJlc3VsdCAhPT0gcmVzdWx0OworfQorCisvLyBUZXN0IE1hdGguZnJvdW5k
KCkgd2l0aG91dCBhcmd1bWVudHMuCitmdW5jdGlvbiBvcGFxdWVGUm91bmROb0FyZ3VtZW50KCkg
eworICAgIHJldHVybiBNYXRoLmZyb3VuZCgpOworfQorbm9JbmxpbmUob3BhcXVlRlJvdW5kTm9B
cmd1bWVudCk7Citub09TUkV4aXRGdXp6aW5nKG9wYXF1ZUZSb3VuZE5vQXJndW1lbnQpOworCitm
dW5jdGlvbiB0ZXN0Tm9Bcmd1bWVudCgpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsg
KytpKSB7CisgICAgICAgIGxldCBvdXRwdXQgPSBvcGFxdWVGUm91bmROb0FyZ3VtZW50KCk7Cisg
ICAgICAgIGlmIChvdXRwdXQgPT09IG91dHB1dCkgeworICAgICAgICAgICAgdGhyb3cgIkZhaWxl
ZCBvcGFxdWVGUm91bmROb0FyZ3VtZW50IjsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAobnVt
YmVyT2ZERkdDb21waWxlcyhvcGFxdWVGUm91bmROb0FyZ3VtZW50KSA+IDEpCisgICAgICAgIHRo
cm93ICJUaGUgY2FsbCB3aXRob3V0IGFyZ3VtZW50cyBzaG91bGQgbmV2ZXIgZXhpdC4iOworfQor
dGVzdE5vQXJndW1lbnQoKTsKKworLy8gVGVzdCBNYXRoLmZyb3VuZCgpIHdpdGggYSB2ZXJ5IHBv
bHltb3JwaGljIGlucHV0LiBBbGwgdGVzdCBjYXNlcyBhcmUgc2VlbiBhdCBlYWNoIGl0ZXJhdGlv
bi4KK2Z1bmN0aW9uIG9wYXF1ZUFsbFR5cGVzTG9nKGFyZ3VtZW50KSB7CisgICAgcmV0dXJuIE1h
dGguZnJvdW5kKGFyZ3VtZW50KTsKK30KK25vSW5saW5lKG9wYXF1ZUFsbFR5cGVzTG9nKTsKK25v
T1NSRXhpdEZ1enppbmcob3BhcXVlQWxsVHlwZXNMb2cpOworCitmdW5jdGlvbiB0ZXN0QWxsVHlw
ZXNDYWxsKCkgeworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKKyAgICAgICAg
Zm9yIChsZXQgdGVzdENhc2VJbnB1dCBvZiB2YWxpZElucHV0VHlwZWRUZXN0Q2FzZXMpIHsKKyAg
ICAgICAgICAgIGxldCBvdXRwdXQgPSBvcGFxdWVBbGxUeXBlc0xvZyh0ZXN0Q2FzZUlucHV0WzBd
KTsKKyAgICAgICAgICAgIGlmICghaXNJZGVudGljYWwob3V0cHV0LCB0ZXN0Q2FzZUlucHV0WzFd
KSkKKyAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIHRlc3RBbGxUeXBlc0NhbGwgZm9yIGlu
cHV0ICIgKyB0ZXN0Q2FzZUlucHV0WzBdICsgIiBleHBlY3RlZCAiICsgdGVzdENhc2VJbnB1dFsx
XSArICIgZ290ICIgKyBvdXRwdXQ7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKG51bWJlck9m
REZHQ29tcGlsZXMob3BhcXVlQWxsVHlwZXNMb2cpID4gMikKKyAgICAgICAgdGhyb3cgIldlIHNo
b3VsZCBoYXZlIGRldGVjdGVkIGxvZygpIHdhcyBwb2x5bW9ycGhpYyBhbmQgZ2VuZXJhdGVkIGEg
Z2VuZXJpYyB2ZXJzaW9uLiI7Cit9Cit0ZXN0QWxsVHlwZXNDYWxsKCk7CisKKworLy8gVGVzdCBN
YXRoLmZyb3VuZCgpIG9uIGEgY29tcGxldGVseSB0eXBlZCBpbnB1dC4gRXZlcnkgY2FsbCBzZWUg
b25seSBvbmUgdHlwZS4KK2Z1bmN0aW9uIHRlc3RTaW5nbGVUeXBlQ2FsbCgpIHsKKyAgICBmb3Ig
KGxldCB0ZXN0Q2FzZUlucHV0IG9mIHZhbGlkSW5wdXRUZXN0Q2FzZXMpIHsKKyAgICAgICAgZXZh
bChgCisgICAgICAgICAgICBmdW5jdGlvbiBvcGFxdWVMb2coYXJndW1lbnQpIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gTWF0aC5mcm91bmQoYXJndW1lbnQpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgbm9JbmxpbmUob3BhcXVlTG9nKTsKKyAgICAgICAgICAgIG5vT1NSRXhpdEZ1enpp
bmcob3BhcXVlTG9nKTsKKworICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsr
aSkgeworICAgICAgICAgICAgICAgIGlmICghaXNJZGVudGljYWwob3BhcXVlTG9nKCR7dGVzdENh
c2VJbnB1dFswXX0pLCAke3Rlc3RDYXNlSW5wdXRbMV19KSkgeworICAgICAgICAgICAgICAgICAg
ICB0aHJvdyAiRmFpbGVkIHRlc3RTaW5nbGVUeXBlQ2FsbCgpIjsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobnVtYmVyT2ZERkdDb21waWxlcyhvcGFx
dWVMb2cpID4gMSkKKyAgICAgICAgICAgICAgICB0aHJvdyAiV2Ugc2hvdWxkIGhhdmUgY29tcGls
ZWQgYSBzaW5nbGUgbG9nIGZvciB0aGUgZXhwZWN0ZWQgdHlwZS4iOworICAgICAgICBgKTsKKyAg
ICB9Cit9Cit0ZXN0U2luZ2xlVHlwZUNhbGwoKTsKKworCisvLyBWZXJpZnkgd2UgY2FsbCB2YWx1
ZU9mKCkgZXhhY3RseSBvbmNlIHBlciBjYWxsLgorZnVuY3Rpb24gb3BhcXVlTG9nRm9yU2lkZUVm
ZmVjdHMoYXJndW1lbnQpIHsKKyAgICByZXR1cm4gTWF0aC5mcm91bmQoYXJndW1lbnQpOworfQor
bm9JbmxpbmUob3BhcXVlTG9nRm9yU2lkZUVmZmVjdHMpOworbm9PU1JFeGl0RnV6emluZyhvcGFx
dWVMb2dGb3JTaWRlRWZmZWN0cyk7CisKK2Z1bmN0aW9uIHRlc3RTaWRlRWZmZWN0KCkgeworICAg
IGxldCB0ZXN0T2JqZWN0ID0geworICAgICAgICBjb3VudGVyOiAwLAorICAgICAgICB2YWx1ZU9m
OiBmdW5jdGlvbigpIHsgKyt0aGlzLmNvdW50ZXI7IHJldHVybiAxNjsgfQorICAgIH07CisgICAg
bGV0IGxvZzE2ID0gTWF0aC5mcm91bmQoMTYpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0
OyArK2kpIHsKKyAgICAgICAgaWYgKG9wYXF1ZUxvZ0ZvclNpZGVFZmZlY3RzKHRlc3RPYmplY3Qp
ICE9PSBsb2cxNikKKyAgICAgICAgICAgIHRocm93ICJJbmNvcnJlY3QgcmVzdWx0IGluIHRlc3RT
aWRlRWZmZWN0KCkiOworICAgIH0KKyAgICBpZiAodGVzdE9iamVjdC5jb3VudGVyICE9PSAxZTQp
CisgICAgICAgIHRocm93ICJGYWlsZWQgdGVzdFNpZGVFZmZlY3QoKSI7CisgICAgaWYgKG51bWJl
ck9mREZHQ29tcGlsZXMob3BhcXVlTG9nRm9yU2lkZUVmZmVjdHMpID4gMSkKKyAgICAgICAgdGhy
b3cgIm9wYXF1ZUxvZ0ZvclNpZGVFZmZlY3RzKCkgaXMgcHJlZGljdGFibGUsIGl0IHNob3VsZCBv
bmx5IGJlIGNvbXBpbGVkIG9uY2UuIjsKK30KK3Rlc3RTaWRlRWZmZWN0KCk7CisKKworLy8gVmVy
aWZ5IFNRUlQgaXMgbm90IHN1YmplY3QgdG8gQ1NFIGlmIHRoZSBhcmd1bWVudCBoYXMgc2lkZSBl
ZmZlY3RzLgorZnVuY3Rpb24gb3BhcXVlTG9nRm9yQ1NFKGFyZ3VtZW50KSB7CisgICAgcmV0dXJu
IE1hdGguZnJvdW5kKGFyZ3VtZW50KSArIE1hdGguZnJvdW5kKGFyZ3VtZW50KSArIE1hdGguZnJv
dW5kKGFyZ3VtZW50KTsKK30KK25vSW5saW5lKG9wYXF1ZUxvZ0ZvckNTRSk7Citub09TUkV4aXRG
dXp6aW5nKG9wYXF1ZUxvZ0ZvckNTRSk7CisKK2Z1bmN0aW9uIHRlc3RDU0UoKSB7CisgICAgbGV0
IHRlc3RPYmplY3QgPSB7CisgICAgICAgIGNvdW50ZXI6IDAsCisgICAgICAgIHZhbHVlT2Y6IGZ1
bmN0aW9uKCkgeyArK3RoaXMuY291bnRlcjsgcmV0dXJuIDE2OyB9CisgICAgfTsKKyAgICBsZXQg
bG9nMTYgPSBNYXRoLmZyb3VuZCgxNik7CisgICAgbGV0IHRocmVlTG9nMTYgPSBsb2cxNiArIGxv
ZzE2ICsgbG9nMTY7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAg
ICBpZiAob3BhcXVlTG9nRm9yQ1NFKHRlc3RPYmplY3QpICE9PSB0aHJlZUxvZzE2KQorICAgICAg
ICAgICAgdGhyb3cgIkluY29ycmVjdCByZXN1bHQgaW4gdGVzdENTRSgpIjsKKyAgICB9CisgICAg
aWYgKHRlc3RPYmplY3QuY291bnRlciAhPT0gM2U0KQorICAgICAgICB0aHJvdyAiRmFpbGVkIHRl
c3RDU0UoKSI7CisgICAgaWYgKG51bWJlck9mREZHQ29tcGlsZXMob3BhcXVlTG9nRm9yQ1NFKSA+
IDEpCisgICAgICAgIHRocm93ICJvcGFxdWVMb2dGb3JDU0UoKSBpcyBwcmVkaWN0YWJsZSwgaXQg
c2hvdWxkIG9ubHkgYmUgY29tcGlsZWQgb25jZS4iOworfQordGVzdENTRSgpOworCisKKy8vIFRl
c3QgZXhjZXB0aW9ucyBpbiB0aGUgYXJndW1lbnQuCitmdW5jdGlvbiB0ZXN0RXhjZXB0aW9uKCkg
eworICAgIGxldCBjb3VudGVyID0gMDsKKyAgICBmdW5jdGlvbiBvcGFxdWVMb2dXaXRoRXhjZXB0
aW9uKGFyZ3VtZW50KSB7CisgICAgICAgIGxldCByZXN1bHQgPSBNYXRoLmZyb3VuZChhcmd1bWVu
dCk7CisgICAgICAgICsrY291bnRlcjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9Cisg
ICAgbm9JbmxpbmUob3BhcXVlTG9nV2l0aEV4Y2VwdGlvbik7CisKKyAgICBsZXQgdGVzdE9iamVj
dCA9IHsgdmFsdWVPZjogKCkgPT4geyAgcmV0dXJuIDY0OyB9IH07CisgICAgbGV0IGxvZzY0ID0g
TWF0aC5mcm91bmQoNjQpOworCisgICAgLy8gV2FybSB1cCB3aXRob3V0IGV4Y2VwdGlvbi4KKyAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDFlMzsgKytpKSB7CisgICAgICAgIGlmIChvcGFxdWVMb2dX
aXRoRXhjZXB0aW9uKHRlc3RPYmplY3QpICE9PSBsb2c2NCkKKyAgICAgICAgICAgIHRocm93ICJJ
bmNvcnJlY3QgcmVzdWx0IGluIG9wYXF1ZUxvZ1dpdGhFeGNlcHRpb24oKSI7CisgICAgfQorCisg
ICAgbGV0IHRlc3RUaHJvd09iamVjdCA9IHsgdmFsdWVPZjogKCkgPT4geyB0aHJvdyB0ZXN0T2Jq
ZWN0OyByZXR1cm4gNjQ7IH0gfTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWUyOyArK2kp
IHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlmIChvcGFxdWVMb2dXaXRoRXhjZXB0aW9u
KHRlc3RUaHJvd09iamVjdCkgIT09IDgpCisgICAgICAgICAgICAgICAgdGhyb3cgIlRoaXMgY29k
ZSBzaG91bGQgbm90IGJlIHJlYWNoZWQhISI7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgICAgIGlmIChlICE9PSB0ZXN0T2JqZWN0KSB7CisgICAgICAgICAgICAgICAgdGhyb3cgIldy
b25nIG9iamVjdCB0aHJvd24gZnJvbSBvcGFxdWVMb2dXaXRoRXhjZXB0aW9uLiIKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChjb3VudGVyICE9PSAxZTMpIHsKKyAg
ICAgICAgdGhyb3cgIkludmFsaWQgY291bnQgaW4gdGVzdEV4Y2VwdGlvbigpIjsKKyAgICB9Cit9
Cit0ZXN0RXhjZXB0aW9uKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286841</attachid>
            <date>2016-08-24 00:21:48 -0700</date>
            <delta_ts>2016-08-24 18:23:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161129-20160824001948.patch</filename>
            <type>text/plain</type>
            <size>21742</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0ODg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
MTc1Y2RiODljOGQyMGU1MzFhNWJkZjkxMTZmZWFiZDgyZmUyNzEwLi40YWJkYWE5N2U0OTU4OGVj
MWRhNzgyNmJlM2QyYTM4OWM4YThkOTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAxNi0wOC0yNCAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgW0pTQ10gTWFrZSBGUm91bmQgd29yayB3aXRoIGFueSB0eXBlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjExMjkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXRoLmZyb3Vu
ZCgpIGRvZXMgbm90aGluZyB3aXRoIGFyZ3VtZW50cyBwYXN0IHRoZSBmaXJzdCBvbmUKKyAgICAg
ICAgKGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW1hdGguZnJvdW5kKS4KKyAg
ICAgICAgV2UgY2FuIHVuaWZ5IEFyaXRoRlJvdW5kIHdpdGggdGhlIG90aGVyIHNpbmdsZS1pbnB1
dCBpbnRyaW5zaWNzLgorCisgICAgICAgIEV2ZXJ5dGhpbmcgZWxzZSBpcyBzYW1lIG9sZDogaWYg
dGhlIGlucHV0IHR5cGUgaXMgbm90IGEgbnVtYmVyLAorICAgICAgICBiZSBwZXNzaW1pc3RpYyBh
Ym91dCBldmVyeXRoaW5nIGFuZCBkbyBhIEMgY2FsbC4KKworICAgICAgICAqIGRmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICog
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRml4
dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToK
KyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9u
cy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlQXJpdGhGUm91bmQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
KToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRoRlJvdW5kKToKKwogMjAxNi0wOC0yMyAg
U2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBJdCBzaG91bGQgYmUg
ZWFzeSB0byBydW4gRVM2U2FtcGxlQmVuY2ggZnJvbSB0aGUganNjIHNoZWxsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmgKaW5kZXggMmQ1MDUxOGFjODExNGI1ODkxNzY1NTBhNDNlYWMxMjQ5NTRmMTVjNy4uMzI5
N2UzNzdmYzg5NGZlYjEyMWQ2NThlMzgzNmI2ZjNiN2Q1MGY3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aApAQCAtOTc0LDcgKzk3NCwxMCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAg
ICAgc2V0Q29uc3RhbnQobm9kZSwganNEb3VibGVOdW1iZXIoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNo
aWxkLmFzTnVtYmVyKCkpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAg
ICBmb3JOb2RlKG5vZGUpLnNldFR5cGUodHlwZU9mRG91YmxlUm91bmRpbmcoZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkubV90eXBlKSk7CisgICAgICAgIFNwZWN1bGF0ZWRUeXBlIGZyb3VuZFR5cGUg
PSBTcGVjRnVsbE51bWJlcjsKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9
PSBEb3VibGVSZXBVc2UpCisgICAgICAgICAgICBmcm91bmRUeXBlID0gdHlwZU9mRG91YmxlVW5h
cnlPcChmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpOworICAgICAgICBmb3JOb2RlKG5v
ZGUpLnNldFR5cGUoZnJvdW5kVHlwZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmlu
ZGV4IDc4NDUwYWQ5MTM3Nzc5YzU2MDlkZTFmOTZlMjJjNmZlYTFkNzkwMjMuLjJjY2E1NWQ0NDcx
NTI1OTQ4Y2YyNWVmMWNhNTYzMzU5ZWI1MmM5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yMTQwLDQxICsyMTQwLDQwIEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBpbnQg
cmVzdWx0T3BlcmFuZCwgSW50cmluCiAgICAgY2FzZSBNYXhJbnRyaW5zaWM6CiAgICAgICAgIHJl
dHVybiBoYW5kbGVNaW5NYXgocmVzdWx0T3BlcmFuZCwgQXJpdGhNYXgsIHJlZ2lzdGVyT2Zmc2V0
LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgaW5zZXJ0Q2hlY2tzKTsKIAotICAgIGNhc2Ug
U3FydEludHJpbnNpYzoKICAgICBjYXNlIENvc0ludHJpbnNpYzoKKyAgICBjYXNlIEZSb3VuZElu
dHJpbnNpYzoKKyAgICBjYXNlIExvZ0ludHJpbnNpYzoKICAgICBjYXNlIFNpbkludHJpbnNpYzoK
LSAgICBjYXNlIExvZ0ludHJpbnNpYzogeworICAgIGNhc2UgU3FydEludHJpbnNpYzogewogICAg
ICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPT0gMSkgewogICAgICAgICAgICAg
aW5zZXJ0Q2hlY2tzKCk7CiAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9w
ZXJhbmQpLCBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhtX2NvbnN0YW50TmFOKSkpOwog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgCisKKyAgICAgICAg
Tm9kZVR5cGUgbm9kZVR5cGUgPSBVbnJlYWNoYWJsZTsKICAgICAgICAgc3dpdGNoIChpbnRyaW5z
aWMpIHsKLSAgICAgICAgY2FzZSBTcXJ0SW50cmluc2ljOgotICAgICAgICAgICAgaW5zZXJ0Q2hl
Y2tzKCk7Ci0gICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBh
ZGRUb0dyYXBoKEFyaXRoU3FydCwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJl
Z2lzdGVyT2Zmc2V0KSkpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAg
CiAgICAgICAgIGNhc2UgQ29zSW50cmluc2ljOgotICAgICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7
Ci0gICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBhZGRUb0dy
YXBoKEFyaXRoQ29zLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJP
ZmZzZXQpKSkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAKLSAgICAg
ICAgY2FzZSBTaW5JbnRyaW5zaWM6Ci0gICAgICAgICAgICBpbnNlcnRDaGVja3MoKTsKLSAgICAg
ICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGFkZFRvR3JhcGgoQXJp
dGhTaW4sIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkp
KSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQorICAgICAgICAgICAgbm9kZVR5cGUgPSBB
cml0aENvczsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZSb3VuZEludHJpbnNp
YzoKKyAgICAgICAgICAgIG5vZGVUeXBlID0gQXJpdGhGUm91bmQ7CisgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBMb2dJbnRyaW5zaWM6Ci0gICAgICAgICAgICBpbnNlcnRDaGVja3Mo
KTsKLSAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGFkZFRv
R3JhcGgoQXJpdGhMb2csIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rl
ck9mZnNldCkpKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIAorICAg
ICAgICAgICAgbm9kZVR5cGUgPSBBcml0aExvZzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFNpbkludHJpbnNpYzoKKyAgICAgICAgICAgIG5vZGVUeXBlID0gQXJpdGhTaW47Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTcXJ0SW50cmluc2ljOgorICAgICAgICAg
ICAgbm9kZVR5cGUgPSBBcml0aFNxcnQ7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KKyAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7Cisg
ICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGFkZFRvR3JhcGgobm9k
ZVR5cGUsIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkp
KSk7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGNhc2UgUG93SW50cmluc2lj
OiB7CkBAIC0yNDc2LDE1ICsyNDc1LDYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50
cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIGludCByZXN1bHRPcGVyYW5kLCBJbnRyaW4KICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIEZSb3VuZEludHJpbnNp
YzogewotICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gMikKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7Ci0gICAgICAgIFZp
cnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVn
aXN0ZXJPZmZzZXQpOwotICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQp
LCBhZGRUb0dyYXBoKEFyaXRoRlJvdW5kLCBnZXQob3BlcmFuZCkpKTsKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotICAgICAgICAKICAgICBjYXNlIERGR1RydWVJbnRyaW5zaWM6IHsKICAg
ICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0
T3BlcmFuZCksIGpzQ29uc3RhbnQoanNCb29sZWFuKHRydWUpKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDU5NjQ3NTNlZDA4NjU0MzdhZmZmNWNiNTBj
YTk1YTUyNTAzY2ViOWUuLmMxY2Y5N2I5YjA3ZDlhM2U0MGVlZmVkNTZkMTM4ZTljYTJhZDFlMjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xNTQsNyAr
MTU0LDYgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3Qg
UmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIEFyaXRoTWluOgogICAg
IGNhc2UgQXJpdGhNYXg6CiAgICAgY2FzZSBBcml0aFBvdzoKLSAgICBjYXNlIEFyaXRoRlJvdW5k
OgogICAgIGNhc2UgR2V0U2NvcGU6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBHZXRH
bG9iYWxPYmplY3Q6CkBAIC0xODcsNiArMTg2LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSBBcml0aENvczoKKyAgICBjYXNlIEFyaXRoRlJv
dW5kOgogICAgIGNhc2UgQXJpdGhMb2c6CiAgICAgY2FzZSBBcml0aFNpbjoKICAgICBjYXNlIEFy
aXRoU3FydDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmlu
ZGV4IGRkYTJmNTk2ODk0MzE3YWU3ZDI3ODI0NDBhZjkyOGViMTIxYTU4ZmIuLjIzZjFhN2E1NWNj
ODVlNmRjNTU0ZWYzNjMwZTdjYzNmOTUyZGQ5ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMzg3LDYgKzM4Nyw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIH0KIAogICAgICAgICBjYXNlIEFyaXRoQ29zOgorICAgICAgICBjYXNlIEFyaXRoRlJvdW5k
OgogICAgICAgICBjYXNlIEFyaXRoTG9nOgogICAgICAgICBjYXNlIEFyaXRoU2luOgogICAgICAg
ICBjYXNlIEFyaXRoU3FydDogewpAQCAtMzk3LDExICszOTgsNiBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4oY2hpbGQxKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQXJpdGhGUm91bmQ6IHsKLSAgICAgICAgICAgIGZp
eERvdWJsZU9yQm9vbGVhbkVkZ2Uobm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgbm9kZS0+
c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIExvZ2ljYWxOb3Q6IHsKICAgICAgICAgICAg
IGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQm9vbGVhbigpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggNzMzYzM4NDJmMDVmYjJlZTA5NDY5
NWZlMzczNTA5NTcyMzRkOWJiNC4uMDg0YTM3ZWRlN2ZjZGNiMzY4MzM2YTVkMmI1ZWIwMzA3OTkx
OWE0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMTUyLDcg
KzE1Miw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhBcml0
aEFicywgTm9kZVJlc3VsdE51bWJlciB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhB
cml0aE1pbiwgTm9kZVJlc3VsdE51bWJlcikgXAogICAgIG1hY3JvKEFyaXRoTWF4LCBOb2RlUmVz
dWx0TnVtYmVyKSBcCi0gICAgbWFjcm8oQXJpdGhGUm91bmQsIE5vZGVSZXN1bHROdW1iZXIpIFwK
KyAgICBtYWNybyhBcml0aEZSb3VuZCwgTm9kZVJlc3VsdERvdWJsZSkgXAogICAgIG1hY3JvKEFy
aXRoUG93LCBOb2RlUmVzdWx0RG91YmxlKSBcCiAgICAgbWFjcm8oQXJpdGhSYW5kb20sIE5vZGVS
ZXN1bHREb3VibGUgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQXJpdGhSb3VuZCwg
Tm9kZVJlc3VsdE51bWJlcikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAKaW5kZXggMDMzNDUxYjY3ZmRhMDI1ODRhNjdjMjA1OTVhOThkZTc3M2ZjYWNlYy4u
ZDIzZGM0NTM3MmUxYjFiZWNiNzliOTZhMjhkYmM3OGE1NWY4NDJmOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0zMzQsNiArMzM0LDE4IEBAIGRv
dWJsZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoQ29zKEV4ZWNTdGF0ZSogZXhlYywgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wCiAgICAgcmV0dXJuIGNvcyhhKTsKIH0KIAorZG91YmxlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhGUm91bmQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AxKQoreworICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworCisgICAgSlNWYWx1ZSBvcDEg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7CisgICAgZG91YmxlIGEgPSBvcDEudG9OdW1i
ZXIoZXhlYyk7CisgICAgaWYgKFVOTElLRUxZKHZtLT5leGNlcHRpb24oKSkpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
ZmxvYXQ+KGEpOworfQorCiBkb3VibGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aExvZyhF
eGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpCiB7CiAgICAgVk0qIHZt
ID0gJmV4ZWMtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5o
CmluZGV4IGYyMTkzNTdkYWIxYzA5ODI1MTBkMmY1YTA3NjcxY2EzMTQwZDdiZjMuLmYwMTE3YThk
ZjkxMTA2MGEwMzNhZDEwOTg0MGY4NmEyM2ExZTAzMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5oCkBAIC01NCw2ICs1NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRVUlNoaWZ0KEV4ZWNTdGF0ZSosIEVuY29kZWRK
U1ZhbHVlCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkTm90
TnVtYmVyKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVmFsdWVEaXYoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikgV1RGX0lOVEVSTkFMOwogZG91YmxlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQXJpdGhDb3MoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMSkgV1RGX0lOVEVSTkFMOworZG91YmxlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJp
dGhGUm91bmQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkgV1RGX0lOVEVS
TkFMOwogZG91YmxlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhMb2coRXhlY1N0YXRlKiwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkgV1RGX0lOVEVSTkFMOwogZG91YmxlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQXJpdGhTaW4oRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSkgV1RGX0lOVEVSTkFMOwogZG91YmxlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhT
cXJ0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpIFdURl9JTlRFUk5BTDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5k
ZXggM2NkY2U3NzkxMGY4NmViYWZhNzVjMmVhODExOWVmYzMyODJkNTM5Ni4uYzIyZGY3YmUzZjI2
MzNjZTJkOTMwNTU1MDk1ZWIyZWE1Y2JlZTk1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTQ1NTEsNiArNDU1MSwyNiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhEaXYoTm9kZSogbm9kZSkKICAgICB9CiB9CiAK
K3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aEZSb3VuZChOb2RlKiBub2RlKQorewor
ICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gRG91YmxlUmVwVXNlKSB7CisgICAg
ICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEpOworICAgICAgICBtX2ppdC5jb252
ZXJ0RG91YmxlVG9GbG9hdChvcDEuZnByKCksIHJlc3VsdC5mcHIoKSk7CisgICAgICAgIG1faml0
LmNvbnZlcnRGbG9hdFRvRG91YmxlKHJlc3VsdC5mcHIoKSwgcmVzdWx0LmZwcigpKTsKKyAgICAg
ICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBKU1ZhbHVlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEpTVmFsdWVSZWdzIG9wMVJlZ3MgPSBvcDEuanNWYWx1ZVJlZ3MoKTsKKyAgICBmbHVzaFJlZ2lz
dGVycygpOworICAgIEZQUlJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25Bcml0aEZSb3VuZCwgcmVzdWx0LmZwcigpLCBvcDFSZWdzKTsKKyAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOworICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOwor
fQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhNb2QoTm9kZSogbm9kZSkKIHsK
ICAgICBzd2l0Y2ggKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDgyN2I0ZTdiMWYxNDBmOTkwYzg5
YWQ0NWZiMTM3ZDA3OWE4NzE1YTYuLjE1ZWJkYmE2NjlhYjUyNWFlMGMyMmUyMzA1NDJmZTA5MDE0
YjQ0NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgKQEAgLTI0NzQsNiArMjQ3NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVBcml0aE5l
Z2F0ZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQXJpdGhNdWwoTm9kZSopOwogICAgIHZvaWQg
Y29tcGlsZUFyaXRoRGl2KE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVBcml0aEZSb3VuZChOb2Rl
Kik7CiAgICAgdm9pZCBjb21waWxlQXJpdGhNb2QoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUFy
aXRoUG93KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVBcml0aFJvdW5kaW5nKE5vZGUqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCmluZGV4IDIzODFmNTI0YWFjZjU5NDFiNmQzMWRhYmJkMjAyNmUwY2I3YmRmM2EuLmFhYmRi
NmViYzgwNzEwZGRlYTQ3MzI1NjZjN2ViY2RlMjVhMDlhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMjM2Nywx
NiArMjM2Nyw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgY29tcGlsZUFyaXRoU3FydChub2RlKTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNl
IEFyaXRoRlJvdW5kOiB7Ci0gICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEp
OwotICAgICAgICAKLSAgICAgICAgbV9qaXQuY29udmVydERvdWJsZVRvRmxvYXQob3AxLmZwcigp
LCByZXN1bHQuZnByKCkpOwotICAgICAgICBtX2ppdC5jb252ZXJ0RmxvYXRUb0RvdWJsZShyZXN1
bHQuZnByKCksIHJlc3VsdC5mcHIoKSk7Ci0gICAgICAgIAotICAgICAgICBkb3VibGVSZXN1bHQo
cmVzdWx0LmZwcigpLCBub2RlKTsKKyAgICBjYXNlIEFyaXRoRlJvdW5kOgorICAgICAgICBjb21w
aWxlQXJpdGhGUm91bmQobm9kZSk7CiAgICAgICAgIGJyZWFrOwotICAgIH0KIAogICAgIGNhc2Ug
QXJpdGhSYW5kb206CiAgICAgICAgIGNvbXBpbGVBcml0aFJhbmRvbShub2RlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGJj
NjgxZGZiNzNlZGQwNzc1ZGMzY2UyY2JlYmM0MmQyYWE5ZGE3OGEuLjBkNGQxYzFmMWI3N2VkYzFl
NDIyOGFiNDM2YjE2M2Q4YTdmZTJlNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMjQ5MSwxNiArMjQ5MSw5IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUFyaXRo
U3FydChub2RlKTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIEFyaXRoRlJvdW5kOiB7Ci0g
ICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEpOwotICAgICAgICAKLSAgICAg
ICAgbV9qaXQuY29udmVydERvdWJsZVRvRmxvYXQob3AxLmZwcigpLCByZXN1bHQuZnByKCkpOwot
ICAgICAgICBtX2ppdC5jb252ZXJ0RmxvYXRUb0RvdWJsZShyZXN1bHQuZnByKCksIHJlc3VsdC5m
cHIoKSk7Ci0gICAgICAgIAotICAgICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBub2Rl
KTsKKyAgICBjYXNlIEFyaXRoRlJvdW5kOgorICAgICAgICBjb21waWxlQXJpdGhGUm91bmQobm9k
ZSk7CiAgICAgICAgIGJyZWFrOwotICAgIH0KIAogICAgIGNhc2UgQXJpdGhSYW5kb206CiAgICAg
ICAgIGNvbXBpbGVBcml0aFJhbmRvbShub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBiNjkyYjhmNzBlMjZiZDcwOTQxZTg1M2E0MWMx
MmU3YTk4ZGUwMzM2Li5lOGZmZjM1YTBmNjRjYjc2ODRkYzI3ZTExZGJjNjU5MmQ3YjJmZThkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0y
MzE1LDcgKzIzMTUsMTMgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGNvbXBpbGVBcml0aEZS
b3VuZCgpCiAgICAgewotICAgICAgICBzZXREb3VibGUobV9vdXQuZnJvdW5kKGxvd0RvdWJsZSht
X25vZGUtPmNoaWxkMSgpKSkpOworICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkgPT0gRG91YmxlUmVwVXNlKSB7CisgICAgICAgICAgICBzZXREb3VibGUobV9vdXQuZnJvdW5k
KGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIExWYWx1ZSBhcmd1bWVudCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoRG91YmxlLCBtX291dC5vcGVy
YXRpb24ob3BlcmF0aW9uQXJpdGhGUm91bmQpLCBtX2NhbGxGcmFtZSwgYXJndW1lbnQpOworICAg
ICAgICBzZXREb3VibGUocmVzdWx0KTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlQXJp
dGhOZWdhdGUoKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5n
ZUxvZwppbmRleCAxODcwOWZiZTcxYWNmNTA4ZjEzOGEzODUwMzQxYWI1OTkwODVjYmE5Li5kMzNj
M2I3NTRjNTg4Y2QxZTVlZmE4Y2RjZTk0M2EzNmRiNTlhMzhjIDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE2
LTA4LTI0ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBbSlNDXSBNYWtlIEZSb3VuZCB3b3JrIHdpdGggYW55IHR5cGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTEyOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2FyaXRoLWZyb3VuZC1vbi12
YXJpb3VzLXR5cGVzLmpzOiBBZGRlZC4KKwogMjAxNi0wOC0yMyAgQmVuamFtaW4gUG91bGFpbiAg
PGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0pTQ10gTWFrZSBBcml0aExvZyB3b3Jr
cyB3aXRoIGFueSB0eXBlCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hcml0aC1mcm91bmQt
b24tdmFyaW91cy10eXBlcy5qcyBiL0pTVGVzdHMvc3RyZXNzL2FyaXRoLWZyb3VuZC1vbi12YXJp
b3VzLXR5cGVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlMTdhYjJkOTFmNDQ2YTRkOTMxYWExNDM0ZmZmNThm
MjYyNGMwODcKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hcml0aC1mcm91bmQt
b24tdmFyaW91cy10eXBlcy5qcwpAQCAtMCwwICsxLDE5MCBAQAorInVzZSBzdHJpY3QiOworCits
ZXQgZnJvdW5kT2ZQaSA9IE1hdGguZnJvdW5kKE1hdGguUEkpOworbGV0IGZyb3VuZE9mRSA9IE1h
dGguZnJvdW5kKE1hdGguRSk7CisKK2xldCB2YWxpZElucHV0VGVzdENhc2VzID0gWworICAgIC8v
IGlucHV0IGFzIHN0cmluZywgZXhwZWN0ZWQgcmVzdWx0IGFzIHN0cmluZy4KKyAgICBbInVuZGVm
aW5lZCIsICJOYU4iXSwKKyAgICBbIm51bGwiLCAiMCJdLAorICAgIFsiMCIsICIwIl0sCisgICAg
WyItMC4iLCAiLTAiXSwKKyAgICBbIjEuIiwgIjEiXSwKKyAgICBbIk1hdGguUEkiLCAiIiArIGZy
b3VuZE9mUGldLAorICAgIFsiTWF0aC5FIiwgIiIgKyBmcm91bmRPZkVdLAorICAgIFsiSW5maW5p
dHkiLCAiSW5maW5pdHkiXSwKKyAgICBbIi1JbmZpbml0eSIsICItSW5maW5pdHkiXSwKKyAgICBb
Ik5hTiIsICJOYU4iXSwKKyAgICBbIlwiV2ViS2l0XCIiLCAiTmFOIl0sCisgICAgWyJcIiIgKyBN
YXRoLlBJICsgIlwiIiwgIiIgKyBmcm91bmRPZlBpXSwKKyAgICBbInsgdmFsdWVPZjogKCkgPT4g
eyByZXR1cm4gTWF0aC5FOyB9IH0iLCAiIiArIGZyb3VuZE9mRV0sCisgICAgWyJ7IHZhbHVlT2Y6
ICgpID0+IHsgcmV0dXJuIDE7IH0gfSIsICIxIl0sCisgICAgWyJ7IHZhbHVlT2Y6ICgpID0+IHsg
cmV0dXJuIE1hdGguUEk7IH0gfSIsICIiICsgZnJvdW5kT2ZQaV0sCitdOworCitsZXQgdmFsaWRJ
bnB1dFR5cGVkVGVzdENhc2VzID0gdmFsaWRJbnB1dFRlc3RDYXNlcy5tYXAoKGVsZW1lbnQpID0+
IHsgcmV0dXJuIFtldmFsKCIoIiArIGVsZW1lbnRbMF0gKyAiKSIpLCBldmFsKGVsZW1lbnRbMV0p
XSB9KTsKKworZnVuY3Rpb24gaXNJZGVudGljYWwocmVzdWx0LCBleHBlY3RlZCkKK3sKKyAgICBp
ZiAoZXhwZWN0ZWQgPT09IGV4cGVjdGVkKSB7CisgICAgICAgIGlmIChyZXN1bHQgIT09IGV4cGVj
dGVkKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIWV4cGVjdGVkICYm
IDEgLyBleHBlY3RlZCA9PT0gLUluZmluaXR5ICYmIDEgLyByZXN1bHQgIT09IC1JbmZpbml0eSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisgICAgcmV0dXJuIHJlc3VsdCAhPT0gcmVzdWx0OworfQorCisvLyBUZXN0IE1hdGguZnJvdW5k
KCkgd2l0aG91dCBhcmd1bWVudHMuCitmdW5jdGlvbiBvcGFxdWVGUm91bmROb0FyZ3VtZW50KCkg
eworICAgIHJldHVybiBNYXRoLmZyb3VuZCgpOworfQorbm9JbmxpbmUob3BhcXVlRlJvdW5kTm9B
cmd1bWVudCk7Citub09TUkV4aXRGdXp6aW5nKG9wYXF1ZUZSb3VuZE5vQXJndW1lbnQpOworCitm
dW5jdGlvbiB0ZXN0Tm9Bcmd1bWVudCgpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsg
KytpKSB7CisgICAgICAgIGxldCBvdXRwdXQgPSBvcGFxdWVGUm91bmROb0FyZ3VtZW50KCk7Cisg
ICAgICAgIGlmIChvdXRwdXQgPT09IG91dHB1dCkgeworICAgICAgICAgICAgdGhyb3cgIkZhaWxl
ZCBvcGFxdWVGUm91bmROb0FyZ3VtZW50IjsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAobnVt
YmVyT2ZERkdDb21waWxlcyhvcGFxdWVGUm91bmROb0FyZ3VtZW50KSA+IDEpCisgICAgICAgIHRo
cm93ICJUaGUgY2FsbCB3aXRob3V0IGFyZ3VtZW50cyBzaG91bGQgbmV2ZXIgZXhpdC4iOworfQor
dGVzdE5vQXJndW1lbnQoKTsKKworLy8gVGVzdCBNYXRoLmZyb3VuZCgpIHdpdGggYSB2ZXJ5IHBv
bHltb3JwaGljIGlucHV0LiBBbGwgdGVzdCBjYXNlcyBhcmUgc2VlbiBhdCBlYWNoIGl0ZXJhdGlv
bi4KK2Z1bmN0aW9uIG9wYXF1ZUFsbFR5cGVzRnJvdW5kKGFyZ3VtZW50KSB7CisgICAgcmV0dXJu
IE1hdGguZnJvdW5kKGFyZ3VtZW50KTsKK30KK25vSW5saW5lKG9wYXF1ZUFsbFR5cGVzRnJvdW5k
KTsKK25vT1NSRXhpdEZ1enppbmcob3BhcXVlQWxsVHlwZXNGcm91bmQpOworCitmdW5jdGlvbiB0
ZXN0QWxsVHlwZXNDYWxsKCkgeworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWUzOyArK2kpIHsK
KyAgICAgICAgZm9yIChsZXQgdGVzdENhc2VJbnB1dCBvZiB2YWxpZElucHV0VHlwZWRUZXN0Q2Fz
ZXMpIHsKKyAgICAgICAgICAgIGxldCBvdXRwdXQgPSBvcGFxdWVBbGxUeXBlc0Zyb3VuZCh0ZXN0
Q2FzZUlucHV0WzBdKTsKKyAgICAgICAgICAgIGlmICghaXNJZGVudGljYWwob3V0cHV0LCB0ZXN0
Q2FzZUlucHV0WzFdKSkKKyAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIHRlc3RBbGxUeXBl
c0NhbGwgZm9yIGlucHV0ICIgKyB0ZXN0Q2FzZUlucHV0WzBdICsgIiBleHBlY3RlZCAiICsgdGVz
dENhc2VJbnB1dFsxXSArICIgZ290ICIgKyBvdXRwdXQ7CisgICAgICAgIH0KKyAgICB9CisgICAg
aWYgKG51bWJlck9mREZHQ29tcGlsZXMob3BhcXVlQWxsVHlwZXNGcm91bmQpID4gMikKKyAgICAg
ICAgdGhyb3cgIldlIHNob3VsZCBoYXZlIGRldGVjdGVkIGZyb3VuZCgpIHdhcyBwb2x5bW9ycGhp
YyBhbmQgZ2VuZXJhdGVkIGEgZ2VuZXJpYyB2ZXJzaW9uLiI7Cit9Cit0ZXN0QWxsVHlwZXNDYWxs
KCk7CisKKworLy8gVGVzdCBNYXRoLmZyb3VuZCgpIG9uIGEgY29tcGxldGVseSB0eXBlZCBpbnB1
dC4gRXZlcnkgY2FsbCBzZWUgb25seSBvbmUgdHlwZS4KK2Z1bmN0aW9uIHRlc3RTaW5nbGVUeXBl
Q2FsbCgpIHsKKyAgICBmb3IgKGxldCB0ZXN0Q2FzZUlucHV0IG9mIHZhbGlkSW5wdXRUZXN0Q2Fz
ZXMpIHsKKyAgICAgICAgZXZhbChgCisgICAgICAgICAgICBmdW5jdGlvbiBvcGFxdWVGcm91bmQo
YXJndW1lbnQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5mcm91bmQoYXJndW1lbnQp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgbm9JbmxpbmUob3BhcXVlRnJvdW5kKTsKKyAg
ICAgICAgICAgIG5vT1NSRXhpdEZ1enppbmcob3BhcXVlRnJvdW5kKTsKKworICAgICAgICAgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICAgICAgICAgIGlmICghaXNJ
ZGVudGljYWwob3BhcXVlRnJvdW5kKCR7dGVzdENhc2VJbnB1dFswXX0pLCAke3Rlc3RDYXNlSW5w
dXRbMV19KSkgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIHRlc3RTaW5nbGVU
eXBlQ2FsbCgpIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAobnVtYmVyT2ZERkdDb21waWxlcyhvcGFxdWVGcm91bmQpID4gMSkKKyAgICAgICAgICAg
ICAgICB0aHJvdyAiV2Ugc2hvdWxkIGhhdmUgY29tcGlsZWQgYSBzaW5nbGUgZnJvdW5kIGZvciB0
aGUgZXhwZWN0ZWQgdHlwZS4iOworICAgICAgICBgKTsKKyAgICB9Cit9Cit0ZXN0U2luZ2xlVHlw
ZUNhbGwoKTsKKworCisvLyBWZXJpZnkgd2UgY2FsbCB2YWx1ZU9mKCkgZXhhY3RseSBvbmNlIHBl
ciBjYWxsLgorZnVuY3Rpb24gb3BhcXVlRnJvdW5kRm9yU2lkZUVmZmVjdHMoYXJndW1lbnQpIHsK
KyAgICByZXR1cm4gTWF0aC5mcm91bmQoYXJndW1lbnQpOworfQorbm9JbmxpbmUob3BhcXVlRnJv
dW5kRm9yU2lkZUVmZmVjdHMpOworbm9PU1JFeGl0RnV6emluZyhvcGFxdWVGcm91bmRGb3JTaWRl
RWZmZWN0cyk7CisKK2Z1bmN0aW9uIHRlc3RTaWRlRWZmZWN0KCkgeworICAgIGxldCB0ZXN0T2Jq
ZWN0ID0geworICAgICAgICBjb3VudGVyOiAwLAorICAgICAgICB2YWx1ZU9mOiBmdW5jdGlvbigp
IHsgKyt0aGlzLmNvdW50ZXI7IHJldHVybiAxNjsgfQorICAgIH07CisgICAgbGV0IGZyb3VuZDE2
ID0gTWF0aC5mcm91bmQoMTYpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsK
KyAgICAgICAgaWYgKG9wYXF1ZUZyb3VuZEZvclNpZGVFZmZlY3RzKHRlc3RPYmplY3QpICE9PSBm
cm91bmQxNikKKyAgICAgICAgICAgIHRocm93ICJJbmNvcnJlY3QgcmVzdWx0IGluIHRlc3RTaWRl
RWZmZWN0KCkiOworICAgIH0KKyAgICBpZiAodGVzdE9iamVjdC5jb3VudGVyICE9PSAxZTQpCisg
ICAgICAgIHRocm93ICJGYWlsZWQgdGVzdFNpZGVFZmZlY3QoKSI7CisgICAgaWYgKG51bWJlck9m
REZHQ29tcGlsZXMob3BhcXVlRnJvdW5kRm9yU2lkZUVmZmVjdHMpID4gMSkKKyAgICAgICAgdGhy
b3cgIm9wYXF1ZUZyb3VuZEZvclNpZGVFZmZlY3RzKCkgaXMgcHJlZGljdGFibGUsIGl0IHNob3Vs
ZCBvbmx5IGJlIGNvbXBpbGVkIG9uY2UuIjsKK30KK3Rlc3RTaWRlRWZmZWN0KCk7CisKKworLy8g
VmVyaWZ5IFNRUlQgaXMgbm90IHN1YmplY3QgdG8gQ1NFIGlmIHRoZSBhcmd1bWVudCBoYXMgc2lk
ZSBlZmZlY3RzLgorZnVuY3Rpb24gb3BhcXVlRnJvdW5kRm9yQ1NFKGFyZ3VtZW50KSB7CisgICAg
cmV0dXJuIE1hdGguZnJvdW5kKGFyZ3VtZW50KSArIE1hdGguZnJvdW5kKGFyZ3VtZW50KSArIE1h
dGguZnJvdW5kKGFyZ3VtZW50KTsKK30KK25vSW5saW5lKG9wYXF1ZUZyb3VuZEZvckNTRSk7Citu
b09TUkV4aXRGdXp6aW5nKG9wYXF1ZUZyb3VuZEZvckNTRSk7CisKK2Z1bmN0aW9uIHRlc3RDU0Uo
KSB7CisgICAgbGV0IHRlc3RPYmplY3QgPSB7CisgICAgICAgIGNvdW50ZXI6IDAsCisgICAgICAg
IHZhbHVlT2Y6IGZ1bmN0aW9uKCkgeyArK3RoaXMuY291bnRlcjsgcmV0dXJuIDE2OyB9CisgICAg
fTsKKyAgICBsZXQgZnJvdW5kMTYgPSBNYXRoLmZyb3VuZCgxNik7CisgICAgbGV0IHRocmVlRnJv
dW5kMTYgPSBmcm91bmQxNiArIGZyb3VuZDE2ICsgZnJvdW5kMTY7CisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBpZiAob3BhcXVlRnJvdW5kRm9yQ1NFKHRlc3RP
YmplY3QpICE9PSB0aHJlZUZyb3VuZDE2KQorICAgICAgICAgICAgdGhyb3cgIkluY29ycmVjdCBy
ZXN1bHQgaW4gdGVzdENTRSgpIjsKKyAgICB9CisgICAgaWYgKHRlc3RPYmplY3QuY291bnRlciAh
PT0gM2U0KQorICAgICAgICB0aHJvdyAiRmFpbGVkIHRlc3RDU0UoKSI7CisgICAgaWYgKG51bWJl
ck9mREZHQ29tcGlsZXMob3BhcXVlRnJvdW5kRm9yQ1NFKSA+IDEpCisgICAgICAgIHRocm93ICJv
cGFxdWVGcm91bmRGb3JDU0UoKSBpcyBwcmVkaWN0YWJsZSwgaXQgc2hvdWxkIG9ubHkgYmUgY29t
cGlsZWQgb25jZS4iOworfQordGVzdENTRSgpOworCisKKy8vIFRlc3QgZXhjZXB0aW9ucyBpbiB0
aGUgYXJndW1lbnQuCitmdW5jdGlvbiB0ZXN0RXhjZXB0aW9uKCkgeworICAgIGxldCBjb3VudGVy
ID0gMDsKKyAgICBmdW5jdGlvbiBvcGFxdWVGcm91bmRXaXRoRXhjZXB0aW9uKGFyZ3VtZW50KSB7
CisgICAgICAgIGxldCByZXN1bHQgPSBNYXRoLmZyb3VuZChhcmd1bWVudCk7CisgICAgICAgICsr
Y291bnRlcjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgbm9JbmxpbmUob3Bh
cXVlRnJvdW5kV2l0aEV4Y2VwdGlvbik7CisKKyAgICBsZXQgdGVzdE9iamVjdCA9IHsgdmFsdWVP
ZjogKCkgPT4geyAgcmV0dXJuIDY0OyB9IH07CisgICAgbGV0IGZyb3VuZDY0ID0gTWF0aC5mcm91
bmQoNjQpOworCisgICAgLy8gV2FybSB1cCB3aXRob3V0IGV4Y2VwdGlvbi4KKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDFlMzsgKytpKSB7CisgICAgICAgIGlmIChvcGFxdWVGcm91bmRXaXRoRXhj
ZXB0aW9uKHRlc3RPYmplY3QpICE9PSBmcm91bmQ2NCkKKyAgICAgICAgICAgIHRocm93ICJJbmNv
cnJlY3QgcmVzdWx0IGluIG9wYXF1ZUZyb3VuZFdpdGhFeGNlcHRpb24oKSI7CisgICAgfQorCisg
ICAgbGV0IHRlc3RUaHJvd09iamVjdCA9IHsgdmFsdWVPZjogKCkgPT4geyB0aHJvdyB0ZXN0T2Jq
ZWN0OyByZXR1cm4gNjQ7IH0gfTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWUyOyArK2kp
IHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlmIChvcGFxdWVGcm91bmRXaXRoRXhjZXB0
aW9uKHRlc3RUaHJvd09iamVjdCkgIT09IDgpCisgICAgICAgICAgICAgICAgdGhyb3cgIlRoaXMg
Y29kZSBzaG91bGQgbm90IGJlIHJlYWNoZWQhISI7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgICAgICAgIGlmIChlICE9PSB0ZXN0T2JqZWN0KSB7CisgICAgICAgICAgICAgICAgdGhyb3cg
Ildyb25nIG9iamVjdCB0aHJvd24gZnJvbSBvcGFxdWVGcm91bmRXaXRoRXhjZXB0aW9uLiIKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChjb3VudGVyICE9PSAxZTMp
IHsKKyAgICAgICAgdGhyb3cgIkludmFsaWQgY291bnQgaW4gdGVzdEV4Y2VwdGlvbigpIjsKKyAg
ICB9Cit9Cit0ZXN0RXhjZXB0aW9uKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>