<?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>118647</bug_id>
          
          <creation_ts>2013-07-13 09:39:06 -0700</creation_ts>
          <short_desc>fourthTier: We should have a reduced FTL LLVM pipeline tool in the repository</short_desc>
          <delta_ts>2013-07-16 13:36:30 -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>112840</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</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>908179</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-07-13 09:39:06 -0700</bug_when>
    <thetext>I&apos;ve now had two versions of these to play with.  I think it would be better if it was checked in</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908180</commentid>
    <comment_count>1</comment_count>
      <attachid>206609</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-07-13 09:40:22 -0700</bug_when>
    <thetext>Created attachment 206609
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908181</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-13 09:43:26 -0700</bug_when>
    <thetext>Attachment 206609 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/ReducedFTL/ReducedFTL.c&apos;, u&apos;Tools/ReducedFTL/build.sh&apos;]&quot; exit_code: 1
Tools/ReducedFTL/ReducedFTL.c:35:  Alphabetical sorting problem.  [build/include_order] [4]
Tools/ReducedFTL/ReducedFTL.c:40:  Alphabetical sorting problem.  [build/include_order] [4]
Tools/ReducedFTL/ReducedFTL.c:51:  Declaration has space between * and variable name in uint8_t* start  [whitespace/declaration] [3]
Tools/ReducedFTL/ReducedFTL.c:59:  Declaration has space between * and variable name in void* opaqueState  [whitespace/declaration] [3]
Tools/ReducedFTL/ReducedFTL.c:63:  Declaration has space between * and variable name in uint8_t* start  [whitespace/declaration] [3]
Tools/ReducedFTL/ReducedFTL.c:64:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Tools/ReducedFTL/ReducedFTL.c:65:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Tools/ReducedFTL/ReducedFTL.c:81:  Declaration has space between * and variable name in void* opaqueState  [whitespace/declaration] [3]
Tools/ReducedFTL/ReducedFTL.c:97:  Declaration has space between * and variable name in void* opaque  [whitespace/declaration] [3]
Tools/ReducedFTL/ReducedFTL.c:119:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Tools/ReducedFTL/ReducedFTL.c:127:  Declaration has space between * and variable name in char* error  [whitespace/declaration] [3]
Tools/ReducedFTL/ReducedFTL.c:166:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Tools/ReducedFTL/ReducedFTL.c:238:  Declaration has space between * and variable name in uint8_t* pc  [whitespace/declaration] [3]
Tools/ReducedFTL/ReducedFTL.c:239:  Declaration has space between * and variable name in uint8_t* end  [whitespace/declaration] [3]
Total errors found: 14 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908182</commentid>
    <comment_count>3</comment_count>
      <attachid>206610</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-07-13 09:45:49 -0700</bug_when>
    <thetext>Created attachment 206610
the patch

Fix style, hopefully.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908183</commentid>
    <comment_count>4</comment_count>
      <attachid>206611</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-07-13 09:46:38 -0700</bug_when>
    <thetext>Created attachment 206611
the patch

Ugh, I keep forgetting proper C style etiquette.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908184</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-13 09:52:23 -0700</bug_when>
    <thetext>Attachment 206611 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/ReducedFTL/ReducedFTL.c&apos;, u&apos;Tools/ReducedFTL/build.sh&apos;]&quot; exit_code: 1
Tools/ReducedFTL/ReducedFTL.c:42:  Alphabetical sorting problem.  [build/include_order] [4]
Tools/ReducedFTL/ReducedFTL.c:122:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 2 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908185</commentid>
    <comment_count>6</comment_count>
      <attachid>206612</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-07-13 09:53:49 -0700</bug_when>
    <thetext>Created attachment 206612
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908186</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-13 09:55:11 -0700</bug_when>
    <thetext>Attachment 206612 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/ReducedFTL/ReducedFTL.c&apos;, u&apos;Tools/ReducedFTL/build.sh&apos;]&quot; exit_code: 1
Tools/ReducedFTL/ReducedFTL.c:42:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908190</commentid>
    <comment_count>8</comment_count>
      <attachid>206616</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-07-13 11:11:52 -0700</bug_when>
    <thetext>Created attachment 206616
added more things</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908191</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-13 11:13:46 -0700</bug_when>
    <thetext>Attachment 206616 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/ReducedFTL/ReducedFTL.c&apos;, u&apos;Tools/ReducedFTL/build.sh&apos;]&quot; exit_code: 1
Tools/ReducedFTL/ReducedFTL.c:45:  Alphabetical sorting problem.  [build/include_order] [4]
Tools/ReducedFTL/ReducedFTL.c:152:  Declaration has space between * and variable name in LLVMModuleRef* modules  [whitespace/declaration] [3]
Total errors found: 2 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908194</commentid>
    <comment_count>10</comment_count>
      <attachid>206618</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-07-13 12:21:40 -0700</bug_when>
    <thetext>Created attachment 206618
the patch

Added options to experiment with contexts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908195</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-13 12:24:26 -0700</bug_when>
    <thetext>Attachment 206618 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/ReducedFTL/ReducedFTL.c&apos;, u&apos;Tools/ReducedFTL/build.sh&apos;]&quot; exit_code: 1
Tools/ReducedFTL/ReducedFTL.c:45:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908631</commentid>
    <comment_count>12</comment_count>
      <attachid>206618</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-07-15 19:27:05 -0700</bug_when>
    <thetext>Comment on attachment 206618
the patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909000</commentid>
    <comment_count>13</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-07-16 13:36:30 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/152738</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206609</attachid>
            <date>2013-07-13 09:40:22 -0700</date>
            <delta_ts>2013-07-13 09:45:49 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>11263</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1MjYxMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDEzLTA3LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisK
KyAgICAgICAgZm91cnRoVGllcjogV2Ugc2hvdWxkIGhhdmUgYSByZWR1Y2VkIEZUTCBMTFZNIHBp
cGVsaW5lIHRvb2wgaW4gdGhlIHJlcG9zaXRvcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExODY0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkIGEgdG9vbCB0aGF0IHRha2VzIGluIGFu
IExMVk0gYml0Y29kZSBmaWxlIGFuZCBKSVRzIGl0IGluIGV4YWN0bHkgdGhlIHNhbWUKKyAgICAg
ICAgd2F5IHRoYXQgdGhlIEZUTCB3b3VsZC4KKworICAgICAgICAqIFJlZHVjZWRGVEw6IEFkZGVk
LgorICAgICAgICAqIFJlZHVjZWRGVEwvUmVkdWNlZEZUTC5jOiBBZGRlZC4KKyAgICAgICAgKE1l
bW9yeVNlY3Rpb24pOgorICAgICAgICAobW1BbGxvY2F0ZUNvZGVTZWN0aW9uKToKKyAgICAgICAg
KG1tQWxsb2NhdGVEYXRhU2VjdGlvbik6CisgICAgICAgIChtbUFwcGx5UGVybWlzc2lvbnMpOgor
ICAgICAgICAobW1EZXN0cm95KToKKyAgICAgICAgKHN5bWJvbExvb2t1cENhbGxiYWNrKToKKyAg
ICAgICAgKG1haW4pOgorICAgICAgICAqIFJlZHVjZWRGVEwvYnVpbGQuc2g6IEFkZGVkLgorCiAy
MDEzLTA2LTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgTWVy
Z2UgdHJ1bmsgcjE0NjU0OC4KSW5kZXg6IFRvb2xzL1JlZHVjZWRGVEwvUmVkdWNlZEZUTC5jCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1JlZHVjZWRGVEwvUmVkdWNlZEZUTC5jCShyZXZpc2lvbiAwKQor
KysgVG9vbHMvUmVkdWNlZEZUTC9SZWR1Y2VkRlRMLmMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwyNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
Ly8gU2ltcGxlIHRvb2wgdGhhdCB0YWtlcyBzb21lIExMVk0gYml0Y29kZSBhcyBpbnB1dCBhbmQg
IkpJVHMiIGl0LCBpbiB0aGUKKy8vIHNhbWUgd2F5IHRoYXQgdGhlIEZUTCB3b3VsZCB1c2UgTExW
TSB0byBKSVQgdGhlIElSIHRoYXQgaXQgZ2VuZXJhdGVzLgorLy8gVGhpcyBpcyBtZWFudCBmb3Ig
dXNlIGFzIGEgcmVkdWN0aW9uIHdoZW4gY29tbXVuaWNhdGluZyB0byBMTFZNZXJzCisvLyBhYm91
dCBidWdzLCBhbmQgZm9yIHF1aWNrICJ3aGF0LWlmIiB0ZXN0aW5nIHRvIHNlZSBob3cgb3VyIG9w
dGltaXphdGlvbgorLy8gcGlwZWxpbmUgcGVyZm9ybXMuIEJlY2F1c2Ugb2YgaXRzIHVzZSBhcyBh
IHJlZHVjdGlvbiwgdGhpcyB0b29sIGlzCisvLyBpbnRlbnRpb25hbGx5IHN0YW5kYWxvbmUgYW5k
IGl0IHdvdWxkIGJlIGdyZWF0IGlmIGl0IGNvbnRpbnVlcyB0byBmaXQKKy8vIGluIG9uZSBmaWxl
LgorCisjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRl
IDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN5cy9tbWFuLmg+Cisj
aW5jbHVkZSA8dW5pc3RkLmg+CisKKyNpbmNsdWRlIDxsbHZtLWMvQW5hbHlzaXMuaD4KKyNpbmNs
dWRlIDxsbHZtLWMvQml0UmVhZGVyLmg+CisjaW5jbHVkZSA8bGx2bS1jL0NvcmUuaD4KKyNpbmNs
dWRlIDxsbHZtLWMvRGlzYXNzZW1ibGVyLmg+CisjaW5jbHVkZSA8bGx2bS1jL0V4ZWN1dGlvbkVu
Z2luZS5oPgorI2luY2x1ZGUgPGxsdm0tYy9UYXJnZXQuaD4KKyNpbmNsdWRlIDxsbHZtLWMvVHJh
bnNmb3Jtcy9QYXNzTWFuYWdlckJ1aWxkZXIuaD4KKyNpbmNsdWRlIDxsbHZtLWMvVHJhbnNmb3Jt
cy9TY2FsYXIuaD4KKworc3RydWN0IE1lbW9yeVNlY3Rpb24geworICAgIHVpbnQ4X3QqIHN0YXJ0
OworICAgIHNpemVfdCBzaXplOworICAgIHN0cnVjdCBNZW1vcnlTZWN0aW9uKiBuZXh0OworfTsK
Kworc3RhdGljIHN0cnVjdCBNZW1vcnlTZWN0aW9uKiBzZWN0aW9uSGVhZDsKKworc3RhdGljIHVp
bnQ4X3QqIG1tQWxsb2NhdGVDb2RlU2VjdGlvbigKKyAgICB2b2lkKiBvcGFxdWVTdGF0ZSwgdWlu
dHB0cl90IHNpemUsIHVuc2lnbmVkIGFsaWdubWVudCwgdW5zaWduZWQgc2VjdGlvbklEKQorewor
ICAgIHNpemVfdCBwYWdlU2l6ZSA9IGdldHBhZ2VzaXplKCk7CisgICAgCisgICAgdWludDhfdCog
c3RhcnQgPSBtbWFwKDAsIChzaXplICsgcGFnZVNpemUgLSAxKSAmIH5wYWdlU2l6ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgUFJPVF9XUklURSB8IFBST1RfUkVBRCB8IFBST1RfRVhFQywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgTUFQX0FOT04gfCBNQVBfUFJJVkFURSwgLTEsIDAp
OworICAgIGlmIChzdGFydCA9PSAodWludDhfdCopLTEpIHsKKyAgICAgICAgZnByaW50ZihzdGRl
cnIsICJVbmFibGUgdG8gYWxsb2NhdGUgJSIgUFJJdVBUUiAiIGJ5dGVzIG9mIGV4ZWN1dGFibGUg
bWVtb3J5LlxuIiwgc2l6ZSk7CisgICAgICAgIGV4aXQoMSk7CisgICAgfQorICAgIAorICAgIHN0
cnVjdCBNZW1vcnlTZWN0aW9uKiBzZWN0aW9uID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgTWVtb3J5
U2VjdGlvbikpOworICAgIHNlY3Rpb24tPnN0YXJ0ID0gc3RhcnQ7CisgICAgc2VjdGlvbi0+c2l6
ZSA9IHNpemU7CisgICAgc2VjdGlvbi0+bmV4dCA9IHNlY3Rpb25IZWFkOworICAgIHNlY3Rpb25I
ZWFkID0gc2VjdGlvbjsKKworICAgIHJldHVybiBzdGFydDsKK30KKworc3RhdGljIHVpbnQ4X3Qq
IG1tQWxsb2NhdGVEYXRhU2VjdGlvbigKKyAgICB2b2lkKiBvcGFxdWVTdGF0ZSwgdWludHB0cl90
IHNpemUsIHVuc2lnbmVkIGFsaWdubWVudCwgdW5zaWduZWQgc2VjdGlvbklELAorICAgIExMVk1C
b29sIGlzUmVhZE9ubHkpCit7CisgICAgcmV0dXJuIG1tQWxsb2NhdGVDb2RlU2VjdGlvbihvcGFx
dWVTdGF0ZSwgc2l6ZSwgYWxpZ25tZW50LCBzZWN0aW9uSUQpOworfQorCitzdGF0aWMgTExWTUJv
b2wgbW1BcHBseVBlcm1pc3Npb25zKHZvaWQqIG9wYXF1ZSwgY2hhcioqIG1lc3NhZ2UpCit7Cisg
ICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIG1tRGVzdHJveSh2b2lkKiBvcGFxdWUpCit7
Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICpzeW1ib2xMb29rdXBDYWxsYmFjaygKKyAgICB2b2lk
KiBvcGFxdWUsIHVpbnQ2NF90IHJlZmVyZW5jZVZhbHVlLCB1aW50NjRfdCogcmVmZXJlbmNlVHlw
ZSwgdWludDY0X3QgcmVmZXJlbmNlUEMsCisgICAgY29uc3QgY2hhcioqIHJlZmVyZW5jZU5hbWUp
Cit7CisgICAgc3RhdGljIGNoYXIgc3ltYm9sU3RyaW5nWzIwXTsKKyAgICAKKyAgICBzd2l0Y2gg
KCpyZWZlcmVuY2VUeXBlKSB7CisgICAgY2FzZSBMTFZNRGlzYXNzZW1ibGVyX1JlZmVyZW5jZVR5
cGVfSW5PdXRfTm9uZToKKyAgICAgICAgcmV0dXJuIDA7CisgICAgY2FzZSBMTFZNRGlzYXNzZW1i
bGVyX1JlZmVyZW5jZVR5cGVfSW5fQnJhbmNoOgorICAgICAgICAqcmVmZXJlbmNlTmFtZSA9IDA7
CisgICAgICAgICpyZWZlcmVuY2VUeXBlID0gTExWTURpc2Fzc2VtYmxlcl9SZWZlcmVuY2VUeXBl
X0luT3V0X05vbmU7CisgICAgICAgIHNucHJpbnRmKAorICAgICAgICAgICAgc3ltYm9sU3RyaW5n
LCBzaXplb2Yoc3ltYm9sU3RyaW5nKSwgIjB4JWx4IiwKKyAgICAgICAgICAgICh1bnNpZ25lZCBs
b25nKXJlZmVyZW5jZVZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHN5bWJvbFN0cmluZzsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVuZXhwZWN0ZWQgcmVmZXJlbmNlIHR5
cGUhXG4iKTsKKyAgICAgICAgZXhpdCgxKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQor
CitpbnQgbWFpbihpbnQgYywgY2hhcioqIHYpIHsKKyAgICBMTFZNRGlzYXNtQ29udGV4dFJlZiBk
aXNhc3NlbWJsZXI7CisgICAgTExWTUV4ZWN1dGlvbkVuZ2luZVJlZiBlbmdpbmU7CisgICAgc3Ry
dWN0IExMVk1NQ0pJVENvbXBpbGVyT3B0aW9ucyBvcHRpb25zOworICAgIExMVk1NZW1vcnlCdWZm
ZXJSZWYgYnVmZmVyOworICAgIExMVk1Nb2R1bGVSZWYgbW9kdWxlOworICAgIExMVk1WYWx1ZVJl
ZiB2YWx1ZTsKKyAgICBzdHJ1Y3QgTWVtb3J5U2VjdGlvbiogc2VjdGlvbjsKKyAgICBjaGFyKiBl
cnJvcjsKKyAgICBjb25zdCBjaGFyKiBtb2RlOworICAgIGNvbnN0IGNoYXIqIGZpbGVuYW1lOwor
ICAgIExMVk1QYXNzTWFuYWdlclJlZiBmdW5jdGlvblBhc3NlcyA9IDA7CisgICAgTExWTVBhc3NN
YW5hZ2VyUmVmIG1vZHVsZVBhc3NlcyA9IDA7CisgICAgCisgICAgTExWTUxpbmtJbk1DSklUKCk7
CisgICAgTExWTUluaXRpYWxpemVOYXRpdmVUYXJnZXQoKTsKKyAgICBMTFZNSW5pdGlhbGl6ZVg4
NkFzbVByaW50ZXIoKTsKKyAgICBMTFZNSW5pdGlhbGl6ZVg4NkRpc2Fzc2VtYmxlcigpOworCisg
ICAgaWYgKGMgIT0gMykgeworICAgICAgICBwcmludGYoIlVzYWdlOiBSZWR1Y2VkRlRMIDxtb2Rl
PiA8ZmlsZT5cbiIpOworICAgICAgICBleGl0KDEpOworICAgIH0KKyAgICAKKyAgICBtb2RlID0g
dlsxXTsKKyAgICBmaWxlbmFtZSA9IHZbMl07CisgICAgCisgICAgaWYgKExMVk1DcmVhdGVNZW1v
cnlCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoZmlsZW5hbWUsICZidWZmZXIsICZlcnJvcikpIHsK
KyAgICAgICAgZnByaW50ZihzdGRlcnIsICJFcnJvciByZWFkaW5nIGZpbGUgJXM6ICVzXG4iLCBm
aWxlbmFtZSwgZXJyb3IpOworICAgICAgICBleGl0KDEpOworICAgIH0KKyAgICAKKyAgICBpZiAo
TExWTVBhcnNlQml0Y29kZShidWZmZXIsICZtb2R1bGUsICZlcnJvcikpIHsKKyAgICAgICAgZnBy
aW50ZihzdGRlcnIsICJFcnJvciBwYXJzaW5nIGZpbGUgJXM6ICVzXG4iLCBmaWxlbmFtZSwgZXJy
b3IpOworICAgICAgICBleGl0KDEpOworICAgIH0KKworICAgIHByaW50ZigiTW9kdWxlIGFmdGVy
IHBhcnNpbmc6XG4iKTsKKyAgICBMTFZNRHVtcE1vZHVsZShtb2R1bGUpOworCisgICAgTExWTUlu
aXRpYWxpemVNQ0pJVENvbXBpbGVyT3B0aW9ucygmb3B0aW9ucywgc2l6ZW9mKG9wdGlvbnMpKTsK
KyAgICBvcHRpb25zLk9wdExldmVsID0gMjsKKyAgICBvcHRpb25zLkVuYWJsZUZhc3RJU2VsID0g
MDsKKyAgICBvcHRpb25zLk1DSk1NID0gTExWTUNyZWF0ZVNpbXBsZU1DSklUTWVtb3J5TWFuYWdl
cigKKyAgICAgICAgMCwgbW1BbGxvY2F0ZUNvZGVTZWN0aW9uLCBtbUFsbG9jYXRlRGF0YVNlY3Rp
b24sIG1tQXBwbHlQZXJtaXNzaW9ucywgbW1EZXN0cm95KTsKKyAgICAKKyAgICBpZiAoTExWTUNy
ZWF0ZU1DSklUQ29tcGlsZXJGb3JNb2R1bGUoCisgICAgICAgICAgICAmZW5naW5lLCBtb2R1bGUs
ICZvcHRpb25zLCBzaXplb2Yob3B0aW9ucyksICZlcnJvcikpIHsKKyAgICAgICAgZnByaW50Zihz
dGRlcnIsICJFcnJvciBidWlsZGluZyBNQ0pJVDogJXNcbiIsIGVycm9yKTsKKyAgICAgICAgZXhp
dCgxKTsKKyAgICB9CisgICAgCisgICAgaWYgKCFzdHJjYXNlY21wKG1vZGUsICJzaW1wbGUiKSkg
eworICAgICAgICBtb2R1bGVQYXNzZXMgPSBMTFZNQ3JlYXRlUGFzc01hbmFnZXIoKTsKKyAgICAg
ICAgTExWTUFkZFRhcmdldERhdGEoTExWTUdldEV4ZWN1dGlvbkVuZ2luZVRhcmdldERhdGEoZW5n
aW5lKSwgbW9kdWxlUGFzc2VzKTsKKyAgICAgICAgTExWTUFkZENvbnN0YW50UHJvcGFnYXRpb25Q
YXNzKG1vZHVsZVBhc3Nlcyk7CisgICAgICAgIExMVk1BZGRJbnN0cnVjdGlvbkNvbWJpbmluZ1Bh
c3MobW9kdWxlUGFzc2VzKTsKKyAgICAgICAgTExWTUFkZFByb21vdGVNZW1vcnlUb1JlZ2lzdGVy
UGFzcyhtb2R1bGVQYXNzZXMpOworICAgICAgICBMTFZNQWRkQmFzaWNBbGlhc0FuYWx5c2lzUGFz
cyhtb2R1bGVQYXNzZXMpOworICAgICAgICBMTFZNQWRkVHlwZUJhc2VkQWxpYXNBbmFseXNpc1Bh
c3MobW9kdWxlUGFzc2VzKTsKKyAgICAgICAgTExWTUFkZEdWTlBhc3MobW9kdWxlUGFzc2VzKTsK
KyAgICAgICAgTExWTUFkZENGR1NpbXBsaWZpY2F0aW9uUGFzcyhtb2R1bGVQYXNzZXMpOworICAg
ICAgICBMTFZNUnVuUGFzc01hbmFnZXIobW9kdWxlUGFzc2VzLCBtb2R1bGUpOworICAgIH0gZWxz
ZSBpZiAoIXN0cmNhc2VjbXAobW9kZSwgIm9wdCIpKSB7CisgICAgICAgIExMVk1QYXNzTWFuYWdl
ckJ1aWxkZXJSZWYgcGFzc0J1aWxkZXI7CisKKyAgICAgICAgcGFzc0J1aWxkZXIgPSBMTFZNUGFz
c01hbmFnZXJCdWlsZGVyQ3JlYXRlKCk7CisgICAgICAgIExMVk1QYXNzTWFuYWdlckJ1aWxkZXJT
ZXRPcHRMZXZlbChwYXNzQnVpbGRlciwgMik7CisgICAgICAgIExMVk1QYXNzTWFuYWdlckJ1aWxk
ZXJTZXRTaXplTGV2ZWwocGFzc0J1aWxkZXIsIDApOworICAgICAgICAKKyAgICAgICAgZnVuY3Rp
b25QYXNzZXMgPSBMTFZNQ3JlYXRlRnVuY3Rpb25QYXNzTWFuYWdlckZvck1vZHVsZShtb2R1bGUp
OworICAgICAgICBtb2R1bGVQYXNzZXMgPSBMTFZNQ3JlYXRlUGFzc01hbmFnZXIoKTsKKyAgICAg
ICAgCisgICAgICAgIExMVk1BZGRUYXJnZXREYXRhKExMVk1HZXRFeGVjdXRpb25FbmdpbmVUYXJn
ZXREYXRhKGVuZ2luZSksIG1vZHVsZVBhc3Nlcyk7CisgICAgICAgIAorICAgICAgICBMTFZNUGFz
c01hbmFnZXJCdWlsZGVyUG9wdWxhdGVGdW5jdGlvblBhc3NNYW5hZ2VyKHBhc3NCdWlsZGVyLCBm
dW5jdGlvblBhc3Nlcyk7CisgICAgICAgIExMVk1QYXNzTWFuYWdlckJ1aWxkZXJQb3B1bGF0ZU1v
ZHVsZVBhc3NNYW5hZ2VyKHBhc3NCdWlsZGVyLCBtb2R1bGVQYXNzZXMpOworICAgICAgICAKKyAg
ICAgICAgTExWTVBhc3NNYW5hZ2VyQnVpbGRlckRpc3Bvc2UocGFzc0J1aWxkZXIpOworICAgICAg
ICAKKyAgICAgICAgTExWTUluaXRpYWxpemVGdW5jdGlvblBhc3NNYW5hZ2VyKGZ1bmN0aW9uUGFz
c2VzKTsKKyAgICAgICAgZm9yICh2YWx1ZSA9IExMVk1HZXRGaXJzdEZ1bmN0aW9uKG1vZHVsZSk7
IHZhbHVlOyB2YWx1ZSA9IExMVk1HZXROZXh0RnVuY3Rpb24odmFsdWUpKQorICAgICAgICAgICAg
TExWTVJ1bkZ1bmN0aW9uUGFzc01hbmFnZXIoZnVuY3Rpb25QYXNzZXMsIHZhbHVlKTsKKyAgICAg
ICAgTExWTUZpbmFsaXplRnVuY3Rpb25QYXNzTWFuYWdlcihmdW5jdGlvblBhc3Nlcyk7CisgICAg
ICAgIAorICAgICAgICBMTFZNUnVuUGFzc01hbmFnZXIobW9kdWxlUGFzc2VzLCBtb2R1bGUpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQmFkIG9wdGltaXphdGlvbiBt
b2RlOiAlcy5cbiIsIG1vZGUpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlZhbGlkIG1vZGVz
IGFyZTogXCJzaW1wbGVcIiBvciBcIm9wdFwiLlxuIik7CisgICAgICAgIGV4aXQoMSk7CisgICAg
fQorCisgICAgcHJpbnRmKCJNb2R1bGUgYWZ0ZXIgb3B0aW1pemF0aW9uOlxuIik7CisgICAgTExW
TUR1bXBNb2R1bGUobW9kdWxlKTsKKyAgICAKKyAgICBmb3IgKHZhbHVlID0gTExWTUdldEZpcnN0
RnVuY3Rpb24obW9kdWxlKTsgdmFsdWU7IHZhbHVlID0gTExWTUdldE5leHRGdW5jdGlvbih2YWx1
ZSkpIHsKKyAgICAgICAgaWYgKExMVk1Jc0RlY2xhcmF0aW9uKHZhbHVlKSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICBMTFZNR2V0UG9pbnRlclRvR2xvYmFsKGVuZ2luZSwgdmFsdWUp
OworICAgIH0KKworICAgIGlmIChmdW5jdGlvblBhc3NlcykKKyAgICAgICAgTExWTURpc3Bvc2VQ
YXNzTWFuYWdlcihmdW5jdGlvblBhc3Nlcyk7CisgICAgaWYgKG1vZHVsZVBhc3NlcykKKyAgICAg
ICAgTExWTURpc3Bvc2VQYXNzTWFuYWdlcihtb2R1bGVQYXNzZXMpOworICAgIAorICAgIExMVk1E
aXNwb3NlRXhlY3V0aW9uRW5naW5lKGVuZ2luZSk7CisgICAgCisgICAgZGlzYXNzZW1ibGVyID0g
TExWTUNyZWF0ZURpc2FzbSgieDg2XzY0LWFwcGxlLWRhcndpbiIsIDAsIDAsIDAsIHN5bWJvbExv
b2t1cENhbGxiYWNrKTsKKyAgICBpZiAoIWRpc2Fzc2VtYmxlcikgeworICAgICAgICBmcHJpbnRm
KHN0ZGVyciwgIkVycm9yIGJ1aWxkaW5nIGRpc2Fzc2VtYmxlci5cbiIpOworICAgICAgICBleGl0
KDEpOworICAgIH0KKyAgICAKKyAgICBmb3IgKHNlY3Rpb24gPSBzZWN0aW9uSGVhZDsgc2VjdGlv
bjsgc2VjdGlvbiA9IHNlY3Rpb24tPm5leHQpIHsKKyAgICAgICAgcHJpbnRmKCJEaXNhc3NlbWJs
eSBmb3Igc2VjdGlvbiAlcDpcbiIsIHNlY3Rpb24pOworICAgICAgICAKKyAgICAgICAgY2hhciBw
Y1N0cmluZ1syMF07CisgICAgICAgIGNoYXIgaW5zdHJ1Y3Rpb25TdHJpbmdbMTAwMF07CisgICAg
ICAgIHVpbnQ4X3QqIHBjOworICAgICAgICB1aW50OF90KiBlbmQ7CisgICAgICAgIAorICAgICAg
ICBwYyA9IHNlY3Rpb24tPnN0YXJ0OworICAgICAgICBlbmQgPSBwYyArIHNlY3Rpb24tPnNpemU7
CisgICAgICAgIAorICAgICAgICB3aGlsZSAocGMgPCBlbmQpIHsKKyAgICAgICAgICAgIHNucHJp
bnRmKAorICAgICAgICAgICAgICAgIHBjU3RyaW5nLCBzaXplb2YocGNTdHJpbmcpLCAiMHglbHgi
LAorICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSh1aW50cHRyX3QpcGMpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBzaXplX3QgaW5zdHJ1Y3Rpb25TaXplID0gTExWTURpc2FzbUlu
c3RydWN0aW9uKAorICAgICAgICAgICAgICAgIGRpc2Fzc2VtYmxlciwgcGMsIGVuZCAtIHBjLCAo
dWludHB0cl90KXBjLAorICAgICAgICAgICAgICAgIGluc3RydWN0aW9uU3RyaW5nLCBzaXplb2Yo
aW5zdHJ1Y3Rpb25TdHJpbmcpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFpbnN0
cnVjdGlvblNpemUpCisgICAgICAgICAgICAgICAgc25wcmludGYoaW5zdHJ1Y3Rpb25TdHJpbmcs
IHNpemVvZihpbnN0cnVjdGlvblN0cmluZyksICIuYnl0ZSAweCUwMngiLCAqcGMrKyk7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcGMgKz0gaW5zdHJ1Y3Rpb25TaXplOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBwcmludGYoIiAgICAlMTZzOiAlc1xuIiwgcGNTdHJpbmcs
IGluc3RydWN0aW9uU3RyaW5nKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4g
MDsKK30KKwpJbmRleDogVG9vbHMvUmVkdWNlZEZUTC9idWlsZC5zaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9SZWR1Y2VkRlRML2J1aWxkLnNoCShyZXZpc2lvbiAwKQorKysgVG9vbHMvUmVkdWNlZEZU
TC9idWlsZC5zaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACisjIS9iaW4vc2gKKwor
c2V0IC1lCitzZXQgLXgKKworaWYgdGVzdCAieCR7TExWTV9QQVRIfSIgPT0gIngiCit0aGVuCisg
ICAgY29uZmlnUGF0aD0ibGx2bS1jb25maWciCitlbHNlCisgICAgY29uZmlnUGF0aD0iJHtMTFZN
X1BBVEh9L2Jpbi9sbHZtLWNvbmZpZyIKK2ZpCisKK2NsYW5nIC1jIC1vIFJlZHVjZWRGVEwubyBS
ZWR1Y2VkRlRMLmMgYCR7Y29uZmlnUGF0aH0gLS1jcHBmbGFncyAtLWNmbGFnc2AKK2NsYW5nKysg
LW8gUmVkdWNlZEZUTCBSZWR1Y2VkRlRMLm8gLXN0ZGxpYj1saWJjKysgYCR7Y29uZmlnUGF0aH0g
LS1sZGZsYWdzIC0tbGlic2AKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL1JlZHVjZWRGVEwv
YnVpbGQuc2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKIyMgLTAsMCArMSAjIwor
KgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206610</attachid>
            <date>2013-07-13 09:45:49 -0700</date>
            <delta_ts>2013-07-13 09:46:38 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>11238</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1MjYxMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDEzLTA3LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisK
KyAgICAgICAgZm91cnRoVGllcjogV2Ugc2hvdWxkIGhhdmUgYSByZWR1Y2VkIEZUTCBMTFZNIHBp
cGVsaW5lIHRvb2wgaW4gdGhlIHJlcG9zaXRvcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExODY0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkIGEgdG9vbCB0aGF0IHRha2VzIGluIGFu
IExMVk0gYml0Y29kZSBmaWxlIGFuZCBKSVRzIGl0IGluIGV4YWN0bHkgdGhlIHNhbWUKKyAgICAg
ICAgd2F5IHRoYXQgdGhlIEZUTCB3b3VsZC4KKworICAgICAgICAqIFJlZHVjZWRGVEw6IEFkZGVk
LgorICAgICAgICAqIFJlZHVjZWRGVEwvUmVkdWNlZEZUTC5jOiBBZGRlZC4KKyAgICAgICAgKE1l
bW9yeVNlY3Rpb24pOgorICAgICAgICAobW1BbGxvY2F0ZUNvZGVTZWN0aW9uKToKKyAgICAgICAg
KG1tQWxsb2NhdGVEYXRhU2VjdGlvbik6CisgICAgICAgIChtbUFwcGx5UGVybWlzc2lvbnMpOgor
ICAgICAgICAobW1EZXN0cm95KToKKyAgICAgICAgKHN5bWJvbExvb2t1cENhbGxiYWNrKToKKyAg
ICAgICAgKG1haW4pOgorICAgICAgICAqIFJlZHVjZWRGVEwvYnVpbGQuc2g6IEFkZGVkLgorCiAy
MDEzLTA2LTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgTWVy
Z2UgdHJ1bmsgcjE0NjU0OC4KSW5kZXg6IFRvb2xzL1JlZHVjZWRGVEwvUmVkdWNlZEZUTC5jCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1JlZHVjZWRGVEwvUmVkdWNlZEZUTC5jCShyZXZpc2lvbiAwKQor
KysgVG9vbHMvUmVkdWNlZEZUTC9SZWR1Y2VkRlRMLmMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwyNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
Ly8gU2ltcGxlIHRvb2wgdGhhdCB0YWtlcyBzb21lIExMVk0gYml0Y29kZSBhcyBpbnB1dCBhbmQg
IkpJVHMiIGl0LCBpbiB0aGUKKy8vIHNhbWUgd2F5IHRoYXQgdGhlIEZUTCB3b3VsZCB1c2UgTExW
TSB0byBKSVQgdGhlIElSIHRoYXQgaXQgZ2VuZXJhdGVzLgorLy8gVGhpcyBpcyBtZWFudCBmb3Ig
dXNlIGFzIGEgcmVkdWN0aW9uIHdoZW4gY29tbXVuaWNhdGluZyB0byBMTFZNZXJzCisvLyBhYm91
dCBidWdzLCBhbmQgZm9yIHF1aWNrICJ3aGF0LWlmIiB0ZXN0aW5nIHRvIHNlZSBob3cgb3VyIG9w
dGltaXphdGlvbgorLy8gcGlwZWxpbmUgcGVyZm9ybXMuIEJlY2F1c2Ugb2YgaXRzIHVzZSBhcyBh
IHJlZHVjdGlvbiwgdGhpcyB0b29sIGlzCisvLyBpbnRlbnRpb25hbGx5IHN0YW5kYWxvbmUgYW5k
IGl0IHdvdWxkIGJlIGdyZWF0IGlmIGl0IGNvbnRpbnVlcyB0byBmaXQKKy8vIGluIG9uZSBmaWxl
LgorCisjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUg
PHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN5cy9tbWFuLmg+Cisj
aW5jbHVkZSA8dW5pc3RkLmg+CisKKyNpbmNsdWRlIDxsbHZtLWMvQW5hbHlzaXMuaD4KKyNpbmNs
dWRlIDxsbHZtLWMvQml0UmVhZGVyLmg+CisjaW5jbHVkZSA8bGx2bS1jL0NvcmUuaD4KKyNpbmNs
dWRlIDxsbHZtLWMvRGlzYXNzZW1ibGVyLmg+CisjaW5jbHVkZSA8bGx2bS1jL0V4ZWN1dGlvbkVu
Z2luZS5oPgorI2luY2x1ZGUgPGxsdm0tYy9UYXJnZXQuaD4KKyNpbmNsdWRlIDxsbHZtLWMvVHJh
bnNmb3Jtcy9QYXNzTWFuYWdlckJ1aWxkZXIuaD4KKyNpbmNsdWRlIDxsbHZtLWMvVHJhbnNmb3Jt
cy9TY2FsYXIuaD4KKworc3RydWN0IE1lbW9yeVNlY3Rpb24geworICAgIHVpbnQ4X3QgKnN0YXJ0
OworICAgIHNpemVfdCBzaXplOworICAgIHN0cnVjdCBNZW1vcnlTZWN0aW9uICpuZXh0OworfTsK
Kworc3RhdGljIHN0cnVjdCBNZW1vcnlTZWN0aW9uKiBzZWN0aW9uSGVhZDsKKworc3RhdGljIHVp
bnQ4X3QgKm1tQWxsb2NhdGVDb2RlU2VjdGlvbigKKyAgICB2b2lkICpvcGFxdWVTdGF0ZSwgdWlu
dHB0cl90IHNpemUsIHVuc2lnbmVkIGFsaWdubWVudCwgdW5zaWduZWQgc2VjdGlvbklEKQorewor
ICAgIHNpemVfdCBwYWdlU2l6ZSA9IGdldHBhZ2VzaXplKCk7CisgICAgCisgICAgdWludDhfdCAq
c3RhcnQgPSBtbWFwKAorICAgICAgICAwLCAoc2l6ZSArIHBhZ2VTaXplIC0gMSkgJiB+cGFnZVNp
emUsIAorICAgICAgICBQUk9UX1dSSVRFIHwgUFJPVF9SRUFEIHwgUFJPVF9FWEVDLAorICAgICAg
ICBNQVBfQU5PTiB8IE1BUF9QUklWQVRFLCAtMSwgMCk7CisgICAgaWYgKHN0YXJ0ID09ICh1aW50
OF90KiktMSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVuYWJsZSB0byBhbGxvY2F0ZSAl
IiBQUkl1UFRSICIgYnl0ZXMgb2YgZXhlY3V0YWJsZSBtZW1vcnkuXG4iLCBzaXplKTsKKyAgICAg
ICAgZXhpdCgxKTsKKyAgICB9CisgICAgCisgICAgc3RydWN0IE1lbW9yeVNlY3Rpb24gKnNlY3Rp
b24gPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBNZW1vcnlTZWN0aW9uKSk7CisgICAgc2VjdGlvbi0+
c3RhcnQgPSBzdGFydDsKKyAgICBzZWN0aW9uLT5zaXplID0gc2l6ZTsKKyAgICBzZWN0aW9uLT5u
ZXh0ID0gc2VjdGlvbkhlYWQ7CisgICAgc2VjdGlvbkhlYWQgPSBzZWN0aW9uOworCisgICAgcmV0
dXJuIHN0YXJ0OworfQorCitzdGF0aWMgdWludDhfdCAqbW1BbGxvY2F0ZURhdGFTZWN0aW9uKAor
ICAgIHZvaWQgKm9wYXF1ZVN0YXRlLCB1aW50cHRyX3Qgc2l6ZSwgdW5zaWduZWQgYWxpZ25tZW50
LCB1bnNpZ25lZCBzZWN0aW9uSUQsCisgICAgTExWTUJvb2wgaXNSZWFkT25seSkKK3sKKyAgICBy
ZXR1cm4gbW1BbGxvY2F0ZUNvZGVTZWN0aW9uKG9wYXF1ZVN0YXRlLCBzaXplLCBhbGlnbm1lbnQs
IHNlY3Rpb25JRCk7Cit9CisKK3N0YXRpYyBMTFZNQm9vbCBtbUFwcGx5UGVybWlzc2lvbnModm9p
ZCAqb3BhcXVlLCBjaGFyICoqbWVzc2FnZSkKK3sKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGlj
IHZvaWQgbW1EZXN0cm95KHZvaWQgKm9wYXF1ZSkKK3sKK30KKworc3RhdGljIGNvbnN0IGNoYXIg
KnN5bWJvbExvb2t1cENhbGxiYWNrKAorICAgIHZvaWQgKm9wYXF1ZSwgdWludDY0X3QgcmVmZXJl
bmNlVmFsdWUsIHVpbnQ2NF90ICpyZWZlcmVuY2VUeXBlLCB1aW50NjRfdCByZWZlcmVuY2VQQywK
KyAgICBjb25zdCBjaGFyICoqcmVmZXJlbmNlTmFtZSkKK3sKKyAgICBzdGF0aWMgY2hhciBzeW1i
b2xTdHJpbmdbMjBdOworICAgIAorICAgIHN3aXRjaCAoKnJlZmVyZW5jZVR5cGUpIHsKKyAgICBj
YXNlIExMVk1EaXNhc3NlbWJsZXJfUmVmZXJlbmNlVHlwZV9Jbk91dF9Ob25lOgorICAgICAgICBy
ZXR1cm4gMDsKKyAgICBjYXNlIExMVk1EaXNhc3NlbWJsZXJfUmVmZXJlbmNlVHlwZV9Jbl9CcmFu
Y2g6CisgICAgICAgICpyZWZlcmVuY2VOYW1lID0gMDsKKyAgICAgICAgKnJlZmVyZW5jZVR5cGUg
PSBMTFZNRGlzYXNzZW1ibGVyX1JlZmVyZW5jZVR5cGVfSW5PdXRfTm9uZTsKKyAgICAgICAgc25w
cmludGYoCisgICAgICAgICAgICBzeW1ib2xTdHJpbmcsIHNpemVvZihzeW1ib2xTdHJpbmcpLCAi
MHglbHgiLAorICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpcmVmZXJlbmNlVmFsdWUpOworICAg
ICAgICByZXR1cm4gc3ltYm9sU3RyaW5nOworICAgIGRlZmF1bHQ6CisgICAgICAgIGZwcmludGYo
c3RkZXJyLCAiVW5leHBlY3RlZCByZWZlcmVuY2UgdHlwZSFcbiIpOworICAgICAgICBleGl0KDEp
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK2ludCBtYWluKGludCBjLCBjaGFyICoq
dikgeworICAgIExMVk1EaXNhc21Db250ZXh0UmVmIGRpc2Fzc2VtYmxlcjsKKyAgICBMTFZNRXhl
Y3V0aW9uRW5naW5lUmVmIGVuZ2luZTsKKyAgICBzdHJ1Y3QgTExWTU1DSklUQ29tcGlsZXJPcHRp
b25zIG9wdGlvbnM7CisgICAgTExWTU1lbW9yeUJ1ZmZlclJlZiBidWZmZXI7CisgICAgTExWTU1v
ZHVsZVJlZiBtb2R1bGU7CisgICAgTExWTVZhbHVlUmVmIHZhbHVlOworICAgIHN0cnVjdCBNZW1v
cnlTZWN0aW9uICpzZWN0aW9uOworICAgIGNoYXIgKmVycm9yOworICAgIGNvbnN0IGNoYXIgKm1v
ZGU7CisgICAgY29uc3QgY2hhciAqZmlsZW5hbWU7CisgICAgTExWTVBhc3NNYW5hZ2VyUmVmIGZ1
bmN0aW9uUGFzc2VzID0gMDsKKyAgICBMTFZNUGFzc01hbmFnZXJSZWYgbW9kdWxlUGFzc2VzID0g
MDsKKyAgICAKKyAgICBMTFZNTGlua0luTUNKSVQoKTsKKyAgICBMTFZNSW5pdGlhbGl6ZU5hdGl2
ZVRhcmdldCgpOworICAgIExMVk1Jbml0aWFsaXplWDg2QXNtUHJpbnRlcigpOworICAgIExMVk1J
bml0aWFsaXplWDg2RGlzYXNzZW1ibGVyKCk7CisKKyAgICBpZiAoYyAhPSAzKSB7CisgICAgICAg
IHByaW50ZigiVXNhZ2U6IFJlZHVjZWRGVEwgPG1vZGU+IDxmaWxlPlxuIik7CisgICAgICAgIGV4
aXQoMSk7CisgICAgfQorICAgIAorICAgIG1vZGUgPSB2WzFdOworICAgIGZpbGVuYW1lID0gdlsy
XTsKKyAgICAKKyAgICBpZiAoTExWTUNyZWF0ZU1lbW9yeUJ1ZmZlcldpdGhDb250ZW50c09mRmls
ZShmaWxlbmFtZSwgJmJ1ZmZlciwgJmVycm9yKSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwg
IkVycm9yIHJlYWRpbmcgZmlsZSAlczogJXNcbiIsIGZpbGVuYW1lLCBlcnJvcik7CisgICAgICAg
IGV4aXQoMSk7CisgICAgfQorICAgIAorICAgIGlmIChMTFZNUGFyc2VCaXRjb2RlKGJ1ZmZlciwg
Jm1vZHVsZSwgJmVycm9yKSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIHBhcnNp
bmcgZmlsZSAlczogJXNcbiIsIGZpbGVuYW1lLCBlcnJvcik7CisgICAgICAgIGV4aXQoMSk7Cisg
ICAgfQorCisgICAgcHJpbnRmKCJNb2R1bGUgYWZ0ZXIgcGFyc2luZzpcbiIpOworICAgIExMVk1E
dW1wTW9kdWxlKG1vZHVsZSk7CisKKyAgICBMTFZNSW5pdGlhbGl6ZU1DSklUQ29tcGlsZXJPcHRp
b25zKCZvcHRpb25zLCBzaXplb2Yob3B0aW9ucykpOworICAgIG9wdGlvbnMuT3B0TGV2ZWwgPSAy
OworICAgIG9wdGlvbnMuRW5hYmxlRmFzdElTZWwgPSAwOworICAgIG9wdGlvbnMuTUNKTU0gPSBM
TFZNQ3JlYXRlU2ltcGxlTUNKSVRNZW1vcnlNYW5hZ2VyKAorICAgICAgICAwLCBtbUFsbG9jYXRl
Q29kZVNlY3Rpb24sIG1tQWxsb2NhdGVEYXRhU2VjdGlvbiwgbW1BcHBseVBlcm1pc3Npb25zLCBt
bURlc3Ryb3kpOworICAgIAorICAgIGlmIChMTFZNQ3JlYXRlTUNKSVRDb21waWxlckZvck1vZHVs
ZSgKKyAgICAgICAgICAgICZlbmdpbmUsIG1vZHVsZSwgJm9wdGlvbnMsIHNpemVvZihvcHRpb25z
KSwgJmVycm9yKSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIGJ1aWxkaW5nIE1D
SklUOiAlc1xuIiwgZXJyb3IpOworICAgICAgICBleGl0KDEpOworICAgIH0KKyAgICAKKyAgICBp
ZiAoIXN0cmNhc2VjbXAobW9kZSwgInNpbXBsZSIpKSB7CisgICAgICAgIG1vZHVsZVBhc3NlcyA9
IExMVk1DcmVhdGVQYXNzTWFuYWdlcigpOworICAgICAgICBMTFZNQWRkVGFyZ2V0RGF0YShMTFZN
R2V0RXhlY3V0aW9uRW5naW5lVGFyZ2V0RGF0YShlbmdpbmUpLCBtb2R1bGVQYXNzZXMpOworICAg
ICAgICBMTFZNQWRkQ29uc3RhbnRQcm9wYWdhdGlvblBhc3MobW9kdWxlUGFzc2VzKTsKKyAgICAg
ICAgTExWTUFkZEluc3RydWN0aW9uQ29tYmluaW5nUGFzcyhtb2R1bGVQYXNzZXMpOworICAgICAg
ICBMTFZNQWRkUHJvbW90ZU1lbW9yeVRvUmVnaXN0ZXJQYXNzKG1vZHVsZVBhc3Nlcyk7CisgICAg
ICAgIExMVk1BZGRCYXNpY0FsaWFzQW5hbHlzaXNQYXNzKG1vZHVsZVBhc3Nlcyk7CisgICAgICAg
IExMVk1BZGRUeXBlQmFzZWRBbGlhc0FuYWx5c2lzUGFzcyhtb2R1bGVQYXNzZXMpOworICAgICAg
ICBMTFZNQWRkR1ZOUGFzcyhtb2R1bGVQYXNzZXMpOworICAgICAgICBMTFZNQWRkQ0ZHU2ltcGxp
ZmljYXRpb25QYXNzKG1vZHVsZVBhc3Nlcyk7CisgICAgICAgIExMVk1SdW5QYXNzTWFuYWdlciht
b2R1bGVQYXNzZXMsIG1vZHVsZSk7CisgICAgfSBlbHNlIGlmICghc3RyY2FzZWNtcChtb2RlLCAi
b3B0IikpIHsKKyAgICAgICAgTExWTVBhc3NNYW5hZ2VyQnVpbGRlclJlZiBwYXNzQnVpbGRlcjsK
KworICAgICAgICBwYXNzQnVpbGRlciA9IExMVk1QYXNzTWFuYWdlckJ1aWxkZXJDcmVhdGUoKTsK
KyAgICAgICAgTExWTVBhc3NNYW5hZ2VyQnVpbGRlclNldE9wdExldmVsKHBhc3NCdWlsZGVyLCAy
KTsKKyAgICAgICAgTExWTVBhc3NNYW5hZ2VyQnVpbGRlclNldFNpemVMZXZlbChwYXNzQnVpbGRl
ciwgMCk7CisgICAgICAgIAorICAgICAgICBmdW5jdGlvblBhc3NlcyA9IExMVk1DcmVhdGVGdW5j
dGlvblBhc3NNYW5hZ2VyRm9yTW9kdWxlKG1vZHVsZSk7CisgICAgICAgIG1vZHVsZVBhc3NlcyA9
IExMVk1DcmVhdGVQYXNzTWFuYWdlcigpOworICAgICAgICAKKyAgICAgICAgTExWTUFkZFRhcmdl
dERhdGEoTExWTUdldEV4ZWN1dGlvbkVuZ2luZVRhcmdldERhdGEoZW5naW5lKSwgbW9kdWxlUGFz
c2VzKTsKKyAgICAgICAgCisgICAgICAgIExMVk1QYXNzTWFuYWdlckJ1aWxkZXJQb3B1bGF0ZUZ1
bmN0aW9uUGFzc01hbmFnZXIocGFzc0J1aWxkZXIsIGZ1bmN0aW9uUGFzc2VzKTsKKyAgICAgICAg
TExWTVBhc3NNYW5hZ2VyQnVpbGRlclBvcHVsYXRlTW9kdWxlUGFzc01hbmFnZXIocGFzc0J1aWxk
ZXIsIG1vZHVsZVBhc3Nlcyk7CisgICAgICAgIAorICAgICAgICBMTFZNUGFzc01hbmFnZXJCdWls
ZGVyRGlzcG9zZShwYXNzQnVpbGRlcik7CisgICAgICAgIAorICAgICAgICBMTFZNSW5pdGlhbGl6
ZUZ1bmN0aW9uUGFzc01hbmFnZXIoZnVuY3Rpb25QYXNzZXMpOworICAgICAgICBmb3IgKHZhbHVl
ID0gTExWTUdldEZpcnN0RnVuY3Rpb24obW9kdWxlKTsgdmFsdWU7IHZhbHVlID0gTExWTUdldE5l
eHRGdW5jdGlvbih2YWx1ZSkpCisgICAgICAgICAgICBMTFZNUnVuRnVuY3Rpb25QYXNzTWFuYWdl
cihmdW5jdGlvblBhc3NlcywgdmFsdWUpOworICAgICAgICBMTFZNRmluYWxpemVGdW5jdGlvblBh
c3NNYW5hZ2VyKGZ1bmN0aW9uUGFzc2VzKTsKKyAgICAgICAgCisgICAgICAgIExMVk1SdW5QYXNz
TWFuYWdlcihtb2R1bGVQYXNzZXMsIG1vZHVsZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZnBy
aW50ZihzdGRlcnIsICJCYWQgb3B0aW1pemF0aW9uIG1vZGU6ICVzLlxuIiwgbW9kZSk7CisgICAg
ICAgIGZwcmludGYoc3RkZXJyLCAiVmFsaWQgbW9kZXMgYXJlOiBcInNpbXBsZVwiIG9yIFwib3B0
XCIuXG4iKTsKKyAgICAgICAgZXhpdCgxKTsKKyAgICB9CisKKyAgICBwcmludGYoIk1vZHVsZSBh
ZnRlciBvcHRpbWl6YXRpb246XG4iKTsKKyAgICBMTFZNRHVtcE1vZHVsZShtb2R1bGUpOworICAg
IAorICAgIGZvciAodmFsdWUgPSBMTFZNR2V0Rmlyc3RGdW5jdGlvbihtb2R1bGUpOyB2YWx1ZTsg
dmFsdWUgPSBMTFZNR2V0TmV4dEZ1bmN0aW9uKHZhbHVlKSkgeworICAgICAgICBpZiAoTExWTUlz
RGVjbGFyYXRpb24odmFsdWUpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIExMVk1H
ZXRQb2ludGVyVG9HbG9iYWwoZW5naW5lLCB2YWx1ZSk7CisgICAgfQorCisgICAgaWYgKGZ1bmN0
aW9uUGFzc2VzKQorICAgICAgICBMTFZNRGlzcG9zZVBhc3NNYW5hZ2VyKGZ1bmN0aW9uUGFzc2Vz
KTsKKyAgICBpZiAobW9kdWxlUGFzc2VzKQorICAgICAgICBMTFZNRGlzcG9zZVBhc3NNYW5hZ2Vy
KG1vZHVsZVBhc3Nlcyk7CisgICAgCisgICAgTExWTURpc3Bvc2VFeGVjdXRpb25FbmdpbmUoZW5n
aW5lKTsKKyAgICAKKyAgICBkaXNhc3NlbWJsZXIgPSBMTFZNQ3JlYXRlRGlzYXNtKCJ4ODZfNjQt
YXBwbGUtZGFyd2luIiwgMCwgMCwgMCwgc3ltYm9sTG9va3VwQ2FsbGJhY2spOworICAgIGlmICgh
ZGlzYXNzZW1ibGVyKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3IgYnVpbGRpbmcg
ZGlzYXNzZW1ibGVyLlxuIik7CisgICAgICAgIGV4aXQoMSk7CisgICAgfQorICAgIAorICAgIGZv
ciAoc2VjdGlvbiA9IHNlY3Rpb25IZWFkOyBzZWN0aW9uOyBzZWN0aW9uID0gc2VjdGlvbi0+bmV4
dCkgeworICAgICAgICBwcmludGYoIkRpc2Fzc2VtYmx5IGZvciBzZWN0aW9uICVwOlxuIiwgc2Vj
dGlvbik7CisgICAgICAgIAorICAgICAgICBjaGFyIHBjU3RyaW5nWzIwXTsKKyAgICAgICAgY2hh
ciBpbnN0cnVjdGlvblN0cmluZ1sxMDAwXTsKKyAgICAgICAgdWludDhfdCAqcGM7CisgICAgICAg
IHVpbnQ4X3QgKmVuZDsKKyAgICAgICAgCisgICAgICAgIHBjID0gc2VjdGlvbi0+c3RhcnQ7Cisg
ICAgICAgIGVuZCA9IHBjICsgc2VjdGlvbi0+c2l6ZTsKKyAgICAgICAgCisgICAgICAgIHdoaWxl
IChwYyA8IGVuZCkgeworICAgICAgICAgICAgc25wcmludGYoCisgICAgICAgICAgICAgICAgcGNT
dHJpbmcsIHNpemVvZihwY1N0cmluZyksICIweCVseCIsCisgICAgICAgICAgICAgICAgKHVuc2ln
bmVkIGxvbmcpKHVpbnRwdHJfdClwYyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHNpemVf
dCBpbnN0cnVjdGlvblNpemUgPSBMTFZNRGlzYXNtSW5zdHJ1Y3Rpb24oCisgICAgICAgICAgICAg
ICAgZGlzYXNzZW1ibGVyLCBwYywgZW5kIC0gcGMsICh1aW50cHRyX3QpcGMsCisgICAgICAgICAg
ICAgICAgaW5zdHJ1Y3Rpb25TdHJpbmcsIHNpemVvZihpbnN0cnVjdGlvblN0cmluZykpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBpZiAoIWluc3RydWN0aW9uU2l6ZSkKKyAgICAgICAgICAg
ICAgICBzbnByaW50ZihpbnN0cnVjdGlvblN0cmluZywgc2l6ZW9mKGluc3RydWN0aW9uU3RyaW5n
KSwgIi5ieXRlIDB4JTAyeCIsICpwYysrKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBwYyArPSBpbnN0cnVjdGlvblNpemU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHBy
aW50ZigiICAgICUxNnM6ICVzXG4iLCBwY1N0cmluZywgaW5zdHJ1Y3Rpb25TdHJpbmcpOworICAg
ICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiAwOworfQorCkluZGV4OiBUb29scy9SZWR1
Y2VkRlRML2J1aWxkLnNoCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1JlZHVjZWRGVEwvYnVpbGQuc2gJ
KHJldmlzaW9uIDApCisrKyBUb29scy9SZWR1Y2VkRlRML2J1aWxkLnNoCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTQgQEAKKyMhL2Jpbi9zaAorCitzZXQgLWUKK3NldCAteAorCitpZiB0ZXN0
ICJ4JHtMTFZNX1BBVEh9IiA9PSAieCIKK3RoZW4KKyAgICBjb25maWdQYXRoPSJsbHZtLWNvbmZp
ZyIKK2Vsc2UKKyAgICBjb25maWdQYXRoPSIke0xMVk1fUEFUSH0vYmluL2xsdm0tY29uZmlnIgor
ZmkKKworY2xhbmcgLWMgLW8gUmVkdWNlZEZUTC5vIFJlZHVjZWRGVEwuYyBgJHtjb25maWdQYXRo
fSAtLWNwcGZsYWdzIC0tY2ZsYWdzYAorY2xhbmcrKyAtbyBSZWR1Y2VkRlRMIFJlZHVjZWRGVEwu
byAtc3RkbGliPWxpYmMrKyBgJHtjb25maWdQYXRofSAtLWxkZmxhZ3MgLS1saWJzYAoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogVG9vbHMvUmVkdWNlZEZUTC9idWlsZC5zaApfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVk
OiBzdm46ZXhlY3V0YWJsZQojIyAtMCwwICsxICMjCisqClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
cHJvcGVydHkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206611</attachid>
            <date>2013-07-13 09:46:38 -0700</date>
            <delta_ts>2013-07-13 09:53:49 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>11218</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1MjYxMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDEzLTA3LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisK
KyAgICAgICAgZm91cnRoVGllcjogV2Ugc2hvdWxkIGhhdmUgYSByZWR1Y2VkIEZUTCBMTFZNIHBp
cGVsaW5lIHRvb2wgaW4gdGhlIHJlcG9zaXRvcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExODY0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkIGEgdG9vbCB0aGF0IHRha2VzIGluIGFu
IExMVk0gYml0Y29kZSBmaWxlIGFuZCBKSVRzIGl0IGluIGV4YWN0bHkgdGhlIHNhbWUKKyAgICAg
ICAgd2F5IHRoYXQgdGhlIEZUTCB3b3VsZC4KKworICAgICAgICAqIFJlZHVjZWRGVEw6IEFkZGVk
LgorICAgICAgICAqIFJlZHVjZWRGVEwvUmVkdWNlZEZUTC5jOiBBZGRlZC4KKyAgICAgICAgKE1l
bW9yeVNlY3Rpb24pOgorICAgICAgICAobW1BbGxvY2F0ZUNvZGVTZWN0aW9uKToKKyAgICAgICAg
KG1tQWxsb2NhdGVEYXRhU2VjdGlvbik6CisgICAgICAgIChtbUFwcGx5UGVybWlzc2lvbnMpOgor
ICAgICAgICAobW1EZXN0cm95KToKKyAgICAgICAgKHN5bWJvbExvb2t1cENhbGxiYWNrKToKKyAg
ICAgICAgKG1haW4pOgorICAgICAgICAqIFJlZHVjZWRGVEwvYnVpbGQuc2g6IEFkZGVkLgorCiAy
MDEzLTA2LTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgTWVy
Z2UgdHJ1bmsgcjE0NjU0OC4KSW5kZXg6IFRvb2xzL1JlZHVjZWRGVEwvUmVkdWNlZEZUTC5jCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1JlZHVjZWRGVEwvUmVkdWNlZEZUTC5jCShyZXZpc2lvbiAwKQor
KysgVG9vbHMvUmVkdWNlZEZUTC9SZWR1Y2VkRlRMLmMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwyNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
LyoKKyBTaW1wbGUgdG9vbCB0aGF0IHRha2VzIHNvbWUgTExWTSBiaXRjb2RlIGFzIGlucHV0IGFu
ZCAiSklUcyIgaXQsIGluIHRoZQorIHNhbWUgd2F5IHRoYXQgdGhlIEZUTCB3b3VsZCB1c2UgTExW
TSB0byBKSVQgdGhlIElSIHRoYXQgaXQgZ2VuZXJhdGVzLgorIFRoaXMgaXMgbWVhbnQgZm9yIHVz
ZSBhcyBhIHJlZHVjdGlvbiB3aGVuIGNvbW11bmljYXRpbmcgdG8gTExWTWVycworIGFib3V0IGJ1
Z3MsIGFuZCBmb3IgcXVpY2sgIndoYXQtaWYiIHRlc3RpbmcgdG8gc2VlIGhvdyBvdXIgb3B0aW1p
emF0aW9uCisgcGlwZWxpbmUgcGVyZm9ybXMuIEJlY2F1c2Ugb2YgaXRzIHVzZSBhcyBhIHJlZHVj
dGlvbiwgdGhpcyB0b29sIGlzCisgaW50ZW50aW9uYWxseSBzdGFuZGFsb25lIGFuZCBpdCB3b3Vs
ZCBiZSBncmVhdCBpZiBpdCBjb250aW51ZXMgdG8gZml0CisgaW4gb25lIGZpbGUuCisqLworCisj
aW5jbHVkZSA8aW50dHlwZXMuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxp
Yi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisjaW5jbHVk
ZSA8dW5pc3RkLmg+CisKKyNpbmNsdWRlIDxsbHZtLWMvQW5hbHlzaXMuaD4KKyNpbmNsdWRlIDxs
bHZtLWMvQml0UmVhZGVyLmg+CisjaW5jbHVkZSA8bGx2bS1jL0NvcmUuaD4KKyNpbmNsdWRlIDxs
bHZtLWMvRGlzYXNzZW1ibGVyLmg+CisjaW5jbHVkZSA8bGx2bS1jL0V4ZWN1dGlvbkVuZ2luZS5o
PgorI2luY2x1ZGUgPGxsdm0tYy9UYXJnZXQuaD4KKyNpbmNsdWRlIDxsbHZtLWMvVHJhbnNmb3Jt
cy9QYXNzTWFuYWdlckJ1aWxkZXIuaD4KKyNpbmNsdWRlIDxsbHZtLWMvVHJhbnNmb3Jtcy9TY2Fs
YXIuaD4KKworc3RydWN0IE1lbW9yeVNlY3Rpb24geworICAgIHVpbnQ4X3QgKnN0YXJ0OworICAg
IHNpemVfdCBzaXplOworICAgIHN0cnVjdCBNZW1vcnlTZWN0aW9uICpuZXh0OworfTsKKworc3Rh
dGljIHN0cnVjdCBNZW1vcnlTZWN0aW9uKiBzZWN0aW9uSGVhZDsKKworc3RhdGljIHVpbnQ4X3Qg
Km1tQWxsb2NhdGVDb2RlU2VjdGlvbigKKyAgICB2b2lkICpvcGFxdWVTdGF0ZSwgdWludHB0cl90
IHNpemUsIHVuc2lnbmVkIGFsaWdubWVudCwgdW5zaWduZWQgc2VjdGlvbklEKQoreworICAgIHNp
emVfdCBwYWdlU2l6ZSA9IGdldHBhZ2VzaXplKCk7CisgICAgCisgICAgdWludDhfdCAqc3RhcnQg
PSBtbWFwKAorICAgICAgICAwLCAoc2l6ZSArIHBhZ2VTaXplIC0gMSkgJiB+cGFnZVNpemUsIAor
ICAgICAgICBQUk9UX1dSSVRFIHwgUFJPVF9SRUFEIHwgUFJPVF9FWEVDLAorICAgICAgICBNQVBf
QU5PTiB8IE1BUF9QUklWQVRFLCAtMSwgMCk7CisgICAgaWYgKHN0YXJ0ID09ICh1aW50OF90Kikt
MSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVuYWJsZSB0byBhbGxvY2F0ZSAlIiBQUkl1
UFRSICIgYnl0ZXMgb2YgZXhlY3V0YWJsZSBtZW1vcnkuXG4iLCBzaXplKTsKKyAgICAgICAgZXhp
dCgxKTsKKyAgICB9CisgICAgCisgICAgc3RydWN0IE1lbW9yeVNlY3Rpb24gKnNlY3Rpb24gPSBt
YWxsb2Moc2l6ZW9mKHN0cnVjdCBNZW1vcnlTZWN0aW9uKSk7CisgICAgc2VjdGlvbi0+c3RhcnQg
PSBzdGFydDsKKyAgICBzZWN0aW9uLT5zaXplID0gc2l6ZTsKKyAgICBzZWN0aW9uLT5uZXh0ID0g
c2VjdGlvbkhlYWQ7CisgICAgc2VjdGlvbkhlYWQgPSBzZWN0aW9uOworCisgICAgcmV0dXJuIHN0
YXJ0OworfQorCitzdGF0aWMgdWludDhfdCAqbW1BbGxvY2F0ZURhdGFTZWN0aW9uKAorICAgIHZv
aWQgKm9wYXF1ZVN0YXRlLCB1aW50cHRyX3Qgc2l6ZSwgdW5zaWduZWQgYWxpZ25tZW50LCB1bnNp
Z25lZCBzZWN0aW9uSUQsCisgICAgTExWTUJvb2wgaXNSZWFkT25seSkKK3sKKyAgICByZXR1cm4g
bW1BbGxvY2F0ZUNvZGVTZWN0aW9uKG9wYXF1ZVN0YXRlLCBzaXplLCBhbGlnbm1lbnQsIHNlY3Rp
b25JRCk7Cit9CisKK3N0YXRpYyBMTFZNQm9vbCBtbUFwcGx5UGVybWlzc2lvbnModm9pZCAqb3Bh
cXVlLCBjaGFyICoqbWVzc2FnZSkKK3sKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQg
bW1EZXN0cm95KHZvaWQgKm9wYXF1ZSkKK3sKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKnN5bWJv
bExvb2t1cENhbGxiYWNrKAorICAgIHZvaWQgKm9wYXF1ZSwgdWludDY0X3QgcmVmZXJlbmNlVmFs
dWUsIHVpbnQ2NF90ICpyZWZlcmVuY2VUeXBlLCB1aW50NjRfdCByZWZlcmVuY2VQQywKKyAgICBj
b25zdCBjaGFyICoqcmVmZXJlbmNlTmFtZSkKK3sKKyAgICBzdGF0aWMgY2hhciBzeW1ib2xTdHJp
bmdbMjBdOworICAgIAorICAgIHN3aXRjaCAoKnJlZmVyZW5jZVR5cGUpIHsKKyAgICBjYXNlIExM
Vk1EaXNhc3NlbWJsZXJfUmVmZXJlbmNlVHlwZV9Jbk91dF9Ob25lOgorICAgICAgICByZXR1cm4g
MDsKKyAgICBjYXNlIExMVk1EaXNhc3NlbWJsZXJfUmVmZXJlbmNlVHlwZV9Jbl9CcmFuY2g6Cisg
ICAgICAgICpyZWZlcmVuY2VOYW1lID0gMDsKKyAgICAgICAgKnJlZmVyZW5jZVR5cGUgPSBMTFZN
RGlzYXNzZW1ibGVyX1JlZmVyZW5jZVR5cGVfSW5PdXRfTm9uZTsKKyAgICAgICAgc25wcmludGYo
CisgICAgICAgICAgICBzeW1ib2xTdHJpbmcsIHNpemVvZihzeW1ib2xTdHJpbmcpLCAiMHglbHgi
LAorICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpcmVmZXJlbmNlVmFsdWUpOworICAgICAgICBy
ZXR1cm4gc3ltYm9sU3RyaW5nOworICAgIGRlZmF1bHQ6CisgICAgICAgIGZwcmludGYoc3RkZXJy
LCAiVW5leHBlY3RlZCByZWZlcmVuY2UgdHlwZSFcbiIpOworICAgICAgICBleGl0KDEpOworICAg
ICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK2ludCBtYWluKGludCBjLCBjaGFyICoqdikgewor
ICAgIExMVk1EaXNhc21Db250ZXh0UmVmIGRpc2Fzc2VtYmxlcjsKKyAgICBMTFZNRXhlY3V0aW9u
RW5naW5lUmVmIGVuZ2luZTsKKyAgICBzdHJ1Y3QgTExWTU1DSklUQ29tcGlsZXJPcHRpb25zIG9w
dGlvbnM7CisgICAgTExWTU1lbW9yeUJ1ZmZlclJlZiBidWZmZXI7CisgICAgTExWTU1vZHVsZVJl
ZiBtb2R1bGU7CisgICAgTExWTVZhbHVlUmVmIHZhbHVlOworICAgIHN0cnVjdCBNZW1vcnlTZWN0
aW9uICpzZWN0aW9uOworICAgIGNoYXIgKmVycm9yOworICAgIGNvbnN0IGNoYXIgKm1vZGU7Cisg
ICAgY29uc3QgY2hhciAqZmlsZW5hbWU7CisgICAgTExWTVBhc3NNYW5hZ2VyUmVmIGZ1bmN0aW9u
UGFzc2VzID0gMDsKKyAgICBMTFZNUGFzc01hbmFnZXJSZWYgbW9kdWxlUGFzc2VzID0gMDsKKyAg
ICAKKyAgICBMTFZNTGlua0luTUNKSVQoKTsKKyAgICBMTFZNSW5pdGlhbGl6ZU5hdGl2ZVRhcmdl
dCgpOworICAgIExMVk1Jbml0aWFsaXplWDg2QXNtUHJpbnRlcigpOworICAgIExMVk1Jbml0aWFs
aXplWDg2RGlzYXNzZW1ibGVyKCk7CisKKyAgICBpZiAoYyAhPSAzKSB7CisgICAgICAgIHByaW50
ZigiVXNhZ2U6IFJlZHVjZWRGVEwgPG1vZGU+IDxmaWxlPlxuIik7CisgICAgICAgIGV4aXQoMSk7
CisgICAgfQorICAgIAorICAgIG1vZGUgPSB2WzFdOworICAgIGZpbGVuYW1lID0gdlsyXTsKKyAg
ICAKKyAgICBpZiAoTExWTUNyZWF0ZU1lbW9yeUJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShmaWxl
bmFtZSwgJmJ1ZmZlciwgJmVycm9yKSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9y
IHJlYWRpbmcgZmlsZSAlczogJXNcbiIsIGZpbGVuYW1lLCBlcnJvcik7CisgICAgICAgIGV4aXQo
MSk7CisgICAgfQorICAgIAorICAgIGlmIChMTFZNUGFyc2VCaXRjb2RlKGJ1ZmZlciwgJm1vZHVs
ZSwgJmVycm9yKSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIHBhcnNpbmcgZmls
ZSAlczogJXNcbiIsIGZpbGVuYW1lLCBlcnJvcik7CisgICAgICAgIGV4aXQoMSk7CisgICAgfQor
CisgICAgcHJpbnRmKCJNb2R1bGUgYWZ0ZXIgcGFyc2luZzpcbiIpOworICAgIExMVk1EdW1wTW9k
dWxlKG1vZHVsZSk7CisKKyAgICBMTFZNSW5pdGlhbGl6ZU1DSklUQ29tcGlsZXJPcHRpb25zKCZv
cHRpb25zLCBzaXplb2Yob3B0aW9ucykpOworICAgIG9wdGlvbnMuT3B0TGV2ZWwgPSAyOworICAg
IG9wdGlvbnMuRW5hYmxlRmFzdElTZWwgPSAwOworICAgIG9wdGlvbnMuTUNKTU0gPSBMTFZNQ3Jl
YXRlU2ltcGxlTUNKSVRNZW1vcnlNYW5hZ2VyKAorICAgICAgICAwLCBtbUFsbG9jYXRlQ29kZVNl
Y3Rpb24sIG1tQWxsb2NhdGVEYXRhU2VjdGlvbiwgbW1BcHBseVBlcm1pc3Npb25zLCBtbURlc3Ry
b3kpOworICAgIAorICAgIGlmIChMTFZNQ3JlYXRlTUNKSVRDb21waWxlckZvck1vZHVsZSgmZW5n
aW5lLCBtb2R1bGUsICZvcHRpb25zLCBzaXplb2Yob3B0aW9ucyksICZlcnJvcikpIHsKKyAgICAg
ICAgZnByaW50ZihzdGRlcnIsICJFcnJvciBidWlsZGluZyBNQ0pJVDogJXNcbiIsIGVycm9yKTsK
KyAgICAgICAgZXhpdCgxKTsKKyAgICB9CisgICAgCisgICAgaWYgKCFzdHJjYXNlY21wKG1vZGUs
ICJzaW1wbGUiKSkgeworICAgICAgICBtb2R1bGVQYXNzZXMgPSBMTFZNQ3JlYXRlUGFzc01hbmFn
ZXIoKTsKKyAgICAgICAgTExWTUFkZFRhcmdldERhdGEoTExWTUdldEV4ZWN1dGlvbkVuZ2luZVRh
cmdldERhdGEoZW5naW5lKSwgbW9kdWxlUGFzc2VzKTsKKyAgICAgICAgTExWTUFkZENvbnN0YW50
UHJvcGFnYXRpb25QYXNzKG1vZHVsZVBhc3Nlcyk7CisgICAgICAgIExMVk1BZGRJbnN0cnVjdGlv
bkNvbWJpbmluZ1Bhc3MobW9kdWxlUGFzc2VzKTsKKyAgICAgICAgTExWTUFkZFByb21vdGVNZW1v
cnlUb1JlZ2lzdGVyUGFzcyhtb2R1bGVQYXNzZXMpOworICAgICAgICBMTFZNQWRkQmFzaWNBbGlh
c0FuYWx5c2lzUGFzcyhtb2R1bGVQYXNzZXMpOworICAgICAgICBMTFZNQWRkVHlwZUJhc2VkQWxp
YXNBbmFseXNpc1Bhc3MobW9kdWxlUGFzc2VzKTsKKyAgICAgICAgTExWTUFkZEdWTlBhc3MobW9k
dWxlUGFzc2VzKTsKKyAgICAgICAgTExWTUFkZENGR1NpbXBsaWZpY2F0aW9uUGFzcyhtb2R1bGVQ
YXNzZXMpOworICAgICAgICBMTFZNUnVuUGFzc01hbmFnZXIobW9kdWxlUGFzc2VzLCBtb2R1bGUp
OworICAgIH0gZWxzZSBpZiAoIXN0cmNhc2VjbXAobW9kZSwgIm9wdCIpKSB7CisgICAgICAgIExM
Vk1QYXNzTWFuYWdlckJ1aWxkZXJSZWYgcGFzc0J1aWxkZXI7CisKKyAgICAgICAgcGFzc0J1aWxk
ZXIgPSBMTFZNUGFzc01hbmFnZXJCdWlsZGVyQ3JlYXRlKCk7CisgICAgICAgIExMVk1QYXNzTWFu
YWdlckJ1aWxkZXJTZXRPcHRMZXZlbChwYXNzQnVpbGRlciwgMik7CisgICAgICAgIExMVk1QYXNz
TWFuYWdlckJ1aWxkZXJTZXRTaXplTGV2ZWwocGFzc0J1aWxkZXIsIDApOworICAgICAgICAKKyAg
ICAgICAgZnVuY3Rpb25QYXNzZXMgPSBMTFZNQ3JlYXRlRnVuY3Rpb25QYXNzTWFuYWdlckZvck1v
ZHVsZShtb2R1bGUpOworICAgICAgICBtb2R1bGVQYXNzZXMgPSBMTFZNQ3JlYXRlUGFzc01hbmFn
ZXIoKTsKKyAgICAgICAgCisgICAgICAgIExMVk1BZGRUYXJnZXREYXRhKExMVk1HZXRFeGVjdXRp
b25FbmdpbmVUYXJnZXREYXRhKGVuZ2luZSksIG1vZHVsZVBhc3Nlcyk7CisgICAgICAgIAorICAg
ICAgICBMTFZNUGFzc01hbmFnZXJCdWlsZGVyUG9wdWxhdGVGdW5jdGlvblBhc3NNYW5hZ2VyKHBh
c3NCdWlsZGVyLCBmdW5jdGlvblBhc3Nlcyk7CisgICAgICAgIExMVk1QYXNzTWFuYWdlckJ1aWxk
ZXJQb3B1bGF0ZU1vZHVsZVBhc3NNYW5hZ2VyKHBhc3NCdWlsZGVyLCBtb2R1bGVQYXNzZXMpOwor
ICAgICAgICAKKyAgICAgICAgTExWTVBhc3NNYW5hZ2VyQnVpbGRlckRpc3Bvc2UocGFzc0J1aWxk
ZXIpOworICAgICAgICAKKyAgICAgICAgTExWTUluaXRpYWxpemVGdW5jdGlvblBhc3NNYW5hZ2Vy
KGZ1bmN0aW9uUGFzc2VzKTsKKyAgICAgICAgZm9yICh2YWx1ZSA9IExMVk1HZXRGaXJzdEZ1bmN0
aW9uKG1vZHVsZSk7IHZhbHVlOyB2YWx1ZSA9IExMVk1HZXROZXh0RnVuY3Rpb24odmFsdWUpKQor
ICAgICAgICAgICAgTExWTVJ1bkZ1bmN0aW9uUGFzc01hbmFnZXIoZnVuY3Rpb25QYXNzZXMsIHZh
bHVlKTsKKyAgICAgICAgTExWTUZpbmFsaXplRnVuY3Rpb25QYXNzTWFuYWdlcihmdW5jdGlvblBh
c3Nlcyk7CisgICAgICAgIAorICAgICAgICBMTFZNUnVuUGFzc01hbmFnZXIobW9kdWxlUGFzc2Vz
LCBtb2R1bGUpOworICAgIH0gZWxzZSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQmFkIG9w
dGltaXphdGlvbiBtb2RlOiAlcy5cbiIsIG1vZGUpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwg
IlZhbGlkIG1vZGVzIGFyZTogXCJzaW1wbGVcIiBvciBcIm9wdFwiLlxuIik7CisgICAgICAgIGV4
aXQoMSk7CisgICAgfQorCisgICAgcHJpbnRmKCJNb2R1bGUgYWZ0ZXIgb3B0aW1pemF0aW9uOlxu
Iik7CisgICAgTExWTUR1bXBNb2R1bGUobW9kdWxlKTsKKyAgICAKKyAgICBmb3IgKHZhbHVlID0g
TExWTUdldEZpcnN0RnVuY3Rpb24obW9kdWxlKTsgdmFsdWU7IHZhbHVlID0gTExWTUdldE5leHRG
dW5jdGlvbih2YWx1ZSkpIHsKKyAgICAgICAgaWYgKExMVk1Jc0RlY2xhcmF0aW9uKHZhbHVlKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBMTFZNR2V0UG9pbnRlclRvR2xvYmFsKGVu
Z2luZSwgdmFsdWUpOworICAgIH0KKworICAgIGlmIChmdW5jdGlvblBhc3NlcykKKyAgICAgICAg
TExWTURpc3Bvc2VQYXNzTWFuYWdlcihmdW5jdGlvblBhc3Nlcyk7CisgICAgaWYgKG1vZHVsZVBh
c3NlcykKKyAgICAgICAgTExWTURpc3Bvc2VQYXNzTWFuYWdlcihtb2R1bGVQYXNzZXMpOworICAg
IAorICAgIExMVk1EaXNwb3NlRXhlY3V0aW9uRW5naW5lKGVuZ2luZSk7CisgICAgCisgICAgZGlz
YXNzZW1ibGVyID0gTExWTUNyZWF0ZURpc2FzbSgieDg2XzY0LWFwcGxlLWRhcndpbiIsIDAsIDAs
IDAsIHN5bWJvbExvb2t1cENhbGxiYWNrKTsKKyAgICBpZiAoIWRpc2Fzc2VtYmxlcikgeworICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIGJ1aWxkaW5nIGRpc2Fzc2VtYmxlci5cbiIpOwor
ICAgICAgICBleGl0KDEpOworICAgIH0KKyAgICAKKyAgICBmb3IgKHNlY3Rpb24gPSBzZWN0aW9u
SGVhZDsgc2VjdGlvbjsgc2VjdGlvbiA9IHNlY3Rpb24tPm5leHQpIHsKKyAgICAgICAgcHJpbnRm
KCJEaXNhc3NlbWJseSBmb3Igc2VjdGlvbiAlcDpcbiIsIHNlY3Rpb24pOworICAgICAgICAKKyAg
ICAgICAgY2hhciBwY1N0cmluZ1syMF07CisgICAgICAgIGNoYXIgaW5zdHJ1Y3Rpb25TdHJpbmdb
MTAwMF07CisgICAgICAgIHVpbnQ4X3QgKnBjOworICAgICAgICB1aW50OF90ICplbmQ7CisgICAg
ICAgIAorICAgICAgICBwYyA9IHNlY3Rpb24tPnN0YXJ0OworICAgICAgICBlbmQgPSBwYyArIHNl
Y3Rpb24tPnNpemU7CisgICAgICAgIAorICAgICAgICB3aGlsZSAocGMgPCBlbmQpIHsKKyAgICAg
ICAgICAgIHNucHJpbnRmKAorICAgICAgICAgICAgICAgIHBjU3RyaW5nLCBzaXplb2YocGNTdHJp
bmcpLCAiMHglbHgiLAorICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSh1aW50cHRyX3Qp
cGMpOworICAgICAgICAgICAgCisgICAgICAgICAgICBzaXplX3QgaW5zdHJ1Y3Rpb25TaXplID0g
TExWTURpc2FzbUluc3RydWN0aW9uKAorICAgICAgICAgICAgICAgIGRpc2Fzc2VtYmxlciwgcGMs
IGVuZCAtIHBjLCAodWludHB0cl90KXBjLAorICAgICAgICAgICAgICAgIGluc3RydWN0aW9uU3Ry
aW5nLCBzaXplb2YoaW5zdHJ1Y3Rpb25TdHJpbmcpKTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgaWYgKCFpbnN0cnVjdGlvblNpemUpCisgICAgICAgICAgICAgICAgc25wcmludGYoaW5zdHJ1
Y3Rpb25TdHJpbmcsIHNpemVvZihpbnN0cnVjdGlvblN0cmluZyksICIuYnl0ZSAweCUwMngiLCAq
cGMrKyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcGMgKz0gaW5zdHJ1Y3Rp
b25TaXplOworICAgICAgICAgICAgCisgICAgICAgICAgICBwcmludGYoIiAgICAlMTZzOiAlc1xu
IiwgcGNTdHJpbmcsIGluc3RydWN0aW9uU3RyaW5nKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAK
KyAgICByZXR1cm4gMDsKK30KKwpJbmRleDogVG9vbHMvUmVkdWNlZEZUTC9idWlsZC5zaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9SZWR1Y2VkRlRML2J1aWxkLnNoCShyZXZpc2lvbiAwKQorKysgVG9v
bHMvUmVkdWNlZEZUTC9idWlsZC5zaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACisj
IS9iaW4vc2gKKworc2V0IC1lCitzZXQgLXgKKworaWYgdGVzdCAieCR7TExWTV9QQVRIfSIgPT0g
IngiCit0aGVuCisgICAgY29uZmlnUGF0aD0ibGx2bS1jb25maWciCitlbHNlCisgICAgY29uZmln
UGF0aD0iJHtMTFZNX1BBVEh9L2Jpbi9sbHZtLWNvbmZpZyIKK2ZpCisKK2NsYW5nIC1jIC1vIFJl
ZHVjZWRGVEwubyBSZWR1Y2VkRlRMLmMgYCR7Y29uZmlnUGF0aH0gLS1jcHBmbGFncyAtLWNmbGFn
c2AKK2NsYW5nKysgLW8gUmVkdWNlZEZUTCBSZWR1Y2VkRlRMLm8gLXN0ZGxpYj1saWJjKysgYCR7
Y29uZmlnUGF0aH0gLS1sZGZsYWdzIC0tbGlic2AKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xz
L1JlZHVjZWRGVEwvYnVpbGQuc2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKIyMg
LTAsMCArMSAjIworKgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206612</attachid>
            <date>2013-07-13 09:53:49 -0700</date>
            <delta_ts>2013-07-13 11:11:52 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>11234</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1MjYxMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDEzLTA3LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisK
KyAgICAgICAgZm91cnRoVGllcjogV2Ugc2hvdWxkIGhhdmUgYSByZWR1Y2VkIEZUTCBMTFZNIHBp
cGVsaW5lIHRvb2wgaW4gdGhlIHJlcG9zaXRvcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExODY0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkIGEgdG9vbCB0aGF0IHRha2VzIGluIGFu
IExMVk0gYml0Y29kZSBmaWxlIGFuZCBKSVRzIGl0IGluIGV4YWN0bHkgdGhlIHNhbWUKKyAgICAg
ICAgd2F5IHRoYXQgdGhlIEZUTCB3b3VsZC4KKworICAgICAgICAqIFJlZHVjZWRGVEw6IEFkZGVk
LgorICAgICAgICAqIFJlZHVjZWRGVEwvUmVkdWNlZEZUTC5jOiBBZGRlZC4KKyAgICAgICAgKE1l
bW9yeVNlY3Rpb24pOgorICAgICAgICAobW1BbGxvY2F0ZUNvZGVTZWN0aW9uKToKKyAgICAgICAg
KG1tQWxsb2NhdGVEYXRhU2VjdGlvbik6CisgICAgICAgIChtbUFwcGx5UGVybWlzc2lvbnMpOgor
ICAgICAgICAobW1EZXN0cm95KToKKyAgICAgICAgKHN5bWJvbExvb2t1cENhbGxiYWNrKToKKyAg
ICAgICAgKG1haW4pOgorICAgICAgICAqIFJlZHVjZWRGVEwvYnVpbGQuc2g6IEFkZGVkLgorCiAy
MDEzLTA2LTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgTWVy
Z2UgdHJ1bmsgcjE0NjU0OC4KSW5kZXg6IFRvb2xzL1JlZHVjZWRGVEwvUmVkdWNlZEZUTC5jCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1JlZHVjZWRGVEwvUmVkdWNlZEZUTC5jCShyZXZpc2lvbiAwKQor
KysgVG9vbHMvUmVkdWNlZEZUTC9SZWR1Y2VkRlRMLmMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwyNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
LyoKKyAqIFNpbXBsZSB0b29sIHRoYXQgdGFrZXMgc29tZSBMTFZNIGJpdGNvZGUgYXMgaW5wdXQg
YW5kICJKSVRzIiBpdCwgaW4gdGhlCisgKiBzYW1lIHdheSB0aGF0IHRoZSBGVEwgd291bGQgdXNl
IExMVk0gdG8gSklUIHRoZSBJUiB0aGF0IGl0IGdlbmVyYXRlcy4KKyAqIFRoaXMgaXMgbWVhbnQg
Zm9yIHVzZSBhcyBhIHJlZHVjdGlvbiB3aGVuIGNvbW11bmljYXRpbmcgdG8gTExWTWVycworICog
YWJvdXQgYnVncywgYW5kIGZvciBxdWljayAid2hhdC1pZiIgdGVzdGluZyB0byBzZWUgaG93IG91
ciBvcHRpbWl6YXRpb24KKyAqIHBpcGVsaW5lIHBlcmZvcm1zLiBCZWNhdXNlIG9mIGl0cyB1c2Ug
YXMgYSByZWR1Y3Rpb24sIHRoaXMgdG9vbCBpcworICogaW50ZW50aW9uYWxseSBzdGFuZGFsb25l
IGFuZCBpdCB3b3VsZCBiZSBncmVhdCBpZiBpdCBjb250aW51ZXMgdG8gZml0CisgKiBpbiBvbmUg
ZmlsZS4KKyAqLworCisjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgor
I2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN5cy9t
bWFuLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKyNpbmNsdWRlIDxsbHZtLWMvQW5hbHlzaXMu
aD4KKyNpbmNsdWRlIDxsbHZtLWMvQml0UmVhZGVyLmg+CisjaW5jbHVkZSA8bGx2bS1jL0NvcmUu
aD4KKyNpbmNsdWRlIDxsbHZtLWMvRGlzYXNzZW1ibGVyLmg+CisjaW5jbHVkZSA8bGx2bS1jL0V4
ZWN1dGlvbkVuZ2luZS5oPgorI2luY2x1ZGUgPGxsdm0tYy9UYXJnZXQuaD4KKyNpbmNsdWRlIDxs
bHZtLWMvVHJhbnNmb3Jtcy9QYXNzTWFuYWdlckJ1aWxkZXIuaD4KKyNpbmNsdWRlIDxsbHZtLWMv
VHJhbnNmb3Jtcy9TY2FsYXIuaD4KKworc3RydWN0IE1lbW9yeVNlY3Rpb24geworICAgIHVpbnQ4
X3QgKnN0YXJ0OworICAgIHNpemVfdCBzaXplOworICAgIHN0cnVjdCBNZW1vcnlTZWN0aW9uICpu
ZXh0OworfTsKKworc3RhdGljIHN0cnVjdCBNZW1vcnlTZWN0aW9uKiBzZWN0aW9uSGVhZDsKKwor
c3RhdGljIHVpbnQ4X3QgKm1tQWxsb2NhdGVDb2RlU2VjdGlvbigKKyAgICB2b2lkICpvcGFxdWVT
dGF0ZSwgdWludHB0cl90IHNpemUsIHVuc2lnbmVkIGFsaWdubWVudCwgdW5zaWduZWQgc2VjdGlv
bklEKQoreworICAgIHNpemVfdCBwYWdlU2l6ZSA9IGdldHBhZ2VzaXplKCk7CisgICAgCisgICAg
dWludDhfdCAqc3RhcnQgPSBtbWFwKAorICAgICAgICAwLCAoc2l6ZSArIHBhZ2VTaXplIC0gMSkg
JiB+cGFnZVNpemUsIAorICAgICAgICBQUk9UX1dSSVRFIHwgUFJPVF9SRUFEIHwgUFJPVF9FWEVD
LAorICAgICAgICBNQVBfQU5PTiB8IE1BUF9QUklWQVRFLCAtMSwgMCk7CisgICAgaWYgKHN0YXJ0
ID09ICh1aW50OF90KiktMSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVuYWJsZSB0byBh
bGxvY2F0ZSAlIiBQUkl1UFRSICIgYnl0ZXMgb2YgZXhlY3V0YWJsZSBtZW1vcnkuXG4iLCBzaXpl
KTsKKyAgICAgICAgZXhpdCgxKTsKKyAgICB9CisgICAgCisgICAgc3RydWN0IE1lbW9yeVNlY3Rp
b24gKnNlY3Rpb24gPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBNZW1vcnlTZWN0aW9uKSk7CisgICAg
c2VjdGlvbi0+c3RhcnQgPSBzdGFydDsKKyAgICBzZWN0aW9uLT5zaXplID0gc2l6ZTsKKyAgICBz
ZWN0aW9uLT5uZXh0ID0gc2VjdGlvbkhlYWQ7CisgICAgc2VjdGlvbkhlYWQgPSBzZWN0aW9uOwor
CisgICAgcmV0dXJuIHN0YXJ0OworfQorCitzdGF0aWMgdWludDhfdCAqbW1BbGxvY2F0ZURhdGFT
ZWN0aW9uKAorICAgIHZvaWQgKm9wYXF1ZVN0YXRlLCB1aW50cHRyX3Qgc2l6ZSwgdW5zaWduZWQg
YWxpZ25tZW50LCB1bnNpZ25lZCBzZWN0aW9uSUQsCisgICAgTExWTUJvb2wgaXNSZWFkT25seSkK
K3sKKyAgICByZXR1cm4gbW1BbGxvY2F0ZUNvZGVTZWN0aW9uKG9wYXF1ZVN0YXRlLCBzaXplLCBh
bGlnbm1lbnQsIHNlY3Rpb25JRCk7Cit9CisKK3N0YXRpYyBMTFZNQm9vbCBtbUFwcGx5UGVybWlz
c2lvbnModm9pZCAqb3BhcXVlLCBjaGFyICoqbWVzc2FnZSkKK3sKKyAgICByZXR1cm4gMDsKK30K
Kworc3RhdGljIHZvaWQgbW1EZXN0cm95KHZvaWQgKm9wYXF1ZSkKK3sKK30KKworc3RhdGljIGNv
bnN0IGNoYXIgKnN5bWJvbExvb2t1cENhbGxiYWNrKAorICAgIHZvaWQgKm9wYXF1ZSwgdWludDY0
X3QgcmVmZXJlbmNlVmFsdWUsIHVpbnQ2NF90ICpyZWZlcmVuY2VUeXBlLCB1aW50NjRfdCByZWZl
cmVuY2VQQywKKyAgICBjb25zdCBjaGFyICoqcmVmZXJlbmNlTmFtZSkKK3sKKyAgICBzdGF0aWMg
Y2hhciBzeW1ib2xTdHJpbmdbMjBdOworICAgIAorICAgIHN3aXRjaCAoKnJlZmVyZW5jZVR5cGUp
IHsKKyAgICBjYXNlIExMVk1EaXNhc3NlbWJsZXJfUmVmZXJlbmNlVHlwZV9Jbk91dF9Ob25lOgor
ICAgICAgICByZXR1cm4gMDsKKyAgICBjYXNlIExMVk1EaXNhc3NlbWJsZXJfUmVmZXJlbmNlVHlw
ZV9Jbl9CcmFuY2g6CisgICAgICAgICpyZWZlcmVuY2VOYW1lID0gMDsKKyAgICAgICAgKnJlZmVy
ZW5jZVR5cGUgPSBMTFZNRGlzYXNzZW1ibGVyX1JlZmVyZW5jZVR5cGVfSW5PdXRfTm9uZTsKKyAg
ICAgICAgc25wcmludGYoCisgICAgICAgICAgICBzeW1ib2xTdHJpbmcsIHNpemVvZihzeW1ib2xT
dHJpbmcpLCAiMHglbHgiLAorICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpcmVmZXJlbmNlVmFs
dWUpOworICAgICAgICByZXR1cm4gc3ltYm9sU3RyaW5nOworICAgIGRlZmF1bHQ6CisgICAgICAg
IGZwcmludGYoc3RkZXJyLCAiVW5leHBlY3RlZCByZWZlcmVuY2UgdHlwZSFcbiIpOworICAgICAg
ICBleGl0KDEpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK2ludCBtYWluKGludCBj
LCBjaGFyICoqdikKK3sKKyAgICBMTFZNRGlzYXNtQ29udGV4dFJlZiBkaXNhc3NlbWJsZXI7Cisg
ICAgTExWTUV4ZWN1dGlvbkVuZ2luZVJlZiBlbmdpbmU7CisgICAgc3RydWN0IExMVk1NQ0pJVENv
bXBpbGVyT3B0aW9ucyBvcHRpb25zOworICAgIExMVk1NZW1vcnlCdWZmZXJSZWYgYnVmZmVyOwor
ICAgIExMVk1Nb2R1bGVSZWYgbW9kdWxlOworICAgIExMVk1WYWx1ZVJlZiB2YWx1ZTsKKyAgICBz
dHJ1Y3QgTWVtb3J5U2VjdGlvbiAqc2VjdGlvbjsKKyAgICBjaGFyICplcnJvcjsKKyAgICBjb25z
dCBjaGFyICptb2RlOworICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lOworICAgIExMVk1QYXNzTWFu
YWdlclJlZiBmdW5jdGlvblBhc3NlcyA9IDA7CisgICAgTExWTVBhc3NNYW5hZ2VyUmVmIG1vZHVs
ZVBhc3NlcyA9IDA7CisgICAgCisgICAgTExWTUxpbmtJbk1DSklUKCk7CisgICAgTExWTUluaXRp
YWxpemVOYXRpdmVUYXJnZXQoKTsKKyAgICBMTFZNSW5pdGlhbGl6ZVg4NkFzbVByaW50ZXIoKTsK
KyAgICBMTFZNSW5pdGlhbGl6ZVg4NkRpc2Fzc2VtYmxlcigpOworCisgICAgaWYgKGMgIT0gMykg
eworICAgICAgICBwcmludGYoIlVzYWdlOiBSZWR1Y2VkRlRMIDxtb2RlPiA8ZmlsZT5cbiIpOwor
ICAgICAgICBleGl0KDEpOworICAgIH0KKyAgICAKKyAgICBtb2RlID0gdlsxXTsKKyAgICBmaWxl
bmFtZSA9IHZbMl07CisgICAgCisgICAgaWYgKExMVk1DcmVhdGVNZW1vcnlCdWZmZXJXaXRoQ29u
dGVudHNPZkZpbGUoZmlsZW5hbWUsICZidWZmZXIsICZlcnJvcikpIHsKKyAgICAgICAgZnByaW50
ZihzdGRlcnIsICJFcnJvciByZWFkaW5nIGZpbGUgJXM6ICVzXG4iLCBmaWxlbmFtZSwgZXJyb3Ip
OworICAgICAgICBleGl0KDEpOworICAgIH0KKyAgICAKKyAgICBpZiAoTExWTVBhcnNlQml0Y29k
ZShidWZmZXIsICZtb2R1bGUsICZlcnJvcikpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJF
cnJvciBwYXJzaW5nIGZpbGUgJXM6ICVzXG4iLCBmaWxlbmFtZSwgZXJyb3IpOworICAgICAgICBl
eGl0KDEpOworICAgIH0KKworICAgIHByaW50ZigiTW9kdWxlIGFmdGVyIHBhcnNpbmc6XG4iKTsK
KyAgICBMTFZNRHVtcE1vZHVsZShtb2R1bGUpOworCisgICAgTExWTUluaXRpYWxpemVNQ0pJVENv
bXBpbGVyT3B0aW9ucygmb3B0aW9ucywgc2l6ZW9mKG9wdGlvbnMpKTsKKyAgICBvcHRpb25zLk9w
dExldmVsID0gMjsKKyAgICBvcHRpb25zLkVuYWJsZUZhc3RJU2VsID0gMDsKKyAgICBvcHRpb25z
Lk1DSk1NID0gTExWTUNyZWF0ZVNpbXBsZU1DSklUTWVtb3J5TWFuYWdlcigKKyAgICAgICAgMCwg
bW1BbGxvY2F0ZUNvZGVTZWN0aW9uLCBtbUFsbG9jYXRlRGF0YVNlY3Rpb24sIG1tQXBwbHlQZXJt
aXNzaW9ucywgbW1EZXN0cm95KTsKKyAgICAKKyAgICBpZiAoTExWTUNyZWF0ZU1DSklUQ29tcGls
ZXJGb3JNb2R1bGUoJmVuZ2luZSwgbW9kdWxlLCAmb3B0aW9ucywgc2l6ZW9mKG9wdGlvbnMpLCAm
ZXJyb3IpKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3IgYnVpbGRpbmcgTUNKSVQ6
ICVzXG4iLCBlcnJvcik7CisgICAgICAgIGV4aXQoMSk7CisgICAgfQorICAgIAorICAgIGlmICgh
c3RyY2FzZWNtcChtb2RlLCAic2ltcGxlIikpIHsKKyAgICAgICAgbW9kdWxlUGFzc2VzID0gTExW
TUNyZWF0ZVBhc3NNYW5hZ2VyKCk7CisgICAgICAgIExMVk1BZGRUYXJnZXREYXRhKExMVk1HZXRF
eGVjdXRpb25FbmdpbmVUYXJnZXREYXRhKGVuZ2luZSksIG1vZHVsZVBhc3Nlcyk7CisgICAgICAg
IExMVk1BZGRDb25zdGFudFByb3BhZ2F0aW9uUGFzcyhtb2R1bGVQYXNzZXMpOworICAgICAgICBM
TFZNQWRkSW5zdHJ1Y3Rpb25Db21iaW5pbmdQYXNzKG1vZHVsZVBhc3Nlcyk7CisgICAgICAgIExM
Vk1BZGRQcm9tb3RlTWVtb3J5VG9SZWdpc3RlclBhc3MobW9kdWxlUGFzc2VzKTsKKyAgICAgICAg
TExWTUFkZEJhc2ljQWxpYXNBbmFseXNpc1Bhc3MobW9kdWxlUGFzc2VzKTsKKyAgICAgICAgTExW
TUFkZFR5cGVCYXNlZEFsaWFzQW5hbHlzaXNQYXNzKG1vZHVsZVBhc3Nlcyk7CisgICAgICAgIExM
Vk1BZGRHVk5QYXNzKG1vZHVsZVBhc3Nlcyk7CisgICAgICAgIExMVk1BZGRDRkdTaW1wbGlmaWNh
dGlvblBhc3MobW9kdWxlUGFzc2VzKTsKKyAgICAgICAgTExWTVJ1blBhc3NNYW5hZ2VyKG1vZHVs
ZVBhc3NlcywgbW9kdWxlKTsKKyAgICB9IGVsc2UgaWYgKCFzdHJjYXNlY21wKG1vZGUsICJvcHQi
KSkgeworICAgICAgICBMTFZNUGFzc01hbmFnZXJCdWlsZGVyUmVmIHBhc3NCdWlsZGVyOworCisg
ICAgICAgIHBhc3NCdWlsZGVyID0gTExWTVBhc3NNYW5hZ2VyQnVpbGRlckNyZWF0ZSgpOworICAg
ICAgICBMTFZNUGFzc01hbmFnZXJCdWlsZGVyU2V0T3B0TGV2ZWwocGFzc0J1aWxkZXIsIDIpOwor
ICAgICAgICBMTFZNUGFzc01hbmFnZXJCdWlsZGVyU2V0U2l6ZUxldmVsKHBhc3NCdWlsZGVyLCAw
KTsKKyAgICAgICAgCisgICAgICAgIGZ1bmN0aW9uUGFzc2VzID0gTExWTUNyZWF0ZUZ1bmN0aW9u
UGFzc01hbmFnZXJGb3JNb2R1bGUobW9kdWxlKTsKKyAgICAgICAgbW9kdWxlUGFzc2VzID0gTExW
TUNyZWF0ZVBhc3NNYW5hZ2VyKCk7CisgICAgICAgIAorICAgICAgICBMTFZNQWRkVGFyZ2V0RGF0
YShMTFZNR2V0RXhlY3V0aW9uRW5naW5lVGFyZ2V0RGF0YShlbmdpbmUpLCBtb2R1bGVQYXNzZXMp
OworICAgICAgICAKKyAgICAgICAgTExWTVBhc3NNYW5hZ2VyQnVpbGRlclBvcHVsYXRlRnVuY3Rp
b25QYXNzTWFuYWdlcihwYXNzQnVpbGRlciwgZnVuY3Rpb25QYXNzZXMpOworICAgICAgICBMTFZN
UGFzc01hbmFnZXJCdWlsZGVyUG9wdWxhdGVNb2R1bGVQYXNzTWFuYWdlcihwYXNzQnVpbGRlciwg
bW9kdWxlUGFzc2VzKTsKKyAgICAgICAgCisgICAgICAgIExMVk1QYXNzTWFuYWdlckJ1aWxkZXJE
aXNwb3NlKHBhc3NCdWlsZGVyKTsKKyAgICAgICAgCisgICAgICAgIExMVk1Jbml0aWFsaXplRnVu
Y3Rpb25QYXNzTWFuYWdlcihmdW5jdGlvblBhc3Nlcyk7CisgICAgICAgIGZvciAodmFsdWUgPSBM
TFZNR2V0Rmlyc3RGdW5jdGlvbihtb2R1bGUpOyB2YWx1ZTsgdmFsdWUgPSBMTFZNR2V0TmV4dEZ1
bmN0aW9uKHZhbHVlKSkKKyAgICAgICAgICAgIExMVk1SdW5GdW5jdGlvblBhc3NNYW5hZ2VyKGZ1
bmN0aW9uUGFzc2VzLCB2YWx1ZSk7CisgICAgICAgIExMVk1GaW5hbGl6ZUZ1bmN0aW9uUGFzc01h
bmFnZXIoZnVuY3Rpb25QYXNzZXMpOworICAgICAgICAKKyAgICAgICAgTExWTVJ1blBhc3NNYW5h
Z2VyKG1vZHVsZVBhc3NlcywgbW9kdWxlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBmcHJpbnRm
KHN0ZGVyciwgIkJhZCBvcHRpbWl6YXRpb24gbW9kZTogJXMuXG4iLCBtb2RlKTsKKyAgICAgICAg
ZnByaW50ZihzdGRlcnIsICJWYWxpZCBtb2RlcyBhcmU6IFwic2ltcGxlXCIgb3IgXCJvcHRcIi5c
biIpOworICAgICAgICBleGl0KDEpOworICAgIH0KKworICAgIHByaW50ZigiTW9kdWxlIGFmdGVy
IG9wdGltaXphdGlvbjpcbiIpOworICAgIExMVk1EdW1wTW9kdWxlKG1vZHVsZSk7CisgICAgCisg
ICAgZm9yICh2YWx1ZSA9IExMVk1HZXRGaXJzdEZ1bmN0aW9uKG1vZHVsZSk7IHZhbHVlOyB2YWx1
ZSA9IExMVk1HZXROZXh0RnVuY3Rpb24odmFsdWUpKSB7CisgICAgICAgIGlmIChMTFZNSXNEZWNs
YXJhdGlvbih2YWx1ZSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgTExWTUdldFBv
aW50ZXJUb0dsb2JhbChlbmdpbmUsIHZhbHVlKTsKKyAgICB9CisKKyAgICBpZiAoZnVuY3Rpb25Q
YXNzZXMpCisgICAgICAgIExMVk1EaXNwb3NlUGFzc01hbmFnZXIoZnVuY3Rpb25QYXNzZXMpOwor
ICAgIGlmIChtb2R1bGVQYXNzZXMpCisgICAgICAgIExMVk1EaXNwb3NlUGFzc01hbmFnZXIobW9k
dWxlUGFzc2VzKTsKKyAgICAKKyAgICBMTFZNRGlzcG9zZUV4ZWN1dGlvbkVuZ2luZShlbmdpbmUp
OworICAgIAorICAgIGRpc2Fzc2VtYmxlciA9IExMVk1DcmVhdGVEaXNhc20oIng4Nl82NC1hcHBs
ZS1kYXJ3aW4iLCAwLCAwLCAwLCBzeW1ib2xMb29rdXBDYWxsYmFjayk7CisgICAgaWYgKCFkaXNh
c3NlbWJsZXIpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJFcnJvciBidWlsZGluZyBkaXNh
c3NlbWJsZXIuXG4iKTsKKyAgICAgICAgZXhpdCgxKTsKKyAgICB9CisgICAgCisgICAgZm9yIChz
ZWN0aW9uID0gc2VjdGlvbkhlYWQ7IHNlY3Rpb247IHNlY3Rpb24gPSBzZWN0aW9uLT5uZXh0KSB7
CisgICAgICAgIHByaW50ZigiRGlzYXNzZW1ibHkgZm9yIHNlY3Rpb24gJXA6XG4iLCBzZWN0aW9u
KTsKKyAgICAgICAgCisgICAgICAgIGNoYXIgcGNTdHJpbmdbMjBdOworICAgICAgICBjaGFyIGlu
c3RydWN0aW9uU3RyaW5nWzEwMDBdOworICAgICAgICB1aW50OF90ICpwYzsKKyAgICAgICAgdWlu
dDhfdCAqZW5kOworICAgICAgICAKKyAgICAgICAgcGMgPSBzZWN0aW9uLT5zdGFydDsKKyAgICAg
ICAgZW5kID0gcGMgKyBzZWN0aW9uLT5zaXplOworICAgICAgICAKKyAgICAgICAgd2hpbGUgKHBj
IDwgZW5kKSB7CisgICAgICAgICAgICBzbnByaW50ZigKKyAgICAgICAgICAgICAgICBwY1N0cmlu
Zywgc2l6ZW9mKHBjU3RyaW5nKSwgIjB4JWx4IiwKKyAgICAgICAgICAgICAgICAodW5zaWduZWQg
bG9uZykodWludHB0cl90KXBjKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgc2l6ZV90IGlu
c3RydWN0aW9uU2l6ZSA9IExMVk1EaXNhc21JbnN0cnVjdGlvbigKKyAgICAgICAgICAgICAgICBk
aXNhc3NlbWJsZXIsIHBjLCBlbmQgLSBwYywgKHVpbnRwdHJfdClwYywKKyAgICAgICAgICAgICAg
ICBpbnN0cnVjdGlvblN0cmluZywgc2l6ZW9mKGluc3RydWN0aW9uU3RyaW5nKSk7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGlmICghaW5zdHJ1Y3Rpb25TaXplKQorICAgICAgICAgICAgICAg
IHNucHJpbnRmKGluc3RydWN0aW9uU3RyaW5nLCBzaXplb2YoaW5zdHJ1Y3Rpb25TdHJpbmcpLCAi
LmJ5dGUgMHglMDJ4IiwgKnBjKyspOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHBjICs9IGluc3RydWN0aW9uU2l6ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcHJpbnRm
KCIgICAgJTE2czogJXNcbiIsIHBjU3RyaW5nLCBpbnN0cnVjdGlvblN0cmluZyk7CisgICAgICAg
IH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKSW5kZXg6IFRvb2xzL1JlZHVjZWRG
VEwvYnVpbGQuc2gKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvUmVkdWNlZEZUTC9idWlsZC5zaAkocmV2
aXNpb24gMCkKKysrIFRvb2xzL1JlZHVjZWRGVEwvYnVpbGQuc2gJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxNCBAQAorIyEvYmluL3NoCisKK3NldCAtZQorc2V0IC14CisKK2lmIHRlc3QgIngk
e0xMVk1fUEFUSH0iID09ICJ4IgordGhlbgorICAgIGNvbmZpZ1BhdGg9Imxsdm0tY29uZmlnIgor
ZWxzZQorICAgIGNvbmZpZ1BhdGg9IiR7TExWTV9QQVRIfS9iaW4vbGx2bS1jb25maWciCitmaQor
CitjbGFuZyAtYyAtbyBSZWR1Y2VkRlRMLm8gUmVkdWNlZEZUTC5jIGAke2NvbmZpZ1BhdGh9IC0t
Y3BwZmxhZ3MgLS1jZmxhZ3NgCitjbGFuZysrIC1vIFJlZHVjZWRGVEwgUmVkdWNlZEZUTC5vIC1z
dGRsaWI9bGliYysrIGAke2NvbmZpZ1BhdGh9IC0tbGRmbGFncyAtLWxpYnNgCgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBUb29scy9SZWR1Y2VkRlRML2J1aWxkLnNoCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2
bjpleGVjdXRhYmxlCiMjIC0wLDAgKzEgIyMKKyoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9w
ZXJ0eQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206616</attachid>
            <date>2013-07-13 11:11:52 -0700</date>
            <delta_ts>2013-07-13 12:21:40 -0700</delta_ts>
            <desc>added more things</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>14557</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1MjYxMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDEzLTA3LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisK
KyAgICAgICAgZm91cnRoVGllcjogV2Ugc2hvdWxkIGhhdmUgYSByZWR1Y2VkIEZUTCBMTFZNIHBp
cGVsaW5lIHRvb2wgaW4gdGhlIHJlcG9zaXRvcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExODY0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkIGEgdG9vbCB0aGF0IHRha2VzIGluIGFu
IExMVk0gYml0Y29kZSBmaWxlIGFuZCBKSVRzIGl0IGluIGV4YWN0bHkgdGhlIHNhbWUKKyAgICAg
ICAgd2F5IHRoYXQgdGhlIEZUTCB3b3VsZC4KKworICAgICAgICAqIFJlZHVjZWRGVEw6IEFkZGVk
LgorICAgICAgICAqIFJlZHVjZWRGVEwvUmVkdWNlZEZUTC5jOiBBZGRlZC4KKyAgICAgICAgKE1l
bW9yeVNlY3Rpb24pOgorICAgICAgICAobW1BbGxvY2F0ZUNvZGVTZWN0aW9uKToKKyAgICAgICAg
KG1tQWxsb2NhdGVEYXRhU2VjdGlvbik6CisgICAgICAgIChtbUFwcGx5UGVybWlzc2lvbnMpOgor
ICAgICAgICAobW1EZXN0cm95KToKKyAgICAgICAgKHN5bWJvbExvb2t1cENhbGxiYWNrKToKKyAg
ICAgICAgKG1haW4pOgorICAgICAgICAqIFJlZHVjZWRGVEwvYnVpbGQuc2g6IEFkZGVkLgorCiAy
MDEzLTA2LTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgTWVy
Z2UgdHJ1bmsgcjE0NjU0OC4KSW5kZXg6IFRvb2xzL1JlZHVjZWRGVEwvUmVkdWNlZEZUTC5jCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1JlZHVjZWRGVEwvUmVkdWNlZEZUTC5jCShyZXZpc2lvbiAwKQor
KysgVG9vbHMvUmVkdWNlZEZUTC9SZWR1Y2VkRlRMLmMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwzNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
LyoKKyAqIFNpbXBsZSB0b29sIHRoYXQgdGFrZXMgc29tZSBMTFZNIGJpdGNvZGUgYXMgaW5wdXQg
YW5kICJKSVRzIiBpdCwgaW4gdGhlCisgKiBzYW1lIHdheSB0aGF0IHRoZSBGVEwgd291bGQgdXNl
IExMVk0gdG8gSklUIHRoZSBJUiB0aGF0IGl0IGdlbmVyYXRlcy4KKyAqIFRoaXMgaXMgbWVhbnQg
Zm9yIHVzZSBhcyBhIHJlZHVjdGlvbiB3aGVuIGNvbW11bmljYXRpbmcgdG8gTExWTWVycworICog
YWJvdXQgYnVncywgYW5kIGZvciBxdWljayAid2hhdC1pZiIgdGVzdGluZyB0byBzZWUgaG93IG91
ciBvcHRpbWl6YXRpb24KKyAqIHBpcGVsaW5lIHBlcmZvcm1zLiBCZWNhdXNlIG9mIGl0cyB1c2Ug
YXMgYSByZWR1Y3Rpb24sIHRoaXMgdG9vbCBpcworICogaW50ZW50aW9uYWxseSBzdGFuZGFsb25l
IGFuZCBpdCB3b3VsZCBiZSBncmVhdCBpZiBpdCBjb250aW51ZXMgdG8gZml0CisgKiBpbiBvbmUg
ZmlsZS4KKyAqLworCisjaW5jbHVkZSA8Z2V0b3B0Lmg+CisjaW5jbHVkZSA8aW50dHlwZXMuaD4K
KyNpbmNsdWRlIDxzdGRib29sLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRs
aWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgorI2luY2x1
ZGUgPHN5cy90aW1lLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKyNpbmNsdWRlIDxsbHZtLWMv
QW5hbHlzaXMuaD4KKyNpbmNsdWRlIDxsbHZtLWMvQml0UmVhZGVyLmg+CisjaW5jbHVkZSA8bGx2
bS1jL0NvcmUuaD4KKyNpbmNsdWRlIDxsbHZtLWMvRGlzYXNzZW1ibGVyLmg+CisjaW5jbHVkZSA8
bGx2bS1jL0V4ZWN1dGlvbkVuZ2luZS5oPgorI2luY2x1ZGUgPGxsdm0tYy9UYXJnZXQuaD4KKyNp
bmNsdWRlIDxsbHZtLWMvVHJhbnNmb3Jtcy9QYXNzTWFuYWdlckJ1aWxkZXIuaD4KKyNpbmNsdWRl
IDxsbHZtLWMvVHJhbnNmb3Jtcy9TY2FsYXIuaD4KKworc3RhdGljIHZvaWQgdXNhZ2UoKQorewor
ICAgIHByaW50ZigiVXNhZ2U6IFJlZHVjZWRGVEwgPGZpbGUxPiBbPGZpbGUyPiAuLi5dXG4iKTsK
KyAgICBwcmludGYoIlxuIik7CisgICAgcHJpbnRmKCJPcHRpb25zOlxuIik7CisgICAgcHJpbnRm
KCItLXZlcmJvc2UgICAgICBEaXNwbGF5IG1vcmUgaW5mb3JtYXRpb24sIGluY2x1ZGluZyBtb2R1
bGUgZHVtcHMuXG4iKTsKKyAgICBwcmludGYoIi0tdGltaW5nICAgICAgIE1lYXN1cmUgdGhlIHRp
bWUgaXQgdGFrZXMgdG8gY29tcGlsZS5cbiIpOworICAgIHByaW50ZigiLS1kaXNhc3NlbWJsZSAg
RGlzYXNzZW1ibGUgYWxsIG9mIHRoZSBnZW5lcmF0ZWQgY29kZSBhdCB0aGUgZW5kLlxuIik7Cisg
ICAgcHJpbnRmKCItLW1vZGUgPG1vZGU+ICBTZXQgdGhlIG9wdGltaXphdGlvbiBtb2RlIChlaXRo
ZXIgXCJzaW1wbGVcIiBvciBcIm9wdFwiKS5cbiIpOworICAgIHByaW50ZigiLS1oZWxwICAgICAg
ICAgUHJpbnQgdGhpcyBtZXNzYWdlLlxuIik7CisgICAgZXhpdCgxKTsKK30KKworc3RhdGljIGRv
dWJsZSBjdXJyZW50VGltZSgpCit7CisgICAgc3RydWN0IHRpbWV2YWwgbm93OworICAgIGdldHRp
bWVvZmRheSgmbm93LCAwKTsKKyAgICByZXR1cm4gbm93LnR2X3NlYyArIG5vdy50dl91c2VjIC8g
MTAwMDAwMC4wOworfQorCitzdHJ1Y3QgTWVtb3J5U2VjdGlvbiB7CisgICAgdWludDhfdCAqc3Rh
cnQ7CisgICAgc2l6ZV90IHNpemU7CisgICAgc3RydWN0IE1lbW9yeVNlY3Rpb24gKm5leHQ7Cit9
OworCitzdGF0aWMgc3RydWN0IE1lbW9yeVNlY3Rpb24qIHNlY3Rpb25IZWFkOworCitzdGF0aWMg
dWludDhfdCAqbW1BbGxvY2F0ZUNvZGVTZWN0aW9uKAorICAgIHZvaWQgKm9wYXF1ZVN0YXRlLCB1
aW50cHRyX3Qgc2l6ZSwgdW5zaWduZWQgYWxpZ25tZW50LCB1bnNpZ25lZCBzZWN0aW9uSUQpCit7
CisgICAgc2l6ZV90IHBhZ2VTaXplID0gZ2V0cGFnZXNpemUoKTsKKyAgICAKKyAgICB1aW50OF90
ICpzdGFydCA9IG1tYXAoCisgICAgICAgIDAsIChzaXplICsgcGFnZVNpemUgLSAxKSAmIH5wYWdl
U2l6ZSwgCisgICAgICAgIFBST1RfV1JJVEUgfCBQUk9UX1JFQUQgfCBQUk9UX0VYRUMsCisgICAg
ICAgIE1BUF9BTk9OIHwgTUFQX1BSSVZBVEUsIC0xLCAwKTsKKyAgICBpZiAoc3RhcnQgPT0gKHVp
bnQ4X3QqKS0xKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiVW5hYmxlIHRvIGFsbG9jYXRl
ICUiIFBSSXVQVFIgIiBieXRlcyBvZiBleGVjdXRhYmxlIG1lbW9yeS5cbiIsIHNpemUpOworICAg
ICAgICBleGl0KDEpOworICAgIH0KKyAgICAKKyAgICBzdHJ1Y3QgTWVtb3J5U2VjdGlvbiAqc2Vj
dGlvbiA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IE1lbW9yeVNlY3Rpb24pKTsKKyAgICBzZWN0aW9u
LT5zdGFydCA9IHN0YXJ0OworICAgIHNlY3Rpb24tPnNpemUgPSBzaXplOworICAgIHNlY3Rpb24t
Pm5leHQgPSBzZWN0aW9uSGVhZDsKKyAgICBzZWN0aW9uSGVhZCA9IHNlY3Rpb247CisKKyAgICBy
ZXR1cm4gc3RhcnQ7Cit9CisKK3N0YXRpYyB1aW50OF90ICptbUFsbG9jYXRlRGF0YVNlY3Rpb24o
CisgICAgdm9pZCAqb3BhcXVlU3RhdGUsIHVpbnRwdHJfdCBzaXplLCB1bnNpZ25lZCBhbGlnbm1l
bnQsIHVuc2lnbmVkIHNlY3Rpb25JRCwKKyAgICBMTFZNQm9vbCBpc1JlYWRPbmx5KQoreworICAg
IHJldHVybiBtbUFsbG9jYXRlQ29kZVNlY3Rpb24ob3BhcXVlU3RhdGUsIHNpemUsIGFsaWdubWVu
dCwgc2VjdGlvbklEKTsKK30KKworc3RhdGljIExMVk1Cb29sIG1tQXBwbHlQZXJtaXNzaW9ucyh2
b2lkICpvcGFxdWUsIGNoYXIgKiptZXNzYWdlKQoreworICAgIHJldHVybiAwOworfQorCitzdGF0
aWMgdm9pZCBtbURlc3Ryb3kodm9pZCAqb3BhcXVlKQoreworfQorCitzdGF0aWMgY29uc3QgY2hh
ciAqc3ltYm9sTG9va3VwQ2FsbGJhY2soCisgICAgdm9pZCAqb3BhcXVlLCB1aW50NjRfdCByZWZl
cmVuY2VWYWx1ZSwgdWludDY0X3QgKnJlZmVyZW5jZVR5cGUsIHVpbnQ2NF90IHJlZmVyZW5jZVBD
LAorICAgIGNvbnN0IGNoYXIgKipyZWZlcmVuY2VOYW1lKQoreworICAgIHN0YXRpYyBjaGFyIHN5
bWJvbFN0cmluZ1syMF07CisgICAgCisgICAgc3dpdGNoICgqcmVmZXJlbmNlVHlwZSkgeworICAg
IGNhc2UgTExWTURpc2Fzc2VtYmxlcl9SZWZlcmVuY2VUeXBlX0luT3V0X05vbmU6CisgICAgICAg
IHJldHVybiAwOworICAgIGNhc2UgTExWTURpc2Fzc2VtYmxlcl9SZWZlcmVuY2VUeXBlX0luX0Jy
YW5jaDoKKyAgICAgICAgKnJlZmVyZW5jZU5hbWUgPSAwOworICAgICAgICAqcmVmZXJlbmNlVHlw
ZSA9IExMVk1EaXNhc3NlbWJsZXJfUmVmZXJlbmNlVHlwZV9Jbk91dF9Ob25lOworICAgICAgICBz
bnByaW50ZigKKyAgICAgICAgICAgIHN5bWJvbFN0cmluZywgc2l6ZW9mKHN5bWJvbFN0cmluZyks
ICIweCVseCIsCisgICAgICAgICAgICAodW5zaWduZWQgbG9uZylyZWZlcmVuY2VWYWx1ZSk7Cisg
ICAgICAgIHJldHVybiBzeW1ib2xTdHJpbmc7CisgICAgZGVmYXVsdDoKKyAgICAgICAgZnByaW50
ZihzdGRlcnIsICJVbmV4cGVjdGVkIHJlZmVyZW5jZSB0eXBlIVxuIik7CisgICAgICAgIGV4aXQo
MSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworc3RhdGljIGludCB2ZXJib3NlRmxh
ZyA9IDA7CitzdGF0aWMgaW50IHRpbWluZ0ZsYWcgPSAwOworc3RhdGljIGludCBkaXNhc3NlbWJs
ZUZsYWcgPSAwOworCitpbnQgbWFpbihpbnQgYywgY2hhciAqKnYpCit7CisgICAgTExWTU1lbW9y
eUJ1ZmZlclJlZiBidWZmZXI7CisgICAgTExWTU1vZHVsZVJlZiogbW9kdWxlczsKKyAgICBjaGFy
ICplcnJvcjsKKyAgICBjb25zdCBjaGFyICptb2RlID0gIm9wdCI7CisgICAgY29uc3QgY2hhciAq
KmZpbGVuYW1lczsKKyAgICB1bnNpZ25lZCBudW1GaWxlczsKKyAgICB1bnNpZ25lZCBpOworICAg
IGJvb2wgbW9yZU9wdGlvbnM7CisgICAgCisgICAgbW9yZU9wdGlvbnMgPSB0cnVlOworICAgIHdo
aWxlIChtb3JlT3B0aW9ucykgeworICAgICAgICBzdGF0aWMgc3RydWN0IG9wdGlvbiBsb25nT3B0
aW9uc1tdID0geworICAgICAgICAgICAgeyJ2ZXJib3NlIiwgbm9fYXJndW1lbnQsICZ2ZXJib3Nl
RmxhZywgMX0sCisgICAgICAgICAgICB7InRpbWluZyIsIG5vX2FyZ3VtZW50LCAmdGltaW5nRmxh
ZywgMX0sCisgICAgICAgICAgICB7ImRpc2Fzc2VtYmxlIiwgbm9fYXJndW1lbnQsICZkaXNhc3Nl
bWJsZUZsYWcsIDF9LAorICAgICAgICAgICAgeyJtb2RlIiwgcmVxdWlyZWRfYXJndW1lbnQsIDAs
IDB9LAorICAgICAgICAgICAgeyJoZWxwIiwgbm9fYXJndW1lbnQsIDAsIDB9CisgICAgICAgIH07
CisgICAgICAgIAorICAgICAgICBpbnQgb3B0aW9uSW5kZXg7CisgICAgICAgIGludCBvcHRpb25W
YWx1ZTsKKyAgICAgICAgCisgICAgICAgIG9wdGlvblZhbHVlID0gZ2V0b3B0X2xvbmcoYywgdiwg
IiIsIGxvbmdPcHRpb25zLCAmb3B0aW9uSW5kZXgpOworICAgICAgICAKKyAgICAgICAgc3dpdGNo
IChvcHRpb25WYWx1ZSkgeworICAgICAgICBjYXNlIC0xOgorICAgICAgICAgICAgbW9yZU9wdGlv
bnMgPSBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNh
c2UgMDogeworICAgICAgICAgICAgY29uc3QgY2hhciogdGhpc09wdGlvbiA9IGxvbmdPcHRpb25z
W29wdGlvbkluZGV4XS5uYW1lOworICAgICAgICAgICAgaWYgKCFzdHJjbXAodGhpc09wdGlvbiwg
ImhlbHAiKSkKKyAgICAgICAgICAgICAgICB1c2FnZSgpOworICAgICAgICAgICAgaWYgKCFzdHJj
bXAodGhpc09wdGlvbiwgIm1vZGUiKSkgeworICAgICAgICAgICAgICAgIG1vZGUgPSBzdHJkdXAo
b3B0YXJnKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSAnPyc6Cisg
ICAgICAgICAgICBleGl0KDApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHByaW50Zigib3B0aW9uVmFsdWUgPSAlZFxuIiwg
b3B0aW9uVmFsdWUpOworICAgICAgICAgICAgYWJvcnQoKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgfQorICAgIAorICAgIExMVk1MaW5rSW5NQ0pJVCgpOworICAgIExMVk1J
bml0aWFsaXplTmF0aXZlVGFyZ2V0KCk7CisgICAgTExWTUluaXRpYWxpemVYODZBc21QcmludGVy
KCk7CisgICAgTExWTUluaXRpYWxpemVYODZEaXNhc3NlbWJsZXIoKTsKKworICAgIGZpbGVuYW1l
cyA9IChjb25zdCBjaGFyICoqKSh2ICsgb3B0aW5kKTsKKyAgICBudW1GaWxlcyA9IGMgLSBvcHRp
bmQ7CisgICAgCisgICAgaWYgKCFudW1GaWxlcykKKyAgICAgICAgdXNhZ2UoKTsKKyAgICAKKyAg
ICBtb2R1bGVzID0gbWFsbG9jKHNpemVvZihMTFZNTW9kdWxlUmVmKSAqIG51bUZpbGVzKTsKKyAg
ICAKKyAgICBmb3IgKGkgPSAwOyBpIDwgbnVtRmlsZXM7ICsraSkgeworICAgICAgICBjb25zdCBj
aGFyKiBmaWxlbmFtZSA9IGZpbGVuYW1lc1tpXTsKKyAgICAgICAgCisgICAgICAgIGlmIChMTFZN
Q3JlYXRlTWVtb3J5QnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKGZpbGVuYW1lLCAmYnVmZmVyLCAm
ZXJyb3IpKSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIHJlYWRpbmcgZmls
ZSAlczogJXNcbiIsIGZpbGVuYW1lLCBlcnJvcik7CisgICAgICAgICAgICBleGl0KDEpOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoTExWTVBhcnNlQml0Y29kZShidWZmZXIsIG1v
ZHVsZXMgKyBpLCAmZXJyb3IpKSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9y
IHBhcnNpbmcgZmlsZSAlczogJXNcbiIsIGZpbGVuYW1lLCBlcnJvcik7CisgICAgICAgICAgICBl
eGl0KDEpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAodmVyYm9zZUZsYWcpIHsK
KyAgICAgICAgICAgIHByaW50ZigiTW9kdWxlICMldSAoJXMpIGFmdGVyIHBhcnNpbmc6XG4iLCBp
LCBmaWxlbmFtZSk7CisgICAgICAgICAgICBMTFZNRHVtcE1vZHVsZShtb2R1bGVzW2ldKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGlmICh2ZXJib3NlRmxhZykKKyAgICAgICAgcHJpbnRmKCJH
ZW5lcmF0aW5nIGNvZGUgZm9yIG1vZHVsZXMuLi5cbiIpOworICAgIAorICAgIGZvciAoaSA9IDA7
IGkgPCBudW1GaWxlczsgKytpKSB7CisgICAgICAgIExMVk1Nb2R1bGVSZWYgbW9kdWxlOworICAg
ICAgICBMTFZNRXhlY3V0aW9uRW5naW5lUmVmIGVuZ2luZTsKKyAgICAgICAgc3RydWN0IExMVk1N
Q0pJVENvbXBpbGVyT3B0aW9ucyBvcHRpb25zOworICAgICAgICBMTFZNVmFsdWVSZWYgdmFsdWU7
CisgICAgICAgIExMVk1QYXNzTWFuYWdlclJlZiBmdW5jdGlvblBhc3NlcyA9IDA7CisgICAgICAg
IExMVk1QYXNzTWFuYWdlclJlZiBtb2R1bGVQYXNzZXMgPSAwOworICAgICAgICAKKyAgICAgICAg
ZG91YmxlIGJlZm9yZTsKKyAgICAgICAgCisgICAgICAgIGlmICh0aW1pbmdGbGFnKQorICAgICAg
ICAgICAgYmVmb3JlID0gY3VycmVudFRpbWUoKTsKKyAgICAgICAgCisgICAgICAgIG1vZHVsZSA9
IG1vZHVsZXNbaV07CisKKyAgICAgICAgTExWTUluaXRpYWxpemVNQ0pJVENvbXBpbGVyT3B0aW9u
cygmb3B0aW9ucywgc2l6ZW9mKG9wdGlvbnMpKTsKKyAgICAgICAgb3B0aW9ucy5PcHRMZXZlbCA9
IDI7CisgICAgICAgIG9wdGlvbnMuRW5hYmxlRmFzdElTZWwgPSAwOworICAgICAgICBvcHRpb25z
Lk1DSk1NID0gTExWTUNyZWF0ZVNpbXBsZU1DSklUTWVtb3J5TWFuYWdlcigKKyAgICAgICAgICAg
IDAsIG1tQWxsb2NhdGVDb2RlU2VjdGlvbiwgbW1BbGxvY2F0ZURhdGFTZWN0aW9uLCBtbUFwcGx5
UGVybWlzc2lvbnMsIG1tRGVzdHJveSk7CisgICAgCisgICAgICAgIGlmIChMTFZNQ3JlYXRlTUNK
SVRDb21waWxlckZvck1vZHVsZSgmZW5naW5lLCBtb2R1bGUsICZvcHRpb25zLCBzaXplb2Yob3B0
aW9ucyksICZlcnJvcikpIHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3IgYnVp
bGRpbmcgTUNKSVQ6ICVzXG4iLCBlcnJvcik7CisgICAgICAgICAgICBleGl0KDEpOworICAgICAg
ICB9CisgICAgCisgICAgICAgIGlmICghc3RyY2FzZWNtcChtb2RlLCAic2ltcGxlIikpIHsKKyAg
ICAgICAgICAgIG1vZHVsZVBhc3NlcyA9IExMVk1DcmVhdGVQYXNzTWFuYWdlcigpOworICAgICAg
ICAgICAgTExWTUFkZFRhcmdldERhdGEoTExWTUdldEV4ZWN1dGlvbkVuZ2luZVRhcmdldERhdGEo
ZW5naW5lKSwgbW9kdWxlUGFzc2VzKTsKKyAgICAgICAgICAgIExMVk1BZGRDb25zdGFudFByb3Bh
Z2F0aW9uUGFzcyhtb2R1bGVQYXNzZXMpOworICAgICAgICAgICAgTExWTUFkZEluc3RydWN0aW9u
Q29tYmluaW5nUGFzcyhtb2R1bGVQYXNzZXMpOworICAgICAgICAgICAgTExWTUFkZFByb21vdGVN
ZW1vcnlUb1JlZ2lzdGVyUGFzcyhtb2R1bGVQYXNzZXMpOworICAgICAgICAgICAgTExWTUFkZEJh
c2ljQWxpYXNBbmFseXNpc1Bhc3MobW9kdWxlUGFzc2VzKTsKKyAgICAgICAgICAgIExMVk1BZGRU
eXBlQmFzZWRBbGlhc0FuYWx5c2lzUGFzcyhtb2R1bGVQYXNzZXMpOworICAgICAgICAgICAgTExW
TUFkZEdWTlBhc3MobW9kdWxlUGFzc2VzKTsKKyAgICAgICAgICAgIExMVk1BZGRDRkdTaW1wbGlm
aWNhdGlvblBhc3MobW9kdWxlUGFzc2VzKTsKKyAgICAgICAgICAgIExMVk1SdW5QYXNzTWFuYWdl
cihtb2R1bGVQYXNzZXMsIG1vZHVsZSk7CisgICAgICAgIH0gZWxzZSBpZiAoIXN0cmNhc2VjbXAo
bW9kZSwgIm9wdCIpKSB7CisgICAgICAgICAgICBMTFZNUGFzc01hbmFnZXJCdWlsZGVyUmVmIHBh
c3NCdWlsZGVyOworCisgICAgICAgICAgICBwYXNzQnVpbGRlciA9IExMVk1QYXNzTWFuYWdlckJ1
aWxkZXJDcmVhdGUoKTsKKyAgICAgICAgICAgIExMVk1QYXNzTWFuYWdlckJ1aWxkZXJTZXRPcHRM
ZXZlbChwYXNzQnVpbGRlciwgMik7CisgICAgICAgICAgICBMTFZNUGFzc01hbmFnZXJCdWlsZGVy
U2V0U2l6ZUxldmVsKHBhc3NCdWlsZGVyLCAwKTsKKyAgICAgICAgCisgICAgICAgICAgICBmdW5j
dGlvblBhc3NlcyA9IExMVk1DcmVhdGVGdW5jdGlvblBhc3NNYW5hZ2VyRm9yTW9kdWxlKG1vZHVs
ZSk7CisgICAgICAgICAgICBtb2R1bGVQYXNzZXMgPSBMTFZNQ3JlYXRlUGFzc01hbmFnZXIoKTsK
KyAgICAgICAgCisgICAgICAgICAgICBMTFZNQWRkVGFyZ2V0RGF0YShMTFZNR2V0RXhlY3V0aW9u
RW5naW5lVGFyZ2V0RGF0YShlbmdpbmUpLCBtb2R1bGVQYXNzZXMpOworICAgICAgICAKKyAgICAg
ICAgICAgIExMVk1QYXNzTWFuYWdlckJ1aWxkZXJQb3B1bGF0ZUZ1bmN0aW9uUGFzc01hbmFnZXIo
cGFzc0J1aWxkZXIsIGZ1bmN0aW9uUGFzc2VzKTsKKyAgICAgICAgICAgIExMVk1QYXNzTWFuYWdl
ckJ1aWxkZXJQb3B1bGF0ZU1vZHVsZVBhc3NNYW5hZ2VyKHBhc3NCdWlsZGVyLCBtb2R1bGVQYXNz
ZXMpOworICAgICAgICAKKyAgICAgICAgICAgIExMVk1QYXNzTWFuYWdlckJ1aWxkZXJEaXNwb3Nl
KHBhc3NCdWlsZGVyKTsKKyAgICAgICAgCisgICAgICAgICAgICBMTFZNSW5pdGlhbGl6ZUZ1bmN0
aW9uUGFzc01hbmFnZXIoZnVuY3Rpb25QYXNzZXMpOworICAgICAgICAgICAgZm9yICh2YWx1ZSA9
IExMVk1HZXRGaXJzdEZ1bmN0aW9uKG1vZHVsZSk7IHZhbHVlOyB2YWx1ZSA9IExMVk1HZXROZXh0
RnVuY3Rpb24odmFsdWUpKQorICAgICAgICAgICAgICAgIExMVk1SdW5GdW5jdGlvblBhc3NNYW5h
Z2VyKGZ1bmN0aW9uUGFzc2VzLCB2YWx1ZSk7CisgICAgICAgICAgICBMTFZNRmluYWxpemVGdW5j
dGlvblBhc3NNYW5hZ2VyKGZ1bmN0aW9uUGFzc2VzKTsKKyAgICAgICAgCisgICAgICAgICAgICBM
TFZNUnVuUGFzc01hbmFnZXIobW9kdWxlUGFzc2VzLCBtb2R1bGUpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJCYWQgb3B0aW1pemF0aW9uIG1vZGU6ICVz
LlxuIiwgbW9kZSk7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlZhbGlkIG1vZGVzIGFy
ZTogXCJzaW1wbGVcIiBvciBcIm9wdFwiLlxuIik7CisgICAgICAgICAgICBleGl0KDEpOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKHZlcmJvc2VGbGFnKSB7CisgICAgICAgICAgICBwcmludGYo
Ik1vZHVsZSAjJWQgKCVzKSBhZnRlciBvcHRpbWl6YXRpb246XG4iLCBpLCBmaWxlbmFtZXNbaV0p
OworICAgICAgICAgICAgTExWTUR1bXBNb2R1bGUobW9kdWxlKTsKKyAgICAgICAgfQorICAgIAor
ICAgICAgICBmb3IgKHZhbHVlID0gTExWTUdldEZpcnN0RnVuY3Rpb24obW9kdWxlKTsgdmFsdWU7
IHZhbHVlID0gTExWTUdldE5leHRGdW5jdGlvbih2YWx1ZSkpIHsKKyAgICAgICAgICAgIGlmIChM
TFZNSXNEZWNsYXJhdGlvbih2YWx1ZSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICBMTFZNR2V0UG9pbnRlclRvR2xvYmFsKGVuZ2luZSwgdmFsdWUpOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKGZ1bmN0aW9uUGFzc2VzKQorICAgICAgICAgICAgTExWTURpc3Bvc2VQ
YXNzTWFuYWdlcihmdW5jdGlvblBhc3Nlcyk7CisgICAgICAgIGlmIChtb2R1bGVQYXNzZXMpCisg
ICAgICAgICAgICBMTFZNRGlzcG9zZVBhc3NNYW5hZ2VyKG1vZHVsZVBhc3Nlcyk7CisgICAgCisg
ICAgICAgIExMVk1EaXNwb3NlRXhlY3V0aW9uRW5naW5lKGVuZ2luZSk7CisgICAgICAgIAorICAg
ICAgICBpZiAodGltaW5nRmxhZykgeworICAgICAgICAgICAgZG91YmxlIGFmdGVyID0gY3VycmVu
dFRpbWUoKTsKKyAgICAgICAgICAgIHByaW50ZigiTW9kdWxlICMlZCAoJXMpIHRvb2sgJWxmIG1z
LlxuIiwgaSwgZmlsZW5hbWVzW2ldLCAoYWZ0ZXIgLSBiZWZvcmUpICogMTAwMCk7CisgICAgICAg
IH0KKyAgICB9CisgICAgCisgICAgaWYgKGRpc2Fzc2VtYmxlRmxhZykgeworICAgICAgICBMTFZN
RGlzYXNtQ29udGV4dFJlZiBkaXNhc3NlbWJsZXI7CisgICAgICAgIHN0cnVjdCBNZW1vcnlTZWN0
aW9uICpzZWN0aW9uOworICAgICAgICAKKyAgICAgICAgZGlzYXNzZW1ibGVyID0gTExWTUNyZWF0
ZURpc2FzbSgieDg2XzY0LWFwcGxlLWRhcndpbiIsIDAsIDAsIDAsIHN5bWJvbExvb2t1cENhbGxi
YWNrKTsKKyAgICAgICAgaWYgKCFkaXNhc3NlbWJsZXIpIHsKKyAgICAgICAgICAgIGZwcmludGYo
c3RkZXJyLCAiRXJyb3IgYnVpbGRpbmcgZGlzYXNzZW1ibGVyLlxuIik7CisgICAgICAgICAgICBl
eGl0KDEpOworICAgICAgICB9CisgICAgCisgICAgICAgIGZvciAoc2VjdGlvbiA9IHNlY3Rpb25I
ZWFkOyBzZWN0aW9uOyBzZWN0aW9uID0gc2VjdGlvbi0+bmV4dCkgeworICAgICAgICAgICAgcHJp
bnRmKCJEaXNhc3NlbWJseSBmb3Igc2VjdGlvbiAlcDpcbiIsIHNlY3Rpb24pOworICAgICAgICAK
KyAgICAgICAgICAgIGNoYXIgcGNTdHJpbmdbMjBdOworICAgICAgICAgICAgY2hhciBpbnN0cnVj
dGlvblN0cmluZ1sxMDAwXTsKKyAgICAgICAgICAgIHVpbnQ4X3QgKnBjOworICAgICAgICAgICAg
dWludDhfdCAqZW5kOworICAgICAgICAKKyAgICAgICAgICAgIHBjID0gc2VjdGlvbi0+c3RhcnQ7
CisgICAgICAgICAgICBlbmQgPSBwYyArIHNlY3Rpb24tPnNpemU7CisgICAgICAgIAorICAgICAg
ICAgICAgd2hpbGUgKHBjIDwgZW5kKSB7CisgICAgICAgICAgICAgICAgc25wcmludGYoCisgICAg
ICAgICAgICAgICAgICAgIHBjU3RyaW5nLCBzaXplb2YocGNTdHJpbmcpLCAiMHglbHgiLAorICAg
ICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykodWludHB0cl90KXBjKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIHNpemVfdCBpbnN0cnVjdGlvblNpemUgPSBMTFZNRGlzYXNt
SW5zdHJ1Y3Rpb24oCisgICAgICAgICAgICAgICAgICAgIGRpc2Fzc2VtYmxlciwgcGMsIGVuZCAt
IHBjLCAodWludHB0cl90KXBjLAorICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvblN0cmlu
Zywgc2l6ZW9mKGluc3RydWN0aW9uU3RyaW5nKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICBpZiAoIWluc3RydWN0aW9uU2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgc25wcmludGYo
aW5zdHJ1Y3Rpb25TdHJpbmcsIHNpemVvZihpbnN0cnVjdGlvblN0cmluZyksICIuYnl0ZSAweCUw
MngiLCAqcGMrKyk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBw
YyArPSBpbnN0cnVjdGlvblNpemU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBwcmlu
dGYoIiAgICAlMTZzOiAlc1xuIiwgcGNTdHJpbmcsIGluc3RydWN0aW9uU3RyaW5nKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gMDsKK30KKwpJbmRl
eDogVG9vbHMvUmVkdWNlZEZUTC9idWlsZC5zaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9SZWR1Y2Vk
RlRML2J1aWxkLnNoCShyZXZpc2lvbiAwKQorKysgVG9vbHMvUmVkdWNlZEZUTC9idWlsZC5zaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACisjIS9iaW4vc2gKKworc2V0IC1lCitzZXQg
LXgKKworaWYgdGVzdCAieCR7TExWTV9QQVRIfSIgPT0gIngiCit0aGVuCisgICAgY29uZmlnUGF0
aD0ibGx2bS1jb25maWciCitlbHNlCisgICAgY29uZmlnUGF0aD0iJHtMTFZNX1BBVEh9L2Jpbi9s
bHZtLWNvbmZpZyIKK2ZpCisKK2NsYW5nIC1jIC1vIFJlZHVjZWRGVEwubyBSZWR1Y2VkRlRMLmMg
YCR7Y29uZmlnUGF0aH0gLS1jcHBmbGFncyAtLWNmbGFnc2AKK2NsYW5nKysgLW8gUmVkdWNlZEZU
TCBSZWR1Y2VkRlRMLm8gLXN0ZGxpYj1saWJjKysgYCR7Y29uZmlnUGF0aH0gLS1sZGZsYWdzIC0t
bGlic2AKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL1JlZHVjZWRGVEwvYnVpbGQuc2gKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKIyMgLTAsMCArMSAjIworKgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIHByb3BlcnR5Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206618</attachid>
            <date>2013-07-13 12:21:40 -0700</date>
            <delta_ts>2013-07-15 19:27:05 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>15766</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1MjYxMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDEzLTA3LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisK
KyAgICAgICAgZm91cnRoVGllcjogV2Ugc2hvdWxkIGhhdmUgYSByZWR1Y2VkIEZUTCBMTFZNIHBp
cGVsaW5lIHRvb2wgaW4gdGhlIHJlcG9zaXRvcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExODY0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkIGEgdG9vbCB0aGF0IHRha2VzIGluIGFu
IExMVk0gYml0Y29kZSBmaWxlIGFuZCBKSVRzIGl0IGluIGV4YWN0bHkgdGhlIHNhbWUKKyAgICAg
ICAgd2F5IHRoYXQgdGhlIEZUTCB3b3VsZC4KKworICAgICAgICAqIFJlZHVjZWRGVEw6IEFkZGVk
LgorICAgICAgICAqIFJlZHVjZWRGVEwvUmVkdWNlZEZUTC5jOiBBZGRlZC4KKyAgICAgICAgKE1l
bW9yeVNlY3Rpb24pOgorICAgICAgICAobW1BbGxvY2F0ZUNvZGVTZWN0aW9uKToKKyAgICAgICAg
KG1tQWxsb2NhdGVEYXRhU2VjdGlvbik6CisgICAgICAgIChtbUFwcGx5UGVybWlzc2lvbnMpOgor
ICAgICAgICAobW1EZXN0cm95KToKKyAgICAgICAgKHN5bWJvbExvb2t1cENhbGxiYWNrKToKKyAg
ICAgICAgKG1haW4pOgorICAgICAgICAqIFJlZHVjZWRGVEwvYnVpbGQuc2g6IEFkZGVkLgorCiAy
MDEzLTA2LTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgTWVy
Z2UgdHJ1bmsgcjE0NjU0OC4KSW5kZXg6IFRvb2xzL1JlZHVjZWRGVEwvUmVkdWNlZEZUTC5jCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1JlZHVjZWRGVEwvUmVkdWNlZEZUTC5jCShyZXZpc2lvbiAwKQor
KysgVG9vbHMvUmVkdWNlZEZUTC9SZWR1Y2VkRlRMLmMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwzOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
LyoKKyAqIFNpbXBsZSB0b29sIHRoYXQgdGFrZXMgc29tZSBMTFZNIGJpdGNvZGUgYXMgaW5wdXQg
YW5kICJKSVRzIiBpdCwgaW4gdGhlCisgKiBzYW1lIHdheSB0aGF0IHRoZSBGVEwgd291bGQgdXNl
IExMVk0gdG8gSklUIHRoZSBJUiB0aGF0IGl0IGdlbmVyYXRlcy4KKyAqIFRoaXMgaXMgbWVhbnQg
Zm9yIHVzZSBhcyBhIHJlZHVjdGlvbiB3aGVuIGNvbW11bmljYXRpbmcgdG8gTExWTWVycworICog
YWJvdXQgYnVncywgYW5kIGZvciBxdWljayAid2hhdC1pZiIgdGVzdGluZyB0byBzZWUgaG93IG91
ciBvcHRpbWl6YXRpb24KKyAqIHBpcGVsaW5lIHBlcmZvcm1zLiBCZWNhdXNlIG9mIGl0cyB1c2Ug
YXMgYSByZWR1Y3Rpb24sIHRoaXMgdG9vbCBpcworICogaW50ZW50aW9uYWxseSBzdGFuZGFsb25l
IGFuZCBpdCB3b3VsZCBiZSBncmVhdCBpZiBpdCBjb250aW51ZXMgdG8gZml0CisgKiBpbiBvbmUg
ZmlsZS4KKyAqLworCisjaW5jbHVkZSA8Z2V0b3B0Lmg+CisjaW5jbHVkZSA8aW50dHlwZXMuaD4K
KyNpbmNsdWRlIDxzdGRib29sLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRs
aWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgorI2luY2x1
ZGUgPHN5cy90aW1lLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKyNpbmNsdWRlIDxsbHZtLWMv
QW5hbHlzaXMuaD4KKyNpbmNsdWRlIDxsbHZtLWMvQml0UmVhZGVyLmg+CisjaW5jbHVkZSA8bGx2
bS1jL0NvcmUuaD4KKyNpbmNsdWRlIDxsbHZtLWMvRGlzYXNzZW1ibGVyLmg+CisjaW5jbHVkZSA8
bGx2bS1jL0V4ZWN1dGlvbkVuZ2luZS5oPgorI2luY2x1ZGUgPGxsdm0tYy9UYXJnZXQuaD4KKyNp
bmNsdWRlIDxsbHZtLWMvVHJhbnNmb3Jtcy9QYXNzTWFuYWdlckJ1aWxkZXIuaD4KKyNpbmNsdWRl
IDxsbHZtLWMvVHJhbnNmb3Jtcy9TY2FsYXIuaD4KKworc3RhdGljIHZvaWQgdXNhZ2UoKQorewor
ICAgIHByaW50ZigiVXNhZ2U6IFJlZHVjZWRGVEwgPGZpbGUxPiBbPGZpbGUyPiAuLi5dXG4iKTsK
KyAgICBwcmludGYoIlxuIik7CisgICAgcHJpbnRmKCJPcHRpb25zOlxuIik7CisgICAgcHJpbnRm
KCItLXZlcmJvc2UgICAgICAgIERpc3BsYXkgbW9yZSBpbmZvcm1hdGlvbiwgaW5jbHVkaW5nIG1v
ZHVsZSBkdW1wcy5cbiIpOworICAgIHByaW50ZigiLS10aW1pbmcgICAgICAgICBNZWFzdXJlIHRo
ZSB0aW1lIGl0IHRha2VzIHRvIGNvbXBpbGUuXG4iKTsKKyAgICBwcmludGYoIi0tZGlzYXNzZW1i
bGUgICAgRGlzYXNzZW1ibGUgYWxsIG9mIHRoZSBnZW5lcmF0ZWQgY29kZSBhdCB0aGUgZW5kLlxu
Iik7CisgICAgcHJpbnRmKCItLW1vZGUgPG1vZGU+ICAgIFNldCB0aGUgb3B0aW1pemF0aW9uIG1v
ZGUgKGVpdGhlciBcInNpbXBsZVwiIG9yIFwib3B0XCIpLlxuIik7CisgICAgcHJpbnRmKCItLWNv
bnRleHRzIDxhcmc+IFNldCB0aGUgbnVtYmVyIG9mIGNvbnRleHRzIChlaXRoZXIgXCJvbmVcIiBv
ciBcIm1hbnlcIikuXG4iKTsKKyAgICBwcmludGYoIi0taGVscCAgICAgICAgICAgUHJpbnQgdGhp
cyBtZXNzYWdlLlxuIik7CisgICAgcHJpbnRmKCJcbiIpOworICAgIHByaW50ZigiVW5sZXNzIHlv
dSBzcGVjaWZ5IG9uZSBvZiAtLXZlcmJvc2UsIC0tdGltaW5nLCBvciAtLWRpc2Fzc2VtYmxlLCB5
b3Ugd2lsbFxuIik7CisgICAgcHJpbnRmKCJub3Qgc2VlIGFueSBvdXRwdXQuXG4iKTsKKyAgICBl
eGl0KDEpOworfQorCitzdGF0aWMgZG91YmxlIGN1cnJlbnRUaW1lKCkKK3sKKyAgICBzdHJ1Y3Qg
dGltZXZhbCBub3c7CisgICAgZ2V0dGltZW9mZGF5KCZub3csIDApOworICAgIHJldHVybiBub3cu
dHZfc2VjICsgbm93LnR2X3VzZWMgLyAxMDAwMDAwLjA7Cit9CisKK3N0cnVjdCBNZW1vcnlTZWN0
aW9uIHsKKyAgICB1aW50OF90ICpzdGFydDsKKyAgICBzaXplX3Qgc2l6ZTsKKyAgICBzdHJ1Y3Qg
TWVtb3J5U2VjdGlvbiAqbmV4dDsKK307CisKK3N0YXRpYyBzdHJ1Y3QgTWVtb3J5U2VjdGlvbiog
c2VjdGlvbkhlYWQ7CisKK3N0YXRpYyB1aW50OF90ICptbUFsbG9jYXRlQ29kZVNlY3Rpb24oCisg
ICAgdm9pZCAqb3BhcXVlU3RhdGUsIHVpbnRwdHJfdCBzaXplLCB1bnNpZ25lZCBhbGlnbm1lbnQs
IHVuc2lnbmVkIHNlY3Rpb25JRCkKK3sKKyAgICBzaXplX3QgcGFnZVNpemUgPSBnZXRwYWdlc2l6
ZSgpOworICAgIAorICAgIHVpbnQ4X3QgKnN0YXJ0ID0gbW1hcCgKKyAgICAgICAgMCwgKHNpemUg
KyBwYWdlU2l6ZSAtIDEpICYgfnBhZ2VTaXplLCAKKyAgICAgICAgUFJPVF9XUklURSB8IFBST1Rf
UkVBRCB8IFBST1RfRVhFQywKKyAgICAgICAgTUFQX0FOT04gfCBNQVBfUFJJVkFURSwgLTEsIDAp
OworICAgIGlmIChzdGFydCA9PSAodWludDhfdCopLTEpIHsKKyAgICAgICAgZnByaW50ZihzdGRl
cnIsICJVbmFibGUgdG8gYWxsb2NhdGUgJSIgUFJJdVBUUiAiIGJ5dGVzIG9mIGV4ZWN1dGFibGUg
bWVtb3J5LlxuIiwgc2l6ZSk7CisgICAgICAgIGV4aXQoMSk7CisgICAgfQorICAgIAorICAgIHN0
cnVjdCBNZW1vcnlTZWN0aW9uICpzZWN0aW9uID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgTWVtb3J5
U2VjdGlvbikpOworICAgIHNlY3Rpb24tPnN0YXJ0ID0gc3RhcnQ7CisgICAgc2VjdGlvbi0+c2l6
ZSA9IHNpemU7CisgICAgc2VjdGlvbi0+bmV4dCA9IHNlY3Rpb25IZWFkOworICAgIHNlY3Rpb25I
ZWFkID0gc2VjdGlvbjsKKworICAgIHJldHVybiBzdGFydDsKK30KKworc3RhdGljIHVpbnQ4X3Qg
Km1tQWxsb2NhdGVEYXRhU2VjdGlvbigKKyAgICB2b2lkICpvcGFxdWVTdGF0ZSwgdWludHB0cl90
IHNpemUsIHVuc2lnbmVkIGFsaWdubWVudCwgdW5zaWduZWQgc2VjdGlvbklELAorICAgIExMVk1C
b29sIGlzUmVhZE9ubHkpCit7CisgICAgcmV0dXJuIG1tQWxsb2NhdGVDb2RlU2VjdGlvbihvcGFx
dWVTdGF0ZSwgc2l6ZSwgYWxpZ25tZW50LCBzZWN0aW9uSUQpOworfQorCitzdGF0aWMgTExWTUJv
b2wgbW1BcHBseVBlcm1pc3Npb25zKHZvaWQgKm9wYXF1ZSwgY2hhciAqKm1lc3NhZ2UpCit7Cisg
ICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIG1tRGVzdHJveSh2b2lkICpvcGFxdWUpCit7
Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICpzeW1ib2xMb29rdXBDYWxsYmFjaygKKyAgICB2b2lk
ICpvcGFxdWUsIHVpbnQ2NF90IHJlZmVyZW5jZVZhbHVlLCB1aW50NjRfdCAqcmVmZXJlbmNlVHlw
ZSwgdWludDY0X3QgcmVmZXJlbmNlUEMsCisgICAgY29uc3QgY2hhciAqKnJlZmVyZW5jZU5hbWUp
Cit7CisgICAgc3RhdGljIGNoYXIgc3ltYm9sU3RyaW5nWzIwXTsKKyAgICAKKyAgICBzd2l0Y2gg
KCpyZWZlcmVuY2VUeXBlKSB7CisgICAgY2FzZSBMTFZNRGlzYXNzZW1ibGVyX1JlZmVyZW5jZVR5
cGVfSW5PdXRfTm9uZToKKyAgICAgICAgcmV0dXJuIDA7CisgICAgY2FzZSBMTFZNRGlzYXNzZW1i
bGVyX1JlZmVyZW5jZVR5cGVfSW5fQnJhbmNoOgorICAgICAgICAqcmVmZXJlbmNlTmFtZSA9IDA7
CisgICAgICAgICpyZWZlcmVuY2VUeXBlID0gTExWTURpc2Fzc2VtYmxlcl9SZWZlcmVuY2VUeXBl
X0luT3V0X05vbmU7CisgICAgICAgIHNucHJpbnRmKAorICAgICAgICAgICAgc3ltYm9sU3RyaW5n
LCBzaXplb2Yoc3ltYm9sU3RyaW5nKSwgIjB4JWx4IiwKKyAgICAgICAgICAgICh1bnNpZ25lZCBs
b25nKXJlZmVyZW5jZVZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHN5bWJvbFN0cmluZzsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVuZXhwZWN0ZWQgcmVmZXJlbmNlIHR5
cGUhXG4iKTsKKyAgICAgICAgZXhpdCgxKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQor
CitpbnQgbWFpbihpbnQgYywgY2hhciAqKnYpCit7CisgICAgTExWTUNvbnRleHRSZWYgKmNvbnRl
eHRzOworICAgIExMVk1Nb2R1bGVSZWYgKm1vZHVsZXM7CisgICAgY2hhciAqZXJyb3I7CisgICAg
Y29uc3QgY2hhciAqbW9kZSA9ICJvcHQiOworICAgIGNvbnN0IGNoYXIgKipmaWxlbmFtZXM7Cisg
ICAgdW5zaWduZWQgbnVtRmlsZXM7CisgICAgdW5zaWduZWQgaTsKKyAgICBib29sIG1vcmVPcHRp
b25zOworICAgIHN0YXRpYyBpbnQgdmVyYm9zZUZsYWcgPSAwOworICAgIHN0YXRpYyBpbnQgdGlt
aW5nRmxhZyA9IDA7CisgICAgc3RhdGljIGludCBkaXNhc3NlbWJsZUZsYWcgPSAwOworICAgIGJv
b2wgbWFueUNvbnRleHRzID0gdHJ1ZTsKKyAgICAKKyAgICBpZiAoYyA9PSAxKQorICAgICAgICB1
c2FnZSgpOworICAgIAorICAgIG1vcmVPcHRpb25zID0gdHJ1ZTsKKyAgICB3aGlsZSAobW9yZU9w
dGlvbnMpIHsKKyAgICAgICAgc3RhdGljIHN0cnVjdCBvcHRpb24gbG9uZ09wdGlvbnNbXSA9IHsK
KyAgICAgICAgICAgIHsidmVyYm9zZSIsIG5vX2FyZ3VtZW50LCAmdmVyYm9zZUZsYWcsIDF9LAor
ICAgICAgICAgICAgeyJ0aW1pbmciLCBub19hcmd1bWVudCwgJnRpbWluZ0ZsYWcsIDF9LAorICAg
ICAgICAgICAgeyJkaXNhc3NlbWJsZSIsIG5vX2FyZ3VtZW50LCAmZGlzYXNzZW1ibGVGbGFnLCAx
fSwKKyAgICAgICAgICAgIHsibW9kZSIsIHJlcXVpcmVkX2FyZ3VtZW50LCAwLCAwfSwKKyAgICAg
ICAgICAgIHsiY29udGV4dHMiLCByZXF1aXJlZF9hcmd1bWVudCwgMCwgMH0sCisgICAgICAgICAg
ICB7ImhlbHAiLCBub19hcmd1bWVudCwgMCwgMH0KKyAgICAgICAgfTsKKyAgICAgICAgCisgICAg
ICAgIGludCBvcHRpb25JbmRleDsKKyAgICAgICAgaW50IG9wdGlvblZhbHVlOworICAgICAgICAK
KyAgICAgICAgb3B0aW9uVmFsdWUgPSBnZXRvcHRfbG9uZyhjLCB2LCAiIiwgbG9uZ09wdGlvbnMs
ICZvcHRpb25JbmRleCk7CisgICAgICAgIAorICAgICAgICBzd2l0Y2ggKG9wdGlvblZhbHVlKSB7
CisgICAgICAgIGNhc2UgLTE6CisgICAgICAgICAgICBtb3JlT3B0aW9ucyA9IGZhbHNlOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSAwOiB7CisgICAgICAg
ICAgICBjb25zdCBjaGFyKiB0aGlzT3B0aW9uID0gbG9uZ09wdGlvbnNbb3B0aW9uSW5kZXhdLm5h
bWU7CisgICAgICAgICAgICBpZiAoIXN0cmNtcCh0aGlzT3B0aW9uLCAiaGVscCIpKQorICAgICAg
ICAgICAgICAgIHVzYWdlKCk7CisgICAgICAgICAgICBpZiAoIXN0cmNtcCh0aGlzT3B0aW9uLCAi
Y29udGV4dHMiKSkgeworICAgICAgICAgICAgICAgIGlmICghc3RyY2FzZWNtcChvcHRhcmcsICJv
bmUiKSkKKyAgICAgICAgICAgICAgICAgICAgbWFueUNvbnRleHRzID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgZWxzZSBpZiAoIXN0cmNhc2VjbXAob3B0YXJnLCAibWFueSIpKQorICAgICAgICAg
ICAgICAgICAgICBtYW55Q29udGV4dHMgPSB0cnVlOworICAgICAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkludmFsaWQgYXJndW1lbnQgZm9y
IC0tY29udGV4dHMuXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgZXhpdCgxKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoIXN0cmNtcCh0aGlzT3B0aW9uLCAibW9kZSIpKSB7CisgICAgICAgICAgICAgICAg
bW9kZSA9IHN0cmR1cChvcHRhcmcpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICBjYXNlICc/JzoKKyAgICAgICAgICAgIGV4aXQoMCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcHJpbnRmKCJvcHRpb25W
YWx1ZSA9ICVkXG4iLCBvcHRpb25WYWx1ZSk7CisgICAgICAgICAgICBhYm9ydCgpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgTExWTUxpbmtJbk1DSklU
KCk7CisgICAgTExWTUluaXRpYWxpemVOYXRpdmVUYXJnZXQoKTsKKyAgICBMTFZNSW5pdGlhbGl6
ZVg4NkFzbVByaW50ZXIoKTsKKyAgICBMTFZNSW5pdGlhbGl6ZVg4NkRpc2Fzc2VtYmxlcigpOwor
CisgICAgZmlsZW5hbWVzID0gKGNvbnN0IGNoYXIgKiopKHYgKyBvcHRpbmQpOworICAgIG51bUZp
bGVzID0gYyAtIG9wdGluZDsKKyAgICAKKyAgICBjb250ZXh0cyA9IG1hbGxvYyhzaXplb2YoTExW
TUNvbnRleHRSZWYpICogbnVtRmlsZXMpOworICAgIG1vZHVsZXMgPSBtYWxsb2Moc2l6ZW9mKExM
Vk1Nb2R1bGVSZWYpICogbnVtRmlsZXMpOworICAgIAorICAgIGlmIChtYW55Q29udGV4dHMpIHsK
KyAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bUZpbGVzOyArK2kpCisgICAgICAgICAgICBjb250
ZXh0c1tpXSA9IExMVk1Db250ZXh0Q3JlYXRlKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgTExW
TUNvbnRleHRSZWYgY29udGV4dCA9IExMVk1Db250ZXh0Q3JlYXRlKCk7CisgICAgICAgIGZvciAo
aSA9IDA7IGkgPCBudW1GaWxlczsgKytpKQorICAgICAgICAgICAgY29udGV4dHNbaV0gPSBjb250
ZXh0OworICAgIH0KKyAgICAKKyAgICBmb3IgKGkgPSAwOyBpIDwgbnVtRmlsZXM7ICsraSkgewor
ICAgICAgICBMTFZNTWVtb3J5QnVmZmVyUmVmIGJ1ZmZlcjsKKyAgICAgICAgY29uc3QgY2hhciog
ZmlsZW5hbWUgPSBmaWxlbmFtZXNbaV07CisgICAgICAgIAorICAgICAgICBpZiAoTExWTUNyZWF0
ZU1lbW9yeUJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShmaWxlbmFtZSwgJmJ1ZmZlciwgJmVycm9y
KSkgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJFcnJvciByZWFkaW5nIGZpbGUgJXM6
ICVzXG4iLCBmaWxlbmFtZSwgZXJyb3IpOworICAgICAgICAgICAgZXhpdCgxKTsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgaWYgKExMVk1QYXJzZUJpdGNvZGVJbkNvbnRleHQoY29udGV4
dHNbaV0sIGJ1ZmZlciwgbW9kdWxlcyArIGksICZlcnJvcikpIHsKKyAgICAgICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAiRXJyb3IgcGFyc2luZyBmaWxlICVzOiAlc1xuIiwgZmlsZW5hbWUsIGVycm9y
KTsKKyAgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIExM
Vk1EaXNwb3NlTWVtb3J5QnVmZmVyKGJ1ZmZlcik7CisgICAgICAgIAorICAgICAgICBpZiAodmVy
Ym9zZUZsYWcpIHsKKyAgICAgICAgICAgIHByaW50ZigiTW9kdWxlICMldSAoJXMpIGFmdGVyIHBh
cnNpbmc6XG4iLCBpLCBmaWxlbmFtZSk7CisgICAgICAgICAgICBMTFZNRHVtcE1vZHVsZShtb2R1
bGVzW2ldKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICh2ZXJib3NlRmxhZykKKyAgICAg
ICAgcHJpbnRmKCJHZW5lcmF0aW5nIGNvZGUgZm9yIG1vZHVsZXMuLi5cbiIpOworICAgIAorICAg
IGZvciAoaSA9IDA7IGkgPCBudW1GaWxlczsgKytpKSB7CisgICAgICAgIExMVk1Nb2R1bGVSZWYg
bW9kdWxlOworICAgICAgICBMTFZNRXhlY3V0aW9uRW5naW5lUmVmIGVuZ2luZTsKKyAgICAgICAg
c3RydWN0IExMVk1NQ0pJVENvbXBpbGVyT3B0aW9ucyBvcHRpb25zOworICAgICAgICBMTFZNVmFs
dWVSZWYgdmFsdWU7CisgICAgICAgIExMVk1QYXNzTWFuYWdlclJlZiBmdW5jdGlvblBhc3NlcyA9
IDA7CisgICAgICAgIExMVk1QYXNzTWFuYWdlclJlZiBtb2R1bGVQYXNzZXMgPSAwOworICAgICAg
ICAKKyAgICAgICAgZG91YmxlIGJlZm9yZTsKKyAgICAgICAgCisgICAgICAgIGlmICh0aW1pbmdG
bGFnKQorICAgICAgICAgICAgYmVmb3JlID0gY3VycmVudFRpbWUoKTsKKyAgICAgICAgCisgICAg
ICAgIG1vZHVsZSA9IG1vZHVsZXNbaV07CisKKyAgICAgICAgTExWTUluaXRpYWxpemVNQ0pJVENv
bXBpbGVyT3B0aW9ucygmb3B0aW9ucywgc2l6ZW9mKG9wdGlvbnMpKTsKKyAgICAgICAgb3B0aW9u
cy5PcHRMZXZlbCA9IDI7CisgICAgICAgIG9wdGlvbnMuRW5hYmxlRmFzdElTZWwgPSAwOworICAg
ICAgICBvcHRpb25zLk1DSk1NID0gTExWTUNyZWF0ZVNpbXBsZU1DSklUTWVtb3J5TWFuYWdlcigK
KyAgICAgICAgICAgIDAsIG1tQWxsb2NhdGVDb2RlU2VjdGlvbiwgbW1BbGxvY2F0ZURhdGFTZWN0
aW9uLCBtbUFwcGx5UGVybWlzc2lvbnMsIG1tRGVzdHJveSk7CisgICAgCisgICAgICAgIGlmIChM
TFZNQ3JlYXRlTUNKSVRDb21waWxlckZvck1vZHVsZSgmZW5naW5lLCBtb2R1bGUsICZvcHRpb25z
LCBzaXplb2Yob3B0aW9ucyksICZlcnJvcikpIHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJy
LCAiRXJyb3IgYnVpbGRpbmcgTUNKSVQ6ICVzXG4iLCBlcnJvcik7CisgICAgICAgICAgICBleGl0
KDEpOworICAgICAgICB9CisgICAgCisgICAgICAgIGlmICghc3RyY2FzZWNtcChtb2RlLCAic2lt
cGxlIikpIHsKKyAgICAgICAgICAgIG1vZHVsZVBhc3NlcyA9IExMVk1DcmVhdGVQYXNzTWFuYWdl
cigpOworICAgICAgICAgICAgTExWTUFkZFRhcmdldERhdGEoTExWTUdldEV4ZWN1dGlvbkVuZ2lu
ZVRhcmdldERhdGEoZW5naW5lKSwgbW9kdWxlUGFzc2VzKTsKKyAgICAgICAgICAgIExMVk1BZGRD
b25zdGFudFByb3BhZ2F0aW9uUGFzcyhtb2R1bGVQYXNzZXMpOworICAgICAgICAgICAgTExWTUFk
ZEluc3RydWN0aW9uQ29tYmluaW5nUGFzcyhtb2R1bGVQYXNzZXMpOworICAgICAgICAgICAgTExW
TUFkZFByb21vdGVNZW1vcnlUb1JlZ2lzdGVyUGFzcyhtb2R1bGVQYXNzZXMpOworICAgICAgICAg
ICAgTExWTUFkZEJhc2ljQWxpYXNBbmFseXNpc1Bhc3MobW9kdWxlUGFzc2VzKTsKKyAgICAgICAg
ICAgIExMVk1BZGRUeXBlQmFzZWRBbGlhc0FuYWx5c2lzUGFzcyhtb2R1bGVQYXNzZXMpOworICAg
ICAgICAgICAgTExWTUFkZEdWTlBhc3MobW9kdWxlUGFzc2VzKTsKKyAgICAgICAgICAgIExMVk1B
ZGRDRkdTaW1wbGlmaWNhdGlvblBhc3MobW9kdWxlUGFzc2VzKTsKKyAgICAgICAgICAgIExMVk1S
dW5QYXNzTWFuYWdlcihtb2R1bGVQYXNzZXMsIG1vZHVsZSk7CisgICAgICAgIH0gZWxzZSBpZiAo
IXN0cmNhc2VjbXAobW9kZSwgIm9wdCIpKSB7CisgICAgICAgICAgICBMTFZNUGFzc01hbmFnZXJC
dWlsZGVyUmVmIHBhc3NCdWlsZGVyOworCisgICAgICAgICAgICBwYXNzQnVpbGRlciA9IExMVk1Q
YXNzTWFuYWdlckJ1aWxkZXJDcmVhdGUoKTsKKyAgICAgICAgICAgIExMVk1QYXNzTWFuYWdlckJ1
aWxkZXJTZXRPcHRMZXZlbChwYXNzQnVpbGRlciwgMik7CisgICAgICAgICAgICBMTFZNUGFzc01h
bmFnZXJCdWlsZGVyU2V0U2l6ZUxldmVsKHBhc3NCdWlsZGVyLCAwKTsKKyAgICAgICAgCisgICAg
ICAgICAgICBmdW5jdGlvblBhc3NlcyA9IExMVk1DcmVhdGVGdW5jdGlvblBhc3NNYW5hZ2VyRm9y
TW9kdWxlKG1vZHVsZSk7CisgICAgICAgICAgICBtb2R1bGVQYXNzZXMgPSBMTFZNQ3JlYXRlUGFz
c01hbmFnZXIoKTsKKyAgICAgICAgCisgICAgICAgICAgICBMTFZNQWRkVGFyZ2V0RGF0YShMTFZN
R2V0RXhlY3V0aW9uRW5naW5lVGFyZ2V0RGF0YShlbmdpbmUpLCBtb2R1bGVQYXNzZXMpOworICAg
ICAgICAKKyAgICAgICAgICAgIExMVk1QYXNzTWFuYWdlckJ1aWxkZXJQb3B1bGF0ZUZ1bmN0aW9u
UGFzc01hbmFnZXIocGFzc0J1aWxkZXIsIGZ1bmN0aW9uUGFzc2VzKTsKKyAgICAgICAgICAgIExM
Vk1QYXNzTWFuYWdlckJ1aWxkZXJQb3B1bGF0ZU1vZHVsZVBhc3NNYW5hZ2VyKHBhc3NCdWlsZGVy
LCBtb2R1bGVQYXNzZXMpOworICAgICAgICAKKyAgICAgICAgICAgIExMVk1QYXNzTWFuYWdlckJ1
aWxkZXJEaXNwb3NlKHBhc3NCdWlsZGVyKTsKKyAgICAgICAgCisgICAgICAgICAgICBMTFZNSW5p
dGlhbGl6ZUZ1bmN0aW9uUGFzc01hbmFnZXIoZnVuY3Rpb25QYXNzZXMpOworICAgICAgICAgICAg
Zm9yICh2YWx1ZSA9IExMVk1HZXRGaXJzdEZ1bmN0aW9uKG1vZHVsZSk7IHZhbHVlOyB2YWx1ZSA9
IExMVk1HZXROZXh0RnVuY3Rpb24odmFsdWUpKQorICAgICAgICAgICAgICAgIExMVk1SdW5GdW5j
dGlvblBhc3NNYW5hZ2VyKGZ1bmN0aW9uUGFzc2VzLCB2YWx1ZSk7CisgICAgICAgICAgICBMTFZN
RmluYWxpemVGdW5jdGlvblBhc3NNYW5hZ2VyKGZ1bmN0aW9uUGFzc2VzKTsKKyAgICAgICAgCisg
ICAgICAgICAgICBMTFZNUnVuUGFzc01hbmFnZXIobW9kdWxlUGFzc2VzLCBtb2R1bGUpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJCYWQgb3B0aW1pemF0
aW9uIG1vZGU6ICVzLlxuIiwgbW9kZSk7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlZh
bGlkIG1vZGVzIGFyZTogXCJzaW1wbGVcIiBvciBcIm9wdFwiLlxuIik7CisgICAgICAgICAgICBl
eGl0KDEpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHZlcmJvc2VGbGFnKSB7CisgICAgICAg
ICAgICBwcmludGYoIk1vZHVsZSAjJWQgKCVzKSBhZnRlciBvcHRpbWl6YXRpb246XG4iLCBpLCBm
aWxlbmFtZXNbaV0pOworICAgICAgICAgICAgTExWTUR1bXBNb2R1bGUobW9kdWxlKTsKKyAgICAg
ICAgfQorICAgIAorICAgICAgICBmb3IgKHZhbHVlID0gTExWTUdldEZpcnN0RnVuY3Rpb24obW9k
dWxlKTsgdmFsdWU7IHZhbHVlID0gTExWTUdldE5leHRGdW5jdGlvbih2YWx1ZSkpIHsKKyAgICAg
ICAgICAgIGlmIChMTFZNSXNEZWNsYXJhdGlvbih2YWx1ZSkpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICBMTFZNR2V0UG9pbnRlclRvR2xvYmFsKGVuZ2luZSwgdmFsdWUp
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZ1bmN0aW9uUGFzc2VzKQorICAgICAgICAgICAg
TExWTURpc3Bvc2VQYXNzTWFuYWdlcihmdW5jdGlvblBhc3Nlcyk7CisgICAgICAgIGlmIChtb2R1
bGVQYXNzZXMpCisgICAgICAgICAgICBMTFZNRGlzcG9zZVBhc3NNYW5hZ2VyKG1vZHVsZVBhc3Nl
cyk7CisgICAgCisgICAgICAgIExMVk1EaXNwb3NlRXhlY3V0aW9uRW5naW5lKGVuZ2luZSk7Cisg
ICAgICAgIAorICAgICAgICBpZiAodGltaW5nRmxhZykgeworICAgICAgICAgICAgZG91YmxlIGFm
dGVyID0gY3VycmVudFRpbWUoKTsKKyAgICAgICAgICAgIHByaW50ZigiTW9kdWxlICMlZCAoJXMp
IHRvb2sgJWxmIG1zLlxuIiwgaSwgZmlsZW5hbWVzW2ldLCAoYWZ0ZXIgLSBiZWZvcmUpICogMTAw
MCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgaWYgKGRpc2Fzc2VtYmxlRmxhZykgewor
ICAgICAgICBMTFZNRGlzYXNtQ29udGV4dFJlZiBkaXNhc3NlbWJsZXI7CisgICAgICAgIHN0cnVj
dCBNZW1vcnlTZWN0aW9uICpzZWN0aW9uOworICAgICAgICAKKyAgICAgICAgZGlzYXNzZW1ibGVy
ID0gTExWTUNyZWF0ZURpc2FzbSgieDg2XzY0LWFwcGxlLWRhcndpbiIsIDAsIDAsIDAsIHN5bWJv
bExvb2t1cENhbGxiYWNrKTsKKyAgICAgICAgaWYgKCFkaXNhc3NlbWJsZXIpIHsKKyAgICAgICAg
ICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3IgYnVpbGRpbmcgZGlzYXNzZW1ibGVyLlxuIik7Cisg
ICAgICAgICAgICBleGl0KDEpOworICAgICAgICB9CisgICAgCisgICAgICAgIGZvciAoc2VjdGlv
biA9IHNlY3Rpb25IZWFkOyBzZWN0aW9uOyBzZWN0aW9uID0gc2VjdGlvbi0+bmV4dCkgeworICAg
ICAgICAgICAgcHJpbnRmKCJEaXNhc3NlbWJseSBmb3Igc2VjdGlvbiAlcDpcbiIsIHNlY3Rpb24p
OworICAgICAgICAKKyAgICAgICAgICAgIGNoYXIgcGNTdHJpbmdbMjBdOworICAgICAgICAgICAg
Y2hhciBpbnN0cnVjdGlvblN0cmluZ1sxMDAwXTsKKyAgICAgICAgICAgIHVpbnQ4X3QgKnBjOwor
ICAgICAgICAgICAgdWludDhfdCAqZW5kOworICAgICAgICAKKyAgICAgICAgICAgIHBjID0gc2Vj
dGlvbi0+c3RhcnQ7CisgICAgICAgICAgICBlbmQgPSBwYyArIHNlY3Rpb24tPnNpemU7CisgICAg
ICAgIAorICAgICAgICAgICAgd2hpbGUgKHBjIDwgZW5kKSB7CisgICAgICAgICAgICAgICAgc25w
cmludGYoCisgICAgICAgICAgICAgICAgICAgIHBjU3RyaW5nLCBzaXplb2YocGNTdHJpbmcpLCAi
MHglbHgiLAorICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykodWludHB0cl90KXBj
KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHNpemVfdCBpbnN0cnVjdGlvblNpemUg
PSBMTFZNRGlzYXNtSW5zdHJ1Y3Rpb24oCisgICAgICAgICAgICAgICAgICAgIGRpc2Fzc2VtYmxl
ciwgcGMsIGVuZCAtIHBjLCAodWludHB0cl90KXBjLAorICAgICAgICAgICAgICAgICAgICBpbnN0
cnVjdGlvblN0cmluZywgc2l6ZW9mKGluc3RydWN0aW9uU3RyaW5nKSk7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICBpZiAoIWluc3RydWN0aW9uU2l6ZSkKKyAgICAgICAgICAgICAgICAg
ICAgc25wcmludGYoaW5zdHJ1Y3Rpb25TdHJpbmcsIHNpemVvZihpbnN0cnVjdGlvblN0cmluZyks
ICIuYnl0ZSAweCUwMngiLCAqcGMrKyk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICBwYyArPSBpbnN0cnVjdGlvblNpemU7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICBwcmludGYoIiAgICAlMTZzOiAlc1xuIiwgcGNTdHJpbmcsIGluc3RydWN0aW9uU3Ry
aW5nKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4g
MDsKK30KKwpJbmRleDogVG9vbHMvUmVkdWNlZEZUTC9idWlsZC5zaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9SZWR1Y2VkRlRML2J1aWxkLnNoCShyZXZpc2lvbiAwKQorKysgVG9vbHMvUmVkdWNlZEZU
TC9idWlsZC5zaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACisjIS9iaW4vc2gKKwor
c2V0IC1lCitzZXQgLXgKKworaWYgdGVzdCAieCR7TExWTV9QQVRIfSIgPT0gIngiCit0aGVuCisg
ICAgY29uZmlnUGF0aD0ibGx2bS1jb25maWciCitlbHNlCisgICAgY29uZmlnUGF0aD0iJHtMTFZN
X1BBVEh9L2Jpbi9sbHZtLWNvbmZpZyIKK2ZpCisKK2NsYW5nIC1jIC1vIFJlZHVjZWRGVEwubyBS
ZWR1Y2VkRlRMLmMgYCR7Y29uZmlnUGF0aH0gLS1jcHBmbGFncyAtLWNmbGFnc2AKK2NsYW5nKysg
LW8gUmVkdWNlZEZUTCBSZWR1Y2VkRlRMLm8gLXN0ZGxpYj1saWJjKysgYCR7Y29uZmlnUGF0aH0g
LS1sZGZsYWdzIC0tbGlic2AKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL1JlZHVjZWRGVEwv
YnVpbGQuc2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKIyMgLTAsMCArMSAjIwor
KgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5Cg==
</data>
<flag name="review"
          id="228299"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>