hunk.code_window:     mActivityContext.startActivity(intent);
     }
     private void openShellAppActivity() {
       if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
         ActivityManager manager = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
         for (ActivityManager.AppTask task : manager.getAppTasks()) {
           Intent baseIntent = task.getTaskInfo().baseIntent;
  
hunk.labels: keep keep keep keep add keep keep keep keep
hunk.after_edit:     Class activityClass = ShellAppActivity.class;
       if (Constants.isDetached()) {
         try {
           activityClass = Class.forName("host.exp.exponent.MainActivity");
         } catch (Exception e) {
           EXL.e(TAG, "Cannot find MainActivity, falling back to ShellAppActivity");
         }
       }
  
hunk.file_path: android/expoview/src/main/java/host/exp/exponent/kernel/Kernel.java
hunk.type: add
file: /**
   * Copyright (c) 2015-present, Facebook, Inc.
   * All rights reserved.
   *
   * This source code is licensed under the BSD-style license found in the
   * LICENSE file in the root directory of this source tree. An additional grant
   * of patent rights can be found in the PATENTS file in the same directory.
   */
  
  #import "ABI26_0_0RCTValueAnimatedNode.h"
  
  @interface ABI26_0_0RCTValueAnimatedNode ()
  
  @property (nonatomic, assign) CGFloat offset;
  
  @end
  
  @implementation ABI26_0_0RCTValueAnimatedNode
  
  @synthesize value = _value;
  
  - (instancetype)initWithTag:(NSNumber *)tag
                       config:(NSDictionary<NSString *, id> *)config
  {
    if (self = [super initWithTag:tag config:config]) {
      _offset = [self.config[@"offset"] floatValue];
      _value = [self.config[@"value"] floatValue];
    }
    return self;
  }
  
  - (void)flattenOffset
  {
    _value += _offset;
    _offset = 0;
  }
  
  - (void)extractOffset
  {
    _offset += _value;
    _value = 0;
  }
  
  - (CGFloat)value
  {
    return _value + _offset;
  }
  
  - (void)setValue:(CGFloat)value
  {
    _value = value;
  
    if (_valueObserver) {
      [_valueObserver animatedNode:self didUpdateValue:_value];
    }
  }
  
  @end
  