alloc(response_data->data, response_data->size + real_size + 1);
    if (response_data->data == NULL) {
        fprintf(stderr, "Memory allocation failed\n");
        return 0;
    }

    memcpy(&(response_data->data[response_data->size]), ptr, real_size);
    response_data->size += real_size;
    response_data->data[response_data->size] = 0;

    return real_size;
}
int main() {
  CURL *curl;
  CURLcode res;
  curl = curl_easy_init();
  if(curl) {
    curl_easy_setopt(curl, CURLOPT_URL, "https://api.apidash.dev/io/img");
    curl_mime *mime;
    curl_mimepart *part;
    mime = curl_mime_init(curl);

    part = curl_mime_addpart(mime);
    curl_mime_name(part, "token");
    curl_mime_data(part, "xyz", CURL_ZERO_TERMINATED);

    part = curl_mime_addpart(mime);
    curl_mime_name(part, "imfile");
    curl_mime_filedata(part, "/Documents/up/1.png");

    curl_easy_setopt(curl, CURLOPT_MIMEPOST, mime);
    struct ResponseData response_data = {0};
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response_data);
    res = curl_easy_perform(curl);
    long response_code;
    curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response_code);
    printf("Response code: %ld\n", response_code);
    printf("Response body: %s\n", response_data.data);
    free(response_data.data);
    curl_mime_free(mime);
  }
  curl_easy_cleanup(curl);
  return 0;
}""";
      expect(
          codeGen.getCode(
            CodegenLanguage.cCurlCodeGen,
            requestModelPost6,
            SupportedUriSchemes.https,
          ),
          expectedCode);
    });

    test('POST 7', () {
      const expectedCode = r"""#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <curl/curl.h>
struct ResponseData {
    char *data;
    size_t size;
};

size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata) {
    struct ResponseData *response_data = (struct ResponseData *)userdata;
    size_t real_size = size * nmemb;

    response_data->data = realloc(response_data->data, response_data->size + real_size + 1);
    if (response_data->data == NULL) {
        fprintf(stderr, "Memory allocation failed\n");
        return 0;
    }

    memcpy(&(response_data->data[response_data->size]), ptr, real_size);
    response_data->size += real_size;
    response_data->data[response_data->size] = 0;

    return real_size;
}
int main() {
  CURL *curl;
  CURLcode res;
  curl = curl_easy_init();
  if(curl) {
    curl_easy_setopt(curl, CURLOPT_URL, "https://api.apidash.dev/io/img");
    curl_mime *mime;
    curl_mimepart *part;
    mime = curl_mime_init(curl);

    part = curl_mime_addpart(mime);
    curl_mime_name(part, "token");
    curl_mime_data(part, "xyz", CURL_ZERO_TERMINATED);

    part = curl_mime_addpart(mime);
    curl_mime_na


get());
  client_handler->SetStringResource(page, data);
  browser->GetMainFrame()->LoadURL(kTestOrigin + page);
}

void RunGetSourceTest(CefRefPtr<CefBrowser> browser) {
  class Visitor : public CefStringVisitor {
   public:
    explicit Visitor(CefRefPtr<CefBrowser> browser) : browser_(browser) {}
    virtual void Visit(const CefString& string) override {
      std::string source = AsciiStrReplace(string, "<", "<");
      source = AsciiStrReplace(source, ">", ">");
      std::stringstream ss;
      ss << "Source:
" << source
         << "
";
      LoadStringResourcePage(browser_, kTestGetSourcePage, ss.str());
    }

   private:
    CefRefPtr<CefBrowser> browser_;
    IMPLEMENT_REFCOUNTING(Visitor);
  };

  browser->GetMainFrame()->GetSource(new Visitor(browser));
}

void RunGetTextTest(CefRefPtr<CefBrowser> browser) {
  class Visitor : public CefStringVisitor {
   public:
    explicit Visitor(CefRefPtr<CefBrowser> browser) : browser_(browser) {}
    virtual void Visit(const CefString& string) override {
      std::string text = AsciiStrReplace(string, "<", "<");
      text = AsciiStrReplace(text, ">", ">");
      std::stringstream ss;
      ss << "Text:
" << text
         << "
";
      LoadStringResourcePage(browser_, kTestGetTextPage, ss.str());
    }

   private:
    CefRefPtr<CefBrowser> browser_;
    IMPLEMENT_REFCOUNTING(Visitor);
  };

  browser->GetMainFrame()->GetText(new Visitor(browser));
}

void RunRequestTest(CefRefPtr<CefBrowser> browser) {
  // Create a new request
  CefRefPtr<CefRequest> request(CefRequest::Create());

  if (browser->GetMainFrame()->GetURL().ToString().find("http://tests/") != 0) {
    // The LoadRequest method will fail with "bad IPC message" reason
    // INVALID_INITIATOR_ORIGIN (213) unless you first navigate to the
    // request origin using some other mechanism (LoadURL, link click, etc).
    Alert(browser,
          "Please first navigate to a http://tests/ URL. "
          "For example, first load Tests > Other Tests.");
    return;
  }

  // Set the request URL
  request->SetURL("http://tests/request");

  // Add post data to the request.  The correct method and content-
  // type headers will be set by CEF.
  CefRefPtr<CefPostDataElement> postDataElement(CefPostDataElement::Create());
  std::string data = "arg1=val1&arg2=val2";
  postDataElement->SetToBytes(data.length(), data.c_str());
  CefRefPtr<CefPostData> postData(CefPostData::Create());
  postData->AddElement(postDataElement);
  request->SetPostData(postData);

  // Add a custom header
  CefRequest::HeaderMap headerMap;
  headerMap.insert(std::make_pair("X-My-Header", "My Header Value"));
  request->SetHeaderMap(headerMap);

  // Load the request
  browser->GetMainFrame()->LoadRequest(request);
}

void RunNewWindowTest(CefRefPtr<CefBrowser> browser) {
  auto config = std::make_unique<RootWindowConfig>();
  config->with_controls = true;
  config->with_osr = browser->GetHost()->IsWindowRenderingDisabled();
  MainContext::Get()->GetRootWindowManager()->CreateRootWindow(
      std::move(config));
}

void RunPopupWindowTest(CefRefPtr<CefBrowser> brows


lda	#<demo_rle
	sta	GBASL
	lda	#>demo_rle
	sta	GBASH

	; Load offscreen
	lda	#<$c00
	sta	BASL
	lda	#>$c00
	sta	BASH

	jsr	load_rle_gr

	;==========
	; Fade in
	;==========

	jsr	fade_in

	;==========================================
	; Make sure page0 and page1 show same image
	;==========================================

	jsr	gr_copy_to_current

	;===================
	; Scroll the message
	;===================

	; Scroll "BY DEATER... A VMW PRODUCTION"

	lda	#>deater_scroll
	sta	INH
	lda	#<deater_scroll
	sta	INL

	lda	#40		; scroll at bottom of screen
	sta	CV

	jsr	gr_scroll

	; Scroll "* APPLE ][ FOREVER *"

	lda	#>a2_scroll
	sta	INH
	lda	#<a2_scroll
	sta	INL

	jsr	gr_scroll

	;=============
	; Fade out
	;=============
	jsr	fade_out

	rts

;============================
; These are placed so the VMW logo can be fit
;============================
.include "deater.scrolltext"
.include "a2.scrolltext"
.byte 0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0
.byte $A8,$55,$95,$35,$85		; at $


ardwareAddr(a.Data)
		case unix.NL80211_ATTR_STA_INFO:
			nattrs, err := netlink.UnmarshalAttributes(a.Data)
			if err != nil {
				return nil, err
			}

			if err := (&info).parseAttributes(nattrs); err != nil {
				return nil, err
			}

			// Parsed the necessary data.
			return &info, nil
		}
	}

	// No station info found
	return nil, os.ErrNotExist
}

// parseAttributes parses netlink attributes into a StationInfo's fields.
func (info *StationInfo) parseAttributes(attrs []netlink.Attribute) error {
	for _, a := range attrs {
		switch a.Type {
		case unix.NL80211_STA_INFO_CONNECTED_TIME:
			// Though nl80211 does not specify, this value appears to be in seconds:
			// * @NL80211_STA_INFO_CONNECTED_TIME: time since the station is last connected
			info.Connected = time.Duration(nlenc.Uint32(a.Data)) * time.Second
		case unix.NL80211_STA_INFO_INACTIVE_TIME:
			// * @NL80211_STA_INFO_INACTIVE_TIME: time since last activity (u32, msecs)
			info.Inactive = time.Duration(nlenc.Uint32(a.Data)) * time.Millisecond
		case unix.NL80211_STA_INFO_RX_BYTES64:
			info.ReceivedBytes = int(nlenc.Uint64(a.Data))
		case unix.NL80211_STA_INFO_TX_BYTES64:
			info.TransmittedBytes = int(nlenc.Uint64(a.Data))
		case unix.NL80211_STA_INFO_SIGNAL:
			//  * @NL80211_STA_INFO_SIGNAL: signal strength of last received PPDU (u8, dBm)
			// Should just be cast to int8, see code here: https://git.kernel.org/pub/scm/linux/kernel/git/jberg/iw.git/tree/station.c#n378
			info.Signal = int(int8(a.Data[0]))
		case unix.NL80211_STA_INFO_SIGNAL_AVG:
			info.SignalAverage = int(int8(a.Data[0]))
		case unix.NL80211_STA_INFO_RX_PACKETS:
			info.ReceivedPackets = int(nlenc.Uint32(a.Data))
		case unix.NL80211_STA_INFO_TX_PACKETS:
			info.TransmittedPackets = int(nlenc.Uint32(a.Data))
		case unix.NL80211_STA_INFO_TX_RETRIES:
			info.TransmitRetries = int(nlenc.Uint32(a.Data))
		case unix.NL80211_STA_INFO_TX_FAILED:
			info.TransmitFailed = int(nlenc.Uint32(a.Data))
		case unix.NL80211_STA_INFO_BEACON_LOSS:
			info.BeaconLoss = int(nlenc.Uint32(a.Data))
		case unix.NL80211_STA_INFO_RX_BITRATE, unix.NL80211_STA_INFO_TX_BITRATE:
			rate, err := parseRateInfo(a.Data)
			if err != nil {
				return err
			}

			// TODO(mdlayher): return more statistics if they end up being
			// generally useful
			switch a.Type {
			case unix.NL80211_STA_INFO_RX_BITRATE:
				info.ReceiveBitrate = rate.Bitrate
			case unix.NL80211_STA_INFO_TX_BITRATE:
				info.TransmitBitrate = rate.Bitrate
			}
		}

		// Only use 32-bit counters if the 64-bit counters are not present.
		// If the 64-bit counters appear later in the slice, they will overwrite
		// these values.
		if info.ReceivedBytes == 0 && a.Type == unix.NL80211_STA_INFO_RX_BYTES {
			info.ReceivedBytes = int(nlenc.Uint32(a


>

<dfn class="dfn-paneled idl-code" data-dfn-for="PannerOptions" data-dfn-type="dict-member" data-export id="dom-panneroptions-orientationx">orientationX</dfn>,  of type float, defaulting to 1

The initial \(x\)-component value for the orientationX AudioParam.

<dfn class="dfn-paneled idl-code" data-dfn-for="PannerOptions" data-dfn-type="dict-member" data-export id="dom-panneroptions-orientationy">orientationY</dfn>,  of type float, defaulting to 0

The initial \(y\)-component value for the orientationY AudioParam.

<dfn class="dfn-paneled idl-code" data-dfn-for="PannerOptions" data-dfn-type="dict-member" data-export id="dom-panneroptions-orientationz">orientationZ</dfn>,  of type float, defaulting to 0

The initial \(z\)-component value for the orientationZ AudioParam.

<dfn class="dfn-paneled idl-code" data-dfn-for="PannerOptions" data-dfn-type="dict-member" data-export id="dom-panneroptions-panningmodel">panningModel</dfn>,  of type PanningModelType, defaulting to "equalpower"

The panning model to use for the node.

<dfn class="dfn-paneled idl-code" data-dfn-for="PannerOptions" data-dfn-type="dict-member" data-export id="dom-panneroptions-positionx">positionX</dfn>,  of type float, defaulting to 0

The initial \(x\)-co


class ShaderUniformStructFieldBuilder {
  ShaderUniformStructFieldBuilder(this.fbBuilder);

  final fb.Builder fbBuilder;

  void begin() {
    fbBuilder.startTable(6);
  }

  int addNameOffset(int? offset) {
    fbBuilder.addOffset(0, offset);
    return fbBuilder.offset;
  }
  int addType(UniformDataType? type) {
    fbBuilder.addUint32(1, type?.value);
    return fbBuilder.offset;
  }
  int addOffsetInBytes(int? offsetInBytes) {
    fbBuilder.addUint64(2, offsetInBytes);
    return fbBuilder.offset;
  }
  int addElementSizeInBytes(int? elementSizeInBytes) {
    fbBuilder.addUint64(3, elementSizeInBytes);
    return fbBuilder.offset;
  }
  int addTotalSizeInBytes(int? totalSizeInBytes) {
    fbBuilder.addUint64(4, totalSizeInBytes);
    return fbBuilder.offset;
  }
  int addArrayElements(int? arrayElements) {
    fbBuilder.addUint64(5, arrayElements);
    return fbBuilder.offset;
  }

  int finish() {
    return fbBuilder.endTable();
  }
}

class ShaderUniformStructFieldObjectBuilder extends fb.ObjectBuilder {
  final String? _name;
  final UniformDataType? _type;
  final int? _offsetInBytes;
  final int? _elementSizeInBytes;
  final int? _totalSizeInBytes;
  final int? _arrayElements;

  ShaderUniformStructFieldObjectBuilder({
    String? name,
    UniformDataType? type,
    int? offsetInBytes,
    int? elementSizeInBytes,
    int? totalSizeInBytes,
    int? arrayElements,
  })
      : _name = name,
        _type = type,
        _offsetInBytes = offsetInBytes,
        _elementSizeInBytes = elementSizeInBytes,
        _totalSizeInBytes = totalSizeInBytes,
        _arrayElements = arrayElements;

  /// Finish building, and store into the [fbBuilder].
  @override
  int finish(fb.Builder fbBuilder) {
    final int? nameOffset = _name == null ? null
        : fbBuilder.writeString(_name!);
    fbBuilder.startTable(6);
    fbBuilder.addOffset(0, nameOffset);
    fbBuilder.addUint32(1, _type?.value);
    fbBuilder.addUint64(2, _offsetInBytes);
    fbBuilder.addUint64(3, _elementSizeInBytes);
    fbBuilder.addUint64(4, _totalSizeInBytes);
    fbBuilder.addUint64(5, _arrayElements);
    return fbBuilder.endTable();
  }

  /// Convenience method to serialize to byte list.
  @override
  Uint8List toBytes([String? fileIdentifier]) {
    final fbBuilder = fb.Builder(deduplicateTables: false);
    fbBuilder.finish(finish(fbBuilder), fileIdentifier);
    return fbBuilder.buffer;
  }
}
class ShaderUniformStruct {
  ShaderUniformStruct._(this._bc, this._bcOffset);
  factory ShaderUniformStruct(List<int> bytes) {
    final rootRef = fb.BufferContext.fromBytes(bytes);
    return reader.read(rootRef, 0);
  }

  static const fb.Reader<ShaderUniformStruct> reader = _ShaderUniformStructReader();

  final fb.BufferContext _bc;
  final int _bcOffset;

  String? get name => const fb.StringReader().vTableGetNullable(_bc, _bcOffset, 4);
  int get extRes0 => const fb.Uint64Reader().vTableGet(_bc, _bcOffset, 6, 0);
  int get $set => const fb.Uint64Reader().vTableGet(_bc, _bcOffset, 8, 0);
  int get binding => const fb.Uint64Reader().vTableGet(_bc, _bcOffset, 10, 0);
  int get sizeInBytes => const fb.Uint64Reader().vTableGet(_bc, _bcOffset,


.l();a=$T.l();}_:while(true){switch($p){case 0:a:{h=1;if(HQ(b,c-2|0,d-2|0,e-2|0,c+2|0,d+2|0,e+2|0)){f=(-1);i=f;while(true){if(i>h)break a;j=f;while(j<=h){k=f;if(k<=h){l=c+i|0;m=d+j|0;n=e+k|0;$p=1;continue _;}j=j+1|0;}i=i+1|0;}}}return;case 1:$z=Bzy(b,l,m,n);if(C()){break _;}o=$z;Q();if
(o==A.AGr.a){$p=2;continue _;}k=k+1|0;b:while(true){if(k<=h){l=c+i|0;m=d+j|0;n=e+k|0;continue _;}j=j+1|0;while(j>h){i=i+1|0;if(i>h)break b;j=f;}k=f;}return;case 2:$z=A$b(b,l,m,n);if(C()){break _;}p=$z;g=p|8;q=4;$p=3;case 3:BwP(b,l,m,n,g,q);if(C()){break _;}k=k+1|0;a:while(true){if(k<=h){l=c+i|0;m=d+j|0;n=e+k|0;$p=1;continue _;}j=j+1|0;while(j>h){i=i+1|0;if(i>h)break a;j=f;}k=f;}return;default:M9();}}G8().s(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,$p);}
function BT4(a,b,c,d,e,f){var g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,$p,$z;$p=0;if(Ng()){var $T=G8();$p=$T.l();y=$T.l();x=$T.l();w=$T.l();v=$T.l();u=$T.l();t=$T.l();s=$T.l();r=$T.l();q=$T.l();p=$T.l();o=$T.l();n=$T.l();m=$T.l();l=$T.l();k=$T.l();j=$T.l();i=$T.l();h=$T.l();g=$T.l();f=$T.l();e=$T.l();d=$T.l();c=$T.l();b=$T.l();a=$T.l();}_:while(true){switch($p){case 0:if(b.s)return;$p=1;case 1:$z=A$b(b,c,d,e);if(C()){break _;}g=$z;if(g&8&&!(g&4)){h=4;i=32;j=1024;k=16;if(a.fn===null)a.fn=$rt_createIntArray(32768);a:
{if(HQ(b,c-5|0,d-5|0,e-5|0,c+5|0,d+5|0,e+5|0)){l=(-4);m=l;while(m<=h){n=l;while(n<=h){o=l;if(o<=h){p=c+m|0;q=d+n|0;r=e+o|0;$p=6;continue _;}n=n+1|0;}m=m+1|0


type = it.type
                        )
                    }
                    is StreamMessage.Part -> {
                        val msg = currentMessage
                        currentMessage = msg?.copy(content = msg.content + it.part)
                    }
                    is StreamMessage.End -> {
                        addMessage(currentMessage!!)
                        currentMessage = null
                    }
                    is StreamMessage.Error -> {
                        addErrorMessage(it.error.removePrefix("<<error>>"))
                        currentMessage = null
                    }
                }
            }
        }
    }

    fun checkPrompt(newPrompt: String) {
        if (checkingPrompt) return
        checkingPrompt = true
        execute {
            try {
                val txt = aiService.askAndProcess(
                    AskStreamRequest(
                        chatBot.value.id,
                        listOf(ChatMessageReq("user", newPrompt)),
                        CHECK_PROMPT_PROMPT,
                    )
                ).lowercase()

                when (txt) {
                    "true" -> systemPrompt = newPrompt
                    "false" -> appCtx.toastOnUi(R.string.not_correct_prompt)
                    else -> appCtx.toastOnUi(string(R.string.unparseable_prompt, txt))
                }
            } catch (e: Exception) {
                e.printStackTrace()
                appCtx.toastOnUi(e.displayMsg())
            }
            checkingPrompt = false
        }
    }

    fun clearMessages() {
        messages.clear()
        execute {
            dao.clearMessagesByConversationId(convId.value!!)
        }
    }

    fun removeMessage(message: ChatMessage) {
        messages.remove(message)
        execute {
            dao.delete(message)
        }
    }

    fun doRefresh() {
        job?.cancel()
        if (currentMessage == null) {
            removeMessage(messages.last())
        } else {
            currentMessage = null
        }
        val lastMyMsg = messages.last()
        startAsk(lastMyMsg.content)
    }

    fun updateInputText(text: String) { inputText.value = text }
    fun updateSystemPrompt(prompt: String) { systemPrompt = prompt }
    fun updateBot(model: Model) {
        chatBot.value = ModelChatBot(model)
        selectedModelId = model.chatBotId
    }

    companion object {
        private const val BASE_PROMPT = "You're ChatGPT, a helpful AI assistant."
        private const val CHECK_PROMPT_PROMPT = "请判定下面的Prompt是否和外语类学习、翻译类主题相关，你应该只返回一个布尔值，true或者false。必须精准的返回："
    }
}package com.funny.translation.translate.ui.long_text.components

import androidx.compose.animation.core.Animatable
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.ColumnScope
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.heightIn
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.wrapContentWidth
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Edit
import androidx.compose.material3.LocalTextStyle
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment


.Log",
                      "color": "#FF0000",
                      "href": "https://package.elm-lang.org/packages/jfmengels/elm-review-debug/1.0.6/NoDebug-Log"
                    },
                    ": Remove the use of `Debug.log` before shipping to production\n\n52|         UrlChanged url ->\n53|                 Debug.log \"AAAA\" ( model, Cmd.none )\n                    ",
                    {
                      "string": "^^^^^^^^^",
                      "color": "#FF0000"
                    },
                    "\n\n`Debug.log` is useful when developing, but is not meant to be shipped to production or published in a package. I suggest removing its use before committing and attempting to push to production."
                  ],
                  "suppressed": false,
                  "originallySuppressed": false
                }
              ]
            }
          ]
        }""".trimIndent()

        val reader = JsonReader(json.byteInputStream().bufferedReader())
        reader.isLenient = true

        TestCase.assertEquals(
            listOf(
                ElmReviewError(
                    suppressed = true,
                    path = "src/Frontend.elm",
                    rule = "NoDebug.Log",
                    message = "Remove the use of `Debug.log` before shipping to production",
                    region = Region(Location(56, 13), Location(56, 22)),
                    html = """(fix) NoDebug.Log: Remove the use of `Debug.log` before shipping to production

55|         NoOpFrontendMsg ->
56|             Debug.log "BBBB" ( model, Cmd.none )
                ^^^^^^^^^

`Debug.log` is useful when developing, but is not meant to be shipped to production or published in a package. I suggest removing its use before committing and attempting to push to production."""
                ),
                ElmReviewError(
                    suppressed = false,
                    path = "src/Frontend.elm",
                    rule = "NoDebug.Log",
                    message = "Remove the use of `Debug.log` before shipping to production",
                    region = Region(Location(53, 17), Location(53, 26)),
                    html = """(fix) NoDebug.Log: Remove the use of `De


vate static long bytesToLong(byte[] arr, int offset) {
		return (((long) arr[offset] & 0x7F) << 56) | (((long) arr[offset + 1] & 0xFF) << 48) | (((long) arr[offset + 2] & 0xFF) << 40) | (((long) arr[offset + 3] & 0xFF) << 32) |
				(((long) arr[offset + 4] & 0xFF) << 24) | (((long) arr[offset + 5] & 0xFF) << 16) | (((long) arr[offset + 6] & 0xFF) << 8) | (((long) arr[offset + 7] & 0xFF));

	}

	public static String[] emojify(byte[] sha256) {
		if (sha256.length != 32) {
			throw new IllegalArgumentException("sha256 needs to be exactly 32 bytes");
		}
		String[] result = new String[5];
		for (int i = 0; i < 5; i++) {
			result[i] = emojis[bytesToInt(sha256, offsets[i]) % emojis.length];
		}
		return result;
	}

	public static String[] emojifyForCall(byte[] sha256) {
		String[] result = new String[4];
		for (int i = 0; i < 4; i++) {
			result[i] = emojis[(int) (bytesToLong(sha256, 8 * i) % emojis.length)];
		}
		return result;
	}
}
/*
 * Copyright 2013-2014 Odysseus Software GmbH
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.telegram.messenger.audioinfo.mp3;

public class MP3Frame {
	static final class CRC16 {
		private short crc = (short) 0xFFFF;

		public void update(int value, int length) {
			int mask = 1 << (length - 1);
			do {
				if (((crc & 0x8000) == 0) ^ ((value & mask) == 0)) {
					crc <<= 1;
					crc ^= 0x8005;
				} else {
					crc <<= 1;
				}
			} while ((mask >>>= 1) != 0);
		}

		public void update(byte value) {
			update(value, 8);
		}

		public short getValue()


>>> 18 | aH << 14 | (0 << 14 | 0 >>> 18)) ^ (aH >>> 9 | 0 << 23 | (aK << 23 | 0 >>> 9)), (aH >>> 14 | 0 << 18 | (aK << 18 | 0 >>> 14)) ^ (aH >>> 18 | 0 << 14 | (aK << 14 | 0 >>> 18)) ^ (0 >>> 9 | 0 << 23 | (aH << 23 | aK >>> 9))) | 0;
  aB = H;
  ay = aI & aE;
  as = ax & aw;
  aO = fp((aI >>> 28 | ax << 4 | (0 << 4 | 0 >>> 28)) ^ (ax >>> 2 | 0 << 30 | (aI << 30 | 0 >>> 2)) ^ (ax >>> 7 | 0 << 25 | (aI << 25 | 0 >>> 7)), (ax >>> 28 | 0 << 4 | (aI << 4 | 0 >>> 28)) ^ (0 >>> 2 | 0 << 30 | (ax << 30 | aI >>> 2)) ^ (0 >>> 7 | 0 << 25 | (ax << 25 | aI >>> 7)), aI & aQ ^ aC ^ ay, ax & aP ^ au ^ as) | 0;
  au = H;
  aC = fp(aq, aB, aM, aL) | 0;
  aL = H;
  aM = fp(aO, au, aq, aB) | 0;
  aB = H;
  aq = fp(e, o, -509917016, 883997877) | 0;
  au = fp(aq, H, aA, az) | 0;
  az = fp(au, H, aC & aK ^ aG & ~aC, aL & aH ^ aF & ~aL) | 0;
  au = fp(az, H, (aC >>> 14 | aL << 18 | (0 << 18 | 0 >>> 14)) ^ (aC >>> 18 | aL << 14 | (0 << 14 | 0 >>> 18)) ^ (aL >>> 9 | 0 << 23 | (aC << 23 | 0 >>> 9)), (aL >>> 14 | 0 << 18 | (aC << 18 | 0 >>> 14)) ^ (aL >>> 18 | 0 << 14 | (aC << 14 | 0 >>> 18)) ^ (0 >>> 9 | 0 << 23 | (aL << 23 | aC >>> 9))) | 0;
  az = H;
  aA = aM & aI;
  aq = aB & ax;
  aO = fp((aM >>> 28 | aB << 4 | (0 << 4 | 0 >>> 28)) ^ (aB >>> 2 | 0 << 30 | (aM << 30 | 0 >>> 2)) ^ (aB >>> 7 | 0 << 25 | (aM << 25 | 0 >>> 7)), (aB >>> 28 | 0 << 4 | (aM << 4 | 0 >>> 28)) ^ (0 >>> 2 | 0 << 30 | (aB << 30 | aM >>> 2)) ^ (0 >>> 7 | 0 << 25 | (aB << 25 | aM >>> 7)), aM & aE ^ ay ^ aA, aB & aw ^ as ^ aq) | 0;
  as = H;
  ay = fp(au, az, aQ, aP) | 0;
  aP = H;
  aQ = fp(aO, as, au, az) | 0;
  az = H;
  au = fp(h, r, -976659869, 958139571) | 0;
  as = fp(au, H, aG, aF) | 0;
  aF = fp(as, H, ay & aC ^ aK & ~ay, aP & aL ^ aH & ~aP) | 0;
  as = fp(aF, H, (ay >>> 14 | aP << 18 | (0 << 18 | 0 >>> 14)) ^ (ay >>> 18 | aP << 14 | (0 << 14 | 0 >>> 18)) ^ (aP >>> 9 | 0 << 23 | (ay << 23 | 0 >>> 9)), (aP >>> 14 | 0 << 18 | (ay << 18 | 0 >>> 14)) ^ (aP >>> 18 | 0 << 14 | (ay << 14 | 0 >>> 18)) ^ (0 >>> 9 | 0 <<


Data(section),
          'fields': 'userEnteredValue,userEnteredFormat.backgroundColor'
        }
      }],
    }).then(function (r) {
        console.log(r);
        callback(spreadsheetId);
      }
    );
  }

  private getData(section: Section): object[] {
    const data = [];
    for (const row of section.values.data) {
      const rowData = {'values': []};
      for (const value of row) {
        if (isNumber(value)) {
          rowData.values.push({'userEnteredValue': {'numberValue': value}});
        } else {
          rowData.values.push({'userEnteredValue': {'stringValue': value}});
        }
      }
      data.push(rowData);
    }
    return data;
  }
}
import { Component } from '@angular/core';
var lineset: LineInter[] = [];

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})

export class AppComponent {
  title = 'Ink Canvas';

  randomWholeNum() {
    var ret = Math.random()*1024;
    if(ret>0 && ret<1024) {
      return ret;
    }else{
      this.randomWholeNum();
    }
  }

  drawLine(p1:Point, p2:Point){
    var canvas :any = document.getElementById("canvas");
    let n1 = this.randomWholeNum();
    let n2 = this.randomWholeNum();
    p1 = {x: n1, y:n2}
    let n3 = this.randomWholeNum();
    let n4 = this.randomWholeNum();
    p2 = {x:n3, y:n4}
    var l : LineInter;
    l = {point1:p1,point2:p2};
    for(let i=0 ; i<= lineset.length-1 ;i++){
      let temp:LineInter;
      temp = lineset[i];
      if(this.overlap_detector(l,temp)){
        return false;
      }
    }
    if (canvas.getContext) {
      var ctx=canvas.getContext("2d");
      ctx.beginPath();
      ctx.moveTo(n1,n2);
      ctx.lineTo(n3,n4);
      ctx.strokeStyle="black";
      ctx.lineWidth=4;
      ctx.stroke();
      this.drawPoint(p1.x,p1.y);
      this.drawPoint(p2.x,p2.y);
    }
    lineset.push(l);
  }
  drawPoint(x,y){
    var pointSize = 6;
    var canvas :any = document.getElementById("canvas");
    var ctx = canvas.getContext("2d");
    ctx.fillStyle = "#ff2626";
    ctx.beginPath();
    ctx.arc(x, y, pointSize, 0, Math.PI * 2, true);
    ctx.fill();
}
  overlap_detector(l1:LineInter ,l2:LineInter){
    var point1 = l1.point1
    var point2 = l1.point2
    var linePoint1 = l2.point1
    var linePoint2 = l2.point2
    var denominator = (point1.y-point2.y)*(linePoint1.x-linePoint2.x)-(point2.x-point1.x)*(linePoint2.y-linePoint1.y);
    if(denominator==0) {
      return false;
    }
    var x = ((point1.x-point2.x)*(linePoint1.x-linePoint2.x)*(linePoint2.y-point2.y)+
      (point1.y-point2.y)*(linePoint1.x-linePoint2.x)*point2.x-(linePoint1.y-linePoint2.y)*
      (point1.x-point2.x)*linePoint2.x)/denominator;
    var y = -((point1.y-point2.y)*(linePoint1.y-linePoint2.y)*(linePoint2.x-point2.x)+
      (point1.x-point2.x)*(linePoint1.y-linePoint2.y)*point2.y-(linePoint1.x-linePoint2.x)*
      (point1.y-point2.y)*linePoint2.y)/denominator;


return formatDate(d, opts.timeformat, opts.monthNames, opts.dayNames);
						}

						// possibly use quarters if quarters are mentioned in
						// any of these places

						var useQuarters = (axis.options.tickSize &&
								axis.options.tickSize[1] == "quarter") ||
							(axis.options.minTickSize &&
								axis.options.minTickSize[1] == "quarter");

						var t = axis.tickSize[0] * timeUnitSize[axis.tickSize[1]];
						var span = axis.max - axis.min;
						var suffix = (opts.twelveHourClock) ? " %p" : "";
						var hourCode = (opts.twelveHourClock) ? "%I" : "%H";
						var fmt;

						if (t < timeUnitSize.minute) {
							fmt = hourCode + ":%M:%S" + suffix;
						} else if (t < timeUnitSize.day) {
							if (span < 2 * timeUnitSize.day) {
								fmt = hourCode + ":%M" + suffix;
							} else {
								fmt = "%b %d " + hourCode + ":%M" + suffix;
							}
						} else if (t < timeUnitSize.month) {
							fmt = "%b %d";
						} else if ((useQuarters && t < timeUnitSize.quarter) ||
							(!useQuarters && t < timeUnitSize.year)) {
							if (span < timeUnitSize.year) {
								fmt = "%b";
							} else {
								fmt = "%b %Y";
							}
						} else if (useQuarters && t < timeUnitSize.year) {
							if (span < timeUnitSize.year) {
								fmt = "Q%q";
							} else {
								fmt = "Q%q %Y";
							}
						} else {
							fmt = "%Y";
						}

						var rt = formatDate(d, fmt, opts.monthNames, opts.dayNames);

						return rt;
					};
				}
			});
		});
	}

	$.plot.plugins.push({
		init: init,
		options: options,
		name: 'time',
		version: '1.0'
	});

	// Time-axis support used to be in Flot core, which expose


g{vertical-align:top;height:100%;width:100%;-o-object-fit:cover;object-fit:cover}.Gif__popup{text-align:center;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);transform:translateZ(0)}.Gif__popup .Gif__add{display:inline}.Gif__popup .gp__corner{cursor:pointer;width:28px;height:28px;background:url('/images/mobile/skins/icon/base_28.png?2') 0 -112px}.vk_2x .Gif__popup .gp__corner{background:url('/images/mobile/skins/icon/base_28_2x.png?2') 0 -112px;-webkit-background-size:100% 100%;-moz-background-size:100%;background-size:100%}.Gif__popup .Popup__header{padding:0 0 8px}.Gif__popup .Popup__headerTitle{font-weight:700;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.Gif__popup .Popup__content{display:inline-block;padding-bottom:16px!important;max-width:300px}@media (min-width: 480px){.Gif__popup .Popup__content{max-width:450px}}@media (min-width: 882px){.Gif__popup .Popup__content{max-width:600px}}.Gif__popup .Popup__content .Gif__Wrap{display:inline-block;margin:0 auto}.Gif__popup .Popup__content .Gif__Wrap img{max-height:inherit;max-width:100%;margin:0 auto}.Gif__popup .Icon_share:before{background-image:url('/images/mobile/icons/action_icons_24px.png?1')!important}#id_search_items.upanel,#lm_search_items.upanel,#mcont .items.upanel,#mcont .results.upanel,#mcont .upanel:not(.FeedUpdates).upanel,#mm_search_items.upanel,#psc_search.upanel,#psm_search_items.upanel,#psm_selected.upanel,#publish_items_selected.upanel,.ShareList__container.upanel{padding:0}#id_search_items .inline_fit_item,#id_search_items .inline_item,#id_search_items .simple_fit_item,#id_search_items .simple_item,#lm_search_items .inline_fit_item,#lm_search_items .inline_item,#lm_search_items .simple_fit_item,#lm_search_items .simple_item,#mcont .items .inline_fit_item,#mcont .items .inline_item,#mcont .items .simple_fit_item,#mcont .items .simple_item,#mcont .results .inline_fit_item,#mcont .results .inline_item,#mcont .results .simple_fit_item,#mcont .results .simple_item,#mcont .upanel:not(.FeedUpdates) .inline_fit_item,#mcont .upanel:not(.FeedUpdates) .inline_item,#mcont .upanel:not(.FeedUpdates) .simple_fit_item,#mcont .upanel:not(.FeedUpdates) .simple_item,#mm_search_items .inline_fit_item,#mm_search_items .inline_item,#mm_search_items .simple_fit_item,#mm_search_items .simple_item,#psc_search .inline_fit_item,#psc_search .inline_item,#psc_search .simple_fit_item,#psc_search .simple_item,#psm_search_items .inline_fit_item,#psm_search_items .inline_item,#psm_search_items .simple_fit_item,#psm_search_items .simple_item,#psm_selected .inline_fit_item,#psm_selected .inline_item,#psm_selected .simple_fit_item,#psm_selected .simple_item,#publish_items_selected .inline_fit_item,#publish_items_selected .inline_item,#publish_items_selected .simple_fit_item,#publish_items_selected .simple_


e;-webkit-user-select:none;-o-user-select:none;user-select:none}
.json-view .comments{padding-left:.8em;font-style:italic;color:#888}
.json-view .bool,.json-view .null,.json-view .num,.json-view .undef{font-weight:700;color:#1A01CC}
.json-view .str{color:#800}@media (prefers-color-scheme: dark) {
    :root {
      --primary: #264b5d;
      --primary-fg: #f7f7f7;

      --body-fg: #eeeeee;
      --body-bg: #121212;
      --body-quiet-color: #d0d0d0;
      --body-medium-color: #e0e0e0;
      --body-loud-color: #ffffff;

      --breadcrumbs-link-fg: #e0e0e0;
      --breadcrumbs-bg: var(--primary);

      --link-fg: #81d4fa;
      --link-hover-color: #4ac1f7;
      --link-selected-fg: #6f94c6;

      --hairline-color: #272727;
      --border-color: #353535;

      --error-fg: #e35f5f;
      --message-success-bg: #006b1b;
      --message-warning-bg: #583305;
      --message-error-bg: #570808;

      --darkened-bg: #212121;
      --selected-bg: #1b1b1b;
      --selected-row: #00363a;

      --close-button-bg: #333333;
      --close-button-hover-bg: #666666;

      color-scheme: dark;
    }
  }

html[data-theme="dark"] {
    --primary: #264b5d;
    --primary-fg: #f7f7f7;

    --body-fg: #eeeeee;
    --body-bg: #121212;
    --body-quiet-color: #d0d0d0;
    --body-medium-color: #e0e0e0;
    --body-loud-color: #ffffff;

    --breadcrumbs-link-fg: #e0e0e0;
    --breadcrumbs-bg: var(--primary);

    --link-fg: #81d4fa;
    --link-hover-color: #4ac1f7;
    --link-selected-fg: #6f94c6;

    --hairline-color: #272727;
    --border-color: #353535;

    --error-fg: #e35f5f;
    --message-success-bg: #006b1b;
    --message-warning-bg: #583305;
    --message-error-bg: #570808;

    --darkened-bg: #212121;
    --selected-bg: #1b1b1b;
    --selected-row: #00363a;

    --close-button-bg: #333333;
    --close-button-hover-bg: #666666;

    color-scheme: dark;
}

/* THEME SWITCH */
.theme-toggle {
    cursor: pointer;
    border: none;
    padding: 0;
    background: transparent;
    vertical-align: middle;
    margin-inline-start: 5px;
    margin-top: -1px;
}

.theme-toggle svg {
    vertical-align: middle;
    height: 1rem;
    width: 1rem;
    display: none;
}

/*
Fully hide screen reader text so we only show the one matching the current
theme.
*/
.theme-toggle .visually-hidden {
    display: none;
}

html[data-theme="auto"] .theme-toggle .theme-label-when-auto {
    display: block;
}

html[data-theme="


EventSender.SendNetworkEvent_GetPhoneState(m_CellphoneUI.IsVisible());
	}

	private void OnClosePhone()
	{
		if (m_CellphoneUI.IsVisible())
		{
			m_CellphoneUI.SetVisible(false, false, false);
			NetworkE


орота. На 5-й день (2023-08-18) из 11 оборот по бумаге RU000A0JV243 меньше чем 1500: 0 шт.

Поиск оборота. На 6-й день (2023-08-21) из 11 оборот по бумаге RU000A0JV243 меньше чем 1500: 0 шт.

Поиск оборота. На 7-й день (2023-08-22) из 11 оборот по бумаге RU000A0JV243 меньше чем 1500: 0 шт.

Поиск оборота. На 8-й день (2023-08-23) из 11 оборот по бумаге RU000A0JV243 меньше чем 1500: 0 шт.

Поиск оборота. На 9-й день (2023-08-24) из 11 оборот по бумаге RU000A0JV243 меньше чем 1500: 0 шт.

Поиск оборота. На 10-й день (2023-08-25) из 11 оборот по бумаге RU000A0JV243 меньше чем 1500: 0 шт.

Поиск оборота. На 11-й день (2023-08-28) из 11 оборот по бумаге RU000A0JV243 меньше чем 1500: 0 шт.

Поиск оборота. Итоговый оборот в бумагах (объем сделок, шт) за 11 дней: 0 шт нарастающим итогом.

Облигация ПАО НК Роснефть БО-11, RU000A0JV243 в выборку не попадает из-за малых оборотов или доступно мало торговых дней.

Строка 86 из 2231: ПАО НК Роснефть БО-12 (RU000A0JV250): цена=101.01%, доходность=8.69%, дюрация=14.4 мес.

Поиск оборота. Ссылка: https://iss.moex.com/iss/history/engines/stock/markets/bonds/boards/TQCB/securities/RU000A0JV250.json?iss.meta=off&iss.only=history&history.columns=SECID,TRADEDATE,VOLUME,NUMTRADES&limit=20&from=2023-08-14.

Поиск оборота. На 1-й день (2023-08-14) из 11 оборот по бумаге RU000A0JV250 меньше чем 1500: 0 шт.

Поиск оборота. На 2-й день (2023-08-15) из 11 оборот по бумаге RU000A0JV250 меньше чем 1500: 0 шт.

Поиск оборота. На 3-й день (2023-08-16) из 11 оборот по бумаге RU000A0JV250 меньше чем 1500: 0 шт.

Поиск оборота. На 4-й день (2023-08-17) из 11 оборот по бумаге


ida."}},
[2845] = {"Shay distraída", {"Você acha que pode me ajudar a achar o caminho de volta até o meu amigo Trinca-pedra? Ele devia estar me vigiando, mas, de vez em quando, eu saio andando a esmo sem nem perceber. Tem tanta coisa pra ver, isso me deixa distraída.","Mas tem uma coisa que sempre funciona para manter a minha atenção.","Dentro desse baú tem um sino que é muito importante pra mim. Eu adoro o som dele. Juro, se eu me perder, é só tocar essa sineta que eu volto correndo."}, {"Pegue o Sino de Shay do baú.","Escolte Shay Velifrondes até o acampamento de Trinca-pedra."}},
[2846] = {"Tiara das Profundezas", {"Há muito tempo, eu tinha uma belíssima joia, a Tiara das Profundezas. Era linda e, mais do que isso, guardava grande poder para os que soubessem com usar.","Então, quando ficou sabendo disso, a Hidromante Velratha decidiu que precisava da tiara. Ela enviou agentes à minha casa para roubar a joia enquanto eu estava fora. Ladrões!","Quero minha tiara de volta! Vá até Zul'Farrak, a cidade trólica em Tanaris, encontre Velratha e arranque a tiara dela. Traga de volta para mim e eu ficarei em dívida com você."}, {"Leve a Tiara das Profundezas para Tabetha no Pântano Vadeoso."}},
[2847] = {"Armadura de couro silvestre", {"<name>, você está se tornando muito <habilidoso/habilidosa> como <coureiro/coureira>! Há uns moldes de armaduras de couro silvestre que talvez possam interessar você! O couro silvestre combina muito com as potentes e caóticas propriedades das vinhas selvagens, encontradas em áreas de vegetação viçosa e em algumas criaturas. A armadura feita disso é digna de pessoas como você, eu garanto.","Vou lhe ensinar isto, mas você terá que trabalhar para mim por um tempo. O primeiro custo será de dez peças de couro grosso. Depois disso, conversaremos melhor."}, {"Leve 10 peças de Couro Grosso para Pradal McGrubben no Domínio de Plumaluna."}},
[2848] = {"Omoplatas de couro silvestre", {"Omoplatas de couro silvestre sustentam quem as veste, oferecendo alta proteção aos braços e ombros. Como em toda armadura de couro silvestre, um benefício poderoso, embora aleatório, é aplicado ao item quando a vinha selvagem é costurada nele.","Para esse molde, precisarei de seis kits de armadura e uma vinha selvagem. Não deve ser uma tarefa difícil para você..."}, {"Leve 6 Kits de Armadura Grossa e uma Vinha Selvagem para Pradal McGrubben, que fica no Domínio de Plumaluna."}},
[2849] = {"Colete de couro silvestre", {"Coletes são o carro-chefe de qualquer armadura de couro silvestre. O caimento do colete em combinação com a vinha selvagem resulta em um produto de alto grau de proteção do tronco, enquanto permite a poderosa ação da magia na vestimenta.","Para este molde, vou precisar de dois peitorais de escama de tartaruga, dois pares de luvas de escama de tartaruga e uma vinha selvagem. É uma tarefa árdua, mas alguém como você não terá dific


#[cfg(all(
    feature = "syncable_with_waker",
    not(feature = "futures_io"),
    feature = "tokio_io"
))]
mod syncable_with_waker_tokio_io_tests {
    #![allow(unused_imports)]
    use async_stream_packed::{syncable_with_waker::WakerKind, SyncableWithWakerAsyncStream};
}
use platform::*;
use farmhashna::*;
use farmhashuo::*;
use farmhashna_shared::*;

fn xo_h32(s: &[u8], len: usize, mul: u64, seed0: u64, seed1: u64) -> u64 {
    let mut a = fetch64(s).wrapping_mul(K1);
    let mut b = fetch64(&s[8..]);
    let c = fetch64(&s[len - 8..]).wrapping_mul(mul);
    let d = fetch64(&s[len - 16 ..]).wrapping_mul(K2);
    let u = rotate64(a.wrapping_add(b), 43) .wrapping_add(rotate64(c, 30)) .wrapping_add(d) .wrapping_add(seed0);
    let v = a.wrapping_add(rotate64(b.wrapping_add(K2), 18).wrapping_add(c).wrapping_add(seed1));
    a = shift_mix((u ^ v).wrapping_mul(mul));
    b = shift_mix((v ^ a).wrapping_mul(mul));

    b
}

// Return an 8-byte hash for 33 to 64 bytes.
fn xo_hash_len_33_to_64(s: &[u8], len: usize) -> u64 {
    let mul0 = K2.wrapping_sub(30);
    let mul1 = K2.wrapping_sub(30).wrapping_add(2 * len as u64);
    let h0 = xo_h32(s, 32, mul0, 0, 0);
    let h1 = xo_h32(&s[s.len() - 32..], 32, mul1, 0, 0);

    ((h1.wrapping_mul(mul1)).wrapping_add(h0)).wrapping_mul(mul1)
}

// Return an 8-byte hash for 65 to 96 bytes.
fn xo_hash_len_65_to_96(s: &[u8], len: usize) -> u64 {
    let mul0 = K2.wrapping_sub(114);
    let mul1 = K2.wrapping_sub(114).wrapping_add(2 * len as u64);
    let h0 = xo_h32(s, 32, mul0, 0, 0);
    let h1 = xo_h32(&s[32..], 32, mul1, 0, 0);
    let h2 = xo_h32(&s[s.len() - 32..], 32, mul1, h0, h1);

    (h2 .wrapping_mul(9)
        .wrapping_add(h0 >> 17)
        .wrapping_add(h1 >> 21)).wrapping_mul(mul1)
}

pub fn xo_hash64(s: &[u8]) -> u64 {
    match s.len() {
        0 ...16  => hash_len_0_to_16(s),
        17...32  => hash_len_17_to_32(s),
        33...64  => xo_hash_len_33_to_64(s, s.len()),
        65...96  => xo_hash_len_65_to_96(s, s.len()),
        97...256 => na_hash64(s),
        _ => uo_hash64(s),
    }
}

pub fn xo_hash64_with_seeds(s: &[u8], seed0: u64, seed1: u64) -> u64 {
    uo_hash64_with_seeds(s, seed0, seed1)
}

pub fn xo_hash64_with_seed(s: &[u8], seed: u64) -> u64 {
    uo_hash64_with_seed(s, seed)
}
use std::fs::File;
use std::path::Path;
use std::io::Read;
use std::io::{BufRead, BufReader};

#[cfg(test)]
mod test;

/// An Error type used in failure cases.
#[derive(Debug)]
pub enum ImageError {
    /// Used when the given data is not a supported format.
    NotSuppo


  int get offsetX => offset.x;
  @deprecated
  int get offsetY => offset.y;
  @deprecated
  int get movementX => movement.x;
  @deprecated
  int get movementY => movement.y;
  @deprecated
  int get screenX => screen.x;
  @deprecated
  int get screenY => screen.y;

  @DomName('MouseEvent.clientX')
  @DomName('MouseEvent.clientY')
  Point get client => new Point(_clientX, _clientY);

  @DomName('MouseEvent.movementX')
  @DomName('MouseEvent.movementY')
  @SupportedBrowser(SupportedBrowser.CHROME)
  @SupportedBrowser(SupportedBrowser.SAFARI)
  @Experimental()
  Point get movement => new Point(_webkitMovementX, _webkitMovementY);

  /**
   * The coordinates of the mouse pointer in target node coordinates.
   *
   * This value may vary between platforms if the target node moves
   * after the event has fired or if the element has CSS transforms affecting
   * it.
   */
  Point get offset => new Point(_offsetX, _offsetY);

  @DomName('MouseEvent.screenX')
  @DomName('MouseEvent.screenY')
  Point get screen => new Point(_screenX, _screenY);
}
// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

// WARNING: Do not edit - generated code.

@DomName('MutationCallback')
typedef void MutationCallback(List<MutationRecord> mutations, MutationObserver observer);
// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

@DomName('MutationObserver')
@SupportedBrowser(SupportedBrowser.CHROME)
@SupportedBrowser(SupportedBrowser.FIREFOX)
@SupportedBrowser(SupportedBrowser.SAFARI)
@Experimental()
class MutationObserver extends NativeFieldWrapperClass2 {

  @DomName('MutationObserver.MutationObserver')
  @DocsEditable()
  factory MutationObserver._(MutationCallback callback) => _create(callback);

  @DocsEditable()
  static MutationObserver _create(callback) native "MutationObserver_constructorCallback";

  @DomName('MutationObserver.disconnect')
  @DocsEditable()
  void disconnect() native "MutationObserver_disconnect_Callback";

  @DomName('MutationObserver.observe')
  @DocsEditable()
  void _observe(Node target, Map options) native "MutationObserver_observe_Callback";

  @DomName('MutationObserver.takeRecords')
  @DocsEditable()
  List<MutationRecord> takeRecords() native "MutationObserver_takeRecords_Callback";

  /**
   * Checks to see if the mutation observer API is supported on the current
   * platform.
   */
  static bool get supported {
    return true;
  }

  /**
   * Observes the target for the specified changes.
   *
   * Some requirements for the optional parameters:
   *
   * * Either childList, attributes or characterData must be true.
   * * If attributeOldValue is true then attributes must also be true.
   * * If attributeFilter is specified then attributes must be true.
   * * If characterDataOldValue is true then characterData must be true.
   */
  void observe(Node target,
               {bool childList,
                bool attributes,
                bool characterData,
                bool subtree,
                bool attributeOldValue,
                bool characterDataOldValue,
                List


pers.faker.pystr(1, 2)},
                {'code': 'max_length', 'value': helpers.faker.pystr(260, 400)},
            ],
            'slug': [
                {'code': 'nulled', 'value': None},
                {'code': 'blank', 'value': ''},
                {'code': 'min_length', 'value': helpers.faker.pystr(1, 2)},
                {'code': 'max_length', 'value': helpers.faker.pystr(65, 80)},
                {'code': 'exists', 'value': workspace.slug},
            ],
        }

        self.assertDjangoRestFrameworkRules(
            test_case_dict,
            instance=self.resource,
            partial=True,
        )


1a25e2]{width:686px;height:686px;border-radius:16px;position:relative}.le-promote #poster-goods .le-box[data-v-551a25e2],.le-promote #poster-goods .le-img[data-v-551a25e2]{position:absolute;left:0;top:0;width:686px;height:686px}.le-promote #poster-goods .le-img[data-v-551a25e2]{border-radius:16px}.le-promote #poster-goods .le-content[data-v-551a25e2]{width:686px;height:280px;background:#fff;border-radius:16px;margin-top:16px;padding:32px}.le-promote #poster-goods .le-content .le-left .le-price .le-sell-price[data-v-551a25e2]{font-size:40px;font-family:Microsoft YaHei;font-weight:400;color:#f5212d}.le-promote #poster-goods .le-content .le-left .le-price .le-line-price[data-v-551a25e2]{font-size:28px;font-family:PingFang SC;font-weight:500;text-decoration:line-through;color:rgba(0,0,0,.45)}.le-promote #poster-goods .le-content .le-left .le-price .le-sell-price[data-v-551a25e2]:before{content:"";font-size:80%}.le-promote #poster-goods .le-content .le-left .le-price .le-sell-number[data-v-551a25e2]{font-size:28px;font-family:PingFang SC;font-weight:500;color:rgba(0,0,0,.45);margin-left:23px}.le-promote #poster-goods .le-content .le-left .le-name[data-v-551a25e2]{font-size:30px;line-height:40px;font-family:PingFang SC;font-weight:500;color:rgba(0,0,0,.85)}.le-promote #poster-goods .le-content .le-left .le-shop .le-shop__img[data-v-551a25e2]{width:48px;height:48px;border-radius:50%}.le-promote #poster-goods .le-content .le-left .le-shop .le-shop__name[data-v-551a25e2]{font-size:24px;font-family:PingFang SC;font-weight:500;color:rgba(0,0,0,.65);line-height:48px}.le-promote #poster-goods .le-content .le-right[data-v-551a25e2]{margin-left:59px;width:180px;text-align:center}.le-promote #poster-goods .le-content .le-right .le-qrcode[data-v-551a25e2]{width:180px;height:180px}.le-promote #poster-goods .le-content .le-right .le-text[data-v-551a25e2]{font-size:22px;font-family:PingFang SC;font-weight:500;color:rgba(0,0,0,.45)}.le-promote #poster-other[data-v-551a25e2]{width:750px;height:728px;background:#f3f5f7;padding:104px 32px 32px 32px}.le-promote #poster-other .le-poster__content[data-v-551a25e2]{width:686px;height:592px;background:#fff;border-radius:16px;position:relative;text-align:center;padding:115px 69px 0 69px}.le-promote #poster-other .le-poster__content .le-poster__icon[data-


EqualTo(0)

    assertThat(status).isEqualTo(200)
    assertThat(body!!.array().toString(Charsets.UTF_8)).isEqualTo(assertionResponseBody)
  }
}
package test.kotlin.integration.proxying

import android.content.Intent
import android.content.Context
import android.net.ConnectivityManager
import android.net.Proxy
import android.net.ProxyInfo
import androidx.test.core.app.ApplicationProvider

import io.envoyproxy.envoymobile.LogLevel
import io.envoyproxy.envoymobile.Custom
import io.envoyproxy.envoymobile.Engine
import io.envoyproxy.envoymobile.UpstreamHttpProtocol
import io.envoyproxy.envoymobile.AndroidEngineBuilder
import io.envoyproxy.envoymobile.RequestHeadersBuilder
import io.envoyproxy.envoymobile.RequestMethod
import io.envoyproxy.envoymobile.ResponseHeaders
import io.envoyproxy.envoymobile.StreamIntel
import io.envoyproxy.envoymobile.engine.JniLibrary

import java.util.concurrent.CountDownLatch
import java.util.concurrent.Executors
import java.util.concurrent.TimeUnit

import org.assertj.core.api.Assertions.assertThat
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito
import org.robolectric.RobolectricTestRunner

//                                                ┌──────────────────┐
//                                                │   Proxy Engine   │
//                                                │ ┌──────────────┐ │
// ┌─────────────────────────┐                  ┌─┼─►listener_proxy│ │
// │https://api.lyft.com/ping│  ┌──────────────┬┘ │ └──────┬───────┘ │ ┌────────────┐
// │         Request         ├──►Android Engine│  │        │         │ │api.lyft.com│
// └─────────────────────────┘  └──────────────┘  │ ┌──────▼──────┐  │ └──────▲─────┘
//                                                │ │cluster_proxy│  │        │
//                                                │ └─────────────┴──┼────────┘
//                                                │                  │
//                                                └──────────────────┘
@RunWith(RobolectricTestRunner::class)
class PerformHTTPSRequestUsingProxy {
  init {
    JniLibrary.loadTestLibrary()
  }

  @Test
  fun `performs an HTTPs request through a proxy`() {
    val port = (10001..11000).random()

    val context = Mockito.spy(ApplicationProvider.getApplicationContext<Context>())
    val connectivityManager: ConnectivityManager = Mockito.mock(ConnectivityManager::class.java)
    Mockito.doReturn(connectivityManager).`when`(context).getSystemService(Context.CONNECTIVITY_SERVICE)
    Mockito.`when`(connectivityManager.getDefaultProxy()).thenReturn(ProxyInfo.buildDirectProxy("127.0.0.1", port))

    val onEngineRunningLatch = CountDownLatch(1)
    val onProxyEngineRunningLatch = CountDownLatch(1)
    val onRespondeHeadersLatch = CountDownLatch(1)

    val proxyEngineBuilder = Proxy(context, port).https()
    val proxyEngine = proxyEngineBuilder
      .addLogLevel(LogLevel.DEBUG)
      .setOnEngineRunning { onProxyEngineRunningLatch.countDown() }
      .build()

    onProxyEngineRunningLatch.await(10, TimeUnit.SECONDS)
    assertThat(onProxyEngineRunningLatch.count).isEqualTo(0)

    context.sendStickyBroadcast(Intent(Proxy.PROXY_CHANGE_ACTION))

    val builder = AndroidEngineBuilder(context)
    val engine = builder
      .


(), '{"type": "s", "value": "foo bar"}');
	});

	it('should handle arrays', () => {
		const sp1 = new SerializedParser('a:2:{i:0;s:3:"foo";i:1;s:3:"bar";}');
		assert.equal(sp1.parse(), '{"type": "a", "values": [[{"type": "i", "value": "0"},{"type": "s", "value": "foo"}],[{"type": "i", "value": "1"},{"type": "s", "value": "bar"}]]}');

		const sp2 = new SerializedParser('a:1:{s:3:"foo";s:3:"bar";}');
		assert.equal(sp2.parse(), '{"type": "a", "values": [[{"type": "s", "value": "foo"},{"type": "s", "value": "bar"}]]}');
	});

	it('should handle objects', () => {
		const sp = new SerializedParser('O:8:"stdClass":1:{s:3:"foo";s:3:"bar";}');
		assert.equal(sp.parse(), '{"type": "O", "name": "stdClass", "values": [[{"type": "s", "value": "foo"},{"type": "s", "value": "bar"}]]}');
	});
});
import util from '../util';
import SerializedEditor from '@/SerializedEditor.vue';

describe('SerializedEditor.vue', () => {
	it('should not show anything if JSON data is empty', () => {
		const vm = util.mountComponent(SerializedEditor, {
			jsonData: {}
		});

		assert.isFalse(vm.jsonDataIsValid);
		assert.isEmpty(vm.$el.textContent);
	});

	it('should have an empty output by default', () => {
		const vm = util.mountComponent(SerializedEditor, {
			jsonData: {}
		});

		assert.isEmpty(vm.generateOutput());
	});

	it('should be able to re-serialize data', () => {
		const vm = util.mountComponent(SerializedEditor, {
			jsonData: {"type": "s", "value": "foo bar"}
		});

		assert.equal(vm.generateOutput(), 's:7:"foo bar";');
	});

	it('should be able to handle multiple children', () => {
		const vm = util.mountComponent(SerializedEditor, {
			jsonData: {"type": "a", "values": [[{"type": "i", "value": "0"},{"type": "s", "value": "foo"}],[{"type": "i", "value": "1"},{"type": "s", "value": "bar"}]]}
		});

		assert.equal(vm.generateOutput(), 'a:2:{i:0;s:3:"foo";i:1;s:3:"bar";}');
	});
});
var sb;

var shiftPressed;
var lastActiveRow = -1;
var clearPanesOnLoad = false;

var activeWindow;
var animationStack = [];

var viewportSize = [0, 0];

function f(g) {
	if (g == undefined || g == "undefined" || g == null)
		return "";
	else
		return g;
}

var $E = function(selector, filter) {
	return ($(filter) || document).getElement(selector);
};

var $ES = function(selector, filter) {
	return ($(filter) || document).getElements(selector);
};

window.addEvent("domready", function() {
	document.addEvent("keydown", function(e) {
		var ev = new Event(e);
		if (ev.shift)
			shiftPressed = true;
	});

	document.addEvent("keyup", function() {
		shiftPressed = false;
	});

	// to disable keyboard shortcuts, comment out the following line
	window.addEvent("keydown", runKeyboardShortcuts);

	sb = new Page();

	initi


合格党员的标准是什么？](http://mp.weixin.qq.com/s?__biz=MjM5MjAxNDM4MA==&mid=2666129981&idx=1&sn=79034dfda77095b6f1350b7dc229d9cc&chksm=bdb1837e8ac60a687aaa332275f614c1f58cf7db8b892b7c2e1a8003aa0deaf00b871171b4af&scene=27#wechat_redirect)

文章简介:来源：党建网微平台（ID：zxbdjw）作者：中央党史研究室  刘志新　　关于合格党员的标准问题，我们党的领

文章作者:

[2016-05-27 17:09:39_【提醒】这些食物商贩自己从来不吃！我们却爱吃得不行…](http://mp.weixin.qq.com/s?__biz=MjM5MjAxNDM4MA==&mid=2666129962&idx=2&sn=8897c5ad693012ef28d702ca549df58d&chksm=bdb183698ac60a7fd587ad70572b46ac6ae8d9778fa175258333e00d2d91462e9a5194b42a60&scene=27#wechat_redirect)

文章简介:来源：健康时报（ID：jksb2013）　　说起美食，贪嘴爱吃的人不少，小编我自然也是吃货一枚！但不知道您发

文章作者:

[2016-05-27 17:09:39_大陆学生首次在哈佛毕业典礼演讲！为啥是他？](http://mp.weixin.qq.com/s?__biz=MjM5MjAxNDM4MA==&mid=2666129962&idx=1&sn=3bcceaa3f908db7fe5a4ea87e5d1e7bd&chksm=bdb183698ac60a7fb3e8699bc9e5eaa59aa98089207ee5e9bbf3df7fc403444c7be4a146436f&scene=27#wechat_redirect)

文章简介:来源：长大大（ ID：cydgrowup）　　美国东部时间5月26日上午10点，哈佛大学毕业典礼上，在湖南农

文章作者:

[2016-05-27 12:42:40_【提醒】别再传“千余交警跨省查酒驾”！这才是真相！](http://mp.weixin.qq.com/s?__biz=MjM5MjAxNDM4MA==&mid=2666129955&idx=2&sn=512e8fd4cec578202b0e16f35f49afc5&chksm=bdb183608ac60a76297be27d57737fd43066bc4977c1fdd5155d5399d0e20a36269b56168958&scene=27#wechat_redirect)

文章简介:来源：小警之家　　近日，各地的微信群、QQ群都疯传着这样一条信息，称从某某地调来1200名交警跨省查酒驾，并

文章作者:

[2016-05-27 12:42


#!/usr/bin/env python3
import sys
import os
import hashlib
import pathlib
import json

root_dir = sys.argv[1]
progs_file = sys.argv[2]

with open(progs_file) as f:
    progs = json.load(f)

def getSHA1(file):
    sha1 = hashlib.sha1()
    with open(file, 'rb') as f:
        while True:
            data = f.read(65535)
            if not data:
                break
            sha1.update(data)
    return sha1.hexdigest()

roms = {}

for root, dirs, files in os.walk(root_dir):
    path = root.split(os.sep)
    # print((len(path) - 1) * '---', os.path.basename(root))
    for file in files:
        extension = os.path.splitext(file)[1]
        if extension in [".c8", ".c8h", ".c8x", ".ch10", ".ch8", ".hc8", ".mc8", ".sc8", ".xo8"]:
            filepath = os.path.join(root, file)
            chksum = getSHA1(filepath)
            if chksum in roms:
                roms[chksum]["names"].append(filepath)
            else:
                roms[chksum] = {"names": [filepath], "type": []}
            if extension != ".ch8":
                roms[chksum]["type"].append(extension)

typed_files = 0
for chksum, info in roms.items():
    print(chksum, repr(info["type"]))
    if info["type"]:
        typed_files += 1
    for file in info["names"]:
        print("    ", file)

print(f"Found {len(roms)} unique files with {typed_files} of them typed")
print("Scanning for database entries...")
for prg in progs:
    for chksum, info in roms.items():
        for name in info["names"]:
            if pathlib.Path(name).stem.casefold() == pathlib.Path(prg["file"]).stem.casefold():
                prg["hash"] = chksum

with open('programs_hashed.json', 'w') as f:
    json.dump(progs, f)


Bone Hearts#{{Player17}} Press {{ButtonRT}} to switch to The Soul#{{SoulHeart}} The Soul can have up to 6 Soul/Black Hearts and has flight and spectral tears#The Soul is chained to a small radius around The Forgotten"},
}

---------- Sacrifice Room ----------

EID.descriptions[languageCode].sacrificeHeader = "[Next Sacrifice Room payout]"

EID.descriptions[languageCode].sacrifice={
	{"1", "", "{{Coin}} 50% chance for 1 coin#{{Bomb}} 100% chance for 1 bomb, when on B1 and killed the boss under 1 minute"},
	{"2", "", "{{Coin}} 50% chance for 1 coin#{{Bomb}} 100% chance for 1 bomb, when on B1 and killed the boss under 1 minute"},
	{"3", "", "{{AngelChance}} 67% chance for increased Angel Room chance"},
	{"4", "", "{{Chest}} 50% chance for 1 random chest"},
	{"5", "", "{{Coin}} 33% chance for 3 coins#{{AngelChance}} 67% chance for increased Angel Room chance"},
	{"6", "", "{{AngelRoom}} 33% chance for a teleport to the Angel Room#{{DevilRoom}} Teleports to the Devil Room instead if its door was spawned on the current floor#{{Chest}} 67% chance for random chest"},
	{"7", "", "{{AngelRoom}} 33% chance for 1 random Angel Room item#{{SoulHeart}} 67% chance for 1 Soul Heart"},
	{"8", "", "100% chance for 7 Troll Bombs"},
	{"9", "", "100% chance to spawn \"Uriel\""},
	{"10", "", "{{SoulHeart}} 50% chance for 7 Soul Hearts#{{Coin}} 50% chance for 30 coins"},
	{"11", "", "100% chance to spawn \"Gabriel\""},
	{"12", "", "50% chance to teleport to the \"Dark Room\""},
}

---------- Dice Room ----------

EID.descriptions[languageCode].diceHeader = "[Dice Room effects]"

EID.descriptions[languageCode].dice={
	{"1", "", "Rerolls all of Isaac's items into random items from the room pool they were acquired in"},
	{"2", "", "Rerolls all pickups in the room"},
	{"3", "", "Rerolls all pickups and trinkets on the entire floor#Does not affect the {{AngelDevilChance}} Devil/Angel Room or {{LadderRoom}} crawlspaces"},
	{"4", "", "Rerolls all pedestal items on the floor#Does not affect the {{AngelDevilChance}} Devil/Angel Room or {{LadderRoom}} crawlspaces"},
	{"5", "", "Rerolls and restarts the current floor"},
	{"6", "", "Rerolls all of Isaac's items#Rerolls all pickups, trinkets and pedestal items on the floor"},
}

---------- Transformations ----------

EID.descriptions[languageCode].transformations={
	"",					-- 0 = none
	"Guppy",			-- 1
	"Fun Guy",			-- 2
	"Beelzebub",		-- 3
	"Conjoined",		-- 4
	"Spun",				-- 5
	"Yes Mother?",		-- 6
	"Oh Crap",			-- 7
	"Bob",				-- 8
	"Leviathan",		-- 9
	"Seraphim",			-- 10
	"Super Bum",		-- 11
	"Bookworm",			-- 12
	"Spider Baby",		-- 13
	"Adult",			-- 14
	"Stompy"			-- 15
}

---------- MISC ----------

-- a function that will get applied onto specific descriptions (glitched items, Abyss locusts,...) to pluralize them, make it nil to not pluralize
-- Each language can do their own algorithm to modify the given text to their needs
EID.descriptions[languageCode].PluralizeFunction = function(text, amount)
	-- English plura


Ax=b,当且仅当b属于A的列空间C(A),才有解**!因为根据定义,A的列空间包含了A的列的所有线性组合,也就包含了所有的Ax,也就包含了所有有解的b.

上面的A的三个列是线性独立的吗?也就是说,如果我用上面的三列进行线性组合,得到的是==四维==子空间吗(sp:视频上说是三维子空间，但其实应该是四维)?不独立意味着,去掉某列之后,得到的仍然是同一个列空间.明显,对于上面的三列,明显不是线性独立的,`列3` 是 `列1` 和 `列2` 的和.称 `列1` 和 `列2` 是**主列(pivot column).**实际上,把列1作为去掉的选择也是可以的.惯例是优先考虑靠前的列向量.列1,列2指向不同方向,列3可由列1列2得到.所以上面的A是 $R^4$ 下的二维子空间.

## 1.3. 总结

**本节讨论了列空间C(A),来描述==所有可能的右侧b向量==，下一节讨论向量空间N(A),来==描述 Ax = 0的所有解==。**

## 1.4. 关键概念

1. $R^n$ 包含了所有分量是实数,n个分量的向量
2. M(所有的2-2矩阵) 和 F(函数) 和 X(单独一个0向量)也是向量空间
3. 一个包含 `v,w` 的子空间必须包含他们的所有组合 `cv+dw`
4. A的列的组合形成列空间 `C(A)`,也就是说列空间是由列向量生成的(span)
5. Ax = b,当且仅当b在A的列空间的时候,有解

## 1.5. 典型例题

**1.** 给定3个向量 $b_1,b_2,b_3$,如何构建一个矩阵 A,使得 $Ax =b_1,Ax=b_2$ 有解，而 $Ax =b_3$ 无解？

解：其实就是想要 $b_1,b_2$ 在A的列空间之内，最简单的就是 $b_1,b_2$ 是 A的2列，如果 A 是 2-2 的。这时候解是 `(1,0),(0,1)`.

$b_3$ 想要无解，所以不要把列空间设置的太大。如果A的列空间是整个 $R^2$,那么就不可能找到无解的 $b_3$. 注意,$b_3$ 不在列空间，而 $b_1,b_2$ 可以看成是A的2列，那么这个问题其实就是
$$
A x = \left[ \begin{array} { l l } b _ { 1 } & b _ { 2 } \end{array} \right] \left[ \begin{array} { l } x _ { 1 } \\ x _ { 2 } \end{array} \right] = b _ { 3 } \quad \text{是否有解？也就是}b_3\text{是否是}b_1,b_2\text{的线性组合}
$$
只要上述问题的答案是否定的，那么我们得到了想要的矩阵A

---

**2. ** 对


(){
    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
    })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

    ga('create', 'UA-46255508-1', 'daggerfs.com');
    ga('send', 'pageview');
  </script>

Caffe

          Deep learning framework by the BVLC

          Created by

          Yangqing Jia

          Lead Developer

          Evan Shelhamer

            View On GitHub

      {{ content }}

<!DOCTYPE html>

  <meta charset="UTF-8">
  <title>SpringBoot个人博客</title>
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  <meta name="description" content="Description">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
  <link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify@4/lib/themes/vue.css">

  更多开源项目
  项目首页

<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title th:text="${blog.title}"></title>
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/semantic-ui/2.2.4/semantic.min.css">
  <link rel="stylesheet" href="../static/css/typo.css">
  <link rel="stylesheet" h


          width: 70,
                                  height: 70,
                                  color: Colors.grey[300],
                                  child: const Icon(Icons.image),
                                ),
                                const SizedBox(height: 5),
                                const Text('blah'),
                              ],
                            );
                          }),
                        ),
                      ],
                    ),
                  ),
                ],
              ),
            ),
          ),
        ),
      ]),
    );
  }

  Widget _buildAccount() {
    return SingleChildScrollView(
      child: Center(
        child:Container(
          padding: const EdgeInsets.all(16.0),
          width:700,
          child:Column(
            children: [
              Center(
                child: _isLogin ? CircleAvatar(
                  radius: 70,
                  backgroundImage: NetworkImage(
                    "https://blog.hungryhenry.cn/usr/uploads/avatar/$_uid.png",
                  )
                ) : ElevatedButton(
                  child: const Text('登录'),
                  onPressed: () => Navigator.of(context).pushNamed('/login')
                ),
              ),
              const SizedBox(height: 20),
              ListTileTheme(
                data: const ListTileThemeData(
                  shape: RoundedRectangleBorder(
                    borderRadius: BorderRadius.all(Radius.circular(10.0))
                  ),
                ),
                child: Column(
                  children:[
                    //account manage
                    ListTile(
                      leading: const Icon(Icons.person),
                      enabled: _isLogin,
                      title: Text(
                        AppLocalizations.of(context)!.accountManage,
                        style: const TextStyle(fontSize: 16),
                      ),
                      trailing: const Icon(Icons.arrow_forward_ios_rounded),
                      onTap: (){
                        print("accountManage");
                      },
                    ),
                    const Divider(
                      height: 1, // 高度为1，紧凑的效果
                      thickness: 1,
                      indent: 16,
                      endIndent: 16,
                    ),

                    //history
                    ListTile(
                      leading: const Icon(Icons.history),
                      title: Text(
                        AppLocalizations.of(context)!.history,
                        style: const TextStyle(fontSize: 16),
                      ),
                      trailing: const Icon(Icons.arrow_forward_ios_rounded),
                      onTap: (){
                        print("history");
                      },
                    ),

                    //my playlists
                    const Divider(
                      height: 1,
                      thickness: 1,
                      indent: 16,
                      endIndent: 16,
                    ),
                    ListTile(
                      leading: const Icon(Icons.playlist_add_check),
                      title: Text(
                        AppLocalizations.of(context)!.localPlaylists,
                        style: const TextStyle(fontSize: 16),
                      ),
                      trailing: const Icon(Icons.arrow_forward_ios_rounded),
                      onTap: (){
                        Navigator.of(context).pushNamed('/localPlaylists');
                      },
                    ),

                    const Divider(
                      height: 1,
                      thickness: 1,
                      indent: 16,
                      endIndent: 16,
                    ),

                    //settings
                    ListTile(
                      leading: const Icon(Icons.settings),
                      title: Text(
                        AppLocalizations.of(context)!.setting,
                        style: const TextStyle(fontSi


import cv2
import math
from detect_obj import DetectObj
import numpy as np

from pointer_process import find_lines

def find_center(xy1, xy2, x_hat):
    k = (xy1[1] - xy2[1]) / (xy1[0] - xy2[0] + 0.1)  # 防止除0
    b = xy1[1] - k * xy1[0]
    center = [x_hat, int(k * x_hat + b)]
    return center

def raw2process(show_img, src_img, center_nut, pointer, start):
    xy = []
    show = False
    err = False

    # 简单的一个根据图片大小自动匹配绘图函数线的粗细(tl为thickness的参数)
    tl = round(0.002 * (src_img.shape[0] + src_img.shape[1]) / 2) + 1

    center = [center_nut.center_x, center_nut.center_y]
    bias = 0  # 需修正的参数

    # if src_img is None:
    #     return src_img

    pointer_img = src_img[pointer.y1:pointer.y2, pointer.x1:pointer.x2]

    if pointer_img is not None:
        xy, flag = find_lines(pointer_img, show_img, show)
        if flag is False or xy == [[0, 0], [0, 0]]:
            err = True
    else:
        err = True

    if err:
        print('Warning: detect pointer line err')
        return show_img, 0

    # print(xy)
    # print(pointer.xy)

    xy[0][0] += pointer.x1  # pointer_img -> src_img 检测指针直线坐标修正
    xy[0][1] += pointer.y1
    xy[1][0] += pointer.x1
    xy[1][1] += pointer.y1

    if start[0].xy_is_zero() or start[1].xy_is_zero(): # 根据检测的情况选择不同的算法
        center = find_center(xy[0], xy[1], center_nut.center_x)
    else:
        center = find_center(xy[0], xy[1], center_nut.center_x)
    # center = [center_nut.center_x, center_nut.center_y]
    # center = [center_nut.center_x, center_nut.center_y]
    # pointer[0] = src_img.shape[1] / 2 - 1000  # 重新标定指针
    # pointer[1] = find_center(xy[0], center, src_img.shape[1] / 2 - 1000)[1] + bias

    # 选择相信目标检测的中点
    # cv2.circle(show_img, (pointer.center_x, pointer.center_y), 10, color=(0, 0, 255), thickness=-1)

    # 这个是用霍夫直线解算出的中点
    # pointer.center_x = (xy[0][0] + xy[1][0]) // 2
    # pointer.center_y = (xy[0][1] + xy[1][1]) // 2
    # cv2.circle(src_img, (pointer.center_x, pointer.center_y), 10, color=(0, 0, 255), thickness=-1)

    # point[0] = xy[0][0]  # 重新修正
    # point[1] = xy[0][1]

    # while center[0] > src_img.shape[0] or center[1] > src_img.shape[1]:
    #     center[0] = center[0] // 2
    #     center[1] = center[1] // 2
    # print(f'center = {center}, center_nut = {center_nut}')

    if center[0] > src_img.shape[1] or center[1] > src_img.shape[0]:
        print('Warning: center xy excess img range')
        return show_img, 0

    cv2.line(show_img, (start[0].center_x, start[0].center_y), (center[0], center[1]), (0, 255, 0), tl,
             lineType=cv2.LINE_AA)  # left start
    cv2.line(show_img, (start[1].center_x, start[1].center_y), (center[0], center[1]), (0, 255, 0), tl,
             lineType=cv2.LINE_AA)  # right start

    cv2.line(show_img, (pointer.center_x, pointer.center_y), (center[0], center[1]), (0, 255, 0), tl,
             lineType=cv2.LINE_AA)  # 画指针线
    cv2.circle(show_img, (start[0].center_x, start[0].center_y), 5, color=(0, 0, 255), thickness=-1)
    cv2.circle(show_img, (start[1].center_x, start[1].center_y), 5, color=(0, 255, 255), thickness=-1)
    # cv2.line(show_img, (start[0].center_x, start[0].center_y), (start[1].center_x, start[1].center_y), (0, 255, 0), tl,
    #          lineType=cv2.LINE_AA)

    # cv2.circle(show_img, ((start[0].center_x + start[1].center_x) // 2, (start[0].center_y + start[1].center_y) // 2),
    #            10, color=(0, 0, 255), thickness=-1)

    fix_center_nut_y = center_nut.center_y - bias  # 修正后的中心y坐标

    # cv2.line(src_img, (point[0], point[1]), (center_nut[0], fix_center_nut_y), (0, 255, 0), 5)  # 画指针线

    # cv2.line(show_img, (center[0], 0), (center[0], src_img.shape[0]), (255, 255, 0), 5, lineType=cv2.LINE_AA)  # 中心y轴
    # cv2.line(show_img, (0, center[1]), (src_img.shape[1], center[1]), (255, 255, 0), 5, lineType=cv2.LINE_AA)  # 中心x轴

    a = math.radians(90)  # 旋转到左边-0.1 (-45度)
    r_x = (center[0] - center[0]) * math.cos(a) - (center[1] - src_img.shape[0]) * math.sin(-a) + \
          center[0]
    r_y = (center[0] - center[0]) * math.sin(-a) + (center[1] - src_img.shape[0]) * math.cos(a) + \
          src_img.shape[0]

    # -45度线
    # cv2.line(show_img, (center[0], center[1]), (int(r_x), int(r_y)), (255, 255, 0), 5, lineType=cv2.LINE_AA)

    b = math.radians(90)  # 旋转到右边0.9 (-45度)
    r_x = (center[0] - center[0]) * math.cos(b) - (center[1] - src_img.shape[0]) * math.sin(b) + \
          center[0]
    r_y = (center[0] - center[0]) * math.sin(b) + (center[1] - src_img


local addmon = require('map.addmonster')
local addMonCo = addmon.monGener( -- 沃玛神殿_D024
{
    {
        name = '守卫沃玛',
        loc = {
            {x = 50, y = 50, w = 50, h = 50, count = 20, time = 300},
        }
    },
    {
        name = '暗黑战士',
        loc = {
            {x = 50, y = 50, w = 50, h = 50, count = 25, time = 3600},
        }
    },
    {
        name = '暗黑战士40',
        loc = {
            {x = 50, y = 50, w = 50, h = 50, count = 25, time = 3600},
        }
    },
    {
        name = '沃玛勇士',
        loc = {
            {x = 50, y = 50, w = 50, h = 50, count = 25, time = 3600},
        }
    },
    {
        name = '沃玛勇士10',
        loc = {
            {x = 50, y = 50, w = 50, h = 50, count = 25, time = 3600},
        }
    },
    {
        name = '沃玛战将',
        loc = {
            {x = 50, y = 50, w =


-- exptube.lua
-- An expansion tube demonstration to show the use of user-defined BCs.
-- PJ 2017-05-07
--
config.title = "Expansion tube demo with UDF-bc diaphragm."
print(config.title)
config.dimensions = 2
config.axisymmetric = true
--
nsp, nmodes, gm = setGasModel('ideal-air-gas-model.lua')
-- We will set up three FluidBlocks to represent
-- [0] the driver tube
-- [1] shock tube
-- [2] acceleration tube
fill_gases = {[0]=FlowState:new{p=1.0e6, T=3000.0},
	      FlowState:new{p=5.0e3, T=300.0},
	      FlowState:new{p=100.0, T=300.0}}
Ls = {[0]=0.0, 0.5, 1.0, 2.5} -- break-points for tubes
R = 0.010
--
-- Set up three quads in the (x,y)-plane by first defining
-- the corner nodes, then define the patches with those corners.
quads = {}
for i = 0, 2 do
   quads[i] = CoonsPatch:new{p00=Vector3:new{x=Ls[i], y=0.0},
			     p10=Vector3:new{x=Ls[i+1], y=0.0},
			     p11=Vector3:new{x=Ls[i+1], y=R},
			     p01=Vector3:new{x=Ls[i], y


w.document :
      jQuery.merge( [], elem.childNodes );
  }
}, function( name, fn ) {
  jQuery.fn[ name ] = function( until, selector ) {
    var matched = jQuery.map( this, fn, until );

    if ( name.slice( -5 ) !== "Until" ) {
      selector = until;
    }

    if ( selector && typeof selector === "string" ) {
      matched = jQuery.filter( selector, matched );
    }

    if ( this.length > 1 ) {
      // Remove duplicates
      if ( !guaranteedUnique[ name ] ) {
        jQuery.unique( matched );
      }

      // Reverse order for parents* and prev*
      if ( name[ 0 ] === "p" ) {
        matched.reverse();
      }
    }

    return this.pushStack( matched );
  };
});
*/

HTMLElement? _closest(Element? elem, String selector) =>
    _closestWhere(elem, (e) => e.matches(selector));

HTMLElement? _closestWhere(Element? elem, bool test(Element e)) {
  while (elem != null && !test(elem))
    elem = elem.parentElement;
  return elem as HTMLElement?;
}

/*
jQuery.extend({
*/

List<Element> _filter(String expr, List<Element> elements, [bool not = false]) {
  if (not)
    expr = ":not($expr)";
  return elements.where((Element elem) => elem.matches(expr)).toList(growable: true);
}

  /*
  dir: function( elem, dir, until ) {
    var matched = [],
      truncate = until !== undefined;

    while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) {
      if ( elem.nodeType === 1 ) {
        if ( truncate && jQuery( elem ).is( until ) ) {
          break;
        }
        matched.push( elem );
      }
    }
    return matched;
  },

  sibling: function( n, elem ) {
    var matched = [];

    for ( ; n; n = n.nextSibling ) {
      if ( n.nodeType === 1 && n !== elem ) {
        matched.push( n );
      }
    }

    return matched;
  }
  */
/*
});
*/

// Implement the identical functionality for filter and not
/*
List<Element> _winnow(List<Element> elements, String selector,
    bool test(Element elem, int index), Element element, DQuery dquery, bool not) {

  if (test != null) {
    // TODO
    /* src:
    return jQuery.grep( elements, function( elem, i ) {
      // jshint -W018
      return !!qualifier.call( elem, i, elem ) !== not;
    });
    */
  } else if (element != null) {
    return _grep(elements, (elem, index) => (elem == element) != not);

  } else if (selector != null) {
    if (_isSimple.hasMatch(selector))
      return _filter(selector, elements, not);
    dquery = _filter(selector, elements);
  }

  // TODO: may simplify
  return _grep(elements, (elem, index) => elements.contains(elem) != not);
}
*/
// Copyright (C) 2017 Potix Corporation. All Rights Reserved
// History: 26/04/2017
// Author: jumperchen<jumperchen@potix.com>

import 'dart:async';
import 'dart:convert';
import 'dart:typed_data';

import 'package:logging/logging.dart';
import 'package:socket_io_common/src/util/event_emitter.dart';
import 'package:socket_io_client/src/engine/parseqs.dart';
import 'package:socket_io_common/src/engine/parser/parser.dart' as parser;
import 'transport.dart';

// ignore: uri_does_not_exist
import './transport/transports_stub.dart'
// ignore: uri_does


ntiguous and input:isContiguous() and input:nDimension() == 2 then
      buffer.output = buffer.output or input.new()
      output = buffer.output
      assert(output:nElement() == 0 or output:size(1) == input:size(1))
      if output:nElement() == 0 then
         output:resize(input:size(1)):fill(self.bias)
      end
      for i,tree in ipairs(self.trees) do
         if i > buffer.initialCounter then
            local score = tree:score(input, nil, true)
            output:add(self.weight[i], score)
         end
      end
   else
      output = buffer.output or self.bias
      for i,tree in ipairs(self.trees) do
         if i > buffer.initialCounter then
            output = output + tree:score(input) * self.weight[i]
         end
      end
      buffer.output = output
   end

   buffer.initialCounter = #self.trees

   return output
end

function DecisionForest:add(tree, weight)
   assert(torch.type(weight) == 'number')
   assert(weight > 0)
   table.insert(self.trees, tree)
   self.weight:resize(#self.trees)
   self.weight[#self.trees] = weight
   return self
end

function DecisionForest:clone()
   local trees = {}
   for i, tree in ipairs(self.trees) do
      trees[i] = tree:clone()
   end
   return DecisionForest(trees, self.weight:clone(), self.bias)
end


import numpy as np
import pandas as pd

arr=np.array([1,2,3,4,5])
series_obj =pd.Series(arr,index=['a','b','c','d','e'])
print(series_obj)


message=(S?`${S}: `:"")+W,te&&(this.identifier=te),F!=null&&F.__line__&&(this.line=F.__line__)}}function Qe(R,...S){for(let F of S)for(let W in F)R[W]=F[W];return R}class Et extends Error{constructor(S,F){super(F),this.message=F,this.key=S}}class er{constructor(S,F=[]){this.parent=S,this.bindings={};for(let[W,te]of F)this.bindings[W]=te}concat(S){return new er(this,S)}get(S){if(this.bindings[S])return this.bindings[S];if(this.parent)return this.parent.get(S);throw new Error(`${S} not found in scope.`)}has(S){return!!this.bindings[S]||!!this.parent&&this.parent.has(S)}}let Ut={kind:"null"},Ft={kind:"number"},bt={kind:"string"},yt={kind:"boolean"},Yt={kind:"color"},lr={kind:"object"},Tr={kind:"value"},Rr={kind:"collator"},ei={kind:"formatted"},Wr={kind:"padding"},Ur={kind:"resolvedImage"},dt={kind:"variableAnchorOffsetCollection"};function Ge(R,S){return{kind:"array",itemType:R,N:S}}function Je(R){if(R.kind==="array"){let S=Je(R.itemType);return typeof R.N=="number"?`array<${S}, ${R.N}>`:R.itemType.kind==="value"?"array":`array<${S}>`}return R.kind}let je=[Ut,Ft,bt,yt,Yt,ei,lr,Ge(Tr),Wr,Ur,dt];function $e(R,S){if(S.kind==="error")return null;if(R.kind==="array"){if(S.kind==="array"&&(S.N===0&&S.itemType.kind==="value"||!$e(R.itemType,S.itemType))&&(typeof R.N!="number"||R.N===S.N))return null}else{if(R.kind===S.kind)return null;if(R.kind==="value"){for(let F of je)if(!$e(F,S))return null}}return`Expected ${Je(R)} but found ${Je(S)} instead.`}function wt(R,S){return S.some(F=>F.kind===R.kind)}function Ie(R,S){return S.some(F=>F==="null"?R===null:F==="array"?Array.isArray(R):F==="object"?R&&!Array.isArray(R)&&typeof R=="object":F===typeof R)}function xe(R,S){return R.kind==="array"&&S.kind==="array"?R.itemType.kind===S.itemType.kind&&typeof R.N=="number":R.kind===S.kind}let Ce=.96422,vt=.82521,nr=4/29,ir=6/29,pr=3*ir*ir,oi=ir*ir*ir,di=Math.PI/180,Jr=180/Math.PI;function fi(R){return(R%=360)<0&&(R+=360),R}function Hi([R,S,F,W]){let te,fe,pe=wn((.2225045*(R=Pn(R))+.7168786*(S=Pn(S))+.0606169*(F=Pn(F)))/1);R===S&&S===F?te=fe=pe:(te=wn((.4360747*R+.3850649*S+.1430804*F)/Ce),fe=wn((.0139322*R+.0971045*S+.7141733*F)/vt));let ze=116*pe-16;return[ze<0?0:ze,500*(te-pe),200*(pe-fe),W]}


k">快手和知乎赚钱的方式略有不同。

3、在知乎上赚钱主要有4个方向：商业广告，知识付费，引流变现和好物推荐。商业广告 中国有句老话，叫作人在哪，钱在哪。意思就是人多的地方，大家都关注的地方，就有流量。有了流量，就可以接广告，带货赚钱。

4、知乎赚钱方式四：直播现在直播赚钱是真的超级火，知乎也有自己的直播功能。相对于专门的视频类直播平台来说，在知乎上开启直播会有一定的门槛，但是门槛并不高。

5、知乎可以赚钱。付费咨询，顾名思义，就是读者提问，然后掏钱请你这是通过知识和信息赚钱的最直接方式。读者千千万，问题也是千千万。在知乎平台上，有人掏钱咨询高考。

6、所以，在知乎点赞、评论、提问都可以赚钱，很多个人或者商家为了达到推广的目的，会让知乎大v进行点赞、关注、评论、提问的形式进行推广，只要你粉丝足够了，很多人会主动来找你合作的。

知乎赚钱吗

1、不能，知乎是知识分享平台，不存在盈利行为。知乎本身不能赚钱，但是可以借助其他平台加知乎就可以实现赚钱，简单的说就是引流。

2、知乎可以赚钱。付费咨询，顾名思义，就是读者提问，然后掏钱请你这是通过知识和信息赚钱的最直接方式。读者千千万，问题也是千千万。在知乎平台上，有人掏钱咨询高考。

3、该应用<a href="http://www.to3158.cn/tags-


 [x22, 152]
.LBB1394:
.LBB1374:
.LBB1372:
	.loc 14 499 0
	mov	x4, 0
	mov	x3, 1
	add	x2, x19, 180
	add	x1, x1, :lo12:.LC28
	bl	of_property_read_variable_u32_array
.LVL454:
	.loc 14 501 0
	tbz	w0, #31, .L430
	b	.L403
	.p2align 3
.L482:
.LBE1372:
.LBE1374:
.LBE1394:
.LBB1395:
.LBB1366:
.LBB1364:
	.loc 14 499 0
	ldr	x0, [x20, 752]
	adrp	x1, .LC27
.LBE1364:
.LBE1366:
.LBE1395:
	.loc 1 1143 0
	str	wzr, [x22, 148]
.LBB1396:
.LBB1367:
.LBB1365:
	.loc 14 499 0
	mov	x4, 0
	mov	x3, 1
	add	x2, x19, 176
	add	x1, x1, :lo12:.LC27
	bl	of_property_read_variable_u32_array
.LVL455:
	.loc 14 501 0
	tbz	w0, #31, .L429
	b	.L402
.LVL456:
	.p2align 3
.L484:
.LBE1365:
.LBE1367:
.LBE1396:
.LBE1400:
.LBE1440:
.LBB1441:
.LBB1435:
	.loc 1 1469 0
	mov	x0, x26
	mov	x3, 1
.LBB1433:
.LBB1434:
	.loc 15 204 0
	ldp	x1, x26, [x29, 104]
.LVL457:
	add	x26, x26, 1
	sub	x26, x26, x1
.LBE1434:
.LBE1433:
	.loc 1 1469 0
	sxtw	x2, w26
	bl	devm_memremap
.LVL458:
	str	x0, [x19, 376]
	.loc 1 1471 0
	cbz	x0, .L486
	.loc 1 1476 0
	bl	epd_lut_from_mem_init
.LVL459:
	.loc 1 1477 0
	tbnz	w0, #31, .L487
.L412:
.LBE1435:
.LBE1441:
.LBB1442:
.LBB1443:
	.loc 1 1563 0
	add	x0, x19, 736
	mov	x1, 68719476704
	str	x1, [x21, 544]
	.loc 1 1565 0
	add	x25, x25, :lo12:.LANCHOR0
.LBB1444:
.LBB1445:
.LBB1446:
.LBB1447:
.LBB1448:
	.loc 12 234 0
	str	x0, [x19, 736]
.LBE1448:
.LBE1447:
.LBE1446:
.LBE1445:
.LBE1444:
	.loc 1 1561 0
	mov	w26, 99
.LBB1450:
.LBB1449:
	.file 16 "./include/linux/list.h"
	.loc 16 29 0
	str	x0, [x0, 8]
.LBE1449:
.LBE1450:
	.loc 1 1563 0
	adrp	x0, new_buffer_refresh
	add	x0, x0, :lo12:new_buffer_refresh
	str	x0, [x21, 568]
	.loc 1 1565 0
	adrp	x


 20 */	bctr
/* 802270A0 00222D00  80 6D A3 40 */	lwz r3, lbl_8063F600-_SDA_BASE_(r13)
/* 802270A4 00222D04  4B FF D4 E5 */	bl func_80224588
/* 802270A8 00222D08  4B FF FF D8 */	b lbl_80227080
/* 802270AC 00222D0C  80 6D A3 40 */	lwz r3, lbl_8063F600-_SDA_BASE_(r13)
/* 802270B0 00222D10  4B FF D4 D9 */	bl func_80224588
/* 802270B4 00222D14  80 7A 00 04 */	lwz r3, 4(r26)
/* 802270B8 00222D18  80 03 00 04 */	lwz r0, 4(r3)
/* 802270BC 00222D1C  80 83 00 00 */	lwz r4, 0(r3)
/* 802270C0 00222D20  1C 00 02 24 */	mulli r0, r0, 0x224
/* 802270C4 00222D24  7C 84 02 14 */	add r4, r4, r0
/* 802270C8 00222D28  83 04 00 04 */	lwz r24, 4(r4)
/* 802270CC 00222D2C  48 00 1E F5 */	bl func_80228FC0
/* 802270D0 00222D30  7C 65 1B 78 */	mr r5, r3
/* 802270D4 00222D34  7F 43 D3 78 */	mr r3, r26
/* 802270D8 00222D38  7F 04 C3 78 */	mr r4, r24
/* 802270DC 00222D3C  4B FF F9 E1 */	bl func_80226ABC
/* 802270E0 00222D40  80 7A 00 04 */	lwz r3, 4(r26)
/* 802270E4 00222D44  38 80 00 02 */	li r4, 2
/* 802270E8 00222D48  48 00 1E ED */	bl func_80228FD4
/* 802270EC 00222D4C  93 BA 00 08 */	stw r29, 8(r26)
/* 802270F0 00222D50  4B FF FF 90 */	b lbl_80227080
/* 802270F4 00222D54  80 9A 00 04 */	lwz r4, 4(r26)
/* 802270F8 00222D58  7F 43 D3 78 */	mr r3, r26
/* 802270FC 00222D5C  80 04 00 04 */	lwz r0, 4(r4)
/* 80227100 00222D60  80 84 00 00 */	lwz r4, 0(r4)
/* 80227104 00222D64  1C 00 02 24 */	mulli r0, r0, 0x224
/* 80227108 00222D68  7C 84 02 14 */	add r4, r4, r0
/* 8022710C 00222D6C  4B FF FB CD */	bl func_80226CD8
/* 80227110 00222D70  28 03 00 01 */	cmplwi r3, 1
/* 80227114 00222D74  40 82 00 10 */	bne lbl_80227124
/* 80227118 00222D78  80 6D A3 40 */	lwz r3, lbl_8063F600-_SDA_BASE_(r13)
/* 8022711C 00222D7C  4B FF D4 6D */	bl func_80224588
/* 80227120 00222D80  4B FF FF 60 */	b lbl_80227080
lbl_80227124:
/* 80227124 00222D84  80 1A 00 0C */	lwz r0, 0xc(r26)
/* 80227128 00222D88  90 1A 00 08 */	stw r0, 8(r


_str.size(),19820125);
//{
//  base::MutexLock lock(&image_resp_map_mutex_);
//  base::hash_map<std::string,std::vector<std::string> >::iterator it =
//    image_resp_map_.find(key_str);
//  if (it != image_resp_map_.end()) {
//    image_list = image_resp_map_[key_str];
//    LOG(INFO)<<"hit map,key str is "<<key_str;
//    return;
//  }
//}
//return _GetRoomImageList(image_list,base_hotel_id,ota_id,room_hash_convert);
//}
//
//
//
//bool RafDb::_UpdateRoomImageList(const std::string& hotel_id, const std::string& ota_id,
//  const std::string& room_hash, const std::vector<std::string> & image_list) {
//
//int64 starttime = base::GetTimeInUsec();
//if (image_list.size() == 0) {
//  return false;
//}
//std::string room_ori_imagelist_key = hotel_id+std::string("_")+ota_id+std::string("_")+room_hash;
//std::string room_image_list;
//Get(room_image_list,"room_ori_imagelist_table", room_ori_imagelist_key);
//if (room_image_list == "") {
//  LOG(INFO)<<"room_image_list is null,will insert";
//  Json::Value root;
//  for(size_t i =0;i<image_list.size();i++) {
//    std::string url = image_list[i];
//    if (url.find("http://") ==std::string::npos) {
//      continue;
//    }
//    std::string image_docid = Uint64ToString(base::MurmurHash64A(url.c_str(),url.size(),19820125));
//    Json::Value tmp = image_docid;
//    root.append(tmp);
//    std::string room_pa_increment_key_str = url+hotel_id+ota_id+room_hash;
//    std::string room_pa_increment_key_docid =Uint64ToString(base::MurmurHash64A(
//          room_pa_increment_key_str.c_str(),room_pa_increment_key_str.size(),19820125));
//    Json::Value pa_room_root;
//    Json::Value item1 = url;
//    Json::Value item2 = hotel_id;
//    Json::Value item3 = ota_id;
//    Json::Value item4 = room_hash;
//    pa_room_root.append(item1);
//    pa_room_root.append(item2);
//    pa_room_root.append(item3);
//    pa_room_root.append(item4);
//    Json::FastWriter writer1;
//    std::string out1 = writer1.write(pa_room_root);
//    Set("room_pa_increment_table", room_pa_increment_key_docid,out1);
//    LOG(INFO)<<"set room_pa_increment_table key is "<<room_pa_increment_key_docid
//      <<" value is "<<out1;
//  }
//  Json::FastWriter writer2;
//  std::string out2 = writer2.write(root);
//  Set("room_ori_imagelist_table", room_ori_imagelist_key,out2);
//  LOG(INFO)<<"set room_ori_imagelist_table key is "<<room_ori_imagelist_key
//    <<" value is "<<out2;
//}else {
//  LOG(INFO)<<"room_image_list is not null,will update";
//  Json::Reader reader;
//  Json::Value root2;
//  if (!reader.parse(r


return Song(path: json['path'])
      ..trackNumber = json['track_number']
      ..discNumber = json['disc_number']
      ..title = json['title']
      ..artist = json['artist']
      ..albumArtist = json['album_artist']
      ..year = json['year']
      ..album = json['album']
      ..artwork = json['artwork']
      ..duration = json['duration']
      ..lyricist = json['lyricist']
      ..composer = json['composer']
      ..genre = json['genre']
      ..label = json['label'];
  }

  Map<String, dynamic> toJson() => <String, dynamic>{
        'path': path,
        'track_number': trackNumber,
        'disc_number': discNumber,
        'title': title,
        'artist': artist,
        'album_artist': albumArtist,
        'year': year,
        'album': album,
        'artwork': artwork,
        'duration': duration,
        'lyricist': lyricist,
        'composer': composer,
        'genre': genre,
        'label': label,
      };
}

class CollectionFile implements Comparable<CollectionFile> {
  Either<Song, Directory> content;

  CollectionFile(this.content);

  String get path {
    if (isSong()) {
      return asSong().path;
    } else {
      return asDirectory().path;
    }
  }

  String? get artwork {
    if (isSong()) {
      return asSong().artwork;
    } else {
      return asDirectory().artwork;
    }
  }

  @override
  int compareTo(CollectionFile other) {
    if (isDirectory() != other.isDirectory()) {
      return isDirectory() ? -1 : 1;
    }
    return compareStrings(path, other.path);
  }

  bool isSong() {
    return content.isLeft();
  }

  bool isDirectory() {
    return content.isRight();
  }

  Song asSong() {
    return content.fold((song) => song, (directory) => throw "CollectionFile is not a song");
  }

  Directory asDirectory() {
    return content.fold((song) => throw "CollectionFile is not a directory", (directory) => directory);
  }

  factory CollectionFile.fromJson(Map<String, dynamic> json) {
    if (json['Song'] != null) {
      return CollectionFile(Left(Song.fromJson(json['Song'])));
    }
    if (json['Directory'] != null) {
      return CollectionFile(Right(Directory.fromJson(json['Directory'])));
    }
    throw ArgumentError("Malformed CollectionFile Json");
  }

  Map<String, dynamic> toJson() => content.fold(
        (song) => <String, dynamic>{'Song': song.toJson()},
        (directory) => <String, dynamic>{'Directory': directory.toJson()},
      );
}

enum ThumbnailSize {
  small,
  large,
  native,
}
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:no_reload_mod_manager/data/mod_data.dart';
import 'package:no_reload_mod_manager/utils/state_providers.dart';
import 'package:path/path.dart' as p;

abstract mixin class ModSearcherListener {
  void onSearched(int groupIndex, int? modIndex);
  // Keep track of all listeners
  static final List<ModSearcherListener> _listeners = [];

  // Add a listener
  static void addListener(ModSearcherListener listener) {
    _listeners.add(listener);
  }

  // Remove a listener
  static void removeListener(ModSearcherListener listener) {
    _listeners.remove(listener);
  }

  //


 string;
      let prefix: string;

      // Get ch name
      if (isApplied && $channelName.data(DATA_KEY_CHANNEL_NAME)) {
        channelName = $channelName.data(DATA_KEY_CHANNEL_NAME);
      } else {
        channelName = $channelName.text().trim();
        // Store raw channel name
        $channelName.data(DATA_KEY_RAW_CHANNEL_NAME, channelName);
      }

      // Get ch name prefix
      if (isApplied && $channelName.data(DATA_KEY_CHANNEL_PREFIX)) {
        prefix = $channelName.data(DATA_KEY_CHANNEL_PREFIX);
      } else if (regChannelMatch.test(channelName)) {
        prefix = channelName.match(regChannelMatch)[1];
      } else {
        prefix = '';
      }

      $channelName.data(DATA_KEY_CHANNEL_NAME, channelName);
      $channelName.data(DATA_KEY_CHANNEL_PREFIX, prefix);
      prefixes[index] = prefix;
    });

    return prefixes;
  }

  protected preprocessForRootChannels($channelItems: JQuery, prefixes: string[]): string[] {
    const retPrefixes: string[] = [];

    $channelItems.each((index: number, channelItem: HTMLElement) => {
      const $channelName = $(channelItem).find(domConstants.SELECTOR_CHANNEL_ITEM_NAME_SELECTOR);
      const channelName: string = $channelName.data(DATA_KEY_CHANNEL_NAME);
      const isRoot = prefixes[index + 1] === channelName;

      if (isRoot) {
        retPrefixes[index] = channelName;
        $channelName.data(DATA_KEY_CHANNEL_NAME, `${channelName}${CHANNEL_NAME_ROOT}`);
        $channelName.data(DATA_KEY_CHANNEL_PREFIX, channelName);
      } else {
        retPrefixes[index] = prefixes[index];
      }
    });

    return retPrefixes;
  }

  protected applyGrouping($channelItems: JQuery, prefixes: string[]): void {
    $channelItems.each((index: number, channelItem: HTMLElement) => {
      const $channelContentsContainer = $(channelItem).find(domConstants.SELECTOR_CHANNEL_ITEM_CONTENTS_CONTAINER);
      const $channelName = $(channelItem).find(domConstants.SELECTOR_CHANNEL_ITEM_NAME_SELECTOR);
      const channelItemType = $channelContentsContainer.attr(
        domConstants.DATA_KEY_CHANNEL_ITEM_CONTENTS_CONTAINER_CHANNEL_TYPE,
      );
      const prefix: string = prefixes[index];
      const isLoneliness = prefixes[index - 1] !== prefix && prefixes[index + 1] !== prefix;
      const isParent = prefixes[index - 1] !== prefix && prefixes[index + 1] === prefix;
      const isLastChild = prefixes[index - 1] === prefix && prefixes[index + 1] !== prefix;
      let separator = '';

      // Skip direct message
      if (channelItemType === 'im') {
        return;
      }

      // Skip blank item
      if ($channelName.length === 0) {
        return;
      }

      // Skip no prefix
      if (prefixes[index] === '') {
        return;
      }

      if (isLoneliness) {
        $channelName.removeClass('scg-ch-parent scg-ch-child').text($channelName.data(DATA_KEY_RAW_CHANNEL_NAME));
      } else {
        let separatorPseudoClass: string;

        if (isParent) {
          separator = '┬';
          separatorPseudoClass = 'scg-ch-separator-pseudo-bottom';
        } else if (isLastChild) {
          separator = '└';
          separatorPseudoClass = 'scg-ch-separator-pseudo-top';
        } else {
          separator = '├';
          separatorPseudoClass = 'scg-ch-separator-pseudo-both';
        }

        //


.word   0x38, \a, \b
.endm*/

.macro	Cmd_39, changevalue, variable, variable2
.word   0x39, \changevalue, \variable, \variable2
.endm

.macro	Cmd_3a, a, b, c, d
.word   0x3a, \a, \b, \c, \d
.endm

.macro	Jump adr
.word   0x3b
.word   (\adr - 1f)>>2
1:
.endm

.macro	AddNewScript, a
.word   0x3c, \a
.endm

.macro	Cmd_3d, variable
.word   0x3d, \variable
.endm

.macro	Cmd_3e
.word   0x3e
.endm

.macro	Cmd_3f
.word   0x3f
.endm

.macro	Cmd_40, a
.word   0x40, \a
.endm

.macro	Cmd_41, a
.word   0x41, \a
.endm

.macro	Cmd_42, a, b
.word   0x42, \a, \b
.endm

.macro	Cmd_43, a, b
.word   0x43, \a, \b
.endm

.macro	Cmd_44
.word   0x44
.endm

.macro	Cmd_45, a, b
.word   0x45, \a, \b
.endm

.macro	Cmd_46, a, b, c
.word   0x46, \a, \b, \c
.endm

.macro	Cmd_47, a, variable
.word   0x47, \a, \variable
.endm

.macro	Cmd_48, a
.word   0x48, \a
.endm

.macro	Cmd_49, a
.word   0x49, \a
.endm

.macro	Cmd_4a, a
.word   0x4a, \a
.endm

.macro	Cmd_4b, a
.word   0x4b, \a
.endm

.macro	Cmd_4c, a
.word   0x4c, \a
.endm

.macro	Cmd_4d, adr
.word   0x4d
.word   (\adr - 1f)>>2
1:
.endm

.macro	Cmd_4e a, variable, c, adr
.word   0x4e, \a, \variable, \c
.word   (\adr - 1f)>>2
1:
.endm

.macro	Cmd_4f a, variable, c, d, adr
.word   0x4f, \a, \variable, \c, \d
.word   (\adr - 1f)>>2
1:
.endm

.macro	Cmd_50
.word   0x50
.endm

.macro	Cmd_51, adr
.word   0x51
.word   (\adr - 1f)>>2
1:
.endm

.macro	Cmd_52, adr
.word   0x52
.word   (\adr - 1f)>>2
1:
.endm

.macro	Cmd_53, adr
.word   0x53
.word   (\adr - 1f)>>2
1:
.endm

.macro	Cmd_54
.word   0x54
.endm

.macro	Cmd_55 a, b
.word   0x55, \a, \b
.endm

.macro	Cmd_56 variable, b
.word   0x56, \variable, \b
.endm

.macro	Cmd_57, adr
.word   0x57
.word   (\adr - 1f)>>2
1:
.endm

.macro	Cmd_58
.word   0x58
.endm

.macro	Cmd_5


, that the field should get values from.
 * @param {(anychart.enums.AggregationType|anychart.stockModule.data.TableMapping.CustomFieldType)=} opt_typeOrCalculator
 *    How to group values for the field. Being not passed the value is determined from the field name.
 * @param {(number|string|*)=} opt_context Column to get weights from for 'weightedAverage' grouping type.
 *     If opt_typeOrCalculator set to 'weightedAverage', but opt_weightsColumn is not passed - uses 'average' grouping instead.
 * @return {anychart.stockModule.data.TableMapping} This for chaining.
 */
anychart.stockModule.data.TableMapping.prototype.addField = function(name, column, opt_typeOrCalculator, opt_context) {
  var sourceColumn;
  if (goog.isNumber(column)) {
    sourceColumn = Math.round(anychart.utils.toNumber(column));
  } else if (goog.isString(column)) {
    sourceColumn = this.table_.getComputedColumnIndexByAlias(column);
    if (isNaN(sourceColumn)) { // column is not known to be a computed field alias - that's probably a source field name
      sourceColumn = column;
    }
  } else {
    return this; // invalid mapping, ignoring.
  }
  if (goog.isNumber(sourceColumn) && sourceColumn < 0) { // that's a computed field - no need to notify table
    // if it is a computed field - it has the same index in both aggregated and non-aggregated storages.
    this.fields_[name] = {
      sourceColumn: sourceColumn,
      resultColumn: sourceColumn
    };
  } else if (goog.isString(sourceColumn) || !isNaN(sourceColumn)) {
    var typeIsCalculator = goog.isObject(opt_typeOrCalculator);
    if (typeIsCalculator &&
        !goog.isFunction(opt_typeOrCalculator) &&
        !(
            ('reset' in opt_typeOrCalculator) &&
            ('considerItem' in opt_typeOrCalculator) &&
            ('getResult' in opt_typeOrCalculator)
        )) {
      return this; // an object wannabe calculator with wrong fields - ignoring.
    }
    var type = typeIsCalculator ? // this includes the case when opt_typeOrCalculator is a function
        /** @type {anychart.stockModule.data.TableMapping.CustomFieldType} */(opt_typeOrCalculator) :
        anychart.enums.normalizeAggregationType(goog.isDef(opt_typeOrCalculator) ? opt_typeOrCalculator : name);
    var context = opt_context;
    if (type == anychart.enums.AggregationType.WEIGHTED_AVERAGE) {
      if (goog.isNumber(opt_context)) {
        context = Math.round(opt_context);
      } else if (goog.isString(opt_context)) {
        context = this.table_.getComputedColumnIndexByAlias(opt_context);
        if (isNaN(context)) { // column is not a known computed field alias - that's probably a source field name
          context = opt_context;
        }
      } else {
        context = NaN;
      }
      if (goog.isNumber(context) && isNaN(context)) // it can be only a string or a number or NaN
        type = anychart.enums.AggregationType.AVERAGE;
    }
    this.table_.suspendSignalsDispatching();
    var resultColumn = this.table_.registerField(sourceColumn, type, context);
    this.fields_[name] = {
      sourceColumn: sourceColumn,
      resultColumn: resultColumn
    };
    this.table_.resumeSignalsDispatching(true);
  }
  return this;
};

/**
 * Returns aggregate column by field name.
 * @param {string} fieldName
 * @return {number}
 */
anychart.stockModule.data.TableMapping.p