<?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>28785</bug_id>
          
          <creation_ts>2009-08-27 14:24:10 -0700</creation_ts>
          <short_desc>ImageDecoderFoo.cpp contains lots of copy &amp; pasted code and should be refactored</short_desc>
          <delta_ts>2009-08-28 11:00:55 -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>Images</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>26467</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Peter Kasting">pkasting</reporter>
          <assigned_to name="Peter Kasting">pkasting</assigned_to>
          <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>143200</commentid>
    <comment_count>0</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-08-27 14:24:10 -0700</bug_when>
    <thetext>Similar to bug 27965.

Skia and Qt are the odd platforms out; for now the others should use common implementations of this stuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143201</commentid>
    <comment_count>1</comment_count>
      <attachid>38687</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-08-27 14:27:32 -0700</bug_when>
    <thetext>Created attachment 38687
Prep work before moving functions into ImageDecoder.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143202</commentid>
    <comment_count>2</comment_count>
      <attachid>38687</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-27 14:32:48 -0700</bug_when>
    <thetext>Comment on attachment 38687
Prep work before moving functions into ImageDecoder.cpp

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143204</commentid>
    <comment_count>3</comment_count>
      <attachid>38687</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-08-27 14:38:49 -0700</bug_when>
    <thetext>Comment on attachment 38687
Prep work before moving functions into ImageDecoder.cpp

Landed in r47836, clearing flags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143238</commentid>
    <comment_count>4</comment_count>
      <attachid>38696</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-08-27 16:35:58 -0700</bug_when>
    <thetext>Created attachment 38696
Refactor

Yay for removing duplicate copies of code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143266</commentid>
    <comment_count>5</comment_count>
      <attachid>38696</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-27 18:04:59 -0700</bug_when>
    <thetext>Comment on attachment 38696
Refactor

Why wouldn&apos;t we just move this into an RGBABuffer.cpp?  This is definitely better than before, but we generally try to do one-class per file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143401</commentid>
    <comment_count>6</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-08-28 10:37:52 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 38696 [details])
&gt; Why wouldn&apos;t we just move this into an RGBABuffer.cpp?  This is definitely
&gt; better than before, but we generally try to do one-class per file.

Yes, my eventual plan is to move this into a different file, in a different folder, with a different name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143407</commentid>
    <comment_count>7</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-08-28 11:00:55 -0700</bug_when>
    <thetext>Fixed in r47867.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38687</attachid>
            <date>2009-08-27 14:27:32 -0700</date>
            <delta_ts>2009-08-27 14:38:49 -0700</delta_ts>
            <desc>Prep work before moving functions into ImageDecoder.cpp</desc>
            <filename>patch2</filename>
            <type>text/plain</type>
            <size>8165</size>
            <attacher name="Peter Kasting">pkasting</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDQ3ODM1KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyMyBAQAorMjAwOS0wOC0yNyAgUGV0ZXIgS2FzdGluZyAgPHBrYXN0aW5nQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4Nzg1CisgICAgICAg
IEFkZCBJbWFnZURlY29kZXIuY3BwIHRvIHZhcmlvdXMgYnVpbGQgZmlsZXMgc28gcGxhdGZvcm1z
IHdpbGwgYmUgYWJsZSB0bworICAgICAgICB1c2UgaXQuICBNb3ZlIGFuIEVOQUJMRSB0byBub3Qg
Y292ZXIgdGhlIHdob2xlIGZpbGUsIGluIHByZXBhcmF0aW9uIGZvcgorICAgICAgICBhZGRpbmcg
YSBidW5jaCBvZiBjb2RlLiAgU2ltcGxpZnkgI2lmZGVmcyBpbiBJbWFnZURlY29kZXIuaCB0byBi
ZSAiU2tpYQorICAgICAgICB2cy4gZXZlcnlvbmUgZWxzZSIsIHdoaWNoIGFsc28gZ2l2ZXMgbmV3
IHBsYXRmb3JtcyBhIHJlYXNvbmFibGUgZGVmYXVsdAorICAgICAgICBiZWhhdmlvci4KKworICAg
ICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAg
KiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlU291cmNl
cy5ia2w6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSR0JBMzJCdWZmZXI6OmdldEFk
ZHIpOgorCiAyMDA5LTA4LTI3ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXZlIEtpbHplci4KSW5kZXg6IFdlYkNvcmUvR05VbWFrZWZp
bGUuYW0NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA0
NzgzNSkKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTE5MzMs
NiArMTkzMyw3IEBAIHdlYmNvcmVndGtfc291cmNlcyArPSBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvZ3RrMmRyYXdpbmcuYyBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvZ3RrZHJhd2luZy5oIFwK
IAlXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oIFwKKwlXZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAgXAogCVdlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAgXAogCVdlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oIFwKIAlXZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHAgXApJbmRl
eDogV2ViQ29yZS9XZWJDb3JlLmd5cGkNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL1dlYkNvcmUu
Z3lwaQkocmV2aXNpb24gNDc4MzUpCisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBj
b3B5KQpAQCAtMjE1MCwyMCArMjE1MCwyNSBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2d0ay9n
dGtkcmF3aW5nLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2d0ay9ndXJpZXNjYXBlLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oJywKKyAg
ICAgICAgICAgICdwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVj
b2Rlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1h
Z2VSZWFkZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAv
Qk1QSW1hZ2VSZWFkZXIuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Y2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaCcsCisgICAg
ICAgICAgICAncGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaGFpa3UvSW1hZ2VEZWNvZGVySGFpa3Uu
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VE
ZWNvZGVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lD
T0ltYWdlRGVjb2Rlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9q
cGVnL0pQRUdJbWFnZURlY29kZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaCcsCisgICAgICAgICAg
ICAncGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvc2tpYS9JbWFnZURlY29kZXJTa2lhLmNwcCcsCisg
ICAgICAgICAgICAncGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd3gvSW1hZ2VEZWNvZGVyV3guY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy94Ym0vWEJNSW1hZ2VEZWNv
ZGVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMveGJtL1hCTUlt
YWdlRGVjb2Rlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy96bGli
L2NyYzMyLmgnLApAQCAtMjE3Nyw3ICsyMTgyLDYgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy96bGliL3pjb25mLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3psaWIvemxpYi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy96bGliL3p1dGlsLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2ltYWdl
LWVuY29kZXJzL3NraWEvUE5HSW1hZ2VFbmNvZGVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vaW1hZ2UtZW5jb2RlcnMvc2tpYS9QTkdJbWFnZUVuY29kZXIuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vbWFjL0F1dG9kcmFpbmVkUG9vbC5tbScsCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gNDc4MzUpCisrKyBXZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMTA5Myw2ICsyMTA5Mywz
NCBAQAogCQkJCU5hbWU9ImltYWdlLWRlY29kZXJzIg0KIAkJCQk+DQogCQkJCTxGaWxlDQorCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGltYWdlLWRlY29kZXJzXEltYWdlRGVjb2Rlci5j
cHAiDQorCQkJCQk+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1
Z3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJ
CQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJCQkJLz4NCisJ
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJ
CQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0K
KwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIN
CisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmln
dXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnX0ludGVybmFsfFdpbjMyIg0KKwkJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1l
PSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0
Zm9ybVxpbWFnZS1kZWNvZGVyc1xJbWFnZURlY29kZXIuaCINCiAJCQkJCT4NCiAJCQkJCTxGaWxl
Q29uZmlndXJhdGlvbg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQotLS0gV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wJKHJldmlzaW9uIDQ3ODM1KQorKysg
V2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wJKHdvcmtpbmcgY29weSkKQEAgLTkwMCw2ICs5MDAs
MTAgQEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5lZQogICAgICAgICBw
bHVnaW5zL25wYXBpLmNwcAogICAgIDwvc2V0PgogCisgICAgPHNldCBhcHBlbmQ9IjEiIHZhcj0i
V0VCQ09SRV9TT1VSQ0VTX0lNQUdFX0RFQ09ERVJTIj4KKyAgICAgICAgcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAorICAgIDwvc2V0PgorCiAgICAgPHNldCBhcHBlbmQ9
IjEiIHZhcj0iV0VCQ09SRV9TT1VSQ0VTX0dJRiI+CiAgICAgICAgIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCiAgICAgICAgIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHAKQEAgLTkyOSw4ICs5MzMsOCBAQCBUaGlzIGZp
bGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlCiAgICAgPC9zZXQ+CiAKICAgICA8c2V0
IGFwcGVuZD0iMSIgdmFyPSJXRUJDT1JFX1NPVVJDRVNfQk1QIj4KLSAgICAgIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCi0gICAgICBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwCisgICAgICAgIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCisgICAgICAgIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHAKICAgICA8L3NldD4KIAogICAgIDxzZXQg
YXBwZW5kPSIxIiB2YXI9IldFQkNPUkVfU09VUkNFU19JQ08iPgpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCShyZXZpc2lvbiA0
NzgzNSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjAsMTQgKzIwLDE2IEBACiANCiAjaW5jbHVkZSAiY29uZmln
LmgiDQogDQotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpDQotDQogI2lu
Y2x1ZGUgIkltYWdlRGVjb2Rlci5oIg0KIA0KKyNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dO
X1NBTVBMSU5HKQ0KICNpbmNsdWRlIDxhbGdvcml0aG0+DQorI2VuZGlmDQogDQogbmFtZXNwYWNl
IFdlYkNvcmUgew0KIA0KKyNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQ0K
Kw0KIG5hbWVzcGFjZSB7DQogDQogZW51bSBNYXRjaFR5cGUgew0KQEAgLTk5LDYgKzEwMSw2IEBA
IHZvaWQgSW1hZ2VEZWNvZGVyOjpwcmVwYXJlU2NhbGVEYXRhSWZOZWMKICAgICBmaWxsU2NhbGVk
VmFsdWVzKG1fc2NhbGVkUm93cywgc2NhbGUsIGhlaWdodCk7DQogfQ0KIA0KLX0NCi0NCiAjZW5k
aWYgLy8gRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykNCisNCit9DQpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaA0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgJKHJl
dmlzaW9uIDQ3ODM1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURl
Y29kZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQAogCiAjaWYgUExBVEZPUk0o
U0tJQSkKICNpbmNsdWRlICJOYXRpdmVJbWFnZVNraWEuaCIKLSNpbmNsdWRlICJTa0JpdG1hcC5o
IgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEzNSwxMyArMTM0LDEwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBpbmxpbmUgUGl4ZWxEYXRhKiBnZXRBZGRyKGlu
dCB4LCBpbnQgeSkKICAgICAgICAgewotI2lmIFBMQVRGT1JNKENBSVJPKSB8fCBQTEFURk9STShX
WCkgfHwgUExBVEZPUk0oSEFJS1UpCi0gICAgICAgICAgICByZXR1cm4gbV9ieXRlcy5kYXRhKCkg
KyAoeSAqIHdpZHRoKCkpICsgeDsKLSNlbGlmIFBMQVRGT1JNKFNLSUEpCisjaWYgUExBVEZPUk0o
U0tJQSkKICAgICAgICAgICAgIHJldHVybiBtX2JpdG1hcC5nZXRBZGRyMzIoeCwgeSk7CiAjZWxz
ZQotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgICAgIHJldHVybiBtX2J5dGVzLmRhdGEoKSArICh5ICogd2lkdGgoKSkgKyB4
OwogI2VuZGlmCiAgICAgICAgIH0KIApAQCAtMTYxLDEzICsxNTcsMTMgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSNpZiBQTEFURk9STShDQUlSTykg
fHwgUExBVEZPUk0oV1gpIHx8IFBMQVRGT1JNKEhBSUtVKQorI2lmIFBMQVRGT1JNKFNLSUEpCisg
ICAgICAgIE5hdGl2ZUltYWdlU2tpYSBtX2JpdG1hcDsKKyNlbHNlCiAgICAgICAgIFZlY3RvcjxQ
aXhlbERhdGE+IG1fYnl0ZXM7CiAgICAgICAgIEludFNpemUgbV9zaXplOyAgICAgICAvLyBUaGUg
c2l6ZSBvZiB0aGUgYnVmZmVyLiAgVGhpcyBzaG91bGQgYmUgdGhlCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBzYW1lIGFzIEltYWdlRGVjb2Rlcjo6bV9zaXplLgogICAgICAgICBi
b29sIG1faGFzQWxwaGE7ICAgICAgLy8gV2hldGhlciBvciBub3QgYW55IG9mIHRoZSBwaXhlbHMg
aW4gdGhlIGJ1ZmZlciBoYXZlIHRyYW5zcGFyZW5jeS4KLSNlbGlmIFBMQVRGT1JNKFNLSUEpCi0g
ICAgICAgIE5hdGl2ZUltYWdlU2tpYSBtX2JpdG1hcDsKICNlbmRpZgogICAgICAgICBJbnRSZWN0
IG1fcmVjdDsgICAgICAgLy8gVGhlIHJlY3Qgb2YgdGhlIG9yaWdpbmFsIHNwZWNpZmllZCBmcmFt
ZSB3aXRoaW4gdGhlIG92ZXJhbGwgYnVmZmVyLgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gVGhpcyB3aWxsIGFsd2F5cyBqdXN0IGJlIHRoZSBlbnRpcmUgYnVmZmVyIGV4Y2VwdCBm
b3IgR0lGIGZyYW1lcwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38696</attachid>
            <date>2009-08-27 16:35:58 -0700</date>
            <delta_ts>2009-08-27 18:04:59 -0700</delta_ts>
            <desc>Refactor</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>10537</size>
            <attacher name="Peter Kasting">pkasting</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDQ3ODQxKQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyNyBAQAorMjAwOS0wOC0yNyAgUGV0ZXIgS2FzdGluZyAgPHBrYXN0aW5nQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4Nzg1CisgICAgICAg
IENvbWJpbmUgZHVwbGljYXRlZCBjb2RlIGZyb20gSW1hZ2VEZWNvZGVyKi5jcHAgaW50byB0aGUg
bWFpbgorICAgICAgICBJbWFnZURlY29kZXIuY3BwLgorCisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJHQkEzMkJ1
ZmZlcjo6UkdCQTMyQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJHQkEzMkJ1ZmZlcjo6Y2xl
YXIpOgorICAgICAgICAoV2ViQ29yZTo6UkdCQTMyQnVmZmVyOjp6ZXJvRmlsbCk6CisgICAgICAg
IChXZWJDb3JlOjpSR0JBMzJCdWZmZXI6OmNvcHlCaXRtYXBEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OlJHQkEzMkJ1ZmZlcjo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSR0JBMzJCdWZm
ZXI6Omhhc0FscGhhKToKKyAgICAgICAgKFdlYkNvcmU6OlJHQkEzMkJ1ZmZlcjo6c2V0SGFzQWxw
aGEpOgorICAgICAgICAoV2ViQ29yZTo6UkdCQTMyQnVmZmVyOjpzZXRTdGF0dXMpOgorICAgICAg
ICAoV2ViQ29yZTo6UkdCQTMyQnVmZmVyOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6
UkdCQTMyQnVmZmVyOjp3aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSR0JBMzJCdWZmZXI6Omhl
aWdodCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNv
ZGVyQ2Fpcm8uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2hhaWt1L0lt
YWdlRGVjb2RlckhhaWt1LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93
eC9JbWFnZURlY29kZXJXeC5jcHA6CisKIDIwMDktMDgtMjcgIFBldGVyIEthc3RpbmcgIDxwa2Fz
dGluZ0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIu
Y3BwCShyZXZpc2lvbiA0Nzg0MSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
SW1hZ2VEZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsOTUgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCisjaWYgIVBMQVRGT1JNKFNLSUEpCisKK1JHQkEzMkJ1ZmZlcjo6
UkdCQTMyQnVmZmVyKCkKKyAgICA6IG1faGFzQWxwaGEoZmFsc2UpCisgICAgLCBtX3N0YXR1cyhG
cmFtZUVtcHR5KQorICAgICwgbV9kdXJhdGlvbigwKQorICAgICwgbV9kaXNwb3NhbE1ldGhvZChE
aXNwb3NlTm90U3BlY2lmaWVkKQoreworfSAKKwordm9pZCBSR0JBMzJCdWZmZXI6OmNsZWFyKCkK
K3sKKyAgICBtX2J5dGVzLmNsZWFyKCk7CisgICAgbV9zdGF0dXMgPSBGcmFtZUVtcHR5OworICAg
IC8vIE5PVEU6IERvIG5vdCByZXNldCBvdGhlciBtZW1iZXJzIGhlcmU7IGNsZWFyRnJhbWVCdWZm
ZXJDYWNoZSgpCisgICAgLy8gY2FsbHMgdGhpcyB0byBmcmVlIHRoZSBiaXRtYXAgZGF0YSwgYnV0
IG90aGVyIGZ1bmN0aW9ucyBsaWtlCisgICAgLy8gaW5pdEZyYW1lQnVmZmVyKCkgYW5kIGZyYW1l
Q29tcGxldGUoKSBtYXkgc3RpbGwgbmVlZCB0byByZWFkCisgICAgLy8gb3RoZXIgbWV0YWRhdGEg
b3V0IG9mIHRoaXMgZnJhbWUgbGF0ZXIuCit9CisKK3ZvaWQgUkdCQTMyQnVmZmVyOjp6ZXJvRmls
bCgpCit7CisgICAgbV9ieXRlcy5maWxsKDApOworICAgIG1faGFzQWxwaGEgPSB0cnVlOworfQor
Cit2b2lkIFJHQkEzMkJ1ZmZlcjo6Y29weUJpdG1hcERhdGEoY29uc3QgUkdCQTMyQnVmZmVyJiBv
dGhlcikKK3sKKyAgICBpZiAodGhpcyA9PSAmb3RoZXIpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fYnl0ZXMgPSBvdGhlci5tX2J5dGVzOworICAgIG1fc2l6ZSA9IG90aGVyLm1fc2l6ZTsKKyAg
ICBzZXRIYXNBbHBoYShvdGhlci5tX2hhc0FscGhhKTsKK30KKworYm9vbCBSR0JBMzJCdWZmZXI6
OnNldFNpemUoaW50IG5ld1dpZHRoLCBpbnQgbmV3SGVpZ2h0KQoreworICAgIC8vIE5PVEU6IFRo
aXMgaGFzIG5vIHdheSB0byBjaGVjayBmb3IgYWxsb2NhdGlvbiBmYWlsdXJlIGlmIHRoZQorICAg
IC8vIHJlcXVlc3RlZCBzaXplIHdhcyB0b28gYmlnLi4uCisgICAgbV9ieXRlcy5yZXNpemUobmV3
V2lkdGggKiBuZXdIZWlnaHQpOworICAgIG1fc2l6ZSA9IEludFNpemUobmV3V2lkdGgsIG5ld0hl
aWdodCk7CisKKyAgICAvLyBaZXJvIHRoZSBpbWFnZS4KKyAgICB6ZXJvRmlsbCgpOworCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgUkdCQTMyQnVmZmVyOjpoYXNBbHBoYSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1faGFzQWxwaGE7Cit9CisKK3ZvaWQgUkdCQTMyQnVmZmVyOjpzZXRIYXNB
bHBoYShib29sIGFscGhhKQoreworICAgIG1faGFzQWxwaGEgPSBhbHBoYTsKK30KKwordm9pZCBS
R0JBMzJCdWZmZXI6OnNldFN0YXR1cyhGcmFtZVN0YXR1cyBzdGF0dXMpCit7CisgICAgbV9zdGF0
dXMgPSBzdGF0dXM7Cit9CisKK1JHQkEzMkJ1ZmZlciYgUkdCQTMyQnVmZmVyOjpvcGVyYXRvcj0o
Y29uc3QgUkdCQTMyQnVmZmVyJiBvdGhlcikKK3sKKyAgICBpZiAodGhpcyA9PSAmb3RoZXIpCisg
ICAgICAgIHJldHVybiAqdGhpczsKKworICAgIGNvcHlCaXRtYXBEYXRhKG90aGVyKTsKKyAgICBz
ZXRSZWN0KG90aGVyLnJlY3QoKSk7CisgICAgc2V0U3RhdHVzKG90aGVyLnN0YXR1cygpKTsKKyAg
ICBzZXREdXJhdGlvbihvdGhlci5kdXJhdGlvbigpKTsKKyAgICBzZXREaXNwb3NhbE1ldGhvZChv
dGhlci5kaXNwb3NhbE1ldGhvZCgpKTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK2ludCBSR0JB
MzJCdWZmZXI6OndpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaXplLndpZHRoKCk7Cit9
CisKK2ludCBSR0JBMzJCdWZmZXI6OmhlaWdodCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2l6
ZS5oZWlnaHQoKTsKK30KKworI2VuZGlmCisKICNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dO
X1NBTVBMSU5HKQogCiBuYW1lc3BhY2UgewpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHANCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcAko
cmV2aXNpb24gNDc4NDEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJv
L0ltYWdlRGVjb2RlckNhaXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNTMgKzMwLDYgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SR0JBMzJCdWZmZXI6OlJHQkEzMkJ1ZmZlcigpCi0g
ICAgOiBtX2hhc0FscGhhKGZhbHNlKQotICAgICwgbV9zdGF0dXMoRnJhbWVFbXB0eSkKLSAgICAs
IG1fZHVyYXRpb24oMCkKLSAgICAsIG1fZGlzcG9zYWxNZXRob2QoRGlzcG9zZU5vdFNwZWNpZmll
ZCkKLXsKLX0gCi0KLXZvaWQgUkdCQTMyQnVmZmVyOjpjbGVhcigpCi17Ci0gICAgbV9ieXRlcy5j
bGVhcigpOwotICAgIG1fc3RhdHVzID0gRnJhbWVFbXB0eTsKLSAgICAvLyBOT1RFOiBEbyBub3Qg
cmVzZXQgb3RoZXIgbWVtYmVycyBoZXJlOyBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoKQotICAgIC8v
IGNhbGxzIHRoaXMgdG8gZnJlZSB0aGUgYml0bWFwIGRhdGEsIGJ1dCBvdGhlciBmdW5jdGlvbnMg
bGlrZQotICAgIC8vIGluaXRGcmFtZUJ1ZmZlcigpIGFuZCBmcmFtZUNvbXBsZXRlKCkgbWF5IHN0
aWxsIG5lZWQgdG8gcmVhZAotICAgIC8vIG90aGVyIG1ldGFkYXRhIG91dCBvZiB0aGlzIGZyYW1l
IGxhdGVyLgotfQotCi12b2lkIFJHQkEzMkJ1ZmZlcjo6emVyb0ZpbGwoKQotewotICAgIG1fYnl0
ZXMuZmlsbCgwKTsKLSAgICBtX2hhc0FscGhhID0gdHJ1ZTsKLX0KLQotdm9pZCBSR0JBMzJCdWZm
ZXI6OmNvcHlCaXRtYXBEYXRhKGNvbnN0IFJHQkEzMkJ1ZmZlciYgb3RoZXIpCi17Ci0gICAgaWYg
KHRoaXMgPT0gJm90aGVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2J5dGVzID0gb3RoZXIu
bV9ieXRlczsKLSAgICBtX3NpemUgPSBvdGhlci5tX3NpemU7Ci0gICAgc2V0SGFzQWxwaGEob3Ro
ZXIubV9oYXNBbHBoYSk7Ci19Ci0KLWJvb2wgUkdCQTMyQnVmZmVyOjpzZXRTaXplKGludCBuZXdX
aWR0aCwgaW50IG5ld0hlaWdodCkKLXsKLSAgICAvLyBOT1RFOiBUaGlzIGhhcyBubyB3YXkgdG8g
Y2hlY2sgZm9yIGFsbG9jYXRpb24gZmFpbHVyZSBpZiB0aGUKLSAgICAvLyByZXF1ZXN0ZWQgc2l6
ZSB3YXMgdG9vIGJpZy4uLgotICAgIG1fYnl0ZXMucmVzaXplKG5ld1dpZHRoICogbmV3SGVpZ2h0
KTsKLSAgICBtX3NpemUgPSBJbnRTaXplKG5ld1dpZHRoLCBuZXdIZWlnaHQpOwotCi0gICAgLy8g
WmVybyB0aGUgaW1hZ2UuCi0gICAgemVyb0ZpbGwoKTsKLQotICAgIHJldHVybiB0cnVlOwotfQot
CiBOYXRpdmVJbWFnZVB0ciBSR0JBMzJCdWZmZXI6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAog
ewogICAgIHJldHVybiBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YSgKQEAgLTg1
LDQyICszOCw0IEBAIE5hdGl2ZUltYWdlUHRyIFJHQkEzMkJ1ZmZlcjo6YXNOZXdOYXRpdmUKICAg
ICAgICAgd2lkdGgoKSAqIHNpemVvZihQaXhlbERhdGEpKTsKIH0KIAotYm9vbCBSR0JBMzJCdWZm
ZXI6Omhhc0FscGhhKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9oYXNBbHBoYTsKLX0KLQotdm9p
ZCBSR0JBMzJCdWZmZXI6OnNldEhhc0FscGhhKGJvb2wgYWxwaGEpCi17Ci0gICAgbV9oYXNBbHBo
YSA9IGFscGhhOwotfQotCi12b2lkIFJHQkEzMkJ1ZmZlcjo6c2V0U3RhdHVzKEZyYW1lU3RhdHVz
IHN0YXR1cykKLXsKLSAgICBtX3N0YXR1cyA9IHN0YXR1czsKLX0KLQotUkdCQTMyQnVmZmVyJiBS
R0JBMzJCdWZmZXI6Om9wZXJhdG9yPShjb25zdCBSR0JBMzJCdWZmZXImIG90aGVyKQotewotICAg
IGlmICh0aGlzID09ICZvdGhlcikKLSAgICAgICAgcmV0dXJuICp0aGlzOwotCi0gICAgY29weUJp
dG1hcERhdGEob3RoZXIpOwotICAgIHNldFJlY3Qob3RoZXIucmVjdCgpKTsKLSAgICBzZXRTdGF0
dXMob3RoZXIuc3RhdHVzKCkpOwotICAgIHNldER1cmF0aW9uKG90aGVyLmR1cmF0aW9uKCkpOwot
ICAgIHNldERpc3Bvc2FsTWV0aG9kKG90aGVyLmRpc3Bvc2FsTWV0aG9kKCkpOwotICAgIHJldHVy
biAqdGhpczsKLX0KLQotaW50IFJHQkEzMkJ1ZmZlcjo6d2lkdGgoKSBjb25zdAotewotICAgIHJl
dHVybiBtX3NpemUud2lkdGgoKTsKLX0KLQotaW50IFJHQkEzMkJ1ZmZlcjo6aGVpZ2h0KCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9zaXplLmhlaWdodCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2hhaWt1L0ltYWdl
RGVjb2RlckhhaWt1LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvaGFpa3UvSW1hZ2VEZWNvZGVySGFpa3UuY3BwCShyZXZpc2lvbiA0Nzg0MSkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaGFpa3UvSW1hZ2VEZWNvZGVySGFpa3Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw1MyArMzAsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVJHQkEzMkJ1ZmZlcjo6UkdCQTMyQnVmZmVyKCkKLSAgICA6IG1faGFzQWxwaGEoZmFs
c2UpCi0gICAgLCBtX3N0YXR1cyhGcmFtZUVtcHR5KQotICAgICwgbV9kdXJhdGlvbigwKQotICAg
ICwgbV9kaXNwb3NhbE1ldGhvZChEaXNwb3NlTm90U3BlY2lmaWVkKQotewotfSAKLQotdm9pZCBS
R0JBMzJCdWZmZXI6OmNsZWFyKCkKLXsKLSAgICBtX2J5dGVzLmNsZWFyKCk7Ci0gICAgbV9zdGF0
dXMgPSBGcmFtZUVtcHR5OwotICAgIC8vIE5PVEU6IERvIG5vdCByZXNldCBvdGhlciBtZW1iZXJz
IGhlcmU7IGNsZWFyRnJhbWVCdWZmZXJDYWNoZSgpCi0gICAgLy8gY2FsbHMgdGhpcyB0byBmcmVl
IHRoZSBiaXRtYXAgZGF0YSwgYnV0IG90aGVyIGZ1bmN0aW9ucyBsaWtlCi0gICAgLy8gaW5pdEZy
YW1lQnVmZmVyKCkgYW5kIGZyYW1lQ29tcGxldGUoKSBtYXkgc3RpbGwgbmVlZCB0byByZWFkCi0g
ICAgLy8gb3RoZXIgbWV0YWRhdGEgb3V0IG9mIHRoaXMgZnJhbWUgbGF0ZXIuCi19Ci0KLXZvaWQg
UkdCQTMyQnVmZmVyOjp6ZXJvRmlsbCgpCi17Ci0gICAgbV9ieXRlcy5maWxsKDApOwotICAgIG1f
aGFzQWxwaGEgPSB0cnVlOwotfQotCi12b2lkIFJHQkEzMkJ1ZmZlcjo6Y29weUJpdG1hcERhdGEo
Y29uc3QgUkdCQTMyQnVmZmVyJiBvdGhlcikKLXsKLSAgICBpZiAodGhpcyA9PSAmb3RoZXIpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIG1fYnl0ZXMgPSBvdGhlci5tX2J5dGVzOwotICAgIG1fc2l6
ZSA9IG90aGVyLm1fc2l6ZTsKLSAgICBzZXRIYXNBbHBoYShvdGhlci5tX2hhc0FscGhhKTsKLX0K
LQotYm9vbCBSR0JBMzJCdWZmZXI6OnNldFNpemUoaW50IG5ld1dpZHRoLCBpbnQgbmV3SGVpZ2h0
KQotewotICAgIC8vIE5PVEU6IFRoaXMgaGFzIG5vIHdheSB0byBjaGVjayBmb3IgYWxsb2NhdGlv
biBmYWlsdXJlIGlmIHRoZQotICAgIC8vIHJlcXVlc3RlZCBzaXplIHdhcyB0b28gYmlnLi4uCi0g
ICAgbV9ieXRlcy5yZXNpemUobmV3V2lkdGggKiBuZXdIZWlnaHQpOwotICAgIG1fc2l6ZSA9IElu
dFNpemUobmV3V2lkdGgsIG5ld0hlaWdodCk7Ci0KLSAgICAvLyBaZXJvIHRoZSBpbWFnZS4KLSAg
ICB6ZXJvRmlsbCgpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIE5hdGl2ZUltYWdlUHRyIFJH
QkEzMkJ1ZmZlcjo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0CiB7CiAgICAgQkJpdG1hcCogYm1w
ID0gbmV3IEJCaXRtYXAoQlJlY3QoMCwgMCwgd2lkdGgoKSwgaGVpZ2h0KCkpLCBCX1JHQjMyKTsK
QEAgLTg0LDQzICszNyw1IEBAIE5hdGl2ZUltYWdlUHRyIFJHQkEzMkJ1ZmZlcjo6YXNOZXdOYXRp
dmUKICAgICByZXR1cm4gYm1wOwogfQogCi1ib29sIFJHQkEzMkJ1ZmZlcjo6aGFzQWxwaGEoKSBj
b25zdAotewotICAgIHJldHVybiBtX2hhc0FscGhhOwotfQotCi12b2lkIFJHQkEzMkJ1ZmZlcjo6
c2V0SGFzQWxwaGEoYm9vbCBhbHBoYSkKLXsKLSAgICBtX2hhc0FscGhhID0gYWxwaGE7Ci19Ci0K
LXZvaWQgUkdCQTMyQnVmZmVyOjpzZXRTdGF0dXMoRnJhbWVTdGF0dXMgc3RhdHVzKQotewotICAg
IG1fc3RhdHVzID0gc3RhdHVzOwotfQotCi1SR0JBMzJCdWZmZXImIFJHQkEzMkJ1ZmZlcjo6b3Bl
cmF0b3I9KGNvbnN0IFJHQkEzMkJ1ZmZlciYgb3RoZXIpCi17Ci0gICAgaWYgKHRoaXMgPT0gJm90
aGVyKQotICAgICAgICByZXR1cm4gKnRoaXM7Ci0KLSAgICBjb3B5Qml0bWFwRGF0YShvdGhlcik7
Ci0gICAgc2V0UmVjdChvdGhlci5yZWN0KCkpOwotICAgIHNldFN0YXR1cyhvdGhlci5zdGF0dXMo
KSk7Ci0gICAgc2V0RHVyYXRpb24ob3RoZXIuZHVyYXRpb24oKSk7Ci0gICAgc2V0RGlzcG9zYWxN
ZXRob2Qob3RoZXIuZGlzcG9zYWxNZXRob2QoKSk7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi1p
bnQgUkdCQTMyQnVmZmVyOjp3aWR0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2l6ZS53aWR0
aCgpOwotfQotCi1pbnQgUkdCQTMyQnVmZmVyOjpoZWlnaHQoKSBjb25zdAotewotICAgIHJldHVy
biBtX3NpemUuaGVpZ2h0KCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93eC9JbWFnZURlY29kZXJXeC5jcHANCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3d4L0ltYWdlRGVj
b2Rlcld4LmNwcAkocmV2aXNpb24gNDc4NDEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3d4L0ltYWdlRGVjb2Rlcld4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNTMgKzM3
LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SR0JBMzJCdWZmZXI6OlJHQkEzMkJ1ZmZl
cigpCi0gICAgOiBtX2hhc0FscGhhKGZhbHNlKQotICAgICwgbV9zdGF0dXMoRnJhbWVFbXB0eSkK
LSAgICAsIG1fZHVyYXRpb24oMCkKLSAgICAsIG1fZGlzcG9zYWxNZXRob2QoRGlzcG9zZU5vdFNw
ZWNpZmllZCkKLXsKLX0gCi0KLXZvaWQgUkdCQTMyQnVmZmVyOjpjbGVhcigpCi17Ci0gICAgbV9i
eXRlcy5jbGVhcigpOwotICAgIG1fc3RhdHVzID0gRnJhbWVFbXB0eTsKLSAgICAvLyBOT1RFOiBE
byBub3QgcmVzZXQgb3RoZXIgbWVtYmVycyBoZXJlOyBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoKQot
ICAgIC8vIGNhbGxzIHRoaXMgdG8gZnJlZSB0aGUgYml0bWFwIGRhdGEsIGJ1dCBvdGhlciBmdW5j
dGlvbnMgbGlrZQotICAgIC8vIGluaXRGcmFtZUJ1ZmZlcigpIGFuZCBmcmFtZUNvbXBsZXRlKCkg
bWF5IHN0aWxsIG5lZWQgdG8gcmVhZAotICAgIC8vIG90aGVyIG1ldGFkYXRhIG91dCBvZiB0aGlz
IGZyYW1lIGxhdGVyLgotfQotCi12b2lkIFJHQkEzMkJ1ZmZlcjo6emVyb0ZpbGwoKQotewotICAg
IG1fYnl0ZXMuZmlsbCgwKTsKLSAgICBtX2hhc0FscGhhID0gdHJ1ZTsKLX0KLQotdm9pZCBSR0JB
MzJCdWZmZXI6OmNvcHlCaXRtYXBEYXRhKGNvbnN0IFJHQkEzMkJ1ZmZlciYgb3RoZXIpCi17Ci0g
ICAgaWYgKHRoaXMgPT0gJm90aGVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2J5dGVzID0g
b3RoZXIubV9ieXRlczsKLSAgICBtX3NpemUgPSBvdGhlci5tX3NpemU7Ci0gICAgc2V0SGFzQWxw
aGEob3RoZXIubV9oYXNBbHBoYSk7Ci19Ci0KLWJvb2wgUkdCQTMyQnVmZmVyOjpzZXRTaXplKGlu
dCBuZXdXaWR0aCwgaW50IG5ld0hlaWdodCkKLXsKLSAgICAvLyBOT1RFOiBUaGlzIGhhcyBubyB3
YXkgdG8gY2hlY2sgZm9yIGFsbG9jYXRpb24gZmFpbHVyZSBpZiB0aGUKLSAgICAvLyByZXF1ZXN0
ZWQgc2l6ZSB3YXMgdG9vIGJpZy4uLgotICAgIG1fYnl0ZXMucmVzaXplKG5ld1dpZHRoICogbmV3
SGVpZ2h0KTsKLSAgICBtX3NpemUgPSBJbnRTaXplKG5ld1dpZHRoLCBuZXdIZWlnaHQpOwotCi0g
ICAgLy8gWmVybyB0aGUgaW1hZ2UuCi0gICAgemVyb0ZpbGwoKTsKLQotICAgIHJldHVybiB0cnVl
OwotfQotCiBOYXRpdmVJbWFnZVB0ciBSR0JBMzJCdWZmZXI6OmFzTmV3TmF0aXZlSW1hZ2UoKSBj
b25zdAogewogICAgIHd4Qml0bWFwKiBibXAgPSBuZXcgd3hCaXRtYXAod2lkdGgoKSwgaGVpZ2h0
KCksIDMyKTsKQEAgLTEyNyw0MiArODAsNCBAQCBOYXRpdmVJbWFnZVB0ciBSR0JBMzJCdWZmZXI6
OmFzTmV3TmF0aXZlCiAjZW5kaWYKIH0KIAotYm9vbCBSR0JBMzJCdWZmZXI6Omhhc0FscGhhKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9oYXNBbHBoYTsKLX0KLQotdm9pZCBSR0JBMzJCdWZmZXI6
OnNldEhhc0FscGhhKGJvb2wgYWxwaGEpCi17Ci0gICAgbV9oYXNBbHBoYSA9IGFscGhhOwotfQot
Ci12b2lkIFJHQkEzMkJ1ZmZlcjo6c2V0U3RhdHVzKEZyYW1lU3RhdHVzIHN0YXR1cykKLXsKLSAg
ICBtX3N0YXR1cyA9IHN0YXR1czsKLX0KLQotUkdCQTMyQnVmZmVyJiBSR0JBMzJCdWZmZXI6Om9w
ZXJhdG9yPShjb25zdCBSR0JBMzJCdWZmZXImIG90aGVyKQotewotICAgIGlmICh0aGlzID09ICZv
dGhlcikKLSAgICAgICAgcmV0dXJuICp0aGlzOwotCi0gICAgY29weUJpdG1hcERhdGEob3RoZXIp
OwotICAgIHNldFJlY3Qob3RoZXIucmVjdCgpKTsKLSAgICBzZXRTdGF0dXMob3RoZXIuc3RhdHVz
KCkpOwotICAgIHNldER1cmF0aW9uKG90aGVyLmR1cmF0aW9uKCkpOwotICAgIHNldERpc3Bvc2Fs
TWV0aG9kKG90aGVyLmRpc3Bvc2FsTWV0aG9kKCkpOwotICAgIHJldHVybiAqdGhpczsKLX0KLQot
aW50IFJHQkEzMkJ1ZmZlcjo6d2lkdGgoKSBjb25zdAotewotICAgIHJldHVybiBtX3NpemUud2lk
dGgoKTsKLX0KLQotaW50IFJHQkEzMkJ1ZmZlcjo6aGVpZ2h0KCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9zaXplLmhlaWdodCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="19696"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>