<?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>49836</bug_id>
          
          <creation_ts>2010-11-19 15:09:14 -0800</creation_ts>
          <short_desc>Add WebKit2 API relevant to customization of context menus</short_desc>
          <delta_ts>2010-11-19 16:38:59 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>311710</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-11-19 15:09:14 -0800</bug_when>
    <thetext>Add WebKit2 API relevant to customization of context menus</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311713</commentid>
    <comment_count>1</comment_count>
      <attachid>74428</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-11-19 15:13:20 -0800</bug_when>
    <thetext>Created attachment 74428
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311722</commentid>
    <comment_count>2</comment_count>
      <attachid>74428</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-11-19 15:21:34 -0800</bug_when>
    <thetext>Comment on attachment 74428
Patch v1

Left something out accidentally, stay tuned</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311723</commentid>
    <comment_count>3</comment_count>
      <attachid>74428</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-11-19 15:24:42 -0800</bug_when>
    <thetext>Comment on attachment 74428
Patch v1

Whoops, nope, this is the one I meant to post</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311725</commentid>
    <comment_count>4</comment_count>
      <attachid>74428</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-19 15:25:50 -0800</bug_when>
    <thetext>Comment on attachment 74428
Patch v1

View in context: https://bugs.webkit.org/attachment.cgi?id=74428&amp;action=review

review- because of the leak

&gt; WebKit2/Shared/WebURLRequest.h:47
&gt; +    static PassRefPtr&lt;WebURLRequest&gt; create(const WebCore::KURL&amp; url);

Should leave argument name out here.

&gt; WebKit2/Shared/API/c/WKURLRequest.cpp:40
&gt; +    return toAPI(WebURLRequest::create(toImpl(url)-&gt;string()).leakRef());

Can you use toCopiedURLAPI here?

&gt; WebKit2/WebProcess/WebPage/mac/WebPageMac.mm:199
&gt; +    if (equalIgnoringCase(url.protocol(), &quot;file&quot;))
&gt; +        return true;

You should use the isLocalFile member function.

&gt; WebKit2/WebProcess/WebPage/mac/WebPageMac.mm:206
&gt; +    NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:url];

You need to release this request, otherwise it will leak.

&gt; WebKit2/WebProcess/WebPage/mac/WebPageMac.mm:207
&gt; +    [request setValue:(NSString*)(userAgent()) forHTTPHeaderField:@&quot;User-Agent&quot;];

Extra parentheses here around userAgent().

&gt; WebKit2/WebProcess/WebPage/mac/WebPageMac.mm:219
&gt; +    String scheme = request.url().protocol();
&gt; +    // FIXME: Return true if this scheme is any one WebKit2 knows how to handle.
&gt; +    return equalIgnoringCase(scheme, &quot;applewebdata&quot;);

This should use the protocolIs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311731</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-11-19 15:41:16 -0800</bug_when>
    <thetext>Darin reviewed my fixing his comments over my shoulder.  Landed in r72446</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311735</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-11-19 15:57:05 -0800</bug_when>
    <thetext>Yup, I meant to include one other set of changes.  Another patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311740</commentid>
    <comment_count>7</comment_count>
      <attachid>74438</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-11-19 16:07:52 -0800</bug_when>
    <thetext>Created attachment 74438
Second patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311752</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-11-19 16:38:59 -0800</bug_when>
    <thetext>r72451</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74428</attachid>
            <date>2010-11-19 15:13:20 -0800</date>
            <delta_ts>2010-11-19 15:25:50 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>16066</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjQ0NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTAtMTEtMTkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS84NjEzNzI3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ5ODM2CisgICAgICAgIEFkZCBXZWJLaXQyIEFQSSByZWxldmFudCB0byBjdXN0
b21pemF0aW9uIG9mIGNvbnRleHQgbWVudXMKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgor
CiAyMDEwLTExLTE5ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZXhwLmlu
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDcyNDMyKQor
KysgV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMTM2Myw2ICsxMzYz
LDcgQEAgX19aTjdXZWJDb3JlMTdIVE1MUGx1Z0luRWxlbWVudDExZ2V0TlBPYgogX19aTks3V2Vi
Q29yZTEyUmVuZGVyT2JqZWN0NHZpZXdFdgogX19aTks3V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW45
Y2FuQWNjZXNzRVBLUzBfCiBfX1pOSzdXZWJDb3JlNEtVUkw3aGFzUGF0aEV2CitfX1pOSzdXZWJD
b3JlNEtVUkw4cHJvdG9jb2xFdgogX19aTks3V2ViQ29yZTRLVVJMOXByZXR0eVVSTEV2CiAjZW5k
aWYKIApJbmRleDogV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9DaGFu
Z2VMb2cJKHJldmlzaW9uIDcyNDQ0KQorKysgV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSw1MyBAQAorMjAxMC0xMS0xOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzg2MTM3Mjc+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDk4MzYKKyAgICAgICAgQWRkIFdlYktpdDIgQVBJIHJlbGV2YW50IHRv
IGN1c3RvbWl6YXRpb24gb2YgY29udGV4dCBtZW51cworCisgICAgICAgIE1vc3Qgb2YgdGhpcyBp
cyBqdXN0IGV4cG9zaW5nIGFscmVhZHktZXhpc3RpbmcgY29uY2VwdHMgaW4gQVBJLgorCisgICAg
ICAgICogU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5jcHA6CisgICAgICAgIChXS1VSTFJlcXVl
c3RDcmVhdGVXaXRoV0tVUkwpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1VSTFJlcXVlc3Qu
aDoKKworICAgICAgICAqIFNoYXJlZC9XZWJVUkxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViVVJMUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViVVJMUmVxdWVz
dC5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUhpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV0tCdW5kbGVIaXRUZXN0UmVzdWx0Q29weUFi
c29sdXRlSW1hZ2VVUkwpOgorICAgICAgICAoV0tCdW5kbGVIaXRUZXN0UmVzdWx0Q29weUFic29s
dXRlTWVkaWFVUkwpOgorICAgICAgICAoV0tCdW5kbGVIaXRUZXN0UmVzdWx0R2V0SW1hZ2VSZWN0
KToKKyAgICAgICAgKFdLQnVuZGxlSGl0VGVzdFJlc3VsdEdldElzU2VsZWN0ZWQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVIaXRUZXN0UmVzdWx0
Lmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VIYXNMb2NhbERhdGFGb3JVUkwpOgorICAg
ICAgICAoV0tCdW5kbGVQYWdlQ2FuSGFuZGxlUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaDoKKworICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZUltYWdl
VVJMKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjphYnNv
bHV0ZU1lZGlhVVJMKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVz
dWx0OjppbWFnZVJlY3QpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUhpdFRlc3RS
ZXN1bHQ6OmlzU2VsZWN0ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0Lmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVu
dTo6c2hvdyk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6aGFzTG9jYWxEYXRhRm9yVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6Y2FuSGFuZGxlUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL3F0
L1dlYlBhZ2VRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omhhc0xvY2FsRGF0YUZv
clVSTCk6IFN0dWJiZWQgZm9yIG5vdy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2FuSGFu
ZGxlUmVxdWVzdCk6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2Vi
UGFnZVdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omhhc0xvY2FsRGF0YUZvclVS
TCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjYW5IYW5kbGVSZXF1ZXN0KTog
RGl0dG8uCisKIDIwMTAtMTEtMTkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9XZWJV
UkxSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9XZWJVUkxSZXF1ZXN0
LmNwcAkocmV2aXNpb24gNzI0MzIpCisrKyBXZWJLaXQyL1NoYXJlZC9XZWJVUkxSZXF1ZXN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTMsNiArMTMsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitQYXNzUmVmUHRyPFdlYlVSTFJlcXVlc3Q+IFdl
YlVSTFJlcXVlc3Q6OmNyZWF0ZShjb25zdCBLVVJMJiB1cmwpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXZWJVUkxSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCh1cmwpKSk7Cit9CisKIFdlYlVS
TFJlcXVlc3Q6OldlYlVSTFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQog
ICAgIDogbV9yZXF1ZXN0KHJlcXVlc3QpCiB7CkluZGV4OiBXZWJLaXQyL1NoYXJlZC9XZWJVUkxS
ZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvV2ViVVJMUmVxdWVzdC5oCShy
ZXZpc2lvbiA3MjQzMikKKysrIFdlYktpdDIvU2hhcmVkL1dlYlVSTFJlcXVlc3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDQsNiArNDQsOCBAQCBjbGFzcyBXZWJVUkxSZXF1ZXN0IDogcHVibGljIEFQ
SU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVV
UkxSZXF1ZXN0OwogCisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViVVJMUmVxdWVzdD4gY3JlYXRl
KGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCk7CisKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJV
UkxSZXF1ZXN0PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJVUkxSZXF1ZXN0KHJlcXVl
c3QpKTsKSW5kZXg6IFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmNwcAkocmV2aXNpb24g
NzI0MzIpCisrKyBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VSTFJlcXVlc3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCwzICszNCw4IEBAIFdLVHlwZUlEIFdLVVJMUmVxdWVzdEdldFR5cGVJRCgp
CiB7CiAgICAgcmV0dXJuIHRvQVBJKFdlYlVSTFJlcXVlc3Q6OkFQSVR5cGUpOwogfQorCitXS1VS
TFJlcXVlc3RSZWYgV0tVUkxSZXF1ZXN0Q3JlYXRlV2l0aFdLVVJMKFdLVVJMUmVmIHVybCkKK3sK
KyAgICByZXR1cm4gdG9BUEkoV2ViVVJMUmVxdWVzdDo6Y3JlYXRlKHRvSW1wbCh1cmwpLT5zdHJp
bmcoKSkubGVha1JlZigpKTsKK30KSW5kZXg6IFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVx
dWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5o
CShyZXZpc2lvbiA3MjQzMikKKysrIFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw4IEBAIGV4dGVybiAiQyIgewogCiBXS19FWFBP
UlQgV0tUeXBlSUQgV0tVUkxSZXF1ZXN0R2V0VHlwZUlEKCk7CiAKK1dLX0VYUE9SVCBXS1VSTFJl
cXVlc3RSZWYgV0tVUkxSZXF1ZXN0Q3JlYXRlV2l0aFdLVVJMKFdLVVJMUmVmKTsKKwogI2lmZGVm
IF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1
bHQuY3BwCShyZXZpc2lvbiA3MjQzMikKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
NCw5ICs3NCwyOSBAQCBXZWJGcmFtZSogSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0Ojp0CiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkZyYW1lTG9hZGVyQ2xpZW50Kj4oZnJhbWUtPmxvYWRl
cigpLT5jbGllbnQoKSktPndlYkZyYW1lKCk7CiB9CiAKK1N0cmluZyBJbmplY3RlZEJ1bmRsZUhp
dFRlc3RSZXN1bHQ6OmFic29sdXRlSW1hZ2VVUkwoKSBjb25zdAoreworICAgIHJldHVybiBtX2hp
dFRlc3RSZXN1bHQuYWJzb2x1dGVJbWFnZVVSTCgpLnN0cmluZygpOworfQorCiBTdHJpbmcgSW5q
ZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZUxpbmtVUkwoKSBjb25zdAogewogICAg
IHJldHVybiBtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCkuc3RyaW5nKCk7CiB9CiAK
K1N0cmluZyBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6OmFic29sdXRlTWVkaWFVUkwoKSBj
b25zdAoreworICAgIHJldHVybiBtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVNZWRpYVVSTCgpLnN0
cmluZygpOworfQorCitXZWJDb3JlOjpJbnRSZWN0IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3Vs
dDo6aW1hZ2VSZWN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9oaXRUZXN0UmVzdWx0LmltYWdl
UmVjdCgpOworfQorCitib29sIEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6aXNTZWxlY3Rl
ZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faGl0VGVzdFJlc3VsdC5pc1NlbGVjdGVkKCk7Cit9
CisKIH0gLy8gV2ViS2l0CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oCShyZXZp
c2lvbiA3MjQzMikKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZUhpdFRlc3RSZXN1bHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsMTQgQEAg
cHVibGljOgogICAgIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBub2RlSGFu
ZGxlKCkgY29uc3Q7IAogICAgIFdlYkZyYW1lKiBmcmFtZSgpIGNvbnN0OwogICAgIFdlYkZyYW1l
KiB0YXJnZXRGcmFtZSgpIGNvbnN0OworCisgICAgU3RyaW5nIGFic29sdXRlSW1hZ2VVUkwoKSBj
b25zdDsKICAgICBTdHJpbmcgYWJzb2x1dGVMaW5rVVJMKCkgY29uc3Q7CisgICAgU3RyaW5nIGFi
c29sdXRlTWVkaWFVUkwoKSBjb25zdDsKKyAgICAKKyAgICBXZWJDb3JlOjpJbnRSZWN0IGltYWdl
UmVjdCgpIGNvbnN0OworICAgIAorICAgIGJvb2wgaXNTZWxlY3RlZCgpIGNvbnN0OwogCiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdChjb25zdCBXZWJD
b3JlOjpIaXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVzdWx0KQpJbmRleDogV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
SGl0VGVzdFJlc3VsdC5jcHAJKHJldmlzaW9uIDcyNDMyKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUzLDcgKzUzLDI4IEBAIFdLQnVuZGxlRnJhbWVSZWYgV0tCdW5kbGVIaXRUZXN0
UmVzdWx0R2UKICAgICByZXR1cm4gdG9BUEkodG9JbXBsKGhpdFRlc3RSZXN1bHRSZWYpLT50YXJn
ZXRGcmFtZSgpKTsKIH0KIAorV0tVUkxSZWYgV0tCdW5kbGVIaXRUZXN0UmVzdWx0Q29weUFic29s
dXRlSW1hZ2VVUkwoV0tCdW5kbGVIaXRUZXN0UmVzdWx0UmVmIGhpdFRlc3RSZXN1bHRSZWYpCit7
CisgICAgcmV0dXJuIHRvQ29waWVkVVJMQVBJKHRvSW1wbChoaXRUZXN0UmVzdWx0UmVmKS0+YWJz
b2x1dGVJbWFnZVVSTCgpKTsKK30KKwogV0tVUkxSZWYgV0tCdW5kbGVIaXRUZXN0UmVzdWx0Q29w
eUFic29sdXRlTGlua1VSTChXS0J1bmRsZUhpdFRlc3RSZXN1bHRSZWYgaGl0VGVzdFJlc3VsdFJl
ZikKIHsKICAgICByZXR1cm4gdG9Db3BpZWRVUkxBUEkodG9JbXBsKGhpdFRlc3RSZXN1bHRSZWYp
LT5hYnNvbHV0ZUxpbmtVUkwoKSk7CiB9CisKK1dLVVJMUmVmIFdLQnVuZGxlSGl0VGVzdFJlc3Vs
dENvcHlBYnNvbHV0ZU1lZGlhVVJMKFdLQnVuZGxlSGl0VGVzdFJlc3VsdFJlZiBoaXRUZXN0UmVz
dWx0UmVmKQoreworICAgIHJldHVybiB0b0NvcGllZFVSTEFQSSh0b0ltcGwoaGl0VGVzdFJlc3Vs
dFJlZiktPmFic29sdXRlTWVkaWFVUkwoKSk7Cit9CisKK1dLUmVjdCBXS0J1bmRsZUhpdFRlc3RS
ZXN1bHRHZXRJbWFnZVJlY3QoV0tCdW5kbGVIaXRUZXN0UmVzdWx0UmVmIGhpdFRlc3RSZXN1bHRS
ZWYpCit7CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChoaXRUZXN0UmVzdWx0UmVmKS0+aW1hZ2VS
ZWN0KCkpOworfQorCitib29sIFdLQnVuZGxlSGl0VGVzdFJlc3VsdEdldElzU2VsZWN0ZWQoV0tC
dW5kbGVIaXRUZXN0UmVzdWx0UmVmIGhpdFRlc3RSZXN1bHRSZWYpCit7CisgICAgcmV0dXJuIHRv
SW1wbChoaXRUZXN0UmVzdWx0UmVmKS0+aXNTZWxlY3RlZCgpOworCit9CkluZGV4OiBXZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVIaXRUZXN0UmVzdWx0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlSGl0VGVzdFJlc3VsdC5oCShyZXZpc2lvbiA3MjQzMikKKysrIFdlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBXS0J1bmRsZUhpdFRlc3RSZXN1bHRf
aAogCiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLR2Vv
bWV0cnkuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKQEAgLTM1LDkgKzM2
LDE2IEBAIGV4dGVybiAiQyIgewogV0tfRVhQT1JUIFdLVHlwZUlEIFdLQnVuZGxlSGl0VGVzdFJl
c3VsdEdldFR5cGVJRCgpOwogCiBXS19FWFBPUlQgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIFdLQnVu
ZGxlSGl0VGVzdFJlc3VsdEdldE5vZGVIYW5kbGUoV0tCdW5kbGVIaXRUZXN0UmVzdWx0UmVmIGhp
dFRlc3RSZXN1bHQpOworCiBXS19FWFBPUlQgV0tCdW5kbGVGcmFtZVJlZiBXS0J1bmRsZUhpdFRl
c3RSZXN1bHRHZXRGcmFtZShXS0J1bmRsZUhpdFRlc3RSZXN1bHRSZWYgaGl0VGVzdFJlc3VsdCk7
CiBXS19FWFBPUlQgV0tCdW5kbGVGcmFtZVJlZiBXS0J1bmRsZUhpdFRlc3RSZXN1bHRHZXRUYXJn
ZXRGcmFtZShXS0J1bmRsZUhpdFRlc3RSZXN1bHRSZWYgaGl0VGVzdFJlc3VsdCk7CisKK1dLX0VY
UE9SVCBXS1VSTFJlZiBXS0J1bmRsZUhpdFRlc3RSZXN1bHRDb3B5QWJzb2x1dGVJbWFnZVVSTChX
S0J1bmRsZUhpdFRlc3RSZXN1bHRSZWYgaGl0VGVzdFJlc3VsdCk7CiBXS19FWFBPUlQgV0tVUkxS
ZWYgV0tCdW5kbGVIaXRUZXN0UmVzdWx0Q29weUFic29sdXRlTGlua1VSTChXS0J1bmRsZUhpdFRl
c3RSZXN1bHRSZWYgaGl0VGVzdFJlc3VsdCk7CitXS19FWFBPUlQgV0tVUkxSZWYgV0tCdW5kbGVI
aXRUZXN0UmVzdWx0Q29weUFic29sdXRlTWVkaWFVUkwoV0tCdW5kbGVIaXRUZXN0UmVzdWx0UmVm
IGhpdFRlc3RSZXN1bHQpOworCitXS19FWFBPUlQgV0tSZWN0IFdLQnVuZGxlSGl0VGVzdFJlc3Vs
dEdldEltYWdlUmVjdChXS0J1bmRsZUhpdFRlc3RSZXN1bHRSZWYgaGl0VGVzdFJlc3VsdCk7CitX
S19FWFBPUlQgYm9vbCBXS0J1bmRsZUhpdFRlc3RSZXN1bHRHZXRJc1NlbGVjdGVkKFdLQnVuZGxl
SGl0VGVzdFJlc3VsdFJlZiBoaXRUZXN0UmVzdWx0KTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9
CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlLmNwcAkocmV2aXNpb24gNzI0MzIpCisrKyBXZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjcsOSArMjcsMTMgQEAKICNpbmNsdWRlICJXS0J1bmRsZVBhZ2VQcml2YXRlLmgiCiAK
ICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5oIgorI2luY2x1ZGUgIldl
YlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJVUkwuaCIKKyNpbmNsdWRlICJXZWJVUkxSZXF1ZXN0Lmgi
CiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCi0j
aW5jbHVkZSAiV2ViUGFnZS5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTE0MiwzICsxNDYsMTMgQEAgdm9pZCBXS0J1bmRsZVBh
Z2VVbmluc3RhbGxQYWdlT3ZlcmxheShXSwogewogICAgIHRvSW1wbChwYWdlUmVmKS0+dW5pbnN0
YWxsUGFnZU92ZXJsYXkodG9JbXBsKHBhZ2VPdmVybGF5UmVmKSk7CiB9CisKK2Jvb2wgV0tCdW5k
bGVQYWdlSGFzTG9jYWxEYXRhRm9yVVJMKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS1VSTFJl
ZiB1cmxSZWYpCit7CisgICAgcmV0dXJuIHRvSW1wbChwYWdlUmVmKS0+aGFzTG9jYWxEYXRhRm9y
VVJMKFdlYkNvcmU6OktVUkwoV2ViQ29yZTo6S1VSTCgpLCB0b0ltcGwodXJsUmVmKS0+c3RyaW5n
KCkpKTsKK30KKworYm9vbCBXS0J1bmRsZVBhZ2VDYW5IYW5kbGVSZXF1ZXN0KFdLVVJMUmVxdWVz
dFJlZiByZXF1ZXN0UmVmKQoreworICAgIHJldHVybiBXZWJQYWdlOjpjYW5IYW5kbGVSZXF1ZXN0
KHRvSW1wbChyZXF1ZXN0UmVmKS0+cmVzb3VyY2VSZXF1ZXN0KCkpOworfQpJbmRleDogV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBh
Z2UuaAkocmV2aXNpb24gNzI0MzIpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNiw2ICsyMDYsOSBA
QCBXS19FWFBPUlQgV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RSZWYgV0tCCiBXS19FWFBPUlQgdm9p
ZCBXS0J1bmRsZVBhZ2VJbnN0YWxsUGFnZU92ZXJsYXkoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdL
QnVuZGxlUGFnZU92ZXJsYXlSZWYgcGFnZU92ZXJsYXkpOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5k
bGVQYWdlVW5pbnN0YWxsUGFnZU92ZXJsYXkoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxl
UGFnZU92ZXJsYXlSZWYgcGFnZU92ZXJsYXkpOwogCitXS19FWFBPUlQgYm9vbCBXS0J1bmRsZVBh
Z2VIYXNMb2NhbERhdGFGb3JVUkwoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLVVJMUmVmIHVybCk7
CitXS19FWFBPUlQgYm9vbCBXS0J1bmRsZVBhZ2VDYW5IYW5kbGVSZXF1ZXN0KFdLVVJMUmVxdWVz
dFJlZiByZXF1ZXN0KTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFdl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHAJKHJldmlzaW9u
IDcyNDMyKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBACiAKICNpbmNsdWRlICJXZWJDb250ZXh0
TWVudS5oIgogCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmgiCiAjaW5j
bHVkZSAiSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUNvZGVycy5oIgogI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKQEAgLTY0LDcgKzY1LDgg
QEAgdm9pZCBXZWJDb250ZXh0TWVudTo6c2hvdygpCiAgICAgVmVjdG9yPFdlYkNvbnRleHRNZW51
SXRlbURhdGE+IHByb3Bvc2VkTWVudSA9IGtpdEl0ZW1zKGNvcmVJdGVtcywgbWVudSk7CiAgICAg
VmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+IG5ld01lbnU7CiAgICAgUmVmUHRyPEFQSU9i
amVjdD4gdXNlckRhdGE7Ci0gICAgaWYgKG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVu
dUNsaWVudCgpLmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKG1fcGFnZSwgMCwgcHJvcG9z
ZWRNZW51LCBuZXdNZW51LCB1c2VyRGF0YSkpCisgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlSGl0
VGVzdFJlc3VsdD4gaGl0VGVzdFJlc3VsdCA9IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6
Y3JlYXRlKG1lbnUtPmhpdFRlc3RSZXN1bHQoKSk7CisgICAgaWYgKG1fcGFnZS0+aW5qZWN0ZWRC
dW5kbGVDb250ZXh0TWVudUNsaWVudCgpLmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKG1f
cGFnZSwgaGl0VGVzdFJlc3VsdC5nZXQoKSwgcHJvcG9zZWRNZW51LCBuZXdNZW51LCB1c2VyRGF0
YSkpCiAgICAgICAgIHByb3Bvc2VkTWVudSA9IG5ld01lbnU7CiAKICAgICAvLyBOb3RpZnkgdGhl
IFVJUHJvY2Vzcy4KSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlz
aW9uIDcyNDMyKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMDIsNiArMjAyLDEwIEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgV2Vi
Q29udGV4dE1lbnUqIGNvbnRleHRNZW51KCk7CisgICAgCisgICAgYm9vbCBoYXNMb2NhbERhdGFG
b3JVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIAorICAgIHN0YXRpYyBib29sIGNhbkhh
bmRsZVJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAKIHByaXZhdGU6
CiAgICAgV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMmKTsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tCShyZXZpc2lvbiA3MjQzMikKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVk
ZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0FyY2hpdmVSZXNvdXJjZS5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zv
Y3VzQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KQEAgLTE5MSw0ICsxOTMsMzAgQEAgYm9vbCBXZWJQYWdl
OjpwZXJmb3JtRGVmYXVsdEJlaGF2aW9yRm9ySwogICAgIHJldHVybiB0cnVlOwogfQogCitib29s
IFdlYlBhZ2U6Omhhc0xvY2FsRGF0YUZvclVSTChjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwpCit7
CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHVybC5wcm90b2NvbCgpLCAiZmlsZSIpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIgPSBt
X3BhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKTsKKyAgICBEb2N1bWVudExvYWRlciogZG9jdW1l
bnRMb2FkZXIgPSBmcmFtZUxvYWRlciA/IGZyYW1lTG9hZGVyLT5kb2N1bWVudExvYWRlcigpIDog
MDsKKyAgICBpZiAoZG9jdW1lbnRMb2FkZXIgJiYgZG9jdW1lbnRMb2FkZXItPnN1YnJlc291cmNl
KHVybCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCog
cmVxdWVzdCA9IFtbTlNNdXRhYmxlVVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6dXJsXTsK
KyAgICBbcmVxdWVzdCBzZXRWYWx1ZTooTlNTdHJpbmcqKSh1c2VyQWdlbnQoKSkgZm9ySFRUUEhl
YWRlckZpZWxkOkAiVXNlci1BZ2VudCJdOworICAgIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKmNhY2hl
ZFJlc3BvbnNlID0gW1tOU1VSTENhY2hlIHNoYXJlZFVSTENhY2hlXSBjYWNoZWRSZXNwb25zZUZv
clJlcXVlc3Q6cmVxdWVzdF07CisgICAgcmV0dXJuIGNhY2hlZFJlc3BvbnNlOworfQorCitib29s
IFdlYlBhZ2U6OmNhbkhhbmRsZVJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQoreworICAgIGlmIChbTlNVUkxDb25uZWN0aW9uIGNhbkhhbmRsZVJlcXVlc3Q6
cmVxdWVzdC5uc1VSTFJlcXVlc3QoKV0pCisgICAgICAgIHJldHVybiBZRVM7CisKKyAgICBTdHJp
bmcgc2NoZW1lID0gcmVxdWVzdC51cmwoKS5wcm90b2NvbCgpOworICAgIC8vIEZJWE1FOiBSZXR1
cm4gdHJ1ZSBpZiB0aGlzIHNjaGVtZSBpcyBhbnkgb25lIFdlYktpdDIga25vd3MgaG93IHRvIGhh
bmRsZS4KKyAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2Uoc2NoZW1lLCAiYXBwbGV3ZWJkYXRh
Iik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvcXQvV2ViUGFnZVF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9xdC9XZWJQYWdlUXQuY3BwCShyZXZpc2lvbiA3MjQzMikKKysrIFdlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dlYlBhZ2VRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1
OSw0ICsyNTksMTYgQEAgYm9vbCBXZWJQYWdlOjpwZXJmb3JtRGVmYXVsdEJlaGF2aW9yRm9ySwog
ICAgIHJldHVybiB0cnVlOwogfQogCitib29sIFdlYlBhZ2U6Omhhc0xvY2FsRGF0YUZvclVSTChj
b25zdCBXZWJDb3JlOjpLVVJMJikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIFdlYlBhZ2U6OmNhbkhhbmRsZVJlcXVlc3QoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50CisgICAg
cmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcAkocmV2aXNpb24gNzI0MzIp
CisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIyOSw0ICsyMjksMTYgQEAgYm9vbCBXZWJQYWdlOjpwZXJmb3JtRGVmYXVs
dEJlaGF2aW9yRm9ySwogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIFdlYlBhZ2U6Omhhc0xv
Y2FsRGF0YUZvclVSTChjb25zdCBXZWJDb3JlOjpLVVJMJikKK3sKKyAgICAvLyBGSVhNRSA8cmRh
cjovL3Byb2JsZW0vODYwODc1ND46IEltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKwor
Ym9vbCBXZWJQYWdlOjpjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpCit7CisgICAgLy8gRklYTUUgPHJkYXI6Ly9wcm9ibGVtLzg2MDg3NTQ+OiBJbXBsZW1l
bnQKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>
<flag name="review"
          id="65029"
          type_id="1"
          status="-"
          setter="darin"
    />
    <flag name="commit-queue"
          id="65030"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74438</attachid>
            <date>2010-11-19 16:07:52 -0800</date>
            <delta_ts>2010-11-19 16:29:39 -0800</delta_ts>
            <desc>Second patch v1</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>3361</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjQ0NykKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTAtMTEtMTkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1v
cmUgb2YgPHJkYXI6Ly9wcm9ibGVtLzg2MTM3Mjc+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDk4MzYKKyAgICAgICAgQWRkIFdlYktpdDIgQVBJIHJlbGV2YW50
IHRvIGN1c3RvbWl6YXRpb24gb2YgY29udGV4dCBtZW51cworCisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcDoKKyAgICAgICAgKFdLQnVu
ZGxlRnJhbWVBbGxvd3NGb2xsb3dpbmdMaW5rKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjphbGxvd3NG
b2xsb3dpbmdMaW5rKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaDoK
KwogMjAxMC0xMS0xOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCShyZXZp
c2lvbiA3MjQ0NSkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZUZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDMgKzEzMyw4IEBAIFdLU3Ry
aW5nUmVmIFdLQnVuZGxlRnJhbWVDb3B5TGF5ZXJUcmVlQXMKIHsKICAgICByZXR1cm4gdG9Db3Bp
ZWRBUEkodG9JbXBsKGZyYW1lUmVmKS0+bGF5ZXJUcmVlQXNUZXh0KCkpOwogfQorCitib29sIFdL
QnVuZGxlRnJhbWVBbGxvd3NGb2xsb3dpbmdMaW5rKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYs
IFdLVVJMUmVmIHVybFJlZikKK3sKKyAgICByZXR1cm4gdG9JbXBsKGZyYW1lUmVmKS0+YWxsb3dz
Rm9sbG93aW5nTGluayhXZWJDb3JlOjpLVVJMKFdlYkNvcmU6OktVUkwoKSwgdG9JbXBsKHVybFJl
ZiktPnN0cmluZygpKSk7Cit9CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmgJKHJldmlzaW9uIDcyNDQ1KQor
KysgV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUu
aAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksOCBAQCBXS19FWFBPUlQgSlNWYWx1ZVJlZiBX
S0J1bmRsZUZyYW1lR2V0SmF2CiAKIFdLX0VYUE9SVCBXS0J1bmRsZVBhZ2VSZWYgV0tCdW5kbGVG
cmFtZUdldFBhZ2UoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSk7CiAKK1dLX0VYUE9SVCBib29sIFdL
QnVuZGxlRnJhbWVBbGxvd3NGb2xsb3dpbmdMaW5rKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdL
VVJMUmVmIHVybCk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCkluZGV4OiBXZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCShyZXZpc2lvbiA3MjQ0NSkKKysrIFdl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDE1LDYgKzQxNSwxNCBAQCB1bnNpZ25lZCBXZWJGcmFtZTo6cGVuZGluZ1VubG9hZENvdW50KCkg
CiAgICAgcmV0dXJuIG1fY29yZUZyYW1lLT5kb21XaW5kb3coKS0+cGVuZGluZ1VubG9hZEV2ZW50
TGlzdGVuZXJzKCk7CiB9CiAKK2Jvb2wgV2ViRnJhbWU6OmFsbG93c0ZvbGxvd2luZ0xpbmsoY29u
c3QgV2ViQ29yZTo6S1VSTCYgdXJsKSBjb25zdAoreworICAgIGlmICghbV9jb3JlRnJhbWUpCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAKKyAgICByZXR1cm4gbV9jb3JlRnJhbWUtPmRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkRpc3BsYXkodXJsKTsKK30KKwogSlNHbG9i
YWxDb250ZXh0UmVmIFdlYkZyYW1lOjpqc0NvbnRleHQoKQogewogICAgIHJldHVybiB0b0dsb2Jh
bFJlZihtX2NvcmVGcmFtZS0+c2NyaXB0KCktPmdsb2JhbE9iamVjdChtYWluVGhyZWFkTm9ybWFs
V29ybGQoKSktPmdsb2JhbEV4ZWMoKSk7CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmgJKHJldmlzaW9uIDcyNDQ1KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIGNsYXNzIEZyYW1lOwogICAgIGNsYXNzIEhUTUxGcmFtZU93bmVyRWxlbWVu
dDsKKyAgICBjbGFzcyBLVVJMOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTk4LDYgKzk5
LDggQEAgcHVibGljOgogICAgIFN0cmluZyBsYXllclRyZWVBc1RleHQoKSBjb25zdDsKICAgICAK
ICAgICB1bnNpZ25lZCBwZW5kaW5nVW5sb2FkQ291bnQoKSBjb25zdDsKKyAgICAKKyAgICBib29s
IGFsbG93c0ZvbGxvd2luZ0xpbmsoY29uc3QgV2ViQ29yZTo6S1VSTCYpIGNvbnN0OwogCiAgICAg
Ly8gU2ltcGxlIGxpc3RlbmVyIGNsYXNzIHVzZWQgYnkgcGx1Zy1pbnMgdG8ga25vdyB3aGVuIGZy
YW1lcyBmaW5pc2ggb3IgZmFpbCBsb2FkaW5nLgogICAgIGNsYXNzIExvYWRMaXN0ZW5lciB7Cg==
</data>
<flag name="review"
          id="65040"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="65041"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>