<?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>40176</bug_id>
          
          <creation_ts>2010-06-04 11:37:06 -0700</creation_ts>
          <short_desc>Fix WebGLRenderingContext helper functions find{Texture/Renderbuffer/Buffer}</short_desc>
          <delta_ts>2010-06-18 08:14:25 -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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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="Zhenyao Mo">zmo</reporter>
          <assigned_to name="Zhenyao Mo">zmo</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>kbr</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>234308</commentid>
    <comment_count>0</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-06-04 11:37:06 -0700</bug_when>
    <thetext>1) Need to implement findBuffer and remove the second constructor in WebGLBuffer
2) For find functions, when input Platform3DObject is 0, need to return 0 instead of going through the cached set.  Otherwise, a deleted Object (whose name became 0) may be wrongly returned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235953</commentid>
    <comment_count>1</comment_count>
      <attachid>58283</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-06-09 13:00:31 -0700</bug_when>
    <thetext>Created attachment 58283
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236561</commentid>
    <comment_count>2</comment_count>
      <attachid>58283</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-06-10 15:21:03 -0700</bug_when>
    <thetext>Comment on attachment 58283
patch

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236570</commentid>
    <comment_count>3</comment_count>
      <attachid>58283</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-06-10 15:51:01 -0700</bug_when>
    <thetext>Comment on attachment 58283
patch


WebCore/html/canvas/WebGLRenderingContext.h:304
 +          PassRefPtr&lt;WebGLBuffer&gt; findBuffer(Platform3DObject);
Why are these all PassRefPtrs? We&apos;re not transferring ownership here, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236583</commentid>
    <comment_count>4</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-06-10 16:48:39 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 58283 [details])
&gt; 
&gt; WebCore/html/canvas/WebGLRenderingContext.h:304
&gt;  +          PassRefPtr&lt;WebGLBuffer&gt; findBuffer(Platform3DObject);
&gt; Why are these all PassRefPtrs? We&apos;re not transferring ownership here, right?

After further investigation, I think the return type actually should be PassRefPtr.  Because the only receiver of the returned data is WebGLGetInfo, and WebGLGetInfo constructor takes PassRefPtr as input.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236588</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-06-10 16:57:20 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 58283 [details] [details])
&gt; &gt; 
&gt; &gt; WebCore/html/canvas/WebGLRenderingContext.h:304
&gt; &gt;  +          PassRefPtr&lt;WebGLBuffer&gt; findBuffer(Platform3DObject);
&gt; &gt; Why are these all PassRefPtrs? We&apos;re not transferring ownership here, right?
&gt; 
&gt; After further investigation, I think the return type actually should be PassRefPtr.  Because the only receiver of the returned data is WebGLGetInfo, and WebGLGetInfo constructor takes PassRefPtr as input.

That&apos;s correct. WebGLGetInfo attempts to be correct with respect to reference counts, even though they are transient objects. For this reason it takes PassRefPtrs as arguments to its constructors, and is why these find* methods need to return PassRefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238445</commentid>
    <comment_count>6</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-06-15 10:13:21 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; (From update of attachment 58283 [details] [details] [details])
&gt; &gt; &gt; 
&gt; &gt; &gt; WebCore/html/canvas/WebGLRenderingContext.h:304
&gt; &gt; &gt;  +          PassRefPtr&lt;WebGLBuffer&gt; findBuffer(Platform3DObject);
&gt; &gt; &gt; Why are these all PassRefPtrs? We&apos;re not transferring ownership here, right?
&gt; &gt; 
&gt; &gt; After further investigation, I think the return type actually should be PassRefPtr.  Because the only receiver of the returned data is WebGLGetInfo, and WebGLGetInfo constructor takes PassRefPtr as input.
&gt; 
&gt; That&apos;s correct. WebGLGetInfo attempts to be correct with respect to reference counts, even though they are transient objects. For this reason it takes PassRefPtrs as arguments to its constructors, and is why these find* methods need to return PassRefPtr.

I&apos;ve talked with Dimitri and he pointed out that by convention, if a function returns an object which is shared (rather than an object whose ownership is being transferred), it should return a raw pointer. In order to follow this convention we should change the find* routines to return raw pointers, but leave WebGLGetInfo&apos;s constructors still taking PassRefPtr. Sorry about the confusion on my part. Mo, can you make this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238531</commentid>
    <comment_count>7</comment_count>
      <attachid>58814</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-06-15 13:52:40 -0700</bug_when>
    <thetext>Created attachment 58814
revised patch: find*() returns raw pointer now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238535</commentid>
    <comment_count>8</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-06-15 14:01:34 -0700</bug_when>
    <thetext>Recalling our offline conversation about the raw pointers being automatically converted to bool, could you try making the WebGLGetInfo constructor taking bool explicit (&quot;explicit WebGLGetInfo(bool value)&quot;)? If that works, then the constructors taking PassRefPtr&lt;T&gt; should be picked up automatically, eliminating the need to mention the PassRefPtr&lt;T&gt; constructor explicitly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238543</commentid>
    <comment_count>9</comment_count>
      <attachid>58814</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-06-15 14:20:40 -0700</bug_when>
    <thetext>Comment on attachment 58814
revised patch: find*() returns raw pointer now

&gt; +            return WebGLGetInfo(PassRefPtr&lt;WebGLRenderbuffer&gt;(findRenderbuffer(static_cast&lt;Platform3DObject&gt;(value))));

Sorry that the pretty implicit conversion fell apart here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239922</commentid>
    <comment_count>10</comment_count>
      <attachid>58814</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-18 08:14:20 -0700</bug_when>
    <thetext>Comment on attachment 58814
revised patch: find*() returns raw pointer now

Clearing flags on attachment: 58814

Committed r61406: &lt;http://trac.webkit.org/changeset/61406&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239923</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-18 08:14:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58283</attachid>
            <date>2010-06-09 13:00:31 -0700</date>
            <delta_ts>2010-06-15 13:52:40 -0700</delta_ts>
            <desc>patch</desc>
            <filename>find.patch</filename>
            <type>text/plain</type>
            <size>10366</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDkwNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTAtMDYtMDkgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggV2Vi
R0xSZW5kZXJpbmdDb250ZXh0IGhlbHBlciBmdW5jdGlvbnMgZmluZHtUZXh0dXJlL1JlbmRlcmJ1
ZmZlci9CdWZmZXJ9CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MDE3NgorCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwOiBSZW1v
dmUgY29uc3RydWN0b3Igd2l0aCBleGlzdGluZyBuYW1lLgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMQnVmZmVyLmg6IERpdHRvLgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmdldFZlcnRleEF0dHJpYik6IFVzZSBmaW5kQnVmZmVyIGluc3RlYWQgb2YgY3JlYXRpbmcgYSBu
ZXcgV2ViR0xCdWZmZXIuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmZpbmRUZXh0dXJlKTogRGVhbCB3aXRoIG5hbWUgPT0gMCBjYXNlLgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpmaW5kUmVuZGVyYnVmZmVyKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmZpbmRCdWZmZXIpOiBGaW5kIFdl
YkdMQnVmZmVyIG9iamVjdCB1c2luZyBnaXZlbiBuYW1lLgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oOiBBZGQgZmluZEJ1ZmZlciBmdW5jdGlvbiBkZWNsYXJh
dGlvbi4KKwogMjAxMC0wNi0wOSAgS3dhbmcgWXVsIFNlbyAgPHNreXVsQGNvbXBhbnkxMDAubmV0
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgpJbmRleDogV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTEJ1ZmZlci5jcHAJKHJldmlzaW9uIDYwOTAyKQorKysgV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTEJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDExICszNyw2IEBAIFBhc3NS
ZWZQdHI8V2ViR0xCdWZmZXI+IFdlYkdMQnVmZmVyOjpjcmUKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYkdMQnVmZmVyKGN0eCkpOwogfQogCi1QYXNzUmVmUHRyPFdlYkdMQnVmZmVyPiBXZWJH
TEJ1ZmZlcjo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY3R4LCBQbGF0Zm9ybTNET2Jq
ZWN0IG9iaikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdMQnVmZmVyKGN0eCwgb2Jq
KSk7Ci19Ci0KIFdlYkdMQnVmZmVyOjpXZWJHTEJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQq
IGN0eCkKICAgICA6IENhbnZhc09iamVjdChjdHgpCiAgICAgLCBtX2VsZW1lbnRBcnJheUJ1ZmZl
ckJ5dGVMZW5ndGgoMCkKQEAgLTUyLDE0ICs0Nyw2IEBAIFdlYkdMQnVmZmVyOjpXZWJHTEJ1ZmZl
cihXZWJHTFJlbmRlcmluZ0MKICAgICBjbGVhckNhY2hlZE1heEluZGljZXMoKTsKIH0KIAotV2Vi
R0xCdWZmZXI6OldlYkdMQnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY3R4LCBQbGF0Zm9y
bTNET2JqZWN0IG9iaikKLSAgICA6IENhbnZhc09iamVjdChjdHgpCi0gICAgLCBtX25leHRBdmFp
bGFibGVDYWNoZUVudHJ5KDApCi17Ci0gICAgc2V0T2JqZWN0KG9iaiwgZmFsc2UpOwotICAgIGNs
ZWFyQ2FjaGVkTWF4SW5kaWNlcygpOwotfQotCiB2b2lkIFdlYkdMQnVmZmVyOjpfZGVsZXRlT2Jq
ZWN0KFBsYXRmb3JtM0RPYmplY3Qgb2JqZWN0KQogewogICAgIGNvbnRleHQoKS0+Z3JhcGhpY3ND
b250ZXh0M0QoKS0+ZGVsZXRlQnVmZmVyKG9iamVjdCk7CkluZGV4OiBXZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TEJ1ZmZlci5oCShyZXZpc2lvbiA2MDkwMikKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xC
dWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzksMTAgKzM5LDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2aXJ0dWFsIH5XZWJHTEJ1ZmZlcigpIHsgZGVsZXRlT2JqZWN0KCk7IH0K
ICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMQnVmZmVyPiBjcmVhdGUo
V2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7Ci0gICAgICAgIAotICAgICAgICAvLyBGb3IgcXVlcnlp
bmcgcHJldmlvdXNseSBjcmVhdGVkIG9iamVjdHMgdmlhIGUuZy4gZ2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyCi0gICAgICAgIC8vIEZJWE1FOiBzaG91bGQgY29uc2lkZXIgY2Fub25p
Y2FsaXppbmcgdGhlc2Ugb2JqZWN0cwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTEJ1
ZmZlcj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCosIFBsYXRmb3JtM0RPYmplY3QpOwog
CiAgICAgICAgIGJvb2wgYXNzb2NpYXRlQnVmZmVyRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwg
aW50IHNpemUpOwogICAgICAgICBib29sIGFzc29jaWF0ZUJ1ZmZlckRhdGEodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIEFycmF5QnVmZmVyVmlldyogYXJyYXkpOwpAQCAtNTksOCArNTUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIFdlYkdMQnVmZmVyKFdl
YkdMUmVuZGVyaW5nQ29udGV4dCopOwotICAgICAgICBXZWJHTEJ1ZmZlcihXZWJHTFJlbmRlcmlu
Z0NvbnRleHQqLCBQbGF0Zm9ybTNET2JqZWN0IG9iaik7Ci0gICAgICAgIAorCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBfZGVsZXRlT2JqZWN0KFBsYXRmb3JtM0RPYmplY3Qgbyk7CiAgICAgCiAgICAg
cHJpdmF0ZToKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHAJKHJldmlzaW9uIDYwOTAyKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTI1LDExICsxNTI1LDcgQEAg
V2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VgogICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkc6IHsKICAgICAg
ICAgaW50IG5hbWUgPSAwOwogICAgICAgICBtX2NvbnRleHQtPmdldFZlcnRleEF0dHJpYml2KGlu
ZGV4LCBwbmFtZSwgJm5hbWUpOwotICAgICAgICBpZiAobmFtZSA9PSAwKQotICAgICAgICAgICAg
cmV0dXJuIFdlYkdMR2V0SW5mbygpOwotICAgICAgICBSZWZQdHI8V2ViR0xCdWZmZXI+IHRtcCA9
IFdlYkdMQnVmZmVyOjpjcmVhdGUodGhpcywgbmFtZSk7Ci0gICAgICAgIGFkZE9iamVjdCh0bXAu
Z2V0KCkpOwotICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xCdWZm
ZXI+KHRtcCkpOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKGZpbmRCdWZmZXIoc3RhdGlj
X2Nhc3Q8UGxhdGZvcm0zRE9iamVjdD4obmFtZSkpKTsKICAgICB9CiAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6VkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEOgogICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OlZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRDogewpAQCAtMjk2Nyw2
ICsyOTYzLDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRldGFjaEFuZFJlbQogCiBQ
YXNzUmVmUHRyPFdlYkdMVGV4dHVyZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpmaW5kVGV4dHVy
ZShQbGF0Zm9ybTNET2JqZWN0IG9iaikKIHsKKyAgICBpZiAoIW9iaikKKyAgICAgICAgcmV0dXJu
IDA7CiAgICAgSGFzaFNldDxSZWZQdHI8Q2FudmFzT2JqZWN0PiA+OjppdGVyYXRvciBwZW5kID0g
bV9jYW52YXNPYmplY3RzLmVuZCgpOwogICAgIGZvciAoSGFzaFNldDxSZWZQdHI8Q2FudmFzT2Jq
ZWN0PiA+OjppdGVyYXRvciBpdCA9IG1fY2FudmFzT2JqZWN0cy5iZWdpbigpOyBpdCAhPSBwZW5k
OyArK2l0KSB7CiAgICAgICAgIGlmICgoKml0KS0+aXNUZXh0dXJlKCkgJiYgKCppdCktPm9iamVj
dCgpID09IG9iaikgewpAQCAtMjk3OSw2ICsyOTc3LDggQEAgUGFzc1JlZlB0cjxXZWJHTFRleHR1
cmU+IFdlYkdMUmVuZGVyaW5nQwogCiBQYXNzUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmZpbmRSZW5kZXJidWZmZXIoUGxhdGZvcm0zRE9iamVjdCBvYmop
CiB7CisgICAgaWYgKCFvYmopCisgICAgICAgIHJldHVybiAwOwogICAgIEhhc2hTZXQ8UmVmUHRy
PENhbnZhc09iamVjdD4gPjo6aXRlcmF0b3IgcGVuZCA9IG1fY2FudmFzT2JqZWN0cy5lbmQoKTsK
ICAgICBmb3IgKEhhc2hTZXQ8UmVmUHRyPENhbnZhc09iamVjdD4gPjo6aXRlcmF0b3IgaXQgPSBt
X2NhbnZhc09iamVjdHMuYmVnaW4oKTsgaXQgIT0gcGVuZDsgKytpdCkgewogICAgICAgICBpZiAo
KCppdCktPmlzUmVuZGVyYnVmZmVyKCkgJiYgKCppdCktPm9iamVjdCgpID09IG9iaikgewpAQCAt
Mjk4OSw2ICsyOTg5LDIwIEBAIFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IFdlYkdMUmVu
ZGUKICAgICByZXR1cm4gMDsKIH0KIAorUGFzc1JlZlB0cjxXZWJHTEJ1ZmZlcj4gV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpmaW5kQnVmZmVyKFBsYXRmb3JtM0RPYmplY3Qgb2JqKQoreworICAgIGlm
ICghb2JqKQorICAgICAgICByZXR1cm4gMDsKKyAgICBIYXNoU2V0PFJlZlB0cjxDYW52YXNPYmpl
Y3Q+ID46Oml0ZXJhdG9yIHBlbmQgPSBtX2NhbnZhc09iamVjdHMuZW5kKCk7CisgICAgZm9yIChI
YXNoU2V0PFJlZlB0cjxDYW52YXNPYmplY3Q+ID46Oml0ZXJhdG9yIGl0ID0gbV9jYW52YXNPYmpl
Y3RzLmJlZ2luKCk7IGl0ICE9IHBlbmQ7ICsraXQpIHsKKyAgICAgICAgaWYgKCgqaXQpLT5pc0J1
ZmZlcigpICYmICgqaXQpLT5vYmplY3QoKSA9PSBvYmopIHsKKyAgICAgICAgICAgIFJlZlB0cjxX
ZWJHTEJ1ZmZlcj4gYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxXZWJHTEJ1ZmZlcio+KCgqaXQp
LmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBidWZmZXIucmVsZWFzZSgpOworICAgICAgICB9
CisgICAgfQorICAgIHJldHVybiAwOworfQorCiBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRCb29sZWFuUGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgcG5hbWUpCiB7CiAgICAg
dW5zaWduZWQgY2hhciB2YWx1ZTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuaAkocmV2aXNpb24gNjA5MDIpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDEsNiArMzAxLDcg
QEAgY2xhc3MgV2ViS2l0Q1NTTWF0cml4OwogICAgICAgICB2b2lkIGRldGFjaEFuZFJlbW92ZUFs
bE9iamVjdHMoKTsKICAgICAgICAgUGFzc1JlZlB0cjxXZWJHTFRleHR1cmU+IGZpbmRUZXh0dXJl
KFBsYXRmb3JtM0RPYmplY3QpOwogICAgICAgICBQYXNzUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVy
PiBmaW5kUmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QpOworICAgICAgICBQYXNzUmVmUHRy
PFdlYkdMQnVmZmVyPiBmaW5kQnVmZmVyKFBsYXRmb3JtM0RPYmplY3QpOwogCiAgICAgICAgIHZv
aWQgbWFya0NvbnRleHRDaGFuZ2VkKCk7CiAgICAgICAgIHZvaWQgY2xlYW51cEFmdGVyR3JhcGhp
Y3NDYWxsKGJvb2wgY2hhbmdlZCkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDYwOTA3KQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDYt
MDkgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggV2ViR0xSZW5kZXJpbmdDb250ZXh0IGhlbHBl
ciBmdW5jdGlvbnMgZmluZHtUZXh0dXJlL1JlbmRlcmJ1ZmZlci9CdWZmZXJ9CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDE3NgorCisgICAgICAgICog
ZmFzdC9jYW52YXMvd2ViZ2wvZ2wtb2JqZWN0LWdldC1jYWxscy1leHBlY3RlZC50eHQ6IFRlc3Qg
bmFtZSA9PSAwIGNhc2VzLCBhbmQgdGVzdCBnZXRWZXJ0ZXhBdHRyaWIgcmV0dXJuIG9yaWdpbmFs
IFdlYkdMQnVmZmVyIG9iamVjdC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQt
dGVzdHMvZ2wtb2JqZWN0LWdldC1jYWxscy5qczogRGl0dG8uCisKIDIwMTAtMDYtMDkgIEtlbm5l
dGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0
cmkgR2xhemtvdi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLW9iamVj
dC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL2dsLW9iamVjdC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2
MDkwMikKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLW9iamVjdC1nZXQtY2Fs
bHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIFBBU1MgZ2wu
Z2V0RXJyb3IoKSBpcyAwCiBQQVNTIGdsLmdldFVuaWZvcm0obWF0UHJvZ3JhbSwgbXZhbDJMb2Mp
IGlzIFsxLCAyLCAzLCA0XQogUEFTUyBnbC5nZXRVbmlmb3JtKG1hdFByb2dyYW0sIG12YWwzTG9j
KSBpcyBbNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTNdCiBQQVNTIGdsLmdldFVuaWZvcm0o
bWF0UHJvZ3JhbSwgbXZhbDRMb2MpIGlzIFsxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEs
IDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOV0KLVBBU1MgZ2wuZ2V0VmVydGV4QXR0cmli
KDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkcpIGlzIG5vbi1udWxsLgor
UEFTUyBnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJf
QklORElORykgaXMgYnVmZmVyCiBQQVNTIGdsLmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhf
QVRUUklCX0FSUkFZX0VOQUJMRUQpIGlzIHRydWUKIFBBU1MgZ2wuZ2V0VmVydGV4QXR0cmliKDEs
IGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRSkgaXMgNAogUEFTUyAoZ2wuZ2V0VmVydGV4QXR0
cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFKSA9PSAwKSB8fCAoZ2wuZ2V0VmVy
dGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFKSA9PSA0ICogZ2wuc2l6
ZUluQnl0ZXMoZ2wuRkxPQVQpKSBpcyB0cnVlCkBAIC03OCw2ICs3OCwxMCBAQCBQQVNTIGdsLmdl
dFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRUCiBQQVNTIGdsLmdldFZlcnRleEF0dHJpYigx
LCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRUQpIGlzIGZhbHNlCiBQQVNTIGdsLmdldFZl
cnRleEF0dHJpYigxLCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpIGlzIFs1LCA2LCA3LCA4XQog
UEFTUyBnbC5nZXRFcnJvcigpIGlzIDAKK1BBU1MgZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuRlJBTUVC
VUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRSkgaXMgbnVsbAorUEFTUyBnbC5nZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFDSE1F
TlQsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUUpIGlzIG51bGwKK1BBU1Mg
Z2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJ
TkcpIGlzIG51bGwKK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyAwCiBQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9nbC1vYmplY3QtZ2V0LWNhbGxzLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9nbC1vYmplY3Qt
Z2V0LWNhbGxzLmpzCShyZXZpc2lvbiA2MDkwMikKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL3NjcmlwdC10ZXN0cy9nbC1vYmplY3QtZ2V0LWNhbGxzLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTIsNyArMTkyLDcgQEAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIGFycmF5
LCBnbAogLy8gMSBmb3IgdGhlc2UgdGVzdHMgaW5zdGVhZC4KIGdsLmVuYWJsZVZlcnRleEF0dHJp
YkFycmF5KDEpOwogZ2wudmVydGV4QXR0cmliUG9pbnRlcigxLCA0LCBnbC5GTE9BVCwgZmFsc2Us
IDAsIDApOwotc2hvdWxkQmVOb25OdWxsKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVY
X0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORyknKTsKK3Nob3VsZEJlKCdnbC5nZXRWZXJ0ZXhB
dHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORyknLCAnYnVmZmVy
Jyk7CiBzaG91bGRCZSgnZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJS
QVlfRU5BQkxFRCknLCAndHJ1ZScpOwogc2hvdWxkQmUoJ2dsLmdldFZlcnRleEF0dHJpYigxLCBn
bC5WRVJURVhfQVRUUklCX0FSUkFZX1NJWkUpJywgJzQnKTsKIHNob3VsZEJlKCcoZ2wuZ2V0VmVy
dGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFKSA9PSAwKSB8fCAoZ2wu
Z2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFKSA9PSA0ICog
Z2wuc2l6ZUluQnl0ZXMoZ2wuRkxPQVQpKScsICd0cnVlJyk7CkBAIC0yMDQsNCArMjA0LDEzIEBA
IGdsLnZlcnRleEF0dHJpYjRmKDEsIDUsIDYsIDcsIDgpOwogc2hvdWxkQmUoJ2dsLmdldFZlcnRl
eEF0dHJpYigxLCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpJywgJ1s1LCA2LCA3LCA4XScpOwog
c2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOwogCisvLyBUZXN0IGNhc2VzIHdoZXJlIG5h
bWUgPT0gMAorZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlKTsKK3Nob3VsZEJlTnVsbCgnZ2wuZ2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9B
VFRBQ0hNRU5UMCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRSknKTsKK2ds
LmRlbGV0ZVJlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpOworc2hvdWxkQmVOdWxsKCdnbC5nZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FU
VEFDSE1FTlQsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUUpJyk7CitnbC5k
ZWxldGVCdWZmZXIoYnVmZmVyKTsKK3Nob3VsZEJlTnVsbCgnZ2wuZ2V0VmVydGV4QXR0cmliKDEs
IGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkcpJyk7CitzaG91bGRCZSgnZ2wu
Z2V0RXJyb3IoKScsICcwJyk7CisKIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58814</attachid>
            <date>2010-06-15 13:52:40 -0700</date>
            <delta_ts>2010-06-18 08:14:20 -0700</delta_ts>
            <desc>revised patch: find*() returns raw pointer now</desc>
            <filename>find.patch</filename>
            <type>text/plain</type>
            <size>11857</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDkwNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTAtMDYtMDkgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggV2Vi
R0xSZW5kZXJpbmdDb250ZXh0IGhlbHBlciBmdW5jdGlvbnMgZmluZHtUZXh0dXJlL1JlbmRlcmJ1
ZmZlci9CdWZmZXJ9CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MDE3NgorCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwOiBSZW1v
dmUgY29uc3RydWN0b3Igd2l0aCBleGlzdGluZyBuYW1lLgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMQnVmZmVyLmg6IERpdHRvLgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmdldFZlcnRleEF0dHJpYik6IFVzZSBmaW5kQnVmZmVyIGluc3RlYWQgb2YgY3JlYXRpbmcgYSBu
ZXcgV2ViR0xCdWZmZXIuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmZpbmRUZXh0dXJlKTogRGVhbCB3aXRoIG5hbWUgPT0gMCBjYXNlIGFuZCByZXR1cm4gcmF3IHBv
aW50ZXIuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmZpbmRSZW5k
ZXJidWZmZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6ZmluZEJ1ZmZlcik6IEZpbmQgV2ViR0xCdWZmZXIgb2JqZWN0IHVzaW5nIGdpdmVuIG5hbWUu
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0Lmg6IEFkZCBmaW5k
QnVmZmVyIGZ1bmN0aW9uIGRlY2xhcmF0aW9uLCBjaGFuZ2UgcmV0dXJuIHR5cGUgdG8gcmF3IHBv
aW50ZXIuCisKIDIwMTAtMDYtMDkgIEt3YW5nIFl1bCBTZW8gIDxza3l1bEBjb21wYW55MTAwLm5l
dD4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KSW5kZXg6IFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xCdWZmZXIuY3BwCShyZXZpc2lvbiA2MDkwMikKKysrIFdlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xCdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMSArMzcsNiBAQCBQYXNz
UmVmUHRyPFdlYkdMQnVmZmVyPiBXZWJHTEJ1ZmZlcjo6Y3JlCiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBXZWJHTEJ1ZmZlcihjdHgpKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJHTEJ1ZmZlcj4gV2Vi
R0xCdWZmZXI6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0eCwgUGxhdGZvcm0zRE9i
amVjdCBvYmopCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHTEJ1ZmZlcihjdHgsIG9i
aikpOwotfQotCiBXZWJHTEJ1ZmZlcjo6V2ViR0xCdWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0
KiBjdHgpCiAgICAgOiBDYW52YXNPYmplY3QoY3R4KQogICAgICwgbV9lbGVtZW50QXJyYXlCdWZm
ZXJCeXRlTGVuZ3RoKDApCkBAIC01MiwxNCArNDcsNiBAQCBXZWJHTEJ1ZmZlcjo6V2ViR0xCdWZm
ZXIoV2ViR0xSZW5kZXJpbmdDCiAgICAgY2xlYXJDYWNoZWRNYXhJbmRpY2VzKCk7CiB9CiAKLVdl
YkdMQnVmZmVyOjpXZWJHTEJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0eCwgUGxhdGZv
cm0zRE9iamVjdCBvYmopCi0gICAgOiBDYW52YXNPYmplY3QoY3R4KQotICAgICwgbV9uZXh0QXZh
aWxhYmxlQ2FjaGVFbnRyeSgwKQotewotICAgIHNldE9iamVjdChvYmosIGZhbHNlKTsKLSAgICBj
bGVhckNhY2hlZE1heEluZGljZXMoKTsKLX0KLQogdm9pZCBXZWJHTEJ1ZmZlcjo6X2RlbGV0ZU9i
amVjdChQbGF0Zm9ybTNET2JqZWN0IG9iamVjdCkKIHsKICAgICBjb250ZXh0KCktPmdyYXBoaWNz
Q29udGV4dDNEKCktPmRlbGV0ZUJ1ZmZlcihvYmplY3QpOwpJbmRleDogV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xCdWZmZXIuaAkocmV2aXNpb24gNjA5MDIpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
QnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEwICszOSw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdmlydHVhbCB+V2ViR0xCdWZmZXIoKSB7IGRlbGV0ZU9iamVjdCgpOyB9
CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTEJ1ZmZlcj4gY3JlYXRl
KFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOwotICAgICAgICAKLSAgICAgICAgLy8gRm9yIHF1ZXJ5
aW5nIHByZXZpb3VzbHkgY3JlYXRlZCBvYmplY3RzIHZpYSBlLmcuIGdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcgotICAgICAgICAvLyBGSVhNRTogc2hvdWxkIGNvbnNpZGVyIGNhbm9u
aWNhbGl6aW5nIHRoZXNlIG9iamVjdHMKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xC
dWZmZXI+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqLCBQbGF0Zm9ybTNET2JqZWN0KTsK
IAogICAgICAgICBib29sIGFzc29jaWF0ZUJ1ZmZlckRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQs
IGludCBzaXplKTsKICAgICAgICAgYm9vbCBhc3NvY2lhdGVCdWZmZXJEYXRhKHVuc2lnbmVkIGxv
bmcgdGFyZ2V0LCBBcnJheUJ1ZmZlclZpZXcqIGFycmF5KTsKQEAgLTU5LDggKzU1LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBXZWJHTEJ1ZmZlcihX
ZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKLSAgICAgICAgV2ViR0xCdWZmZXIoV2ViR0xSZW5kZXJp
bmdDb250ZXh0KiwgUGxhdGZvcm0zRE9iamVjdCBvYmopOwotICAgICAgICAKKwogICAgICAgICB2
aXJ0dWFsIHZvaWQgX2RlbGV0ZU9iamVjdChQbGF0Zm9ybTNET2JqZWN0IG8pOwogICAgIAogICAg
IHByaXZhdGU6CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuY3BwCShyZXZpc2lvbiA2MDkwMikKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0NCw5ICsxMDQ0LDkgQEAg
V2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RgogICAgICAgICBtX2NvbnRl
eHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0YWNobWVu
dCwgR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUUs
ICZ2YWx1ZSk7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpSRU5ERVJCVUZGRVI6Ci0gICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZv
KGZpbmRSZW5kZXJidWZmZXIoc3RhdGljX2Nhc3Q8UGxhdGZvcm0zRE9iamVjdD4odmFsdWUpKSk7
CisgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJi
dWZmZXI+KGZpbmRSZW5kZXJidWZmZXIoc3RhdGljX2Nhc3Q8UGxhdGZvcm0zRE9iamVjdD4odmFs
dWUpKSkpOwogICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFOgotICAgICAg
ICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhmaW5kVGV4dHVyZShzdGF0aWNfY2FzdDxQbGF0Zm9y
bTNET2JqZWN0Pih2YWx1ZSkpKTsKKyAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oUGFz
c1JlZlB0cjxXZWJHTFRleHR1cmU+KGZpbmRUZXh0dXJlKHN0YXRpY19jYXN0PFBsYXRmb3JtM0RP
YmplY3Q+KHZhbHVlKSkpKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIC8vIEZJWE1F
OiByYWlzZSBleGNlcHRpb24/CiAgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CkBA
IC0xNTI1LDExICsxNTI1LDcgQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Z2V0VgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVG
RkVSX0JJTkRJTkc6IHsKICAgICAgICAgaW50IG5hbWUgPSAwOwogICAgICAgICBtX2NvbnRleHQt
PmdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwgJm5hbWUpOwotICAgICAgICBpZiAobmFt
ZSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwotICAgICAgICBSZWZQ
dHI8V2ViR0xCdWZmZXI+IHRtcCA9IFdlYkdMQnVmZmVyOjpjcmVhdGUodGhpcywgbmFtZSk7Ci0g
ICAgICAgIGFkZE9iamVjdCh0bXAuZ2V0KCkpOwotICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZv
KFBhc3NSZWZQdHI8V2ViR0xCdWZmZXI+KHRtcCkpOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJ
bmZvKFBhc3NSZWZQdHI8V2ViR0xCdWZmZXI+KGZpbmRCdWZmZXIoc3RhdGljX2Nhc3Q8UGxhdGZv
cm0zRE9iamVjdD4obmFtZSkpKSk7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OlZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRDoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpWRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRUQ6IHsKQEAgLTI5NjUsMjYgKzI5NjEsMzgg
QEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRldGFjaEFuZFJlbQogICAgIG1fY2FudmFz
T2JqZWN0cy5jbGVhcigpOwogfQogCi1QYXNzUmVmUHRyPFdlYkdMVGV4dHVyZT4gV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpmaW5kVGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0IG9iaikKK1dlYkdMVGV4
dHVyZSogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpmaW5kVGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0
IG9iaikKIHsKKyAgICBpZiAoIW9iaikKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgSGFzaFNldDxS
ZWZQdHI8Q2FudmFzT2JqZWN0PiA+OjppdGVyYXRvciBwZW5kID0gbV9jYW52YXNPYmplY3RzLmVu
ZCgpOwogICAgIGZvciAoSGFzaFNldDxSZWZQdHI8Q2FudmFzT2JqZWN0PiA+OjppdGVyYXRvciBp
dCA9IG1fY2FudmFzT2JqZWN0cy5iZWdpbigpOyBpdCAhPSBwZW5kOyArK2l0KSB7Ci0gICAgICAg
IGlmICgoKml0KS0+aXNUZXh0dXJlKCkgJiYgKCppdCktPm9iamVjdCgpID09IG9iaikgewotICAg
ICAgICAgICAgUmVmUHRyPFdlYkdMVGV4dHVyZT4gdGV4ID0gcmVpbnRlcnByZXRfY2FzdDxXZWJH
TFRleHR1cmUqPigoKml0KS5nZXQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdGV4LnJlbGVhc2Uo
KTsKLSAgICAgICAgfQorICAgICAgICBpZiAoKCppdCktPmlzVGV4dHVyZSgpICYmICgqaXQpLT5v
YmplY3QoKSA9PSBvYmopCisgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXZWJH
TFRleHR1cmUqPigoKml0KS5nZXQoKSk7CiAgICAgfQogICAgIHJldHVybiAwOwogfQogCi1QYXNz
UmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmZpbmRSZW5k
ZXJidWZmZXIoUGxhdGZvcm0zRE9iamVjdCBvYmopCitXZWJHTFJlbmRlcmJ1ZmZlciogV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpmaW5kUmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3Qgb2JqKQog
eworICAgIGlmICghb2JqKQorICAgICAgICByZXR1cm4gMDsKICAgICBIYXNoU2V0PFJlZlB0cjxD
YW52YXNPYmplY3Q+ID46Oml0ZXJhdG9yIHBlbmQgPSBtX2NhbnZhc09iamVjdHMuZW5kKCk7CiAg
ICAgZm9yIChIYXNoU2V0PFJlZlB0cjxDYW52YXNPYmplY3Q+ID46Oml0ZXJhdG9yIGl0ID0gbV9j
YW52YXNPYmplY3RzLmJlZ2luKCk7IGl0ICE9IHBlbmQ7ICsraXQpIHsKLSAgICAgICAgaWYgKCgq
aXQpLT5pc1JlbmRlcmJ1ZmZlcigpICYmICgqaXQpLT5vYmplY3QoKSA9PSBvYmopIHsKLSAgICAg
ICAgICAgIFJlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gYnVmZmVyID0gcmVpbnRlcnByZXRfY2Fz
dDxXZWJHTFJlbmRlcmJ1ZmZlcio+KCgqaXQpLmdldCgpKTsKLSAgICAgICAgICAgIHJldHVybiBi
dWZmZXIucmVsZWFzZSgpOwotICAgICAgICB9CisgICAgICAgIGlmICgoKml0KS0+aXNSZW5kZXJi
dWZmZXIoKSAmJiAoKml0KS0+b2JqZWN0KCkgPT0gb2JqKQorICAgICAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8V2ViR0xSZW5kZXJidWZmZXIqPigoKml0KS5nZXQoKSk7CisgICAgfQor
ICAgIHJldHVybiAwOworfQorCitXZWJHTEJ1ZmZlciogV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpm
aW5kQnVmZmVyKFBsYXRmb3JtM0RPYmplY3Qgb2JqKQoreworICAgIGlmICghb2JqKQorICAgICAg
ICByZXR1cm4gMDsKKyAgICBIYXNoU2V0PFJlZlB0cjxDYW52YXNPYmplY3Q+ID46Oml0ZXJhdG9y
IHBlbmQgPSBtX2NhbnZhc09iamVjdHMuZW5kKCk7CisgICAgZm9yIChIYXNoU2V0PFJlZlB0cjxD
YW52YXNPYmplY3Q+ID46Oml0ZXJhdG9yIGl0ID0gbV9jYW52YXNPYmplY3RzLmJlZ2luKCk7IGl0
ICE9IHBlbmQ7ICsraXQpIHsKKyAgICAgICAgaWYgKCgqaXQpLT5pc0J1ZmZlcigpICYmICgqaXQp
LT5vYmplY3QoKSA9PSBvYmopCisgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxX
ZWJHTEJ1ZmZlcio+KCgqaXQpLmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CkluZGV4
OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgJKHJldmlzaW9u
IDYwOTAyKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjk5LDggKzI5OSw5IEBAIGNsYXNzIFdlYktpdENTU01hdHJpeDsK
IAogICAgICAgICB2b2lkIGFkZE9iamVjdChDYW52YXNPYmplY3QqKTsKICAgICAgICAgdm9pZCBk
ZXRhY2hBbmRSZW1vdmVBbGxPYmplY3RzKCk7Ci0gICAgICAgIFBhc3NSZWZQdHI8V2ViR0xUZXh0
dXJlPiBmaW5kVGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0KTsKLSAgICAgICAgUGFzc1JlZlB0cjxX
ZWJHTFJlbmRlcmJ1ZmZlcj4gZmluZFJlbmRlcmJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0KTsKKyAg
ICAgICAgV2ViR0xUZXh0dXJlKiBmaW5kVGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICAg
ICAgV2ViR0xSZW5kZXJidWZmZXIqIGZpbmRSZW5kZXJidWZmZXIoUGxhdGZvcm0zRE9iamVjdCk7
CisgICAgICAgIFdlYkdMQnVmZmVyKiBmaW5kQnVmZmVyKFBsYXRmb3JtM0RPYmplY3QpOwogCiAg
ICAgICAgIHZvaWQgbWFya0NvbnRleHRDaGFuZ2VkKCk7CiAgICAgICAgIHZvaWQgY2xlYW51cEFm
dGVyR3JhcGhpY3NDYWxsKGJvb2wgY2hhbmdlZCkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDYwOTA3KQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDYtMDkgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggV2ViR0xSZW5kZXJpbmdDb250
ZXh0IGhlbHBlciBmdW5jdGlvbnMgZmluZHtUZXh0dXJlL1JlbmRlcmJ1ZmZlci9CdWZmZXJ9Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDE3NgorCisg
ICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvZ2wtb2JqZWN0LWdldC1jYWxscy1leHBlY3RlZC50
eHQ6IFRlc3QgbmFtZSA9PSAwIGNhc2VzLCBhbmQgdGVzdCBnZXRWZXJ0ZXhBdHRyaWIgcmV0dXJu
IG9yaWdpbmFsIFdlYkdMQnVmZmVyIG9iamVjdC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJn
bC9zY3JpcHQtdGVzdHMvZ2wtb2JqZWN0LWdldC1jYWxscy5qczogRGl0dG8uCisKIDIwMTAtMDYt
MDkgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L2dsLW9iamVjdC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLW9iamVjdC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiA2MDkwMikKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLW9iamVj
dC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBA
IFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyAwCiBQQVNTIGdsLmdldFVuaWZvcm0obWF0UHJvZ3JhbSwg
bXZhbDJMb2MpIGlzIFsxLCAyLCAzLCA0XQogUEFTUyBnbC5nZXRVbmlmb3JtKG1hdFByb2dyYW0s
IG12YWwzTG9jKSBpcyBbNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTNdCiBQQVNTIGdsLmdl
dFVuaWZvcm0obWF0UHJvZ3JhbSwgbXZhbDRMb2MpIGlzIFsxNCwgMTUsIDE2LCAxNywgMTgsIDE5
LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOV0KLVBBU1MgZ2wuZ2V0VmVy
dGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkcpIGlzIG5v
bi1udWxsLgorUEFTUyBnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJB
WV9CVUZGRVJfQklORElORykgaXMgYnVmZmVyCiBQQVNTIGdsLmdldFZlcnRleEF0dHJpYigxLCBn
bC5WRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRUQpIGlzIHRydWUKIFBBU1MgZ2wuZ2V0VmVydGV4
QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRSkgaXMgNAogUEFTUyAoZ2wuZ2V0
VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFKSA9PSAwKSB8fCAo
Z2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFKSA9PSA0
ICogZ2wuc2l6ZUluQnl0ZXMoZ2wuRkxPQVQpKSBpcyB0cnVlCkBAIC03OCw2ICs3OCwxMCBAQCBQ
QVNTIGdsLmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRUCiBQQVNTIGdsLmdldFZlcnRl
eEF0dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRUQpIGlzIGZhbHNlCiBQQVNT
IGdsLmdldFZlcnRleEF0dHJpYigxLCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpIGlzIFs1LCA2
LCA3LCA4XQogUEFTUyBnbC5nZXRFcnJvcigpIGlzIDAKK1BBU1MgZ2wuZ2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwg
Z2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRSkgaXMgbnVsbAorUEFTUyBnbC5n
ZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRI
X0FUVEFDSE1FTlQsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUUpIGlzIG51
bGwKK1BBU1MgZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVG
RkVSX0JJTkRJTkcpIGlzIG51bGwKK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyAwCiBQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9nbC1vYmplY3QtZ2V0LWNhbGxzLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9n
bC1vYmplY3QtZ2V0LWNhbGxzLmpzCShyZXZpc2lvbiA2MDkwMikKKysrIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9nbC1vYmplY3QtZ2V0LWNhbGxzLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTIsNyArMTkyLDcgQEAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZG
RVIsIGFycmF5LCBnbAogLy8gMSBmb3IgdGhlc2UgdGVzdHMgaW5zdGVhZC4KIGdsLmVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KDEpOwogZ2wudmVydGV4QXR0cmliUG9pbnRlcigxLCA0LCBnbC5GTE9B
VCwgZmFsc2UsIDAsIDApOwotc2hvdWxkQmVOb25OdWxsKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwg
Z2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORyknKTsKK3Nob3VsZEJlKCdnbC5n
ZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORykn
LCAnYnVmZmVyJyk7CiBzaG91bGRCZSgnZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9B
VFRSSUJfQVJSQVlfRU5BQkxFRCknLCAndHJ1ZScpOwogc2hvdWxkQmUoJ2dsLmdldFZlcnRleEF0
dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX1NJWkUpJywgJzQnKTsKIHNob3VsZEJlKCco
Z2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFKSA9PSAw
KSB8fCAoZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURF
KSA9PSA0ICogZ2wuc2l6ZUluQnl0ZXMoZ2wuRkxPQVQpKScsICd0cnVlJyk7CkBAIC0yMDQsNCAr
MjA0LDEzIEBAIGdsLnZlcnRleEF0dHJpYjRmKDEsIDUsIDYsIDcsIDgpOwogc2hvdWxkQmUoJ2ds
LmdldFZlcnRleEF0dHJpYigxLCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpJywgJ1s1LCA2LCA3
LCA4XScpOwogc2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOwogCisvLyBUZXN0IGNhc2Vz
IHdoZXJlIG5hbWUgPT0gMAorZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlKTsKK3Nob3VsZEJlTnVs
bCgnZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBn
bC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFN
RSknKTsKK2dsLmRlbGV0ZVJlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpOworc2hvdWxkQmVOdWxs
KCdnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGds
LkRFUFRIX0FUVEFDSE1FTlQsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUUp
Jyk7CitnbC5kZWxldGVCdWZmZXIoYnVmZmVyKTsKK3Nob3VsZEJlTnVsbCgnZ2wuZ2V0VmVydGV4
QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkcpJyk7CitzaG91
bGRCZSgnZ2wuZ2V0RXJyb3IoKScsICcwJyk7CisKIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>