@ 2013-06-30T21:54:20Z <?php
class EAHashor {
private $right32;
public function __construct()
{
$this->right32 = ~((~0 << 16) << 16);
}
public function eaEncode($string){
$a = "67452301";
$b = "EFCDAB89";
$c = "98BADCFE";
$d = "10325476";
$words = $this->init($string);
for($i = 0, $l = count($words) / 16 - 1; $i <= $l; $i++){
$A = $a;
$B = $b;
$C = $c;
$D = $d;
/* ROUND 1 */
$this->FF ($A, $B, $C, $D, $words[0 + ($i * 16)], 7, "d76aa478");
$this->FF ($D, $A, $B, $C, $words[1 + ($i * 16)], 12, "e8c7b756");
$this->FF ($C, $D, $A, $B, $words[2 + ($i * 16)], 17, "242070db");
$this->FF ($B, $C, $D, $A, $words[3 + ($i * 16)], 22, "c1bdceee");
$this->FF ($A, $B, $C, $D, $words[4 + ($i * 16)], 7, "f57c0faf");
$this->FF ($D, $A, $B, $C, $words[5 + ($i * 16)], 12, "4787c62a");
$this->FF ($C, $D, $A, $B, $words[6 + ($i * 16)], 17, "a8304613");
$this->FF ($B, $C, $D, $A, $words[7 + ($i * 16)], 22, "fd469501");
$this->FF ($A, $B, $C, $D, $words[8 + ($i * 16)], 7, "698098d8");
$this->FF ($D, $A, $B, $C, $words[9 + ($i * 16)], 12, "8b44f7af");
$this->FF ($C, $D, $A, $B, $words[10 + ($i * 16)], 17, "ffff5bb1");
$this->FF ($B, $C, $D, $A, $words[11 + ($i * 16)], 22, "895cd7be");
$this->FF ($A, $B, $C, $D, $words[12 + ($i * 16)], 7, "6b901122");
$this->FF ($D, $A, $B, $C, $words[13 + ($i * 16)], 12, "fd987193");
$this->FF ($C, $D, $A, $B, $words[14 + ($i * 16)], 17, "a679438e");
$this->FF ($B, $C, $D, $A, $words[15 + ($i * 16)], 22, "49b40821");
/* ROUND 2 */
$this->GG ($A, $B, $C, $D, $words[1 + ($i * 16)], 5, "f61e2562");
$this->GG ($D, $A, $B, $C, $words[6 + ($i * 16)], 9, "c040b340");
$this->GG ($C, $D, $A, $B, $words[11 + ($i * 16)], 14, "265e5a51");
$this->GG ($B, $C, $D, $A, $words[0 + ($i * 16)], 20, "e9b6c7aa");
$this->GG ($A, $B, $C, $D, $words[5 + ($i * 16)], 5, "d62f105d");
$this->GG ($D, $A, $B, $C, $words[10 + ($i * 16)], 9, "02441453");
$this->GG ($C, $D, $A, $B, $words[15 + ($i * 16)], 14, "d8a1e681");
$this->GG ($B, $C, $D, $A, $words[4 + ($i * 16)], 20, "e7d3fbc8");
$this->GG ($A, $B, $C, $D, $words[9 + ($i * 16)], 5, "21e1cde6");
$this->GG ($D, $A, $B, $C, $words[14 + ($i * 16)], 9, "c33707d6");
$this->GG ($C, $D, $A, $B, $words[3 + ($i * 16)], 14, "f4d50d87");
$this->GG ($B, $C, $D, $A, $words[8 + ($i * 16)], 20, "455a14ed");
$this->GG ($A, $B, $C, $D, $words[13 + ($i * 16)], 5, "a9e3e905");
$this->GG ($D, $A, $B, $C, $words[2 + ($i * 16)], 9, "fcefa3f8");
$this->GG ($C, $D, $A, $B, $words[7 + ($i * 16)], 14, "676f02d9");
$this->GG ($B, $C, $D, $A, $words[12 + ($i * 16)], 20, "8d2a4c8a");
/* ROUND 3 */
$this->HH ($A, $B, $C, $D, $words[5 + ($i * 16)], 4, "fffa3942");
$this->HH ($D, $A, $B, $C, $words[8 + ($i * 16)], 11, "8771f681");
//HH ($C, $D, $A, $B, $words[11 + ($i * 16)], 16, "6d9d6122");
//the line below has been changed to use 14 rather than 16 as seen in the commented line
$this->HH ($C, $D, $A, $B, $words[11 + ($i * 16)], 14, "6d9d6122");
$this->HH ($B, $C, $D, $A, $words[14 + ($i * 16)], 23, "fde5380c");
$this->HH ($A, $B, $C, $D, $words[1 + ($i * 16)], 4, "a4beea44");
$this->HH ($D, $A, $B, $C, $words[4 + ($i * 16)], 11, "4bdecfa9");
$this->HH ($C, $D, $A, $B, $words[7 + ($i * 16)], 16, "f6bb4b60");
$this->HH ($B, $C, $D, $A, $words[10 + ($i * 16)], 23, "bebfbc70");
$this->HH ($A, $B, $C, $D, $words[13 + ($i * 16)], 4, "289b7ec6");
$this->HH ($D, $A, $B, $C, $words[0 + ($i * 16)], 11, "eaa127fa");
$this->HH ($C, $D, $A, $B, $words[3 + ($i * 16)], 16, "d4ef3085");
$this->HH ($B, $C, $D, $A, $words[6 + ($i * 16)], 23, "04881d05");
$this->HH ($A, $B, $C, $D, $words[9 + ($i * 16)], 4, "d9d4d039");
$this->HH ($D, $A, $B, $C, $words[12 + ($i * 16)], 11, "e6db99e5");
$this->HH ($C, $D, $A, $B, $words[15 + ($i * 16)], 16, "1fa27cf8");
$this->HH ($B, $C, $D, $A, $words[2 + ($i * 16)], 23, "c4ac5665");
/* ROUND 4 */
$this->II ($A, $B, $C, $D, $words[0 + ($i * 16)], 6, "f4292244");
$this->II ($D, $A, $B, $C, $words[7 + ($i * 16)], 10, "432aff97");
$this->II ($C, $D, $A, $B, $words[14 + ($i * 16)], 15, "ab9423a7");
$this->II ($B, $C, $D, $A, $words[5 + ($i * 16)], 21, "fc93a039");
$this->II ($A, $B, $C, $D, $words[12 + ($i * 16)], 6, "655b59c3");
$this->II ($D, $A, $B, $C, $words[3 + ($i * 16)], 10, "8f0ccc92");
$this->II ($C, $D, $A, $B, $words[10 + ($i * 16)], 15, "ffeff47d");
$this->II ($B, $C, $D, $A, $words[1 + ($i * 16)], 21, "85845dd1");
$this->II ($A, $B, $C, $D, $words[8 + ($i * 16)], 6, "6fa87e4f");
$this->II ($D, $A, $B, $C, $words[15 + ($i * 16)], 10, "fe2ce6e0");
$this->II ($C, $D, $A, $B, $words[6 + ($i * 16)], 15, "a3014314");
$this->II ($B, $C, $D, $A, $words[13 + ($i * 16)], 21, "4e0811a1");
$this->II ($A, $B, $C, $D, $words[4 + ($i * 16)], 6, "f7537e82");
$this->II ($D, $A, $B, $C, $words[11 + ($i * 16)], 10, "bd3af235");
$this->II ($C, $D, $A, $B, $words[2 + ($i * 16)], 15, "2ad7d2bb");
$this->II ($B, $C, $D, $A, $words[9 + ($i * 16)], 21, "eb86d391");
//this last line is used twice
$this->II ($B, $C, $D, $A, $words[9 + ($i * 16)], 21, "eb86d391");
$this->addVars($a, $b, $c, $d, $A, $B, $C, $D);
}
$MD5 = '';
foreach (array($a, $b, $c, $d) as $x) {
$MD5 .= implode('', array_reverse(str_split($this->leftpad($x, 8), 2)));
}
return $MD5;
}
/* General functions */
private function hexbin($str){
$hexbinmap = array( "0" => "0000",
"1" => "0001",
"2" => "0010",
"3" => "0011"
, "4" => "0100"
, "5" => "0101"
, "6" => "0110"
, "7" => "0111"
, "8" => "1000"
, "9" => "1001"
, "A" => "1010"
, "a" => "1010"
, "B" => "1011"
, "b" => "1011"
, "C" => "1100"
, "c" => "1100"
, "D" => "1101"
, "d" => "1101"
, "E" => "1110"
, "e" => "1110"
, "F" => "1111"
, "f" => "1111");
$bin = "";
for ($i = 0; $i < strlen($str); $i++){
$bin .= $hexbinmap[$str[$i]];
}
$bin = ltrim($bin, '0');
// echo "Original: ".$str." New: ".$bin."<br />";
return $bin;
}
private function strhex($str){
$hex = "";
for ($i = 0; $i < strlen($str); $i++){
$hex = $hex.$this->leftpad(dechex(ord($str[$i])), 2);
}
return $hex;
}
/* MD5-specific functions */
private function init($string){
$len = strlen($string) * 8;
$hex = $this->strhex($string); // convert ascii string to hex
$bin = $this->leftpad($this->hexbin($hex), $len); // convert hex string to bin
$padded = $this->pad($bin);
$padded = $this->pad($padded, 1, $len);
$block = str_split($padded, 32);
foreach ($block as &$b) {
$b = implode('', array_reverse(str_split($b, 8)));
}
return $block;
}
private function pad($bin, $type=0, $len = 0){
if($type == 0){
$bin = $bin."1";
$buff = strlen($bin) % 512;
if($buff != 448){
while(strlen($bin) % 512 != 448){
$bin = $bin."0";
}
}
}
// append length (b) of string to latter 64 bits
elseif($type == 1){
$bLen = $this->leftpad(decbin($len), 64);
$bin .= implode('', array_reverse(str_split($bLen, 8)));
}
return $bin;
}
/* MD5 base functions */
private function F($X, $Y, $Z){
$X = $this->binarySafeHexDec($X);
$Y = $this->binarysafehexdec($Y);
$Z = $this->binarysafehexdec($Z);
$calc = (($X & $Y) | ((~ $X) & $Z)); // X AND Y OR NOT X AND Z
return $calc;
}
private function G($X, $Y, $Z){
$X = $this->binarysafehexdec($X);
$Y = $this->binarysafehexdec($Y);
$Z = $this->binarysafehexdec($Z);
$calc = (($X & $Z) | ($Y & (~ $Z))); // X AND Z OR Y AND NOT Z
return $calc;
}
private function H($X, $Y, $Z){
$X = $this->binarysafehexdec($X);
$Y = $this->binarysafehexdec($Y);
$Z = $this->binarysafehexdec($Z);
$calc = ($X ^ $Y ^ $Z); // X XOR Y XOR Z
return $calc;
}
private function I($X, $Y, $Z){
$X = $this->binarysafehexdec($X);
$Y = $this->binarysafehexdec($Y);
$Z = $this->binarysafehexdec($Z);
$calc = ($Y ^ ($X | (~ $Z))) ; // Y XOR (X OR NOT Z)
return $calc;
}
/* MD5 round functions */
/* $A - hex, $B - hex, $C - hex, $D - hex (F - dec)
$M - binary
$s - decimal
$t - hex
*/
private function FF(&$A, $B, $C, $D, $M, $s, $t){
$A = $this->binarysafehexdec($A);
$t = $this->binarysafehexdec($t);
$M = $this->binarysafebindec($M);
echo "A: $A\nt: $t\nM: $M\n";
$F = $this->F($B, $C, $D);
echo "F: $F\n";
$A = $this->add($A, $F, $M, $t) & $this->right32; //decimal
echo "4: $A\n";
$A = $this->rotate($A, $s);
echo "5: $A\n";
$A = dechex($this->add($this->binarysafehexdec($B), $this->binarysafehexdec($A)) & $this->right32);
echo "Result: $A\n\n";
}
private function GG(&$A, $B, $C, $D, $M, $s, $t){
$A = $this->binarysafehexdec($A);
$t = $this->binarysafehexdec($t);
$M = $this->binarysafebindec($M);
$A = $this->add($A, $this->G($B, $C, $D), $M, $t) & $this->right32; //decimal
$A = $this->rotate($A, $s);
$A = dechex($this->add($this->binarysafehexdec($B), $this->binarysafehexdec($A)) & $this->right32);
}
private function HH(&$A, $B, $C, $D, $M, $s, $t){
$A = $this->binarysafehexdec($A);
$t = $this->binarysafehexdec($t);
$M = $this->binarysafebindec($M);
$A = $this->add($A, $this->H($B, $C, $D), $M, $t) & $this->right32; //decimal
$A = $this->rotate($A, $s);
$A = dechex($this->add($this->binarysafehexdec($B), $this->binarysafehexdec($A)) & $this->right32);
}
private function II(&$A, $B, $C, $D, $M, $s, $t){
$A = $this->binarysafehexdec($A);
$t = $this->binarysafehexdec($t);
$M = $this->binarysafebindec($M);
$A = $this->add($A, $this->I($B, $C, $D), $M, $t) & $this->right32; //decimal
$A = $this->rotate($A, $s);
$A = dechex($this->add($this->binarysafehexdec($B), $this->binarysafehexdec($A)) & $this->right32);
}
private function rotate ($decimal, $bits)
{
return dechex(($decimal << $bits) | (($decimal >> (32 - $bits)) & (~(~0 << $bits) & $this->right32)));
}
private function addVars(&$a, &$b, &$c, &$d, $A, $B, $C, $D){
$A = $this->binarysafehexdec($A);
$B = $this->binarysafehexdec($B);
$C = $this->binarysafehexdec($C);
$D = $this->binarysafehexdec($D);
$aa = $this->binarysafehexdec($a);
$bb = $this->binarysafehexdec($b);
$cc = $this->binarysafehexdec($c);
$dd = $this->binarysafehexdec($d);
$aa = $this->add($aa, $A) & $this->right32;
$bb = $this->add($bb, $B) & $this->right32;
$cc = $this->add($cc, $C) & $this->right32;
$dd = $this->add($dd, $D) & $this->right32;
$a = dechex($aa);
$b = dechex($bb);
$c = dechex($cc);
$d = dechex($dd);
}
private function leftpad($needs_padding, $alignment) {
if (strlen($needs_padding) % $alignment) {
$pad_amount = $alignment - strlen($needs_padding) % $alignment;
$left_pad = implode('', array_fill(0, $pad_amount, '0'));
$needs_padding = $left_pad . $needs_padding;
}
return $needs_padding;
}
private function binarySafeBinDec($bin)
{
$bits = array_reverse(str_split($bin, 1));
$result = 0;
foreach ($bits as $position => $bit) {
$result |= ((int) $bit) << $position;
}
return $result;
}
private function binarySafeHexDec($hex)
{
$h = str_split(substr(str_pad($hex, 8, '0', STR_PAD_LEFT), -8), 2);
return (hexdec($h[0]) << 24) | (hexdec($h[1]) << 16) | (hexdec($h[2]) << 8) | hexdec($h[3]);
}
private function leftShiftByOne($intAsStr)
{
$p = unpack('N2', $intAsStr);
return pack('N2', ($p[1] << 1) | (($p[2] >> 31) & 0x00000001), $p[2] << 1);
}
private function binarySafeAddition($a, $b)
{
// NB: we don't actually need 64 bits, but 40 bit integers are confusing
$a = "\x00\x00\x00\x00" . pack('N', $a);
$b = "\x00\x00\x00\x00" . pack('N', $b);
$carry = $a & $b;
$result = $a ^ $b;
while ($carry != "\x00\x00\x00\x00\x00\x00\x00\x00") {
$shiftedcarry = $this->leftShiftByOne($carry);
$carry = $result & $shiftedcarry;
$result ^= $shiftedcarry;
}
return current(unpack('N', substr($result, 4)));
}
private function add()
{
$result = 0;
foreach (func_get_args() as $int) {
$result = $this->binarySafeAddition($result, $int);
}
return $result;
}
}
$eahashor = new EAHashor();
$hash = $eahashor->eaEncode('test');
echo $hash;
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).
Version System time (s) User time (s) Memory (MiB) 8.3.6 0.011 0.011 17.00 8.3.5 0.013 0.006 22.06 8.3.4 0.007 0.018 19.07 8.3.3 0.020 0.003 19.42 8.3.2 0.006 0.003 20.29 8.3.1 0.006 0.003 23.66 8.3.0 0.003 0.006 19.38 8.2.18 0.017 0.003 18.43 8.2.17 0.011 0.011 22.96 8.2.16 0.004 0.011 20.77 8.2.15 0.003 0.006 24.18 8.2.14 0.008 0.000 24.66 8.2.13 0.019 0.003 26.16 8.2.12 0.003 0.006 22.25 8.2.11 0.007 0.003 22.29 8.2.10 0.011 0.003 18.16 8.2.9 0.003 0.006 19.41 8.2.8 0.005 0.005 18.30 8.2.7 0.007 0.003 17.75 8.2.6 0.003 0.010 17.91 8.2.5 0.007 0.004 18.07 8.2.4 0.000 0.010 18.72 8.2.3 0.003 0.009 18.53 8.2.2 0.003 0.006 18.08 8.2.1 0.003 0.006 18.33 8.2.0 0.003 0.006 17.97 8.1.28 0.003 0.013 25.92 8.1.27 0.000 0.009 22.29 8.1.26 0.003 0.006 26.35 8.1.25 0.006 0.003 28.09 8.1.24 0.003 0.006 23.79 8.1.23 0.010 0.003 19.42 8.1.22 0.003 0.007 17.91 8.1.21 0.006 0.003 18.77 8.1.20 0.000 0.011 17.73 8.1.19 0.007 0.003 17.88 8.1.18 0.000 0.010 18.10 8.1.17 0.000 0.009 18.76 8.1.16 0.005 0.005 22.21 8.1.15 0.000 0.009 18.92 8.1.14 0.004 0.004 17.64 8.1.13 0.006 0.003 18.04 8.1.12 0.004 0.004 17.75 8.1.11 0.003 0.006 17.79 8.1.10 0.006 0.003 17.78 8.1.9 0.006 0.003 17.69 8.1.8 0.007 0.004 17.74 8.1.7 0.004 0.004 17.71 8.1.6 0.003 0.006 17.82 8.1.5 0.007 0.004 17.84 8.1.4 0.000 0.009 17.84 8.1.3 0.003 0.007 17.80 8.1.2 0.000 0.009 17.91 8.1.1 0.003 0.007 17.87 8.1.0 0.006 0.003 17.82 8.0.30 0.000 0.009 18.77 8.0.29 0.003 0.006 17.41 8.0.28 0.000 0.009 18.62 8.0.27 0.003 0.006 17.50 8.0.26 0.005 0.003 17.10 8.0.25 0.003 0.006 17.26 8.0.24 0.003 0.006 17.15 8.0.23 0.000 0.009 17.19 8.0.22 0.000 0.008 17.13 8.0.21 0.008 0.000 17.21 8.0.20 0.000 0.008 17.21 8.0.19 0.006 0.006 17.16 8.0.18 0.000 0.009 17.08 8.0.17 0.000 0.010 17.08 8.0.16 0.005 0.005 17.22 8.0.15 0.010 0.000 17.21 8.0.14 0.000 0.009 17.06 8.0.13 0.005 0.003 13.59 8.0.12 0.006 0.003 17.04 8.0.11 0.003 0.006 17.10 8.0.10 0.003 0.007 17.17 8.0.9 0.003 0.006 17.00 8.0.8 0.007 0.011 17.22 8.0.7 0.003 0.006 17.12 8.0.6 0.010 0.000 17.24 8.0.5 0.000 0.009 17.04 8.0.3 0.008 0.015 17.38 8.0.2 0.011 0.010 17.40 8.0.1 0.003 0.006 17.37 8.0.0 0.007 0.015 17.12 7.4.33 0.000 0.007 15.07 7.4.32 0.000 0.008 16.93 7.4.30 0.003 0.006 16.82 7.4.29 0.003 0.006 16.84 7.4.28 0.006 0.003 16.90 7.4.27 0.000 0.008 16.92 7.4.26 0.006 0.003 16.81 7.4.25 0.003 0.007 16.70 7.4.24 0.006 0.003 16.90 7.4.23 0.010 0.000 16.86 7.4.22 0.010 0.014 16.90 7.4.21 0.006 0.012 16.82 7.4.20 0.004 0.004 16.75 7.4.19 0.006 0.003 16.95 7.4.16 0.013 0.009 16.77 7.4.15 0.011 0.014 17.40 7.4.14 0.010 0.011 17.86 7.4.13 0.012 0.008 16.73 7.4.12 0.017 0.008 16.89 7.4.11 0.010 0.013 16.91 7.4.10 0.011 0.019 16.66 7.4.9 0.013 0.013 16.85 7.4.8 0.018 0.004 19.39 7.4.7 0.010 0.010 16.58 7.4.6 0.009 0.011 16.83 7.4.5 0.000 0.011 16.77 7.4.4 0.012 0.006 22.77 7.4.3 0.010 0.010 16.66 7.4.0 0.009 0.009 15.15 7.3.33 0.003 0.003 13.48 7.3.32 0.000 0.007 13.63 7.3.31 0.003 0.005 16.65 7.3.30 0.003 0.005 16.47 7.3.29 0.014 0.003 16.63 7.3.28 0.009 0.012 16.63 7.3.27 0.012 0.009 17.40 7.3.26 0.014 0.013 16.73 7.3.25 0.009 0.012 16.63 7.3.24 0.008 0.016 16.63 7.3.23 0.008 0.013 16.81 7.3.21 0.013 0.008 16.60 7.3.20 0.006 0.014 19.39 7.3.19 0.003 0.025 16.76 7.3.18 0.006 0.013 16.62 7.3.17 0.009 0.011 16.76 7.3.16 0.008 0.012 16.86 7.3.12 0.007 0.013 14.96 7.3.11 0.000 0.016 15.17 7.3.10 0.006 0.009 15.00 7.3.9 0.000 0.018 15.12 7.3.8 0.006 0.009 15.01 7.3.7 0.009 0.009 15.23 7.3.6 0.013 0.003 14.88 7.3.5 0.003 0.013 14.81 7.3.4 0.004 0.011 15.11 7.3.3 0.000 0.019 14.86 7.3.2 0.003 0.014 16.67 7.3.1 0.014 0.003 16.75 7.3.0 0.006 0.009 16.24 7.2.33 0.019 0.004 16.82 7.2.32 0.013 0.013 17.04 7.2.31 0.014 0.007 17.06 7.2.30 0.007 0.014 17.10 7.2.29 0.006 0.015 17.07 7.2.24 0.009 0.009 15.01 7.2.23 0.009 0.009 15.50 7.2.22 0.000 0.013 15.44 7.2.21 0.006 0.012 15.07 7.2.20 0.006 0.012 15.52 7.2.19 0.000 0.014 15.38 7.2.18 0.007 0.007 15.32 7.2.17 0.008 0.008 15.04 7.2.16 0.004 0.011 15.13 7.2.15 0.003 0.013 16.67 7.2.14 0.010 0.007 17.05 7.2.13 0.000 0.017 17.09 7.2.12 0.000 0.015 17.02 7.2.11 0.010 0.007 16.60 7.2.10 0.000 0.014 16.91 7.2.9 0.003 0.013 17.04 7.2.8 0.003 0.017 17.08 7.2.7 0.009 0.009 16.92 7.2.6 0.007 0.007 16.92 7.2.5 0.007 0.011 16.67 7.2.4 0.003 0.010 17.02 7.2.3 0.006 0.010 17.06 7.2.2 0.003 0.016 16.97 7.2.1 0.003 0.016 16.84 7.2.0 0.007 0.013 18.16 7.1.33 0.009 0.006 15.70 7.1.32 0.003 0.013 15.95 7.1.31 0.009 0.009 16.00 7.1.30 0.003 0.013 15.89 7.1.29 0.006 0.008 15.82 7.1.28 0.003 0.010 15.55 7.1.27 0.012 0.006 15.86 7.1.26 0.000 0.019 15.68 7.1.25 0.003 0.012 15.95 7.1.10 0.003 0.010 17.96 7.1.7 0.008 0.006 17.30 7.1.6 0.013 0.016 19.33 7.1.5 0.000 0.018 16.68 7.1.0 0.000 0.083 22.27 7.0.20 0.007 0.004 16.81 7.0.14 0.000 0.077 21.98 7.0.10 0.043 0.087 20.23 7.0.9 0.027 0.093 20.29 7.0.8 0.033 0.087 20.18 7.0.7 0.023 0.077 20.19 7.0.6 0.033 0.073 20.21 7.0.5 0.027 0.083 20.57 7.0.4 0.007 0.087 20.15 7.0.3 0.013 0.083 20.11 7.0.2 0.007 0.053 20.18 7.0.1 0.007 0.067 20.10 7.0.0 0.010 0.083 20.18 5.6.28 0.003 0.087 21.03 5.6.25 0.003 0.093 20.86 5.6.24 0.007 0.090 20.78 5.6.23 0.007 0.087 20.77 5.6.22 0.007 0.090 20.83 5.6.21 0.013 0.057 20.81 5.6.20 0.010 0.050 21.12 5.6.19 0.010 0.093 21.25 5.6.18 0.017 0.050 21.09 5.6.17 0.007 0.073 21.08 5.6.16 0.010 0.063 21.11 5.6.15 0.007 0.080 21.18 5.6.14 0.003 0.083 21.32 5.6.13 0.007 0.080 21.08 5.6.12 0.007 0.080 21.19 5.6.11 0.003 0.093 21.20 5.6.10 0.013 0.077 21.18 5.6.9 0.013 0.087 21.16 5.6.8 0.007 0.077 20.47 5.6.7 0.007 0.087 20.60 5.6.6 0.023 0.037 20.57 5.6.5 0.007 0.067 20.48 5.6.4 0.020 0.070 20.56 5.6.3 0.017 0.043 20.59 5.6.2 0.007 0.053 20.50 5.6.1 0.003 0.083 20.60 5.6.0 0.010 0.047 20.56 5.5.38 0.010 0.080 20.48 5.5.37 0.010 0.087 20.51 5.5.36 0.010 0.087 20.48 5.5.35 0.013 0.077 20.56 5.5.34 0.013 0.087 20.79 5.5.33 0.010 0.050 20.94 5.5.32 0.000 0.097 20.94 5.5.31 0.007 0.060 20.92 5.5.30 0.010 0.047 21.05 5.5.29 0.013 0.083 21.05 5.5.28 0.017 0.083 20.98 5.5.27 0.007 0.087 21.05 5.5.26 0.000 0.057 20.96 5.5.25 0.013 0.083 20.82 5.5.24 0.000 0.050 20.42 5.5.23 0.007 0.090 20.45 5.5.22 0.007 0.080 20.40 5.5.21 0.007 0.060 20.45 5.5.20 0.003 0.080 20.35 5.5.19 0.007 0.087 20.29 5.5.18 0.017 0.050 20.34 5.5.16 0.003 0.070 20.37 5.5.15 0.010 0.077 20.25 5.5.14 0.007 0.060 20.29 5.5.13 0.013 0.080 20.39 5.5.12 0.013 0.077 20.28 5.5.11 0.007 0.057 20.34 5.5.10 0.007 0.060 20.31 5.5.9 0.010 0.073 20.30 5.5.8 0.003 0.060 20.18 5.5.7 0.007 0.043 20.21 5.5.6 0.007 0.083 20.19 5.5.5 0.007 0.050 20.25 5.5.4 0.007 0.073 20.10 5.5.3 0.007 0.087 20.22 5.5.2 0.007 0.083 20.17 5.5.1 0.003 0.043 20.18 5.5.0 0.007 0.083 20.21 5.4.45 0.017 0.073 19.55 5.4.44 0.003 0.083 19.26 5.4.43 0.013 0.063 19.45 5.4.42 0.013 0.040 19.34 5.4.41 0.000 0.087 19.32 5.4.40 0.003 0.053 19.10 5.4.39 0.003 0.080 19.11 5.4.38 0.000 0.073 19.12 5.4.37 0.003 0.083 19.13 5.4.36 0.013 0.077 19.11 5.4.35 0.010 0.077 19.12 5.4.34 0.000 0.080 19.29 5.4.32 0.010 0.067 19.13 5.4.31 0.010 0.070 19.14 5.4.30 0.003 0.067 19.13 5.4.29 0.007 0.050 18.91 5.4.28 0.007 0.070 19.13 5.4.27 0.017 0.073 19.02 5.4.26 0.003 0.043 19.23 5.4.25 0.010 0.047 19.25 5.4.24 0.017 0.067 19.14 5.4.23 0.003 0.087 18.92 5.4.22 0.013 0.077 18.96 5.4.21 0.007 0.050 19.09 5.4.20 0.007 0.073 18.97 5.4.19 0.007 0.043 19.17 5.4.18 0.010 0.073 18.91 5.4.17 0.007 0.047 19.28 5.4.16 0.010 0.073 19.12 5.4.15 0.003 0.043 19.27 5.4.14 0.007 0.077 16.47 5.4.13 0.013 0.030 16.50 5.4.12 0.000 0.083 16.50 5.4.11 0.010 0.070 16.48 5.4.10 0.000 0.040 16.62 5.4.9 0.013 0.073 16.51 5.4.8 0.010 0.077 16.54 5.4.7 0.000 0.087 16.61 5.4.6 0.007 0.063 16.53 5.4.5 0.000 0.040 16.44 5.4.4 0.007 0.080 16.39 5.4.3 0.003 0.080 16.43 5.4.2 0.020 0.067 16.55 5.4.1 0.010 0.073 16.59 5.4.0 0.007 0.077 16.01 5.3.29 0.010 0.077 14.93 5.3.28 0.010 0.083 14.83 5.3.27 0.010 0.080 14.84 5.3.26 0.013 0.063 14.79 5.3.25 0.003 0.080 14.96 5.3.24 0.007 0.073 14.97 5.3.23 0.000 0.047 14.98 5.3.22 0.007 0.077 14.91 5.3.21 0.010 0.077 14.91 5.3.20 0.000 0.087 14.84 5.3.19 0.000 0.050 14.84 5.3.18 0.010 0.063 14.87 5.3.17 0.000 0.077 14.74 5.3.16 0.000 0.053 14.88 5.3.15 0.003 0.053 14.84 5.3.14 0.010 0.080 14.85 5.3.13 0.003 0.090 14.78 5.3.12 0.010 0.073 14.86 5.3.11 0.007 0.083 14.77 5.3.10 0.010 0.077 14.36 5.3.9 0.017 0.073 14.29 5.3.8 0.020 0.063 14.25 5.3.7 0.007 0.080 14.32 5.3.6 0.003 0.070 14.25 5.3.5 0.000 0.053 14.32 5.3.4 0.010 0.077 14.25 5.3.3 0.007 0.073 14.25 5.3.2 0.003 0.063 14.00 5.3.1 0.007 0.077 13.90 5.3.0 0.007 0.050 13.86
preferences:dark mode live preview
43.34 ms | 401 KiB | 5 Q