<?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>114306</bug_id>
          
          <creation_ts>2013-04-09 13:33:47 -0700</creation_ts>
          <short_desc>fourthTier: DFG should provide utilities for common OSR exit tasks</short_desc>
          <delta_ts>2013-04-09 13:47:26 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>113623</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>872051</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-09 13:33:47 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872053</commentid>
    <comment_count>1</comment_count>
      <attachid>197165</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-09 13:34:47 -0700</bug_when>
    <thetext>Created attachment 197165
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872054</commentid>
    <comment_count>2</comment_count>
      <attachid>197165</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-04-09 13:38:09 -0700</bug_when>
    <thetext>Comment on attachment 197165
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872060</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-09 13:47:26 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/148047</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>197165</attachid>
            <date>2013-04-09 13:34:47 -0700</date>
            <delta_ts>2013-04-09 13:38:09 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>36368</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ4MDQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBA
CisyMDEzLTA0LTA5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Zm91cnRoVGllcjogREZHIHNob3VsZCBwcm92aWRlIHV0aWxpdGllcyBmb3IgY29tbW9uIE9TUiBl
eGl0IHRhc2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTQzMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAg
CisgICAgICAgIEp1c3QgYWJzdHJhY3Qgb3V0IHNvbWUgdGhpbmdzIHRoYXQgdGhlIEZUTCB3aWxs
IHdhbnQgdG8gdXNlIGFzIHdlbGwuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBk
ZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBp
bGVyLmg6CisgICAgICAgIChPU1JFeGl0Q29tcGlsZXIpOgorICAgICAgICAqIGRmZy9ERkdPU1JF
eGl0Q29tcGlsZXIzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdENvbXBpbGVy
Ojpjb21waWxlRXhpdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KToKKyAgICAg
ICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDogQWRkZWQuCisgICAgICAgIChE
RkcpOgorICAgICAgICAoSlNDOjpERkc6OmhhbmRsZUV4aXRDb3VudHMpOgorICAgICAgICAoSlND
OjpERkc6OnJlaWZ5SW5saW5lZENhbGxGcmFtZXMpOgorICAgICAgICAoSlNDOjpERkc6OmFkanVz
dEFuZEp1bXBUb1RhcmdldCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1v
bi5oOiBBZGRlZC4KKyAgICAgICAgKERGRyk6CisKIDIwMTMtMDQtMDkgIEZpbGlwIFBpemxvICA8
ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBmb3VydGhUaWVyOiBERkcgc2hvdWxkIGJldHRl
ciBhYnN0cmFjdCBmbG9hdGluZyBwb2ludCBhcmd1bWVudHMKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE0NzYwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDYgKzEwNCw3IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAK
ICAgICBkZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCiAgICAgZGZnL0RGR09TUkV4aXRD
b21waWxlcjY0LmNwcAorICAgIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCiAgICAg
ZGZnL0RGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuY3BwCiAgICAgZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCiAgICAgZGZnL0RGR1BoYXNlLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE0NzYwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yNDcsNiArMjQ3LDgg
QEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdENvbXBpbGVyLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXIuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
Q29tcGlsZXJDb21tb24uY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXRDb21waWxlckNvbW1vbi5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmggXApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDE0NzYwNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsNiArMTQyLDcg
QEAgU09VUkNFUyArPSBcCiAgICAgZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAgXAogICAgIGRm
Zy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAgXAogICAgIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIz
Ml82NC5jcHAgXAorICAgIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwIFwKICAgICBk
ZmcvREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5jcHAgXAogICAgIGRmZy9ERkdQaGFzZS5jcHAg
XAogICAgIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgXApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE0NzYwNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjMsNiArMTYzLDggQEAKIAkJMEY2Mzk0ODUxNUU0ODExQjAwNkE1OTdD
IC8qIERGR0FycmF5TW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY2Mzk0ODIxNUU0ODExNDAwNkE1OTdDIC8qIERGR0FycmF5TW9kZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNjZFMTZCMTRE
RjNGMTYwMEI3QjJFNCAvKiBERkdBZGphY2VuY3lMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2RTE2ODE0REYzRjEzMDBCN0IyRTQgLyogREZH
QWRqYWNlbmN5TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGNjZFMTZDMTRERjNGMTYwMEI3QjJFNCAvKiBERkdFZGdlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2RTE2OTE0REYzRjEzMDBC
N0IyRTQgLyogREZHRWRnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGNzAyNUE5MTcxNEIwRkEwMDM4MkMwRSAvKiBERkdPU1JFeGl0Q29tcGls
ZXJDb21tb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY3MDI1QTcxNzE0QjBGODAwMzgyQzBFIC8qIERGR09TUkV4aXRDb21waWxlckNvbW1vbi5j
cHAgKi87IH07CisJCTBGNzAyNUFBMTcxNEIwRkMwMDM4MkMwRSAvKiBERkdPU1JFeGl0Q29tcGls
ZXJDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNzAyNUE4MTcxNEIwRjgwMDM4MkMwRSAvKiBERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjcxNENB
NDE2RUE5MkYwMDBGM0VCRUIgLyogREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjcxNENBMTE2RUE5
MkVEMDBGM0VCRUIgLyogREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAgKi87IH07CiAJ
CTBGNzE0Q0E1MTZFQTkyRjIwMEYzRUJFQiAvKiBERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjcxNENB
MjE2RUE5MkVEMDBGM0VCRUIgLyogREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNzNEN0FFMTY1
QTE0MkQwMEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzNEN0FCMTY1QTE0MkEwMEFDQUI3
MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmNwcCAqLzsgfTsKQEAgLTEwODksNiArMTA5MSw4
IEBACiAJCTBGNjM5NDgyMTVFNDgxMTQwMDZBNTk3QyAvKiBERkdBcnJheU1vZGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQXJyYXlNb2RlLmg7IHBhdGggPSBkZmcvREZH
QXJyYXlNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjZFMTY4MTRERjNG
MTMwMEI3QjJFNCAvKiBERkdBZGphY2VuY3lMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IERGR0FkamFjZW5jeUxpc3QuaDsgcGF0aCA9IGRmZy9ERkdBZGphY2VuY3lMaXN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjZFMTY5MTRERjNGMTMwMEI3QjJF
NCAvKiBERkdFZGdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0VkZ2Uu
aDsgcGF0aCA9IGRmZy9ERkdFZGdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
NzAyNUE3MTcxNEIwRjgwMDM4MkMwRSAvKiBERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHT1NSRXhpdENvbXBpbGVyQ29t
bW9uLmNwcDsgcGF0aCA9IGRmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjcwMjVBODE3MTRCMEY4MDAzODJDMEUgLyogREZHT1NS
RXhpdENvbXBpbGVyQ29tbW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERG
R09TUkV4aXRDb21waWxlckNvbW1vbi5oOyBwYXRoID0gZGZnL0RGR09TUkV4aXRDb21waWxlckNv
bW1vbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjcxNENBMTE2RUE5MkVEMDBG
M0VCRUIgLyogREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcDsg
cGF0aCA9IGRmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY3MTRDQTIxNkVBOTJFRDAwRjNFQkVCIC8qIERGR0JhY2t3YXJk
c1Byb3BhZ2F0aW9uUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZH
QmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5oOyBwYXRoID0gZGZnL0RGR0JhY2t3YXJkc1Byb3Bh
Z2F0aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3M0Q3QUIxNjVB
MTQyQTAwQUNBQjcxIC8qIENsb3N1cmVDYWxsU3R1YlJvdXRpbmUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xvc3VyZUNhbGxTdHViUm91dGluZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzg3LDYgKzI3OTEsOCBAQAogCQkJCTBGQzA5NzZG
MTQ2OTNBRUYwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCAqLywKIAkJCQkwRkMwOTc3
NTE0Njk0M0FEMDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwICovLAogCQkJ
CTBGQzA5NzcwMTQ2OTNBRUYwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAgKi8s
CisJCQkJMEY3MDI1QTcxNzE0QjBGODAwMzgyQzBFIC8qIERGR09TUkV4aXRDb21waWxlckNvbW1v
bi5jcHAgKi8sCisJCQkJMEY3MDI1QTgxNzE0QjBGODAwMzgyQzBFIC8qIERGR09TUkV4aXRDb21w
aWxlckNvbW1vbi5oICovLAogCQkJCTBGRUZDOUE3MTY4MUEzQjAwMDU2N0Y1MyAvKiBERkdPU1JF
eGl0SnVtcFBsYWNlaG9sZGVyLmNwcCAqLywKIAkJCQkwRkVGQzlBODE2ODFBM0IwMDA1NjdGNTMg
LyogREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oICovLAogCQkJCTBGRkZDOTRGMTRFRjkwOTUw
MEM3MjUzMiAvKiBERkdQaGFzZS5jcHAgKi8sCkBAIC0zMjgxLDYgKzMyODcsNyBAQAogCQkJCUJD
MThDNDJBMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1
MDdEMjlFMEU4NzFFNUUwMEQ3RDg5NiAvKiBKU1R5cGVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NkUzQzYxMjE2N0JBQkQ3MDA2RDc2MEEgLyogSlNWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEY3MDI1QUExNzE0QjBGQzAwMzgyQzBFIC8qIERGR09TUkV4aXRDb21waWxlckNvbW1vbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MkMwRTE2RjVDRDAwQjM0NDYwIC8qIEpTVmFsdWVS
ZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDJEMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1Zh
cmlhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkUzQzYxNTE2N0JBQkQ3MDA2RDc2
MEEgLyogSlNWaXJ0dWFsTWFjaGluZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zODUyLDYgKzM4NTks
NyBAQAogCQkJCTE0N0YzOUJEMTA3RUMzNzYwMDQyN0E0OCAvKiBBcmdMaXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTE0N0YzOUJFMTA3RUMzNzYwMDQyN0E0OCAvKiBBcmd1bWVudHMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJODZEM0IyQzMxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxl
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjcwMjVBOTE3MTRCMEZBMDAzODJDMEUgLyogREZH
T1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3NERFMUQwMTIw
Qjg3NTYwMEQ0MEQ1QiAvKiBBUk12N0Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjgzMzVCNzE2MzlDMUU2MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxNDdGMzlCRjEwN0VDMzc2MDA0MjdBNDggLyogQXJyYXlDb25zdHJ1
Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCShyZXZpc2lvbiAxNDc2MDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShERkdfSklUKSAm
JiBVU0UoSlNWQUxVRTMyXzY0KQogCiAjaW5jbHVkZSAiREZHT3BlcmF0aW9ucy5oIgorI2luY2x1
ZGUgIkRGR09TUkV4aXRDb21waWxlckNvbW1vbi5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIK
ICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgogCkBAIC02MjgsNDUgKzYyOSwxMSBAQCB2b2lkIE9T
UkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgLy8gICAgIGNvdW50ZXIgdG8g
MDsgb3RoZXJ3aXNlIHdlIHNldCB0aGUgY291bnRlciB0bwogICAgIC8vICAgICBjb3VudGVyVmFs
dWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwKCkuCiAgICAgCi0gICAgaGFuZGxlRXhpdENvdW50cyhl
eGl0KTsKKyAgICBoYW5kbGVFeGl0Q291bnRzKG1faml0LCBleGl0KTsKICAgICAKICAgICAvLyAx
MykgUmVpZnkgaW5saW5lZCBjYWxsIGZyYW1lcy4KICAgICAKLSAgICBBU1NFUlQobV9qaXQuYmFz
ZWxpbmVDb2RlQmxvY2soKS0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsK
LSAgICBtX2ppdC5zdG9yZVB0cihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9qaXQu
YmFzZWxpbmVDb2RlQmxvY2soKSksIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcigoVmlydHVh
bFJlZ2lzdGVyKUpTU3RhY2s6OkNvZGVCbG9jaykpOwotICAgIAotICAgIGZvciAoQ29kZU9yaWdp
biBjb2RlT3JpZ2luID0gZXhpdC5tX2NvZGVPcmlnaW47IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZy
YW1lOyBjb2RlT3JpZ2luID0gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmNhbGxlcikgewot
ICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IGNvZGVPcmlnaW4uaW5s
aW5lQ2FsbEZyYW1lOwotICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9q
aXQuYmFzZWxpbmVDb2RlQmxvY2tGb3IoY29kZU9yaWdpbik7Ci0gICAgICAgIENvZGVCbG9jayog
YmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIgPSBtX2ppdC5iYXNlbGluZUNvZGVCbG9ja0Zvcihp
bmxpbmVDYWxsRnJhbWUtPmNhbGxlcik7Ci0gICAgICAgIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hp
bmVPZmZzZXQ+JiBkZWNvZGVkQ29kZU1hcCA9IG1faml0LmRlY29kZWRDb2RlTWFwRm9yKGJhc2Vs
aW5lQ29kZUJsb2NrRm9yQ2FsbGVyKTsKLSAgICAgICAgdW5zaWduZWQgcmV0dXJuQnl0ZWNvZGVJ
bmRleCA9IGlubGluZUNhbGxGcmFtZS0+Y2FsbGVyLmJ5dGVjb2RlSW5kZXggKyBPUENPREVfTEVO
R1RIKG9wX2NhbGwpOwotICAgICAgICBCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQqIG1hcHBpbmcg
PSBiaW5hcnlTZWFyY2g8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0LCB1bnNpZ25lZD4oZGVjb2Rl
ZENvZGVNYXAsIGRlY29kZWRDb2RlTWFwLnNpemUoKSwgcmV0dXJuQnl0ZWNvZGVJbmRleCwgQnl0
ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0OjpnZXRCeXRlY29kZUluZGV4KTsKLSAgICAgICAgCi0gICAg
ICAgIEFTU0VSVChtYXBwaW5nKTsKLSAgICAgICAgQVNTRVJUKG1hcHBpbmctPm1fYnl0ZWNvZGVJ
bmRleCA9PSByZXR1cm5CeXRlY29kZUluZGV4KTsKLSAgICAgICAgCi0gICAgICAgIHZvaWQqIGp1
bXBUYXJnZXQgPSBiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlci0+Z2V0SklUQ29kZSgpLT5leGVj
dXRhYmxlQWRkcmVzc0F0T2Zmc2V0KG1hcHBpbmctPm1fbWFjaGluZUNvZGVPZmZzZXQpOwotCi0g
ICAgICAgIEdQUlJlZyBjYWxsZXJGcmFtZUdQUjsKLSAgICAgICAgaWYgKGlubGluZUNhbGxGcmFt
ZS0+Y2FsbGVyLmlubGluZUNhbGxGcmFtZSkgewotICAgICAgICAgICAgbV9qaXQuYWRkMzIoQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXIuaW5saW5l
Q2FsbEZyYW1lLT5zdGFja09mZnNldCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLCBHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDMpOwotICAgICAgICAgICAgY2FsbGVy
RnJhbWVHUFIgPSBHUFJJbmZvOjpyZWdUMzsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBj
YWxsZXJGcmFtZUdQUiA9IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyOwotICAgICAgICAKLSAg
ICAgICAgbV9qaXQuc3RvcmVQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJhc2Vs
aW5lQ29kZUJsb2NrKSwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKChWaXJ0dWFsUmVnaXN0
ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpDb2RlQmxvY2spKSk7
Ci0gICAgICAgIG1faml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6Q2VsbFRhZyksIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFsUmVnaXN0ZXIp
KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpTY29wZUNoYWluKSkpOwot
ICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCgpKQotICAgICAgICAg
ICAgbV9qaXQuc3RvcmVQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlubGluZUNh
bGxGcmFtZS0+Y2FsbGVlLT5zY29wZSgpKSwgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKChW
aXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpT
Y29wZUNoYWluKSkpOwotICAgICAgICBtX2ppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcigoVmly
dHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6Q2Fs
bGVyRnJhbWUpKSk7Ci0gICAgICAgIG1faml0LnN0b3JlUHRyKGNhbGxlckZyYW1lR1BSLCBBc3Nl
bWJseUhlbHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1l
LT5zdGFja09mZnNldCArIEpTU3RhY2s6OkNhbGxlckZyYW1lKSkpOwotICAgICAgICBtX2ppdC5z
dG9yZVB0cihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoanVtcFRhcmdldCksIEFzc2Vt
Ymx5SGVscGVyczo6cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUt
PnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6UmV0dXJuUEMpKSk7Ci0gICAgICAgIG1faml0LnN0b3Jl
MzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVu
dHMuc2l6ZSgpKSwgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKChWaXJ0dWFsUmVnaXN0ZXIp
KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpBcmd1bWVudENvdW50KSkp
OwotICAgICAgICBtX2ppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkNlbGxUYWcpLCBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcigoVmlydHVhbFJlZ2lzdGVy
KShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6Q2FsbGVlKSkpOwotICAg
ICAgICBpZiAoIWlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCgpKQotICAgICAgICAgICAg
bV9qaXQuc3RvcmVQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlubGluZUNhbGxG
cmFtZS0+Y2FsbGVlLmdldCgpKSwgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKChWaXJ0dWFs
UmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpDYWxsZWUp
KSk7Ci0gICAgfQorICAgIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMobV9qaXQsIGV4aXQpOwogICAg
IAogICAgIC8vIDE0KSBDcmVhdGUgYXJndW1lbnRzIGlmIG5lY2Vzc2FyeSBhbmQgcGxhY2UgdGhl
bSBpbnRvIHRoZSBhcHByb3ByaWF0ZSBhbGlhc2VkCiAgICAgLy8gICAgIHJlZ2lzdGVycy4KQEAg
LTc0MiwzMSArNzA5LDkgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0
IAogICAgICAgICBtX2ppdC5sb2FkMzIoQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3IoKFZpcnR1YWxS
ZWdpc3RlcilleGl0Lm1fbGFzdFNldE9wZXJhbmQpLCBHUFJJbmZvOjpjYWNoZWRSZXN1bHRSZWdp
c3RlcjIpOwogICAgIH0KICAgICAKLSAgICAvLyAxNikgQWRqdXN0IHRoZSBjYWxsIGZyYW1lIHBv
aW50ZXIuCi0gICAgCi0gICAgaWYgKGV4aXQubV9jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkK
LSAgICAgICAgbV9qaXQuYWRkUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGV4aXQu
bV9jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKiBzaXplb2YoRW5jb2Rl
ZEpTVmFsdWUpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotCi0gICAgLy8gMTcpIEp1
bXAgaW50byB0aGUgY29ycmVzcG9uZGluZyBiYXNlbGluZSBKSVQgY29kZS4KLSAgICAKLSAgICBD
b2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9qaXQuYmFzZWxpbmVDb2RlQmxvY2tGb3Io
ZXhpdC5tX2NvZGVPcmlnaW4pOwotICAgIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+
JiBkZWNvZGVkQ29kZU1hcCA9IG1faml0LmRlY29kZWRDb2RlTWFwRm9yKGJhc2VsaW5lQ29kZUJs
b2NrKTsKLSAgICAKLSAgICBCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQqIG1hcHBpbmcgPSBiaW5h
cnlTZWFyY2g8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0LCB1bnNpZ25lZD4oZGVjb2RlZENvZGVN
YXAsIGRlY29kZWRDb2RlTWFwLnNpemUoKSwgZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNvZGVJbmRl
eCwgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0OjpnZXRCeXRlY29kZUluZGV4KTsKLSAgICAKLSAg
ICBBU1NFUlQobWFwcGluZyk7Ci0gICAgQVNTRVJUKG1hcHBpbmctPm1fYnl0ZWNvZGVJbmRleCA9
PSBleGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsKLSAgICAKLSAgICB2b2lkKiBqdW1w
VGFyZ2V0ID0gYmFzZWxpbmVDb2RlQmxvY2stPmdldEpJVENvZGUoKS0+ZXhlY3V0YWJsZUFkZHJl
c3NBdE9mZnNldChtYXBwaW5nLT5tX21hY2hpbmVDb2RlT2Zmc2V0KTsKKyAgICAvLyAxNikgQW5k
IGZpbmlzaC4KICAgICAKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnVDIgIT0gR1BSSW5mbzo6Y2Fj
aGVkUmVzdWx0UmVnaXN0ZXIgJiYgR1BSSW5mbzo6cmVnVDIgIT0gR1BSSW5mbzo6Y2FjaGVkUmVz
dWx0UmVnaXN0ZXIyKTsKLSAgICAKLSAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1
c3RlZEltbVB0cihqdW1wVGFyZ2V0KSwgR1BSSW5mbzo6cmVnVDIpOwotICAgIG1faml0Lmp1bXAo
R1BSSW5mbzo6cmVnVDIpOwotCi0jaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgIGRh
dGFMb2dGKCIgICAtPiAlcFxuIiwganVtcFRhcmdldCk7Ci0jZW5kaWYKKyAgICBhZGp1c3RBbmRK
dW1wVG9UYXJnZXQobV9qaXQsIGV4aXQpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZH
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21w
aWxlcjY0LmNwcAkocmV2aXNpb24gMTQ3NjA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcg
QEAKICNpZiBFTkFCTEUoREZHX0pJVCkgJiYgVVNFKEpTVkFMVUU2NCkKIAogI2luY2x1ZGUgIkRG
R09wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaCIKICNp
bmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KIApAQCAtNTky
LDQyICs1OTMsMTEgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAog
ICAgIC8vICAgICBjb3VudGVyIHRvIDA7IG90aGVyd2lzZSB3ZSBzZXQgdGhlIGNvdW50ZXIgdG8K
ICAgICAvLyAgICAgY291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCgpLgogICAgIAot
ICAgIGhhbmRsZUV4aXRDb3VudHMoZXhpdCk7CisgICAgaGFuZGxlRXhpdENvdW50cyhtX2ppdCwg
ZXhpdCk7CiAgICAgCiAgICAgLy8gMTQpIFJlaWZ5IGlubGluZWQgY2FsbCBmcmFtZXMuCiAgICAg
Ci0gICAgQVNTRVJUKG1faml0LmJhc2VsaW5lQ29kZUJsb2NrKCktPmdldEpJVFR5cGUoKSA9PSBK
SVRDb2RlOjpCYXNlbGluZUpJVCk7Ci0gICAgbV9qaXQuc3RvcmVQdHIoQXNzZW1ibHlIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKG1faml0LmJhc2VsaW5lQ29kZUJsb2NrKCkpLCBBc3NlbWJseUhlbHBl
cnM6OmFkZHJlc3NGb3IoKFZpcnR1YWxSZWdpc3RlcilKU1N0YWNrOjpDb2RlQmxvY2spKTsKLSAg
ICAKLSAgICBmb3IgKENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGV4aXQubV9jb2RlT3JpZ2luOyBj
b2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZTsgY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4uaW5saW5l
Q2FsbEZyYW1lLT5jYWxsZXIpIHsKLSAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxs
RnJhbWUgPSBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZTsKLSAgICAgICAgQ29kZUJsb2NrKiBi
YXNlbGluZUNvZGVCbG9jayA9IG1faml0LmJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvZGVPcmlnaW4p
OwotICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyID0gbV9qaXQu
YmFzZWxpbmVDb2RlQmxvY2tGb3IoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXIpOwotICAgICAgICBW
ZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PiYgZGVjb2RlZENvZGVNYXAgPSBtX2ppdC5k
ZWNvZGVkQ29kZU1hcEZvcihiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlcik7Ci0gICAgICAgIHVu
c2lnbmVkIHJldHVybkJ5dGVjb2RlSW5kZXggPSBpbmxpbmVDYWxsRnJhbWUtPmNhbGxlci5ieXRl
Y29kZUluZGV4ICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsKTsKLSAgICAgICAgQnl0ZWNvZGVBbmRN
YWNoaW5lT2Zmc2V0KiBtYXBwaW5nID0gYmluYXJ5U2VhcmNoPEJ5dGVjb2RlQW5kTWFjaGluZU9m
ZnNldCwgdW5zaWduZWQ+KGRlY29kZWRDb2RlTWFwLCBkZWNvZGVkQ29kZU1hcC5zaXplKCksIHJl
dHVybkJ5dGVjb2RlSW5kZXgsIEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldDo6Z2V0Qnl0ZWNvZGVJ
bmRleCk7Ci0gICAgICAgIAotICAgICAgICBBU1NFUlQobWFwcGluZyk7Ci0gICAgICAgIEFTU0VS
VChtYXBwaW5nLT5tX2J5dGVjb2RlSW5kZXggPT0gcmV0dXJuQnl0ZWNvZGVJbmRleCk7Ci0gICAg
ICAgIAotICAgICAgICB2b2lkKiBqdW1wVGFyZ2V0ID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxs
ZXItPmdldEpJVENvZGUoKS0+ZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChtYXBwaW5nLT5tX21h
Y2hpbmVDb2RlT2Zmc2V0KTsKLQotICAgICAgICBHUFJSZWcgY2FsbGVyRnJhbWVHUFI7Ci0gICAg
ICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmNhbGxlci5pbmxpbmVDYWxsRnJhbWUpIHsKLSAgICAg
ICAgICAgIG1faml0LmFkZFB0cihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihpbmxpbmVD
YWxsRnJhbWUtPmNhbGxlci5pbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICogc2l6ZW9mKEVu
Y29kZWRKU1ZhbHVlKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdU
Myk7Ci0gICAgICAgICAgICBjYWxsZXJGcmFtZUdQUiA9IEdQUkluZm86OnJlZ1QzOwotICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgIGNhbGxlckZyYW1lR1BSID0gR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXI7Ci0gICAgICAgIAotICAgICAgICBtX2ppdC5zdG9yZVB0cihBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoYmFzZWxpbmVDb2RlQmxvY2spLCBBc3NlbWJseUhlbHBlcnM6OmFk
ZHJlc3NGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCAr
IEpTU3RhY2s6OkNvZGVCbG9jaykpKTsKLSAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlz
Q2xvc3VyZUNhbGwoKSkKLSAgICAgICAgICAgIG1faml0LnN0b3JlNjQoQXNzZW1ibHlIZWxwZXJz
OjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoaW5saW5lQ2FsbEZyYW1lLT5j
YWxsZWUtPnNjb3BlKCkpKSksIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcigoVmlydHVhbFJl
Z2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6U2NvcGVDaGFp
bikpKTsKLSAgICAgICAgbV9qaXQuc3RvcmU2NChjYWxsZXJGcmFtZUdQUiwgQXNzZW1ibHlIZWxw
ZXJzOjphZGRyZXNzRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tP
ZmZzZXQgKyBKU1N0YWNrOjpDYWxsZXJGcmFtZSkpKTsKLSAgICAgICAgbV9qaXQuc3RvcmVQdHIo
QXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGp1bXBUYXJnZXQpLCBBc3NlbWJseUhlbHBl
cnM6OmFkZHJlc3NGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09m
ZnNldCArIEpTU3RhY2s6OlJldHVyblBDKSkpOwotICAgICAgICBtX2ppdC5zdG9yZTMyKEFzc2Vt
Ymx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUo
KSksIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVD
YWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6QXJndW1lbnRDb3VudCkpKTsKLSAgICAg
ICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwoKSkKLSAgICAgICAgICAgIG1f
aml0LnN0b3JlNjQoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2Rl
KEpTVmFsdWUoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWUuZ2V0KCkpKSksIEFzc2VtYmx5SGVscGVy
czo6YWRkcmVzc0ZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zm
c2V0ICsgSlNTdGFjazo6Q2FsbGVlKSkpOwotICAgIH0KKyAgICByZWlmeUlubGluZWRDYWxsRnJh
bWVzKG1faml0LCBleGl0KTsKICAgICAKICAgICAvLyAxNSkgQ3JlYXRlIGFyZ3VtZW50cyBpZiBu
ZWNlc3NhcnkgYW5kIHBsYWNlIHRoZW0gaW50byB0aGUgYXBwcm9wcmlhdGUgYWxpYXNlZAogICAg
IC8vICAgICByZWdpc3RlcnMuCkBAIC02ODUsMzIgKzY1NSw5IEBAIHZvaWQgT1NSRXhpdENvbXBp
bGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICBpZiAoZXhpdC5tX2xhc3RTZXRPcGVyYW5kICE9
IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpCiAgICAgICAgIG1faml0LmxvYWQ2NChB
c3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IoKFZpcnR1YWxSZWdpc3RlcilleGl0Lm1fbGFzdFNl
dE9wZXJhbmQpLCBHUFJJbmZvOjpjYWNoZWRSZXN1bHRSZWdpc3Rlcik7CiAgICAgCi0gICAgLy8g
MTcpIEFkanVzdCB0aGUgY2FsbCBmcmFtZSBwb2ludGVyLgotICAgIAotICAgIGlmIChleGl0Lm1f
Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgIG1faml0LmFkZFB0cihBc3NlbWJs
eUhlbHBlcnM6OlRydXN0ZWRJbW0zMihleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUt
PnN0YWNrT2Zmc2V0ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyKTsKLSAgICAKLSAgICAvLyAxOCkgSnVtcCBpbnRvIHRoZSBjb3JyZXNwb25kaW5n
IGJhc2VsaW5lIEpJVCBjb2RlLgotICAgIAotICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxv
Y2sgPSBtX2ppdC5iYXNlbGluZUNvZGVCbG9ja0ZvcihleGl0Lm1fY29kZU9yaWdpbik7Ci0gICAg
VmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4mIGRlY29kZWRDb2RlTWFwID0gbV9qaXQu
ZGVjb2RlZENvZGVNYXBGb3IoYmFzZWxpbmVDb2RlQmxvY2spOwotICAgIAotICAgIEJ5dGVjb2Rl
QW5kTWFjaGluZU9mZnNldCogbWFwcGluZyA9IGJpbmFyeVNlYXJjaDxCeXRlY29kZUFuZE1hY2hp
bmVPZmZzZXQsIHVuc2lnbmVkPihkZWNvZGVkQ29kZU1hcCwgZGVjb2RlZENvZGVNYXAuc2l6ZSgp
LCBleGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBCeXRlY29kZUFuZE1hY2hpbmVPZmZz
ZXQ6OmdldEJ5dGVjb2RlSW5kZXgpOwotICAgIAotICAgIEFTU0VSVChtYXBwaW5nKTsKLSAgICBB
U1NFUlQobWFwcGluZy0+bV9ieXRlY29kZUluZGV4ID09IGV4aXQubV9jb2RlT3JpZ2luLmJ5dGVj
b2RlSW5kZXgpOworICAgIC8vIDE3KSBBbmQgZmluaXNoLgogICAgIAotICAgIHZvaWQqIGp1bXBU
YXJnZXQgPSBiYXNlbGluZUNvZGVCbG9jay0+Z2V0SklUQ29kZSgpLT5leGVjdXRhYmxlQWRkcmVz
c0F0T2Zmc2V0KG1hcHBpbmctPm1fbWFjaGluZUNvZGVPZmZzZXQpOwotICAgIAotICAgIEFTU0VS
VChHUFJJbmZvOjpyZWdUMSAhPSBHUFJJbmZvOjpjYWNoZWRSZXN1bHRSZWdpc3Rlcik7Ci0gICAg
Ci0gICAgbV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoanVtcFRhcmdl
dCksIEdQUkluZm86OnJlZ1QxKTsKLSAgICAKLSAgICBtX2ppdC5qdW1wKEdQUkluZm86OnJlZ1Qx
KTsKLQotI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICBkYXRhTG9nRigiLT4gJXBc
biIsIGp1bXBUYXJnZXQpOwotI2VuZGlmCisgICAgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KG1faml0
LCBleGl0KTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24g
MTQ3NjA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNDcgKzEyNyw2IEBAIHZvaWQgY29tcGlsZU9TUkV4
aXQoRXhlY1N0YXRlKiBleGVjKQogCiB9IC8vIGV4dGVybiAiQyIKIAotdm9pZCBPU1JFeGl0Q29t
cGlsZXI6OmhhbmRsZUV4aXRDb3VudHMoY29uc3QgT1NSRXhpdCYgZXhpdCkKLXsKLSAgICBtX2pp
dC5hZGQzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgQXNzZW1ibHlIZWxwZXJz
OjpBYnNvbHV0ZUFkZHJlc3MoJmV4aXQubV9jb3VudCkpOwotICAgIAotICAgIG1faml0Lm1vdmUo
QXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1faml0LmNvZGVCbG9jaygpKSwgR1BSSW5m
bzo6cmVnVDApOwotICAgIAotICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCB0b29GZXdGYWlsczsK
LSAgICAKLSAgICBtX2ppdC5sb2FkMzIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86
OnJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mT1NSRXhpdENvdW50ZXIoKSksIEdQUkluZm86OnJl
Z1QyKTsKLSAgICBtX2ppdC5hZGQzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwg
R1BSSW5mbzo6cmVnVDIpOwotICAgIG1faml0LnN0b3JlMzIoR1BSSW5mbzo6cmVnVDIsIEFzc2Vt
Ymx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZk9T
UkV4aXRDb3VudGVyKCkpKTsKLSAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihtX2ppdC5iYXNlbGluZUNvZGVCbG9jaygpKSwgR1BSSW5mbzo6cmVnVDApOwotICAg
IHRvb0Zld0ZhaWxzID0gbV9qaXQuYnJhbmNoMzIoQXNzZW1ibHlIZWxwZXJzOjpCZWxvd09yRXF1
YWwsIEdQUkluZm86OnJlZ1QyLCBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihtX2ppdC5j
b2RlQmxvY2soKS0+ZXhpdENvdW50VGhyZXNob2xkRm9yUmVvcHRpbWl6YXRpb24oKSkpOwotICAg
IAotICAgIC8vIFJlb3B0aW1pemUgYXMgc29vbiBhcyBwb3NzaWJsZS4KLSNpZiAhTlVNQkVSX09G
X0FSR1VNRU5UX1JFR0lTVEVSUwotICAgIG1faml0LnBva2UoR1BSSW5mbzo6cmVnVDApOwotI2Vs
c2UKLSAgICBtX2ppdC5tb3ZlKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OwotICAgIEFTU0VSVChHUFJJbmZvOjphcmd1bWVudEdQUjAgIT0gR1BSSW5mbzo6cmVnVDEpOwot
I2VuZGlmCi0gICAgbV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYml0
d2lzZV9jYXN0PHZvaWQqPih0cmlnZ2VyUmVvcHRpbWl6YXRpb25Ob3cpKSwgR1BSSW5mbzo6cmVn
VDEpOwotICAgIG1faml0LmNhbGwoR1BSSW5mbzo6cmVnVDEpOwotICAgIEFzc2VtYmx5SGVscGVy
czo6SnVtcCBkb25lQWRqdXN0aW5nID0gbV9qaXQuanVtcCgpOwotICAgIAotICAgIHRvb0Zld0Zh
aWxzLmxpbmsoJm1faml0KTsKLSAgICAKLSAgICAvLyBBZGp1c3QgdGhlIGV4ZWN1dGlvbiBjb3Vu
dGVyIHN1Y2ggdGhhdCB0aGUgdGFyZ2V0IGlzIHRvIG9ubHkgb3B0aW1pemUgYWZ0ZXIgYSB3aGls
ZS4KLSAgICBpbnQzMl90IGFjdGl2ZVRocmVzaG9sZCA9Ci0gICAgICAgIG1faml0LmJhc2VsaW5l
Q29kZUJsb2NrKCktPmNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKCk7Ci0g
ICAgaW50MzJfdCB0YXJnZXRWYWx1ZSA9IEV4ZWN1dGlvbkNvdW50ZXI6OmFwcGx5TWVtb3J5VXNh
Z2VIZXVyaXN0aWNzQW5kQ29udmVydFRvSW50KAotICAgICAgICBhY3RpdmVUaHJlc2hvbGQsIG1f
aml0LmJhc2VsaW5lQ29kZUJsb2NrKCkpOwotICAgIGludDMyX3QgY2xpcHBlZFZhbHVlID0KLSAg
ICAgICAgRXhlY3V0aW9uQ291bnRlcjo6Y2xpcHBlZFRocmVzaG9sZChtX2ppdC5jb2RlQmxvY2so
KS0+Z2xvYmFsT2JqZWN0KCksIHRhcmdldFZhbHVlKTsKLSAgICBtX2ppdC5zdG9yZTMyKEFzc2Vt
Ymx5SGVscGVyczo6VHJ1c3RlZEltbTMyKC1jbGlwcGVkVmFsdWUpLCBBc3NlbWJseUhlbHBlcnM6
OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZKSVRFeGVjdXRlQ291
bnRlcigpKSk7Ci0gICAgbV9qaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0z
MihhY3RpdmVUaHJlc2hvbGQpLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVn
VDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZKSVRFeGVjdXRpb25BY3RpdmVUaHJlc2hvbGQoKSkpOwot
ICAgIG1faml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoRXhlY3V0aW9u
Q291bnRlcjo6Zm9ybWF0dGVkVG90YWxDb3VudChjbGlwcGVkVmFsdWUpKSwgQXNzZW1ibHlIZWxw
ZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mSklURXhlY3V0
aW9uVG90YWxDb3VudCgpKSk7Ci0gICAgCi0gICAgZG9uZUFkanVzdGluZy5saW5rKCZtX2ppdCk7
Ci19Ci0KIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdf
SklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21w
aWxlci5oCShyZXZpc2lvbiAxNDc2MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXRDb21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw4ICs3MSw2IEBAIHByaXZh
dGU6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIHZvaWQgaGFuZGxl
RXhpdENvdW50cyhjb25zdCBPU1JFeGl0Jik7Ci0gICAgCiAgICAgQ0NhbGxIZWxwZXJzJiBtX2pp
dDsKICAgICBWZWN0b3I8dW5zaWduZWQ+IG1fcG9pc29uU2NyYXRjaEluZGljZXM7CiB9OwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBp
bGVyQ29tbW9uLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgiCisK
KyNpZiBFTkFCTEUoREZHX0pJVCkKKworI2luY2x1ZGUgIkRGR09wZXJhdGlvbnMuaCIKKworbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCit2b2lkIGhhbmRsZUV4aXRDb3VudHMoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9TUkV4aXQmIGV4aXQpCit7CisgICAgaml0LmFkZDMyKEFz
c2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBBc3NlbWJseUhlbHBlcnM6OkFic29sdXRl
QWRkcmVzcygmZXhpdC5tX2NvdW50KSk7CisgICAgCisgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKGppdC5jb2RlQmxvY2soKSksIEdQUkluZm86OnJlZ1QwKTsKKyAg
ICAKKyAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgdG9vRmV3RmFpbHM7CisgICAgCisgICAgaml0
LmxvYWQzMihBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVCbG9j
azo6b2Zmc2V0T2ZPU1JFeGl0Q291bnRlcigpKSwgR1BSSW5mbzo6cmVnVDIpOworICAgIGppdC5h
ZGQzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgR1BSSW5mbzo6cmVnVDIpOwor
ICAgIGppdC5zdG9yZTMyKEdQUkluZm86OnJlZ1QyLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3Mo
R1BSSW5mbzo6cmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZPU1JFeGl0Q291bnRlcigpKSk7Cisg
ICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGppdC5iYXNlbGluZUNv
ZGVCbG9jaygpKSwgR1BSSW5mbzo6cmVnVDApOworICAgIHRvb0Zld0ZhaWxzID0gaml0LmJyYW5j
aDMyKEFzc2VtYmx5SGVscGVyczo6QmVsb3dPckVxdWFsLCBHUFJJbmZvOjpyZWdUMiwgQXNzZW1i
bHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaml0LmNvZGVCbG9jaygpLT5leGl0Q291bnRUaHJlc2hv
bGRGb3JSZW9wdGltaXphdGlvbigpKSk7CisgICAgCisgICAgLy8gUmVvcHRpbWl6ZSBhcyBzb29u
IGFzIHBvc3NpYmxlLgorI2lmICFOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTCisgICAgaml0
LnBva2UoR1BSSW5mbzo6cmVnVDApOworI2Vsc2UKKyAgICBqaXQubW92ZShHUFJJbmZvOjpyZWdU
MCwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBBU1NFUlQoR1BSSW5mbzo6YXJndW1lbnRH
UFIwICE9IEdQUkluZm86OnJlZ1QxKTsKKyNlbmRpZgorICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHRyaWdnZXJSZW9wdGltaXph
dGlvbk5vdykpLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgaml0LmNhbGwoR1BSSW5mbzo6cmVnVDEp
OworICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCBkb25lQWRqdXN0aW5nID0gaml0Lmp1bXAoKTsK
KyAgICAKKyAgICB0b29GZXdGYWlscy5saW5rKCZqaXQpOworICAgIAorICAgIC8vIEFkanVzdCB0
aGUgZXhlY3V0aW9uIGNvdW50ZXIgc3VjaCB0aGF0IHRoZSB0YXJnZXQgaXMgdG8gb25seSBvcHRp
bWl6ZSBhZnRlciBhIHdoaWxlLgorICAgIGludDMyX3QgYWN0aXZlVGhyZXNob2xkID0KKyAgICAg
ICAgaml0LmJhc2VsaW5lQ29kZUJsb2NrKCktPmNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJM
b25nV2FybVVwKCk7CisgICAgaW50MzJfdCB0YXJnZXRWYWx1ZSA9IEV4ZWN1dGlvbkNvdW50ZXI6
OmFwcGx5TWVtb3J5VXNhZ2VIZXVyaXN0aWNzQW5kQ29udmVydFRvSW50KAorICAgICAgICBhY3Rp
dmVUaHJlc2hvbGQsIGppdC5iYXNlbGluZUNvZGVCbG9jaygpKTsKKyAgICBpbnQzMl90IGNsaXBw
ZWRWYWx1ZSA9CisgICAgICAgIEV4ZWN1dGlvbkNvdW50ZXI6OmNsaXBwZWRUaHJlc2hvbGQoaml0
LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3QoKSwgdGFyZ2V0VmFsdWUpOworICAgIGppdC5zdG9y
ZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKC1jbGlwcGVkVmFsdWUpLCBBc3NlbWJs
eUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZKSVRF
eGVjdXRlQ291bnRlcigpKSk7CisgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoYWN0aXZlVGhyZXNob2xkKSwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUklu
Zm86OnJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mSklURXhlY3V0aW9uQWN0aXZlVGhyZXNob2xk
KCkpKTsKKyAgICBqaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihFeGVj
dXRpb25Db3VudGVyOjpmb3JtYXR0ZWRUb3RhbENvdW50KGNsaXBwZWRWYWx1ZSkpLCBBc3NlbWJs
eUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZKSVRF
eGVjdXRpb25Ub3RhbENvdW50KCkpKTsKKyAgICAKKyAgICBkb25lQWRqdXN0aW5nLmxpbmsoJmpp
dCk7Cit9CisKK3ZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgT1NSRXhpdCYgZXhpdCkKK3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIEFTU0VSVChq
aXQuYmFzZWxpbmVDb2RlQmxvY2soKS0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5l
SklUKTsKKyAgICBqaXQuc3RvcmVQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGpp
dC5iYXNlbGluZUNvZGVCbG9jaygpKSwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKChWaXJ0
dWFsUmVnaXN0ZXIpSlNTdGFjazo6Q29kZUJsb2NrKSk7CisgICAgCisgICAgZm9yIChDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4gPSBleGl0Lm1fY29kZU9yaWdpbjsgY29kZU9yaWdpbi5pbmxpbmVDYWxs
RnJhbWU7IGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+Y2FsbGVyKSB7
CisgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gY29kZU9yaWdpbi5p
bmxpbmVDYWxsRnJhbWU7CisgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBq
aXQuYmFzZWxpbmVDb2RlQmxvY2tGb3IoY29kZU9yaWdpbik7CisgICAgICAgIENvZGVCbG9jayog
YmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIgPSBqaXQuYmFzZWxpbmVDb2RlQmxvY2tGb3IoaW5s
aW5lQ2FsbEZyYW1lLT5jYWxsZXIpOworICAgICAgICBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5l
T2Zmc2V0PiYgZGVjb2RlZENvZGVNYXAgPSBqaXQuZGVjb2RlZENvZGVNYXBGb3IoYmFzZWxpbmVD
b2RlQmxvY2tGb3JDYWxsZXIpOworICAgICAgICB1bnNpZ25lZCByZXR1cm5CeXRlY29kZUluZGV4
ID0gaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXIuYnl0ZWNvZGVJbmRleCArIE9QQ09ERV9MRU5HVEgo
b3BfY2FsbCk7CisgICAgICAgIEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldCogbWFwcGluZyA9IGJp
bmFyeVNlYXJjaDxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQsIHVuc2lnbmVkPihkZWNvZGVkQ29k
ZU1hcCwgZGVjb2RlZENvZGVNYXAuc2l6ZSgpLCByZXR1cm5CeXRlY29kZUluZGV4LCBCeXRlY29k
ZUFuZE1hY2hpbmVPZmZzZXQ6OmdldEJ5dGVjb2RlSW5kZXgpOworICAgICAgICAKKyAgICAgICAg
QVNTRVJUKG1hcHBpbmcpOworICAgICAgICBBU1NFUlQobWFwcGluZy0+bV9ieXRlY29kZUluZGV4
ID09IHJldHVybkJ5dGVjb2RlSW5kZXgpOworICAgICAgICAKKyAgICAgICAgdm9pZCoganVtcFRh
cmdldCA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLT5nZXRKSVRDb2RlKCktPmV4ZWN1dGFi
bGVBZGRyZXNzQXRPZmZzZXQobWFwcGluZy0+bV9tYWNoaW5lQ29kZU9mZnNldCk7CisKKyAgICAg
ICAgR1BSUmVnIGNhbGxlckZyYW1lR1BSOworICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5j
YWxsZXIuaW5saW5lQ2FsbEZyYW1lKSB7CisgICAgICAgICAgICBqaXQuYWRkUHRyKEFzc2VtYmx5
SGVscGVyczo6VHJ1c3RlZEltbTMyKGlubGluZUNhbGxGcmFtZS0+Y2FsbGVyLmlubGluZUNhbGxG
cmFtZS0+c3RhY2tPZmZzZXQgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwgR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QzKTsKKyAgICAgICAgICAgIGNhbGxlckZyYW1l
R1BSID0gR1BSSW5mbzo6cmVnVDM7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgY2FsbGVy
RnJhbWVHUFIgPSBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlcjsKKyAgICAgICAgCisgICAgICAg
IGppdC5zdG9yZVB0cihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYmFzZWxpbmVDb2Rl
QmxvY2spLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5s
aW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIEpTU3RhY2s6OkNvZGVCbG9jaykpKTsKKyAgICAg
ICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwoKSkKKyAgICAgICAgICAgIGpp
dC5zdG9yZTY0KEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShK
U1ZhbHVlKGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlLT5zY29wZSgpKSkpLCBBc3NlbWJseUhlbHBl
cnM6OmFkZHJlc3NGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09m
ZnNldCArIEpTU3RhY2s6OlNjb3BlQ2hhaW4pKSk7CisgICAgICAgIGppdC5zdG9yZTY0KGNhbGxl
ckZyYW1lR1BSLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IoKFZpcnR1YWxSZWdpc3Rlciko
aW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIEpTU3RhY2s6OkNhbGxlckZyYW1lKSkpOwor
ICAgICAgICBqaXQuc3RvcmVQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGp1bXBU
YXJnZXQpLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5s
aW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIEpTU3RhY2s6OlJldHVyblBDKSkpOworICAgICAg
ICBqaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihpbmxpbmVDYWxsRnJh
bWUtPmFyZ3VtZW50cy5zaXplKCkpLCBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1
YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIEpTU3RhY2s6OkFyZ3Vt
ZW50Q291bnQpKSk7CisgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxs
KCkpCisgICAgICAgICAgICBqaXQuc3RvcmU2NChBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02
NChKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShpbmxpbmVDYWxsRnJhbWUtPmNhbGxlZS5nZXQoKSkp
KSwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNh
bGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpDYWxsZWUpKSk7CisgICAgfQorI2Vsc2Ug
Ly8gVVNFKEpTVkFMVUU2NCkgLy8gc28gdGhpcyBpcyB0aGUgMzItYml0IHBhcnQKKyAgICBBU1NF
UlQoaml0LmJhc2VsaW5lQ29kZUJsb2NrKCktPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNl
bGluZUpJVCk7CisgICAgaml0LnN0b3JlUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0
cihqaXQuYmFzZWxpbmVDb2RlQmxvY2soKSksIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zvcigo
VmlydHVhbFJlZ2lzdGVyKUpTU3RhY2s6OkNvZGVCbG9jaykpOworICAgIAorICAgIGZvciAoQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luID0gZXhpdC5tX2NvZGVPcmlnaW47IGNvZGVPcmlnaW4uaW5saW5l
Q2FsbEZyYW1lOyBjb2RlT3JpZ2luID0gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmNhbGxl
cikgeworICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IGNvZGVPcmln
aW4uaW5saW5lQ2FsbEZyYW1lOworICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2Nr
ID0gaml0LmJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvZGVPcmlnaW4pOworICAgICAgICBDb2RlQmxv
Y2sqIGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyID0gaml0LmJhc2VsaW5lQ29kZUJsb2NrRm9y
KGlubGluZUNhbGxGcmFtZS0+Y2FsbGVyKTsKKyAgICAgICAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFj
aGluZU9mZnNldD4mIGRlY29kZWRDb2RlTWFwID0gaml0LmRlY29kZWRDb2RlTWFwRm9yKGJhc2Vs
aW5lQ29kZUJsb2NrRm9yQ2FsbGVyKTsKKyAgICAgICAgdW5zaWduZWQgcmV0dXJuQnl0ZWNvZGVJ
bmRleCA9IGlubGluZUNhbGxGcmFtZS0+Y2FsbGVyLmJ5dGVjb2RlSW5kZXggKyBPUENPREVfTEVO
R1RIKG9wX2NhbGwpOworICAgICAgICBCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQqIG1hcHBpbmcg
PSBiaW5hcnlTZWFyY2g8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0LCB1bnNpZ25lZD4oZGVjb2Rl
ZENvZGVNYXAsIGRlY29kZWRDb2RlTWFwLnNpemUoKSwgcmV0dXJuQnl0ZWNvZGVJbmRleCwgQnl0
ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0OjpnZXRCeXRlY29kZUluZGV4KTsKKyAgICAgICAgCisgICAg
ICAgIEFTU0VSVChtYXBwaW5nKTsKKyAgICAgICAgQVNTRVJUKG1hcHBpbmctPm1fYnl0ZWNvZGVJ
bmRleCA9PSByZXR1cm5CeXRlY29kZUluZGV4KTsKKyAgICAgICAgCisgICAgICAgIHZvaWQqIGp1
bXBUYXJnZXQgPSBiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlci0+Z2V0SklUQ29kZSgpLT5leGVj
dXRhYmxlQWRkcmVzc0F0T2Zmc2V0KG1hcHBpbmctPm1fbWFjaGluZUNvZGVPZmZzZXQpOworCisg
ICAgICAgIEdQUlJlZyBjYWxsZXJGcmFtZUdQUjsKKyAgICAgICAgaWYgKGlubGluZUNhbGxGcmFt
ZS0+Y2FsbGVyLmlubGluZUNhbGxGcmFtZSkgeworICAgICAgICAgICAgaml0LmFkZDMyKEFzc2Vt
Ymx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGlubGluZUNhbGxGcmFtZS0+Y2FsbGVyLmlubGluZUNh
bGxGcmFtZS0+c3RhY2tPZmZzZXQgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwgR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QzKTsKKyAgICAgICAgICAgIGNhbGxlckZy
YW1lR1BSID0gR1BSSW5mbzo6cmVnVDM7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgY2Fs
bGVyRnJhbWVHUFIgPSBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlcjsKKyAgICAgICAgCisgICAg
ICAgIGppdC5zdG9yZVB0cihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYmFzZWxpbmVD
b2RlQmxvY2spLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IoKFZpcnR1YWxSZWdpc3Rlciko
aW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIEpTU3RhY2s6OkNvZGVCbG9jaykpKTsKKyAg
ICAgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
Q2VsbFRhZyksIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGlu
ZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpTY29wZUNoYWluKSkpOworICAgICAg
ICBpZiAoIWlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCgpKQorICAgICAgICAgICAgaml0
LnN0b3JlUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihpbmxpbmVDYWxsRnJhbWUt
PmNhbGxlZS0+c2NvcGUoKSksIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcigoVmlydHVhbFJl
Z2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6U2NvcGVDaGFp
bikpKTsKKyAgICAgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6Q2VsbFRhZyksIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFsUmVnaXN0
ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpDYWxsZXJGcmFtZSkp
KTsKKyAgICAgICAgaml0LnN0b3JlUHRyKGNhbGxlckZyYW1lR1BSLCBBc3NlbWJseUhlbHBlcnM6
OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNl
dCArIEpTU3RhY2s6OkNhbGxlckZyYW1lKSkpOworICAgICAgICBqaXQuc3RvcmVQdHIoQXNzZW1i
bHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGp1bXBUYXJnZXQpLCBBc3NlbWJseUhlbHBlcnM6OnBh
eWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCAr
IEpTU3RhY2s6OlJldHVyblBDKSkpOworICAgICAgICBqaXQuc3RvcmUzMihBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW0zMihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpLCBBc3Nl
bWJseUhlbHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1l
LT5zdGFja09mZnNldCArIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKSk7CisgICAgICAgIGppdC5z
dG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBB
c3NlbWJseUhlbHBlcnM6OnRhZ0ZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUt
PnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6Q2FsbGVlKSkpOworICAgICAgICBpZiAoIWlubGluZUNh
bGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCgpKQorICAgICAgICAgICAgaml0LnN0b3JlUHRyKEFzc2Vt
Ymx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihpbmxpbmVDYWxsRnJhbWUtPmNhbGxlZS5nZXQoKSks
IEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxs
RnJhbWUtPnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6Q2FsbGVlKSkpOworICAgIH0KKyNlbmRpZiAv
LyBVU0UoSlNWQUxVRTY0KSAvLyBlbmRpbmcgdGhlICNlbHNlIHBhcnQsIHNvIGRpcmVjdGx5IGFi
b3ZlIGlzIHRoZSAzMi1iaXQgcGFydAorfQorCit2b2lkIGFkanVzdEFuZEp1bXBUb1RhcmdldChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT1NSRXhpdCYgZXhpdCkKK3sKKyAgICBpZiAoZXhpdC5t
X2NvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQorICAgICAgICBqaXQuYWRkUHRyKEFzc2VtYmx5
SGVscGVyczo6VHJ1c3RlZEltbTMyKGV4aXQubV9jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+
c3RhY2tPZmZzZXQgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwgR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIpOworCisgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IGppdC5iYXNl
bGluZUNvZGVCbG9ja0ZvcihleGl0Lm1fY29kZU9yaWdpbik7CisgICAgVmVjdG9yPEJ5dGVjb2Rl
QW5kTWFjaGluZU9mZnNldD4mIGRlY29kZWRDb2RlTWFwID0gaml0LmRlY29kZWRDb2RlTWFwRm9y
KGJhc2VsaW5lQ29kZUJsb2NrKTsKKyAgICAKKyAgICBCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQq
IG1hcHBpbmcgPSBiaW5hcnlTZWFyY2g8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0LCB1bnNpZ25l
ZD4oZGVjb2RlZENvZGVNYXAsIGRlY29kZWRDb2RlTWFwLnNpemUoKSwgZXhpdC5tX2NvZGVPcmln
aW4uYnl0ZWNvZGVJbmRleCwgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0OjpnZXRCeXRlY29kZUlu
ZGV4KTsKKyAgICAKKyAgICBBU1NFUlQobWFwcGluZyk7CisgICAgQVNTRVJUKG1hcHBpbmctPm1f
Ynl0ZWNvZGVJbmRleCA9PSBleGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsKKyAgICAK
KyAgICB2b2lkKiBqdW1wVGFyZ2V0ID0gYmFzZWxpbmVDb2RlQmxvY2stPmdldEpJVENvZGUoKS0+
ZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChtYXBwaW5nLT5tX21hY2hpbmVDb2RlT2Zmc2V0KTsK
KyAgICAKKyAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoanVtcFRh
cmdldCksIEdQUkluZm86OnJlZ1QyKTsKKyAgICBqaXQuanVtcChHUFJJbmZvOjpyZWdUMik7CisK
KyNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCisgICAgZGF0YUxvZ0YoIiAgIC0+ICVwXG4i
LCBqdW1wVGFyZ2V0KTsKKyNlbmRpZgorfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisK
KyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uX2gK
KyNkZWZpbmUgREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0
Zm9ybS5oPgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJERkdDQ2FsbEhlbHBl
cnMuaCIKKyNpbmNsdWRlICJERkdPU1JFeGl0LmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKKwordm9pZCBoYW5kbGVFeGl0Q291bnRzKENDYWxsSGVscGVycyYsIGNvbnN0IE9T
UkV4aXQmKTsKK3ZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMmLCBjb25z
dCBPU1JFeGl0Jik7Cit2b2lkIGFkanVzdEFuZEp1bXBUb1RhcmdldChDQ2FsbEhlbHBlcnMmLCBj
b25zdCBPU1JFeGl0Jik7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8v
IEVOQUJMRShERkdfSklUKQorCisjZW5kaWYgLy8gREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uX2gK
Kwo=
</data>
<flag name="review"
          id="219243"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
          </attachment>
      

    </bug>

</bugzilla>