<?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>121116</bug_id>
          
          <creation_ts>2013-09-10 13:07:17 -0700</creation_ts>
          <short_desc>Introduce a SpecInt48 type and be more careful about what we mean by &quot;Top&quot;</short_desc>
          <delta_ts>2013-09-10 14:55:06 -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>121064</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>927446</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-10 13:07:17 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927449</commentid>
    <comment_count>1</comment_count>
      <attachid>211230</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-10 13:07:57 -0700</bug_when>
    <thetext>Created attachment 211230
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927450</commentid>
    <comment_count>2</comment_count>
      <attachid>211230</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-09-10 13:14:24 -0700</bug_when>
    <thetext>Comment on attachment 211230
the patch

r=me too fwiw</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927470</commentid>
    <comment_count>3</comment_count>
      <attachid>211236</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-10 13:54:36 -0700</bug_when>
    <thetext>Created attachment 211236
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927528</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-10 14:55:06 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/155480</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211230</attachid>
            <date>2013-09-10 13:07:57 -0700</date>
            <delta_ts>2013-09-10 13:54:36 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>20506</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU1NDY5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBA
CisyMDEzLTA5LTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SW50cm9kdWNlIGEgU3BlY0ludDQ4IHR5cGUgYW5kIGJlIG1vcmUgY2FyZWZ1bCBhYm91dCB3aGF0
IHdlIG1lYW4gYnkgIlRvcCIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyMTExNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaDoKKyAgICAgICAgKEpTQzo6aXNJ
bnQ0OFNwZWN1bGF0aW9uKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjo6OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAg
KEpTQzo6REZHOjo6OmNsb2JiZXJDYXB0dXJlZFZhcnMpOgorICAgICAgICAqIGRmZy9ERkdBYnN0
cmFjdFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpmaWx0ZXIp
OgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFZhbHVlLmg6CisgICAgICAgIChKU0M6OkRGRzo6
QWJzdHJhY3RWYWx1ZTo6bWFrZUhlYXBUb3ApOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
VmFsdWU6Om1ha2VCeXRlY29kZVRvcCk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1
ZTo6aXNIZWFwVG9wKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpoZWFwVG9w
KToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjp2YWxpZGF0ZVR5cGUpOgorICAg
ICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OnZhbGlkYXRlKToKKyAgICAgICAgKEpTQzo6
REZHOjpBYnN0cmFjdFZhbHVlOjptYWtlVG9wKToKKyAgICAgICAgKiBkZmcvREZHSW5QbGFjZUFi
c3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRl
Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpKSVRDb21waWxlcjo6bm90aWNlT1NSRW50cnkpOgorICAgICAgICAqIGRmZy9E
RkdVc2VLaW5kLmg6CisgICAgICAgIChKU0M6OkRGRzo6dHlwZUZpbHRlckZvcik6CisKIDIwMTMt
MDktMTAgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBTcGVjVHlw
ZSBzaG91bGQgaGF2ZSBTcGVjSW50NDhBc0RvdWJsZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHJldmlzaW9uIDE1NTQ2NikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC02MiwxOSArNjIsMjEgQEAgc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNw
ZWNTdHJpbmcgIAogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsT3RoZXIgICAg
ICAgICA9IDB4MDAwNDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQ2VsbCBidXQgbm90IGEg
c3ViY2xhc3Mgb2YgSlNPYmplY3QgYW5kIGRlZmluaXRlbHkgbm90IGEgSlNTdHJpbmcuCiBzdGF0
aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0NlbGwgICAgICAgICAgICAgID0gMHgwMDA3ZmZm
ZjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNDZWxsLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNJbnQzMiAgICAgICAgICAgICA9IDB4MDA4MDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVs
eSBhbiBJbnQzMi4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50NDhBc0RvdWJs
ZSAgICAgPSAweDAxMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50NDggYW5kIGl0J3Mg
aW5zaWRlIGEgZG91YmxlLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnRlZ2Vy
ICAgICAgICAgICA9IDB4MDE4MDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBzb21lIGtpbmQgb2Yg
aW50ZWdlci4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjTm9uSW50QXNEb3VibGUg
ICAgPSAweDAyMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgbm90IGFuIEludDQ4IGJ1dCBpdCdz
IGEgcmVhbCBudW1iZXIgYW5kIGl0J3MgYSBkb3VibGUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY0RvdWJsZVJlYWwgICAgICAgID0gMHgwMzAwMDAwMDsgLy8gSXQncyBkZWZpbml0
ZWx5IGEgbm9uLU5hTiBkb3VibGUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Rv
dWJsZU5hTiAgICAgICAgID0gMHgwNDAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgTmFOLgot
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGUgICAgICAgICAgICA9IDB4MDcw
MDAwMDA7IC8vIEl0J3MgZWl0aGVyIGEgbm9uLU5hTiBvciBhIE5hTiBkb3VibGUuCi1zdGF0aWMg
Y29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1JlYWxOdW1iZXIgICAgICAgID0gMHgwMzgwMDAwMDsg
Ly8gSXQncyBlaXRoZXIgYW4gSW50MzIgb3IgYSBEb3VibGVSZWFsLgotc3RhdGljIGNvbnN0IFNw
ZWN1bGF0ZWRUeXBlIFNwZWNOdW1iZXIgICAgICAgICAgICA9IDB4MDc4MDAwMDA7IC8vIEl0J3Mg
ZWl0aGVyIGFuIEludDMyIG9yIGEgRG91YmxlLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBl
IFNwZWNCb29sZWFuICAgICAgICAgICA9IDB4MDgwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBh
IEJvb2xlYW4uCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY090aGVyICAgICAgICAg
ICAgID0gMHgxMDAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IG5vbmUgb2YgdGhlIGFib3ZlLgot
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNUb3AgICAgICAgICAgICAgICA9IDB4MWZm
ZmZmZmY7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLgotc3RhdGljIGNvbnN0IFNwZWN1
bGF0ZWRUeXBlIFNwZWNFbXB0eSAgICAgICAgICAgICA9IDB4MjAwMDAwMDA7IC8vIEl0J3MgZGVm
aW5pdGVseSBhbiBlbXB0eSB2YWx1ZSBtYXJrZXIuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY0VtcHR5T3JUb3AgICAgICAgID0gMHgzZmZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBv
ZiB0aGUgYWJvdmUuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDQ4ICAgICAg
ICAgICAgID0gMHgwMTAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDQ4Lgorc3RhdGlj
IGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQ0OEFzRG91YmxlICAgICA9IDB4MDIwMDAwMDA7
IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQ0OCBhbmQgaXQncyBpbnNpZGUgYSBkb3VibGUuCitz
dGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludGVnZXIgICAgICAgICAgID0gMHgwMzgw
MDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IHNvbWUga2luZCBvZiBpbnRlZ2VyLgorc3RhdGljIGNv
bnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNOb25JbnRBc0RvdWJsZSAgICA9IDB4MDQwMDAwMDA7IC8v
IEl0J3MgZGVmaW5pdGVseSBub3QgYW4gSW50NDggYnV0IGl0J3MgYSByZWFsIG51bWJlciBhbmQg
aXQncyBhIGRvdWJsZS4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRG91YmxlUmVh
bCAgICAgICAgPSAweDA2MDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBub24tTmFOIGRvdWJs
ZS4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRG91YmxlTmFOICAgICAgICAgPSAw
eDA4MDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBOYU4uCitzdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY0RvdWJsZSAgICAgICAgICAgID0gMHgwZTAwMDAwMDsgLy8gSXQncyBlaXRo
ZXIgYSBub24tTmFOIG9yIGEgTmFOIGRvdWJsZS4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlw
ZSBTcGVjUmVhbE51bWJlciAgICAgICAgPSAweDA3ODAwMDAwOyAvLyBJdCdzIGVpdGhlciBhbiBJ
bnQzMiBvciBhIERvdWJsZVJlYWwuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY051
bWJlciAgICAgICAgICAgID0gMHgwZjgwMDAwMDsgLy8gSXQncyBlaXRoZXIgYW4gSW50MzIgb3Ig
YSBEb3VibGUuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Jvb2xlYW4gICAgICAg
ICAgID0gMHgxMDAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgQm9vbGVhbi4KK3N0YXRpYyBj
b25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjT3RoZXIgICAgICAgICAgICAgPSAweDIwMDAwMDAwOyAv
LyBJdCdzIGRlZmluaXRlbHkgbm9uZSBvZiB0aGUgYWJvdmUuCitzdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY0hlYXBUb3AgICAgICAgICAgID0gMHgzZWZmZmZmZjsgLy8gSXQgY2FuIGJl
IGFueSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgSW50NDggd2hpY2ggb25seSBhcmlzZXMgaW4g
REZHIGxvY2Fscy4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRW1wdHkgICAgICAg
ICAgICAgPSAweDQwMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gZW1wdHkgdmFsdWUgbWFy
a2VyLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRlY29kZVRvcCAgICAgICA9
IDB4N2VmZmZmZmY7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlIGV4Y2VwdCBmb3IgSW50
NDguCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bGxUb3AgICAgICAgICAgID0g
MHg3ZmZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUuCiAKIHR5cGVkZWYgYm9v
bCAoKlNwZWN1bGF0ZWRUeXBlQ2hlY2tlcikoU3BlY3VsYXRlZFR5cGUpOwogCkBAIC0yNDUsNiAr
MjQ3LDExIEBAIGlubGluZSBib29sIGlzSW50MzJTcGVjdWxhdGlvbkV4cGVjdGluZ0QKICAgICBy
ZXR1cm4gaXNJbnQzMlNwZWN1bGF0aW9uKHZhbHVlICYgflNwZWNPdGhlcik7CiB9CiAKK2lubGlu
ZSBib29sIGlzSW50NDhTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICBy
ZXR1cm4gdmFsdWUgPT0gU3BlY0ludDQ4OworfQorCiBpbmxpbmUgYm9vbCBpc0ludDQ4QXNEb3Vi
bGVTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gdmFsdWUg
PT0gU3BlY0ludDQ4QXNEb3VibGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAx
NTU0NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw3ICsxNDMsNyBAQCBib29sIEFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIEFTU0VSVChtX2dyYXBoLm1f
Zm9ybSA9PSBTU0EpOwogICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbm9k
ZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0g
bV9zdGF0ZS52YXJpYWJsZXMoKS5vcGVyYW5kKHZhcmlhYmxlLT5sb2NhbCgpKTsKLSAgICAgICAg
QVNTRVJUKHZhbHVlLmlzVG9wKCkpOworICAgICAgICBBU1NFUlQodmFsdWUuaXNIZWFwVG9wKCkp
OwogICAgICAgICBGaWx0cmF0aW9uUmVzdWx0IHJlc3VsdCA9CiAgICAgICAgICAgICB2YWx1ZS5m
aWx0ZXIodHlwZUZpbHRlckZvcih1c2VLaW5kRm9yKHZhcmlhYmxlLT5mbHVzaEZvcm1hdCgpKSkp
OwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ID09IEZpbHRyYXRpb25PSyk7
CkBAIC0xNTIsNyArMTUyLDYgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3Rh
dGVUeQogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDogewot
ICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VUb3AoKTsKICAgICAgICAgaWYgKCFvcGVyYW5kSXNB
cmd1bWVudChub2RlLT51bmxpbmtlZExvY2FsKCkpCiAgICAgICAgICAgICAmJiBtX2dyYXBoLm1f
bGF6eVZhcnMuZ2V0KG9wZXJhbmRUb0xvY2FsKG5vZGUtPnVubGlua2VkTG9jYWwoKSkpKSB7CiAg
ICAgICAgICAgICAvLyBUaGlzIGlzIGtpbmQgb2YgcGVzc2ltaXN0aWMgLSB3ZSBjb3VsZCBrbm93
IGluIHNvbWUgY2FzZXMgdGhhdCB0aGUKQEAgLTE2MCw4ICsxNTksOSBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAvLyB2YXJpYWJsZS4gQnV0
IG1heWJlIHRoaXMgaXMgZmluZSwgc2luY2Ugd2UncmUgaW5zZXJ0aW5nIE9TUgogICAgICAgICAg
ICAgLy8gZW50cnlwb2ludHMgdmVyeSBlYXJseSBpbiB0aGUgcGlwZWxpbmUgLSBzbyBhbnkgbGF6
eSBpbml0aWFsaXphdGlvbnMKICAgICAgICAgICAgIC8vIG91Z2h0IHRvIGJlIGhvaXN0ZWQgb3V0
IGFueXdheS4KLSAgICAgICAgICAgIGZvck5vZGUobm9kZSkubWVyZ2UoU3BlY0VtcHR5KTsKLSAg
ICAgICAgfQorICAgICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlQnl0ZWNvZGVUb3AoKTsKKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgICAgIApAQCAtNzg2LDcgKzc4Niw3IEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIEFycmF5OjpHZW5lcmljOgogICAgICAgICAgICAgY2xvYmJlcldvcmxk
KG5vZGUtPmNvZGVPcmlnaW4sIGNsb2JiZXJMaW1pdCk7Ci0gICAgICAgICAgICBmb3JOb2RlKG5v
ZGUpLm1ha2VUb3AoKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5OjpTdHJpbmc6CiAgICAgICAg
ICAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCkuaXNPdXRPZkJvdW5kcygpKSB7CkBAIC04MDEsMjQg
KzgwMSwyNCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAg
ICAgICAgICAgICAgLy8gc28gd2UncmUgZ29pbmcgd2l0aCBUT1AgZm9yIG5vdy4gVGhlIHNhbWUg
dGhpbmcgYXBwbGllcyB0bwogICAgICAgICAgICAgICAgIC8vIGNsb2JiZXJpbmcgdGhlIHdvcmxk
LgogICAgICAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5jb2RlT3JpZ2luLCBjbG9iYmVy
TGltaXQpOwotICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZVRvcCgpOworICAgICAg
ICAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKICAgICAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIG1fZ3JhcGgubV92
bS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQXJyYXk6OkFyZ3VtZW50czoKLSAgICAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZVRvcCgp
OworICAgICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXk6OkludDMyOgogICAgICAgICAgICAgaWYgKG5vZGUt
PmFycmF5TW9kZSgpLmlzT3V0T2ZCb3VuZHMoKSkgewogICAgICAgICAgICAgICAgIGNsb2JiZXJX
b3JsZChub2RlLT5jb2RlT3JpZ2luLCBjbG9iYmVyTGltaXQpOwotICAgICAgICAgICAgICAgIGZv
ck5vZGUobm9kZSkubWFrZVRvcCgpOworICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkubWFr
ZUhlYXBUb3AoKTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIGZvck5vZGUo
bm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQXJyYXk6OkRvdWJsZToKICAgICAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc091
dE9mQm91bmRzKCkpIHsKICAgICAgICAgICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+Y29kZU9y
aWdpbiwgY2xvYmJlckxpbWl0KTsKLSAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VU
b3AoKTsKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7CiAgICAg
ICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzU2FuZUNoYWluKCkpCiAgICAg
ICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOwogICAgICAgICAg
ICAgZWxzZQpAQCAtODI5LDcgKzgyOSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHkKICAgICAgICAgY2FzZSBBcnJheTo6U2xvd1B1dEFycmF5U3RvcmFnZToKICAg
ICAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91bmRzKCkpCiAgICAgICAg
ICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPmNvZGVPcmlnaW4sIGNsb2JiZXJMaW1pdCk7Ci0g
ICAgICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VUb3AoKTsKKyAgICAgICAgICAgIGZvck5vZGUo
bm9kZSkubWFrZUhlYXBUb3AoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFy
cmF5OjpJbnQ4QXJyYXk6CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0lu
dDMyKTsKQEAgLTkxMCwxMSArOTEwLDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHkKICAgICBjYXNlIEFycmF5UG9wOgogICAgICAgICBub2RlLT5zZXRDYW5FeGl0
KHRydWUpOwogICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+Y29kZU9yaWdpbiwgY2xvYmJlckxp
bWl0KTsKLSAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlVG9wKCk7CisgICAgICAgIGZvck5vZGUo
bm9kZSkubWFrZUhlYXBUb3AoKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBj
YXNlIFJlZ0V4cEV4ZWM6Ci0gICAgICAgIGZvck5vZGUobm9kZSkubWFrZVRvcCgpOworICAgICAg
ICBmb3JOb2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2Fz
ZSBSZWdFeHBUZXN0OgpAQCAtOTk3LDcgKzk5Nyw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgCiAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUg
PSBzb3VyY2UubV90eXBlOwogICAgICAgICBpZiAodHlwZSAmIH4oU3BlY051bWJlciB8IFNwZWNT
dHJpbmcgfCBTcGVjQm9vbGVhbikpCi0gICAgICAgICAgICB0eXBlID0gKFNwZWNUb3AgJiB+U3Bl
Y0NlbGwpIHwgU3BlY1N0cmluZzsKKyAgICAgICAgICAgIHR5cGUgPSAoU3BlY0hlYXBUb3AgJiB+
U3BlY0NlbGwpIHwgU3BlY1N0cmluZzsKIAogICAgICAgICBkZXN0aW5hdGlvbi5zZXRUeXBlKHR5
cGUpOwogICAgICAgICBpZiAoZGVzdGluYXRpb24uaXNDbGVhcigpKQpAQCAtMTE1Miw3ICsxMTUy
LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBj
bG9iYmVyV29ybGQobm9kZS0+Y29kZU9yaWdpbiwgY2xvYmJlckxpbWl0KTsKICAgICAgICAgLy8g
V2UgY3VycmVudGx5IG1ha2Ugbm8gZ3VhcmFudGVlIGFib3V0IHdoYXQgdGhpcyByZXR1cm5zIGJl
Y2F1c2UgaXQgZG9lcyBub3QKICAgICAgICAgLy8gc3BlY3VsYXRlIHRoYXQgdGhlIGxlbmd0aCBw
cm9wZXJ0eSBpcyBhY3R1YWxseSBhIGxlbmd0aC4KLSAgICAgICAgZm9yTm9kZShub2RlKS5tYWtl
VG9wKCk7CisgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKICAgICAgICAgYnJl
YWs7CiAgICAgICAgIAogICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgpAQCAtMTE2MCw3ICsx
MTYwLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAg
ICAvLyBXZSBrbm93IHRoYXQgdGhpcyBleGVjdXRhYmxlIGRvZXMgbm90IGVzY2FwZSBpdHMgYXJn
dW1lbnRzLCBzbyB3ZSBjYW4gb3B0aW1pemUKICAgICAgICAgLy8gdGhlIGFyZ3VtZW50cyBhIGJp
dC4gTm90ZSB0aGF0IHRoaXMgZW5kcyB1cCBiZWluZyBmdXJ0aGVyIG9wdGltaXplZCBieSB0aGUK
ICAgICAgICAgLy8gQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS4KLSAgICAgICAgZm9yTm9k
ZShub2RlKS5tYWtlVG9wKCk7CisgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsU2Fm
ZToKQEAgLTExNjksNyArMTE2OSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHkKICAgICAgICAgLy8gYSBnZXR0ZXIuIFdlIGRvbid0IHNwZWN1bGF0ZSBhZ2FpbnN0
IHRoaXMuCiAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5jb2RlT3JpZ2luLCBjbG9iYmVyTGlt
aXQpOwogICAgICAgICAvLyBBbmQgdGhlIHJlc3VsdCBpcyB1bmtub3duLgotICAgICAgICBmb3JO
b2RlKG5vZGUpLm1ha2VUb3AoKTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgp
OwogICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2FzZSBOZXdGdW5jdGlvbjogewpAQCAt
MTIyMCw3ICsxMjIwLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjoKLSAgICAgICAgZm9y
Tm9kZShub2RlKS5tYWtlVG9wKCk7CisgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3Ao
KTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6
CkBAIC0xMjQ4LDcgKzEyNDgsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5CiAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMuc3BlY2lmaWNWYWx1ZSgpKQog
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgc3RhdHVz
LnNwZWNpZmljVmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZVRvcCgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwogICAgICAgICAgICAgICAgICAgICBm
aWx0ZXIobm9kZS0+Y2hpbGQxKCksIHN0YXR1cy5zdHJ1Y3R1cmVTZXQoKSk7CiAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRz
KHRydWUpOwpAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGNsb2JiZXJX
b3JsZChub2RlLT5jb2RlT3JpZ2luLCBjbG9iYmVyTGltaXQpOwotICAgICAgICBmb3JOb2RlKG5v
ZGUpLm1ha2VUb3AoKTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwogICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CkBAIC0x
NDE1LDcgKzE0MTUsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIEdldEJ5T2Zmc2V0OiB7Ci0gICAgICAgIGZvck5v
ZGUobm9kZSkubWFrZVRvcCgpOworICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgICAgIApAQCAtMTQ3MCw3ICsxNDcwLDcg
QEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBicmVh
azsKICAgICAgICAgICAgIAogICAgIGNhc2UgR2V0R2xvYmFsVmFyOgotICAgICAgICBmb3JOb2Rl
KG5vZGUpLm1ha2VUb3AoKTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwog
ICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2FzZSBHbG9iYWxWYXJXYXRjaHBvaW50OgpA
QCAtMTUxNCw3ICsxNTE0LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3Rh
dGVUeQogICAgIGNhc2UgQ29uc3RydWN0OgogICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUp
OwogICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+Y29kZU9yaWdpbiwgY2xvYmJlckxpbWl0KTsK
LSAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlVG9wKCk7CisgICAgICAgIGZvck5vZGUobm9kZSku
bWFrZUhlYXBUb3AoKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEZvcmNlT1NSRXhpdDoK
QEAgLTE1OTQsMTggKzE1OTQsMTggQEAgdm9pZCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeQogICAgICAgICBmb3IgKHNpemVfdCBpID0gY2FwdHVyZWRWYXJzLnNpemUoKTsgaS0t
OykgewogICAgICAgICAgICAgaWYgKCFjYXB0dXJlZFZhcnMucXVpY2tHZXQoaSkpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBtX3N0YXRlLnZhcmlhYmxlcygpLmxvY2Fs
KGkpLm1ha2VUb3AoKTsKKyAgICAgICAgICAgIG1fc3RhdGUudmFyaWFibGVzKCkubG9jYWwoaSku
bWFrZUhlYXBUb3AoKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSBtX2NvZGVCbG9jay0+bV9udW1WYXJzOyBpLS07KSB7CiAgICAgICAgICAgICBpZiAo
bV9jb2RlQmxvY2stPmlzQ2FwdHVyZWQobG9jYWxUb09wZXJhbmQoaSkpKQotICAgICAgICAgICAg
ICAgIG1fc3RhdGUudmFyaWFibGVzKCkubG9jYWwoaSkubWFrZVRvcCgpOworICAgICAgICAgICAg
ICAgIG1fc3RhdGUudmFyaWFibGVzKCkubG9jYWwoaSkubWFrZUhlYXBUb3AoKTsKICAgICAgICAg
fQogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGkgPSBtX3N0YXRlLnZhcmlhYmxlcygpLm51bWJl
ck9mQXJndW1lbnRzKCk7IGktLTspIHsKICAgICAgICAgaWYgKG1fY29kZUJsb2NrLT5pc0NhcHR1
cmVkKGFyZ3VtZW50VG9PcGVyYW5kKGkpKSkKLSAgICAgICAgICAgIG1fc3RhdGUudmFyaWFibGVz
KCkuYXJndW1lbnQoaSkubWFrZVRvcCgpOworICAgICAgICAgICAgbV9zdGF0ZS52YXJpYWJsZXMo
KS5hcmd1bWVudChpKS5tYWtlSGVhcFRvcCgpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCShyZXZpc2lvbiAxNTU0
NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjUsMTIgKzEyNSw5IEBAIEZpbHRyYXRpb25SZXN1bHQgQWJzdHJh
Y3RWYWx1ZTo6ZmlsdGVyQXIKIAogRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdFZhbHVlOjpmaWx0
ZXIoU3BlY3VsYXRlZFR5cGUgdHlwZSkKIHsKLSAgICBpZiAoaXNDbGVhcigpKQorICAgIGlmICgo
bV90eXBlICYgdHlwZSkgPT0gbV90eXBlKQogICAgICAgICByZXR1cm4gRmlsdHJhdGlvbk9LOwog
ICAgIAotICAgIGlmICh0eXBlID09IFNwZWNUb3ApCi0gICAgICAgIHJldHVybiBpc0NsZWFyKCkg
PyBDb250cmFkaWN0aW9uIDogRmlsdHJhdGlvbk9LOwotICAgIAogICAgIG1fdHlwZSAmPSB0eXBl
OwogICAgIAogICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCBwcmlvciB0byB0aGlzIGZpbHRlcigp
IGNhbGwgd2UgaGFkLCBzYXksIChGaW5hbCwgVE9QKSwgYW5kCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAkocmV2aXNpb24gMTU1NDU3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTYyLDE0ICs2MiwxNCBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgYm9vbCBp
c0NsZWFyKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFNwZWNOb25lOyB9CiAgICAgYm9vbCBv
cGVyYXRvciEoKSBjb25zdCB7IHJldHVybiBpc0NsZWFyKCk7IH0KICAgICAKLSAgICB2b2lkIG1h
a2VUb3AoKQorICAgIHZvaWQgbWFrZUhlYXBUb3AoKQogICAgIHsKLSAgICAgICAgbV90eXBlIHw9
IFNwZWNUb3A7IC8vIFRoZSBzdGF0ZSBtYXkgaGF2ZSBpbmNsdWRlZCBTcGVjRW1wdHksIGluIHdo
aWNoIGNhc2Ugd2Ugd2FudCB0aGlzIHRvIGJlY29tZSBTcGVjRW1wdHlPclRvcC4KLSAgICAgICAg
bV9hcnJheU1vZGVzID0gQUxMX0FSUkFZX01PREVTOwotICAgICAgICBtX2N1cnJlbnRLbm93blN0
cnVjdHVyZS5tYWtlVG9wKCk7Ci0gICAgICAgIG1fZnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUubWFr
ZVRvcCgpOwotICAgICAgICBtX3ZhbHVlID0gSlNWYWx1ZSgpOwotICAgICAgICBjaGVja0NvbnNp
c3RlbmN5KCk7CisgICAgICAgIG1ha2VUb3AoU3BlY0hlYXBUb3ApOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIG1ha2VCeXRlY29kZVRvcCgpCisgICAgeworICAgICAgICBtYWtlVG9wKFNwZWNCeXRl
Y29kZVRvcCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY2xvYmJlclN0cnVjdHVyZXMoKQpAQCAt
ODksOSArODksOSBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgIG1fdmFsdWUgPSBK
U1ZhbHVlKCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNUb3AoKSBjb25zdAorICAgIGJvb2wg
aXNIZWFwVG9wKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3R5cGUgPT0gU3BlY1Rv
cCAmJiBtX2N1cnJlbnRLbm93blN0cnVjdHVyZS5pc1RvcCgpICYmIG1fZnV0dXJlUG9zc2libGVT
dHJ1Y3R1cmUuaXNUb3AoKTsKKyAgICAgICAgcmV0dXJuIChtX3R5cGUgfCBTcGVjSGVhcFRvcCkg
PT0gbV90eXBlICYmIG1fY3VycmVudEtub3duU3RydWN0dXJlLmlzVG9wKCkgJiYgbV9mdXR1cmVQ
b3NzaWJsZVN0cnVjdHVyZS5pc1RvcCgpOwogICAgIH0KICAgICAKICAgICBib29sIHZhbHVlSXNU
b3AoKSBjb25zdApAQCAtMTA0LDEwICsxMDQsMTAgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewog
ICAgICAgICByZXR1cm4gbV92YWx1ZTsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIEFic3RyYWN0
VmFsdWUgdG9wKCkKKyAgICBzdGF0aWMgQWJzdHJhY3RWYWx1ZSBoZWFwVG9wKCkKICAgICB7CiAg
ICAgICAgIEFic3RyYWN0VmFsdWUgcmVzdWx0OwotICAgICAgICByZXN1bHQubWFrZVRvcCgpOwor
ICAgICAgICByZXN1bHQubWFrZUhlYXBUb3AoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAgICAgCkBAIC0xOTUsNyArMTk1LDcgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAg
IAogICAgIGJvb2wgdmFsaWRhdGVUeXBlKEpTVmFsdWUgdmFsdWUpIGNvbnN0CiAgICAgewotICAg
ICAgICBpZiAoaXNUb3AoKSkKKyAgICAgICAgaWYgKGlzSGVhcFRvcCgpKQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIAogICAgICAgICBpZiAobWVyZ2VTcGVjdWxhdGlvbnMobV90
eXBlLCBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSkpICE9IG1fdHlwZSkKQEAgLTIxMSw3ICsy
MTEsNyBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgCiAgICAgYm9vbCB2YWxpZGF0ZShK
U1ZhbHVlIHZhbHVlKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKGlzVG9wKCkpCisgICAgICAg
IGlmIChpc0hlYXBUb3AoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKICAg
ICAgICAgaWYgKCEhbV92YWx1ZSAmJiBtX3ZhbHVlICE9IHZhbHVlKQpAQCAtMzYzLDYgKzM2Mywx
NiBAQCBwcml2YXRlOgogICAgICAgICBtX2FycmF5TW9kZXMgPSBBTExfQVJSQVlfTU9ERVM7CiAg
ICAgfQogICAgIAorICAgIHZvaWQgbWFrZVRvcChTcGVjdWxhdGVkVHlwZSB0b3ApCisgICAgewor
ICAgICAgICBtX3R5cGUgfD0gdG9wOworICAgICAgICBtX2FycmF5TW9kZXMgPSBBTExfQVJSQVlf
TU9ERVM7CisgICAgICAgIG1fY3VycmVudEtub3duU3RydWN0dXJlLm1ha2VUb3AoKTsKKyAgICAg
ICAgbV9mdXR1cmVQb3NzaWJsZVN0cnVjdHVyZS5tYWtlVG9wKCk7CisgICAgICAgIG1fdmFsdWUg
PSBKU1ZhbHVlKCk7CisgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKKyAgICB9CisgICAgCiAg
ICAgdm9pZCBzZXRGdXR1cmVQb3NzaWJsZVN0cnVjdHVyZShHcmFwaCYsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKTsKIAogICAgIHZvaWQgZmlsdGVyVmFsdWVCeVR5cGUoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3Bw
CShyZXZpc2lvbiAxNTU0NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxh
Y2VBYnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDE0ICsxMDksMTQgQEAg
dm9pZCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSgpCiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCByb290LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7
CiAgICAgICAgIHJvb3QtPnZhbHVlc0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOwogICAgICAg
ICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKSB7Ci0gICAgICAgICAgICByb290LT52YWx1ZXNB
dEhlYWQuYXJndW1lbnQoaSkubWFrZVRvcCgpOworICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRI
ZWFkLmFyZ3VtZW50KGkpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgTm9kZSogbm9kZSA9IHJvb3QtPnZhcmlhYmxlc0F0
SGVhZC5hcmd1bWVudChpKTsKICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1l
bnQpOwogICAgICAgICBpZiAoIW5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5zaG91bGRVbmJv
eElmUG9zc2libGUoKSkgewotICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50
KGkpLm1ha2VUb3AoKTsKKyAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChp
KS5tYWtlSGVhcFRvcCgpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAg
ICAgCkBAIC0xMjksMTIgKzEyOSwxMiBAQCB2b2lkIEluUGxhY2VBYnN0cmFjdFN0YXRlOjppbml0
aWFsaXplKCkKICAgICAgICAgZWxzZSBpZiAoaXNDZWxsU3BlY3VsYXRpb24ocHJlZGljdGlvbikp
CiAgICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVj
Q2VsbCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1
bWVudChpKS5tYWtlVG9wKCk7CisgICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1l
bnQoaSkubWFrZUhlYXBUb3AoKTsKICAgICB9CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBy
b290LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKSB7CiAgICAgICAgIE5vZGUq
IG5vZGUgPSByb290LT52YXJpYWJsZXNBdEhlYWQubG9jYWwoaSk7CiAgICAgICAgIGlmIChub2Rl
ICYmIG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5pc0NhcHR1cmVkKCkpCi0gICAgICAgICAg
ICByb290LT52YWx1ZXNBdEhlYWQubG9jYWwoaSkubWFrZVRvcCgpOworICAgICAgICAgICAgcm9v
dC0+dmFsdWVzQXRIZWFkLmxvY2FsKGkpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5sb2NhbChpKS5jbGVhcigpOwogICAgICAgICBy
b290LT52YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHJldmlzaW9uIDE1NTQ1NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NDQ1LDEyICs0NDUsMTIgQEAgcHVibGljOgogICAgICAgICBmb3IgKHNpemVfdCBhcmd1bWVudCA9
IDA7IGFyZ3VtZW50IDwgYmFzaWNCbG9jay52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVu
dHMoKTsgKythcmd1bWVudCkgewogICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJhc2ljQmxvY2su
dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50KGFyZ3VtZW50KTsKICAgICAgICAgICAgIGlmICghbm9k
ZSB8fCAhbm9kZS0+c2hvdWxkR2VuZXJhdGUoKSkKLSAgICAgICAgICAgICAgICBlbnRyeS0+bV9l
eHBlY3RlZFZhbHVlcy5hcmd1bWVudChhcmd1bWVudCkubWFrZVRvcCgpOworICAgICAgICAgICAg
ICAgIGVudHJ5LT5tX2V4cGVjdGVkVmFsdWVzLmFyZ3VtZW50KGFyZ3VtZW50KS5tYWtlSGVhcFRv
cCgpOwogICAgICAgICB9CiAgICAgICAgIGZvciAoc2l6ZV90IGxvY2FsID0gMDsgbG9jYWwgPCBi
YXNpY0Jsb2NrLnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2xvY2FsKSB7CiAg
ICAgICAgICAgICBOb2RlKiBub2RlID0gYmFzaWNCbG9jay52YXJpYWJsZXNBdEhlYWQubG9jYWwo
bG9jYWwpOwogICAgICAgICAgICAgaWYgKCFub2RlIHx8ICFub2RlLT5zaG91bGRHZW5lcmF0ZSgp
KQotICAgICAgICAgICAgICAgIGVudHJ5LT5tX2V4cGVjdGVkVmFsdWVzLmxvY2FsKGxvY2FsKS5t
YWtlVG9wKCk7CisgICAgICAgICAgICAgICAgZW50cnktPm1fZXhwZWN0ZWRWYWx1ZXMubG9jYWwo
bG9jYWwpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT52YXJpYWJs
ZUFjY2Vzc0RhdGEoKS0+c2hvdWxkVXNlRG91YmxlRm9ybWF0KCkpCiAgICAgICAgICAgICAgICAg
ZW50cnktPm1fbG9jYWxzRm9yY2VkRG91YmxlLnNldChsb2NhbCk7CiAgICAgICAgIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCShyZXZpc2lvbiAxNTU0NTcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAkod29ya2luZyBjb3B5KQpA
QCAtNjIsNyArNjIsNyBAQCBBTFdBWVNfSU5MSU5FIFNwZWN1bGF0ZWRUeXBlIHR5cGVGaWx0ZXJG
CiB7CiAgICAgc3dpdGNoICh1c2VLaW5kKSB7CiAgICAgY2FzZSBVbnR5cGVkVXNlOgotICAgICAg
ICByZXR1cm4gU3BlY0VtcHR5T3JUb3A7IC8vIFRPUCBpc24ndCBnb29kIGVub3VnaDsgdW50eXBl
ZCB1c2VzIG1heSB1c2UgdGhlIG5vcm1hbGx5IHVuc2VlbiBlbXB0eSB2YWx1ZSwgaW4gdGhlIGNh
c2Ugb2YgbGF6eSByZWdpc3RlcnMuCisgICAgICAgIHJldHVybiBTcGVjRnVsbFRvcDsKICAgICBj
YXNlIEludDMyVXNlOgogICAgIGNhc2UgS25vd25JbnQzMlVzZToKICAgICAgICAgcmV0dXJuIFNw
ZWNJbnQzMjsKQEAgLTk3LDcgKzk3LDcgQEAgQUxXQVlTX0lOTElORSBTcGVjdWxhdGVkVHlwZSB0
eXBlRmlsdGVyRgogICAgICAgICByZXR1cm4gU3BlY090aGVyOwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBTcGVjVG9w
OworICAgICAgICByZXR1cm4gU3BlY0Z1bGxUb3A7CiAgICAgfQogfQogCg==
</data>
<flag name="review"
          id="233285"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211236</attachid>
            <date>2013-09-10 13:54:36 -0700</date>
            <delta_ts>2013-09-10 13:58:57 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>21826</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU1NDcwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBA
CisyMDEzLTA5LTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SW50cm9kdWNlIGEgU3BlY0ludDQ4IHR5cGUgYW5kIGJlIG1vcmUgY2FyZWZ1bCBhYm91dCB3aGF0
IHdlIG1lYW4gYnkgIlRvcCIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyMTExNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
ICAgICAgICAKKyAgICAgICAgU3BlY0ludDQ4IHdpbGwgbWVhbiB0aGF0IHdlIGhhdmUgc29tZXRo
aW5nIHRoYXQgd291bGQgYmUgYSBkb3VibGUgaWYgaXQgd2FzIGEgSlNWYWx1ZSwKKyAgICAgICAg
YnV0IGl0J3MgcHJvZml0YWJsZSB0byByZXByZXNlbnQgaXQgYXMgc29tZXRoaW5nIG90aGVyIHRo
YW4gYSBkb3VibGUuCisgICAgICAgIAorICAgICAgICBTcGVjSW50NDhBc0RvdWJsZSBtZWFucyB0
aGF0IGl0IGhhcyBhIHZhbHVlIHRoYXQgY291bGQgaGF2ZSBiZWVuIHJlcHJlc2VudGVkIGxpa2UK
KyAgICAgICAgU3BlY0ludDQ4LCBidXQgd2UncmUgbWFraW5nIGEgaGV1cmlzdGljIGRlY2lzaW9u
IG5vdCB0byBkbyBpdC4KKworICAgICAgICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmg6Cisg
ICAgICAgIChKU0M6OmlzSW50NDhTcGVjdWxhdGlvbik6CisgICAgICAgICogZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6OjpleGVjdXRlRWZm
ZWN0cyk6CisgICAgICAgIChKU0M6OkRGRzo6OjpjbG9iYmVyQ2FwdHVyZWRWYXJzKToKKyAgICAg
ICAgKiBkZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RWYWx1ZTo6ZmlsdGVyKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RWYWx1ZS5oOgorICAg
ICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6Om1ha2VIZWFwVG9wKToKKyAgICAgICAgKEpT
Qzo6REZHOjpBYnN0cmFjdFZhbHVlOjptYWtlQnl0ZWNvZGVUb3ApOgorICAgICAgICAoSlNDOjpE
Rkc6OkFic3RyYWN0VmFsdWU6OmlzSGVhcFRvcCk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RWYWx1ZTo6aGVhcFRvcCk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6dmFs
aWRhdGVUeXBlKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjp2YWxpZGF0ZSk6
CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6bWFrZVRvcCk6CisgICAgICAgICog
ZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpJblBs
YWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBp
bGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6Om5vdGljZU9TUkVudHJ5KToK
KyAgICAgICAgKiBkZmcvREZHVXNlS2luZC5oOgorICAgICAgICAoSlNDOjpERkc6OnR5cGVGaWx0
ZXJGb3IpOgorCiAyMDEzLTA5LTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgU3BlY1R5cGUgc2hvdWxkIGhhdmUgU3BlY0ludDQ4QXNEb3VibGUKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAko
cmV2aXNpb24gMTU1NDcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1
bGF0ZWRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY2LDYgKzE2NiwxMSBAQCB2b2lkIGR1
bXBTcGVjdWxhdGlvbihQcmludFN0cmVhbSYgb3V0LCBTCiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGlzVG9wID0gZmFsc2U7CiAgICAgICAgIAorICAgICAgICBpZiAodmFsdWUgJiBTcGVjSW50
NDgpCisgICAgICAgICAgICBteU91dC5wcmludCgiSW50NDgiKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgaXNUb3AgPSBmYWxzZTsKKyAgICAgICAgCiAgICAgICAgIGlmICh2YWx1ZSAmIFNw
ZWNOb25JbnRBc0RvdWJsZSkKICAgICAgICAgICAgIG15T3V0LnByaW50KCJOb25pbnRhc2RvdWJs
ZSIpOwogICAgICAgICBlbHNlCkBAIC0yNDAsNiArMjQ1LDggQEAgc3RhdGljIGNvbnN0IGNoYXIq
IHNwZWN1bGF0aW9uVG9BYmJyZXZpYQogICAgICAgICByZXR1cm4gIjxJbnQzMj4iOwogICAgIGlm
IChpc0ludDQ4QXNEb3VibGVTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgcmV0dXJu
ICI8SW50NDhBc0RvdWJsZT4iOworICAgIGlmIChpc0ludDQ4U3BlY3VsYXRpb24ocHJlZGljdGlv
bikpCisgICAgICAgIHJldHVybiAiPEludDQ4PiI7CiAgICAgaWYgKGlzRG91YmxlU3BlY3VsYXRp
b24ocHJlZGljdGlvbikpCiAgICAgICAgIHJldHVybiAiPERvdWJsZT4iOwogICAgIGlmIChpc051
bWJlclNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHJldmlzaW9uIDE1NTQ3MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC02MiwxOSArNjIsMjEgQEAgc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNT
dHJpbmcgIAogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsT3RoZXIgICAgICAg
ICA9IDB4MDAwNDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQ2VsbCBidXQgbm90IGEgc3Vi
Y2xhc3Mgb2YgSlNPYmplY3QgYW5kIGRlZmluaXRlbHkgbm90IGEgSlNTdHJpbmcuCiBzdGF0aWMg
Y29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0NlbGwgICAgICAgICAgICAgID0gMHgwMDA3ZmZmZjsg
Ly8gSXQncyBkZWZpbml0ZWx5IGEgSlNDZWxsLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBl
IFNwZWNJbnQzMiAgICAgICAgICAgICA9IDB4MDA4MDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBh
biBJbnQzMi4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50NDhBc0RvdWJsZSAg
ICAgPSAweDAxMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50NDggYW5kIGl0J3MgaW5z
aWRlIGEgZG91YmxlLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnRlZ2VyICAg
ICAgICAgICA9IDB4MDE4MDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBzb21lIGtpbmQgb2YgaW50
ZWdlci4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjTm9uSW50QXNEb3VibGUgICAg
PSAweDAyMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgbm90IGFuIEludDQ4IGJ1dCBpdCdzIGEg
cmVhbCBudW1iZXIgYW5kIGl0J3MgYSBkb3VibGUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY0RvdWJsZVJlYWwgICAgICAgID0gMHgwMzAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5
IGEgbm9uLU5hTiBkb3VibGUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0RvdWJs
ZU5hTiAgICAgICAgID0gMHgwNDAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgTmFOLgotc3Rh
dGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGUgICAgICAgICAgICA9IDB4MDcwMDAw
MDA7IC8vIEl0J3MgZWl0aGVyIGEgbm9uLU5hTiBvciBhIE5hTiBkb3VibGUuCi1zdGF0aWMgY29u
c3QgU3BlY3VsYXRlZFR5cGUgU3BlY1JlYWxOdW1iZXIgICAgICAgID0gMHgwMzgwMDAwMDsgLy8g
SXQncyBlaXRoZXIgYW4gSW50MzIgb3IgYSBEb3VibGVSZWFsLgotc3RhdGljIGNvbnN0IFNwZWN1
bGF0ZWRUeXBlIFNwZWNOdW1iZXIgICAgICAgICAgICA9IDB4MDc4MDAwMDA7IC8vIEl0J3MgZWl0
aGVyIGFuIEludDMyIG9yIGEgRG91YmxlLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNw
ZWNCb29sZWFuICAgICAgICAgICA9IDB4MDgwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEJv
b2xlYW4uCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY090aGVyICAgICAgICAgICAg
ID0gMHgxMDAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IG5vbmUgb2YgdGhlIGFib3ZlLgotc3Rh
dGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNUb3AgICAgICAgICAgICAgICA9IDB4MWZmZmZm
ZmY7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0
ZWRUeXBlIFNwZWNFbXB0eSAgICAgICAgICAgICA9IDB4MjAwMDAwMDA7IC8vIEl0J3MgZGVmaW5p
dGVseSBhbiBlbXB0eSB2YWx1ZSBtYXJrZXIuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY0VtcHR5T3JUb3AgICAgICAgID0gMHgzZmZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0
aGUgYWJvdmUuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDQ4ICAgICAgICAg
ICAgID0gMHgwMTAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDQ4LCBpdCdzIGluc2lk
ZSBhIGRvdWJsZSwgYnV0IGl0IGRvZXNuJ3QgbmVlZCB0byBiZS4KK3N0YXRpYyBjb25zdCBTcGVj
dWxhdGVkVHlwZSBTcGVjSW50NDhBc0RvdWJsZSAgICAgPSAweDAyMDAwMDAwOyAvLyBJdCdzIGRl
ZmluaXRlbHkgYW4gSW50NDggYW5kIGl0J3MgaW5zaWRlIGEgZG91YmxlLgorc3RhdGljIGNvbnN0
IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnRlZ2VyICAgICAgICAgICA9IDB4MDM4MDAwMDA7IC8vIEl0
J3MgZGVmaW5pdGVseSBzb21lIGtpbmQgb2YgaW50ZWdlci4KK3N0YXRpYyBjb25zdCBTcGVjdWxh
dGVkVHlwZSBTcGVjTm9uSW50QXNEb3VibGUgICAgPSAweDA0MDAwMDAwOyAvLyBJdCdzIGRlZmlu
aXRlbHkgbm90IGFuIEludDQ4IGJ1dCBpdCdzIGEgcmVhbCBudW1iZXIgYW5kIGl0J3MgYSBkb3Vi
bGUuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0RvdWJsZVJlYWwgICAgICAgID0g
MHgwNzAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgbm9uLU5hTiBkb3VibGUuCitzdGF0aWMg
Y29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0RvdWJsZU5hTiAgICAgICAgID0gMHgwODAwMDAwMDsg
Ly8gSXQncyBkZWZpbml0ZWx5IGEgTmFOLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNw
ZWNEb3VibGUgICAgICAgICAgICA9IDB4MGYwMDAwMDA7IC8vIEl0J3MgZWl0aGVyIGEgbm9uLU5h
TiBvciBhIE5hTiBkb3VibGUuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1JlYWxO
dW1iZXIgICAgICAgID0gMHgwNzgwMDAwMDsgLy8gSXQncyBlaXRoZXIgYW4gSW50MzIgb3IgYSBE
b3VibGVSZWFsLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNOdW1iZXIgICAgICAg
ICAgICA9IDB4MGY4MDAwMDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyIG9yIGEgRG91YmxlLgor
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCb29sZWFuICAgICAgICAgICA9IDB4MTAw
MDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEJvb2xlYW4uCitzdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY090aGVyICAgICAgICAgICAgID0gMHgyMDAwMDAwMDsgLy8gSXQncyBkZWZp
bml0ZWx5IG5vbmUgb2YgdGhlIGFib3ZlLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNw
ZWNIZWFwVG9wICAgICAgICAgICA9IDB4M2ZmZmZmZmY7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhl
IGFib3ZlLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNFbXB0eSAgICAgICAgICAg
ICA9IDB4NDAwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBlbXB0eSB2YWx1ZSBtYXJrZXIu
CitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0J5dGVjb2RlVG9wICAgICAgID0gMHg3
ZmZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUuCitzdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0Z1bGxUb3AgICAgICAgICAgID0gMHg3ZmZmZmZmZjsgLy8gSXQgY2Fu
IGJlIGFueSBvZiB0aGUgYWJvdmUgcGx1cyBhbnl0aGluZyB0aGUgREZHIGNob29zZXMuCiAKIHR5
cGVkZWYgYm9vbCAoKlNwZWN1bGF0ZWRUeXBlQ2hlY2tlcikoU3BlY3VsYXRlZFR5cGUpOwogCkBA
IC0yNDUsNiArMjQ3LDExIEBAIGlubGluZSBib29sIGlzSW50MzJTcGVjdWxhdGlvbkV4cGVjdGlu
Z0QKICAgICByZXR1cm4gaXNJbnQzMlNwZWN1bGF0aW9uKHZhbHVlICYgflNwZWNPdGhlcik7CiB9
CiAKK2lubGluZSBib29sIGlzSW50NDhTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkK
K3sKKyAgICByZXR1cm4gdmFsdWUgPT0gU3BlY0ludDQ4OworfQorCiBpbmxpbmUgYm9vbCBpc0lu
dDQ4QXNEb3VibGVTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKICAgICByZXR1
cm4gdmFsdWUgPT0gU3BlY0ludDQ4QXNEb3VibGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShy
ZXZpc2lvbiAxNTU0NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw3ICsxNDMsNyBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIEFTU0VSVCht
X2dyYXBoLm1fZm9ybSA9PSBTU0EpOwogICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlh
YmxlID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CiAgICAgICAgIEFic3RyYWN0VmFsdWUm
IHZhbHVlID0gbV9zdGF0ZS52YXJpYWJsZXMoKS5vcGVyYW5kKHZhcmlhYmxlLT5sb2NhbCgpKTsK
LSAgICAgICAgQVNTRVJUKHZhbHVlLmlzVG9wKCkpOworICAgICAgICBBU1NFUlQodmFsdWUuaXNI
ZWFwVG9wKCkpOwogICAgICAgICBGaWx0cmF0aW9uUmVzdWx0IHJlc3VsdCA9CiAgICAgICAgICAg
ICB2YWx1ZS5maWx0ZXIodHlwZUZpbHRlckZvcih1c2VLaW5kRm9yKHZhcmlhYmxlLT5mbHVzaEZv
cm1hdCgpKSkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ID09IEZpbHRy
YXRpb25PSyk7CkBAIC0xNTIsNyArMTUyLDYgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeQogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlM
b2NhbDogewotICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VUb3AoKTsKICAgICAgICAgaWYgKCFv
cGVyYW5kSXNBcmd1bWVudChub2RlLT51bmxpbmtlZExvY2FsKCkpCiAgICAgICAgICAgICAmJiBt
X2dyYXBoLm1fbGF6eVZhcnMuZ2V0KG9wZXJhbmRUb0xvY2FsKG5vZGUtPnVubGlua2VkTG9jYWwo
KSkpKSB7CiAgICAgICAgICAgICAvLyBUaGlzIGlzIGtpbmQgb2YgcGVzc2ltaXN0aWMgLSB3ZSBj
b3VsZCBrbm93IGluIHNvbWUgY2FzZXMgdGhhdCB0aGUKQEAgLTE2MCw4ICsxNTksOSBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAvLyB2YXJp
YWJsZS4gQnV0IG1heWJlIHRoaXMgaXMgZmluZSwgc2luY2Ugd2UncmUgaW5zZXJ0aW5nIE9TUgog
ICAgICAgICAgICAgLy8gZW50cnlwb2ludHMgdmVyeSBlYXJseSBpbiB0aGUgcGlwZWxpbmUgLSBz
byBhbnkgbGF6eSBpbml0aWFsaXphdGlvbnMKICAgICAgICAgICAgIC8vIG91Z2h0IHRvIGJlIGhv
aXN0ZWQgb3V0IGFueXdheS4KLSAgICAgICAgICAgIGZvck5vZGUobm9kZSkubWVyZ2UoU3BlY0Vt
cHR5KTsKLSAgICAgICAgfQorICAgICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlQnl0ZWNvZGVU
b3AoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VIZWFw
VG9wKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgICAgIApAQCAtNzg2LDcgKzc4
Niw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5OjpHZW5lcmljOgogICAgICAgICAgICAgY2xv
YmJlcldvcmxkKG5vZGUtPmNvZGVPcmlnaW4sIGNsb2JiZXJMaW1pdCk7Ci0gICAgICAgICAgICBm
b3JOb2RlKG5vZGUpLm1ha2VUb3AoKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhl
YXBUb3AoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5OjpTdHJpbmc6
CiAgICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCkuaXNPdXRPZkJvdW5kcygpKSB7CkBA
IC04MDEsMjQgKzgwMSwyNCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5CiAgICAgICAgICAgICAgICAgLy8gc28gd2UncmUgZ29pbmcgd2l0aCBUT1AgZm9yIG5vdy4g
VGhlIHNhbWUgdGhpbmcgYXBwbGllcyB0bwogICAgICAgICAgICAgICAgIC8vIGNsb2JiZXJpbmcg
dGhlIHdvcmxkLgogICAgICAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5jb2RlT3JpZ2lu
LCBjbG9iYmVyTGltaXQpOwotICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZVRvcCgp
OworICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKICAgICAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIG1f
Z3JhcGgubV92bS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgQXJyYXk6OkFyZ3VtZW50czoKLSAgICAgICAgICAgIGZvck5vZGUobm9kZSku
bWFrZVRvcCgpOworICAgICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXk6OkludDMyOgogICAgICAgICAgICAg
aWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzT3V0T2ZCb3VuZHMoKSkgewogICAgICAgICAgICAgICAg
IGNsb2JiZXJXb3JsZChub2RlLT5jb2RlT3JpZ2luLCBjbG9iYmVyTGltaXQpOwotICAgICAgICAg
ICAgICAgIGZvck5vZGUobm9kZSkubWFrZVRvcCgpOworICAgICAgICAgICAgICAgIGZvck5vZGUo
bm9kZSkubWFrZUhlYXBUb3AoKTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKICAgICAgICAgICAgIGlmIChub2RlLT5hcnJheU1v
ZGUoKS5pc091dE9mQm91bmRzKCkpIHsKICAgICAgICAgICAgICAgICBjbG9iYmVyV29ybGQobm9k
ZS0+Y29kZU9yaWdpbiwgY2xvYmJlckxpbWl0KTsKLSAgICAgICAgICAgICAgICBmb3JOb2RlKG5v
ZGUpLm1ha2VUb3AoKTsKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VIZWFwVG9w
KCk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzU2FuZUNoYWlu
KCkpCiAgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOwog
ICAgICAgICAgICAgZWxzZQpAQCAtODI5LDcgKzgyOSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgY2FzZSBBcnJheTo6U2xvd1B1dEFycmF5U3Rv
cmFnZToKICAgICAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91bmRzKCkp
CiAgICAgICAgICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPmNvZGVPcmlnaW4sIGNsb2JiZXJM
aW1pdCk7Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VUb3AoKTsKKyAgICAgICAgICAg
IGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIEFycmF5OjpJbnQ4QXJyYXk6CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5
cGUoU3BlY0ludDMyKTsKQEAgLTkxMCwxMSArOTEwLDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICBjYXNlIEFycmF5UG9wOgogICAgICAgICBub2RlLT5z
ZXRDYW5FeGl0KHRydWUpOwogICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+Y29kZU9yaWdpbiwg
Y2xvYmJlckxpbWl0KTsKLSAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlVG9wKCk7CisgICAgICAg
IGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAKICAgICBjYXNlIFJlZ0V4cEV4ZWM6Ci0gICAgICAgIGZvck5vZGUobm9kZSkubWFrZVRvcCgp
OworICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgIGJyZWFrOwog
CiAgICAgY2FzZSBSZWdFeHBUZXN0OgpAQCAtOTk3LDcgKzk5Nyw3IEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgCiAgICAgICAgIFNwZWN1bGF0ZWRU
eXBlIHR5cGUgPSBzb3VyY2UubV90eXBlOwogICAgICAgICBpZiAodHlwZSAmIH4oU3BlY051bWJl
ciB8IFNwZWNTdHJpbmcgfCBTcGVjQm9vbGVhbikpCi0gICAgICAgICAgICB0eXBlID0gKFNwZWNU
b3AgJiB+U3BlY0NlbGwpIHwgU3BlY1N0cmluZzsKKyAgICAgICAgICAgIHR5cGUgPSAoU3BlY0hl
YXBUb3AgJiB+U3BlY0NlbGwpIHwgU3BlY1N0cmluZzsKIAogICAgICAgICBkZXN0aW5hdGlvbi5z
ZXRUeXBlKHR5cGUpOwogICAgICAgICBpZiAoZGVzdGluYXRpb24uaXNDbGVhcigpKQpAQCAtMTE1
Miw3ICsxMTUyLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQog
ICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+Y29kZU9yaWdpbiwgY2xvYmJlckxpbWl0KTsKICAg
ICAgICAgLy8gV2UgY3VycmVudGx5IG1ha2Ugbm8gZ3VhcmFudGVlIGFib3V0IHdoYXQgdGhpcyBy
ZXR1cm5zIGJlY2F1c2UgaXQgZG9lcyBub3QKICAgICAgICAgLy8gc3BlY3VsYXRlIHRoYXQgdGhl
IGxlbmd0aCBwcm9wZXJ0eSBpcyBhY3R1YWxseSBhIGxlbmd0aC4KLSAgICAgICAgZm9yTm9kZShu
b2RlKS5tYWtlVG9wKCk7CisgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgpAQCAt
MTE2MCw3ICsxMTYwLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eQogICAgICAgICAvLyBXZSBrbm93IHRoYXQgdGhpcyBleGVjdXRhYmxlIGRvZXMgbm90IGVzY2Fw
ZSBpdHMgYXJndW1lbnRzLCBzbyB3ZSBjYW4gb3B0aW1pemUKICAgICAgICAgLy8gdGhlIGFyZ3Vt
ZW50cyBhIGJpdC4gTm90ZSB0aGF0IHRoaXMgZW5kcyB1cCBiZWluZyBmdXJ0aGVyIG9wdGltaXpl
ZCBieSB0aGUKICAgICAgICAgLy8gQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS4KLSAgICAg
ICAgZm9yTm9kZShub2RlKS5tYWtlVG9wKCk7CisgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhl
YXBUb3AoKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgR2V0TXlBcmd1bWVu
dEJ5VmFsU2FmZToKQEAgLTExNjksNyArMTE2OSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgLy8gYSBnZXR0ZXIuIFdlIGRvbid0IHNwZWN1bGF0
ZSBhZ2FpbnN0IHRoaXMuCiAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5jb2RlT3JpZ2luLCBj
bG9iYmVyTGltaXQpOwogICAgICAgICAvLyBBbmQgdGhlIHJlc3VsdCBpcyB1bmtub3duLgotICAg
ICAgICBmb3JOb2RlKG5vZGUpLm1ha2VUb3AoKTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5tYWtl
SGVhcFRvcCgpOwogICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2FzZSBOZXdGdW5jdGlv
bjogewpAQCAtMTIyMCw3ICsxMjIwLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjoKLSAg
ICAgICAgZm9yTm9kZShub2RlKS5tYWtlVG9wKCk7CisgICAgICAgIGZvck5vZGUobm9kZSkubWFr
ZUhlYXBUb3AoKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFB1dENs
b3N1cmVWYXI6CkBAIC0xMjQ4LDcgKzEyNDgsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMuc3BlY2lmaWNW
YWx1ZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXQobV9ncmFw
aCwgc3RhdHVzLnNwZWNpZmljVmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZVRvcCgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwogICAgICAgICAgICAg
ICAgICAgICBmaWx0ZXIobm9kZS0+Y2hpbGQxKCksIHN0YXR1cy5zdHJ1Y3R1cmVTZXQoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5k
Q29uc3RhbnRzKHRydWUpOwpAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAg
IGNsb2JiZXJXb3JsZChub2RlLT5jb2RlT3JpZ2luLCBjbG9iYmVyTGltaXQpOwotICAgICAgICBm
b3JOb2RlKG5vZGUpLm1ha2VUb3AoKTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRv
cCgpOwogICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgIGNhc2UgR2V0QXJyYXlMZW5n
dGg6CkBAIC0xNDE1LDcgKzE0MTUsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIEdldEJ5T2Zmc2V0OiB7Ci0gICAg
ICAgIGZvck5vZGUobm9kZSkubWFrZVRvcCgpOworICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VI
ZWFwVG9wKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgICAgIApAQCAtMTQ3MCw3
ICsxNDcwLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgIGNhc2UgR2V0R2xvYmFsVmFyOgotICAgICAg
ICBmb3JOb2RlKG5vZGUpLm1ha2VUb3AoKTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVh
cFRvcCgpOwogICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2FzZSBHbG9iYWxWYXJXYXRj
aHBvaW50OgpAQCAtMTUxNCw3ICsxNTE0LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeQogICAgIGNhc2UgQ29uc3RydWN0OgogICAgICAgICBub2RlLT5zZXRDYW5F
eGl0KHRydWUpOwogICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+Y29kZU9yaWdpbiwgY2xvYmJl
ckxpbWl0KTsKLSAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlVG9wKCk7CisgICAgICAgIGZvck5v
ZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEZvcmNl
T1NSRXhpdDoKQEAgLTE1OTQsMTggKzE1OTQsMTggQEAgdm9pZCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeQogICAgICAgICBmb3IgKHNpemVfdCBpID0gY2FwdHVyZWRWYXJzLnNp
emUoKTsgaS0tOykgewogICAgICAgICAgICAgaWYgKCFjYXB0dXJlZFZhcnMucXVpY2tHZXQoaSkp
CiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBtX3N0YXRlLnZhcmlhYmxl
cygpLmxvY2FsKGkpLm1ha2VUb3AoKTsKKyAgICAgICAgICAgIG1fc3RhdGUudmFyaWFibGVzKCku
bG9jYWwoaSkubWFrZUhlYXBUb3AoKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSBtX2NvZGVCbG9jay0+bV9udW1WYXJzOyBpLS07KSB7CiAgICAgICAg
ICAgICBpZiAobV9jb2RlQmxvY2stPmlzQ2FwdHVyZWQobG9jYWxUb09wZXJhbmQoaSkpKQotICAg
ICAgICAgICAgICAgIG1fc3RhdGUudmFyaWFibGVzKCkubG9jYWwoaSkubWFrZVRvcCgpOworICAg
ICAgICAgICAgICAgIG1fc3RhdGUudmFyaWFibGVzKCkubG9jYWwoaSkubWFrZUhlYXBUb3AoKTsK
ICAgICAgICAgfQogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGkgPSBtX3N0YXRlLnZhcmlhYmxl
cygpLm51bWJlck9mQXJndW1lbnRzKCk7IGktLTspIHsKICAgICAgICAgaWYgKG1fY29kZUJsb2Nr
LT5pc0NhcHR1cmVkKGFyZ3VtZW50VG9PcGVyYW5kKGkpKSkKLSAgICAgICAgICAgIG1fc3RhdGUu
dmFyaWFibGVzKCkuYXJndW1lbnQoaSkubWFrZVRvcCgpOworICAgICAgICAgICAgbV9zdGF0ZS52
YXJpYWJsZXMoKS5hcmd1bWVudChpKS5tYWtlSGVhcFRvcCgpOwogICAgIH0KIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCShyZXZp
c2lvbiAxNTU0NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFs
dWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsMTIgKzEyNSw5IEBAIEZpbHRyYXRpb25SZXN1
bHQgQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyQXIKIAogRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdFZh
bHVlOjpmaWx0ZXIoU3BlY3VsYXRlZFR5cGUgdHlwZSkKIHsKLSAgICBpZiAoaXNDbGVhcigpKQor
ICAgIGlmICgobV90eXBlICYgdHlwZSkgPT0gbV90eXBlKQogICAgICAgICByZXR1cm4gRmlsdHJh
dGlvbk9LOwogICAgIAotICAgIGlmICh0eXBlID09IFNwZWNUb3ApCi0gICAgICAgIHJldHVybiBp
c0NsZWFyKCkgPyBDb250cmFkaWN0aW9uIDogRmlsdHJhdGlvbk9LOwotICAgIAogICAgIG1fdHlw
ZSAmPSB0eXBlOwogICAgIAogICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCBwcmlvciB0byB0aGlz
IGZpbHRlcigpIGNhbGwgd2UgaGFkLCBzYXksIChGaW5hbCwgVE9QKSwgYW5kCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAkocmV2aXNpb24gMTU1
NDcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTYyLDE0ICs2MiwxNCBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAg
ICAgYm9vbCBpc0NsZWFyKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFNwZWNOb25lOyB9CiAg
ICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiBpc0NsZWFyKCk7IH0KICAgICAKLSAg
ICB2b2lkIG1ha2VUb3AoKQorICAgIHZvaWQgbWFrZUhlYXBUb3AoKQogICAgIHsKLSAgICAgICAg
bV90eXBlIHw9IFNwZWNUb3A7IC8vIFRoZSBzdGF0ZSBtYXkgaGF2ZSBpbmNsdWRlZCBTcGVjRW1w
dHksIGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0aGlzIHRvIGJlY29tZSBTcGVjRW1wdHlPclRvcC4K
LSAgICAgICAgbV9hcnJheU1vZGVzID0gQUxMX0FSUkFZX01PREVTOwotICAgICAgICBtX2N1cnJl
bnRLbm93blN0cnVjdHVyZS5tYWtlVG9wKCk7Ci0gICAgICAgIG1fZnV0dXJlUG9zc2libGVTdHJ1
Y3R1cmUubWFrZVRvcCgpOwotICAgICAgICBtX3ZhbHVlID0gSlNWYWx1ZSgpOwotICAgICAgICBj
aGVja0NvbnNpc3RlbmN5KCk7CisgICAgICAgIG1ha2VUb3AoU3BlY0hlYXBUb3ApOworICAgIH0K
KyAgICAKKyAgICB2b2lkIG1ha2VCeXRlY29kZVRvcCgpCisgICAgeworICAgICAgICBtYWtlVG9w
KFNwZWNCeXRlY29kZVRvcCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY2xvYmJlclN0cnVjdHVy
ZXMoKQpAQCAtODksOSArODksOSBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgIG1f
dmFsdWUgPSBKU1ZhbHVlKCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNUb3AoKSBjb25zdAor
ICAgIGJvb2wgaXNIZWFwVG9wKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3R5cGUg
PT0gU3BlY1RvcCAmJiBtX2N1cnJlbnRLbm93blN0cnVjdHVyZS5pc1RvcCgpICYmIG1fZnV0dXJl
UG9zc2libGVTdHJ1Y3R1cmUuaXNUb3AoKTsKKyAgICAgICAgcmV0dXJuIChtX3R5cGUgfCBTcGVj
SGVhcFRvcCkgPT0gbV90eXBlICYmIG1fY3VycmVudEtub3duU3RydWN0dXJlLmlzVG9wKCkgJiYg
bV9mdXR1cmVQb3NzaWJsZVN0cnVjdHVyZS5pc1RvcCgpOwogICAgIH0KICAgICAKICAgICBib29s
IHZhbHVlSXNUb3AoKSBjb25zdApAQCAtMTA0LDEwICsxMDQsMTAgQEAgc3RydWN0IEFic3RyYWN0
VmFsdWUgewogICAgICAgICByZXR1cm4gbV92YWx1ZTsKICAgICB9CiAgICAgCi0gICAgc3RhdGlj
IEFic3RyYWN0VmFsdWUgdG9wKCkKKyAgICBzdGF0aWMgQWJzdHJhY3RWYWx1ZSBoZWFwVG9wKCkK
ICAgICB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUgcmVzdWx0OwotICAgICAgICByZXN1bHQubWFr
ZVRvcCgpOworICAgICAgICByZXN1bHQubWFrZUhlYXBUb3AoKTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CiAgICAgCkBAIC0xOTUsNyArMTk1LDcgQEAgc3RydWN0IEFic3RyYWN0VmFs
dWUgewogICAgIAogICAgIGJvb2wgdmFsaWRhdGVUeXBlKEpTVmFsdWUgdmFsdWUpIGNvbnN0CiAg
ICAgewotICAgICAgICBpZiAoaXNUb3AoKSkKKyAgICAgICAgaWYgKGlzSGVhcFRvcCgpKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAogICAgICAgICBpZiAobWVyZ2VTcGVjdWxh
dGlvbnMobV90eXBlLCBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSkpICE9IG1fdHlwZSkKQEAg
LTIxMSw3ICsyMTEsNyBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgCiAgICAgYm9vbCB2
YWxpZGF0ZShKU1ZhbHVlIHZhbHVlKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKGlzVG9wKCkp
CisgICAgICAgIGlmIChpc0hlYXBUb3AoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICAKICAgICAgICAgaWYgKCEhbV92YWx1ZSAmJiBtX3ZhbHVlICE9IHZhbHVlKQpAQCAtMzYz
LDYgKzM2MywxNiBAQCBwcml2YXRlOgogICAgICAgICBtX2FycmF5TW9kZXMgPSBBTExfQVJSQVlf
TU9ERVM7CiAgICAgfQogICAgIAorICAgIHZvaWQgbWFrZVRvcChTcGVjdWxhdGVkVHlwZSB0b3Ap
CisgICAgeworICAgICAgICBtX3R5cGUgfD0gdG9wOworICAgICAgICBtX2FycmF5TW9kZXMgPSBB
TExfQVJSQVlfTU9ERVM7CisgICAgICAgIG1fY3VycmVudEtub3duU3RydWN0dXJlLm1ha2VUb3Ao
KTsKKyAgICAgICAgbV9mdXR1cmVQb3NzaWJsZVN0cnVjdHVyZS5tYWtlVG9wKCk7CisgICAgICAg
IG1fdmFsdWUgPSBKU1ZhbHVlKCk7CisgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKKyAgICB9
CisgICAgCiAgICAgdm9pZCBzZXRGdXR1cmVQb3NzaWJsZVN0cnVjdHVyZShHcmFwaCYsIFN0cnVj
dHVyZSogc3RydWN0dXJlKTsKIAogICAgIHZvaWQgZmlsdGVyVmFsdWVCeVR5cGUoKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0
U3RhdGUuY3BwCShyZXZpc2lvbiAxNTU0NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDE0ICsx
MDksMTQgQEAgdm9pZCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSgpCiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCByb290LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMo
KTsgKytpKSB7CiAgICAgICAgIHJvb3QtPnZhbHVlc0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigp
OwogICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKSB7Ci0gICAgICAgICAgICByb290
LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkubWFrZVRvcCgpOworICAgICAgICAgICAgcm9vdC0+
dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgTm9kZSogbm9kZSA9IHJvb3QtPnZh
cmlhYmxlc0F0SGVhZC5hcmd1bWVudChpKTsKICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0g
U2V0QXJndW1lbnQpOwogICAgICAgICBpZiAoIW5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5z
aG91bGRVbmJveElmUG9zc2libGUoKSkgewotICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFk
LmFyZ3VtZW50KGkpLm1ha2VUb3AoKTsKKyAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5h
cmd1bWVudChpKS5tYWtlSGVhcFRvcCgpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KICAgICAgICAgCkBAIC0xMjksMTIgKzEyOSwxMiBAQCB2b2lkIEluUGxhY2VBYnN0cmFjdFN0
YXRlOjppbml0aWFsaXplKCkKICAgICAgICAgZWxzZSBpZiAoaXNDZWxsU3BlY3VsYXRpb24ocHJl
ZGljdGlvbikpCiAgICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0
VHlwZShTcGVjQ2VsbCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0
SGVhZC5hcmd1bWVudChpKS5tYWtlVG9wKCk7CisgICAgICAgICAgICByb290LT52YWx1ZXNBdEhl
YWQuYXJndW1lbnQoaSkubWFrZUhlYXBUb3AoKTsKICAgICB9CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCByb290LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKSB7CiAgICAg
ICAgIE5vZGUqIG5vZGUgPSByb290LT52YXJpYWJsZXNBdEhlYWQubG9jYWwoaSk7CiAgICAgICAg
IGlmIChub2RlICYmIG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5pc0NhcHR1cmVkKCkpCi0g
ICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQubG9jYWwoaSkubWFrZVRvcCgpOworICAgICAg
ICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmxvY2FsKGkpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5sb2NhbChpKS5jbGVhcigpOwog
ICAgICAgICByb290LT52YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHJldmlzaW9uIDE1NTQ3MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNDQ1LDEyICs0NDUsMTIgQEAgcHVibGljOgogICAgICAgICBmb3IgKHNpemVfdCBh
cmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYmFzaWNCbG9jay52YXJpYWJsZXNBdEhlYWQubnVtYmVy
T2ZBcmd1bWVudHMoKTsgKythcmd1bWVudCkgewogICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJh
c2ljQmxvY2sudmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50KGFyZ3VtZW50KTsKICAgICAgICAgICAg
IGlmICghbm9kZSB8fCAhbm9kZS0+c2hvdWxkR2VuZXJhdGUoKSkKLSAgICAgICAgICAgICAgICBl
bnRyeS0+bV9leHBlY3RlZFZhbHVlcy5hcmd1bWVudChhcmd1bWVudCkubWFrZVRvcCgpOworICAg
ICAgICAgICAgICAgIGVudHJ5LT5tX2V4cGVjdGVkVmFsdWVzLmFyZ3VtZW50KGFyZ3VtZW50KS5t
YWtlSGVhcFRvcCgpOwogICAgICAgICB9CiAgICAgICAgIGZvciAoc2l6ZV90IGxvY2FsID0gMDsg
bG9jYWwgPCBiYXNpY0Jsb2NrLnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2xv
Y2FsKSB7CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmFzaWNCbG9jay52YXJpYWJsZXNBdEhl
YWQubG9jYWwobG9jYWwpOwogICAgICAgICAgICAgaWYgKCFub2RlIHx8ICFub2RlLT5zaG91bGRH
ZW5lcmF0ZSgpKQotICAgICAgICAgICAgICAgIGVudHJ5LT5tX2V4cGVjdGVkVmFsdWVzLmxvY2Fs
KGxvY2FsKS5tYWtlVG9wKCk7CisgICAgICAgICAgICAgICAgZW50cnktPm1fZXhwZWN0ZWRWYWx1
ZXMubG9jYWwobG9jYWwpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgICAgICBlbHNlIGlmIChub2Rl
LT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+c2hvdWxkVXNlRG91YmxlRm9ybWF0KCkpCiAgICAgICAg
ICAgICAgICAgZW50cnktPm1fbG9jYWxzRm9yY2VkRG91YmxlLnNldChsb2NhbCk7CiAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCShyZXZpc2lvbiAx
NTU0NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBBTFdBWVNfSU5MSU5FIFNwZWN1bGF0ZWRUeXBlIHR5
cGVGaWx0ZXJGCiB7CiAgICAgc3dpdGNoICh1c2VLaW5kKSB7CiAgICAgY2FzZSBVbnR5cGVkVXNl
OgotICAgICAgICByZXR1cm4gU3BlY0VtcHR5T3JUb3A7IC8vIFRPUCBpc24ndCBnb29kIGVub3Vn
aDsgdW50eXBlZCB1c2VzIG1heSB1c2UgdGhlIG5vcm1hbGx5IHVuc2VlbiBlbXB0eSB2YWx1ZSwg
aW4gdGhlIGNhc2Ugb2YgbGF6eSByZWdpc3RlcnMuCisgICAgICAgIHJldHVybiBTcGVjRnVsbFRv
cDsKICAgICBjYXNlIEludDMyVXNlOgogICAgIGNhc2UgS25vd25JbnQzMlVzZToKICAgICAgICAg
cmV0dXJuIFNwZWNJbnQzMjsKQEAgLTk3LDcgKzk3LDcgQEAgQUxXQVlTX0lOTElORSBTcGVjdWxh
dGVkVHlwZSB0eXBlRmlsdGVyRgogICAgICAgICByZXR1cm4gU3BlY090aGVyOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVy
biBTcGVjVG9wOworICAgICAgICByZXR1cm4gU3BlY0Z1bGxUb3A7CiAgICAgfQogfQogCg==
</data>
<flag name="review"
          id="233291"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>