 private extension URL {
 
     var monkeyking_queryDictionary: [String: Any] {
-
         let components = URLComponents(url: self, resolvingAgainstBaseURL: false)
-
         guard let items = components?.queryItems else {
             return [:]
         }
-
         var infos = [String: Any]()
-
         items.forEach {
             if let value = $0.value {
                 infos[$0.name] = value
             }
         }
-
         return infos
     }
 }

                ]
                let data = NSKeyedArchiver.archivedData(withRootObject: dic)
                UIPasteboard.general.setData(data, forPasteboardType: "com.tencent.tencent\(appID)")

                if !openURL(urlString: "mqqOpensdkSSoLogin://SSoLogin/tencent\(appID)/com.tencent.tencent\(appID)?generalpastboard=1") {
                    completionHandler(nil, nil, NSError(domain: "OAuth Error, cannot open url mqqOpensdkSSoLogin://", code: -1, userInfo: nil))
                }

                return
            }

            // Web OAuth

            let accessTokenAPI = "https://xui.ptlogin2.qq.com/cgi-bin/xlogin?appid=716027609&pt_3rd_aid=209656&style=35&s_url=http%3A%2F%2Fconnect.qq.com&refer_cgi=m_authorize&client_id=\(appID)&redirect_uri=auth%3A%2F%2Fwww.qq.com&response_type=token&scope=\(scope)"
            addWebView(withURLString: accessTokenAPI)

        case .weibo(let appID, _, let redirectURL):

            let scope = scope ?? "all"

            guard !account.isAppInstalled else {

                let uuidString = UUID().uuidString

                let transferObjectData = NSKeyedArchiver.archivedData(withRootObject: [
                    "__class": "WBAuthorizeRequest",
                    "redirectURI": redirectURL,

            keyClasses: ["NSMutableDictionary", "NSDictionary", "NSObject"],
            keyClassname: "NSMutableDictionary"
        ]
        var objectsValue: [Any] = [
            publicObjectsItem0, publicObjectsItem1, publicObjectsItem2, publicObjectsItem3,
            publicObjectsItem4, publicObjectsItem5, publicObjectsItem6, publicObjectsItem7,
            publicObjectsItem8, publicObjectsItem9, publicObjectsItem10, publicObjectsItem11,
            publicObjectsItem12
        ]
        switch messageType {
        case .text:
            let textObjectsItem14: [String: Any] = [
                keyClass: [keyUID: 16],
                "text": [keyUID: 15]
            ]
            let textObjectsItem15 = info.title ?? "Input Text"
            objectsValue = objectsValue + [publicObjectsItem13, textObjectsItem14, textObjectsItem15]
        case .image(let image):
            let imageObjectsItem14: [String: Any] = [
                keyClass: [keyUID: 17],
                "imageData": [keyUID: 15]
            ]
            let imageData = UIImageJPEGRepresentation(image, 0.7) ?? Data()
            let imageObjectsItem15: [String: Any] = [
                keyClass: [keyUID: 16],
                "NS.data": imageData
            ]
            objectsValue = objectsValue + [publicObjectsItem13, imageObjectsItem14, imageObjectsItem15, publicObjectsItem14]
        case .url(let url):
            let urlObjectsItem13: [String: Any] = [
                keyClass: [keyUID: 21],
