<?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>161499</bug_id>
          
          <creation_ts>2016-09-01 11:40:44 -0700</creation_ts>
          <short_desc>Move some JSObject and JSArray inline functions to their respective Inlines.h files.</short_desc>
          <delta_ts>2016-09-01 15:37:35 -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>JavaScriptCore</component>
          <version>WebKit Local 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>
          
          <blocked>161498</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>graouts</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1225428</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-09-01 11:40:44 -0700</bug_when>
    <thetext>Patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225440</commentid>
    <comment_count>1</comment_count>
      <attachid>287650</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-09-01 11:56:40 -0700</bug_when>
    <thetext>Created attachment 287650
proposed patch.

Let&apos;s try it on the EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225464</commentid>
    <comment_count>2</comment_count>
      <attachid>287654</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-09-01 12:32:50 -0700</bug_when>
    <thetext>Created attachment 287654
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225499</commentid>
    <comment_count>3</comment_count>
      <attachid>287654</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-09-01 13:25:29 -0700</bug_when>
    <thetext>Comment on attachment 287654
proposed patch

So strange.  The build finishes on my local machine without issues.  I&apos;m re-try with a clean build now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225525</commentid>
    <comment_count>4</comment_count>
      <attachid>287677</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-09-01 14:10:55 -0700</bug_when>
    <thetext>Created attachment 287677
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225548</commentid>
    <comment_count>5</comment_count>
      <attachid>287686</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-09-01 14:56:41 -0700</bug_when>
    <thetext>Created attachment 287686
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225573</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-09-01 15:37:35 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r205324: &lt;http://trac.webkit.org/r205324&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287650</attachid>
            <date>2016-09-01 11:56:40 -0700</date>
            <delta_ts>2016-09-01 12:32:50 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-161499.patch</filename>
            <type>text/plain</type>
            <size>19879</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA1MzAyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBA
CisyMDE2LTA5LTAxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBN
b3ZlIHNvbWUgSlNPYmplY3QgYW5kIEpTQXJyYXkgaW5saW5lIGZ1bmN0aW9ucyB0byB0aGVpciBy
ZXNwZWN0aXZlIElubGluZXMuaCBmaWxlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MTQ5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgaXMganVzdCBhIHJlZmFjdG9yaW5nIHBhdGNoIHRvIG1v
dmUgc29tZSBpbmxpbmUgZnVuY3Rpb25zIHRvIHRoZWlyIElubGluZXMuaAorICAgICAgICBmaWxl
LiAgVGhpcyB3aWxsIGJlIG5lZWRlZCB0byBlbmFibGUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MTQ5OAorICAgICAgICBsYXRlci4KKworICAgICAgICAqIGludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAoSlNDOjpnZXRMZW5ndGgpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjp0b0xlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0FycmF5
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0FycmF5OjptZXJnZUluZGV4aW5nVHlwZUZvckNv
cHlpbmcpOgorICAgICAgICAoSlNDOjpKU0FycmF5OjpjYW5GYXN0Q29weSk6CisgICAgICAgIChK
U0M6OmdldExlbmd0aCk6CisgICAgICAgIChKU0M6OnRvTGVuZ3RoKToKKyAgICAgICAgKiBydW50
aW1lL0pTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNN
b2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmdldFByb3BlcnR5U2xvdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpnZXROb25JbmRleFByb3BlcnR5U2xvdCk6IERlbGV0ZWQuCisgICAgICAgICog
cnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldFBy
b3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXROb25JbmRleFByb3BlcnR5
U2xvdCk6CisgICAgICAgICogcnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5jcHA6CisgICAgICAg
ICogcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50
aW1lL01hcENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1lL1NhbXBsaW5nUHJvZmls
ZXIuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcDoKKwogMjAx
Ni0wOS0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMDUyOTcuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDIwNTI5OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNs
dWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCi0jaW5j
bHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQXJyYXlJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
TGV4aWNhbEVudmlyb25tZW50LmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAJKHJl
dmlzaW9uIDIwNTI5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAK
ICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKLSNpbmNsdWRlICJKU09iamVjdC5oIgor
I2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMu
aCIKIAogbmFtZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAkocmV2aXNp
b24gMjA1Mjk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNs
dWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgog
I2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKLSNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1
ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmNwcAkocmV2aXNpb24gMjA1Mjk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJFeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSW5k
ZXhpbmdIZWFkZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNBcnJheUlubGluZXMuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKICNpbmNs
dWRlICJSZWplY3QuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmgJKHJldmlzaW9uIDIwNTI5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMzQxLDMwICszNDEsNiBAQCBpbmxpbmUgSlNBcnJh
eSogY29uc3RydWN0QXJyYXlOZWdhdGl2ZUluCiAgICAgcmV0dXJuIGFycmF5OwogfQogCi1BTFdB
WVNfSU5MSU5FIHVuc2lnbmVkIGdldExlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBv
YmopCi17Ci0gICAgaWYgKGlzSlNBcnJheShvYmopKQotICAgICAgICByZXR1cm4ganNDYXN0PEpT
QXJyYXkqPihvYmopLT5sZW5ndGgoKTsKLQotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAg
SlNWYWx1ZSBsZW5ndGhWYWx1ZSA9IG9iai0+Z2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmxl
bmd0aCk7Ci0gICAgaWYgKFVOTElLRUxZKHZtLmV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJu
IFVJTlRfTUFYOwotICAgIHJldHVybiBsZW5ndGhWYWx1ZS50b1VJbnQzMihleGVjKTsKLX0KLQot
QUxXQVlTX0lOTElORSBkb3VibGUgdG9MZW5ndGgoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
b2JqKQotewotICAgIGlmIChpc0pTQXJyYXkob2JqKSkKLSAgICAgICAgcmV0dXJuIGpzQ2FzdDxK
U0FycmF5Kj4ob2JqKS0+bGVuZ3RoKCk7Ci0KLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAg
IEpTVmFsdWUgbGVuZ3RoVmFsdWUgPSBvYmotPmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGgpOwotICAgIGlmIChVTkxJS0VMWSh2bS5leGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVy
biBQTmFOOwotICAgIHJldHVybiBsZW5ndGhWYWx1ZS50b0xlbmd0aChleGVjKTsKLX0KLQogfSAv
LyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBKU0FycmF5X2gKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUlubGluZXMuaAkocmV2aXNpb24gMjA1Mjk5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUlubGluZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSW5kZXhp
bmdUeXBlIEpTQXJyYXk6Om1lcmdlSW5kZXhpbmdUeXBlRm9yQ29weWluZyhJbmRleGluZ1R5cGUg
b3RoZXIpCitpbmxpbmUgSW5kZXhpbmdUeXBlIEpTQXJyYXk6Om1lcmdlSW5kZXhpbmdUeXBlRm9y
Q29weWluZyhJbmRleGluZ1R5cGUgb3RoZXIpCiB7CiAgICAgSW5kZXhpbmdUeXBlIHR5cGUgPSBp
bmRleGluZ1R5cGUoKTsKICAgICBpZiAoISh0eXBlICYgSXNBcnJheSAmJiBvdGhlciAmIElzQXJy
YXkpKQpAQCAtNTYsNyArNTYsNyBAQCBJbmRleGluZ1R5cGUgSlNBcnJheTo6bWVyZ2VJbmRleGlu
Z1R5cGVGCiAgICAgcmV0dXJuIHR5cGU7CiB9CiAKLWJvb2wgSlNBcnJheTo6Y2FuRmFzdENvcHko
Vk0mIHZtLCBKU0FycmF5KiBvdGhlckFycmF5KQoraW5saW5lIGJvb2wgSlNBcnJheTo6Y2FuRmFz
dENvcHkoVk0mIHZtLCBKU0FycmF5KiBvdGhlckFycmF5KQogewogICAgIGlmIChoYXNBbnlBcnJh
eVN0b3JhZ2UoaW5kZXhpbmdUeXBlKCkpIHx8IGhhc0FueUFycmF5U3RvcmFnZShvdGhlckFycmF5
LT5pbmRleGluZ1R5cGUoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY4LDYgKzY4LDMw
IEBAIGJvb2wgSlNBcnJheTo6Y2FuRmFzdENvcHkoVk0mIHZtLCBKU0FycmEKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAorQUxXQVlTX0lOTElORSB1bnNpZ25lZCBnZXRMZW5ndGgoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogb2JqKQoreworICAgIGlmIChpc0pTQXJyYXkob2JqKSkKKyAgICAgICAg
cmV0dXJuIGpzQ2FzdDxKU0FycmF5Kj4ob2JqKS0+bGVuZ3RoKCk7CisKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIEpTVmFsdWUgbGVuZ3RoVmFsdWUgPSBvYmotPmdldChleGVjLCB2bS5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGgpOworICAgIGlmIChVTkxJS0VMWSh2bS5leGNlcHRpb24oKSkp
CisgICAgICAgIHJldHVybiBVSU5UX01BWDsKKyAgICByZXR1cm4gbGVuZ3RoVmFsdWUudG9VSW50
MzIoZXhlYyk7Cit9CisKK0FMV0FZU19JTkxJTkUgZG91YmxlIHRvTGVuZ3RoKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIG9iaikKK3sKKyAgICBpZiAoaXNKU0FycmF5KG9iaikpCisgICAgICAg
IHJldHVybiBqc0Nhc3Q8SlNBcnJheSo+KG9iaiktPmxlbmd0aCgpOworCisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBKU1ZhbHVlIGxlbmd0aFZhbHVlID0gb2JqLT5nZXQoZXhlYywgdm0u
cHJvcGVydHlOYW1lcy0+bGVuZ3RoKTsKKyAgICBpZiAoVU5MSUtFTFkodm0uZXhjZXB0aW9uKCkp
KQorICAgICAgICByZXR1cm4gUE5hTjsKKyAgICByZXR1cm4gbGVuZ3RoVmFsdWUudG9MZW5ndGgo
ZXhlYyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLyogSlNBcnJheUlubGlu
ZXNfaCAqLwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFBy
b21pc2VEZWZlcnJlZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5jcHAJKHJldmlzaW9uIDIwNTI5OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSlNDZWxsSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNJbnRl
cm5hbFByb21pc2VDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgog
I2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGlu
ZXMuaCIKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNv
cmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlUmVjb3JkLmNwcAkocmV2aXNpb24gMjA1Mjk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3
IEBACiAjaW5jbHVkZSAiSlNNYXAuaCIKICNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50Lmgi
CiAjaW5jbHVkZSAiSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVj
dElubGluZXMuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlICJT
dHJ1Y3R1cmVJbmxpbmVzLmgiCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAkocmV2aXNpb24gMjA1Mjk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTI5MCw2NiArMTI5MCw2IEBAIEFM
V0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHkKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KEV4ZWNT
dGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi17
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBhdXRvJiBzdHJ1Y3R1cmVJRFRhYmxlID0g
dm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCk7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IHRoaXM7
Ci0gICAgTWV0aG9kVGFibGU6OkdldFByb3RvdHlwZUZ1bmN0aW9uUHRyIGRlZmF1bHRHZXRQcm90
b3R5cGUgPSBKU09iamVjdDo6Z2V0UHJvdG90eXBlOwotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAg
ICAgIFN0cnVjdHVyZSYgc3RydWN0dXJlID0gKnN0cnVjdHVyZUlEVGFibGUuZ2V0KG9iamVjdC0+
c3RydWN0dXJlSUQoKSk7Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUuY2xhc3NJbmZvKCktPm1ldGhv
ZFRhYmxlLmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChVTkxJS0VM
WSh2bS5leGNlcHRpb24oKSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIEpT
VmFsdWUgcHJvdG90eXBlOwotICAgICAgICBpZiAoTElLRUxZKHN0cnVjdHVyZS5jbGFzc0luZm8o
KS0+bWV0aG9kVGFibGUuZ2V0UHJvdG90eXBlID09IGRlZmF1bHRHZXRQcm90b3R5cGUgfHwgc2xv
dC5pbnRlcm5hbE1ldGhvZFR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6Vk1JbnF1aXJ5KSkKLSAgICAgICAgICAgIHByb3RvdHlwZSA9IHN0cnVjdHVyZS5zdG9yZWRQ
cm90b3R5cGUoKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBwcm90b3R5cGUgPSBvYmpl
Y3QtPmdldFByb3RvdHlwZSh2bSwgZXhlYyk7Ci0gICAgICAgICAgICBpZiAodm0uZXhjZXB0aW9u
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGlm
ICghcHJvdG90eXBlLmlzT2JqZWN0KCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIG9iamVjdCA9IGFzT2JqZWN0KHByb3RvdHlwZSk7Ci0gICAgfQotfQotCi1BTFdBWVNfSU5M
SU5FIGJvb2wgSlNPYmplY3Q6OmdldE5vbkluZGV4UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQotewotICAg
IC8vIFRoaXMgbWV0aG9kIG9ubHkgc3VwcG9ydHMgbm9uLWluZGV4IFByb3BlcnR5TmFtZXMuCi0g
ICAgQVNTRVJUKCFwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpOwotCi0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKLSAgICBhdXRvJiBzdHJ1Y3R1cmVJRFRhYmxlID0gdm0uaGVhcC5zdHJ1Y3R1cmVJ
RFRhYmxlKCk7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IHRoaXM7Ci0gICAgTWV0aG9kVGFibGU6
OkdldFByb3RvdHlwZUZ1bmN0aW9uUHRyIGRlZmF1bHRHZXRQcm90b3R5cGUgPSBKU09iamVjdDo6
Z2V0UHJvdG90eXBlOwotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIFN0cnVjdHVyZSYgc3Ry
dWN0dXJlID0gKnN0cnVjdHVyZUlEVGFibGUuZ2V0KG9iamVjdC0+c3RydWN0dXJlSUQoKSk7Ci0g
ICAgICAgIGlmIChMSUtFTFkoIVR5cGVJbmZvOjpvdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qo
b2JqZWN0LT5pbmxpbmVUeXBlRmxhZ3MoKSkpKSB7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5n
ZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdCh2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgaWYgKHN0cnVjdHVyZS5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZ2V0T3duUHJv
cGVydHlTbG90KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWSh2bS5leGNlcHRpb24o
KSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIEpT
VmFsdWUgcHJvdG90eXBlOwotICAgICAgICBpZiAoTElLRUxZKHN0cnVjdHVyZS5jbGFzc0luZm8o
KS0+bWV0aG9kVGFibGUuZ2V0UHJvdG90eXBlID09IGRlZmF1bHRHZXRQcm90b3R5cGUgfHwgc2xv
dC5pbnRlcm5hbE1ldGhvZFR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6Vk1JbnF1aXJ5KSkKLSAgICAgICAgICAgIHByb3RvdHlwZSA9IHN0cnVjdHVyZS5zdG9yZWRQ
cm90b3R5cGUoKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBwcm90b3R5cGUgPSBvYmpl
Y3QtPmdldFByb3RvdHlwZSh2bSwgZXhlYyk7Ci0gICAgICAgICAgICBpZiAodm0uZXhjZXB0aW9u
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGlm
ICghcHJvdG90eXBlLmlzT2JqZWN0KCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIG9iamVjdCA9IGFzT2JqZWN0KHByb3RvdHlwZSk7Ci0gICAgfQotfQotCiBpbmxpbmUgSlNW
YWx1ZSBKU09iamVjdDo6Z2V0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkgY29uc3QKIHsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzLCBQcm9wZXJ0eVNsb3Q6
OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKQEAgLTEzNjgsMjIgKzEzMDgsNiBAQCBpbmxpbmUg
SlNWYWx1ZSBKU09iamVjdDo6Z2V0KEV4ZWNTdGF0ZSogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENhbGxiYWNrV2hlbk5vRXhjZXB0aW9uPgotQUxX
QVlTX0lOTElORSB0eXBlbmFtZSBzdGQ6OnJlc3VsdF9vZjxDYWxsYmFja1doZW5Ob0V4Y2VwdGlv
bihib29sLCBQcm9wZXJ0eVNsb3QmKT46OnR5cGUgSlNPYmplY3Q6OmdldFByb3BlcnR5U2xvdChF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIENhbGxiYWNrV2hlbk5v
RXhjZXB0aW9uIGNhbGxiYWNrKSBjb25zdAotewotICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXMs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwotICAgIHJldHVybiBnZXRQ
cm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90LCBjYWxsYmFjayk7Ci19Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIENhbGxiYWNrV2hlbk5vRXhjZXB0aW9uPgotQUxXQVlTX0lOTElORSB0
eXBlbmFtZSBzdGQ6OnJlc3VsdF9vZjxDYWxsYmFja1doZW5Ob0V4Y2VwdGlvbihib29sLCBQcm9w
ZXJ0eVNsb3QmKT46OnR5cGUgSlNPYmplY3Q6OmdldFByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCwgQ2FsbGJh
Y2tXaGVuTm9FeGNlcHRpb24gY2FsbGJhY2spIGNvbnN0Ci17Ci0gICAgYm9vbCBmb3VuZCA9IGNv
bnN0X2Nhc3Q8SlNPYmplY3QqPih0aGlzKS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5
TmFtZSwgc2xvdCk7Ci0gICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKLSAg
ICAgICAgcmV0dXJuIHsgfTsKLSAgICByZXR1cm4gY2FsbGJhY2soZm91bmQsIHNsb3QpOwotfQot
CiB0ZW1wbGF0ZTxKU09iamVjdDo6UHV0TW9kZSBtb2RlPgogQUxXQVlTX0lOTElORSBib29sIEpT
T2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0SW5saW5lcy5oCShyZXZpc2lvbiAyMDUyOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsODIg
QEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpjYW5QZXJmb3JtRgogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYmFja1doZW5Ob0V4Y2Vw
dGlvbj4KK0FMV0FZU19JTkxJTkUgdHlwZW5hbWUgc3RkOjpyZXN1bHRfb2Y8Q2FsbGJhY2tXaGVu
Tm9FeGNlcHRpb24oYm9vbCwgUHJvcGVydHlTbG90Jik+Ojp0eXBlIEpTT2JqZWN0OjpnZXRQcm9w
ZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBDYWxs
YmFja1doZW5Ob0V4Y2VwdGlvbiBjYWxsYmFjaykgY29uc3QKK3sKKyAgICBQcm9wZXJ0eVNsb3Qg
c2xvdCh0aGlzLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKKyAgICBy
ZXR1cm4gZ2V0UHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCwgY2FsbGJhY2sp
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYmFja1doZW5Ob0V4Y2VwdGlvbj4KK0FMV0FZ
U19JTkxJTkUgdHlwZW5hbWUgc3RkOjpyZXN1bHRfb2Y8Q2FsbGJhY2tXaGVuTm9FeGNlcHRpb24o
Ym9vbCwgUHJvcGVydHlTbG90Jik+Ojp0eXBlIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNsb3QoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QsIENhbGxiYWNrV2hlbk5vRXhjZXB0aW9uIGNhbGxiYWNrKSBjb25zdAoreworICAgIGJvb2wg
Zm91bmQgPSBjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhpcyktPmdldFByb3BlcnR5U2xvdChleGVj
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRp
b24oKSkpCisgICAgICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIGNhbGxiYWNrKGZvdW5kLCBz
bG90KTsKK30KKworQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNsb3Qo
RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8mIHN0cnVjdHVyZUlEVGFi
bGUgPSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0g
dGhpczsKKyAgICBNZXRob2RUYWJsZTo6R2V0UHJvdG90eXBlRnVuY3Rpb25QdHIgZGVmYXVsdEdl
dFByb3RvdHlwZSA9IEpTT2JqZWN0OjpnZXRQcm90b3R5cGU7CisgICAgd2hpbGUgKHRydWUpIHsK
KyAgICAgICAgU3RydWN0dXJlJiBzdHJ1Y3R1cmUgPSAqc3RydWN0dXJlSURUYWJsZS5nZXQob2Jq
ZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICAgICAgaWYgKHN0cnVjdHVyZS5jbGFzc0luZm8oKS0+
bWV0aG9kVGFibGUuZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChvYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgc2xvdCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKFVO
TElLRUxZKHZtLmV4Y2VwdGlvbigpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgSlNWYWx1ZSBwcm90b3R5cGU7CisgICAgICAgIGlmIChMSUtFTFkoc3RydWN0dXJlLmNsYXNz
SW5mbygpLT5tZXRob2RUYWJsZS5nZXRQcm90b3R5cGUgPT0gZGVmYXVsdEdldFByb3RvdHlwZSB8
fCBzbG90LmludGVybmFsTWV0aG9kVHlwZSgpID09IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRo
b2RUeXBlOjpWTUlucXVpcnkpKQorICAgICAgICAgICAgcHJvdG90eXBlID0gc3RydWN0dXJlLnN0
b3JlZFByb3RvdHlwZSgpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHByb3RvdHlwZSA9
IG9iamVjdC0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKTsKKyAgICAgICAgICAgIGlmICh2bS5leGNl
cHRpb24oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKCFwcm90b3R5cGUuaXNPYmplY3QoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgb2JqZWN0ID0gYXNPYmplY3QocHJvdG90eXBlKTsKKyAgICB9Cit9CisKK0FMV0FZ
U19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0Tm9uSW5kZXhQcm9wZXJ0eVNsb3QoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7
CisgICAgLy8gVGhpcyBtZXRob2Qgb25seSBzdXBwb3J0cyBub24taW5kZXggUHJvcGVydHlOYW1l
cy4KKyAgICBBU1NFUlQoIXBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSk7CisKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8mIHN0cnVjdHVyZUlEVGFibGUgPSB2bS5oZWFwLnN0cnVj
dHVyZUlEVGFibGUoKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gdGhpczsKKyAgICBNZXRob2RU
YWJsZTo6R2V0UHJvdG90eXBlRnVuY3Rpb25QdHIgZGVmYXVsdEdldFByb3RvdHlwZSA9IEpTT2Jq
ZWN0OjpnZXRQcm90b3R5cGU7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgU3RydWN0dXJl
JiBzdHJ1Y3R1cmUgPSAqc3RydWN0dXJlSURUYWJsZS5nZXQob2JqZWN0LT5zdHJ1Y3R1cmVJRCgp
KTsKKyAgICAgICAgaWYgKExJS0VMWSghVHlwZUluZm86Om92ZXJyaWRlc0dldE93blByb3BlcnR5
U2xvdChvYmplY3QtPmlubGluZVR5cGVGbGFncygpKSkpIHsKKyAgICAgICAgICAgIGlmIChvYmpl
Y3QtPmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFt
ZSwgc2xvdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBpZiAoc3RydWN0dXJlLmNsYXNzSW5mbygpLT5tZXRob2RUYWJsZS5nZXRP
d25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQorICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZtLmV4Y2Vw
dGlvbigpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAg
ICAgSlNWYWx1ZSBwcm90b3R5cGU7CisgICAgICAgIGlmIChMSUtFTFkoc3RydWN0dXJlLmNsYXNz
SW5mbygpLT5tZXRob2RUYWJsZS5nZXRQcm90b3R5cGUgPT0gZGVmYXVsdEdldFByb3RvdHlwZSB8
fCBzbG90LmludGVybmFsTWV0aG9kVHlwZSgpID09IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRo
b2RUeXBlOjpWTUlucXVpcnkpKQorICAgICAgICAgICAgcHJvdG90eXBlID0gc3RydWN0dXJlLnN0
b3JlZFByb3RvdHlwZSgpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHByb3RvdHlwZSA9
IG9iamVjdC0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKTsKKyAgICAgICAgICAgIGlmICh2bS5leGNl
cHRpb24oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKCFwcm90b3R5cGUuaXNPYmplY3QoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgb2JqZWN0ID0gYXNPYmplY3QocHJvdG90eXBlKTsKKyAgICB9Cit9CisKIC8vIEVD
TUEgOC42LjIuMgogQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXRJbmxpbmUoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5jcHAJKHJldmlzaW9u
IDIwNTI5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVy
cmVkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkV4Y2Vw
dGlvbi5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxs
SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTUHJv
bWlzZS5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiU2xv
dFZpc2l0b3JJbmxpbmVzLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcAkocmV2aXNpb24g
MjA1Mjk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl
ICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiSlNP
YmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheUFkYXB0b3JzLmgiCiAKIG5hbWVz
cGFjZSBKU0MgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3Ry
dWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
cENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjA1Mjk5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiSlNNYXAuaCIKKyNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIK
ICNpbmNsdWRlICJNYXBQcm90b3R5cGUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgi
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5n
UHJvZmlsZXIuY3BwCShyZXZpc2lvbiAyMDUyOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcs
NyBAQAogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNPYmplY3RJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiTExJbnRQQ1Jhbmdlcy5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgi
CiAjaW5jbHVkZSAiTWFya2VkQmxvY2tTZXQuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjA1
Mjk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkpTQ0pTVmFs
dWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNX
ZWFrTWFwLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIldlYWtN
YXBQcm90b3R5cGUuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTI5OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE2
LTA5LTAxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIHNv
bWUgSlNPYmplY3QgYW5kIEpTQXJyYXkgaW5saW5lIGZ1bmN0aW9ucyB0byB0aGVpciByZXNwZWN0
aXZlIElubGluZXMuaCBmaWxlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MTQ5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNo
YW5nZS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHA6CisgICAg
ICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHA6CisKIDIw
MTYtMDktMDEgIEphdmllciBGZXJuYW5kZXogIDxqZmVybmFuZGV6QGlnYWxpYS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0ZXIgcjIwNTEwMi4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA1
Mjk5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkpTU3RvcmFnZS5oIgog
CiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNP
YmplY3RJbmxpbmVzLmg+CiAjaW5jbHVkZSA8cnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCShyZXZpc2lvbiAyMDUy
OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNHbG9iYWxPYmplY3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09OT2JqZWN0
Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvU3RydWN0dXJlSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1ZNLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287654</attachid>
            <date>2016-09-01 12:32:50 -0700</date>
            <delta_ts>2016-09-01 13:25:29 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>bug-161499.patch</filename>
            <type>text/plain</type>
            <size>20435</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA1MzA0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBA
CisyMDE2LTA5LTAxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBN
b3ZlIHNvbWUgSlNPYmplY3QgYW5kIEpTQXJyYXkgaW5saW5lIGZ1bmN0aW9ucyB0byB0aGVpciBy
ZXNwZWN0aXZlIElubGluZXMuaCBmaWxlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MTQ5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgaXMganVzdCBhIHJlZmFjdG9yaW5nIHBhdGNoIHRvIG1v
dmUgc29tZSBpbmxpbmUgZnVuY3Rpb25zIHRvIHRoZWlyIElubGluZXMuaAorICAgICAgICBmaWxl
cy4gIFRoaXMgd2lsbCBiZSBuZWVkZWQgdG8gZW5hYmxlIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjE0OTgKKyAgICAgICAgbGF0ZXIuCisKKyAgICAgICAgKiBpbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKiBy
dW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6Z2V0TGVuZ3RoKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6dG9MZW5ndGgpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJh
eUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6bWVyZ2VJbmRleGluZ1R5cGVGb3JD
b3B5aW5nKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6Y2FuRmFzdENvcHkpOgorICAgICAgICAo
SlNDOjpnZXRMZW5ndGgpOgorICAgICAgICAoSlNDOjp0b0xlbmd0aCk6CisgICAgICAgICogcnVu
dGltZS9KU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pT
Sm9icy5jcHA6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHA6CisgICAgICAg
ICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJvcGVy
dHlTbG90KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE5vbkluZGV4UHJv
cGVydHlTbG90KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0SW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmdldE5vbkluZGV4UHJvcGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1l
L0pTUHJvbWlzZURlZmVycmVkLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZWRBcnJheVZp
ZXdQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAqIHJ1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHA6CisgICAgICAgICogcnVudGlt
ZS9XZWFrTWFwQ29uc3RydWN0b3IuY3BwOgorCiAyMDE2LTA5LTAxICBGaWxpcCBQaXpsbyAgPGZw
aXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZTo6
aW5zZXJ0T1NSSGludHNGb3JVcGRhdGUoKSBmYWlscyB0byBlbWl0IHVwZGF0ZWQgaGludHMgaW4g
c29tZSBjYXNlcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAyMDUzMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3
ICs0Myw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVs
cGVycy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgotI2luY2x1ZGUgIkpTQXJyYXkuaCIK
KyNpbmNsdWRlICJKU0FycmF5SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVu
dC5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUzMDQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiSlNCb3Vu
ZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJK
U0NlbGxJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVj
dElubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBK
U0MgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTMwNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0
aW9uLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGxJ
bmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdElubGlu
ZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHJldmlzaW9u
IDIwNTMwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgog
I2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkluZGV4aW5nSGVhZGVySW5saW5l
cy5oIgorI2luY2x1ZGUgIkpTQXJyYXlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSAiUmVqZWN0LmgiCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCShyZXZpc2lvbiAyMDUz
MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0MSwzMCArMzQxLDYgQEAgaW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5
TmVnYXRpdmVJbgogICAgIHJldHVybiBhcnJheTsKIH0KIAotQUxXQVlTX0lOTElORSB1bnNpZ25l
ZCBnZXRMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqKQotewotICAgIGlmIChp
c0pTQXJyYXkob2JqKSkKLSAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0FycmF5Kj4ob2JqKS0+bGVu
Z3RoKCk7Ci0KLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTVmFsdWUgbGVuZ3RoVmFs
dWUgPSBvYmotPmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpOwotICAgIGlmIChV
TkxJS0VMWSh2bS5leGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybiBVSU5UX01BWDsKLSAgICBy
ZXR1cm4gbGVuZ3RoVmFsdWUudG9VSW50MzIoZXhlYyk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgZG91
YmxlIHRvTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iaikKLXsKLSAgICBpZiAo
aXNKU0FycmF5KG9iaikpCi0gICAgICAgIHJldHVybiBqc0Nhc3Q8SlNBcnJheSo+KG9iaiktPmxl
bmd0aCgpOwotCi0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBKU1ZhbHVlIGxlbmd0aFZh
bHVlID0gb2JqLT5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKTsKLSAgICBpZiAo
VU5MSUtFTFkodm0uZXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm4gUE5hTjsKLSAgICByZXR1
cm4gbGVuZ3RoVmFsdWUudG9MZW5ndGgoZXhlYyk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwog
CiAjZW5kaWYgLy8gSlNBcnJheV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlJbmxpbmVzLmgJKHJldmlzaW9uIDIwNTMwNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDcgKzI2LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUluZGV4aW5nVHlwZSBKU0FycmF5Ojpt
ZXJnZUluZGV4aW5nVHlwZUZvckNvcHlpbmcoSW5kZXhpbmdUeXBlIG90aGVyKQoraW5saW5lIElu
ZGV4aW5nVHlwZSBKU0FycmF5OjptZXJnZUluZGV4aW5nVHlwZUZvckNvcHlpbmcoSW5kZXhpbmdU
eXBlIG90aGVyKQogewogICAgIEluZGV4aW5nVHlwZSB0eXBlID0gaW5kZXhpbmdUeXBlKCk7CiAg
ICAgaWYgKCEodHlwZSAmIElzQXJyYXkgJiYgb3RoZXIgJiBJc0FycmF5KSkKQEAgLTU2LDcgKzU2
LDcgQEAgSW5kZXhpbmdUeXBlIEpTQXJyYXk6Om1lcmdlSW5kZXhpbmdUeXBlRgogICAgIHJldHVy
biB0eXBlOwogfQogCi1ib29sIEpTQXJyYXk6OmNhbkZhc3RDb3B5KFZNJiB2bSwgSlNBcnJheSog
b3RoZXJBcnJheSkKK2lubGluZSBib29sIEpTQXJyYXk6OmNhbkZhc3RDb3B5KFZNJiB2bSwgSlNB
cnJheSogb3RoZXJBcnJheSkKIHsKICAgICBpZiAoaGFzQW55QXJyYXlTdG9yYWdlKGluZGV4aW5n
VHlwZSgpKSB8fCBoYXNBbnlBcnJheVN0b3JhZ2Uob3RoZXJBcnJheS0+aW5kZXhpbmdUeXBlKCkp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02OCw2ICs2OCwzMCBAQCBib29sIEpTQXJyYXk6
OmNhbkZhc3RDb3B5KFZNJiB2bSwgSlNBcnJhCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK0FMV0FZ
U19JTkxJTkUgdW5zaWduZWQgZ2V0TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9i
aikKK3sKKyAgICBpZiAoaXNKU0FycmF5KG9iaikpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNB
cnJheSo+KG9iaiktPmxlbmd0aCgpOworCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBK
U1ZhbHVlIGxlbmd0aFZhbHVlID0gb2JqLT5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoKTsKKyAgICBpZiAoVU5MSUtFTFkodm0uZXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm4g
VUlOVF9NQVg7CisgICAgcmV0dXJuIGxlbmd0aFZhbHVlLnRvVUludDMyKGV4ZWMpOworfQorCitB
TFdBWVNfSU5MSU5FIGRvdWJsZSB0b0xlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBv
YmopCit7CisgICAgaWYgKGlzSlNBcnJheShvYmopKQorICAgICAgICByZXR1cm4ganNDYXN0PEpT
QXJyYXkqPihvYmopLT5sZW5ndGgoKTsKKworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
SlNWYWx1ZSBsZW5ndGhWYWx1ZSA9IG9iai0+Z2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmxl
bmd0aCk7CisgICAgaWYgKFVOTElLRUxZKHZtLmV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJu
IFBOYU47CisgICAgcmV0dXJuIGxlbmd0aFZhbHVlLnRvTGVuZ3RoKGV4ZWMpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8qIEpTQXJyYXlJbmxpbmVzX2ggKi8KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQ
cm9taXNlRGVmZXJyZWQuY3BwCShyZXZpc2lvbiAyMDUzMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRl
ICJKU0ludGVybmFsUHJvbWlzZS5oIgogI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IuaCIKKyNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJTbG90Vmlz
aXRvcklubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSm9iLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0pvYi5jcHAJKHJldmlzaW9uIDIwNTMwNCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSm9iLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVk
ZSAiSlNPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWljcm90YXNrLmgiCiAjaW5jbHVkZSAi
U2xvdFZpc2l0b3JJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAko
cmV2aXNpb24gMjA1MzA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1
bGVSZWNvcmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAi
SlNNYXAuaCIKICNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKICNp
bmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVz
LmgiCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2
aXNpb24gMjA1MzA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtMTI5MCw2NiArMTI5MCw2IEBAIEFMV0FZU19JTkxJTkUgYm9v
bCBKU09iamVjdDo6Z2V0UHJvcGVydHkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUFMV0FZU19J
TkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi17Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKLSAgICBhdXRvJiBzdHJ1Y3R1cmVJRFRhYmxlID0gdm0uaGVhcC5zdHJ1Y3R1
cmVJRFRhYmxlKCk7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IHRoaXM7Ci0gICAgTWV0aG9kVGFi
bGU6OkdldFByb3RvdHlwZUZ1bmN0aW9uUHRyIGRlZmF1bHRHZXRQcm90b3R5cGUgPSBKU09iamVj
dDo6Z2V0UHJvdG90eXBlOwotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIFN0cnVjdHVyZSYg
c3RydWN0dXJlID0gKnN0cnVjdHVyZUlEVGFibGUuZ2V0KG9iamVjdC0+c3RydWN0dXJlSUQoKSk7
Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUuY2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlLmdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChVTkxJS0VMWSh2bS5leGNlcHRpb24o
KSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBl
OwotICAgICAgICBpZiAoTElLRUxZKHN0cnVjdHVyZS5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUu
Z2V0UHJvdG90eXBlID09IGRlZmF1bHRHZXRQcm90b3R5cGUgfHwgc2xvdC5pbnRlcm5hbE1ldGhv
ZFR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KSkK
LSAgICAgICAgICAgIHByb3RvdHlwZSA9IHN0cnVjdHVyZS5zdG9yZWRQcm90b3R5cGUoKTsKLSAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBwcm90b3R5cGUgPSBvYmplY3QtPmdldFByb3RvdHlw
ZSh2bSwgZXhlYyk7Ci0gICAgICAgICAgICBpZiAodm0uZXhjZXB0aW9uKCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGlmICghcHJvdG90eXBlLmlz
T2JqZWN0KCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIG9iamVjdCA9IGFz
T2JqZWN0KHByb3RvdHlwZSk7Ci0gICAgfQotfQotCi1BTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmpl
Y3Q6OmdldE5vbkluZGV4UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQotewotICAgIC8vIFRoaXMgbWV0aG9k
IG9ubHkgc3VwcG9ydHMgbm9uLWluZGV4IFByb3BlcnR5TmFtZXMuCi0gICAgQVNTRVJUKCFwYXJz
ZUluZGV4KHByb3BlcnR5TmFtZSkpOwotCi0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBh
dXRvJiBzdHJ1Y3R1cmVJRFRhYmxlID0gdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCk7Ci0gICAg
SlNPYmplY3QqIG9iamVjdCA9IHRoaXM7Ci0gICAgTWV0aG9kVGFibGU6OkdldFByb3RvdHlwZUZ1
bmN0aW9uUHRyIGRlZmF1bHRHZXRQcm90b3R5cGUgPSBKU09iamVjdDo6Z2V0UHJvdG90eXBlOwot
ICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIFN0cnVjdHVyZSYgc3RydWN0dXJlID0gKnN0cnVj
dHVyZUlEVGFibGUuZ2V0KG9iamVjdC0+c3RydWN0dXJlSUQoKSk7Ci0gICAgICAgIGlmIChMSUtF
TFkoIVR5cGVJbmZvOjpvdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LT5pbmxpbmVU
eXBlRmxhZ3MoKSkpKSB7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5nZXRPd25Ob25JbmRleFBy
b3BlcnR5U2xvdCh2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQotICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKHN0
cnVjdHVyZS5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZ2V0T3duUHJvcGVydHlTbG90KG9iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWSh2bS5leGNlcHRpb24oKSkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBl
OwotICAgICAgICBpZiAoTElLRUxZKHN0cnVjdHVyZS5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUu
Z2V0UHJvdG90eXBlID09IGRlZmF1bHRHZXRQcm90b3R5cGUgfHwgc2xvdC5pbnRlcm5hbE1ldGhv
ZFR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KSkK
LSAgICAgICAgICAgIHByb3RvdHlwZSA9IHN0cnVjdHVyZS5zdG9yZWRQcm90b3R5cGUoKTsKLSAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBwcm90b3R5cGUgPSBvYmplY3QtPmdldFByb3RvdHlw
ZSh2bSwgZXhlYyk7Ci0gICAgICAgICAgICBpZiAodm0uZXhjZXB0aW9uKCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGlmICghcHJvdG90eXBlLmlz
T2JqZWN0KCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIG9iamVjdCA9IGFz
T2JqZWN0KHByb3RvdHlwZSk7Ci0gICAgfQotfQotCiBpbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6
Z2V0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKIHsK
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9k
VHlwZTo6R2V0KTsKQEAgLTEzNjgsMjIgKzEzMDgsNiBAQCBpbmxpbmUgSlNWYWx1ZSBKU09iamVj
dDo6Z2V0KEV4ZWNTdGF0ZSogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIENhbGxiYWNrV2hlbk5vRXhjZXB0aW9uPgotQUxXQVlTX0lOTElORSB0eXBl
bmFtZSBzdGQ6OnJlc3VsdF9vZjxDYWxsYmFja1doZW5Ob0V4Y2VwdGlvbihib29sLCBQcm9wZXJ0
eVNsb3QmKT46OnR5cGUgSlNPYmplY3Q6OmdldFByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIENhbGxiYWNrV2hlbk5vRXhjZXB0aW9uIGNhbGxi
YWNrKSBjb25zdAotewotICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXMsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwotICAgIHJldHVybiBnZXRQcm9wZXJ0eVNsb3QoZXhl
YywgcHJvcGVydHlOYW1lLCBzbG90LCBjYWxsYmFjayk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1l
IENhbGxiYWNrV2hlbk5vRXhjZXB0aW9uPgotQUxXQVlTX0lOTElORSB0eXBlbmFtZSBzdGQ6OnJl
c3VsdF9vZjxDYWxsYmFja1doZW5Ob0V4Y2VwdGlvbihib29sLCBQcm9wZXJ0eVNsb3QmKT46OnR5
cGUgSlNPYmplY3Q6OmdldFByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCwgQ2FsbGJhY2tXaGVuTm9FeGNlcHRp
b24gY2FsbGJhY2spIGNvbnN0Ci17Ci0gICAgYm9vbCBmb3VuZCA9IGNvbnN0X2Nhc3Q8SlNPYmpl
Y3QqPih0aGlzKS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci0g
ICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIHsg
fTsKLSAgICByZXR1cm4gY2FsbGJhY2soZm91bmQsIHNsb3QpOwotfQotCiB0ZW1wbGF0ZTxKU09i
amVjdDo6UHV0TW9kZSBtb2RlPgogQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXREaXJl
Y3RJbnRlcm5hbChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCShy
ZXZpc2lvbiAyMDUzMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsODIgQEAgQUxXQVlTX0lOTElO
RSBib29sIEpTT2JqZWN0OjpjYW5QZXJmb3JtRgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
fQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYmFja1doZW5Ob0V4Y2VwdGlvbj4KK0FMV0FZU19J
TkxJTkUgdHlwZW5hbWUgc3RkOjpyZXN1bHRfb2Y8Q2FsbGJhY2tXaGVuTm9FeGNlcHRpb24oYm9v
bCwgUHJvcGVydHlTbG90Jik+Ojp0eXBlIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNsb3QoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBDYWxsYmFja1doZW5Ob0V4Y2Vw
dGlvbiBjYWxsYmFjaykgY29uc3QKK3sKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzLCBQcm9w
ZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKKyAgICByZXR1cm4gZ2V0UHJvcGVy
dHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCwgY2FsbGJhY2spOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBDYWxsYmFja1doZW5Ob0V4Y2VwdGlvbj4KK0FMV0FZU19JTkxJTkUgdHlwZW5h
bWUgc3RkOjpyZXN1bHRfb2Y8Q2FsbGJhY2tXaGVuTm9FeGNlcHRpb24oYm9vbCwgUHJvcGVydHlT
bG90Jik+Ojp0eXBlIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QsIENhbGxiYWNrV2hl
bk5vRXhjZXB0aW9uIGNhbGxiYWNrKSBjb25zdAoreworICAgIGJvb2wgZm91bmQgPSBjb25zdF9j
YXN0PEpTT2JqZWN0Kj4odGhpcyktPmdldFByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOworICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCisgICAgICAg
IHJldHVybiB7IH07CisgICAgcmV0dXJuIGNhbGxiYWNrKGZvdW5kLCBzbG90KTsKK30KKworQUxX
QVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVj
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8mIHN0cnVjdHVyZUlEVGFibGUgPSB2bS5oZWFwLnN0
cnVjdHVyZUlEVGFibGUoKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gdGhpczsKKyAgICBNZXRo
b2RUYWJsZTo6R2V0UHJvdG90eXBlRnVuY3Rpb25QdHIgZGVmYXVsdEdldFByb3RvdHlwZSA9IEpT
T2JqZWN0OjpnZXRQcm90b3R5cGU7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgU3RydWN0
dXJlJiBzdHJ1Y3R1cmUgPSAqc3RydWN0dXJlSURUYWJsZS5nZXQob2JqZWN0LT5zdHJ1Y3R1cmVJ
RCgpKTsKKyAgICAgICAgaWYgKHN0cnVjdHVyZS5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZ2V0
T3duUHJvcGVydHlTbG90QnlJbmRleChvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKFVOTElLRUxZKHZtLmV4Y2Vw
dGlvbigpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgSlNWYWx1ZSBwcm90
b3R5cGU7CisgICAgICAgIGlmIChMSUtFTFkoc3RydWN0dXJlLmNsYXNzSW5mbygpLT5tZXRob2RU
YWJsZS5nZXRQcm90b3R5cGUgPT0gZGVmYXVsdEdldFByb3RvdHlwZSB8fCBzbG90LmludGVybmFs
TWV0aG9kVHlwZSgpID09IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVp
cnkpKQorICAgICAgICAgICAgcHJvdG90eXBlID0gc3RydWN0dXJlLnN0b3JlZFByb3RvdHlwZSgp
OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHByb3RvdHlwZSA9IG9iamVjdC0+Z2V0UHJv
dG90eXBlKHZtLCBleGVjKTsKKyAgICAgICAgICAgIGlmICh2bS5leGNlcHRpb24oKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFwcm90b3R5
cGUuaXNPYmplY3QoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgb2JqZWN0
ID0gYXNPYmplY3QocHJvdG90eXBlKTsKKyAgICB9Cit9CisKK0FMV0FZU19JTkxJTkUgYm9vbCBK
U09iamVjdDo6Z2V0Tm9uSW5kZXhQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgLy8gVGhpcyBt
ZXRob2Qgb25seSBzdXBwb3J0cyBub24taW5kZXggUHJvcGVydHlOYW1lcy4KKyAgICBBU1NFUlQo
IXBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSk7CisKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8mIHN0cnVjdHVyZUlEVGFibGUgPSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKTsK
KyAgICBKU09iamVjdCogb2JqZWN0ID0gdGhpczsKKyAgICBNZXRob2RUYWJsZTo6R2V0UHJvdG90
eXBlRnVuY3Rpb25QdHIgZGVmYXVsdEdldFByb3RvdHlwZSA9IEpTT2JqZWN0OjpnZXRQcm90b3R5
cGU7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgU3RydWN0dXJlJiBzdHJ1Y3R1cmUgPSAq
c3RydWN0dXJlSURUYWJsZS5nZXQob2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICAgICAgaWYg
KExJS0VMWSghVHlwZUluZm86Om92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdChvYmplY3QtPmlu
bGluZVR5cGVGbGFncygpKSkpIHsKKyAgICAgICAgICAgIGlmIChvYmplY3QtPmdldE93bk5vbklu
ZGV4UHJvcGVydHlTbG90KHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc2xvdCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBp
ZiAoc3RydWN0dXJlLmNsYXNzSW5mbygpLT5tZXRob2RUYWJsZS5nZXRPd25Qcm9wZXJ0eVNsb3Qo
b2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQorICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZtLmV4Y2VwdGlvbigpKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgSlNWYWx1ZSBwcm90
b3R5cGU7CisgICAgICAgIGlmIChMSUtFTFkoc3RydWN0dXJlLmNsYXNzSW5mbygpLT5tZXRob2RU
YWJsZS5nZXRQcm90b3R5cGUgPT0gZGVmYXVsdEdldFByb3RvdHlwZSB8fCBzbG90LmludGVybmFs
TWV0aG9kVHlwZSgpID09IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVp
cnkpKQorICAgICAgICAgICAgcHJvdG90eXBlID0gc3RydWN0dXJlLnN0b3JlZFByb3RvdHlwZSgp
OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHByb3RvdHlwZSA9IG9iamVjdC0+Z2V0UHJv
dG90eXBlKHZtLCBleGVjKTsKKyAgICAgICAgICAgIGlmICh2bS5leGNlcHRpb24oKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFwcm90b3R5
cGUuaXNPYmplY3QoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgb2JqZWN0
ID0gYXNPYmplY3QocHJvdG90eXBlKTsKKyAgICB9Cit9CisKIC8vIEVDTUEgOC42LjIuMgogQUxX
QVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXRJbmxpbmUoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvbWlzZURlZmVycmVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5jcHAJKHJldmlzaW9uIDIwNTMwNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1
ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgogI2luY2x1
ZGUgIkpTUHJvbWlzZUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVz
LmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3
UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA1MzA0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiSlNPYmplY3RJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiVHlwZWRBcnJheUFkYXB0b3JzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNw
cAkocmV2aXNpb24gMjA1MzA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFw
Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiSlNNYXAuaCIKKyNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJNYXBQ
cm90b3R5cGUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCShy
ZXZpc2lvbiAyMDUzMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGlu
Z1Byb2ZpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUg
IkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRl
ICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
TExJbnRQQ1Jhbmdlcy5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCiAjaW5jbHVkZSAiTWFy
a2VkQmxvY2tTZXQuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtN
YXBDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjA1MzA0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisj
aW5jbHVkZSAiSlNPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNXZWFrTWFwLmgiCiAjaW5j
bHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIldlYWtNYXBQcm90b3R5cGUuaCIK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTMwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE2LTA5LTAxICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIHNvbWUgSlNPYmplY3QgYW5k
IEpTQXJyYXkgaW5saW5lIGZ1bmN0aW9ucyB0byB0aGVpciByZXNwZWN0aXZlIElubGluZXMuaCBm
aWxlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MTQ5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHA6CisgICAgICAgICogY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHA6CisKIDIwMTYtMDktMDEgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggTWFj
IENNYWtlIGJ1aWxkIGFmdGVyIHIyMDUyNjYuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTMwNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJKU1N0b3JhZ2UuaCIKIAogI2luY2x1ZGUgIkpT
RE9NQmluZGluZy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0SW5saW5lcy5o
PgogI2luY2x1ZGUgPHJ1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaD4KICNpbmNsdWRlIDxydW50
aW1lL1Byb3BlcnR5TmFtZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAkocmV2aXNpb24gMjA1MzA0KQorKysgU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0NKU1ZhbHVlSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2Jq
ZWN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPTk9iamVjdC5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0SW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1N0cnVjdHVyZUlubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9WTS5oPgog
I2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287677</attachid>
            <date>2016-09-01 14:10:55 -0700</date>
            <delta_ts>2016-09-01 14:56:41 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-161499.patch</filename>
            <type>text/plain</type>
            <size>22417</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA1MzEyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDE2LTA5LTAxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBN
b3ZlIHNvbWUgSlNPYmplY3QgYW5kIEpTQXJyYXkgaW5saW5lIGZ1bmN0aW9ucyB0byB0aGVpciBy
ZXNwZWN0aXZlIElubGluZXMuaCBmaWxlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MTQ5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgaXMganVzdCBhIHJlZmFjdG9yaW5nIHBhdGNoIHRvIG1v
dmUgc29tZSBpbmxpbmUgZnVuY3Rpb25zIHRvIHRoZWlyIElubGluZXMuaAorICAgICAgICBmaWxl
cy4gIFRoaXMgd2lsbCBiZSBuZWVkZWQgdG8gZW5hYmxlIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjE0OTgKKyAgICAgICAgbGF0ZXIuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9TY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6Cisg
ICAgICAgIChKU0M6OmdldExlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnRvTGVuZ3Ro
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6OkpTQXJyYXk6Om1lcmdlSW5kZXhpbmdUeXBlRm9yQ29weWluZyk6CisgICAgICAgIChK
U0M6OkpTQXJyYXk6OmNhbkZhc3RDb3B5KToKKyAgICAgICAgKEpTQzo6Z2V0TGVuZ3RoKToKKyAg
ICAgICAgKEpTQzo6dG9MZW5ndGgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNJbnRlcm5hbFByb21p
c2UuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5jcHA6
CisgICAgICAgICogcnVudGltZS9KU0pvYi5jcHA6CisgICAgICAgICogcnVudGltZS9KU01vZHVs
ZVJlY29yZC5jcHA6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OmdldE5vbkluZGV4UHJvcGVydHlTbG90KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJvcGVy
dHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE5vbkluZGV4UHJvcGVydHlTbG90
KToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmNwcDoKKyAgICAgICAgKiBy
dW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUv
TWFwQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5j
cHA6CisgICAgICAgICogcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVu
dGltZS9XZWFrTWFwQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha1NldENv
bnN0cnVjdG9yLmNwcDoKKwogMjAxNi0wOS0wMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVy
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgV0FTTSBjbGFzc2VzIGRyb3BwaW5nIHRoZSBX
QVNNIHByZWZpeApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZh
bHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2Ny
aXB0VmFsdWUuY3BwCShyZXZpc2lvbiAyMDUzMTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSAiQVBJQ2FzdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2lu
Y2x1ZGUgIkpTTG9jay5oIgorI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUg
IlN0cnVjdHVyZUlubGluZXMuaCIKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2
aXNpb24gMjA1MzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQAogI2luY2x1ZGUgIkV4
Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJHZXR0
ZXJTZXR0ZXIuaCIKLSNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNBcnJheUlubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA1MzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgotI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
U3RydWN0dXJlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUzMTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUs
NyArMzUsNyBAQAogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0pT
VmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgotI2luY2x1ZGUgIkpT
T2JqZWN0LmgiCisjaW5jbHVkZSAiSlNPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0
dXJlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCShyZXZpc2lvbiAyMDUzMTIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIu
aCIKICNpbmNsdWRlICJJbmRleGluZ0hlYWRlcklubGluZXMuaCIKKyNpbmNsdWRlICJKU0FycmF5
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5h
bWVBcnJheS5oIgogI2luY2x1ZGUgIlJlamVjdC5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXkuaAkocmV2aXNpb24gMjA1MzEyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNDEsMzAgKzM0MSw2
IEBAIGlubGluZSBKU0FycmF5KiBjb25zdHJ1Y3RBcnJheU5lZ2F0aXZlSW4KICAgICByZXR1cm4g
YXJyYXk7CiB9CiAKLUFMV0FZU19JTkxJTkUgdW5zaWduZWQgZ2V0TGVuZ3RoKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIG9iaikKLXsKLSAgICBpZiAoaXNKU0FycmF5KG9iaikpCi0gICAgICAg
IHJldHVybiBqc0Nhc3Q8SlNBcnJheSo+KG9iaiktPmxlbmd0aCgpOwotCi0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKLSAgICBKU1ZhbHVlIGxlbmd0aFZhbHVlID0gb2JqLT5nZXQoZXhlYywgdm0u
cHJvcGVydHlOYW1lcy0+bGVuZ3RoKTsKLSAgICBpZiAoVU5MSUtFTFkodm0uZXhjZXB0aW9uKCkp
KQotICAgICAgICByZXR1cm4gVUlOVF9NQVg7Ci0gICAgcmV0dXJuIGxlbmd0aFZhbHVlLnRvVUlu
dDMyKGV4ZWMpOwotfQotCi1BTFdBWVNfSU5MSU5FIGRvdWJsZSB0b0xlbmd0aChFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBvYmopCi17Ci0gICAgaWYgKGlzSlNBcnJheShvYmopKQotICAgICAg
ICByZXR1cm4ganNDYXN0PEpTQXJyYXkqPihvYmopLT5sZW5ndGgoKTsKLQotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7Ci0gICAgSlNWYWx1ZSBsZW5ndGhWYWx1ZSA9IG9iai0+Z2V0KGV4ZWMsIHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCk7Ci0gICAgaWYgKFVOTElLRUxZKHZtLmV4Y2VwdGlvbigp
KSkKLSAgICAgICAgcmV0dXJuIFBOYU47Ci0gICAgcmV0dXJuIGxlbmd0aFZhbHVlLnRvTGVuZ3Ro
KGV4ZWMpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTQXJyYXlfaApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUlubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SW5saW5lcy5o
CShyZXZpc2lvbiAyMDUzMTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1JbmRleGluZ1R5cGUgSlNBcnJheTo6bWVyZ2VJbmRleGluZ1R5cGVGb3JDb3B5
aW5nKEluZGV4aW5nVHlwZSBvdGhlcikKK2lubGluZSBJbmRleGluZ1R5cGUgSlNBcnJheTo6bWVy
Z2VJbmRleGluZ1R5cGVGb3JDb3B5aW5nKEluZGV4aW5nVHlwZSBvdGhlcikKIHsKICAgICBJbmRl
eGluZ1R5cGUgdHlwZSA9IGluZGV4aW5nVHlwZSgpOwogICAgIGlmICghKHR5cGUgJiBJc0FycmF5
ICYmIG90aGVyICYgSXNBcnJheSkpCkBAIC01Niw3ICs1Niw3IEBAIEluZGV4aW5nVHlwZSBKU0Fy
cmF5OjptZXJnZUluZGV4aW5nVHlwZUYKICAgICByZXR1cm4gdHlwZTsKIH0KIAotYm9vbCBKU0Fy
cmF5OjpjYW5GYXN0Q29weShWTSYgdm0sIEpTQXJyYXkqIG90aGVyQXJyYXkpCitpbmxpbmUgYm9v
bCBKU0FycmF5OjpjYW5GYXN0Q29weShWTSYgdm0sIEpTQXJyYXkqIG90aGVyQXJyYXkpCiB7CiAg
ICAgaWYgKGhhc0FueUFycmF5U3RvcmFnZShpbmRleGluZ1R5cGUoKSkgfHwgaGFzQW55QXJyYXlT
dG9yYWdlKG90aGVyQXJyYXktPmluZGV4aW5nVHlwZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtNjgsNiArNjgsMzAgQEAgYm9vbCBKU0FycmF5OjpjYW5GYXN0Q29weShWTSYgdm0sIEpT
QXJyYQogICAgIHJldHVybiB0cnVlOwogfQogCitBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIGdldExl
bmd0aChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmopCit7CisgICAgaWYgKGlzSlNBcnJh
eShvYmopKQorICAgICAgICByZXR1cm4ganNDYXN0PEpTQXJyYXkqPihvYmopLT5sZW5ndGgoKTsK
KworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNWYWx1ZSBsZW5ndGhWYWx1ZSA9IG9i
ai0+Z2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCk7CisgICAgaWYgKFVOTElLRUxZ
KHZtLmV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOworICAgIHJldHVybiBs
ZW5ndGhWYWx1ZS50b1VJbnQzMihleGVjKTsKK30KKworQUxXQVlTX0lOTElORSBkb3VibGUgdG9M
ZW5ndGgoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqKQoreworICAgIGlmIChpc0pTQXJy
YXkob2JqKSkKKyAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0FycmF5Kj4ob2JqKS0+bGVuZ3RoKCk7
CisKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTVmFsdWUgbGVuZ3RoVmFsdWUgPSBv
YmotPmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpOworICAgIGlmIChVTkxJS0VM
WSh2bS5leGNlcHRpb24oKSkpCisgICAgICAgIHJldHVybiBQTmFOOworICAgIHJldHVybiBsZW5n
dGhWYWx1ZS50b0xlbmd0aChleGVjKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRp
ZiAvKiBKU0FycmF5SW5saW5lc19oICovCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0ludGVybmFsUHJvbWlzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21pc2UuY3BwCShyZXZpc2lvbiAyMDUzMTIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVybmFsUHJvbWlzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIK
ICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMu
aCIKKyNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxp
bmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5jcHAJKHJl
dmlzaW9uIDIwNTMxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJu
YWxQcm9taXNlRGVmZXJyZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlLmgi
CiAjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpT
T2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1
ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNKb2IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTSm9iLmNwcAkocmV2aXNpb24gMjA1MzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNKb2IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIK
ICNpbmNsdWRlICJNaWNyb3Rhc2suaCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIK
ICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCShyZXZpc2lvbiAyMDUzMTIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKU01hcC5oIgogI2luY2x1ZGUgIkpT
TW9kdWxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5o
IgorI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5s
aW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAyMDUzMTIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjkwLDY2ICsxMjkwLDYgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0
eQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0Ojpn
ZXRQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIGF1dG8m
IHN0cnVjdHVyZUlEVGFibGUgPSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKTsKLSAgICBKU09i
amVjdCogb2JqZWN0ID0gdGhpczsKLSAgICBNZXRob2RUYWJsZTo6R2V0UHJvdG90eXBlRnVuY3Rp
b25QdHIgZGVmYXVsdEdldFByb3RvdHlwZSA9IEpTT2JqZWN0OjpnZXRQcm90b3R5cGU7Ci0gICAg
d2hpbGUgKHRydWUpIHsKLSAgICAgICAgU3RydWN0dXJlJiBzdHJ1Y3R1cmUgPSAqc3RydWN0dXJl
SURUYWJsZS5nZXQob2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKLSAgICAgICAgaWYgKHN0cnVjdHVy
ZS5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChvYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgaWYgKFVOTElLRUxZKHZtLmV4Y2VwdGlvbigpKSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGU7Ci0gICAgICAgIGlmIChMSUtFTFko
c3RydWN0dXJlLmNsYXNzSW5mbygpLT5tZXRob2RUYWJsZS5nZXRQcm90b3R5cGUgPT0gZGVmYXVs
dEdldFByb3RvdHlwZSB8fCBzbG90LmludGVybmFsTWV0aG9kVHlwZSgpID09IFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpKQotICAgICAgICAgICAgcHJvdG90eXBl
ID0gc3RydWN0dXJlLnN0b3JlZFByb3RvdHlwZSgpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIHByb3RvdHlwZSA9IG9iamVjdC0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKTsKLSAgICAgICAg
ICAgIGlmICh2bS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKCFwcm90b3R5cGUuaXNPYmplY3QoKSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgb2JqZWN0ID0gYXNPYmplY3QocHJvdG90eXBlKTsKLSAg
ICB9Ci19Ci0KLUFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0Tm9uSW5kZXhQcm9wZXJ0
eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCi17Ci0gICAgLy8gVGhpcyBtZXRob2Qgb25seSBzdXBwb3J0cyBub24taW5k
ZXggUHJvcGVydHlOYW1lcy4KLSAgICBBU1NFUlQoIXBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSk7
Ci0KLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIGF1dG8mIHN0cnVjdHVyZUlEVGFibGUg
PSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKTsKLSAgICBKU09iamVjdCogb2JqZWN0ID0gdGhp
czsKLSAgICBNZXRob2RUYWJsZTo6R2V0UHJvdG90eXBlRnVuY3Rpb25QdHIgZGVmYXVsdEdldFBy
b3RvdHlwZSA9IEpTT2JqZWN0OjpnZXRQcm90b3R5cGU7Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAg
ICAgICAgU3RydWN0dXJlJiBzdHJ1Y3R1cmUgPSAqc3RydWN0dXJlSURUYWJsZS5nZXQob2JqZWN0
LT5zdHJ1Y3R1cmVJRCgpKTsKLSAgICAgICAgaWYgKExJS0VMWSghVHlwZUluZm86Om92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdChvYmplY3QtPmlubGluZVR5cGVGbGFncygpKSkpIHsKLSAgICAg
ICAgICAgIGlmIChvYmplY3QtPmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KHZtLCBzdHJ1Y3R1
cmUsIHByb3BlcnR5TmFtZSwgc2xvdCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoc3RydWN0dXJlLmNsYXNzSW5mbygpLT5t
ZXRob2RUYWJsZS5nZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgaWYgKFVO
TElLRUxZKHZtLmV4Y2VwdGlvbigpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIH0KLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGU7Ci0gICAgICAgIGlmIChMSUtFTFko
c3RydWN0dXJlLmNsYXNzSW5mbygpLT5tZXRob2RUYWJsZS5nZXRQcm90b3R5cGUgPT0gZGVmYXVs
dEdldFByb3RvdHlwZSB8fCBzbG90LmludGVybmFsTWV0aG9kVHlwZSgpID09IFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpKQotICAgICAgICAgICAgcHJvdG90eXBl
ID0gc3RydWN0dXJlLnN0b3JlZFByb3RvdHlwZSgpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIHByb3RvdHlwZSA9IG9iamVjdC0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKTsKLSAgICAgICAg
ICAgIGlmICh2bS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKCFwcm90b3R5cGUuaXNPYmplY3QoKSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgb2JqZWN0ID0gYXNPYmplY3QocHJvdG90eXBlKTsKLSAg
ICB9Ci19Ci0KIGlubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXQoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogewogICAgIFByb3BlcnR5U2xvdCBzbG90
KHRoaXMsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwpAQCAtMTM2OCwy
MiArMTMwOCw2IEBAIGlubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXQoRXhlY1N0YXRlKiAKICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGJhY2tX
aGVuTm9FeGNlcHRpb24+Ci1BTFdBWVNfSU5MSU5FIHR5cGVuYW1lIHN0ZDo6cmVzdWx0X29mPENh
bGxiYWNrV2hlbk5vRXhjZXB0aW9uKGJvb2wsIFByb3BlcnR5U2xvdCYpPjo6dHlwZSBKU09iamVj
dDo6Z2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgQ2FsbGJhY2tXaGVuTm9FeGNlcHRpb24gY2FsbGJhY2spIGNvbnN0Ci17Ci0gICAgUHJv
cGVydHlTbG90IHNsb3QodGhpcywgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6Okdl
dCk7Ci0gICAgcmV0dXJuIGdldFByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3Qs
IGNhbGxiYWNrKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGJhY2tXaGVuTm9FeGNlcHRp
b24+Ci1BTFdBWVNfSU5MSU5FIHR5cGVuYW1lIHN0ZDo6cmVzdWx0X29mPENhbGxiYWNrV2hlbk5v
RXhjZXB0aW9uKGJvb2wsIFByb3BlcnR5U2xvdCYpPjo6dHlwZSBKU09iamVjdDo6Z2V0UHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90LCBDYWxsYmFja1doZW5Ob0V4Y2VwdGlvbiBjYWxsYmFjaykgY29uc3QKLXsK
LSAgICBib29sIGZvdW5kID0gY29uc3RfY2FzdDxKU09iamVjdCo+KHRoaXMpLT5nZXRQcm9wZXJ0
eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKLSAgICBpZiAoVU5MSUtFTFkoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm4geyB9OwotICAgIHJldHVybiBjYWxsYmFj
ayhmb3VuZCwgc2xvdCk7Ci19Ci0KIHRlbXBsYXRlPEpTT2JqZWN0OjpQdXRNb2RlIG1vZGU+CiBB
TFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKFZNJiB2bSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRl
cywgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJKHJldmlzaW9uIDIwNTMxMikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC04NSw2ICs4NSw4MiBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmNhblBl
cmZvcm1GCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1l
IENhbGxiYWNrV2hlbk5vRXhjZXB0aW9uPgorQUxXQVlTX0lOTElORSB0eXBlbmFtZSBzdGQ6OnJl
c3VsdF9vZjxDYWxsYmFja1doZW5Ob0V4Y2VwdGlvbihib29sLCBQcm9wZXJ0eVNsb3QmKT46OnR5
cGUgSlNPYmplY3Q6OmdldFByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIENhbGxiYWNrV2hlbk5vRXhjZXB0aW9uIGNhbGxiYWNrKSBjb25zdAor
eworICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXMsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRo
b2RUeXBlOjpHZXQpOworICAgIHJldHVybiBnZXRQcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlO
YW1lLCBzbG90LCBjYWxsYmFjayk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENhbGxiYWNrV2hl
bk5vRXhjZXB0aW9uPgorQUxXQVlTX0lOTElORSB0eXBlbmFtZSBzdGQ6OnJlc3VsdF9vZjxDYWxs
YmFja1doZW5Ob0V4Y2VwdGlvbihib29sLCBQcm9wZXJ0eVNsb3QmKT46OnR5cGUgSlNPYmplY3Q6
OmdldFByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCwgQ2FsbGJhY2tXaGVuTm9FeGNlcHRpb24gY2FsbGJhY2sp
IGNvbnN0Cit7CisgICAgYm9vbCBmb3VuZCA9IGNvbnN0X2Nhc3Q8SlNPYmplY3QqPih0aGlzKS0+
Z2V0UHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgaWYgKFVOTElL
RUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICByZXR1
cm4gY2FsbGJhY2soZm91bmQsIHNsb3QpOworfQorCitBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmpl
Y3Q6OmdldFByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byYgc3RydWN0dXJlSURUYWJsZSA9IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpOworICAg
IEpTT2JqZWN0KiBvYmplY3QgPSB0aGlzOworICAgIE1ldGhvZFRhYmxlOjpHZXRQcm90b3R5cGVG
dW5jdGlvblB0ciBkZWZhdWx0R2V0UHJvdG90eXBlID0gSlNPYmplY3Q6OmdldFByb3RvdHlwZTsK
KyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBTdHJ1Y3R1cmUmIHN0cnVjdHVyZSA9ICpzdHJ1
Y3R1cmVJRFRhYmxlLmdldChvYmplY3QtPnN0cnVjdHVyZUlEKCkpOworICAgICAgICBpZiAoc3Ry
dWN0dXJlLmNsYXNzSW5mbygpLT5tZXRob2RUYWJsZS5nZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICBpZiAoVU5MSUtFTFkodm0uZXhjZXB0aW9uKCkpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZTsKKyAgICAgICAgaWYgKExJ
S0VMWShzdHJ1Y3R1cmUuY2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlLmdldFByb3RvdHlwZSA9PSBk
ZWZhdWx0R2V0UHJvdG90eXBlIHx8IHNsb3QuaW50ZXJuYWxNZXRob2RUeXBlKCkgPT0gUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSkpCisgICAgICAgICAgICBwcm90
b3R5cGUgPSBzdHJ1Y3R1cmUuc3RvcmVkUHJvdG90eXBlKCk7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgcHJvdG90eXBlID0gb2JqZWN0LT5nZXRQcm90b3R5cGUodm0sIGV4ZWMpOworICAg
ICAgICAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXByb3RvdHlwZS5pc09iamVjdCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBvYmplY3QgPSBhc09iamVjdChwcm90b3R5cGUp
OworICAgIH0KK30KKworQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXROb25JbmRleFBy
b3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICAvLyBUaGlzIG1ldGhvZCBvbmx5IHN1cHBvcnRzIG5v
bi1pbmRleCBQcm9wZXJ0eU5hbWVzLgorICAgIEFTU0VSVCghcGFyc2VJbmRleChwcm9wZXJ0eU5h
bWUpKTsKKworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byYgc3RydWN0dXJlSURU
YWJsZSA9IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpOworICAgIEpTT2JqZWN0KiBvYmplY3Qg
PSB0aGlzOworICAgIE1ldGhvZFRhYmxlOjpHZXRQcm90b3R5cGVGdW5jdGlvblB0ciBkZWZhdWx0
R2V0UHJvdG90eXBlID0gSlNPYmplY3Q6OmdldFByb3RvdHlwZTsKKyAgICB3aGlsZSAodHJ1ZSkg
eworICAgICAgICBTdHJ1Y3R1cmUmIHN0cnVjdHVyZSA9ICpzdHJ1Y3R1cmVJRFRhYmxlLmdldChv
YmplY3QtPnN0cnVjdHVyZUlEKCkpOworICAgICAgICBpZiAoTElLRUxZKCFUeXBlSW5mbzo6b3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlTbG90KG9iamVjdC0+aW5saW5lVHlwZUZsYWdzKCkpKSkgewor
ICAgICAgICAgICAgaWYgKG9iamVjdC0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3Qodm0sIHN0
cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzbG90KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUuY2xhc3NJbmZv
KCktPm1ldGhvZFRhYmxlLmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgc2xvdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBp
ZiAoVU5MSUtFTFkodm0uZXhjZXB0aW9uKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZTsKKyAgICAgICAgaWYgKExJ
S0VMWShzdHJ1Y3R1cmUuY2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlLmdldFByb3RvdHlwZSA9PSBk
ZWZhdWx0R2V0UHJvdG90eXBlIHx8IHNsb3QuaW50ZXJuYWxNZXRob2RUeXBlKCkgPT0gUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSkpCisgICAgICAgICAgICBwcm90
b3R5cGUgPSBzdHJ1Y3R1cmUuc3RvcmVkUHJvdG90eXBlKCk7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgcHJvdG90eXBlID0gb2JqZWN0LT5nZXRQcm90b3R5cGUodm0sIGV4ZWMpOworICAg
ICAgICAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXByb3RvdHlwZS5pc09iamVjdCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBvYmplY3QgPSBhc09iamVjdChwcm90b3R5cGUp
OworICAgIH0KK30KKwogLy8gRUNNQSA4LjYuMi4yCiBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmpl
Y3Q6OnB1dElubGluZShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURl
ZmVycmVkLmNwcAkocmV2aXNpb24gMjA1MzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNPYmplY3RJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlQ29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90
b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUzMTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlv
bnMuaCIKKyNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJUeXBlZEFycmF5
QWRhcHRvcnMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUzMTIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU01hcC5oIgorI2luY2x1ZGUg
IkpTT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUgIk1hcFByb3RvdHlwZS5oIgogI2luY2x1ZGUg
IlN0cnVjdHVyZUlubGluZXMuaCIKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2FtcGxpbmdQcm9maWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAJKHJldmlzaW9uIDIwNTMxMikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNs
dWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNs
dWRlICJKU09iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJMTEludFBDUmFuZ2VzLmgiCiAjaW5j
bHVkZSAiTWFya2VkQmxvY2suaCIKICNpbmNsdWRlICJNYXJrZWRCbG9ja1NldC5oIgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAko
cmV2aXNpb24gMjA1MzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29u
c3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
SlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKICNpbmNs
dWRlICJKU1NldC5oIgogI2luY2x1ZGUgIk1hcERhdGEuaCIKICNpbmNsdWRlICJTZXRQcm90b3R5
cGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBDb25zdHJ1
Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vh
a01hcENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjA1MzEyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAi
SlNPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNXZWFrTWFwLmgiCiAjaW5jbHVkZSAiU3Ry
dWN0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIldlYWtNYXBQcm90b3R5cGUuaCIKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldENvbnN0cnVjdG9y
LmNwcAkocmV2aXNpb24gMjA1MzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
V2Vha1NldENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNPYmplY3RJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNXZWFrU2V0LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5o
IgogI2luY2x1ZGUgIldlYWtTZXRQcm90b3R5cGUuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDIwNTMxMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE1IEBACisyMDE2LTA5LTAxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4K
KworICAgICAgICBNb3ZlIHNvbWUgSlNPYmplY3QgYW5kIEpTQXJyYXkgaW5saW5lIGZ1bmN0aW9u
cyB0byB0aGVpciByZXNwZWN0aXZlIElubGluZXMuaCBmaWxlcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTQ5OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJl
IGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU3RvcmFn
ZUN1c3RvbS5jcHA6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
blBhcnNlci5jcHA6CisKIDIwMTYtMDktMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVUkxQYXJzZXIgc2hvdWxkIGhhbmRsZSAuIGFuZCAu
LiBpbiBVUkwgcGF0aHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFn
ZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNT
dG9yYWdlQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MzEyKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
NyBAQAogI2luY2x1ZGUgIkpTU3RvcmFnZS5oIgogCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgi
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RJbmxpbmVzLmg+CiAjaW5jbHVkZSA8
cnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvUHJvcGVydHlO
YW1lQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRl
bnNpb25QYXJzZXIuY3BwCShyZXZpc2lvbiAyMDUzMTIpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWVJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3QuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU09OT2JqZWN0Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNPYmplY3RJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3RydWN0dXJl
SW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1ZNLmg+CiAjaW5jbHVkZSA8d3Rm
L0N1cnJlbnRUaW1lLmg+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287686</attachid>
            <date>2016-09-01 14:56:41 -0700</date>
            <delta_ts>2016-09-01 15:26:45 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-161499.patch</filename>
            <type>text/plain</type>
            <size>24079</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA1MzE3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDE2LTA5LTAxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBN
b3ZlIHNvbWUgSlNPYmplY3QgYW5kIEpTQXJyYXkgaW5saW5lIGZ1bmN0aW9ucyB0byB0aGVpciBy
ZXNwZWN0aXZlIElubGluZXMuaCBmaWxlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MTQ5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgaXMganVzdCBhIHJlZmFjdG9yaW5nIHBhdGNoIHRvIG1v
dmUgc29tZSBpbmxpbmUgZnVuY3Rpb25zIHRvIHRoZWlyIElubGluZXMuaAorICAgICAgICBmaWxl
cy4gIFRoaXMgd2lsbCBiZSBuZWVkZWQgdG8gZW5hYmxlIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjE0OTgKKyAgICAgICAgbGF0ZXIuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9TY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6Cisg
ICAgICAgIChKU0M6OmdldExlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnRvTGVuZ3Ro
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6OkpTQXJyYXk6Om1lcmdlSW5kZXhpbmdUeXBlRm9yQ29weWluZyk6CisgICAgICAgIChK
U0M6OkpTQXJyYXk6OmNhbkZhc3RDb3B5KToKKyAgICAgICAgKEpTQzo6Z2V0TGVuZ3RoKToKKyAg
ICAgICAgKEpTQzo6dG9MZW5ndGgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNJbnRlcm5hbFByb21p
c2UuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5jcHA6
CisgICAgICAgICogcnVudGltZS9KU0pvYi5jcHA6CisgICAgICAgICogcnVudGltZS9KU01vZHVs
ZVJlY29yZC5jcHA6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OmdldE5vbkluZGV4UHJvcGVydHlTbG90KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJvcGVy
dHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE5vbkluZGV4UHJvcGVydHlTbG90
KToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmNwcDoKKyAgICAgICAgKiBy
dW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUv
TWFwQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5j
cHA6CisgICAgICAgICogcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVu
dGltZS9XZWFrTWFwQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha1NldENv
bnN0cnVjdG9yLmNwcDoKKwogMjAxNi0wOS0wMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVy
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgV0FTTSBjbGFzc2VzIGRyb3BwaW5nIHRoZSBX
QVNNIHByZWZpeApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZh
bHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2Ny
aXB0VmFsdWUuY3BwCShyZXZpc2lvbiAyMDUzMTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSAiQVBJQ2FzdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2lu
Y2x1ZGUgIkpTTG9jay5oIgorI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUg
IlN0cnVjdHVyZUlubGluZXMuaCIKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2
aXNpb24gMjA1MzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQAogI2luY2x1ZGUgIkV4
Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJHZXR0
ZXJTZXR0ZXIuaCIKLSNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNBcnJheUlubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA1MzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgotI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
U3RydWN0dXJlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUzMTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUs
NyArMzUsNyBAQAogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0pT
VmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgotI2luY2x1ZGUgIkpT
T2JqZWN0LmgiCisjaW5jbHVkZSAiSlNPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0
dXJlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCShyZXZpc2lvbiAyMDUzMTIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIu
aCIKICNpbmNsdWRlICJJbmRleGluZ0hlYWRlcklubGluZXMuaCIKKyNpbmNsdWRlICJKU0FycmF5
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5h
bWVBcnJheS5oIgogI2luY2x1ZGUgIlJlamVjdC5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXkuaAkocmV2aXNpb24gMjA1MzEyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNDEsMzAgKzM0MSw2
IEBAIGlubGluZSBKU0FycmF5KiBjb25zdHJ1Y3RBcnJheU5lZ2F0aXZlSW4KICAgICByZXR1cm4g
YXJyYXk7CiB9CiAKLUFMV0FZU19JTkxJTkUgdW5zaWduZWQgZ2V0TGVuZ3RoKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIG9iaikKLXsKLSAgICBpZiAoaXNKU0FycmF5KG9iaikpCi0gICAgICAg
IHJldHVybiBqc0Nhc3Q8SlNBcnJheSo+KG9iaiktPmxlbmd0aCgpOwotCi0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKLSAgICBKU1ZhbHVlIGxlbmd0aFZhbHVlID0gb2JqLT5nZXQoZXhlYywgdm0u
cHJvcGVydHlOYW1lcy0+bGVuZ3RoKTsKLSAgICBpZiAoVU5MSUtFTFkodm0uZXhjZXB0aW9uKCkp
KQotICAgICAgICByZXR1cm4gVUlOVF9NQVg7Ci0gICAgcmV0dXJuIGxlbmd0aFZhbHVlLnRvVUlu
dDMyKGV4ZWMpOwotfQotCi1BTFdBWVNfSU5MSU5FIGRvdWJsZSB0b0xlbmd0aChFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBvYmopCi17Ci0gICAgaWYgKGlzSlNBcnJheShvYmopKQotICAgICAg
ICByZXR1cm4ganNDYXN0PEpTQXJyYXkqPihvYmopLT5sZW5ndGgoKTsKLQotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7Ci0gICAgSlNWYWx1ZSBsZW5ndGhWYWx1ZSA9IG9iai0+Z2V0KGV4ZWMsIHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCk7Ci0gICAgaWYgKFVOTElLRUxZKHZtLmV4Y2VwdGlvbigp
KSkKLSAgICAgICAgcmV0dXJuIFBOYU47Ci0gICAgcmV0dXJuIGxlbmd0aFZhbHVlLnRvTGVuZ3Ro
KGV4ZWMpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTQXJyYXlfaApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUlubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SW5saW5lcy5o
CShyZXZpc2lvbiAyMDUzMTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1JbmRleGluZ1R5cGUgSlNBcnJheTo6bWVyZ2VJbmRleGluZ1R5cGVGb3JDb3B5
aW5nKEluZGV4aW5nVHlwZSBvdGhlcikKK2lubGluZSBJbmRleGluZ1R5cGUgSlNBcnJheTo6bWVy
Z2VJbmRleGluZ1R5cGVGb3JDb3B5aW5nKEluZGV4aW5nVHlwZSBvdGhlcikKIHsKICAgICBJbmRl
eGluZ1R5cGUgdHlwZSA9IGluZGV4aW5nVHlwZSgpOwogICAgIGlmICghKHR5cGUgJiBJc0FycmF5
ICYmIG90aGVyICYgSXNBcnJheSkpCkBAIC01Niw3ICs1Niw3IEBAIEluZGV4aW5nVHlwZSBKU0Fy
cmF5OjptZXJnZUluZGV4aW5nVHlwZUYKICAgICByZXR1cm4gdHlwZTsKIH0KIAotYm9vbCBKU0Fy
cmF5OjpjYW5GYXN0Q29weShWTSYgdm0sIEpTQXJyYXkqIG90aGVyQXJyYXkpCitpbmxpbmUgYm9v
bCBKU0FycmF5OjpjYW5GYXN0Q29weShWTSYgdm0sIEpTQXJyYXkqIG90aGVyQXJyYXkpCiB7CiAg
ICAgaWYgKGhhc0FueUFycmF5U3RvcmFnZShpbmRleGluZ1R5cGUoKSkgfHwgaGFzQW55QXJyYXlT
dG9yYWdlKG90aGVyQXJyYXktPmluZGV4aW5nVHlwZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtNjgsNiArNjgsMzAgQEAgYm9vbCBKU0FycmF5OjpjYW5GYXN0Q29weShWTSYgdm0sIEpT
QXJyYQogICAgIHJldHVybiB0cnVlOwogfQogCitBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIGdldExl
bmd0aChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmopCit7CisgICAgaWYgKGlzSlNBcnJh
eShvYmopKQorICAgICAgICByZXR1cm4ganNDYXN0PEpTQXJyYXkqPihvYmopLT5sZW5ndGgoKTsK
KworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNWYWx1ZSBsZW5ndGhWYWx1ZSA9IG9i
ai0+Z2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCk7CisgICAgaWYgKFVOTElLRUxZ
KHZtLmV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOworICAgIHJldHVybiBs
ZW5ndGhWYWx1ZS50b1VJbnQzMihleGVjKTsKK30KKworQUxXQVlTX0lOTElORSBkb3VibGUgdG9M
ZW5ndGgoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqKQoreworICAgIGlmIChpc0pTQXJy
YXkob2JqKSkKKyAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0FycmF5Kj4ob2JqKS0+bGVuZ3RoKCk7
CisKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTVmFsdWUgbGVuZ3RoVmFsdWUgPSBv
YmotPmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpOworICAgIGlmIChVTkxJS0VM
WSh2bS5leGNlcHRpb24oKSkpCisgICAgICAgIHJldHVybiBQTmFOOworICAgIHJldHVybiBsZW5n
dGhWYWx1ZS50b0xlbmd0aChleGVjKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRp
ZiAvKiBKU0FycmF5SW5saW5lc19oICovCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0ludGVybmFsUHJvbWlzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21pc2UuY3BwCShyZXZpc2lvbiAyMDUzMTIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVybmFsUHJvbWlzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIK
ICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMu
aCIKKyNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxp
bmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5jcHAJKHJl
dmlzaW9uIDIwNTMxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJu
YWxQcm9taXNlRGVmZXJyZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlLmgi
CiAjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpT
T2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1
ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNKb2IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTSm9iLmNwcAkocmV2aXNpb24gMjA1MzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNKb2IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIK
ICNpbmNsdWRlICJNaWNyb3Rhc2suaCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIK
ICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCShyZXZpc2lvbiAyMDUzMTIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKU01hcC5oIgogI2luY2x1ZGUgIkpT
TW9kdWxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5o
IgorI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5s
aW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAyMDUzMTIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjkwLDY2ICsxMjkwLDYgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0
eQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0Ojpn
ZXRQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIGF1dG8m
IHN0cnVjdHVyZUlEVGFibGUgPSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKTsKLSAgICBKU09i
amVjdCogb2JqZWN0ID0gdGhpczsKLSAgICBNZXRob2RUYWJsZTo6R2V0UHJvdG90eXBlRnVuY3Rp
b25QdHIgZGVmYXVsdEdldFByb3RvdHlwZSA9IEpTT2JqZWN0OjpnZXRQcm90b3R5cGU7Ci0gICAg
d2hpbGUgKHRydWUpIHsKLSAgICAgICAgU3RydWN0dXJlJiBzdHJ1Y3R1cmUgPSAqc3RydWN0dXJl
SURUYWJsZS5nZXQob2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKLSAgICAgICAgaWYgKHN0cnVjdHVy
ZS5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChvYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgaWYgKFVOTElLRUxZKHZtLmV4Y2VwdGlvbigpKSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGU7Ci0gICAgICAgIGlmIChMSUtFTFko
c3RydWN0dXJlLmNsYXNzSW5mbygpLT5tZXRob2RUYWJsZS5nZXRQcm90b3R5cGUgPT0gZGVmYXVs
dEdldFByb3RvdHlwZSB8fCBzbG90LmludGVybmFsTWV0aG9kVHlwZSgpID09IFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpKQotICAgICAgICAgICAgcHJvdG90eXBl
ID0gc3RydWN0dXJlLnN0b3JlZFByb3RvdHlwZSgpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIHByb3RvdHlwZSA9IG9iamVjdC0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKTsKLSAgICAgICAg
ICAgIGlmICh2bS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKCFwcm90b3R5cGUuaXNPYmplY3QoKSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgb2JqZWN0ID0gYXNPYmplY3QocHJvdG90eXBlKTsKLSAg
ICB9Ci19Ci0KLUFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0Tm9uSW5kZXhQcm9wZXJ0
eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCi17Ci0gICAgLy8gVGhpcyBtZXRob2Qgb25seSBzdXBwb3J0cyBub24taW5k
ZXggUHJvcGVydHlOYW1lcy4KLSAgICBBU1NFUlQoIXBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSk7
Ci0KLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIGF1dG8mIHN0cnVjdHVyZUlEVGFibGUg
PSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKTsKLSAgICBKU09iamVjdCogb2JqZWN0ID0gdGhp
czsKLSAgICBNZXRob2RUYWJsZTo6R2V0UHJvdG90eXBlRnVuY3Rpb25QdHIgZGVmYXVsdEdldFBy
b3RvdHlwZSA9IEpTT2JqZWN0OjpnZXRQcm90b3R5cGU7Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAg
ICAgICAgU3RydWN0dXJlJiBzdHJ1Y3R1cmUgPSAqc3RydWN0dXJlSURUYWJsZS5nZXQob2JqZWN0
LT5zdHJ1Y3R1cmVJRCgpKTsKLSAgICAgICAgaWYgKExJS0VMWSghVHlwZUluZm86Om92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdChvYmplY3QtPmlubGluZVR5cGVGbGFncygpKSkpIHsKLSAgICAg
ICAgICAgIGlmIChvYmplY3QtPmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KHZtLCBzdHJ1Y3R1
cmUsIHByb3BlcnR5TmFtZSwgc2xvdCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoc3RydWN0dXJlLmNsYXNzSW5mbygpLT5t
ZXRob2RUYWJsZS5nZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgaWYgKFVO
TElLRUxZKHZtLmV4Y2VwdGlvbigpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIH0KLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGU7Ci0gICAgICAgIGlmIChMSUtFTFko
c3RydWN0dXJlLmNsYXNzSW5mbygpLT5tZXRob2RUYWJsZS5nZXRQcm90b3R5cGUgPT0gZGVmYXVs
dEdldFByb3RvdHlwZSB8fCBzbG90LmludGVybmFsTWV0aG9kVHlwZSgpID09IFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpKQotICAgICAgICAgICAgcHJvdG90eXBl
ID0gc3RydWN0dXJlLnN0b3JlZFByb3RvdHlwZSgpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIHByb3RvdHlwZSA9IG9iamVjdC0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKTsKLSAgICAgICAg
ICAgIGlmICh2bS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKCFwcm90b3R5cGUuaXNPYmplY3QoKSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgb2JqZWN0ID0gYXNPYmplY3QocHJvdG90eXBlKTsKLSAg
ICB9Ci19Ci0KIGlubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXQoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogewogICAgIFByb3BlcnR5U2xvdCBzbG90
KHRoaXMsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwpAQCAtMTM2OCwy
MiArMTMwOCw2IEBAIGlubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXQoRXhlY1N0YXRlKiAKICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGJhY2tX
aGVuTm9FeGNlcHRpb24+Ci1BTFdBWVNfSU5MSU5FIHR5cGVuYW1lIHN0ZDo6cmVzdWx0X29mPENh
bGxiYWNrV2hlbk5vRXhjZXB0aW9uKGJvb2wsIFByb3BlcnR5U2xvdCYpPjo6dHlwZSBKU09iamVj
dDo6Z2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgQ2FsbGJhY2tXaGVuTm9FeGNlcHRpb24gY2FsbGJhY2spIGNvbnN0Ci17Ci0gICAgUHJv
cGVydHlTbG90IHNsb3QodGhpcywgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6Okdl
dCk7Ci0gICAgcmV0dXJuIGdldFByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3Qs
IGNhbGxiYWNrKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGJhY2tXaGVuTm9FeGNlcHRp
b24+Ci1BTFdBWVNfSU5MSU5FIHR5cGVuYW1lIHN0ZDo6cmVzdWx0X29mPENhbGxiYWNrV2hlbk5v
RXhjZXB0aW9uKGJvb2wsIFByb3BlcnR5U2xvdCYpPjo6dHlwZSBKU09iamVjdDo6Z2V0UHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90LCBDYWxsYmFja1doZW5Ob0V4Y2VwdGlvbiBjYWxsYmFjaykgY29uc3QKLXsK
LSAgICBib29sIGZvdW5kID0gY29uc3RfY2FzdDxKU09iamVjdCo+KHRoaXMpLT5nZXRQcm9wZXJ0
eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKLSAgICBpZiAoVU5MSUtFTFkoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm4geyB9OwotICAgIHJldHVybiBjYWxsYmFj
ayhmb3VuZCwgc2xvdCk7Ci19Ci0KIHRlbXBsYXRlPEpTT2JqZWN0OjpQdXRNb2RlIG1vZGU+CiBB
TFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKFZNJiB2bSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRl
cywgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJKHJldmlzaW9uIDIwNTMxMikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC04NSw2ICs4NSw4MiBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmNhblBl
cmZvcm1GCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1l
IENhbGxiYWNrV2hlbk5vRXhjZXB0aW9uPgorQUxXQVlTX0lOTElORSB0eXBlbmFtZSBzdGQ6OnJl
c3VsdF9vZjxDYWxsYmFja1doZW5Ob0V4Y2VwdGlvbihib29sLCBQcm9wZXJ0eVNsb3QmKT46OnR5
cGUgSlNPYmplY3Q6OmdldFByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIENhbGxiYWNrV2hlbk5vRXhjZXB0aW9uIGNhbGxiYWNrKSBjb25zdAor
eworICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXMsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRo
b2RUeXBlOjpHZXQpOworICAgIHJldHVybiBnZXRQcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlO
YW1lLCBzbG90LCBjYWxsYmFjayk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENhbGxiYWNrV2hl
bk5vRXhjZXB0aW9uPgorQUxXQVlTX0lOTElORSB0eXBlbmFtZSBzdGQ6OnJlc3VsdF9vZjxDYWxs
YmFja1doZW5Ob0V4Y2VwdGlvbihib29sLCBQcm9wZXJ0eVNsb3QmKT46OnR5cGUgSlNPYmplY3Q6
OmdldFByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCwgQ2FsbGJhY2tXaGVuTm9FeGNlcHRpb24gY2FsbGJhY2sp
IGNvbnN0Cit7CisgICAgYm9vbCBmb3VuZCA9IGNvbnN0X2Nhc3Q8SlNPYmplY3QqPih0aGlzKS0+
Z2V0UHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgaWYgKFVOTElL
RUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICByZXR1
cm4gY2FsbGJhY2soZm91bmQsIHNsb3QpOworfQorCitBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmpl
Y3Q6OmdldFByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byYgc3RydWN0dXJlSURUYWJsZSA9IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpOworICAg
IEpTT2JqZWN0KiBvYmplY3QgPSB0aGlzOworICAgIE1ldGhvZFRhYmxlOjpHZXRQcm90b3R5cGVG
dW5jdGlvblB0ciBkZWZhdWx0R2V0UHJvdG90eXBlID0gSlNPYmplY3Q6OmdldFByb3RvdHlwZTsK
KyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBTdHJ1Y3R1cmUmIHN0cnVjdHVyZSA9ICpzdHJ1
Y3R1cmVJRFRhYmxlLmdldChvYmplY3QtPnN0cnVjdHVyZUlEKCkpOworICAgICAgICBpZiAoc3Ry
dWN0dXJlLmNsYXNzSW5mbygpLT5tZXRob2RUYWJsZS5nZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICBpZiAoVU5MSUtFTFkodm0uZXhjZXB0aW9uKCkpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZTsKKyAgICAgICAgaWYgKExJ
S0VMWShzdHJ1Y3R1cmUuY2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlLmdldFByb3RvdHlwZSA9PSBk
ZWZhdWx0R2V0UHJvdG90eXBlIHx8IHNsb3QuaW50ZXJuYWxNZXRob2RUeXBlKCkgPT0gUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSkpCisgICAgICAgICAgICBwcm90
b3R5cGUgPSBzdHJ1Y3R1cmUuc3RvcmVkUHJvdG90eXBlKCk7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgcHJvdG90eXBlID0gb2JqZWN0LT5nZXRQcm90b3R5cGUodm0sIGV4ZWMpOworICAg
ICAgICAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXByb3RvdHlwZS5pc09iamVjdCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBvYmplY3QgPSBhc09iamVjdChwcm90b3R5cGUp
OworICAgIH0KK30KKworQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXROb25JbmRleFBy
b3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICAvLyBUaGlzIG1ldGhvZCBvbmx5IHN1cHBvcnRzIG5v
bi1pbmRleCBQcm9wZXJ0eU5hbWVzLgorICAgIEFTU0VSVCghcGFyc2VJbmRleChwcm9wZXJ0eU5h
bWUpKTsKKworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byYgc3RydWN0dXJlSURU
YWJsZSA9IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpOworICAgIEpTT2JqZWN0KiBvYmplY3Qg
PSB0aGlzOworICAgIE1ldGhvZFRhYmxlOjpHZXRQcm90b3R5cGVGdW5jdGlvblB0ciBkZWZhdWx0
R2V0UHJvdG90eXBlID0gSlNPYmplY3Q6OmdldFByb3RvdHlwZTsKKyAgICB3aGlsZSAodHJ1ZSkg
eworICAgICAgICBTdHJ1Y3R1cmUmIHN0cnVjdHVyZSA9ICpzdHJ1Y3R1cmVJRFRhYmxlLmdldChv
YmplY3QtPnN0cnVjdHVyZUlEKCkpOworICAgICAgICBpZiAoTElLRUxZKCFUeXBlSW5mbzo6b3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlTbG90KG9iamVjdC0+aW5saW5lVHlwZUZsYWdzKCkpKSkgewor
ICAgICAgICAgICAgaWYgKG9iamVjdC0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3Qodm0sIHN0
cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzbG90KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUuY2xhc3NJbmZv
KCktPm1ldGhvZFRhYmxlLmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgc2xvdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBp
ZiAoVU5MSUtFTFkodm0uZXhjZXB0aW9uKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZTsKKyAgICAgICAgaWYgKExJ
S0VMWShzdHJ1Y3R1cmUuY2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlLmdldFByb3RvdHlwZSA9PSBk
ZWZhdWx0R2V0UHJvdG90eXBlIHx8IHNsb3QuaW50ZXJuYWxNZXRob2RUeXBlKCkgPT0gUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSkpCisgICAgICAgICAgICBwcm90
b3R5cGUgPSBzdHJ1Y3R1cmUuc3RvcmVkUHJvdG90eXBlKCk7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgcHJvdG90eXBlID0gb2JqZWN0LT5nZXRQcm90b3R5cGUodm0sIGV4ZWMpOworICAg
ICAgICAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXByb3RvdHlwZS5pc09iamVjdCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBvYmplY3QgPSBhc09iamVjdChwcm90b3R5cGUp
OworICAgIH0KK30KKwogLy8gRUNNQSA4LjYuMi4yCiBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmpl
Y3Q6OnB1dElubGluZShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURl
ZmVycmVkLmNwcAkocmV2aXNpb24gMjA1MzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNPYmplY3RJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlQ29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90
b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUzMTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlv
bnMuaCIKKyNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJUeXBlZEFycmF5
QWRhcHRvcnMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUzMTIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU01hcC5oIgorI2luY2x1ZGUg
IkpTT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUgIk1hcFByb3RvdHlwZS5oIgogI2luY2x1ZGUg
IlN0cnVjdHVyZUlubGluZXMuaCIKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2FtcGxpbmdQcm9maWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAJKHJldmlzaW9uIDIwNTMxMikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNs
dWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNs
dWRlICJKU09iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJMTEludFBDUmFuZ2VzLmgiCiAjaW5j
bHVkZSAiTWFya2VkQmxvY2suaCIKICNpbmNsdWRlICJNYXJrZWRCbG9ja1NldC5oIgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAko
cmV2aXNpb24gMjA1MzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29u
c3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
SlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKICNpbmNs
dWRlICJKU1NldC5oIgogI2luY2x1ZGUgIk1hcERhdGEuaCIKICNpbmNsdWRlICJTZXRQcm90b3R5
cGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBDb25zdHJ1
Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vh
a01hcENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjA1MzEyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAi
SlNPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNXZWFrTWFwLmgiCiAjaW5jbHVkZSAiU3Ry
dWN0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIldlYWtNYXBQcm90b3R5cGUuaCIKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldENvbnN0cnVjdG9y
LmNwcAkocmV2aXNpb24gMjA1MzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
V2Vha1NldENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNPYmplY3RJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNXZWFrU2V0LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5o
IgogI2luY2x1ZGUgIldlYWtTZXRQcm90b3R5cGUuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDIwNTMxMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE4IEBACisyMDE2LTA5LTAxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4K
KworICAgICAgICBNb3ZlIHNvbWUgSlNPYmplY3QgYW5kIEpTQXJyYXkgaW5saW5lIGZ1bmN0aW9u
cyB0byB0aGVpciByZXNwZWN0aXZlIElubGluZXMuaCBmaWxlcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTQ5OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJl
IGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1
bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NQmluZGluZy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0
b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZUN1c3RvbS5jcHA6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
blBhcnNlci5jcHA6CisKIDIwMTYtMDktMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVUkxQYXJzZXIgc2hvdWxkIGhhbmRsZSAuIGFuZCAu
LiBpbiBVUkwgcGF0aHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1
bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU09iamVjdElubGluZXMuaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTT2JqZWN0SW5saW5l
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9K
U09iamVjdElubGluZXNfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9KU09iamVjdElubGluZXNfaAor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0SW5saW5lcy5oPgorI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAkocmV2aXNpb24gMjA1
MzEyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlIDxydW50aW1lL0pTQXJyYXlCdWZm
ZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8
cnVudGltZS9KU0NlbGxJbmxpbmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU09iamVjdElubGlu
ZXMuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTVHlwZWRBcnJheXMuaD4KICNpbmNsdWRlIDxydW50
aW1lL0xvb2t1cC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaD4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rp
b25DdXN0b20uY3BwCShyZXZpc2lvbiAyMDUzMTIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiAr
MzYsNyBAQAogI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAiU1FMVHJh
bnNhY3Rpb24uaCIKICNpbmNsdWRlICJTUUxWYWx1ZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNP
YmplY3RJbmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZUN1c3RvbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MzEyKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlQ3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTYsNiArOTYsNyBAQAogI2luY2x1ZGUgIldlYkdMVmVydGV4QXJyYXlP
YmplY3QuaCIKICNpbmNsdWRlICJXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgiCiAjaW5jbHVk
ZSA8cnVudGltZS9FcnJvci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8cnVudGltZS9KU1R5cGVkQXJyYXlzLmg+CiAjaW5jbHVkZSA8cnVudGltZS9U
eXBlZEFycmF5SW5saW5lcy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvVHlwZWRBcnJheXMuaD4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJz
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCShyZXZpc2lvbiAyMDUzMTIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pT
VmFsdWVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3Qu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09OT2JqZWN0Lmg+CisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNPYmplY3RJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
U3RydWN0dXJlSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1ZNLmg+CiAjaW5j
bHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+Cg==
</data>
<flag name="review"
          id="311129"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>