# compiler: R8
# compiler_version: 8.13.19
# common_typos_disable
# {"id":"com.android.tools.r8.mapping","version":"2.2"}
# pg_map_id: 3f6391381cc0fd7e96fb607db5c308fbcb12b932878b475a0fc771ba1812f2fc
# pg_map_hash: SHA-256 3f6391381cc0fd7e96fb607db5c308fbcb12b932878b475a0fc771ba1812f2fc
cn.thinkingdata.experiment.BuildConfig -> cn.thinkingdata.experiment.BuildConfig:
# {"id":"sourceFile","fileName":"BuildConfig.java"}
    1:1:void <init>():6:6 -> <init>
cn.thinkingdata.experiment.TDCallback -> cn.thinkingdata.experiment.TDCallback:
# {"id":"sourceFile","fileName":"TDCallback.java"}
cn.thinkingdata.experiment.TDCommonSettings -> cn.thinkingdata.experiment.TDCommonSettings:
# {"id":"sourceFile","fileName":"TDCommonSettings.java"}
    1:1:void <init>(java.lang.String,java.lang.String):107:107 -> <init>
    2:87:void <init>(java.lang.String,java.lang.String):33:118 -> <init>
    88:88:void <init>(java.lang.String,java.lang.String):115:115 -> <init>
    89:89:void <init>(java.lang.String,java.lang.String):112:112 -> <init>
    90:90:void <init>(java.lang.String,java.lang.String):109:109 -> <init>
    1:1:java.lang.String getAppId():125:125 -> getAppId
    1:1:java.lang.String getServerUrl():132:132 -> getServerUrl
cn.thinkingdata.experiment.TDCommonSettings$TDMode -> cn.thinkingdata.experiment.TDCommonSettings$TDMode:
# {"id":"sourceFile","fileName":"TDCommonSettings.java"}
    1:1:cn.thinkingdata.experiment.TDCommonSettings$TDMode[] $values():138:138 -> $values
    1:9:void <clinit>():142:150 -> <clinit>
    10:10:void <clinit>():138:138 -> <clinit>
    1:1:void <init>(java.lang.String,int):138:138 -> <init>
    1:1:cn.thinkingdata.experiment.TDCommonSettings$TDMode valueOf(java.lang.String):138:138 -> valueOf
    1:1:cn.thinkingdata.experiment.TDCommonSettings$TDMode[] values():138:138 -> values
cn.thinkingdata.experiment.TDExperiment -> cn.thinkingdata.experiment.TDExperiment:
# {"id":"sourceFile","fileName":"TDExperiment.java"}
    1:1:void <clinit>():40:40 -> <clinit>
    1:1:void <init>():37:37 -> <init>
    1:1:void cn.thinkingdata.experiment.utils.TDExpLog.setEnableLog(boolean):28:28 -> enableLog
    1:1:void enableLog(boolean):340 -> enableLog
    1:1:void exposure(java.lang.String):331:331 -> exposure
    2:2:void cn.thinkingdata.experiment.tracker.ExposureTracker.exposure(java.lang.String):37:37 -> exposure
    2:2:void exposure(java.lang.String):331 -> exposure
    3:3:void cn.thinkingdata.experiment.task.TDTaskQueue.execute(java.lang.Runnable):59:59 -> exposure
    3:3:void cn.thinkingdata.experiment.tracker.ExposureTracker.exposure(java.lang.String):37 -> exposure
      # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(1)"]}
    3:3:void exposure(java.lang.String):331 -> exposure
    4:4:void cn.thinkingdata.experiment.task.TDTaskQueue.execute(java.lang.Runnable):59:59 -> exposure
    4:4:void cn.thinkingdata.experiment.tracker.ExposureTracker.exposure(java.lang.String):37 -> exposure
    4:4:void exposure(java.lang.String):331 -> exposure
    1:18:cn.thinkingdata.remoteconfig.task.TDTask fetch():167:184 -> fetch
    1:1:java.lang.String getSDKVersion():344:344 -> getSDKVersion
    1:1:java.lang.Boolean getValueAsBoolean(java.lang.String):276:276 -> getValueAsBoolean
    2:2:java.lang.Boolean getValueAsBoolean(java.lang.String,boolean):287:287 -> getValueAsBoolean
    3:3:cn.thinkingdata.experiment.model.TDFeature cn.thinkingdata.experiment.feature.FeatureManager.getFeature(java.lang.String):81:81 -> getValueAsBoolean
    3:3:java.lang.Boolean getValueAsBoolean(java.lang.String,boolean):287 -> getValueAsBoolean
    4:4:java.lang.Object cn.thinkingdata.experiment.model.TDFeature.getValue():16:16 -> getValueAsBoolean
    4:4:java.lang.Boolean getValueAsBoolean(java.lang.String,boolean):288 -> getValueAsBoolean
    5:8:java.lang.Boolean getValueAsBoolean(java.lang.String,boolean):291:294 -> getValueAsBoolean
    9:9:java.lang.Boolean getValueAsBoolean(java.lang.String,boolean):289:289 -> getValueAsBoolean
    1:1:java.lang.Double getValueAsDouble(java.lang.String):239:239 -> getValueAsDouble
    2:2:java.lang.Double getValueAsDouble(java.lang.String,double):250:250 -> getValueAsDouble
    3:3:cn.thinkingdata.experiment.model.TDFeature cn.thinkingdata.experiment.feature.FeatureManager.getFeature(java.lang.String):81:81 -> getValueAsDouble
    3:3:java.lang.Double getValueAsDouble(java.lang.String,double):250 -> getValueAsDouble
    4:4:java.lang.Object cn.thinkingdata.experiment.model.TDFeature.getValue():16:16 -> getValueAsDouble
    4:4:java.lang.Double getValueAsDouble(java.lang.String,double):251 -> getValueAsDouble
    5:12:java.lang.Double getValueAsDouble(java.lang.String,double):255:262 -> getValueAsDouble
    13:14:void cn.thinkingdata.experiment.utils.TDExpLog.w(java.lang.String):92:93 -> getValueAsDouble
    13:14:java.lang.Double getValueAsDouble(java.lang.String,double):262 -> getValueAsDouble
    15:18:java.lang.Double getValueAsDouble(java.lang.String,double):263:266 -> getValueAsDouble
    19:19:java.lang.Double getValueAsDouble(java.lang.String,double):252:252 -> getValueAsDouble
    1:1:org.json.JSONObject getValueAsJson(java.lang.String):304:304 -> getValueAsJson
    2:2:org.json.JSONObject getValueAsJson(java.lang.String,org.json.JSONObject):315:315 -> getValueAsJson
    3:3:cn.thinkingdata.experiment.model.TDFeature cn.thinkingdata.experiment.feature.FeatureManager.getFeature(java.lang.String):81:81 -> getValueAsJson
    3:3:org.json.JSONObject getValueAsJson(java.lang.String,org.json.JSONObject):315 -> getValueAsJson
    4:4:java.lang.Object cn.thinkingdata.experiment.model.TDFeature.getValue():16:16 -> getValueAsJson
    4:4:org.json.JSONObject getValueAsJson(java.lang.String,org.json.JSONObject):316 -> getValueAsJson
    5:6:org.json.JSONObject getValueAsJson(java.lang.String,org.json.JSONObject):319:320 -> getValueAsJson
    7:7:org.json.JSONObject getValueAsJson(java.lang.String,org.json.JSONObject):317:317 -> getValueAsJson
    1:1:java.lang.String getValueAsString(java.lang.String):214:214 -> getValueAsString
    2:2:java.lang.String getValueAsString(java.lang.String,java.lang.String):225:225 -> getValueAsString
    3:3:cn.thinkingdata.experiment.model.TDFeature cn.thinkingdata.experiment.feature.FeatureManager.getFeature(java.lang.String):81:81 -> getValueAsString
    3:3:java.lang.String getValueAsString(java.lang.String,java.lang.String):225 -> getValueAsString
    4:4:java.lang.Object cn.thinkingdata.experiment.model.TDFeature.getValue():16:16 -> getValueAsString
    4:4:java.lang.String getValueAsString(java.lang.String,java.lang.String):226 -> getValueAsString
    5:5:java.lang.String getValueAsString(java.lang.String,java.lang.String):229:229 -> getValueAsString
    6:6:java.lang.String getValueAsString(java.lang.String,java.lang.String):227:227 -> getValueAsString
    1:2:void init(android.content.Context,java.lang.String,java.lang.String):93:94 -> init
    3:29:void init(android.content.Context,cn.thinkingdata.experiment.TDExperimentConfig):104:130 -> init
    30:60:void init(android.content.Context,cn.thinkingdata.experiment.TDExperimentConfig):110:140 -> init
    61:61:void cn.thinkingdata.experiment.task.TDTaskQueue.execute(java.lang.Runnable):59:59 -> init
    61:61:void init(android.content.Context,cn.thinkingdata.experiment.TDExperimentConfig):140 -> init
      # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(1)"]}
    62:62:void cn.thinkingdata.experiment.task.TDTaskQueue.execute(java.lang.Runnable):59:59 -> init
    62:62:void init(android.content.Context,cn.thinkingdata.experiment.TDExperimentConfig):140 -> init
    1:29:void initCommonSettings(android.content.Context,cn.thinkingdata.experiment.TDCommonSettings):53:81 -> initCommonSettings
    30:31:void cn.thinkingdata.experiment.utils.TDExpLog.i(java.lang.String):69:70 -> initCommonSettings
    30:31:void initCommonSettings(android.content.Context,cn.thinkingdata.experiment.TDCommonSettings):81 -> initCommonSettings
    1:1:void setCustomBucketId(java.util.Map):204:204 -> setCustomBucketId
    1:1:void setCustomFetchParams(org.json.JSONObject):159:159 -> setCustomFetchParams
cn.thinkingdata.experiment.TDExperiment$1 -> cn.thinkingdata.experiment.a:
# {"id":"sourceFile","fileName":"TDExperiment.java"}
    cn.thinkingdata.experiment.TDExperimentConfig val$config -> a
    1:1:void <init>(cn.thinkingdata.experiment.TDExperimentConfig):130:130 -> <init>
    1:3:void onFailure(int,java.lang.String):133:135 -> onFailure
cn.thinkingdata.experiment.TDExperiment$2 -> cn.thinkingdata.experiment.d:
# {"id":"sourceFile","fileName":"TDExperiment.java"}
    cn.thinkingdata.experiment.TDExperimentConfig val$config -> a
    1:1:void <init>(cn.thinkingdata.experiment.TDExperimentConfig):110:110 -> <init>
    1:1:void onSuccess():113:113 -> onSuccess
    2:2:void cn.thinkingdata.experiment.task.TDTaskQueue.execute(java.lang.Runnable):59:59 -> onSuccess
    2:2:void onSuccess():113 -> onSuccess
      # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(1)"]}
    3:3:void cn.thinkingdata.experiment.task.TDTaskQueue.execute(java.lang.Runnable):59:59 -> onSuccess
    3:3:void onSuccess():113 -> onSuccess
cn.thinkingdata.experiment.TDExperiment$2$1 -> cn.thinkingdata.experiment.c:
# {"id":"sourceFile","fileName":"TDExperiment.java"}
    cn.thinkingdata.experiment.TDExperiment$2 this$0 -> a
      # {"id":"com.android.tools.r8.residualsignature","signature":"Lcn/thinkingdata/experiment/d;"}
    1:1:void <init>(cn.thinkingdata.experiment.TDExperiment$2):113:113 -> <init>
      # {"id":"com.android.tools.r8.residualsignature","signature":"(Lcn/thinkingdata/experiment/d;)V"}
    1:5:void run():116:120 -> run
cn.thinkingdata.experiment.TDExperiment$2$1$1 -> cn.thinkingdata.experiment.b:
# {"id":"sourceFile","fileName":"TDExperiment.java"}
    cn.thinkingdata.experiment.TDCallback val$callback -> a
    1:1:void <init>(cn.thinkingdata.experiment.TDExperiment$2$1,cn.thinkingdata.experiment.TDCallback):120:120 -> <init>
      # {"id":"com.android.tools.r8.residualsignature","signature":"(Lcn/thinkingdata/experiment/TDCallback;)V"}
    1:1:void run():123:123 -> run
cn.thinkingdata.experiment.TDExperiment$3 -> cn.thinkingdata.experiment.e:
# {"id":"sourceFile","fileName":"TDExperiment.java"}
    android.content.Context val$context -> a
    cn.thinkingdata.experiment.TDExperimentConfig val$config -> b
    1:1:void <init>(android.content.Context,cn.thinkingdata.experiment.TDExperimentConfig):140:140 -> <init>
    1:1:void run():143:143 -> run
    2:3:void cn.thinkingdata.experiment.utils.TDSharedPreferences.init(android.content.Context,java.lang.String):39:40 -> run
    2:3:void run():143 -> run
    4:4:void run():145:145 -> run
    5:5:void cn.thinkingdata.experiment.feature.FeatureManager.setConfig(cn.thinkingdata.experiment.TDExperimentConfig):52:52 -> run
    5:5:void run():145 -> run
      # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(1)"]}
    6:7:void run():146:147 -> run
    8:9:void cn.thinkingdata.experiment.utils.TDExpLog.i(java.lang.String):69:70 -> run
    8:9:void run():147 -> run
cn.thinkingdata.experiment.TDExperiment$4 -> cn.thinkingdata.experiment.g:
# {"id":"sourceFile","fileName":"TDExperiment.java"}
    cn.thinkingdata.remoteconfig.task.TDTask val$task -> a
      # {"id":"com.android.tools.r8.residualsignature","signature":"Lcn/thinkingdata/remoteconfig/task/TDTaskImpl;"}
    1:1:void <init>(cn.thinkingdata.remoteconfig.task.TDTask):184:184 -> <init>
      # {"id":"com.android.tools.r8.residualsignature","signature":"(Lcn/thinkingdata/remoteconfig/task/TDTaskImpl;)V"}
    1:1:void onFailure(int,java.lang.String):187:187 -> onFailure
cn.thinkingdata.experiment.TDExperiment$4$1 -> cn.thinkingdata.experiment.f:
# {"id":"sourceFile","fileName":"TDExperiment.java"}
    int val$i -> a
    java.lang.String val$s -> b
    cn.thinkingdata.experiment.TDExperiment$4 this$0 -> c
      # {"id":"com.android.tools.r8.residualsignature","signature":"Lcn/thinkingdata/experiment/g;"}
    1:1:void <init>(cn.thinkingdata.experiment.TDExperiment$4,int,java.lang.String):187:187 -> <init>
      # {"id":"com.android.tools.r8.residualsignature","signature":"(Lcn/thinkingdata/experiment/g;ILjava/lang/String;)V"}
    1:1:void run():190:190 -> run
cn.thinkingdata.experiment.TDExperiment$5 -> cn.thinkingdata.experiment.j:
# {"id":"sourceFile","fileName":"TDExperiment.java"}
    cn.thinkingdata.remoteconfig.task.TDTask val$task -> a
      # {"id":"com.android.tools.r8.residualsignature","signature":"Lcn/thinkingdata/remoteconfig/task/TDTaskImpl;"}
    1:1:void <init>(cn.thinkingdata.remoteconfig.task.TDTask):168:168 -> <init>
      # {"id":"com.android.tools.r8.residualsignature","signature":"(Lcn/thinkingdata/remoteconfig/task/TDTaskImpl;)V"}
    1:1:void onSuccess():171:171 -> onSuccess
    2:2:void cn.thinkingdata.experiment.task.TDTaskQueue.execute(java.lang.Runnable):59:59 -> onSuccess
    2:2:void onSuccess():171 -> onSuccess
      # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(1)"]}
    3:3:void cn.thinkingdata.experiment.task.TDTaskQueue.execute(java.lang.Runnable):59:59 -> onSuccess
    3:3:void onSuccess():171 -> onSuccess
cn.thinkingdata.experiment.TDExperiment$5$1 -> cn.thinkingdata.experiment.i:
# {"id":"sourceFile","fileName":"TDExperiment.java"}
    cn.thinkingdata.experiment.TDExperiment$5 this$0 -> a
      # {"id":"com.android.tools.r8.residualsignature","signature":"Lcn/thinkingdata/experiment/j;"}
    1:1:void <init>(cn.thinkingdata.experiment.TDExperiment$5):171:171 -> <init>
      # {"id":"com.android.tools.r8.residualsignature","signature":"(Lcn/thinkingdata/experiment/j;)V"}
    1:2:void run():174:175 -> run
cn.thinkingdata.experiment.TDExperiment$5$1$1 -> cn.thinkingdata.experiment.h:
# {"id":"sourceFile","fileName":"TDExperiment.java"}
    cn.thinkingdata.experiment.TDExperiment$5$1 this$1 -> a
      # {"id":"com.android.tools.r8.residualsignature","signature":"Lcn/thinkingdata/experiment/i;"}
    1:1:void <init>(cn.thinkingdata.experiment.TDExperiment$5$1):175:175 -> <init>
      # {"id":"com.android.tools.r8.residualsignature","signature":"(Lcn/thinkingdata/experiment/i;)V"}
    1:1:void run():178:178 -> run
cn.thinkingdata.experiment.TDExperimentConfig -> cn.thinkingdata.experiment.TDExperimentConfig:
# {"id":"sourceFile","fileName":"TDExperimentConfig.java"}
    1:1:void <init>(java.lang.String,java.lang.String):51:51 -> <init>
    2:39:void <init>(java.lang.String,java.lang.String):25:62 -> <init>
    40:40:void <init>(java.lang.String,java.lang.String):59:59 -> <init>
    41:41:void <init>(java.lang.String,java.lang.String):56:56 -> <init>
    42:42:void <init>(java.lang.String,java.lang.String):53:53 -> <init>
    1:1:java.lang.String getAppId():69:69 -> getAppId
    1:1:java.lang.String getServerUrl():76:76 -> getServerUrl
cn.thinkingdata.experiment.feature.FeatureManager -> cn.thinkingdata.experiment.feature.a:
# {"id":"sourceFile","fileName":"FeatureManager.java"}
    cn.thinkingdata.experiment.TDExperimentConfig sConfig -> a
    java.util.Map features -> b
      # {"id":"com.android.tools.r8.residualsignature","signature":"Ljava/util/HashMap;"}
    cn.thinkingdata.experiment.feature.FeatureManager instance -> c
      # {"id":"com.android.tools.r8.residualsignature","signature":"Lcn/thinkingdata/experiment/feature/a;"}
    1:1:void <init>():27:27 -> <init>
    1:8:cn.thinkingdata.experiment.feature.FeatureManager getInstance():36:43 -> a
      # {"id":"com.android.tools.r8.residualsignature","signature":"()Lcn/thinkingdata/experiment/feature/a;"}
    9:15:cn.thinkingdata.experiment.model.TDFeature getFeature(java.lang.String,boolean):63:69 -> a
      # {"id":"com.android.tools.r8.residualsignature","signature":"(Ljava/lang/String;Z)Lcn/thinkingdata/experiment/model/b;"}
    16:16:void cn.thinkingdata.experiment.tracker.ExposureTracker.exposure(java.lang.String):37:37 -> a
    16:16:cn.thinkingdata.experiment.model.TDFeature getFeature(java.lang.String,boolean):69 -> a
    17:17:void cn.thinkingdata.experiment.task.TDTaskQueue.execute(java.lang.Runnable):59:59 -> a
    17:17:void cn.thinkingdata.experiment.tracker.ExposureTracker.exposure(java.lang.String):37 -> a
      # {"id":"com.android.tools.r8.rewriteFrame","conditions":["throws(Ljava/lang/NullPointerException;)"],"actions":["removeInnerFrames(1)"]}
    17:17:cn.thinkingdata.experiment.model.TDFeature getFeature(java.lang.String,boolean):69 -> a
    18:18:void cn.thinkingdata.experiment.task.TDTaskQueue.execute(java.lang.Runnable):59:59 -> a
    18:18:void cn.thinkingdata.experiment.tracker.ExposureTracker.exposure(java.lang.String):37 -> a
    18:18:cn.thinkingdata.experiment.model.TDFeature getFeature(java.lang.String,boolean):69 -> a
    1:2:void parseExperimentConfig():98:99 -> b
    3:4:void cn.thinkingdata.experiment.utils.TDExpLog.e(java.lang.String):115:116 -> b
    3:4:void parseExperimentConfig():99 -> b
    5:5:void parseExperimentConfig():102:102 -> b
    6:51:java.util.Map cn.thinkingdata.experiment.feature.FeatureParser.parse(org.json.JSONObject):34:79 -> b
    6:51:void parseExperimentConfig():103 -> b
    52:52:void cn.thinkingdata.experiment.model.TDFeature.setValue(java.lang.Object):20:20 -> b
    52:52:java.util.Map cn.thinkingdata.experiment.feature.FeatureParser.parse(org.json.JSONObject):80 -> b
    52:52:void parseExperimentConfig():103 -> b
    53:53:java.util.Map cn.thinkingdata.experiment.feature.FeatureParser.parse(org.json.JSONObject):82:82 -> b
    53:53:void parseExperimentConfig():103 -> b
    54:54:void cn.thinkingdata.experiment.model.TDFeature.setExperimentInfo(cn.thinkingdata.experiment.model.ExperimentInfo):28:28 -> b
    54:54:java.util.Map cn.thinkingdata.experiment.feature.FeatureParser.parse(org.json.JSONObject):82 -> b
    54:54:void parseExperimentConfig():103 -> b
    55:55:java.util.Map cn.thinkingdata.experiment.feature.FeatureParser.parse(org.json.JSONObject):83:83 -> b
    55:55:void parseExperimentConfig():103 -> b
    56:56:void parseExperimentConfig():103:103 -> b
cn.thinkingdata.experiment.feature.FeatureParser -> R8$$REMOVED$$CLASS$$0:
# {"id":"sourceFile","fileName":"FeatureParser.java"}
cn.thinkingdata.experiment.model.ExperimentInfo -> cn.thinkingdata.experiment.model.a:
# {"id":"sourceFile","fileName":"ExperimentInfo.java"}
    java.lang.String experimentId -> a
    java.lang.String experimentGroupId -> b
    boolean isControl -> c
    org.json.JSONObject customBucketId -> d
    1:1:void <init>():5:5 -> <init>
cn.thinkingdata.experiment.model.TDFeature -> cn.thinkingdata.experiment.model.b:
# {"id":"sourceFile","fileName":"TDFeature.java"}
    java.lang.Object value -> a
    cn.thinkingdata.experiment.model.ExperimentInfo experimentInfo -> b
      # {"id":"com.android.tools.r8.residualsignature","signature":"Lcn/thinkingdata/experiment/model/a;"}
    1:1:void <init>():10:10 -> <init>
cn.thinkingdata.experiment.task.TDTaskQueue -> cn.thinkingdata.experiment.task.a:
# {"id":"sourceFile","fileName":"TDTaskQueue.java"}
    java.util.concurrent.ExecutorService executorService -> a
      # {"id":"com.android.tools.r8.residualsignature","signature":"Ljava/util/concurrent/ThreadPoolExecutor;"}
    cn.thinkingdata.experiment.task.TDTaskQueue instance -> b
      # {"id":"com.android.tools.r8.residualsignature","signature":"Lcn/thinkingdata/experiment/task/a;"}
    1:2:void <init>():22:23 -> <init>
    1:2:java.lang.Thread lambda$new$0(java.lang.Runnable):30:31 -> a
    3:10:cn.thinkingdata.experiment.task.TDTaskQueue getInstance():43:50 -> a
      # {"id":"com.android.tools.r8.residualsignature","signature":"()Lcn/thinkingdata/experiment/task/a;"}
cn.thinkingdata.experiment.tracker.ExposureTracker -> cn.thinkingdata.experiment.tracker.b:
# {"id":"sourceFile","fileName":"ExposureTracker.java"}
    cn.thinkingdata.experiment.tracker.ExposureTracker instance -> a
      # {"id":"com.android.tools.r8.residualsignature","signature":"Lcn/thinkingdata/experiment/tracker/b;"}
    1:1:void <clinit>():22:22 -> <clinit>
    1:1:void <init>():24:24 -> <init>
    1:1:void doExposure(java.lang.String):51:51 -> a
    2:2:cn.thinkingdata.experiment.model.ExperimentInfo cn.thinkingdata.experiment.model.TDFeature.getExperimentInfo():24:24 -> a
    2:2:void doExposure(java.lang.String):55 -> a
    3:3:void doExposure(java.lang.String):57:57 -> a
    4:5:void cn.thinkingdata.experiment.utils.TDExpLog.i(java.lang.String):69:70 -> a
    4:5:void doExposure(java.lang.String):57 -> a
    6:9:void doExposure(java.lang.String):62:65 -> a
    10:16:java.lang.String md5(java.lang.String):89:95 -> a
    10:16:void doExposure(java.lang.String):66 -> a
    17:18:boolean cn.thinkingdata.experiment.utils.TDSharedPreferences.getBoolean(java.lang.String,boolean):142:143 -> a
    17:18:void doExposure(java.lang.String):69 -> a
    19:19:void doExposure(java.lang.String):70:70 -> a
    20:21:void cn.thinkingdata.experiment.utils.TDExpLog.i(java.lang.String):69:70 -> a
    20:21:void doExposure(java.lang.String):70 -> a
    22:23:void cn.thinkingdata.experiment.utils.TDSharedPreferences.putBoolean(java.lang.String,boolean):129:130 -> a
    22:23:void doExposure(java.lang.String):75 -> a
    24:29:void cn.thinkingdata.experiment.utils.AnalyticUtil.trackExperimentExposureEvent(cn.thinkingdata.experiment.model.ExperimentInfo) -> a
    24:29:void doExposure(java.lang.String):78 -> a
cn.thinkingdata.experiment.tracker.ExposureTracker$1 -> cn.thinkingdata.experiment.tracker.a:
# {"id":"sourceFile","fileName":"ExposureTracker.java"}
    java.lang.String val$featureKey -> a
    1:1:void <init>(cn.thinkingdata.experiment.tracker.ExposureTracker,java.lang.String):37:37 -> <init>
      # {"id":"com.android.tools.r8.residualsignature","signature":"(Lcn/thinkingdata/experiment/tracker/b;Ljava/lang/String;)V"}
    1:1:void run():40:40 -> run
cn.thinkingdata.experiment.utils.AnalyticUtil -> cn.thinkingdata.experiment.utils.a:
# {"id":"sourceFile","fileName":"AnalyticUtil.java"}
    1:8:void track(java.lang.String,org.json.JSONObject,java.lang.String,int):36:43 -> a
      # {"id":"com.android.tools.r8.residualsignature","signature":"(Lorg/json/JSONObject;)V"}
cn.thinkingdata.experiment.utils.TDExpLog -> cn.thinkingdata.experiment.utils.b:
# {"id":"sourceFile","fileName":"TDExpLog.java"}
    boolean sEnableLog -> a
cn.thinkingdata.experiment.utils.TDSharedPreferences -> cn.thinkingdata.experiment.utils.c:
# {"id":"sourceFile","fileName":"TDSharedPreferences.java"}
    android.content.SharedPreferences sSharedPreferences -> a
