From f4c550b1778711b41b9ceb3e8b1138689c686397 Mon Sep 17 00:00:00 2001 From: Ismo Vuorinen Date: Sun, 30 Sep 2012 16:35:33 +0300 Subject: [PATCH] Pulsing svg heart --- heart.ai | 232 +++++++++++++++++ heart.html | 26 ++ heart.js | 729 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 987 insertions(+) create mode 100644 heart.ai create mode 100644 heart.html create mode 100644 heart.js diff --git a/heart.ai b/heart.ai new file mode 100644 index 0000000..ef93607 --- /dev/null +++ b/heart.ai @@ -0,0 +1,232 @@ +%PDF-1.5 % +1 0 obj <>/OCGs[5 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream + + + + + Adobe Illustrator CS5.1 + 2012-09-26T23:20:35+03:00 + 2012-09-26T23:20:35+03:00 + 2012-09-26T23:20:35+03:00 + + + + 256 + 256 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8AOc5p5J2KuxV2KuxV2Kux V2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV 2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2 KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2K uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku 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 KuxV2KuxV2KuxV2KuxV2Kv8A/9k= + + + + + + 1 + False + False + + 194.027778 + 194.027778 + Millimeters + + + + Cyan + Yellow + + + + + + Default Swatch Group + 0 + + + + R=95 G=187 B=70 1 + RGB + PROCESS + 95 + 187 + 70 + + + + + + + + + Document + + + application/pdf + + + sydan + + + + + proof:pdf + uuid:08967cc7-5cdc-0740-94ba-67c7d1c54a5d + uuid:06fdf944-c5fa-1344-9984-b7a0dbe55fe3 + + + Adobe PDF library 9.90 + + + + + + + + + + + + + + + + + + + + + + + + + endstream endobj 3 0 obj <> endobj 7 0 obj <>/Resources<>/Properties<>>>/Thumb 11 0 R/TrimBox[0.0 0.0 550.0 550.0]/Type/Page>> endobj 8 0 obj <>stream +Hh#]~}R|J’92xzkuukG8Ͼރ%z1fg ^ۡm9weQilp_l"t硵@_5x/Ý8 cֽ8Q/ ¬J!Aj@Tzj73u%؍tЙ?L{inI +jY vMe@lU!^ضgrBMxϳ mePgOY*jpyz &"sG-VuЩR1aedPW Ž~P{(}i+ h#z`6 endstream endobj 11 0 obj <>stream +8;Z]";$t5a$q-0,_t6STm<,k%/T'l#R5'.A9*Kfs$tF\K=A)q8E\;JdfpR%]bH`R. +k6rI.DJVM6S4gR@F+!mE+72.-oqP(Jd4POO>0'5"`a8+l4s0ag9k5^!U;t;q[4uJ] +BSj&o4Wf9oc,jO0P!m38BGq?N+_i,`7#=Q,c<\O1J<,YM@ojm=H9QG1-QfVui+(OI +^,J"nGs:0b+_ngi6^'4l%nXZb?R,s!+Fd3?UAPV7@.Hf5 +60/X%KonS>#sOuM'%"+MZET"EaK1WF]5[ endstream endobj 12 0 obj [/Indexed/DeviceRGB 255 13 0 R] endobj 13 0 obj <>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> endstream endobj 5 0 obj <> endobj 14 0 obj [/View/Design] endobj 15 0 obj <>>> endobj 10 0 obj <> endobj 9 0 obj <> endobj 16 0 obj <> endobj 17 0 obj <>stream +%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 15.0 %%AI8_CreatorVersion: 15.1.0 %%For: (Ismo Vuorinen) () %%Title: (Screen Shot 2012-09-26 at 23.13.21.png) %%CreationDate: 26.9.2012 23.20 %%Canvassize: 16383 %%BoundingBox: 263 469 814 1020 %%HiResBoundingBox: 263.585 469.0947 813.585 1019.0947 %%DocumentProcessColors: Cyan Yellow %AI5_FileFormat 11.0 %AI12_BuildNumber: 39 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 263.585 469.0947 813.585 1019.0947 %AI3_TemplateBox: 538.5 744.5 538.5 744.5 %AI3_TileBox: 259.085 364.0947 818.085 1147.0947 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 1 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI9_OpenToView: -178 1226 1 1385 720 26 0 0 43 134 0 0 0 1 1 0 1 1 0 1 %AI5_OpenViewLayers: 7 %%PageOrigin:0 0 %AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 18 0 obj <>stream +%%BoundingBox: 263 469 814 1020 %%HiResBoundingBox: 263.585 469.0947 813.585 1019.0947 %AI7_Thumbnail: 128 128 8 %%BeginData: 25016 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C455E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E58335E575E335E575E335E575E335E575E335E57 %5E335E575E335E575E335E575E335E575E335E575E335E575E335E575E33 %5E575E335E575E335E575E335E575E335E575E335E575E335E575E335E57 %5E335E575E335E575E335E575E335E575E335E575E335E575E335E575E33 %5E575E335E575E335E575E335E575E335E575E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E335E33 %5E335E335E335E335E335E335E335E335E335E335E335E335E335E335E33 %5E335E335E335E335E335E335E335E335E335E335E335E335E335E335E33 %5E335E335E335E335E335E335E335E335E335E335E335E335E335E335E33 %5E335E335E335E335E335E335E335E335E335E335E335E335E335E335E33 %5E335E335E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E575E335E575E335E575E335E575E335E57 %5E335E575E335E575E335E575E335E575E335E575E335E575E335E575E33 %5E575E335E575E335E575E335E575E335E575E335E575E335E575E335E57 %5E335E575E335E575E335E575E335E575E335E575E335E575E335E575E33 %5E575E335E575E335E575E335E575E335E575E33FD045E585E5E5E585E5E %5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E58 %5E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E %5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E58 %5E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E58335E %335E335E335E335E335E335E335E335E335E335E335E335E335E335E335E %335E335E335E335E335E335E335E335E335E335E335E335E335E335E335E %335E335E335E335E335E335E335E335E335E335E335E335E335E335E335E %335E335E335E335E335E335E335E335E335E335E335E335E335E335E335E %335E335E33FD045E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E58335E575E335E575E335E575E335E575E33 %5E575E335E575E335E575E335E575E335E575E335E575E335E575E335E57 %5E335E575E335E575E335E575E335E575E335E575E335E575E335E575E33 %5E575E335E575E335E575E335E575E335E575E335E575E335E575E335E57 %5E335E575E335E575E335E575E335E575E335E575E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E33 %5E335E335E335E335E335E335E335E335E335E335E335E335E335E335E33 %5E335E335E335E335E335E335E335E335E335E335E335E335E335E335E33 %5E335E335E335E335E335E335E335E335E335E335E335E335E335E335E33 %5E335E335E335E335E335E335E335E335E335E335E335E335E335E335E33 %5E335E335E335E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E575E335E575E335E575E335E575E33 %5E575E335E575E335E575E335E575E335E575E335E575E335E575E335E57 %5E335E575E335E575E335E575E335E575E335E575E335E575E335E575E33 %5E575E335E575E335E575E335E575E335E575E335E575E335E575E335E57 %5E335E575E335E575E335E575E335E575E335E575E33FD045E585E5E5E58 %5E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E %5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E58 %5E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E %5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E58 %335E335E335E335E335E335E335E335E335E335E335E335E335E335E335E %335E335E335E335E335E335E335E335E335E335E335E335E335E335E335E %335E335E335E335E335E335E335E335E335E335E335E335E335E335E335E %335E335E335E335E335E335E335E335E335E335E335E335E335E335E335E %335E335E335E33FD045E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E58335E575E335E575E335E575E335E57 %5E335E575E335E575E335E575E335E575E335E575E335E575E335E575E33 %5E575E335E575E335E575E335E575E335E575E335E575E335E575E335E57 %5E335E575E335E575E335E575E335E575E335E575E335E575E335E575E33 %5E575E335E575E335E575E335E575E335E575E335E575E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E335E335E335E335E335E335E335E335E335E335E335E335E335E335E33 %5E335E335E335E335E335E335E335E335E335E335E335E335E335E335E33 %5E335E335E335E335E335E335E335E335E335E335E335E335E335E335E33 %5E335E335E335E335E335E335E335E335E335E335E335E335E335E335E33 %5E335E335E335E335E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E335E5E5E335E335E335E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E335E335E %585E5E5E575E335E575E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E575E335E575E335E575E335E57 %5E335E575E335E575E335E575E335E575E335E575E335E335E58FD0483AE %83AE83AE8383585E335E335E575E335E575E335E575E335E575E335E335E %335E588383AEA8AEA8FFA8AE83AE835E335E335E335E575E335E575E335E %575E335E575E335E575E335E575E335E575E335E575E33FD045E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E335E5EAE %AEFD0DFFAEAE835E335E5E5E585E5E5E585E5E5E585E5E5E335E5E83A8FD %0FFF83835E5E335E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E58335E335E335E335E335E335E335E335E335E335E33 %5E335E335E335E335E335D5783A8FD13FFAEA8585E335E335E335E335E33 %5E335E335E83FD15FF835E335E335E335E335E335E335E335E335E335E33 %5E335E335E335E335E335E33FD045E585E5E5E585E5E5E585E5E5E585E5E %5E585E5E5E585E5E5E585E335E83FD19FFAE83335E5E5E585E5E5E585E5E %AEFD18FFAEAE5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E58335E575E335E575E335E575E335E575E335E575E335E57 %5E335E575E3383AEFD1CFF83335E575E335E335E83FD1DFF5E5E335E575E %335E575E335E575E335E575E335E575E335E575E335E575E5E585E5E5E58 %5E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5EAEFD1FFFAE575E5E %5E335EAEFD1FFFA85E335E5E5E585E5E5E585E5E5E585E5E5E585E5E5E58 %5E5E5E585E5E335E335E335E335E335E335E335E335E335E335E335E335E %335D58FD22FFAE335E335EA8FD21FFA85E335E335E335E335E335E335E33 %5E335E335E335E335E335E335E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E83FD25FF5E83FD25FF83335E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E575E335E575E335E575E335E575E335E57 %5E335E575E335E83FD4EFF83335E335E575E335E575E335E575E335E575E %335E575E33FD045E585E5E5E585E5E5E585E5E5E585E5E5E58FD045EFD50 %FF83335E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E58335E335E33 %5E335E335E335E335E335E335E335E335E58FD51FFA85E335E335E335E33 %5E335E335E335E335E335E335E33FD045E585E5E5E585E5E5E585E5E5E58 %5E5E5E585E5EFD53FFAE5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E %5E58335E575E335E575E335E575E335E575E335E575E3383FD54FF835E33 %5E575E335E575E335E575E335E575E335E575E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E585EFD56FF5E5E585E5E5E585E5E5E585E5E5E585E5E %5E585E5E335E335E335E335E335E335E335E335E335E335E83FD56FFAE33 %5E335E335E335E335E335E335E335E335E335E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5EFD58FF83335E5E5E585E5E5E585E5E5E585E5E5E58 %5E5E575E335E575E335E575E335E575E335E575E33AEFD58FFA85E335E57 %5E335E575E335E575E335E575E33FD045E585E5E5E585E5E5E585E5E5E58 %5E5E5EFD5AFF5E5E585E5E5E585E5E5E585E5E5E585E5E5E58335E335E33 %5E335E335E335E335E335E335E83FD5AFF83335E335E335E335E335E335E %335E335E33FD045E585E5E5E585E5E5E585E5E5E585E5EAEFD5AFFAE5E58 %5E5E5E585E5E5E585E5E5E585E5E5E58335E575E335E575E335E575E335E %575E335EAEFD5BFF585E335E575E335E575E335E575E335E575E5E585E5E %5E585E5E5E585E5E5E58FD045EFD5CFF83335E585E5E5E585E5E5E585E5E %5E585E5E335E335E335E335E335E335E335E335E3383FD5CFF835E335E33 %5E335E335E335E335E335E335E5E585E5E5E585E5E5E585E5E5E585E5E5E %83FD5CFFAE575E585E5E5E585E5E5E585E5E5E585E5E575E335E575E335E %575E335E575E335E33AEFD5CFFA85E335E335E575E335E575E335E575E33 %FD045E585E5E5E585E5E5E585E5E5E575EAEFD5CFFCF575E5E5E585E5E5E %585E5E5E585E5E5E58335E335E335E335E335E335E335E335E33FD5DFFA8 %5E335E335E335E335E335E335E335E33FD045E585E5E5E585E5E5E585E5E %5E585EAEFD5DFF585E5E5E585E5E5E585E5E5E585E5E5E58335E575E335E %575E335E575E335E575E33FD5DFFA85E335E575E335E575E335E575E335E %575E5E585E5E5E585E5E5E585E5E5E585E5E5EA8FD5DFF5E5E585E5E5E58 %5E5E5E585E5E5E585E5E335E335E335E335E335E335E335E335E33AEFD5C %FF835E335E335E335E335E335E335E335E335E5E585E5E5E585E5E5E585E %5E5E585E5E5EA7FD5CFFAE335E585E5E5E585E5E5E585E5E5E585E5E575E %335E575E335E575E335E575E335E3383FD5CFF835E575E335E575E335E57 %5E335E575E33FD045E585E5E5E585E5E5E585E5E5E585E83FD5CFF83335E %5E5E585E5E5E585E5E5E585E5E5E58335E335E335E335E335E335E335E33 %5E335EAEFD5BFF575E335E335E335E335E335E335E335E33FD045E585E5E %5E585E5E5E585E5E5E585E5EAEFD5AFFA85E585E5E5E585E5E5E585E5E5E %585E5E5E58335E575E335E575E335E575E335E575E335E83FD5AFF83335E %335E575E335E575E335E575E335E575E5E585E5E5E585E5E5E585E5E5E58 %5E5E5E335EFD5AFF585E5E5E585E5E5E585E5E5E585E5E5E585E5E335E33 %5E335E335E335E335E335E335E335E33AEFD58FF835E335E335E335E335E %335E335E335E335E335E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E %FD58FF83335E5E5E585E5E5E585E5E5E585E5E5E585E5E575E335E575E33 %5E575E335E575E335E575E335E83FD56FFAE335E335E575E335E575E335E %575E335E575E33FD045E585E5E5E585E5E5E585E5E5E585E5E5E3382FD56 %FFFD045E585E5E5E585E5E5E585E5E5E585E5E5E58335E335E335E335E33 %5E335E335E335E335E335E3383FD54FF835D335E335E335E335E335E335E %335E335E335E33FD045E585E5E5E585E5E5E585E5E5E585E5E5E585E5ECF %FD52FFAE5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E58335E575E %335E575E335E575E335E575E335E575E335E58FD51FFAE5E335E335E575E %335E575E335E575E335E575E335E575E5E585E5E5E585E5E5E585E5E5E58 %5E5E5E585E5E5E585E82FD50FF83335E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E335E335E335E335E335E335E335E335E335E335E335E33 %5E83FD4EFF83335E335E335E335E335E335E335E335E335E335E335E335E %5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E83FD4CFFAE %335E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E575E335E57 %5E335E575E335E575E335E575E335E575E335E335E83FD4AFFA8335E575E %335E575E335E575E335E575E335E575E335E575E33FD045E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E83FD48FFAE335E585E5E5E58 %5E5E5E585E5E5E585E5E5E585E5E5E585E5E5E58335E335E335E335E335E %335E335E335E335E335E335E335E335E335E83FD46FFA8335E335E335E33 %5E335E335E335E335E335E335E335E335E335E33FD045E585E5E5E585E5E %5E585E5E5E585E5E5E585E5E5E585E5E5E585EA8FD44FFAE335E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E58335E575E335E57 %5E335E575E335E575E335E575E335E575E335E575E335E83FD42FFAE335E %335E575E335E575E335E575E335E575E335E575E335E575E335E575E5E58 %5E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E335E83 %FD40FFAE335E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E335E335E335E335E335E335E335E335E335E335E335E335E33 %5E335E335E335E83FD3EFFAE335E335E335E335E335E335E335E335E335E %335E335E335E335E335E335E335E5E585E5E5E585E5E5E585E5E5E585E5E %5E585E5E5E585E5E5E585E5E5E585E5E5E83FD3CFFAE5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E575E335E57 %5E335E575E335E575E335E575E335E575E335E575E335E575E335E335E83 %FD3AFFAE335E575E335E575E335E575E335E575E335E575E335E575E335E %575E335E575E33FD045E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E83FD38FFAE585E585E5E5E585E5E5E585E5E %5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E58335E335E335E335E %335E335E335E335E335E335E335E335E335E335E335E335E335E335E83FD %36FFA8335E335E335E335E335E335E335E335E335E335E335E335E335E33 %5E335E335E335E33FD045E585E5E5E585E5E5E585E5E5E585E5E5E585E5E %5E585E5E5E585E5E5E585E5E5E585EA8FD34FFAE335E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E58335E57 %5E335E575E335E575E335E575E335E575E335E575E335E575E335E575E33 %5E575E335E83FD32FFAE335E335E575E335E575E335E575E335E575E335E %575E335E575E335E575E335E575E335E575E5E585E5E5E585E5E5E585E5E %5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E335E83FD30 %FFAE335E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E335E335E335E335E335E335E335E335E335E33 %5E335E335E335E335E335E335E335E335E335E335E83FD2EFFAE335E335E %335E335E335E335E335E335E335E335E335E335E335E335E335E335E335E %335E335E335E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E %5E585E5E5E585E5E5E585E5E5E585E5E5E83FD2CFFAE575E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E575E335E575E335E575E335E575E335E575E335E575E335E575E33 %5E575E335E575E335E575E335E335E83FD2AFFA8335E575E335E575E335E %575E335E575E335E575E335E575E335E575E335E575E335E575E335E575E %33FD045E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E83FD28FFAE335E585E5E5E585E5E5E58 %5E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E %5E58335E335E335E335E335E335E335E335E335E335E335E335E335E335E %335E335E335E335E335E335E335E335D83FD26FF83335E335E335E335E33 %5E335E335E335E335E335E335E335E335E335E335E335E335E335E335E33 %5E335E33FD045E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E %5E585E5E5E585E5E5E585E5E5E585E5E5E585E83FD24FFAE335E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E58335E575E335E575E335E575E335E575E335E575E33 %5E575E335E575E335E575E335E575E335E575E335E575E335E83FD22FF83 %335E335E575E335E575E335E575E335E575E335E575E335E575E335E575E %335E575E335E575E335E575E335E575E5E585E5E5E585E5E5E585E5E5E58 %5E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E %5E575E83FD20FF89335E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E335E335E33 %5E335E335E335E335E335E335E335E335E335E335E335E335E335E335E33 %5E335E335E335E335E335E335E82FD1EFF83335E335E335E335E335E335E %335E335E335E335E335E335E335E335E335E335E335E335E335E335E335E %335E335E335E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E %5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E83FD1CFF89 %335E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E575E335E575E335E575E33 %5E575E335E575E335E575E335E575E335E575E335E575E335E575E335E57 %5E335E575E335E335E5EFD1AFF83335E575E335E575E335E575E335E575E %335E575E335E575E335E575E335E575E335E575E335E575E335E575E335E %575E33FD045E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E83FD18FF8333 %5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E58 %5E5E5E585E5E5E585E5E5E585E5E5E585E5E5E58335E335E335E335E335E %335E335E335E335E335E335E335E335E335E335E335E335E335E335E335E %335E335E335E335E335E335D5EFD16FF83335E335E335E335E335E335E33 %5E335E335E335E335E335E335E335E335E335E335E335E335E335E335E33 %5E335E335E335E33FD045E585E5E5E585E5E5E585E5E5E585E5E5E585E5E %5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E58 %5E83FD14FF83335E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E5833 %5E575E335E575E335E575E335E575E335E575E335E575E335E575E335E57 %5E335E575E335E575E335E575E335E575E335E575E335E83FD12FF83335E %335E575E335E575E335E575E335E575E335E575E335E575E335E575E335E %575E335E575E335E575E335E575E335E575E335E575E5E585E5E5E585E5E %5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E58 %5E5E5E585E5E5E585E5E5E585E5E5E575E5EFD10FF83335E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E335E335E335E335E335E335E33 %5E335E335E335E335E335E335E335E335E335E335E335E335E335E335E33 %5E335E335E335E335E335E335E5EFD0EFF83335E335E335E335E335E335E %335E335E335E335E335E335E335E335E335E335E335E335E335E335E335E %335E335E335E335E335E335E335E5E585E5E5E585E5E5E585E5E5E585E5E %5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E58 %5E5E5E585E5E5E585E5E5E82FD0CFF89335E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E575E335E575E335E575E335E575E335E57 %5E335E575E335E575E335E575E335E575E335E575E335E575E335E575E33 %5E575E335E575E335E335E83FD0AFF83335E575E335E575E335E575E335E %575E335E575E335E575E335E575E335E575E335E575E335E575E335E575E %335E575E335E575E335E575E33FD045E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E83FD08FFAE335E585E5E5E585E5E5E585E5E %5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E58 %5E5E5E585E5E5E585E5E5E585E5E5E58335E335E335E335E335E335E335E %335E335E335E335E335E335E335E335E335E335E335E335E335E335E335E %335E335E335E335E335E335E335E335E83FD06FFA8335E335E335E335E33 %5E335E335E335E335E335E335E335E335E335E335E335E335E335E335E33 %5E335E335E335E335E335E335E335E335E335E33FD045E585E5E5E585E5E %5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E58 %5E5E5E585E5E5E585E5E5E585E5E5E585E5E5E575EA8FD04FFAE335E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E58335E57 %5E335E575E335E575E335E575E335E575E335E575E335E575E335E575E33 %5E575E335E575E335E575E335E575E335E575E335E575E335E575E335EA8 %FFFFAE335E335E575E335E575E335E575E335E575E335E575E335E575E33 %5E575E335E575E335E575E335E575E335E575E335E575E335E575E335E57 %5E335E575E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E335EA8AE335E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E335E335E335E335E335E335E335E335E33 %5E335E335E335E335E335E335E335E335E335E335E335E335E335E335E33 %5E335E335E335E335E335E335E335E335E335E335E335E335E335E335E33 %5E335E335E335E335E335E335E335E335E335E335E335E335E335E335E33 %5E335E335E335E335E335E335E335E335E335E335E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E57 %5E335E575E335E575E335E575E335E575E335E575E335E575E335E575E33 %5E575E335E575E335E575E335E575E335E575E335E575E335E575E335E57 %5E335E575E335E575E335E575E335E575E335E575E335E575E335E575E33 %5E575E335E575E335E575E335E575E335E575E335E575E335E575E335E57 %5E335E575E33FD045E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E58 %5E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E %5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E58 %5E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E %5E585E5E5E585E5E5E585E5E5E58335E335E335E335E335E335E335E335E %335E335E335E335E335E335E335E335E335E335E335E335E335E335E335E %335E335E335E335E335E335E335E335E335E335E335E335E335E335E335E %335E335E335E335E335E335E335E335E335E335E335E335E335E335E335E %335E335E335E335E335E335E335E335E335E335E33FD045E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E5833 %5E575E335E575E335E575E335E575E335E575E335E575E335E575E335E57 %5E335E575E335E575E335E575E335E575E335E575E335E575E335E575E33 %5E575E335E575E335E575E335E575E335E575E335E575E335E575E335E57 %5E335E575E335E575E335E575E335E575E335E575E335E575E335E575E33 %5E575E335E575E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E335E335E335E335E335E335E335E33 %5E335E335E335E335E335E335E335E335E335E335E335E335E335E335E33 %5E335E335E335E335E335E335E335E335E335E335E335E335E335E335E33 %5E335E335E335E335E335E335E335E335E335E335E335E335E335E335E33 %5E335E335E335E335E335E335E335E335E335E335E335E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E575E335E575E335E575E335E575E335E575E335E575E335E575E335E57 %5E335E575E335E575E335E575E335E575E335E575E335E575E335E575E33 %5E575E335E575E335E575E335E575E335E575E335E575E335E575E335E57 %5E335E575E335E575E335E575E335E575E335E575E335E575E335E575E33 %5E575E335E575E33FD045E585E5E5E585E5E5E585E5E5E585E5E5E585E5E %5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E58 %5E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E %5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E58 %5E5E5E585E5E5E585E5E5E585E5E5E58335E335E335E335E335E335E335E %335E335E335E335E335E335E335E335E335E335E335E335E335E335E335E %335E335E335E335E335E335E335E335E335E335E335E335E335E335E335E %335E335E335E335E335E335E335E335E335E335E335E335E335E335E335E %335E335E335E335E335E335E335E335E335E335E335E33FD045E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %58335E575E335E575E335E575E335E575E335E575E335E575E335E575E33 %5E575E335E575E335E575E335E575E335E575E335E575E335E575E335E57 %5E335E575E335E575E335E575E335E575E335E575E335E575E335E575E33 %5E575E335E575E335E575E335E575E335E575E335E575E335E575E335E57 %5E335E575E335E575E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E335E335E335E335E335E335E33 %5E335E335E335E335E335E335E335E335E335E335E335E335E335E335E33 %5E335E335E335E335E335E335E335E335E335E335E335E335E335E335E33 %5E335E335E335E335E335E335E335E335E335E335E335E335E335E335E33 %5E335E335E335E335E335E335E335E335E335E335E335E335E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E %5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E %585E5E575E335E575E335E575E335E575E335E575E335E575E335E575E33 %5E575E335E575E335E575E335E575E335E575E335E575E335E575E335E57 %5E335E575E335E575E335E575E335E575E335E575E335E575E335E575E33 %5E575E335E575E335E575E335E575E335E575E335E575E335E575E335E57 %5E335E575E335E575E33FD045E585E5E5E585E5E5E585E5E5E585E5E5E58 %5E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E %5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E58 %5E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E5E585E5E %5E585E5E5E585E5E5E585E5E5E585E5E5E58335E335E335E335E335E335E %335E335E335E335E335E335E335E335E335E335E335E335E335E335E335E %335E335E335E335E335E335E335E335E335E335E335E335E335E335E335E %335E335E335E335E335E335E335E335E335E335E335E335E335E335E335E %335E335E335E335E335E335E335E335E335E335E335E335E335E %%EndData endstream endobj 19 0 obj <>stream +%AI12_CompressedDatax}z:}HH $$!!#1$޽ΏW'X s_&JT +Bҕ}PIDShe(|s) +َڰ%ɳd8 +~&b"8G|$w=Yۯϳgsq>_ 1gD ,|1؎J/q6x˥'q0,N?tΟ~E7ڈIeS!Zy|V?xޔ'=i6+MFyc4M:H(B +).+9T>g'= g:?ɭ4p7"I[y2nf;g:8FH Y&$_LOAZ +tzI,zq ֵ7鯁w9K + +VYde77$ߏs0>)Ⱥ}_G远N?9Xh1GT h$p5wcdsTg2QIwo|*Gw5΅}.ћl9ZW5y?&!hdɯ?#ǯ+/i4bOq Sd~K9C}`] clı(s}_pd xF))5ph$οő4?Wwۃ'b忛LFzWzcwhWcAːVH렀d忹8 >eq5yCRy!??h01 {7nҏSoq"b"h'?SZFJW;Luyl<|s(/F̗8O?y_Qq1FKG|ք_XLfqTd3&ͤrY!N&Ψ_ >M‚??ooM/ϯo|/}?Mݘ+66 ٥U5BnoIej@dMMg)dT +ތ~d +.|sKk\6/f@稧fQ6p/ Ws a*ı+a7G} :<$tUJ.B7 2נ*K?[}- ۹ s??1hF:G AΟ80MDAEHs( ?}M c2Lc6d5Yts8z[K~&Bf RO16fv9,/znzg9hqE*sz↫KY,hJ}'c禍߼Y(d5 8 z_?4BIȭy_]IXFGR +g{yB\'{]3cF&t's6v3 K$,H I : 0̍b:7VŞTT\*mƒ5 `v.ϲIC9+pi&Ǧhs2ϡt$Fxe]F":L8̾*g}5{`Jt*%f~))MgT|p9v@=I]!Ѷ,dְ "Hfkʃ\$7RB;X#vwB3tجȁq_Ou \gVMR>[bpmiK@yNj:\"˵ À!;ꇅS$A ꁑ!Ҩp{0$e}i$%% sYł8ME?g଄mЕSF?0:%GefGMž* #LOcK5Pe4eTJ2b:{Vb>]I~#Gkͅ4r5?(x'Աp< '`pJ/`|]L Հ,76`WAewv]6BT g %%`.*Ud\NuU!CgluvBN hh$Uס)լۃakB9W%'j +Z&yԑTّiu1iDmffgp۔5E@A)O>#\cFe+-9PSg/0%Pyh0s@t-gsy2Ҹ7L{l 勩m&I[?0!Ye6 fCSEplޛ},CtT&gˈ@]ׂ#5%-jU/ؿOE80N7㉱\8qd-' C{ed 9`Cټ-g | OVtTO;qi=m=m䲶׺FIFS!vmq˖4E9)i ul>bJ7چv3=fGcAMԝ+v}:fd谍 +]՝rfmd<~eI0;Շ|Lƹlϲs[A95#Y1/YFn#͡ SqliQ+d;ˊ4|1ӍwA]ةGYw0T{~5^2L ܏-z1X9[%m-`M) Tۆ@L|MRɝj:ohAdOmג*jm5&֗k8MG?d鍭\k9ж10?N#qا?CFÈG' [`/ +6670y+){HGޞÎ@ +sO`=Yc&P-ҥ}(Vݘ0h<ǦVvָLJ@mŻL*OzE@yY`2/\zMȳ I@H'w4|HkiEKh)[[f9hhrk+3%AF@ L61+97zȥnB.XvcS4ܞ<    cfJA[=nnsPyR4&~_%|z{t2<&_".P0=VH`ꔽC3 "P{q<6j6p14qCp2rra-{?d45T +ZC̫&RA@siԔiᒗkw}зΖ5<n0`ׯ Kg_3q_fg𱚈Y7~;3Y'c? t)01vѓl#<+ѠJ/8qRF7 +1m `_01qF%v@=y0]٪!+`T}r')It 5;%DP9 ,M}dޜ:>B/+| ,0,;{\K9Uee>S!{=|w;}Q; +3,+ΕI8d;!F؅yQPc8s;,0bU%?0lQuPȱ?1??SGWq8U^PTp4N:4'/q ;>hI[ 4%|TN4SJ^l@:7J;|[?*$,tť5hAE*$N +o%-"cRW!-.w"lZ>5(@0XbOw,FA0XA%qć C+>07SgH`7PmCݒi\>bBP.;?fltzM%^GLME,z5/>yp/b_8ڰus(?#-=I"B0OB |b_ D@] M>TN\y:b˳([?x`d"<]p + +E651er Zox6 D{-U>b~* Gȼ8SSKn"KM(W6& )e~(X4bl?ު?k#X֦ј%l"y 2Na!L\&N]Djc!vL&vn-@dk߽)k -$o'{V p(_z>%@[[˔(&j1}e 4XnPѫ +ڕ6sM>ZM~i/u&'KkW6wwPE]UAn%P@݊yUr FI)3q{/dkM_[$=-˵^V~Ӌ /dmMU1?&#-`ULB_ @[T6uLa;( }Ӑm֮-LwF]˰j4/4= ؽ;?NL@*x2La >uipm<@FR:g~1&mwa\xkT[wS(X3ۋ; hmo9{]op8VXLI@/؇q}8%)vFk @_ +h,xy?C1[;D8IzWeҘus,_ƷT]!b4^EPy +@^^%-: U'l4cL:Y>/S3a+54 +/㚤)ͭTq3vQ+ ҹJ3Xu,`W_(\5c2T7fQp5A⍭7K[~.N@LNF9JI2 -.*WX~:d'.3cqs$-ylޗ؋Cuސvpnyk01 |̰w'a{eX_~S}Pykh6؇\AK!])nO[Wogyk`%þ~_ط};9ێ 읧0{/o[\qJz{˝_ψM!? |ݏp;oSo c؍!* ,pݴgS?9RZ9?goak ߻Q->ю]8]*pLʋTT8C\PIb[gqY~0[-^TLGgSFPa](tlEv l;~6Vbp؍c'41k96㚱sua4:L&dj?a + @b|5I@9l@Y>:Ӂ +&z׀F&8/dCXrx||FVքDr@\L`%2u #DBP#z[ +R<r>Uɗ]HSiiȴu `>ToHSYcǟp{.󬮋S)ޣc ;jL.{3&, +r>m1>2Xu6ϝ.JG?묦a cC>b;ίccK&x/&rP2?@&!*14W +!v~̀1?$+fs@6t ,^,OE^uO~#İt{HݞkSg2Jd2e\xr`ލLw>kwu]ܑef=d<Ʀ&Aըi԰.!XOdQ%iW>9]mpWyiYv%θwbL;oPLL4Ԕ&s4Lq\kB$qdjG=UXi6|pv,d>k;]1P&!Ki0i~PiGdž;#vF +}M]ݮ3`ێŖΏJa ;錕]Wh];v: <"[L[f(n\u qۣB˶a^D͏f2DG܈ohP;pB00q mSa\e|nfߧ y~\<#MSlrs~3sn]f_[: 69xj/Db!q! M2opFb-sf#ջ$lA/[vb1˄)7GKJ<_~ Ҙk?4<ĹO>G D5*Zl,XHH=:$ PUͳg h&^Ϟ)5v`\ td}lE`f_{:[4Z5sPøCT퉽eϺ!J/AxmVY;[WmBӻ o-jbAaӸXk?lB!G-849vkSbbb#R AkGѐux,{?Q:Bޥ,̇aUB` y.SF dsg!IoXXQ]x<>q #tJC[#KF +3 +.?쑡JtO9Q XR) /9kE$K1W}"uްs#rK5-}B=S.lA׼:w&ȫuܸ(F a5S2iZBܵgdb"V·3bZFܦֽ.΍6ܤg͈ޏs>}:pem:FЍ9DCiJF6pCpJ 5#np, 9bcZkz(\bɩc"AWnI :7o)Nl,~e)2 /l<Y;nBLVb4"wSE<EhϺ +/%g*q}qKa5Ǯۭ)ɻ֝LjɻdmdZ v mXk#۰E۴a֭+nC:Uy6 bx1-6Ɍԇdn # 7 +HF*gT&2Ra5Ж>b R+ ;~-`pkGإR&dd.bav)٭`q,fx9-ݾ2쒑d8(*MBiQ 7d@ ց +ygW"j'7PK8Xja;y؛R>Y Ps=:9.4L$wyExJߓsʰ VOw, +kGLEՖd% ^(z!~71m낯ca@u.i͝kգRjRjJt<{MuNlj&\S{\k,~֫$giJrvKGkɆ4Rfr^8EsVlf~vwJSg. HP y Ʋ ~l:;; V6].0^|Цr~l66MGZo4. !ttn1ɦ;?{]'μJ.ddl:MgӑsF6MGy՚tXཞKg{*V60򙜄ȦvZl:\:9kf٭~'ƲROx7MgKg3f6ݪM炱 eyE6].!jl:;Ӛ[~61MD6i +7Mg`z]1n'#+g+8ȗJ":V̦ÐLU&ADRJ4~~.N bOhq'Wna.6QEP#juv\+bD:ղ̅VY3ŤxJ̝cv;p+tGH۳*sgq ѧ)y(X֣h-t1WiMvVrž=W̳on.syΝc1HHD:Cp.sNF#qft.mtAd7*J&V2Dˆ23 :t]ԉ]`Igh(o& +Mc4P8 +AVէNj#Fv~VځK=Sh:| Evkb^J\ϒ%6rD7la1BzNGK@[[n):Wɤq"GVLdU0$2[O;91:a饟o PYZ~8 yU&a^{-oC&a +l+[koCխvpG[|q1PnJy݆ +wSU;&֮TVډ]f.r}b-k*G"5Qn_+79 +^b-k;K~Rp U<\1-{gfײ =&1IQ٧19%u;>ZtE.h5w%lH+)vߌ]ّ x]II0Z +`PiL^îrjn6.HVZbqv+TKX8ṷaJLBjRVkw諀ΒPE{Cr:ؽG-\~ԒZiy"Pc/ @[7?P_!0X%@k|+kK*v@}!%5~gZU)Gԅ?4?cZ~*+S_*ݩbȼ,JYT2YD邎"lRm΃)BPV|b2PΤU1m AUtwMejOsٵ '/U.Yi{D[V)BrO/=y"ƤfqgݹD< |P^rlٴ Uڄ)Qq2ar=l1{a{WUԣth*Qb˅t9bnVK1J?fvi9Xݜ4 A//0fu+,5YOUfֲ2V#AQnqnS%'!,ȏur.2-m{(q\SZrxzMrhOZfiH=ì욨CM 2E4Έz}1/yxxئO.WCBRw,@Z\+kyWsmnh9Rc m& olr]?SRU5n2sm{6&9WV\[=U{V#깮9L~* +[cz +T5uպ~4Pos51#c]?Rvf̅y$~{~:V[[<{qO4-GTѶu[}}V>.zu+hh;D]?~A[ot uu^mio7,s-G0+sJxUْ^oݬ4:5;\e֯U]*gͲT[mC̕M]U՜ĵRU?eud6~ +[s`7PlW1'~~K3ƬuV+=#@߆KU,ͯ\Ϲ/Dl+&J9WsbaŵìP׏:֥MuZŃ4_3pPRćUu>v3xoN[D=M->,8͒M1&@qI'AԑJ|t38I +\= +QOU5E9z#(V +0߅o.z 'l`+<[=._ l:g^/Bȱw{?`[|ĶCfbblFB{}_˲\Iȳɾ-_H^tnf7s۹WI3j7by[;\25Nw|%i- J=]ݖisbCuAL'm$VR#/ZP0V':[D/QcK3MFaϋlw֮.f[o.\ ~+3vJN5[ie:be˼}L%?!}td"@<ۂv9"''Y ziq ^E3*M+3(^J1yuN-N_d)<ZȬg s?s 3 'da׷GxQ_QA>?I 7&RlgҘ^ae" 4!KګRx н> ڋ+N,4b= @OqصRhC2߱= ^:^7Q~|#d\E˱Тr(0vC(zۙ* ?`oO]s[}z!Ga1|$+pPt|dB7Wh>amZƒY[|^=@x8GXL͛R)Y]l|SyqJ]u5ǙF +U<H("zFк0&W涤f͋\N˭Kg~gRΗi(݀]qm5:o׳(LRnwf1r j7$ 4Dpz{$_} rȗKp'D|3U#{<٥zI]P4ޚU]Aޗr0W~Ө.j i@JvM^KP]H&%Rf|a+w60\0z ,yG! ُzCE P +Vq- p/>?ڱXϷ/ZpX+ v(GRt/>rޗ{2zqlu*lGBuRU[ݑOZߓI]~vbA !]ݠ8 ~h\2mvF]o[l}ϗ{Wֈ;8qhYS Иԅ(,qfHB5#mCPOd<˷ +_?UXE~˿?5GQ<' dūxPkoz[g3R8\;SLW+m&Y 9Otm$!9UC"C8YٌhlU6cfs1jQ4F+)EBbmF~w09-7vjm󨭡}_A1qrӁSur@^*F| Rк;24nh ij@d0: +/kʍtxv+.Иkr<.^5O^Tp.>j'UFk +eYV&-u~x +.PyO_}QQO[˱pƭ^gdSfnK@%b0ΊFDB)1퉴Dl7%6#DNu aqK<6Y$O_ 57OH~cl3igB:t={CcJ K@@?;DPdWG6kU`KA/2檅l\@x@+{ex2M7΂U=yD$?*_6!ٌB]^}o z/Ʈ;-@wz*r?B׊ ) Co:ƸZ4扛nͅk-U,7]vGRaCPrlʞzחq4uVMPO_|M+kjke[E|WwǙGZןG?n 7mwS9??VsdDgK)h_h粎HgCAy%W'ѧV:N[ٔ}|2c6V zLs +˹]i^ʼJ$jFXWt|XkJLfpwFЯj'~+͊ě*Yղpjg8ګF7^~^YXj4f8ARn4y8[WHV1 NJ(F \7.%Y#M'ʝԤBςBP?ijj(]D0AT,DKu#-cY0xt\~p̓*b`*anj . S a[e?.?s*Ǹg`Zuց/3-37b#кMfk{^ .`,cRGɊ&w'b} Eϯ`xř9Zt"`mWFŖclc9jiL, VGっWʌ*((nu(X<_!x~4 Q ϲՐ $ +=o +ť3%HƐp\wr(;ZGY +HP +~QA v`((Jmt "a );oY EbG8H Z88Ec̺H`riDt2Rmh tHZiw<cź&tldO`| U1!\j񕹃a#QO]qsUb &F:Hok,K-~S)Û1+1ˠw`%h4AC 1X1fK"^ڡazr;>!HzUR ~-$2sDŽH\G*_03kRϑWb\< ױLI ,jCX1 [@MعjX{;~L*ĕ$fD /xH%#O5'G)j"N$:bķޕO-)h/X)_\_90Cb/,F|5,5FwG/|!4RʃIG0nЊly'>u-Y!f P*|::+X%ѼJ@_J ݍ7Jl,$.npcEddžAA.x9!?ǻ`.ŭ7񍜖˾ԏs/{zA?&E,{֪']PmNϹdQgK%G1ORDPl@`l>f!w,mFgN$}r2Z}Ġ|eF0ӿM5-j c4b#Wrt/i) 8H}k'Q% ZՐolp tT˵{q9\5B (q]w([`i{؞?oX?u9OVęw1l3U=WK<^1@CC<$VvaT/}eΧAQ{oFz큦 u vƭ*7T^l)J ,QD0藺/jV-^2._1yLC'?] )}.]-E]֔t~#qS9|0žrU~a +_|V,I?G:98n' mv 纄lӋ֯qM]Q:TZN+Qk+ŋbd$7OtXa;<+F3@lWF]ƢuQUUA}5`sGf]1(<0݆1շg4~ + [iNQIq~,/7s|ϧR|¨c_(7LƢǟӲ?Wv@}U=v;>_k[e2dM@l6r觐SI?I8[AWg7xcWݷo||Z`Rx6gɴrGƗ ˰gxɦrI'1 3Y˥t&*JRٴ]ϗߥl<ȁg$ϤrB_%x%d;!4xf. { +GʥVѾKA+@+.'\L&u~=J3)A$Ǥ\! :)&f,hr3g2&L~ǃY0BVcw#qw  3I&I}~r g__'sq.M,YϾ&'9`QWU# endstream endobj 6 0 obj [5 0 R] endobj 20 0 obj <> endobj xref 0 21 0000000000 65535 f +0000000016 00000 n +0000000144 00000 n +0000013790 00000 n +0000000000 00000 f +0000015707 00000 n +0000062594 00000 n +0000013841 00000 n +0000014163 00000 n +0000016006 00000 n +0000015893 00000 n +0000014629 00000 n +0000015146 00000 n +0000015194 00000 n +0000015777 00000 n +0000015808 00000 n +0000016079 00000 n +0000016253 00000 n +0000017301 00000 n +0000042521 00000 n +0000062617 00000 n +trailer <]>> startxref 62788 %%EOF \ No newline at end of file diff --git a/heart.html b/heart.html new file mode 100644 index 0000000..ebea60e --- /dev/null +++ b/heart.html @@ -0,0 +1,26 @@ + + + + + Heart + + + + + +
+ + + +
+ + \ No newline at end of file diff --git a/heart.js b/heart.js new file mode 100644 index 0000000..7cea560 --- /dev/null +++ b/heart.js @@ -0,0 +1,729 @@ +$(document).ready(function() { + + var between = "#af0005"; + + // Let's apply between color to background and svg fill + $('body, div#heart').css('backgroundColor', between); + $('svg#heartclip path').attr('fill', between); + + heart_start(between); +}); + +function heart_start (between) { + + var milliseconds = 7000; // milliseconds for change + var bigsize = $(window).height() + 200; // pixels when in full size + var smallsize = 700; // pixels when small + + var bright = "#ff0000"; // Color for bright heart + var dark = "#6a0003"; // Color for dark heart + + heart(milliseconds, bigsize, smallsize, bright, dark, between); +} + +function heart(milliseconds, bigsize, smallsize, bright, dark, between) { + + // Center with negative margin + var bigsizemargin = (bigsize-bigsize*2)/2; + var smallsizemargin = (smallsize-smallsize*2)/2; + + // Let's fix background overflowing with few extra pixels + var bigsizeimg = bigsize + 6; + var smallsizeimg = smallsize + 6; + + + // Animate the heart's size + $('#heart svg') + .animate({ + width: bigsizeimg + "px", + height: bigsizeimg + "px" + }, milliseconds) + .animate({ + width: smallsizeimg + "px", + height: smallsizeimg + "px" + }, milliseconds); + + // Animate to container background color and placement + $("#heart") + .animate({ + backgroundColor: bright, + width: bigsize+"px", + height: bigsize+"px", + "margin-left": bigsizemargin+"px", + "margin-top": bigsizemargin+"px" + }, milliseconds) + .animate({ + backgroundColor: dark, + width: smallsize+"px", + height: smallsize+"px", + "margin-left": smallsizemargin+"px", + "margin-top": smallsizemargin+"px" + }, milliseconds, heart_start); + +} + + +/* + * jQuery Color Animations v@VERSION + * http://jquery.org/ + * + * Copyright 2011 John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Date: @DATE + */ + +(function( jQuery, undefined ){ + var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color outlineColor".split(" "), + + // plusequals test for += 100 -= 100 + rplusequals = /^([\-+])=\s*(\d+\.?\d*)/, + // a set of RE's that can match strings and generate color tuples. + stringParsers = [{ + re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, + parse: function( execResult ) { + return [ + execResult[ 1 ], + execResult[ 2 ], + execResult[ 3 ], + execResult[ 4 ] + ]; + } + }, { + re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, + parse: function( execResult ) { + return [ + 2.55 * execResult[1], + 2.55 * execResult[2], + 2.55 * execResult[3], + execResult[ 4 ] + ]; + } + }, { + re: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/, + parse: function( execResult ) { + return [ + parseInt( execResult[ 1 ], 16 ), + parseInt( execResult[ 2 ], 16 ), + parseInt( execResult[ 3 ], 16 ) + ]; + } + }, { + re: /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/, + parse: function( execResult ) { + return [ + parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ), + parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ), + parseInt( execResult[ 3 ] + execResult[ 3 ], 16 ) + ]; + } + }, { + re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, + space: "hsla", + parse: function( execResult ) { + return [ + execResult[1], + execResult[2] / 100, + execResult[3] / 100, + execResult[4] + ]; + } + }], + + // jQuery.Color( ) + color = jQuery.Color = function( color, green, blue, alpha ) { + return new jQuery.Color.fn.parse( color, green, blue, alpha ); + }, + spaces = { + rgba: { + cache: "_rgba", + props: { + red: { + idx: 0, + type: "byte", + empty: true + }, + green: { + idx: 1, + type: "byte", + empty: true + }, + blue: { + idx: 2, + type: "byte", + empty: true + }, + alpha: { + idx: 3, + type: "percent", + def: 1 + } + } + }, + hsla: { + cache: "_hsla", + props: { + hue: { + idx: 0, + type: "degrees", + empty: true + }, + saturation: { + idx: 1, + type: "percent", + empty: true + }, + lightness: { + idx: 2, + type: "percent", + empty: true + } + } + } + }, + propTypes = { + "byte": { + floor: true, + min: 0, + max: 255 + }, + "percent": { + min: 0, + max: 1 + }, + "degrees": { + mod: 360, + floor: true + } + }, + rgbaspace = spaces.rgba.props, + support = color.support = {}, + + // colors = jQuery.Color.names + colors, + + // local aliases of functions called often + each = jQuery.each; + + spaces.hsla.props.alpha = rgbaspace.alpha; + + function clamp( value, prop, alwaysAllowEmpty ) { + var type = propTypes[ prop.type ] || {}, + allowEmpty = prop.empty || alwaysAllowEmpty; + + if ( allowEmpty && value == null ) { + return null; + } + if ( prop.def && value == null ) { + return prop.def; + } + if ( type.floor ) { + value = ~~value; + } else { + value = parseFloat( value ); + } + if ( value == null || isNaN( value ) ) { + return prop.def; + } + if ( type.mod ) { + value = value % type.mod; + // -10 -> 350 + return value < 0 ? type.mod + value : value; + } + + // for now all property types without mod have min and max + return type.min > value ? type.min : type.max < value ? type.max : value; + } + + function stringParse( string ) { + var inst = color(), + rgba = inst._rgba = []; + + string = string.toLowerCase(); + + each( stringParsers, function( i, parser ) { + var match = parser.re.exec( string ), + values = match && parser.parse( match ), + parsed, + spaceName = parser.space || "rgba", + cache = spaces[ spaceName ].cache; + + + if ( values ) { + parsed = inst[ spaceName ]( values ); + + // if this was an rgba parse the assignment might happen twice + // oh well.... + inst[ cache ] = parsed[ cache ]; + rgba = inst._rgba = parsed._rgba; + + // exit each( stringParsers ) here because we matched + return false; + } + }); + + // Found a stringParser that handled it + if ( rgba.length !== 0 ) { + + // if this came from a parsed string, force "transparent" when alpha is 0 + // chrome, (and maybe others) return "transparent" as rgba(0,0,0,0) + if ( Math.max.apply( Math, rgba ) === 0 ) { + jQuery.extend( rgba, colors.transparent ); + } + return inst; + } + + // named colors / default - filter back through parse function + if ( string = colors[ string ] ) { + return string; + } + } + + color.fn = color.prototype = { + constructor: color, + parse: function( red, green, blue, alpha ) { + if ( red === undefined ) { + this._rgba = [ null, null, null, null ]; + return this; + } + if ( red instanceof jQuery || red.nodeType ) { + red = red instanceof jQuery ? red.css( green ) : jQuery( red ).css( green ); + green = undefined; + } + + var inst = this, + type = jQuery.type( red ), + rgba = this._rgba = [], + source; + + // more than 1 argument specified - assume ( red, green, blue, alpha ) + if ( green !== undefined ) { + red = [ red, green, blue, alpha ]; + type = "array"; + } + + if ( type === "string" ) { + return this.parse( stringParse( red ) || colors._default ); + } + + if ( type === "array" ) { + each( rgbaspace, function( key, prop ) { + rgba[ prop.idx ] = clamp( red[ prop.idx ], prop ); + }); + return this; + } + + if ( type === "object" ) { + if ( red instanceof color ) { + each( spaces, function( spaceName, space ) { + if ( red[ space.cache ] ) { + inst[ space.cache ] = red[ space.cache ].slice(); + } + }); + } else { + each( spaces, function( spaceName, space ) { + each( space.props, function( key, prop ) { + var cache = space.cache; + + // if the cache doesn't exist, and we know how to convert + if ( !inst[ cache ] && space.to ) { + + // if the value was null, we don't need to copy it + // if the key was alpha, we don't need to copy it either + if ( red[ key ] == null || key === "alpha") { + return; + } + inst[ cache ] = space.to( inst._rgba ); + } + + // this is the only case where we allow nulls for ALL properties. + // call clamp with alwaysAllowEmpty + inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true ); + }); + }); + } + return this; + } + }, + is: function( compare ) { + var is = color( compare ), + same = true, + myself = this; + + each( spaces, function( _, space ) { + var isCache = is[ space.cache ], + localCache; + if (isCache) { + localCache = myself[ space.cache ] || space.to && space.to( myself._rgba ) || []; + each( space.props, function( _, prop ) { + if ( isCache[ prop.idx ] != null ) { + same = ( isCache[ prop.idx ] == localCache[ prop.idx ] ); + return same; + } + }); + } + return same; + }); + return same; + }, + _space: function() { + var used = [], + inst = this; + each( spaces, function( spaceName, space ) { + if ( inst[ space.cache ] ) { + used.push( spaceName ); + } + }); + return used.pop(); + }, + transition: function( other, distance ) { + var end = color( other ), + spaceName = end._space(), + space = spaces[ spaceName ], + start = this[ space.cache ] || space.to( this._rgba ), + result = start.slice(); + + end = end[ space.cache ]; + each( space.props, function( key, prop ) { + var index = prop.idx, + startValue = start[ index ], + endValue = end[ index ], + type = propTypes[ prop.type ] || {}; + + // if null, don't override start value + if ( endValue === null ) { + return; + } + // if null - use end + if ( startValue === null ) { + result[ index ] = endValue; + } else { + if ( type.mod ) { + if ( endValue - startValue > type.mod / 2 ) { + startValue += type.mod; + } else if ( startValue - endValue > type.mod / 2 ) { + startValue -= type.mod; + } + } + result[ prop.idx ] = clamp( ( endValue - startValue ) * distance + startValue, prop ); + } + }); + return this[ spaceName ]( result ); + }, + blend: function( opaque ) { + // if we are already opaque - return ourself + if ( this._rgba[ 3 ] === 1 ) { + return this; + } + + var rgb = this._rgba.slice(), + a = rgb.pop(), + blend = color( opaque )._rgba; + + return color( jQuery.map( rgb, function( v, i ) { + return ( 1 - a ) * blend[ i ] + a * v; + })); + }, + toRgbaString: function() { + var prefix = "rgba(", + rgba = jQuery.map( this._rgba, function( v, i ) { + return v == null ? ( i > 2 ? 1 : 0 ) : v; + }); + + if ( rgba[ 3 ] === 1 ) { + rgba.pop(); + prefix = "rgb("; + } + + return prefix + rgba.join(",") + ")"; + }, + toHslaString: function() { + var prefix = "hsla(", + hsla = jQuery.map( this.hsla(), function( v, i ) { + if ( v == null ) { + v = i > 2 ? 1 : 0; + } + + // catch 1 and 2 + if ( i && i < 3 ) { + v = Math.round( v * 100 ) + "%"; + } + return v; + }); + + if ( hsla[ 3 ] == 1 ) { + hsla.pop(); + prefix = "hsl("; + } + return prefix + hsla.join(",") + ")"; + }, + toHexString: function( includeAlpha ) { + var rgba = this._rgba.slice(), + alpha = rgba.pop(); + + if ( includeAlpha ) { + rgba.push( ~~( alpha * 255 ) ); + } + + return "#" + jQuery.map( rgba, function( v, i ) { + + // default to 0 when nulls exist + v = ( v || 0 ).toString( 16 ); + return v.length == 1 ? "0" + v : v; + }).join(""); + }, + toString: function() { + return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString(); + } + }; + color.fn.parse.prototype = color.fn; + + // hsla conversions adapted from: + // http://www.google.com/codesearch/p#OAMlx_jo-ck/src/third_party/WebKit/Source/WebCore/inspector/front-end/Color.js&d=7&l=193 + + function hue2rgb( p, q, h ) { + h = ( h + 1 ) % 1; + if ( h * 6 < 1 ) { + return p + (q - p) * 6 * h; + } + if ( h * 2 < 1) { + return q; + } + if ( h * 3 < 2 ) { + return p + (q - p) * ((2/3) - h) * 6; + } + return p; + } + + spaces.hsla.to = function ( rgba ) { + if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) { + return [ null, null, null, rgba[ 3 ] ]; + } + var r = rgba[ 0 ] / 255, + g = rgba[ 1 ] / 255, + b = rgba[ 2 ] / 255, + a = rgba[ 3 ], + max = Math.max( r, g, b ), + min = Math.min( r, g, b ), + diff = max - min, + add = max + min, + l = add * 0.5, + h, s; + + if ( min === max ) { + h = 0; + } else if ( r === max ) { + h = ( 60 * ( g - b ) / diff ) + 360; + } else if ( g === max ) { + h = ( 60 * ( b - r ) / diff ) + 120; + } else { + h = ( 60 * ( r - g ) / diff ) + 240; + } + + if ( l === 0 || l === 1 ) { + s = l; + } else if ( l <= 0.5 ) { + s = diff / add; + } else { + s = diff / ( 2 - add ); + } + return [ Math.round(h) % 360, s, l, a == null ? 1 : a ]; + }; + + spaces.hsla.from = function ( hsla ) { + if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) { + return [ null, null, null, hsla[ 3 ] ]; + } + var h = hsla[ 0 ] / 360, + s = hsla[ 1 ], + l = hsla[ 2 ], + a = hsla[ 3 ], + q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s, + p = 2 * l - q, + r, g, b; + + return [ + Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ), + Math.round( hue2rgb( p, q, h ) * 255 ), + Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ), + a + ]; + }; + + + each( spaces, function( spaceName, space ) { + var props = space.props, + cache = space.cache, + to = space.to, + from = space.from; + + // makes rgba() and hsla() + color.fn[ spaceName ] = function( value ) { + + // generate a cache for this space if it doesn't exist + if ( to && !this[ cache ] ) { + this[ cache ] = to( this._rgba ); + } + if ( value === undefined ) { + return this[ cache ].slice(); + } + + var type = jQuery.type( value ), + arr = ( type === "array" || type === "object" ) ? value : arguments, + local = this[ cache ].slice(), + ret; + + each( props, function( key, prop ) { + var val = arr[ type === "object" ? key : prop.idx ]; + if ( val == null ) { + val = local[ prop.idx ]; + } + local[ prop.idx ] = clamp( val, prop ); + }); + + if ( from ) { + ret = color( from( local ) ); + ret[ cache ] = local; + return ret; + } else { + return color( local ); + } + }; + + // makes red() green() blue() alpha() hue() saturation() lightness() + each( props, function( key, prop ) { + // alpha is included in more than one space + if ( color.fn[ key ] ) { + return; + } + color.fn[ key ] = function( value ) { + var vtype = jQuery.type( value ), + fn = ( key === 'alpha' ? ( this._hsla ? 'hsla' : 'rgba' ) : spaceName ), + local = this[ fn ](), + cur = local[ prop.idx ], + match; + + if ( vtype === "undefined" ) { + return cur; + } + + if ( vtype === "function" ) { + value = value.call( this, cur ); + vtype = jQuery.type( value ); + } + if ( value == null && prop.empty ) { + return this; + } + if ( vtype === "string" ) { + match = rplusequals.exec( value ); + if ( match ) { + value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 ); + } + } + local[ prop.idx ] = value; + return this[ fn ]( local ); + }; + }); + }); + + // add .fx.step functions + each( stepHooks, function( i, hook ) { + jQuery.cssHooks[ hook ] = { + set: function( elem, value ) { + var parsed; + + if ( jQuery.type( value ) !== 'string' || ( parsed = stringParse( value ) ) ) + { + value = color( parsed || value ); + if ( !support.rgba && value._rgba[ 3 ] !== 1 ) { + var backgroundColor, + curElem = hook === "backgroundColor" ? elem.parentNode : elem; + do { + backgroundColor = jQuery.curCSS( curElem, "backgroundColor" ); + } while ( + ( backgroundColor === "" || backgroundColor === "transparent" ) && + ( curElem = curElem.parentNode ) && + curElem.style + ); + + value = value.blend( backgroundColor && backgroundColor !== "transparent" ? + backgroundColor : + "_default" ); + } + + value = value.toRgbaString(); + } + elem.style[ hook ] = value; + } + }; + jQuery.fx.step[ hook ] = function( fx ) { + if ( !fx.colorInit ) { + fx.start = color( fx.elem, hook ); + fx.end = color( fx.end ); + fx.colorInit = true; + } + jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) ); + }; + }); + + // detect rgba support + jQuery(function() { + var div = document.createElement( "div" ), + div_style = div.style; + + div_style.cssText = "background-color:rgba(1,1,1,.5)"; + support.rgba = div_style.backgroundColor.indexOf( "rgba" ) > -1; + }); + + // Some named colors to work with + // From Interface by Stefan Petre + // http://interface.eyecon.ro/ + colors = jQuery.Color.names = { + aqua: "#00ffff", + azure: "#f0ffff", + beige: "#f5f5dc", + black: "#000000", + blue: "#0000ff", + brown: "#a52a2a", + cyan: "#00ffff", + darkblue: "#00008b", + darkcyan: "#008b8b", + darkgrey: "#a9a9a9", + darkgreen: "#006400", + darkkhaki: "#bdb76b", + darkmagenta: "#8b008b", + darkolivegreen: "#556b2f", + darkorange: "#ff8c00", + darkorchid: "#9932cc", + darkred: "#8b0000", + darksalmon: "#e9967a", + darkviolet: "#9400d3", + fuchsia: "#ff00ff", + gold: "#ffd700", + green: "#008000", + indigo: "#4b0082", + khaki: "#f0e68c", + lightblue: "#add8e6", + lightcyan: "#e0ffff", + lightgreen: "#90ee90", + lightgrey: "#d3d3d3", + lightpink: "#ffb6c1", + lightyellow: "#ffffe0", + lime: "#00ff00", + magenta: "#ff00ff", + maroon: "#800000", + navy: "#000080", + olive: "#808000", + orange: "#ffa500", + pink: "#ffc0cb", + purple: "#800080", + violet: "#800080", + red: "#ff0000", + silver: "#c0c0c0", + white: "#ffffff", + yellow: "#ffff00", + transparent: [ null, null, null, 0 ], + _default: "#ffffff" + }; +})( jQuery ); \ No newline at end of file