<?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>62337</bug_id>
          
          <creation_ts>2011-06-08 16:22:25 -0700</creation_ts>
          <short_desc>Factored a bunch of Heap functionality into stand-alone functors</short_desc>
          <delta_ts>2011-06-09 12:52:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>417669</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-06-08 16:22:25 -0700</bug_when>
    <thetext>Factored a bunch of Heap functionality into stand-alone functors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417675</commentid>
    <comment_count>1</comment_count>
      <attachid>96505</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-06-08 16:31:54 -0700</bug_when>
    <thetext>Created attachment 96505
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417949</commentid>
    <comment_count>2</comment_count>
      <attachid>96505</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-09 04:35:14 -0700</bug_when>
    <thetext>Comment on attachment 96505
Patch

Attachment 96505 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/8777979</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418190</commentid>
    <comment_count>3</comment_count>
      <attachid>96618</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-06-09 12:36:13 -0700</bug_when>
    <thetext>Created attachment 96618
windows build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418191</commentid>
    <comment_count>4</comment_count>
      <attachid>96618</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-06-09 12:36:50 -0700</bug_when>
    <thetext>Comment on attachment 96618
windows build fix

r+, but we don&apos;t typically need review for build fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418195</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-06-09 12:44:41 -0700</bug_when>
    <thetext>Committed r88473: &lt;http://trac.webkit.org/changeset/88473&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418197</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-06-09 12:52:37 -0700</bug_when>
    <thetext>Heh -- I was just uploading because that&apos;s the best way to get a file back to my Mac from the Windows trybot :).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96505</attachid>
            <date>2011-06-08 16:31:54 -0700</date>
            <delta_ts>2011-06-09 04:35:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62337-20110608163153.patch</filename>
            <type>text/plain</type>
            <size>22922</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODg0MDIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzcgQEAK
KzIwMTEtMDYtMDggIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGYWN0b3JlZCBhIGJ1bmNo
IG9mIEhlYXAgZnVuY3Rpb25hbGl0eSBpbnRvIHN0YW5kLWFsb25lIGZ1bmN0b3JzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjMzNworICAgICAgICAK
KyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgbWFraW5nIHRoZXNlIGZ1bmN0b3Jz
IG9wZXJhdGUgb24gYXJiaXRyYXJ5CisgICAgICAgIHNldHMgb2YgTWFya2VkQmxvY2tzLgorCisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhwOiBUaGlzIGZpbGUgaXMgYSBzbWFsbCB0cmFnZWR5
LgorCisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1
Z2dlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMpOiBVcGRhdGVkIGZvciB0eXBlIGNoYW5nZSBh
bmQgcmVuYW1lLgorCisgICAgICAgICogaGVhcC9IYW5kbGVIZWFwLmg6CisgICAgICAgIChKU0M6
OkhhbmRsZUhlYXA6OmZvckVhY2hTdHJvbmdIYW5kbGUpOiBOZXcgZnVuY3Rpb24gZm9yIGl0ZXJh
dGluZyBhbGwKKyAgICAgICAgc3Ryb25nIGhhbmRsZXMsIHNvIHdlIGNhbiBwbGF5IGFsb25nIGlu
IHRoZSBmdW5jdG9yIGdhbWUuCisKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAo
SlNDOjpDb3VudEZ1bmN0b3I6OkNvdW50RnVuY3Rvcjo6Q291bnRGdW5jdG9yKToKKyAgICAgICAg
KEpTQzo6Q291bnRGdW5jdG9yOjpDb3VudEZ1bmN0b3I6OmNvdW50KToKKyAgICAgICAgKEpTQzo6
Q291bnRGdW5jdG9yOjpDb3VudEZ1bmN0b3I6OnJldHVyblZhbHVlKToKKyAgICAgICAgKEpTQzo6
Q291bnRGdW5jdG9yOjpDbGVhck1hcmtzOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6Q291
bnRGdW5jdG9yOjpSZXNldEFsbG9jYXRvcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OkNv
dW50RnVuY3Rvcjo6U3dlZXA6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpDb3VudEZ1bmN0
b3I6Ok1hcmtDb3VudDo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OkNvdW50RnVuY3Rvcjo6
U2l6ZTo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OkNvdW50RnVuY3Rvcjo6Q2FwYWNpdHk6
Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpDb3VudEZ1bmN0b3I6OkNvdW50OjpvcGVyYXRv
cigpKToKKyAgICAgICAgKEpTQzo6Q291bnRGdW5jdG9yOjpDb3VudElmR2xvYmFsT2JqZWN0Ojpv
cGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6Q291bnRGdW5jdG9yOjpUYWtlSWZFbXB0eTo6VGFr
ZUlmRW1wdHkpOgorICAgICAgICAoSlNDOjpDb3VudEZ1bmN0b3I6OlRha2VJZkVtcHR5OjpvcGVy
YXRvcigpKToKKyAgICAgICAgKEpTQzo6Q291bnRGdW5jdG9yOjpUYWtlSWZFbXB0eTo6cmV0dXJu
VmFsdWUpOgorICAgICAgICAoSlNDOjpDb3VudEZ1bmN0b3I6OlJlY29yZFR5cGU6OlJlY29yZFR5
cGUpOgorICAgICAgICAoSlNDOjpDb3VudEZ1bmN0b3I6OlJlY29yZFR5cGU6OnR5cGVOYW1lKToK
KyAgICAgICAgKEpTQzo6Q291bnRGdW5jdG9yOjpSZWNvcmRUeXBlOjpvcGVyYXRvcigpKToKKyAg
ICAgICAgKEpTQzo6Q291bnRGdW5jdG9yOjpSZWNvcmRUeXBlOjpyZXR1cm5WYWx1ZSk6IFRoZXNl
IGZ1bmN0b3JzIGZhY3RvciBvdXQKKyAgICAgICAgYmVoYXZpb3IgdGhhdCB1c2VkIHRvIGJlIGlu
IHRoZSBmdW5jdGlvbnMgYmVsb3cuCisKKyAgICAgICAgKEpTQzo6SGVhcDo6Y2xlYXJNYXJrcyk6
CisgICAgICAgIChKU0M6OkhlYXA6OnN3ZWVwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6b2JqZWN0
Q291bnQpOgorICAgICAgICAoSlNDOjpIZWFwOjpzaXplKToKKyAgICAgICAgKEpTQzo6SGVhcDo6
Y2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpIZWFwOjpwcm90ZWN0ZWRHbG9iYWxPYmplY3RDb3Vu
dCk6CisgICAgICAgIChKU0M6OkhlYXA6OnByb3RlY3RlZE9iamVjdENvdW50KToKKyAgICAgICAg
KEpTQzo6SGVhcDo6cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cyk6CisgICAgICAgIChKU0M6Okhl
YXA6Om9iamVjdFR5cGVDb3VudHMpOgorICAgICAgICAoSlNDOjpIZWFwOjpyZXNldEFsbG9jYXRv
cik6CisgICAgICAgIChKU0M6OkhlYXA6OmZyZWVCbG9ja3MpOgorICAgICAgICAoSlNDOjpIZWFw
OjpzaHJpbmspOiBGYWN0b3JlZCBvdXQgYmVoYXZpb3IgaW50byB0aGUgZnVuY3RvcnMgYWJvdmUu
CisKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6Zm9yRWFjaFBy
b3RlY3RlZENlbGwpOgorICAgICAgICAoSlNDOjpIZWFwOjpmb3JFYWNoQ2VsbCk6CisgICAgICAg
IChKU0M6OkhlYXA6OmZvckVhY2hCbG9jayk6IEFkZGVkIGZvckVhY2gqIGl0ZXJhdGlvbiB0ZW1w
bGF0ZXMuIEkgY2hvc2UKKyAgICAgICAgZnVuY3Rvci1iYXNlZCB0ZW1wbGF0ZXMgaW5zdGVhZCBv
ZiBwbGFpbiBpdGVyYXRvcnMgYmVjYXVzZSB0aGV5J3JlIHNpbXBsZXIKKyAgICAgICAgdG8gaW1w
bGVtZW50IGluIHRoaXMgY2FzZSBhbmQgdGhleSByZXF1aXJlIGEgbG90IGxlc3MgY29kZSBhdCB0
aGUgY2FsbCBzaXRlLgorCisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgorICAgICAgICAo
SlNDOjpNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3I6OnJldHVyblZhbHVlKTogRGVmYXVsdCBwYXJl
bnQgY2xhc3MgZm9yCisgICAgICAgIHRyaXZpYWwgZnVuY3RvcnMuCisKKyAgICAgICAgKEpTQzo6
TWFya2VkQmxvY2s6OmZvckVhY2hDZWxsKTogUmVuYW1lZCBmb3JFYWNoIHRvIGZvckVhY2hDZWxs
IGJlY2F1c2UKKyAgICAgICAgd2UgaGF2ZSBhIGZldyBkaWZmZXJlbnQga2luZCBvZiAiZm9yIGVh
Y2giIG5vdy4KKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAg
KFdURjo6UmVjb21waWxlOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRh
OjpKU0dsb2JhbERhdGEpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OnJlY29tcGlsZUFs
bEpTRnVuY3Rpb25zKTogVXBkYXRlZCBmb3IgdHlwZSBjaGFuZ2UgYW5kIHJlbmFtZS4KKworICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6IFJlbW92ZWQgZ2xvYmFsT2JqZWN0Q291bnQg
YmVjYXVzZSBpdCB3YXMgdW51c2VkLgorCiAyMDExLTA2LTA4ICBTYWlsZXNoIEFncmF3YWwgIDxz
YWlsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBNaWhhaSBQYXJwYXJpdGEu
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHJldmlzaW9u
IDg4NDAyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAkod29y
a2luZyBjb3B5KQpAQCAtMjI0LDcgKzIyNCw2IEBAIF9fWk4zSlNDNDFjb25zdHJ1Y3RGdW5jdGlv
blNraXBwaW5nRXZhbEUKIF9fWk4zSlNDNEhlYXAxNmFjdGl2aXR5Q2FsbGJhY2tFdgogX19aTjNK
U0M0SGVhcDE2b2JqZWN0VHlwZUNvdW50c0V2CiBfX1pOM0pTQzRIZWFwMTdjb2xsZWN0QWxsR2Fy
YmFnZUV2Ci1fX1pOM0pTQzRIZWFwMTdnbG9iYWxPYmplY3RDb3VudEV2CiBfX1pOM0pTQzRIZWFw
MTdpc1ZhbGlkQWxsb2NhdGlvbkVtCiBfX1pOM0pTQzRIZWFwMTlzZXRBY3Rpdml0eUNhbGxiYWNr
RU4zV1RGMTBQYXNzT3duUHRySU5TXzE4R0NBY3Rpdml0eUNhbGxiYWNrRUVFCiBfX1pOM0pTQzRI
ZWFwMjBwcm90ZWN0ZWRPYmplY3RDb3VudEV2CkBAIC01MzUsOSArNTM0LDYgQEAgX19aTkszSlND
MThQcm9wZXJ0eURlc2NyaXB0b3I2Z2V0dGVyRXYKIF9fWk5LM0pTQzE4UHJvcGVydHlEZXNjcmlw
dG9yNnNldHRlckV2CiBfX1pOSzNKU0MxOFByb3BlcnR5RGVzY3JpcHRvcjh3cml0YWJsZUV2CiBf
X1pOSzNKU0MxOVNvdXJjZVByb3ZpZGVyQ2FjaGU4Ynl0ZVNpemVFdgotX19aTkszSlNDNEhlYXAx
MW9iamVjdENvdW50RXYKLV9fWk5LM0pTQzRIZWFwNHNpemVFdgotX19aTkszSlNDNEhlYXA4Y2Fw
YWNpdHlFdgogX19aTkszSlNDNkpTQ2VsbDExdG9QcmltaXRpdmVFUE5TXzlFeGVjU3RhdGVFTlNf
MjJQcmVmZXJyZWRQcmltaXRpdmVUeXBlRQogX19aTkszSlNDNkpTQ2VsbDEydG9UaGlzT2JqZWN0
RVBOU185RXhlY1N0YXRlRQogX19aTkszSlNDNkpTQ2VsbDE0aXNHZXR0ZXJTZXR0ZXJFdgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCShyZXZpc2lv
biA4ODQwMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIHsKIAogdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIAotY2xhc3MgUmVjb21waWxlciB7CitjbGFzcyBSZWNvbXBpbGVyIDogcHVi
bGljIE1hcmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7CiBwdWJsaWM6CiAgICAgUmVjb21waWxlcihE
ZWJ1Z2dlciopOwogICAgIH5SZWNvbXBpbGVyKCk7CkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBE
ZWJ1Z2dlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMoSgogICAgICAgICByZXR1cm47CiAKICAg
ICBSZWNvbXBpbGVyIHJlY29tcGlsZXIodGhpcyk7Ci0gICAgZ2xvYmFsRGF0YS0+aGVhcC5mb3JF
YWNoKHJlY29tcGlsZXIpOworICAgIGdsb2JhbERhdGEtPmhlYXAuZm9yRWFjaENlbGwocmVjb21w
aWxlcik7CiB9CiAKIEpTVmFsdWUgZXZhbHVhdGVJbkdsb2JhbENhbGxGcmFtZShjb25zdCBVU3Ry
aW5nJiBzY3JpcHQsIEpTVmFsdWUmIGV4Y2VwdGlvbiwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZUhlYXAuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVIZWFwLmgJKHJldmlz
aW9uIDg4NDAyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlSGVhcC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJCbG9ja1N0YWNrLmgi
CiAjaW5jbHVkZSAiSGFuZGxlLmgiCisjaW5jbHVkZSAiSGFzaENvdW50ZWRTZXQuaCIKICNpbmNs
dWRlICJTZW50aW5lbExpbmtlZExpc3QuaCIKICNpbmNsdWRlICJTaW5nbHlMaW5rZWRMaXN0Lmgi
CiAKQEAgLTM4LDcgKzM5LDYgQEAgY2xhc3MgSGVhcFJvb3RWaXNpdG9yOwogY2xhc3MgSlNHbG9i
YWxEYXRhOwogY2xhc3MgSlNWYWx1ZTsKIGNsYXNzIE1hcmtTdGFjazsKLWNsYXNzIFR5cGVDb3Vu
dGVyOwogdHlwZWRlZiBNYXJrU3RhY2sgU2xvdFZpc2l0b3I7CiAKIGNsYXNzIFdlYWtIYW5kbGVP
d25lciB7CkBAIC03NCw3ICs3NCw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdW5zaWduZWQg
cHJvdGVjdGVkR2xvYmFsT2JqZWN0Q291bnQoKTsKLSAgICB2b2lkIHByb3RlY3RlZE9iamVjdFR5
cGVDb3VudHMoVHlwZUNvdW50ZXImKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+
IHZvaWQgZm9yRWFjaFN0cm9uZ0hhbmRsZShGdW5jdG9yJiwgY29uc3QgSGFzaENvdW50ZWRTZXQ8
SlNDZWxsKj4mIHNraXBTZXQpOwogCiBwcml2YXRlOgogICAgIGNsYXNzIE5vZGUgewpAQCAtMjc4
LDYgKzI3OSwxOSBAQCBpbmxpbmUgV2Vha0hhbmRsZU93bmVyKiBIYW5kbGVIZWFwOjpOb2RlCiAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V2Vha0hhbmRsZU93bmVyKj4oLTEpOwogfQogCit0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIEhhbmRsZUhlYXA6OmZvckVhY2hTdHJvbmdI
YW5kbGUoRnVuY3RvciYgZnVuY3RvciwgY29uc3QgSGFzaENvdW50ZWRTZXQ8SlNDZWxsKj4mIHNr
aXBTZXQpCit7CisgICAgTm9kZSogZW5kID0gbV9zdHJvbmdMaXN0LmVuZCgpOworICAgIGZvciAo
Tm9kZSogbm9kZSA9IG1fc3Ryb25nTGlzdC5iZWdpbigpOyBub2RlICE9IGVuZDsgbm9kZSA9IG5v
ZGUtPm5leHQoKSkgeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gKm5vZGUtPnNsb3QoKTsKKyAg
ICAgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxsKCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgaWYgKHNraXBTZXQuY29udGFpbnModmFsdWUuYXNDZWxsKCkpKQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIGZ1bmN0b3IodmFsdWUuYXNDZWxsKCkpOworICAgIH0K
K30KKwogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShy
ZXZpc2lvbiA4ODQwMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiw5ICszNiwxMiBAQAogI2RlZmluZSBDT0xMRUNUX09OX0VWRVJZ
X0FMTE9DQVRJT04gMAogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwordXNpbmcgbmFtZXNwYWNlIEpT
QzsKIAogbmFtZXNwYWNlIEpTQyB7CiAKK25hbWVzcGFjZSB7IAorCiBjb25zdCBzaXplX3QgbWlu
Qnl0ZXNQZXJDeWNsZSA9IDUxMiAqIDEwMjQ7CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlk
U2hhcmVkSW5zdGFuY2VUaHJlYWRTdGF0ZSgpCkBAIC02Myw2ICs2NiwxNzkgQEAgc3RhdGljIGlu
bGluZSBib29sIGlzVmFsaWRUaHJlYWRTdGF0ZShKUwogICAgIHJldHVybiB0cnVlOwogfQogCitj
bGFzcyBDb3VudEZ1bmN0b3IgeworcHVibGljOgorICAgIHR5cGVkZWYgc2l6ZV90IFJldHVyblR5
cGU7CisKKyAgICBDb3VudEZ1bmN0b3IoKTsKKyAgICB2b2lkIGNvdW50KHNpemVfdCk7CisgICAg
UmV0dXJuVHlwZSByZXR1cm5WYWx1ZSgpOworCitwcml2YXRlOgorICAgIFJldHVyblR5cGUgbV9j
b3VudDsKK307CisKK2lubGluZSBDb3VudEZ1bmN0b3I6OkNvdW50RnVuY3RvcigpCisgICAgOiBt
X2NvdW50KDApCit7Cit9CisKK2lubGluZSB2b2lkIENvdW50RnVuY3Rvcjo6Y291bnQoc2l6ZV90
IGNvdW50KQoreworICAgIG1fY291bnQgKz0gY291bnQ7Cit9CisKK2lubGluZSBDb3VudEZ1bmN0
b3I6OlJldHVyblR5cGUgQ291bnRGdW5jdG9yOjpyZXR1cm5WYWx1ZSgpCit7CisgICAgcmV0dXJu
IG1fY291bnQ7Cit9CisKK3N0cnVjdCBDbGVhck1hcmtzIDogTWFya2VkQmxvY2s6OlZvaWRGdW5j
dG9yIHsKKyAgICB2b2lkIG9wZXJhdG9yKCkoTWFya2VkQmxvY2sqKTsKK307CisKK2lubGluZSB2
b2lkIENsZWFyTWFya3M6Om9wZXJhdG9yKCkoTWFya2VkQmxvY2sqIGJsb2NrKQoreworICAgIGJs
b2NrLT5jbGVhck1hcmtzKCk7Cit9CisKK3N0cnVjdCBSZXNldEFsbG9jYXRvciA6IE1hcmtlZEJs
b2NrOjpWb2lkRnVuY3RvciB7CisgICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrKik7Cit9
OworCitpbmxpbmUgdm9pZCBSZXNldEFsbG9jYXRvcjo6b3BlcmF0b3IoKShNYXJrZWRCbG9jayog
YmxvY2spCit7CisgICAgYmxvY2stPnJlc2V0QWxsb2NhdG9yKCk7Cit9CisKK3N0cnVjdCBTd2Vl
cCA6IE1hcmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7CisgICAgdm9pZCBvcGVyYXRvcigpKE1hcmtl
ZEJsb2NrKik7Cit9OworCitpbmxpbmUgdm9pZCBTd2VlcDo6b3BlcmF0b3IoKShNYXJrZWRCbG9j
ayogYmxvY2spCit7CisgICAgYmxvY2stPnN3ZWVwKCk7Cit9CisKK3N0cnVjdCBNYXJrQ291bnQg
OiBDb3VudEZ1bmN0b3IgeworICAgIHZvaWQgb3BlcmF0b3IoKShNYXJrZWRCbG9jayopOworfTsK
KworaW5saW5lIHZvaWQgTWFya0NvdW50OjpvcGVyYXRvcigpKE1hcmtlZEJsb2NrKiBibG9jaykK
K3sKKyAgICBjb3VudChibG9jay0+bWFya0NvdW50KCkpOworfQorCitzdHJ1Y3QgU2l6ZSA6IENv
dW50RnVuY3RvciB7CisgICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrKik7Cit9OworCitp
bmxpbmUgdm9pZCBTaXplOjpvcGVyYXRvcigpKE1hcmtlZEJsb2NrKiBibG9jaykKK3sKKyAgICBj
b3VudChibG9jay0+bWFya0NvdW50KCkgKiBibG9jay0+Y2VsbFNpemUoKSk7Cit9CisKK3N0cnVj
dCBDYXBhY2l0eSA6IENvdW50RnVuY3RvciB7CisgICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJs
b2NrKik7Cit9OworCitpbmxpbmUgdm9pZCBDYXBhY2l0eTo6b3BlcmF0b3IoKShNYXJrZWRCbG9j
ayogYmxvY2spCit7CisgICAgY291bnQoYmxvY2stPmNhcGFjaXR5KCkpOworfQorCitzdHJ1Y3Qg
Q291bnQgOiBwdWJsaWMgQ291bnRGdW5jdG9yIHsKKyAgICB2b2lkIG9wZXJhdG9yKCkoSlNDZWxs
Kik7Cit9OworCitpbmxpbmUgdm9pZCBDb3VudDo6b3BlcmF0b3IoKShKU0NlbGwqKQoreworICAg
IGNvdW50KDEpOworfQorCitzdHJ1Y3QgQ291bnRJZkdsb2JhbE9iamVjdCA6IENvdW50RnVuY3Rv
ciB7CisgICAgdm9pZCBvcGVyYXRvcigpKEpTQ2VsbCopOworfTsKKworaW5saW5lIHZvaWQgQ291
bnRJZkdsb2JhbE9iamVjdDo6b3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCit7CisgICAgaWYgKCFj
ZWxsLT5pc09iamVjdCgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFhc09iamVjdChjZWxs
KS0+aXNHbG9iYWxPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGNvdW50KDEpOworfQor
CitjbGFzcyBUYWtlSWZFbXB0eSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBNYXJrZWRCbG9jayog
UmV0dXJuVHlwZTsKKworICAgIFRha2VJZkVtcHR5KE5ld1NwYWNlKik7CisgICAgdm9pZCBvcGVy
YXRvcigpKE1hcmtlZEJsb2NrKik7CisgICAgUmV0dXJuVHlwZSByZXR1cm5WYWx1ZSgpOworCitw
cml2YXRlOgorICAgIE5ld1NwYWNlKiBtX25ld1NwYWNlOworICAgIERvdWJseUxpbmtlZExpc3Q8
TWFya2VkQmxvY2s+IG1fZW1wdGllczsKK307CisKK2lubGluZSBUYWtlSWZFbXB0eTo6VGFrZUlm
RW1wdHkoTmV3U3BhY2UqIG5ld1NwYWNlKQorICAgIDogbV9uZXdTcGFjZShuZXdTcGFjZSkKK3sK
K30KKworaW5saW5lIHZvaWQgVGFrZUlmRW1wdHk6Om9wZXJhdG9yKCkoTWFya2VkQmxvY2sqIGJs
b2NrKQoreworICAgIGlmICghYmxvY2stPmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9uZXdTcGFjZS0+cmVtb3ZlQmxvY2soYmxvY2spOworICAgIG1fZW1wdGllcy5hcHBlbmQo
YmxvY2spOworfQorCitpbmxpbmUgVGFrZUlmRW1wdHk6OlJldHVyblR5cGUgVGFrZUlmRW1wdHk6
OnJldHVyblZhbHVlKCkKK3sKKyAgICByZXR1cm4gbV9lbXB0aWVzLmhlYWQoKTsKK30KKworY2xh
c3MgUmVjb3JkVHlwZSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBQYXNzT3duUHRyPFR5cGVDb3Vu
dFNldD4gUmV0dXJuVHlwZTsKKworICAgIFJlY29yZFR5cGUoKTsKKyAgICB2b2lkIG9wZXJhdG9y
KCkoSlNDZWxsKik7CisgICAgUmV0dXJuVHlwZSByZXR1cm5WYWx1ZSgpOworCitwcml2YXRlOgor
ICAgIGNvbnN0IGNoYXIqIHR5cGVOYW1lKEpTQ2VsbCopOworICAgIE93blB0cjxUeXBlQ291bnRT
ZXQ+IG1fdHlwZUNvdW50U2V0OworfTsKKworaW5saW5lIFJlY29yZFR5cGU6OlJlY29yZFR5cGUo
KQorICAgIDogbV90eXBlQ291bnRTZXQoYWRvcHRQdHIobmV3IFR5cGVDb3VudFNldCkpCit7Cit9
CisKK2lubGluZSBjb25zdCBjaGFyKiBSZWNvcmRUeXBlOjp0eXBlTmFtZShKU0NlbGwqIGNlbGwp
Cit7CisgICAgY29uc3QgQ2xhc3NJbmZvKiBpbmZvID0gY2VsbC0+Y2xhc3NJbmZvKCk7CisgICAg
aWYgKCFpbmZvIHx8ICFpbmZvLT5jbGFzc05hbWUpCisgICAgICAgIHJldHVybiAiW3Vua25vd25d
IjsKKyAgICByZXR1cm4gaW5mby0+Y2xhc3NOYW1lOworfQorCitpbmxpbmUgdm9pZCBSZWNvcmRU
eXBlOjpvcGVyYXRvcigpKEpTQ2VsbCogY2VsbCkKK3sKKyAgICBtX3R5cGVDb3VudFNldC0+YWRk
KHR5cGVOYW1lKGNlbGwpKTsKK30KKworaW5saW5lIFBhc3NPd25QdHI8VHlwZUNvdW50U2V0PiBS
ZWNvcmRUeXBlOjpyZXR1cm5WYWx1ZSgpCit7CisgICAgcmV0dXJuIG1fdHlwZUNvdW50U2V0LnJl
bGVhc2UoKTsKK30KKworfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKIEhlYXA6OkhlYXAoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhKQogICAgIDogbV9vcGVyYXRpb25JblByb2dyZXNzKE5vT3Bl
cmF0aW9uKQogICAgICwgbV9uZXdTcGFjZSh0aGlzKQpAQCAtMjgyLDE0MSArNDU4LDQ3IEBAIHZv
aWQgSGVhcDo6bWFya1Jvb3RzKCkKIAogdm9pZCBIZWFwOjpjbGVhck1hcmtzKCkKIHsKLSAgICBC
bG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLmVuZCgpOwotICAgIGZvciAoQmxvY2tJdGVyYXRv
ciBpdCA9IG1fYmxvY2tzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgKCppdCkt
PmNsZWFyTWFya3MoKTsKKyAgICBmb3JFYWNoQmxvY2s8Q2xlYXJNYXJrcz4oKTsKIH0KIAogdm9p
ZCBIZWFwOjpzd2VlcCgpCiB7Ci0gICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5lbmQo
KTsKLSAgICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpCi0gICAgICAgICgqaXQpLT5zd2VlcCgpOworICAgIGZvckVhY2hCbG9jazxTd2Vl
cD4oKTsKIH0KIAotc2l6ZV90IEhlYXA6Om9iamVjdENvdW50KCkgY29uc3QKK3NpemVfdCBIZWFw
OjpvYmplY3RDb3VudCgpCiB7Ci0gICAgc2l6ZV90IHJlc3VsdCA9IDA7Ci0gICAgQmxvY2tJdGVy
YXRvciBlbmQgPSBtX2Jsb2Nrcy5lbmQoKTsKLSAgICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBt
X2Jsb2Nrcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIHJlc3VsdCArPSAoKml0
KS0+bWFya0NvdW50KCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gZm9yRWFjaEJs
b2NrPE1hcmtDb3VudD4oKTsKIH0KIAotc2l6ZV90IEhlYXA6OnNpemUoKSBjb25zdAorc2l6ZV90
IEhlYXA6OnNpemUoKQogewotICAgIHNpemVfdCByZXN1bHQgPSAwOwotICAgIEJsb2NrSXRlcmF0
b3IgZW5kID0gbV9ibG9ja3MuZW5kKCk7Ci0gICAgZm9yIChCbG9ja0l0ZXJhdG9yIGl0ID0gbV9i
bG9ja3MuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICByZXN1bHQgKz0gKCppdCkt
PnNpemUoKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBmb3JFYWNoQmxvY2s8U2l6
ZT4oKTsKIH0KIAotc2l6ZV90IEhlYXA6OmNhcGFjaXR5KCkgY29uc3QKK3NpemVfdCBIZWFwOjpj
YXBhY2l0eSgpCiB7Ci0gICAgc2l6ZV90IHJlc3VsdCA9IDA7Ci0gICAgQmxvY2tJdGVyYXRvciBl
bmQgPSBtX2Jsb2Nrcy5lbmQoKTsKLSAgICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nr
cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIHJlc3VsdCArPSAoKml0KS0+Y2Fw
YWNpdHkoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1zaXplX3QgSGVhcDo6Z2xvYmFsT2Jq
ZWN0Q291bnQoKQotewotICAgIHJldHVybiBtX2dsb2JhbERhdGEtPmdsb2JhbE9iamVjdENvdW50
OworICAgIHJldHVybiBmb3JFYWNoQmxvY2s8Q2FwYWNpdHk+KCk7CiB9CiAKIHNpemVfdCBIZWFw
Ojpwcm90ZWN0ZWRHbG9iYWxPYmplY3RDb3VudCgpCiB7Ci0gICAgc2l6ZV90IGNvdW50ID0gbV9o
YW5kbGVIZWFwLnByb3RlY3RlZEdsb2JhbE9iamVjdENvdW50KCk7Ci0KLSAgICBQcm90ZWN0Q291
bnRTZXQ6Oml0ZXJhdG9yIGVuZCA9IG1fcHJvdGVjdGVkVmFsdWVzLmVuZCgpOwotICAgIGZvciAo
UHJvdGVjdENvdW50U2V0OjppdGVyYXRvciBpdCA9IG1fcHJvdGVjdGVkVmFsdWVzLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBpZiAoaXQtPmZpcnN0LT5pc09iamVjdCgpICYm
IGFzT2JqZWN0KGl0LT5maXJzdCktPmlzR2xvYmFsT2JqZWN0KCkpCi0gICAgICAgICAgICBjb3Vu
dCsrOwotICAgIH0KLQotICAgIHJldHVybiBjb3VudDsKKyAgICByZXR1cm4gZm9yRWFjaFByb3Rl
Y3RlZENlbGw8Q291bnRJZkdsb2JhbE9iamVjdD4oKTsKIH0KIAogc2l6ZV90IEhlYXA6OnByb3Rl
Y3RlZE9iamVjdENvdW50KCkKIHsKLSAgICByZXR1cm4gbV9wcm90ZWN0ZWRWYWx1ZXMuc2l6ZSgp
OwotfQotCi1jbGFzcyBUeXBlQ291bnRlciB7Ci1wdWJsaWM6Ci0gICAgVHlwZUNvdW50ZXIoKTsK
LSAgICB2b2lkIG9wZXJhdG9yKCkoSlNDZWxsKik7Ci0gICAgUGFzc093blB0cjxUeXBlQ291bnRT
ZXQ+IHRha2UoKTsKLSAgICAKLXByaXZhdGU6Ci0gICAgY29uc3QgY2hhciogdHlwZU5hbWUoSlND
ZWxsKik7Ci0gICAgT3duUHRyPFR5cGVDb3VudFNldD4gbV90eXBlQ291bnRTZXQ7Ci0gICAgSGFz
aFNldDxKU0NlbGwqPiBtX2NlbGxzOwotfTsKLQotaW5saW5lIFR5cGVDb3VudGVyOjpUeXBlQ291
bnRlcigpCi0gICAgOiBtX3R5cGVDb3VudFNldChhZG9wdFB0cihuZXcgVHlwZUNvdW50U2V0KSkK
LXsKLX0KLQotaW5saW5lIGNvbnN0IGNoYXIqIFR5cGVDb3VudGVyOjp0eXBlTmFtZShKU0NlbGwq
IGNlbGwpCi17Ci0gICAgaWYgKGNlbGwtPmlzU3RyaW5nKCkpCi0gICAgICAgIHJldHVybiAic3Ry
aW5nIjsKLSAgICBpZiAoY2VsbC0+aXNHZXR0ZXJTZXR0ZXIoKSkKLSAgICAgICAgcmV0dXJuICJH
ZXR0ZXItU2V0dGVyIjsKLSAgICBpZiAoY2VsbC0+aXNBUElWYWx1ZVdyYXBwZXIoKSkKLSAgICAg
ICAgcmV0dXJuICJBUEkgd3JhcHBlciI7Ci0gICAgaWYgKGNlbGwtPmlzUHJvcGVydHlOYW1lSXRl
cmF0b3IoKSkKLSAgICAgICAgcmV0dXJuICJGb3ItaW4gaXRlcmF0b3IiOwotICAgIGlmIChjb25z
dCBDbGFzc0luZm8qIGluZm8gPSBjZWxsLT5jbGFzc0luZm8oKSkKLSAgICAgICAgcmV0dXJuIGlu
Zm8tPmNsYXNzTmFtZTsKLSAgICBpZiAoIWNlbGwtPmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVy
biAiW2VtcHR5IGNlbGxdIjsKLSAgICByZXR1cm4gIk9iamVjdCI7Ci19Ci0KLWlubGluZSB2b2lk
IFR5cGVDb3VudGVyOjpvcGVyYXRvcigpKEpTQ2VsbCogY2VsbCkKLXsKLSAgICBpZiAoIW1fY2Vs
bHMuYWRkKGNlbGwpLnNlY29uZCkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fdHlwZUNvdW50U2V0
LT5hZGQodHlwZU5hbWUoY2VsbCkpOwotfQotCi1pbmxpbmUgUGFzc093blB0cjxUeXBlQ291bnRT
ZXQ+IFR5cGVDb3VudGVyOjp0YWtlKCkKLXsKLSAgICByZXR1cm4gbV90eXBlQ291bnRTZXQucmVs
ZWFzZSgpOworICAgIHJldHVybiBmb3JFYWNoUHJvdGVjdGVkQ2VsbDxDb3VudD4oKTsKIH0KIAog
UGFzc093blB0cjxUeXBlQ291bnRTZXQ+IEhlYXA6OnByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMo
KQogewotICAgIFR5cGVDb3VudGVyIHR5cGVDb3VudGVyOwotCi0gICAgUHJvdGVjdENvdW50U2V0
OjppdGVyYXRvciBlbmQgPSBtX3Byb3RlY3RlZFZhbHVlcy5lbmQoKTsKLSAgICBmb3IgKFByb3Rl
Y3RDb3VudFNldDo6aXRlcmF0b3IgaXQgPSBtX3Byb3RlY3RlZFZhbHVlcy5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpCi0gICAgICAgIHR5cGVDb3VudGVyKGl0LT5maXJzdCk7Ci0gICAgbV9oYW5k
bGVIZWFwLnByb3RlY3RlZE9iamVjdFR5cGVDb3VudHModHlwZUNvdW50ZXIpOwotCi0gICAgcmV0
dXJuIHR5cGVDb3VudGVyLnRha2UoKTsKLX0KLQotdm9pZCBIYW5kbGVIZWFwOjpwcm90ZWN0ZWRP
YmplY3RUeXBlQ291bnRzKFR5cGVDb3VudGVyJiB0eXBlQ291bnRlcikKLXsKLSAgICBOb2RlKiBl
bmQgPSBtX3N0cm9uZ0xpc3QuZW5kKCk7Ci0gICAgZm9yIChOb2RlKiBub2RlID0gbV9zdHJvbmdM
aXN0LmJlZ2luKCk7IG5vZGUgIT0gZW5kOyBub2RlID0gbm9kZS0+bmV4dCgpKSB7Ci0gICAgICAg
IEpTVmFsdWUgdmFsdWUgPSAqbm9kZS0+c2xvdCgpOwotICAgICAgICBpZiAodmFsdWUgJiYgdmFs
dWUuaXNDZWxsKCkpCi0gICAgICAgICAgICB0eXBlQ291bnRlcih2YWx1ZS5hc0NlbGwoKSk7Ci0g
ICAgfQorICAgIHJldHVybiBmb3JFYWNoUHJvdGVjdGVkQ2VsbDxSZWNvcmRUeXBlPigpOwogfQog
CiBQYXNzT3duUHRyPFR5cGVDb3VudFNldD4gSGVhcDo6b2JqZWN0VHlwZUNvdW50cygpCiB7Ci0g
ICAgVHlwZUNvdW50ZXIgdHlwZUNvdW50ZXI7Ci0gICAgZm9yRWFjaCh0eXBlQ291bnRlcik7Ci0g
ICAgcmV0dXJuIHR5cGVDb3VudGVyLnRha2UoKTsKKyAgICByZXR1cm4gZm9yRWFjaENlbGw8UmVj
b3JkVHlwZT4oKTsKIH0KIAogdm9pZCBIZWFwOjpjb2xsZWN0QWxsR2FyYmFnZSgpCkBAIC00NjMs
MTMgKzU0NSw5IEBAIHZvaWQgSGVhcDo6Y29sbGVjdChTd2VlcFRvZ2dsZSBzd2VlcFRvZ2cKIAog
dm9pZCBIZWFwOjpyZXNldEFsbG9jYXRvcigpCiB7Ci0gICAgbV9uZXdTcGFjZS5yZXNldEFsbG9j
YXRvcigpOwotCi0gICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5lbmQoKTsKLSAgICBm
b3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
Ci0gICAgICAgICgqaXQpLT5yZXNldEFsbG9jYXRvcigpOwotCiAgICAgbV9leHRyYUNvc3QgPSAw
OworICAgIG1fbmV3U3BhY2UucmVzZXRBbGxvY2F0b3IoKTsKKyAgICBmb3JFYWNoQmxvY2s8UmVz
ZXRBbGxvY2F0b3I+KCk7CiB9CiAKIHZvaWQgSGVhcDo6c2V0QWN0aXZpdHlDYWxsYmFjayhQYXNz
T3duUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gYWN0aXZpdHlDYWxsYmFjaykKQEAgLTUwNCwxMCAr
NTgyLDEwIEBAIE1hcmtlZEJsb2NrKiBIZWFwOjphbGxvY2F0ZUJsb2NrKHNpemVfdCAKICAgICBy
ZXR1cm4gYmxvY2s7CiB9CiAKLXZvaWQgSGVhcDo6ZnJlZUJsb2NrcyhEb3VibHlMaW5rZWRMaXN0
PE1hcmtlZEJsb2NrPiYgYmxvY2tzKQordm9pZCBIZWFwOjpmcmVlQmxvY2tzKE1hcmtlZEJsb2Nr
KiBoZWFkKQogewogICAgIE1hcmtlZEJsb2NrKiBuZXh0OwotICAgIGZvciAoTWFya2VkQmxvY2sq
IGJsb2NrID0gYmxvY2tzLmhlYWQoKTsgYmxvY2s7IGJsb2NrID0gbmV4dCkgeworICAgIGZvciAo
TWFya2VkQmxvY2sqIGJsb2NrID0gaGVhZDsgYmxvY2s7IGJsb2NrID0gbmV4dCkgewogICAgICAg
ICBuZXh0ID0gYmxvY2stPm5leHQoKTsKIAogICAgICAgICBtX2Jsb2Nrcy5yZW1vdmUoYmxvY2sp
OwpAQCAtNTE4LDE5ICs1OTYsOCBAQCB2b2lkIEhlYXA6OmZyZWVCbG9ja3MoRG91Ymx5TGlua2Vk
TGlzdDxNCiB2b2lkIEhlYXA6OnNocmluaygpCiB7CiAgICAgLy8gV2UgcmVjb3JkIGEgdGVtcG9y
YXJ5IGxpc3Qgb2YgZW1wdGllcyB0byBhdm9pZCBtb2RpZnlpbmcgbV9ibG9ja3Mgd2hpbGUgaXRl
cmF0aW5nIGl0LgotICAgIERvdWJseUxpbmtlZExpc3Q8TWFya2VkQmxvY2s+IGVtcHRpZXM7Ci0K
LSAgICBCbG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLmVuZCgpOwotICAgIGZvciAoQmxvY2tJ
dGVyYXRvciBpdCA9IG1fYmxvY2tzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAg
ICBNYXJrZWRCbG9jayogYmxvY2sgPSAqaXQ7Ci0gICAgICAgIGlmICghYmxvY2stPmlzRW1wdHko
KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIG1fbmV3U3BhY2UucmVtb3ZlQmxv
Y2soYmxvY2spOwotICAgICAgICBlbXB0aWVzLmFwcGVuZChibG9jayk7Ci0gICAgfQotICAgIAot
ICAgIGZyZWVCbG9ja3MoZW1wdGllcyk7CisgICAgVGFrZUlmRW1wdHkgdGFrZUlmRW1wdHkoJm1f
bmV3U3BhY2UpOworICAgIGZyZWVCbG9ja3MoZm9yRWFjaEJsb2NrKHRha2VJZkVtcHR5KSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAko
cmV2aXNpb24gODg0MDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdv
cmtpbmcgY29weSkKQEAgLTkxLDEwICs5MSw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IGJvb2wgY29udGFpbnMoY29uc3Qgdm9pZCopOwogCi0gICAgICAgIHNpemVfdCBzaXplKCkgY29u
c3Q7Ci0gICAgICAgIHNpemVfdCBjYXBhY2l0eSgpIGNvbnN0OwotICAgICAgICBzaXplX3Qgb2Jq
ZWN0Q291bnQoKSBjb25zdDsKLSAgICAgICAgc2l6ZV90IGdsb2JhbE9iamVjdENvdW50KCk7Cisg
ICAgICAgIHNpemVfdCBzaXplKCk7CisgICAgICAgIHNpemVfdCBjYXBhY2l0eSgpOworICAgICAg
ICBzaXplX3Qgb2JqZWN0Q291bnQoKTsKICAgICAgICAgc2l6ZV90IHByb3RlY3RlZE9iamVjdENv
dW50KCk7CiAgICAgICAgIHNpemVfdCBwcm90ZWN0ZWRHbG9iYWxPYmplY3RDb3VudCgpOwogICAg
ICAgICBQYXNzT3duUHRyPFR5cGVDb3VudFNldD4gcHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cygp
OwpAQCAtMTA1LDcgKzEwNCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAKICAgICAgICAgSGFz
aFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+JiBtYXJrTGlzdFNldCgpIHsgaWYgKCFtX21hcmtM
aXN0U2V0KSBtX21hcmtMaXN0U2V0ID0gbmV3IEhhc2hTZXQ8TWFya2VkQXJndW1lbnRCdWZmZXIq
PjsgcmV0dXJuICptX21hcmtMaXN0U2V0OyB9CiAgICAgICAgIAotICAgICAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoKEZ1bmN0b3ImKTsKKyAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNo
UHJvdGVjdGVkQ2VsbChGdW5jdG9yJik7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaFByb3RlY3RlZENlbGwoKTsK
KyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0
dXJuVHlwZSBmb3JFYWNoQ2VsbChGdW5jdG9yJik7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaENlbGwoKTsKKyAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJu
VHlwZSBmb3JFYWNoQmxvY2soRnVuY3RvciYpOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hCbG9jaygpOwogICAg
ICAgICAKICAgICAgICAgSGFuZGxlU2xvdCBhbGxvY2F0ZUdsb2JhbEhhbmRsZSgpIHsgcmV0dXJu
IG1faGFuZGxlSGVhcC5hbGxvY2F0ZSgpOyB9CiAgICAgICAgIEhhbmRsZVNsb3QgYWxsb2NhdGVM
b2NhbEhhbmRsZSgpIHsgcmV0dXJuIG1faGFuZGxlU3RhY2sucHVzaCgpOyB9CkBAIC0xMjQsNyAr
MTI4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcmVzZXRBbGxvY2F0b3IoKTsK
IAogICAgICAgICBNYXJrZWRCbG9jayogYWxsb2NhdGVCbG9jayhzaXplX3QgY2VsbFNpemUpOwot
ICAgICAgICB2b2lkIGZyZWVCbG9ja3MoRG91Ymx5TGlua2VkTGlzdDxNYXJrZWRCbG9jaz4mKTsK
KyAgICAgICAgdm9pZCBmcmVlQmxvY2tzKE1hcmtlZEJsb2NrKik7CiAKICAgICAgICAgdm9pZCBj
bGVhck1hcmtzKCk7CiAgICAgICAgIHZvaWQgbWFya1Jvb3RzKCk7CkBAIC0yMjEsMTEgKzIyNSw0
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJlcG9ydEV4dHJhTWVtb3J5Q29zdFNs
b3dDYXNlKGNvc3QpOwogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBp
bmxpbmUgdm9pZCBIZWFwOjpmb3JFYWNoKEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgSGVh
cDo6Zm9yRWFjaFByb3RlY3RlZENlbGwoRnVuY3RvciYgZnVuY3RvcikKKyAgICB7CisgICAgICAg
IFByb3RlY3RDb3VudFNldDo6aXRlcmF0b3IgZW5kID0gbV9wcm90ZWN0ZWRWYWx1ZXMuZW5kKCk7
CisgICAgICAgIGZvciAoUHJvdGVjdENvdW50U2V0OjppdGVyYXRvciBpdCA9IG1fcHJvdGVjdGVk
VmFsdWVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgICAgIGZ1bmN0b3IoaXQt
PmZpcnN0KTsKKyAgICAgICAgbV9oYW5kbGVIZWFwLmZvckVhY2hTdHJvbmdIYW5kbGUoZnVuY3Rv
ciwgbV9wcm90ZWN0ZWRWYWx1ZXMpOworCisgICAgICAgIHJldHVybiBmdW5jdG9yLnJldHVyblZh
bHVlKCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5
cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgSGVhcDo6Zm9yRWFjaFByb3RlY3RlZENlbGwoKQor
ICAgIHsKKyAgICAgICAgRnVuY3RvciBmdW5jdG9yOworICAgICAgICByZXR1cm4gZm9yRWFjaFBy
b3RlY3RlZENlbGwoZnVuY3Rvcik7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgSGVhcDo6Zm9yRWFjaENl
bGwoRnVuY3RvciYgZnVuY3RvcikKKyAgICB7CisgICAgICAgIEJsb2NrSXRlcmF0b3IgZW5kID0g
bV9ibG9ja3MuZW5kKCk7CisgICAgICAgIGZvciAoQmxvY2tJdGVyYXRvciBpdCA9IG1fYmxvY2tz
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgICAgICgqaXQpLT5mb3JFYWNoQ2Vs
bChmdW5jdG9yKTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0b3IucmV0dXJuVmFsdWUoKTsKKyAgICB9
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rv
cjo6UmV0dXJuVHlwZSBIZWFwOjpmb3JFYWNoQ2VsbCgpCisgICAgeworICAgICAgICBGdW5jdG9y
IGZ1bmN0b3I7CisgICAgICAgIHJldHVybiBmb3JFYWNoQ2VsbChmdW5jdG9yKTsKKyAgICB9CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6
UmV0dXJuVHlwZSBIZWFwOjpmb3JFYWNoQmxvY2soRnVuY3RvciYgZnVuY3RvcikKICAgICB7CiAg
ICAgICAgIEJsb2NrSXRlcmF0b3IgZW5kID0gbV9ibG9ja3MuZW5kKCk7CiAgICAgICAgIGZvciAo
QmxvY2tJdGVyYXRvciBpdCA9IG1fYmxvY2tzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAg
ICAgICAgICAgICgqaXQpLT5mb3JFYWNoKGZ1bmN0b3IpOworICAgICAgICAgICAgZnVuY3Rvcigq
aXQpOworICAgICAgICByZXR1cm4gZnVuY3Rvci5yZXR1cm5WYWx1ZSgpOworICAgIH0KKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1
cm5UeXBlIEhlYXA6OmZvckVhY2hCbG9jaygpCisgICAgeworICAgICAgICBGdW5jdG9yIGZ1bmN0
b3I7CisgICAgICAgIHJldHVybiBmb3JFYWNoQmxvY2soZnVuY3Rvcik7CiAgICAgfQogCiAgICAg
aW5saW5lIHZvaWQqIEhlYXA6OmFsbG9jYXRlKHNpemVfdCBieXRlcykKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2aXNpb24gODg0MDIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MSw2ICs0MSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBNYXJrZWRCbG9jayA6IHB1
YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxNYXJrZWRCbG9jaz4gewogICAgICAgICBmcmllbmQg
Y2xhc3MgV1RGOjpEb3VibHlMaW5rZWRMaXN0Tm9kZTxNYXJrZWRCbG9jaz47CiAgICAgcHVibGlj
OgorICAgICAgICBzdHJ1Y3QgVm9pZEZ1bmN0b3IgeworICAgICAgICAgICAgdHlwZWRlZiB2b2lk
IFJldHVyblR5cGU7CisgICAgICAgICAgICB2b2lkIHJldHVyblZhbHVlKCkgeyB9CisgICAgICAg
IH07CisKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBhdG9tU2l6ZSA9IHNpemVvZihkb3Vi
bGUpOyAvLyBFbnN1cmVzIG5hdHVyYWwgYWxpZ25tZW50IGZvciBhbGwgYnVpbHQtaW4gdHlwZXMu
CiAKICAgICAgICAgc3RhdGljIE1hcmtlZEJsb2NrKiBjcmVhdGUoSGVhcCosIHNpemVfdCBjZWxs
U2l6ZSk7CkBAIC03Miw3ICs3Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIHRl
c3RBbmRDbGVhck1hcmtlZChjb25zdCB2b2lkKik7CiAgICAgICAgIHZvaWQgc2V0TWFya2VkKGNv
bnN0IHZvaWQqKTsKICAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9y
PiB2b2lkIGZvckVhY2goRnVuY3RvciYpOworICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVu
Y3Rvcj4gdm9pZCBmb3JFYWNoQ2VsbChGdW5jdG9yJik7CiAKICAgICBwcml2YXRlOgogICAgICAg
ICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJsb2NrU2l6ZSA9IDE2ICogS0I7CkBAIC0xODQsNyArMTg5
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1fbWFya3Muc2V0KGF0b21OdW1iZXIocCkp
OwogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBN
YXJrZWRCbG9jazo6Zm9yRWFjaChGdW5jdG9yJiBmdW5jdG9yKQorICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6Zm9yRWFjaENlbGwoRnVuY3Rv
ciYgZnVuY3RvcikKICAgICB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0b20oKTsg
aSA8IG1fZW5kQXRvbTsgaSArPSBtX2F0b21zUGVyQ2VsbCkgewogICAgICAgICAgICAgaWYgKCFt
X21hcmtzLmdldChpKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxEYXRhLmNwcAkocmV2aXNpb24gODg0MDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3
IEBAIG5hbWVzcGFjZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLWNsYXNzIFJlY29tcGls
ZXIgeworY2xhc3MgUmVjb21waWxlciA6IHB1YmxpYyBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3Ig
ewogcHVibGljOgogICAgIHZvaWQgb3BlcmF0b3IoKShKU0NlbGwqKTsKIH07CkBAIC0xODYsNyAr
MTg2LDYgQEAgSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cAogICAgICwg
cGFyc2VyKG5ldyBQYXJzZXIpCiAgICAgLCBpbnRlcnByZXRlcigwKQogICAgICwgaGVhcCh0aGlz
KQotICAgICwgZ2xvYmFsT2JqZWN0Q291bnQoMCkKICAgICAsIGR5bmFtaWNHbG9iYWxPYmplY3Qo
MCkKICAgICAsIGNhY2hlZFVUQ09mZnNldChOYU4pCiAgICAgLCBtYXhSZWVudHJ5RGVwdGgodGhy
ZWFkU3RhY2tUeXBlID09IFRocmVhZFN0YWNrVHlwZVNtYWxsID8gTWF4U21hbGxUaHJlYWRSZWVu
dHJ5RGVwdGggOiBNYXhMYXJnZVRocmVhZFJlZW50cnlEZXB0aCkKQEAgLTQ0OCw4ICs0NDcsNyBA
QCB2b2lkIEpTR2xvYmFsRGF0YTo6cmVjb21waWxlQWxsSlNGdW5jdGlvCiAgICAgLy8gdXAgdGhy
b3dpbmcgYXdheSBjb2RlIHRoYXQgaXMgbGl2ZSBvbiB0aGUgc3RhY2suCiAgICAgQVNTRVJUKCFk
eW5hbWljR2xvYmFsT2JqZWN0KTsKICAgICAKLSAgICBSZWNvbXBpbGVyIHJlY29tcGlsZXI7Ci0g
ICAgaGVhcC5mb3JFYWNoKHJlY29tcGlsZXIpOworICAgIGhlYXAuZm9yRWFjaENlbGw8UmVjb21w
aWxlcj4oKTsKIH0KIAogdm9pZCBKU0dsb2JhbERhdGE6OnJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5
KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5o
CShyZXZpc2lvbiA4ODQwMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsNyArMjM4LDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgSGFzaE1hcDxPcGFxdWVKU0NsYXNzKiwgT3BhcXVlSlNDbGFzc0NvbnRl
eHREYXRhKj4gb3BhcXVlSlNDbGFzc0RhdGE7CiAKLSAgICAgICAgdW5zaWduZWQgZ2xvYmFsT2Jq
ZWN0Q291bnQ7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBkeW5hbWljR2xvYmFsT2JqZWN0Owog
CiAgICAgICAgIEhhc2hTZXQ8SlNPYmplY3QqPiBzdHJpbmdSZWN1cnNpb25DaGVja1Zpc2l0ZWRP
YmplY3RzOwo=
</data>
<flag name="review"
          id="90212"
          type_id="1"
          status="+"
          setter="oliver"
    />
    <flag name="commit-queue"
          id="90295"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96618</attachid>
            <date>2011-06-09 12:36:13 -0700</date>
            <delta_ts>2011-06-09 12:36:50 -0700</delta_ts>
            <desc>windows build fix</desc>
            <filename>ro.txt</filename>
            <type>text/plain</type>
            <size>1547</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYJKHJldmlzaW9uIDg4NDAyKQorKysgSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3
NSw2IEBACiAgICAgP2NhbGxPbk1haW5UaHJlYWRAV1RGQEBZQVhQNkFYUEFYQFowQFoKICAgICA/
Y2FsbE9uTWFpblRocmVhZEFuZFdhaXRAV1RGQEBZQVhQNkFYUEFYQFowQFoKICAgICA/Y2FuY2Vs
Q2FsbE9uTWFpblRocmVhZEBXVEZAQFlBWFA2QVhQQVhAWjBAWgotICAgID9jYXBhY2l0eUBIZWFw
QEpTQ0BAUUJFSVhaCiAgICAgP2NoYW5nZVByb3RvdHlwZVRyYW5zaXRpb25AU3RydWN0dXJlQEpT
Q0BAU0FQQVYxMkBBQVZKU0dsb2JhbERhdGFAMkBQQVYxMkBWSlNWYWx1ZUAyQEBaCiAgICAgP2No
ZWNrQ3VycmVudElkZW50aWZpZXJUYWJsZUBJZGVudGlmaWVyQEpTQ0BAQ0FYUEFWRXhlY1N0YXRl
QDJAQFoKICAgICA/Y2hlY2tDdXJyZW50SWRlbnRpZmllclRhYmxlQElkZW50aWZpZXJASlNDQEBD
QVhQQVZKU0dsb2JhbERhdGFAMkBAWgpAQCAtMjUyLDcgKzI1MSw2IEBACiAgICAgP251bWJlckBV
U3RyaW5nQEpTQ0BAU0E/QVYxMkBJQFoKICAgICA/bnVtYmVyQFVTdHJpbmdASlNDQEBTQT9BVjEy
QE5AWgogICAgID9udW1iZXJUb1N0cmluZ0BXVEZAQFlBSU5RQV9XQFoKLSAgICA/b2JqZWN0Q291
bnRASGVhcEBKU0NAQFFCRUlYWgogICAgID9vYmplY3RQcm90b0Z1bmNUb1N0cmluZ0BKU0NAQFlJ
X0pQQVZFeGVjU3RhdGVAMUBAWgogICAgID9wYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFy
YWN0ZXJzQFdURkBAWUFOUEJEQFoKICAgICA/cHJldmVudEV4dGVuc2lvbnNASlNPYmplY3RASlND
QEBVQUVYQUFWSlNHbG9iYWxEYXRhQDJAQFoKQEAgLTMxMSw3ICszMDksNiBAQAogICAgID9zZXR0
ZXJAUHJvcGVydHlEZXNjcmlwdG9yQEpTQ0BAUUJFP0FWSlNWYWx1ZUAyQFhaCiAgICAgP3Nocmlu
a1RvRml0QFN0cmluZ0J1aWxkZXJAV1RGQEBRQUVYWFoKICAgICA/c2lnbmFsQFRocmVhZENvbmRp
dGlvbkBXVEZAQFFBRVhYWgotICAgID9zaXplQEhlYXBASlNDQEBRQkVJWFoKICAgICA/c2xvd0Fw
cGVuZEBNYXJrZWRBcmd1bWVudEJ1ZmZlckBKU0NAQEFBRVhWSlNWYWx1ZUAyQEBaCiAgICAgP3Ns
b3dWYWxpZGF0ZUNlbGxASlNDQEBZQVhQQVZKU0NlbGxAMUBAWgogICAgID9zbG93VmFsaWRhdGVD
ZWxsQEpTQ0BAWUFYUEFWSlNHbG9iYWxPYmplY3RAMUBAWgpAQCAtMzgyLDMgKzM3OSw2IEBACiAg
ICAgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZVdpdGhNZXNzYWdlCiAgICAgV1RGUmVwb3J0QmFj
a3RyYWNlCiAgICAgV1RGUmVwb3J0RXJyb3IKKyAgICA/b2JqZWN0Q291bnRASGVhcEBKU0NAQFFB
RUlYWgorICAgID9zaXplQEhlYXBASlNDQEBRQUVJWFoKKyAgICA/Y2FwYWNpdHlASGVhcEBKU0NA
QFFBRUlYWgo=
</data>
<flag name="review"
          id="90360"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>